diff options
author | bptato <nincsnevem662@gmail.com> | 2025-05-03 23:05:33 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2025-05-04 00:22:04 +0200 |
commit | f20cd8db32900d34036c38f86e3689cd86358253 (patch) | |
tree | 038acd5c50b557e02ef6f29406d1f1c670913cc6 | |
parent | 015aa0fd92ece4bdc1f645131b96369f801ed961 (diff) | |
download | chawan-f20cd8db32900d34036c38f86e3689cd86358253.tar.gz |
Makefile: remove submodule target, update docs
submodule has been unused for a while now, should be OK to remove it. I've also gotten tired of the tables on the man page being borderline unreadable, so I've hacked some borders onto them. Ugly, but works.
-rw-r--r-- | Makefile | 15 | ||||
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | doc/build.md | 2 | ||||
-rw-r--r-- | doc/cha-api.7 | 95 | ||||
-rw-r--r-- | doc/cha-config.5 | 140 | ||||
-rw-r--r-- | doc/cha-protocols.7 | 9 | ||||
-rw-r--r-- | doc/cha-terminal.7 | 76 | ||||
-rw-r--r-- | doc/cha.1 | 2 | ||||
-rw-r--r-- | doc/config.md | 2 | ||||
-rw-r--r-- | doc/protocols.md | 15 | ||||
-rw-r--r-- | doc/terminal.md (renamed from doc/terminals.md) | 11 |
11 files changed, 344 insertions, 25 deletions
diff --git a/Makefile b/Makefile index 20fd7689..0492253d 100644 --- a/Makefile +++ b/Makefile @@ -197,11 +197,14 @@ $(OBJDIR)/man/cha-%.md: doc/%.md md2manpreproc @mkdir -p "$(OBJDIR)/man" ./md2manpreproc $< > $@ -doc/cha-%.5: $(OBJDIR)/man/cha-%.md +$(OBJDIR)/man/cha-%.md.roff: $(OBJDIR)/man/cha-%.md pandoc --standalone --to man $< -o $@ -doc/cha-%.7: $(OBJDIR)/man/cha-%.md - pandoc --standalone --to man $< -o $@ +doc/cha-%.5: $(OBJDIR)/man/cha-%.md.roff + awk 'last=="T}" && $$1=="T{" {print "_"} {last=$$1} 1' $< > $@ + +doc/cha-%.7: $(OBJDIR)/man/cha-%.md.roff + awk 'last=="T}" && $$1=="T{" {print "_"} {last=$$1} 1' $< > $@ .PHONY: clean clean: @@ -215,7 +218,7 @@ distclean: clean manpages1 = cha.1 mancha.1 manpages5 = cha-config.5 cha-mailcap.5 cha-mime.types.5 cha-localcgi.5 \ cha-urimethodmap.5 -manpages7 = cha-protocols.7 cha-api.7 cha-troubleshooting.7 cha-image.7 cha-css.7 +manpages7 = cha-protocols.7 cha-api.7 cha-troubleshooting.7 cha-image.7 cha-css.7 cha-terminal.7 manpages = $(manpages1) $(manpages5) $(manpages7) @@ -284,10 +287,6 @@ uninstall: for f in cha-protocols.5 cha-api.5 cha-troubleshooting.5 cha-image.5; do rm -f "$(DESTDIR)$(MANPREFIX5)/$$f"; done for f in $(manpages1); do rm -f "$(DESTDIR)$(MANPREFIX1)/$$f"; done -.PHONY: submodule -submodule: - echo 'We no longer use submodules; you can safely drop "make submodule" from build scripts.' - test/net/run: test/net/run.nim $(NIMC) test/net/run.nim diff --git a/README.md b/README.md index f8f95f54..99eecfd9 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ Markdown files. * protocols: [doc/protocols.md](doc/protocols.md) * inline images: [doc/image.md](doc/image.md) * CSS: [doc/css.md](doc/css.md) -* terminals: [doc/terminals.md](doc/terminals.md) +* terminal compatibility: [doc/terminal.md](doc/terminal.md) * troubleshooting: [doc/troubleshooting.md](doc/troubleshooting.md) If you're interested in modifying the code: diff --git a/doc/build.md b/doc/build.md index 4ec6ae77..c7c9c7f8 100644 --- a/doc/build.md +++ b/doc/build.md @@ -67,8 +67,6 @@ a limited set of C compilers. If you want to override the C compiler: * `install`: install the `cha` binary, and if man pages were generated, those as well * `uninstall`: remove the `cha` binary and Chawan man pages -* `submodule`: no longer used -* `subtree`: pull in new commits from subtrees (for development) ## Cross-compiling diff --git a/doc/cha-api.7 b/doc/cha-api.7 index e470cf19..ddd1be4d 100644 --- a/doc/cha-api.7 +++ b/doc/cha-api.7 @@ -69,6 +69,7 @@ T}@T{ Exit the browser. T}@T{ T} +_ T{ \f[CR]suspend()\f[R] T}@T{ @@ -77,6 +78,7 @@ SIGTSTP signal. Note: this suspends the entire process group. T}@T{ T} +_ T{ \f[CR]readFile(path)\f[R] T}@T{ @@ -85,6 +87,7 @@ Returns the file\[cq]s content as a string, or null if the file does not exist. T}@T{ T} +_ T{ \f[CR]writeFile(path, content)\f[R] T}@T{ @@ -92,6 +95,7 @@ Write \f[CR]content\f[R] to the file at \f[CR]path\f[R]. Throws a TypeError if this failed for whatever reason. T}@T{ T} +_ T{ \f[CR]getenv(name, fallback = null)\f[R] T}@T{ @@ -99,6 +103,7 @@ Get an environment variable by \f[CR]name\f[R]. Returns \f[CR]fallback\f[R] if the variable does not exist. T}@T{ T} +_ T{ \f[CR]setenv(name, value)\f[R] T}@T{ @@ -107,6 +112,7 @@ Throws a type error if the operation failed (e.g.\ because the variable\[cq]s size exceeded an OS\-specified limit.) T}@T{ T} +_ T{ \f[CR]pager\f[R] T}@T{ @@ -114,6 +120,7 @@ The pager object. Implements \f[CR]Pager\f[R], as described below. T}@T{ T} +_ T{ \f[CR]line\f[R] T}@T{ @@ -161,6 +168,7 @@ If this string ends with a newline loaded directly. T}@T{ T} +_ T{ \f[CR]loadSubmit(url)\f[R] T}@T{ @@ -168,6 +176,7 @@ Act as if \f[CR]url\f[R] had been input into the address bar. Same as \f[CR]pager.load(url + \[dq]\[rs]n\[dq])\f[R]. T}@T{ T} +_ T{ \f[CR]gotoURL(url, options = {replace: null, contentType: null, save: false})\f[R] T}@T{ @@ -182,6 +191,7 @@ When \f[CR]save\f[R] is true, the user is prompted to save the resource instead of displaying it in a buffer. T}@T{ T} +_ T{ \f[CR]nextBuffer()\f[R], \f[CR]prevBuffer()\f[R], \f[CR]nextSiblingBufer()\f[R], \f[CR]prevSiblingBuffer()\f[R], @@ -194,12 +204,14 @@ traversal; \[ga]\f[CR]nextSiblingBufer()\f[R], \f[CR]parentBuffer()\f[R] returns to the parent. T}@T{ T} +_ T{ \f[CR]dupeBuffer()\f[R] T}@T{ Duplicate the current buffer by loading its source to a new buffer. T}@T{ T} +_ T{ \f[CR]discardBuffer(buffer = pager.buffer, dir = pager.navDirection)\f[R] T}@T{ @@ -210,12 +222,14 @@ Possible values of \f[CR]dir\f[R] are: \[lq]prev\[rq], \[lq]next\[rq], \[lq]first\-child\[rq], \[lq]any\[rq]. T}@T{ T} +_ T{ \f[CR]discardTree()\f[R] T}@T{ Discard all child buffers of the current buffer. T}@T{ T} +_ T{ \f[CR]reload()\f[R] T}@T{ @@ -223,12 +237,14 @@ Open a new buffer with the current buffer\[cq]s URL, replacing the current buffer. T}@T{ T} +_ T{ \f[CR]reshape()\f[R] T}@T{ Reshape the current buffer (=render the current page anew.) T}@T{ T} +_ T{ \f[CR]redraw()\f[R] T}@T{ @@ -236,6 +252,7 @@ Redraw screen contents. Useful if something messed up the display. T}@T{ T} +_ T{ \f[CR]toggleSource()\f[R] T}@T{ @@ -243,18 +260,21 @@ If viewing an HTML buffer, open a new buffer with its source. Otherwise, open the current buffer\[cq]s contents as HTML. T}@T{ T} +_ T{ \f[CR]lineInfo()\f[R] T}@T{ Display information about the current line. T}@T{ T} +_ T{ \f[CR]searchForward()\f[R], \f[CR]searchBackward()\f[R] T}@T{ Search forward/backward for a string in the current buffer. T}@T{ T} +_ T{ \f[CR]isearchForward()\f[R], \f[CR]isearchBackward()\f[R] T}@T{ @@ -262,6 +282,7 @@ Incremental\-search forward/backward for a string, highlighting the first result. T}@T{ T} +_ T{ \f[CR]gotoLine(n?)\f[R] T}@T{ @@ -270,18 +291,21 @@ If no arguments were specified, an input window for entering a line is shown. T}@T{ T} +_ T{ \f[CR]searchNext(n = 1)\f[R], \f[CR]searchPrev(n = 1)\f[R] T}@T{ Jump to the nth next/previous search result. T}@T{ T} +_ T{ \f[CR]peek()\f[R] T}@T{ Display an alert message of the current URL. T}@T{ T} +_ T{ \f[CR]peekCursor()\f[R] T}@T{ @@ -290,12 +314,14 @@ Multiple calls allow cycling through the two. (i.e.\ by default, press u once \-> title, press again \-> URL) T}@T{ T} +_ T{ \f[CR]showFullAlert()\f[R] T}@T{ Show the last alert inside the line editor. T}@T{ T} +_ T{ \f[CR]ask(prompt)\f[R] T}@T{ @@ -306,6 +332,7 @@ Can be used to implement an exit prompt like this: \f[CR]q = \[aq]pager.ask(\[dq]Do you want to exit Chawan?\[dq]).then(x => x ? pager.quit() : void(0))\[aq]\f[R] T}@T{ T} +_ T{ \f[CR]askChar(prompt)\f[R] T}@T{ @@ -313,6 +340,7 @@ Ask the user for any character. Like \f[CR]pager.ask\f[R], but the return value is a character. T}@T{ T} +_ T{ \f[CR]extern(cmd, options = {env: { ... }, suspend: true, wait: false})\f[R] T}@T{ @@ -329,6 +357,7 @@ Redirect to /dev/null in the command if this is not desired. (This will be fixed in the future.) T}@T{ T} +_ T{ \f[CR]externCapture(cmd)\f[R] T}@T{ @@ -338,6 +367,7 @@ null is returned if the command wasn\[cq]t executed successfully, or if the command returned a non\-zero exit value. T}@T{ T} +_ T{ \f[CR]externInto(cmd, ins)\f[R] T}@T{ @@ -347,6 +377,7 @@ standard input stream. the return value is \f[CR]false\f[R]. T}@T{ T} +_ T{ \f[CR]externFilterSource(cmd, buffer = null, contentType = null)\f[R] T}@T{ @@ -359,6 +390,7 @@ Returns \f[CR]undefined\f[R]. (It should return a promise; TODO.) T}@T{ T} +_ T{ \f[CR]buffer\f[R] T}@T{ @@ -400,6 +432,7 @@ Move the cursor upwards/downwards by n lines, or if n is unspecified, by 1. T}@T{ T} +_ T{ \f[CR]cursorLeft(n = 1)\f[R], \f[CR]cursorRight(n = 1)\f[R] T}@T{ @@ -411,18 +444,21 @@ represent characters. broken for double\-width chars.) T}@T{ T} +_ T{ \f[CR]cursorLineBegin()\f[R], \f[CR]cursorLineEnd()\f[R] T}@T{ Move the cursor to the first/last cell of the line. T}@T{ T} +_ T{ \f[CR]cursorLineTextStart()\f[R] T}@T{ Move the cursor to the first non\-blank character of the line. T}@T{ T} +_ T{ \f[CR]cursorNextWord()\f[R], \f[CR]cursorNextViWord()\f[R], \f[CR]cursorNextBigWord()\f[R] @@ -430,6 +466,7 @@ T}@T{ Move the cursor to the beginning of the next word. T}@T{ T} +_ T{ \f[CR]cursorPrevWord()\f[R], \f[CR]cursorPrevViWord()\f[R], \f[CR]cursorPrevBigWord()\f[R] @@ -437,6 +474,7 @@ T}@T{ Move the cursor to the end of the previous word. T}@T{ T} +_ T{ \f[CR]cursorWordEnd()\f[R], \f[CR]cursorViWordEnd()\f[R], \f[CR]cursorBigWordEnd()\f[R] @@ -445,6 +483,7 @@ Move the cursor to the end of the current word, or if already there, to the end of the next word. T}@T{ T} +_ T{ \f[CR]cursorWordBegin()\f[R], \f[CR]cursorViWordBegin()\f[R], \f[CR]cursorBigWordBegin()\f[R] @@ -453,12 +492,14 @@ Move the cursor to the beginning of the current word, or if already there, to the end of the previous word. T}@T{ T} +_ T{ \f[CR]cursorNextLink()\f[R], \f[CR]cursorPrevLink()\f[R] T}@T{ Move the cursor to the beginning of the next/previous clickable element. T}@T{ T} +_ T{ \f[CR]cursorLinkNavDown(n = 1)\f[R], \f[CR]cursorLinkNavUp(n = 1)\f[R] T}@T{ @@ -467,6 +508,7 @@ Buffer scrolls pagewise, wrap to beginning/end if content is less than one page length. T}@T{ T} +_ T{ \f[CR]cursorNextParagraph(n = 1)\f[R], \f[CR]cursorPrevParagraph(n = 1)\f[R] @@ -474,12 +516,14 @@ T}@T{ Move the cursor to the beginning/end of the nth next/previous paragraph. T}@T{ T} +_ T{ \f[CR]cursorNthLink(n = 1)\f[R] T}@T{ Move the cursor to the nth link of the document. T}@T{ T} +_ T{ \f[CR]cursorRevNthLink(n = 1)\f[R] T}@T{ @@ -487,6 +531,7 @@ Move the cursor to the nth link of the document, counting backwards from the document\[cq]s last line. T}@T{ T} +_ T{ \f[CR]pageUp(n = 1)\f[R], \f[CR]pageDown(n = 1)\f[R], \f[CR]pageLeft(n = 1)\f[R], \f[CR]pageRight(n = 1)\f[R] @@ -494,6 +539,7 @@ T}@T{ Scroll up/down/left/right by n pages. T}@T{ T} +_ T{ \f[CR]halfPageUp(n = 1)\f[R], \f[CR]halfPageDown(n = 1)\f[R], \f[CR]halfPageLeft(n = 1)\f[R], \f[CR]halfPageRight(n = 1)\f[R] @@ -501,6 +547,7 @@ T}@T{ Scroll up/down/left/right by n half pages. T}@T{ T} +_ T{ \f[CR]scrollUp(n = 1)\f[R], \f[CR]scrollDown(n = 1)\f[R], \f[CR]scrollLeft(n = 1)\f[R], \f[CR]scrollRight(n = 1)\f[R] @@ -508,18 +555,21 @@ T}@T{ Scroll up/down/left/right by n lines. T}@T{ T} +_ T{ \f[CR]click()\f[R] T}@T{ Click the HTML element currently under the cursor. T}@T{ T} +_ T{ \f[CR]cursorFirstLine()\f[R], \f[CR]cursorLastLine()\f[R] T}@T{ Move to the first/last line in the buffer. T}@T{ T} +_ T{ \f[CR]cursorTop()\f[R], \f[CR]cursorMiddle()\f[R], \f[CR]cursorBottom()\f[R] @@ -528,6 +578,7 @@ Move to the first/middle/bottom line on the screen. (Equivalent to H/M/L in vi.) T}@T{ T} +_ T{ \f[CR]lowerPage(n = this.cursory)\f[R] T}@T{ @@ -536,6 +587,7 @@ line on the screen. (\f[CR]zt\f[R] in vim.) T}@T{ T} +_ T{ \f[CR]lowerPageBegin(n = this.cursory)\f[R] T}@T{ @@ -544,12 +596,14 @@ so that the cursor is on the top line on the screen. (\f[CR]z<CR>\f[R] in vi.) T}@T{ T} +_ T{ \f[CR]centerLine(n = this.cursory)\f[R] T}@T{ Center screen around line n.\ (\f[CR]zz\f[R] in vim.) T}@T{ T} +_ T{ \f[CR]centerLineBegin(n = this.cursory)\f[R] T}@T{ @@ -558,6 +612,7 @@ non\-blank character. (\f[CR]z.\f[R] in vi.) T}@T{ T} +_ T{ \f[CR]raisePage(n = this.cursory)\f[R] T}@T{ @@ -566,6 +621,7 @@ line on the screen. (zb in vim.) T}@T{ T} +_ T{ \f[CR]lowerPageBegin(n = this.cursory)\f[R] T}@T{ @@ -574,6 +630,7 @@ so that the cursor is on the last line on the screen. (\f[CR]z\[ha]\f[R] in vi.) T}@T{ T} +_ T{ \f[CR]nextPageBegin(n = this.cursory)\f[R] T}@T{ @@ -583,6 +640,7 @@ Otherwise, go to the previous screen\[cq]s last line and raise the page. (\f[CR]z+\f[R] in vi.) T}@T{ T} +_ T{ \f[CR]cursorLeftEdge()\f[R], \f[CR]cursorMiddleColumn()\f[R], \f[CR]cursorRightEdge()\f[R] @@ -590,12 +648,14 @@ T}@T{ Move to the first/middle/last column on the screen. T}@T{ T} +_ T{ \f[CR]centerColumn()\f[R] T}@T{ Center screen around the current column. T}@T{ T} +_ T{ \f[CR]findNextMark(x = this.cursorx, y = this.cursory)\f[R], \f[CR]findPrevMark(x = this.cursorx, y = this.cursory)\f[R] @@ -604,6 +664,7 @@ Find the next/previous mark after/before \f[CR]x\f[R], \f[CR]y\f[R], if any; and return its id (or null if none were found.) T}@T{ T} +_ T{ \f[CR]setMark(id, x = this.cursorx, y = this.cursory)\f[R] T}@T{ @@ -613,6 +674,7 @@ If one already exists, it will be overridden and the function returns false. T}@T{ T} +_ T{ \f[CR]clearMark(id)\f[R] T}@T{ @@ -620,6 +682,7 @@ Clear the mark with the name \f[CR]id\f[R]. Returns true if the mark existed, false otherwise. T}@T{ T} +_ T{ \f[CR]gotoMark(id)\f[R] T}@T{ @@ -627,6 +690,7 @@ If the mark \f[CR]id\f[R] exists, jump to its position and return true. Otherwise, do nothing and return false. T}@T{ T} +_ T{ \f[CR]gotoMarkY(id)\f[R] T}@T{ @@ -635,6 +699,7 @@ its Y position and return true. Otherwise, do nothing and return false. T}@T{ T} +_ T{ \f[CR]getMarkPos(id)\f[R] T}@T{ @@ -644,6 +709,7 @@ position. If the mark does not exist, return null. T}@T{ T} +_ T{ \f[CR]cursorToggleSelection(n = 1, opts = {selectionType: \[dq]normal\[dq]})\f[R] T}@T{ @@ -654,6 +720,7 @@ selectionType may be \[lq]normal\[rq] (regular selection), (column\-based selection). T}@T{ T} +_ T{ \f[CR]getSelectionText()\f[R] T}@T{ @@ -662,30 +729,35 @@ Returns a promise, so consumers must \f[CR]await\f[R] it to get the text. T}@T{ T} +_ T{ \f[CR]markURL()\f[R] T}@T{ Convert URL\-like strings to anchors on the current page. T}@T{ T} +_ T{ \f[CR]toggleImages()\f[R] T}@T{ Toggle display of images in this buffer. T}@T{ T} +_ T{ \f[CR]saveLink()\f[R] T}@T{ Save URL pointed to by the cursor. T}@T{ T} +_ T{ \f[CR]saveSource()\f[R] T}@T{ Save the source of this buffer. T}@T{ T} +_ T{ \f[CR]setCursorX(x)\f[R], \f[CR]setCursorY(y)\f[R], \f[CR]setCursorXY(x, y)\f[R], \f[CR]setCursorXCenter(x)\f[R], @@ -697,6 +769,7 @@ Variants that end with \[lq]Center\[rq] will also center the screen around the position if it is outside the screen. T}@T{ T} +_ T{ \f[CR]url\f[R] T}@T{ @@ -704,6 +777,7 @@ Getter for the buffer\[cq]s URL. Note: this returns a \f[CR]URL\f[R] object, not a string. T}@T{ T} +_ T{ \f[CR]hoverTitle\f[R], \f[CR]hoverLink\f[R], \f[CR]hoverImage\f[R] T}@T{ @@ -712,6 +786,7 @@ currently under the cursor. Returns the empty string if no title is found. T}@T{ T} +_ T{ \f[CR]cursorx\f[R], \f[CR]cursory\f[R] T}@T{ @@ -720,18 +795,21 @@ Note that although the status line is 1\-based, these values are 0\-based. T}@T{ T} +_ T{ \f[CR]fromx\f[R], \f[CR]fromy\f[R] T}@T{ The x/y position of the first line displayed on the screen. T}@T{ T} +_ T{ \f[CR]numLines\f[R] T}@T{ The number of lines currently loaded in the buffer. T}@T{ T} +_ T{ \f[CR]width\f[R], \f[CR]height\f[R] T}@T{ @@ -739,12 +817,14 @@ The width and height of the buffer\[cq]s window (i.e.\ the visible part of the canvas). T}@T{ T} +_ T{ \f[CR]process\f[R] T}@T{ The process ID of the buffer. T}@T{ T} +_ T{ \f[CR]title\f[R] T}@T{ @@ -752,6 +832,7 @@ Text from the \f[CR]title\f[R] element, or the buffer\[cq]s URL if there is no title. T}@T{ T} +_ T{ \f[CR]parent\f[R] T}@T{ @@ -759,12 +840,14 @@ Parent buffer in the buffer tree. May be null. T}@T{ T} +_ T{ \f[CR]children\f[R] T}@T{ Array of child buffers in the buffer tree. T}@T{ T} +_ T{ \f[CR]select\f[R] T}@T{ @@ -805,72 +888,84 @@ T}@T{ Submit line. T}@T{ T} +_ T{ \f[CR]cancel()\f[R] T}@T{ Cancel operation. T}@T{ T} +_ T{ \f[CR]backspace()\f[R] T}@T{ Delete character before cursor. T}@T{ T} +_ T{ \f[CR]delete()\f[R] T}@T{ Delete character after cursor. T}@T{ T} +_ T{ \f[CR]clear()\f[R] T}@T{ Clear text before cursor. T}@T{ T} +_ T{ \f[CR]kill()\f[R] T}@T{ Clear text after cursor. T}@T{ T} +_ T{ \f[CR]clearWord()\f[R] T}@T{ Delete word before cursor. T}@T{ T} +_ T{ \f[CR]killWord()\f[R] T}@T{ Delete word after cursor. T}@T{ T} +_ T{ \f[CR]backward()\f[R], \f[CR]forward()\f[R] T}@T{ Move cursor backward/forward by one character. T}@T{ T} +_ T{ \f[CR]nextWord()\f[R], \f[CR]prevWord()\f[R] T}@T{ Move cursor to the next/previous word by one character. T}@T{ T} +_ T{ \f[CR]begin()\f[R], \f[CR]end()\f[R] T}@T{ Move cursor to the beginning/end of the line. T}@T{ T} +_ T{ \f[CR]escape()\f[R] T}@T{ Ignore keybindings for next character. T}@T{ T} +_ T{ \f[CR]nextHist()\f[R], \f[CR]prevHist()\f[R] T}@T{ diff --git a/doc/cha-config.5 b/doc/cha-config.5 index bd883e34..5b51eb8a 100644 --- a/doc/cha-config.5 +++ b/doc/cha-config.5 @@ -64,6 +64,7 @@ Page opened when Chawan is called with the \-V option and no other pages are passed as arguments. T}@T{ T} +_ T{ startup\-script T}@T{ @@ -77,6 +78,7 @@ Pages will not be loaded until this function exits. loading.) T}@T{ T} +_ T{ headless T}@T{ @@ -97,6 +99,7 @@ Piping \f[CR]cha\f[R] to an external program or passing the \[lq]dump\[rq]. T}@T{ T} +_ T{ console\-buffer T}@T{ @@ -157,6 +160,7 @@ Note that disabling this does not affect user styles set in \f[CR][css]\f[R]. T}@T{ T} +_ T{ scripting T}@T{ @@ -173,6 +177,7 @@ For security reasons, users are encouraged to selectively enable JavaScript with \f[CR][[siteconf]]\f[R] instead of using this setting. T}@T{ T} +_ T{ images T}@T{ @@ -183,6 +188,7 @@ T}@T{ Enable/disable inline image display. T}@T{ T} +_ T{ cookie T}@T{ @@ -200,6 +206,7 @@ You may use the \f[CR][[siteconf]]\f[R] \[lq]share\-cookie\-jar\[rq] setting to adjust this behavior for specific sites. T}@T{ T} +_ T{ referer\-from T}@T{ @@ -213,6 +220,7 @@ For privacy reasons, users are encouraged to leave this option disabled, only enabling it for specific sites in \f[CR][[siteconf]]\f[R]. T}@T{ T} +_ T{ autofocus T}@T{ @@ -225,6 +233,7 @@ focused on automatically after the buffer is loaded. If scripting is enabled, this also allows scripts to focus on elements. T}@T{ T} +_ T{ meta\-refresh T}@T{ @@ -238,6 +247,7 @@ respected. accepts all of them, \[lq]ask\[rq] brings up a pop\-up menu. T}@T{ T} +_ T{ history T}@T{ @@ -248,6 +258,7 @@ T}@T{ Whether or not browsing history should be saved to the disk. T}@T{ T} +_ T{ mark\-links T}@T{ @@ -259,6 +270,7 @@ Add numeric markers before links. In headless/dump mode, this also prints a list of URLs after the page. T}@T{ T} +_ T{ user\-style T}@T{ @@ -303,6 +315,7 @@ T}@T{ Whether on\-page searches should wrap around the document. T}@T{ T} +_ T{ ignore\-case T}@T{ @@ -355,6 +368,7 @@ charset, so long as the specified charset can decode the document correctly. T}@T{ T} +_ T{ display\-charset T}@T{ @@ -398,6 +412,7 @@ T}@T{ Directory used to save temporary files. T}@T{ T} +_ T{ sockdir T}@T{ @@ -410,6 +425,7 @@ communication. This is currently unused. T}@T{ T} +_ T{ editor T}@T{ @@ -421,6 +437,7 @@ External editor command. %s is substituted for the file name, %d for the line number. T}@T{ T} +_ T{ mailcap T}@T{ @@ -432,17 +449,19 @@ Search path for mailcap files. (See \f[B]cha\-mailcap\f[R](5) for details.) T}@T{ T} +_ T{ mime\-types T}@T{ array of paths T}@T{ -{see mime.types docs +{see mime.types docs} T}@T{ Search path for mime.types files. (See \f[B]cha\-mime.types\f[R](5) for details.) T}@T{ T} +_ T{ auto\-mailcap T}@T{ @@ -454,6 +473,7 @@ Mailcap file for entries that are automatically executed. The \[lq]Open as\[rq] prompt also saves entries in this file. T}@T{ T} +_ T{ cgi\-dir T}@T{ @@ -465,6 +485,7 @@ Search path for local CGI scripts. (See \f[B]cha\-localcgi\f[R](5) for details.) T}@T{ T} +_ T{ urimethodmap T}@T{ @@ -476,6 +497,7 @@ Search path for urimethodmap files. (See \f[B]cha\-urimethodmap\f[R](5) for details.) T}@T{ T} +_ T{ w3m\-cgi\-compat T}@T{ @@ -489,6 +511,7 @@ In short, it redirects \f[CR]file:///cgi\-bin/*\f[R] and For further details, see \f[B]cha\-localcgi\f[R](5). T}@T{ T} +_ T{ download\-dir T}@T{ @@ -499,6 +522,7 @@ T}@T{ Path to pre\-fill for \[lq]Save to:\[rq] prompts. T}@T{ T} +_ T{ copy\-cmd T}@T{ @@ -509,6 +533,7 @@ T}@T{ Command to use for \[lq]copy to clipboard\[rq] operations. T}@T{ T} +_ T{ paste\-cmd T}@T{ @@ -519,6 +544,7 @@ T}@T{ Command to use for \[lq]read from clipboard\[rq] operations. T}@T{ T} +_ T{ bookmark T}@T{ @@ -531,6 +557,7 @@ Path to the bookmark.md file. be correctly deduced.) T}@T{ T} +_ T{ history\-file T}@T{ @@ -541,6 +568,7 @@ T}@T{ Path to the history file. T}@T{ T} +_ T{ history\-size T}@T{ @@ -551,6 +579,7 @@ T}@T{ Maximum length of the history file. T}@T{ T} +_ T{ cookie\-file T}@T{ @@ -595,6 +624,7 @@ T}@T{ Whether vi\-style numeric prefixes to commands should be accepted. Only applies for keybindings defined in \f[CR][page]\f[R]. T} +_ T{ use\-mouse T}@T{ @@ -647,6 +677,7 @@ T}@T{ Maximum number of redirections to follow. T}@T{ T} +_ T{ prepend\-scheme T}@T{ @@ -660,6 +691,7 @@ first; only if this fails, Chawan will retry the request with \f[CR]prepend\-scheme\f[R] set as the scheme. T}@T{ T} +_ T{ prepend\-https T}@T{ @@ -672,6 +704,7 @@ When set to false, Chawan will act as if prepend\-scheme were set to \[lq]\[lq]. T}@T{ T} +_ T{ proxy T}@T{ @@ -684,6 +717,7 @@ All proxies supported by cURL may be used. Can be overridden by siteconf. T}@T{ T} +_ T{ default\-headers T}@T{ @@ -729,6 +763,7 @@ on white, \[lq]ansi\[rq] for ansi colors, \[lq]eight\-bit\[rq] for 256\-color mode, and \[lq]true\-color\[rq] for true colors. T}@T{ T} +_ T{ format\-mode T}@T{ @@ -743,6 +778,7 @@ Accepts the string \[lq]auto\[rq] or an array of specific attributes. An empty array (\f[CR][]\f[R]) disables formatting completely. T}@T{ T} +_ T{ no\-format\-mode T}@T{ @@ -755,6 +791,7 @@ T}@T{ Disable specific formatting modes. T}@T{ T} +_ T{ image\-mode T}@T{ @@ -772,6 +809,7 @@ This is the default setting, but you must also enable \f[CR]buffer.images\f[R] for images to work. T}@T{ T} +_ T{ sixel\-colors T}@T{ @@ -784,6 +822,7 @@ Setting a number overrides the number of sixel color registers reported by the terminal. T}@T{ T} +_ T{ alt\-screen T}@T{ @@ -794,6 +833,7 @@ T}@T{ Enable/disable the alternative screen. T}@T{ T} +_ T{ highlight\-color T}@T{ @@ -805,6 +845,7 @@ Set the highlight color. Both hex values and CSS color names are accepted. T}@T{ T} +_ T{ highlight\-marks T}@T{ @@ -815,6 +856,7 @@ T}@T{ Enable/disable highlighting of marks. T}@T{ T} +_ T{ double\-width\-ambiguous T}@T{ @@ -827,6 +869,7 @@ category as double\-width characters. Useful when e.g.\ ○ occupies two cells. T}@T{ T} +_ T{ minimum\-contrast T}@T{ @@ -840,6 +883,7 @@ background and the foreground. background, etc). T}@T{ T} +_ T{ force\-clear T}@T{ @@ -850,6 +894,7 @@ T}@T{ Force the screen to be completely cleared every time it is redrawn. T}@T{ T} +_ T{ set\-title T}@T{ @@ -861,6 +906,7 @@ Set the terminal emulator\[cq]s window title to that of the current page. T}@T{ T} +_ T{ default\-background\-color T}@T{ @@ -872,6 +918,7 @@ Overrides the assumed background color of the terminal. \[lq]auto\[rq] leaves background color detection to Chawan. T}@T{ T} +_ T{ default\-foreground\-color T}@T{ @@ -883,6 +930,7 @@ Sets the assumed foreground color of the terminal. \[lq]auto\[rq] leaves foreground color detection to Chawan. T}@T{ T} +_ T{ query\-da1 T}@T{ @@ -896,6 +944,7 @@ Do not alter this value unless Chawan told you so; the output will look awful. T}@T{ T} +_ T{ columns, lines, pixels\-per\-column, pixels\-per\-line T}@T{ @@ -909,6 +958,7 @@ automatically. (For example, these values are used in dump mode.) T}@T{ T} +_ T{ force\-columns, force\-lines, force\-pixels\-per\-column, force\-pixels\-per\-line @@ -1003,6 +1053,7 @@ Note: regexes are handled according to the match mode regex handling rules. T}@T{ T} +_ T{ substitute\-url T}@T{ @@ -1097,6 +1148,7 @@ Note: regexes are handled according to the match mode regex handling rules. T}@T{ T} +_ T{ host T}@T{ @@ -1111,6 +1163,7 @@ Note: regexes are handled according to the match mode regex handling rules. T}@T{ T} +_ T{ rewrite\-url T}@T{ @@ -1123,6 +1176,7 @@ If a new URL is returned, or the URL object is modified in any way, Chawan will transparently redirect the user to this new URL. T}@T{ T} +_ T{ cookie T}@T{ @@ -1134,6 +1188,7 @@ Whether loading (with \[lq]save\[rq], also saving) cookies should be allowed for this URL. T}@T{ T} +_ T{ share\-cookie\-jar T}@T{ @@ -1145,6 +1200,7 @@ Cookie jar to use for this domain. Useful for e.g.\ sharing cookies with subdomains. T}@T{ T} +_ T{ referer\-from T}@T{ @@ -1159,6 +1215,7 @@ and referer\-from is true, b.com is sent \[lq]a.com\[rq] as the Referer header. T}@T{ T} +_ T{ scripting T}@T{ @@ -1170,6 +1227,7 @@ Enable/disable JavaScript execution on this site. See \f[CR]buffer.scripting\f[R] for details. T}@T{ T} +_ T{ styling T}@T{ @@ -1180,6 +1238,7 @@ T}@T{ Enable/disable author styles (CSS) on this site. T}@T{ T} +_ T{ images T}@T{ @@ -1190,6 +1249,7 @@ T}@T{ Enable/disable image display on this site. T}@T{ T} +_ T{ document\-charset T}@T{ @@ -1200,6 +1260,7 @@ T}@T{ Specify the default encoding for this site. T}@T{ T} +_ T{ stylesheet T}@T{ @@ -1214,6 +1275,7 @@ stylesheet. Please use \f[CR]user\-style\f[R] instead. T}@T{ T} +_ T{ proxy T}@T{ @@ -1224,6 +1286,7 @@ T}@T{ Specify a proxy for network requests fetching contents of this buffer. T}@T{ T} +_ T{ default\-headers T}@T{ @@ -1235,6 +1298,7 @@ Specify a list of default headers for HTTP(S) network requests to this buffer. T}@T{ T} +_ T{ insecure\-ssl\-no\-verify T}@T{ @@ -1249,6 +1313,7 @@ Please do not use this unless you are absolutely sure you know what you are doing. T}@T{ T} +_ T{ autofocus T}@T{ @@ -1261,6 +1326,7 @@ focused on automatically after the buffer is loaded. If scripting is enabled, this also allows scripts to focus on elements. T}@T{ T} +_ T{ meta\-refresh T}@T{ @@ -1274,6 +1340,7 @@ respected. accepts all of them, \[lq]ask\[rq] brings up a pop\-up menu. T}@T{ T} +_ T{ history T}@T{ @@ -1285,6 +1352,7 @@ Whether or not browsing history should be saved to the disk for this URL. T}@T{ T} +_ T{ mark\-links T}@T{ @@ -1295,6 +1363,7 @@ T}@T{ Add numeric markers before links. T}@T{ T} +_ T{ user\-style T}@T{ @@ -1378,6 +1447,7 @@ T}@T{ Exit the browser. T}@T{ T} +_ T{ C\-z T}@T{ @@ -1389,6 +1459,7 @@ So if you are downloading something, that will be delayed until you restart the process. T}@T{ T} +_ T{ C\-l T}@T{ @@ -1397,6 +1468,7 @@ T}@T{ Open the current address in the URL bar. T}@T{ T} +_ T{ C\-k T}@T{ @@ -1406,6 +1478,7 @@ Open the URL bar with an arbitrary search engine. At the moment, this is Google Search, but this may change in the future. T}@T{ T} +_ T{ M\-u T}@T{ @@ -1414,6 +1487,7 @@ T}@T{ Duplicate the current buffer by loading its source to a new buffer. T}@T{ T} +_ T{ U T}@T{ @@ -1423,6 +1497,7 @@ Open a new buffer with the current buffer\[cq]s URL, replacing the current buffer. T}@T{ T} +_ T{ C\-g T}@T{ @@ -1431,6 +1506,7 @@ T}@T{ Display information about the current line on the status line. T}@T{ T} +_ T{ \[rs] T}@T{ @@ -1440,6 +1516,7 @@ If viewing an HTML buffer, open a new buffer with its source. Otherwise, open the current buffer\[cq]s contents as HTML. T}@T{ T} +_ T{ D T}@T{ @@ -1449,6 +1526,7 @@ Discard the current buffer, and move back to the previous/next buffer depending on what the previously viewed buffer was. T}@T{ T} +_ T{ d,, d. T}@T{ @@ -1459,6 +1537,7 @@ Discard the current buffer, and move back to the previous/next buffer, or open the link under the cursor. T}@T{ T} +_ T{ M\-d T}@T{ @@ -1467,6 +1546,7 @@ T}@T{ Discard all child buffers of the current buffer. T}@T{ T} +_ T{ \&., ,, M\-,, M\-., M\-/ T}@T{ @@ -1484,6 +1564,7 @@ current buffer was opened from, even if e.g.\ the user returns and opens another page \[lq]in between\[rq]. T}@T{ T} +_ T{ M\-c T}@T{ @@ -1494,6 +1575,7 @@ Note that this interacts with the pager, not the website being displayed. T}@T{ T} +_ T{ None T}@T{ @@ -1502,6 +1584,7 @@ T}@T{ Search for a string in the current buffer, forwards or backwards. T}@T{ T} +_ T{ /, ? T}@T{ @@ -1511,6 +1594,7 @@ Incremental\-search for a string, highlighting the first result, forwards or backwards. T}@T{ T} +_ T{ n, N T}@T{ @@ -1519,6 +1603,7 @@ T}@T{ Jump to the nth (or if unspecified, first) next/previous search result. T}@T{ T} +_ T{ c T}@T{ @@ -1527,6 +1612,7 @@ T}@T{ Display a message of the current buffer\[cq]s URL on the status line. T}@T{ T} +_ T{ u T}@T{ @@ -1538,6 +1624,7 @@ Multiple calls allow cycling through the two. (i.e.\ by default, press u once \-> title, press again \-> URL) T}@T{ T} +_ T{ su T}@T{ @@ -1547,6 +1634,7 @@ Show the last alert inside the line editor. You can also view previous ones using C\-p or C\-n. T}@T{ T} +_ T{ M\-y T}@T{ @@ -1555,6 +1643,7 @@ T}@T{ Copy the current buffer\[cq]s URL to the system clipboard. T}@T{ T} +_ T{ yu T}@T{ @@ -1563,6 +1652,7 @@ T}@T{ Copy the link under the cursor to the system clipboard. T}@T{ T} +_ T{ yI T}@T{ @@ -1571,6 +1661,7 @@ T}@T{ Copy the URL of the image under the cursor to the system clipboard. T}@T{ T} +_ T{ M\-p T}@T{ @@ -1579,6 +1670,7 @@ T}@T{ Go to the URL currently on the clipboard. T}@T{ T} +_ T{ M\-b T}@T{ @@ -1587,6 +1679,7 @@ T}@T{ Open the bookmark file. T}@T{ T} +_ T{ M\-a T}@T{ @@ -1624,6 +1717,7 @@ Move the cursor upwards/downwards by n lines, or if n is unspecified, by 1. T}@T{ T} +_ T{ h, l T}@T{ @@ -1633,6 +1727,7 @@ Move the cursor to the left/right by n cells, or if n is unspecified, by 1. T}@T{ T} +_ T{ 0 T}@T{ @@ -1641,6 +1736,7 @@ T}@T{ Move the cursor to the first cell of the line. T}@T{ T} +_ T{ \[ha] T}@T{ @@ -1649,6 +1745,7 @@ T}@T{ Move the cursor to the first non\-blank character of the line. T}@T{ T} +_ T{ $ T}@T{ @@ -1657,6 +1754,7 @@ T}@T{ Move the cursor to the last cell of the line. T}@T{ T} +_ T{ w, W T}@T{ @@ -1667,6 +1765,7 @@ T}@T{ Move the cursor to the beginning of the next word. T}@T{ T} +_ T{ None T}@T{ @@ -1677,6 +1776,7 @@ T}@T{ Move the cursor to the end of the previous word. T}@T{ T} +_ T{ e, E T}@T{ @@ -1688,6 +1788,7 @@ Move the cursor to the end of the current word, or if already there, to the end of the next word. T}@T{ T} +_ T{ b, B T}@T{ @@ -1699,6 +1800,7 @@ Move the cursor to the beginning of the current word, or if already there, to the end of the previous word. T}@T{ T} +_ T{ [, ] T}@T{ @@ -1709,6 +1811,7 @@ Move the cursor to the end/beginning of the previous/next clickable element (e.g.\ link, input field, etc). T}@T{ T} +_ T{ {, } T}@T{ @@ -1718,6 +1821,7 @@ T}@T{ Move the cursor to the end/beginning of the nth previous/next paragraph. T}@T{ T} +_ T{ None T}@T{ @@ -1727,6 +1831,7 @@ Move the cursor to the nth link of the document, counting backwards from the document\[cq]s last line. T}@T{ T} +_ T{ None T}@T{ @@ -1735,6 +1840,7 @@ T}@T{ Move the cursor to the nth link of the document. T}@T{ T} +_ T{ C\-b, C\-f, zH, zL T}@T{ @@ -1745,6 +1851,7 @@ Scroll up/down/left/right by n pages, or if n is unspecified, by one page. T}@T{ T} +_ T{ C\-u, C\-d T}@T{ @@ -1755,6 +1862,7 @@ Scroll up/down/left/right by n half pages, or if n is unspecified, by one page. T}@T{ T} +_ T{ K/C\-y, J/C\-e, zh, zl T}@T{ @@ -1765,6 +1873,7 @@ Scroll up/down/left/right by n lines, or if n is unspecified, by one line. T}@T{ T} +_ T{ Enter/Return T}@T{ @@ -1773,6 +1882,7 @@ T}@T{ Click the HTML element currently under the cursor. T}@T{ T} +_ T{ I T}@T{ @@ -1781,6 +1891,7 @@ T}@T{ View the image currently under the cursor in an external viewer. T}@T{ T} +_ T{ R T}@T{ @@ -1790,6 +1901,7 @@ Reshape the current buffer (=render the current page anew.) Useful if the layout is not updating even though it should have. T}@T{ T} +_ T{ r T}@T{ @@ -1799,6 +1911,7 @@ Redraw screen contents. Useful if something messed up the display. T}@T{ T} +_ T{ None (see gotoLineOrStart/End instead) T}@T{ @@ -1808,6 +1921,7 @@ T}@T{ Move to the beginning/end in the buffer. T}@T{ T} +_ T{ H T}@T{ @@ -1817,6 +1931,7 @@ Move to the first line on the screen. (Equivalent to H in vi.) T}@T{ T} +_ T{ M T}@T{ @@ -1826,6 +1941,7 @@ Move to the line in the middle of the screen. (Equivalent to M in vi.) T}@T{ T} +_ T{ L T}@T{ @@ -1835,6 +1951,7 @@ Move to the last line on the screen. (Equivalent to L in vi.) T}@T{ T} +_ T{ zt, z Return, zz, z., zb, z\- T}@T{ @@ -1855,6 +1972,7 @@ The \-\f[CR]Begin\f[R] variants also move the cursor to the line\[cq]s first non\-blank character, as the variants originating from vi do. T}@T{ T} +_ T{ z+ T}@T{ @@ -1865,6 +1983,7 @@ page. Otherwise, go to the previous screen\[cq]s last line and raise the page. T}@T{ T} +_ T{ z\[ha] T}@T{ @@ -1875,6 +1994,7 @@ page. Otherwise, go to the previous screen\[cq]s last line and raise the page. T}@T{ T} +_ T{ g0, gc, g$ T}@T{ @@ -1885,6 +2005,7 @@ T}@T{ Move to the first/middle/last column on the screen. T}@T{ T} +_ T{ None T}@T{ @@ -1894,6 +2015,7 @@ Center screen around the current column. (w3m \f[CR]Z\f[R].) T}@T{ T} +_ T{ gg, G T}@T{ @@ -1904,6 +2026,7 @@ If n is specified, jump to line n.\ Otherwise, jump to the start/end of the page. T}@T{ T} +_ T{ T}@T{ , None @@ -1914,6 +2037,7 @@ T}@T{ If n is specified, jump to column n of the current line. Otherwise, jump to the first/last column. T} +_ T{ m T}@T{ @@ -1923,6 +2047,7 @@ Wait for a character \f[CR]x\f[R] and then set a mark with the ID \f[CR]x\f[R]. T}@T{ T} +_ T{ \[ga], \[cq] T}@T{ @@ -1934,6 +2059,7 @@ Wait for a character \f[CR]x\f[R] and then jump to the mark with the ID the Y position. T}@T{ T} +_ T{ : T}@T{ @@ -1942,6 +2068,7 @@ T}@T{ Convert URL\-like strings to anchors on the current page. T}@T{ T} +_ T{ s Return T}@T{ @@ -1950,6 +2077,7 @@ T}@T{ Save resource from the URL pointed to by the cursor to the disk. T}@T{ T} +_ T{ sS T}@T{ @@ -1958,6 +2086,7 @@ T}@T{ Save the source of the current buffer to the disk. T}@T{ T} +_ T{ sI T}@T{ @@ -1989,6 +2118,7 @@ T}@T{ Submit the line. T}@T{ T} +_ T{ C\-c T}@T{ @@ -1997,6 +2127,7 @@ T}@T{ Cancel the current operation. T}@T{ T} +_ T{ C\-h, C\-d T}@T{ @@ -2005,6 +2136,7 @@ T}@T{ Delete character before (backspace)/after (delete) the cursor. T}@T{ T} +_ T{ C\-u, C\-k T}@T{ @@ -2013,6 +2145,7 @@ T}@T{ Delete text before (clear)/after (kill) the cursor. T}@T{ T} +_ T{ C\-w, M\-d T}@T{ @@ -2021,6 +2154,7 @@ T}@T{ Delete word before (clear)/after (kill) the cursor. T}@T{ T} +_ T{ C\-b, C\-f T}@T{ @@ -2029,6 +2163,7 @@ T}@T{ Move cursor backward/forward by one character. T}@T{ T} +_ T{ M\-b, M\-f T}@T{ @@ -2037,6 +2172,7 @@ T}@T{ Move cursor to the previous/next word by one character T}@T{ T} +_ T{ C\-a, C\-e T}@T{ @@ -2045,6 +2181,7 @@ T}@T{ Move cursor to the beginning/end of the line. T}@T{ T} +_ T{ C\-v T}@T{ @@ -2053,6 +2190,7 @@ T}@T{ Ignore keybindings for next character. T}@T{ T} +_ T{ C\-p, C\-n T}@T{ diff --git a/doc/cha-protocols.7 b/doc/cha-protocols.7 index 048c1d4a..6efa1d29 100644 --- a/doc/cha-protocols.7 +++ b/doc/cha-protocols.7 @@ -3,11 +3,11 @@ .TH "cha\-protocols" "7" "" "" "Protocol support in Chawan" .SH Protocols Chawan supports downloading resources from various protocols: HTTP, FTP, -Gopher, Gemini, and Finger. +SFTP, Gopher, Gemini, Spartan, and Finger. Details on these protocols, and information on how users can add support to their preferred protocols is outlined in this document. .PP -In general, you can find network adapters in the +You can find network adapters in the source distribution\[cq]s \f[CR]adapter/protocol\f[R] directory. For protocol\-specific file formats (like gemtext or gopher directories) you will also find an appropriate HTML converter in @@ -19,10 +19,13 @@ use passed userinfo data, and returns all headers and response body it receives without exception. .PP Deflate decompression with gzip and zlib headers is supported. -(Content\-Type: gzip, deflate.) +(Accept\-Encoding: gzip, deflate.) This is based on a modified version of the public domain tinfl.h decompressor by Rich Geldreich. .PP +Brotli decompression (Accept\-Encoding: br) is supported using the +decoder provided by the reference implementation. +.PP The \f[CR]bonus\f[R] directory contains two alternative HTTP clients: .IP \[bu] 2 curlhttp; this is the old HTTP client based on libcurl. diff --git a/doc/cha-terminal.7 b/doc/cha-terminal.7 new file mode 100644 index 00000000..16c7da16 --- /dev/null +++ b/doc/cha-terminal.7 @@ -0,0 +1,76 @@ +.\" Automatically generated by Pandoc 3.6.4 +.\" +.TH "cha\-terminal" "7" "" "" "Chawan terminal compatibility" +.SH Chawan terminal compatibility +Chawan does not use termcap, terminfo, or ncurses; it relies solely on +built\-in terminal handling routines, mostly inspired by notcurses. +.SS XTerm compatibility +In general, Chawan assumes an XTerm\-compatible environment where XTerm +means the current XTerm version as developed and maintained by Thomas E. +Dickey. +This means that Chawan is compatible with any given terminal if: +.IP \[bu] 2 +the terminal is actually compatible with XTerm, OR +.IP \[bu] 2 +the terminal isn\[cq]t compatible with XTerm, but reports its +capabilities via terminal queries correctly, OR +.IP \[bu] 2 +the terminal isn\[cq]t compatible with XTerm, but its \f[CR]TERM\f[R] +value is hardcoded in Chawan. +.PP +Terminals pretending to be XTerm (\f[CR]TERM=xterm\f[R]) which are not +actually XTerm might malfunction. +.PP +(In practice, I have tested dozens of terminal emulators and haven\[cq]t +encountered any major issues; in all likelihood, yours will work too. +Still, if it doesn\[cq]t, please \c +.UR https://tickets.sr.ht/~bptato/chawan. +open a ticket +.UE \c +.SS Queries +Queries are preferred to hardcoded terminal descriptions because they +are forward\-compatible. +On startup, Chawan queries: +.IP \[bu] 2 +Whether the terminal has true color, with XTGETTCAP rgb. +.IP \[bu] 2 +The default background, foreground, and 16 ANSI(\-ish) colors with +\f[CR]OSC 1 0 ; ? ST\f[R], \f[CR]OSC 1 1 ; ? ST\f[R], and +\f[CR]OSC 4 ; {0..15} ; ? ST\f[R]. +.IP \[bu] 2 +Whether the terminal can use the Kitty image protocol, by sending an +incorrectly encoded image and listening for an error. +.IP \[bu] 2 +The number of Sixel color registers (\f[CR]CSI ? 1 ; 1 ; 0 $\f[R]). +.IP \[bu] 2 +The maximum Sixel image dimensions (\f[CR]CSI ? 2 ; 1 ; 0 $\f[R]). +.IP \[bu] 2 +Text area, cell, and window size using \f[CR]CSI 1 4 t\f[R], +\f[CR]CSI 1 6 t\f[R], \f[CR]CSI 1 8 t\f[R]. +(Cell size, \f[CR]1 6\f[R], beats the other two as it is more reliable.) +.IP \[bu] 2 +Primary device attributes. +.PP +Primary device attributes (henceforth DA1) are queried last, and most +terminals respond to this, so Chawan should never hang on startup. +If it \f[I]isn\[cq]t\f[R] implemented (as on the FreeBSD console), the +user can hit any key to break out of the state machine and set +\f[CR]display.query\-da1 = false\f[R] as instructed by the browser. +On known terminals with this issue which set \f[CR]TERM\f[R] correctly, +DA1 is omitted. +.PP +Some terminals bleed the APC sequence used to recognize kitty image +support. +If the terminal also supports the alternate screen (ti/smcup), the +sequence may end up inside the shell prompt. +On known terminals with this issue which set \f[CR]TERM\f[R] correctly, +the kitty query is omitted. +.SS Ancient terminals +Pre\-ECMA\-48 terminals are generally not expected to work. +.PP +There is some degree of ADM\-3A support, tested in Kragen Javier +Sitaker\[cq]s \f[CR]admu\f[R] emulator. +However, a real ADM\-3A would likely be confused by non\-ASCII +characters. +.PP +Patches for other terminals (hardware or software alike) are welcome. diff --git a/doc/cha.1 b/doc/cha.1 index 472ef2ae..707e9659 100644 --- a/doc/cha.1 +++ b/doc/cha.1 @@ -142,4 +142,4 @@ Configuration options are described in \fBcha-config\fR(5). .br \fBcha-localcgi\fR(5), \fBcha-urimethodmap\fR(5), \fBcha-protocols\fR(7), .br -\fBcha-image\fR(7), \fBcha-css\fR(7), \fBcha-troubleshooting\fR(7) +\fBcha-image\fR(7), \fBcha-css\fR(7), \fBcha-troubleshooting\fR(7), \fBcha-terminal\fR(7) diff --git a/doc/config.md b/doc/config.md index 61a38ac1..5012910c 100644 --- a/doc/config.md +++ b/doc/config.md @@ -369,7 +369,7 @@ the line number.</td> <tr> <td>mime-types</td> <td>array of paths</td> -<td>{see mime.types docs</td> +<td>{see mime.types docs}</td> <td>Search path for <!-- MANOFF -->[mime.types](mime.types.md) files.<!-- MANON --> <!-- MANON mime.types files. (See **cha-mime.types**(5) for details.) MANOFF --> </td> diff --git a/doc/protocols.md b/doc/protocols.md index c195b0a9..3cfdaf98 100644 --- a/doc/protocols.md +++ b/doc/protocols.md @@ -5,13 +5,14 @@ MANOFF --> # Protocols Chawan supports downloading resources from various protocols: HTTP, FTP, -Gopher, Gemini, and Finger. Details on these protocols, and information -on how users can add support to their preferred protocols is outlined in -this document. - -In general, you can find network adapters in the `adapter/protocol` directory. -For protocol-specific file formats (like gemtext or gopher directories) you will -also find an appropriate HTML converter in `adapter/format`. +SFTP, Gopher, Gemini, Spartan, and Finger. Details on these protocols, +and information on how users can add support to their preferred +protocols is outlined in this document. + +You can find network adapters in the source distribution's +`adapter/protocol` directory. For protocol-specific file formats (like +gemtext or gopher directories) you will also find an appropriate HTML +converter in `adapter/format`. <!-- MANOFF --> **Table of contents** diff --git a/doc/terminals.md b/doc/terminal.md index faaa8534..1ad28611 100644 --- a/doc/terminals.md +++ b/doc/terminal.md @@ -1,4 +1,8 @@ -# Terminals and Chawan +<!-- MANON +% cha-terminal(7) | Chawan terminal compatibility +MANOFF --> + +# Chawan terminal compatibility Chawan does not use termcap, terminfo, or ncurses; it relies solely on built-in terminal handling routines, mostly inspired by notcurses. @@ -19,6 +23,11 @@ if: Terminals pretending to be XTerm (`TERM=xterm`) which are not actually XTerm might malfunction. +(In practice, I have tested dozens of terminal emulators and haven't +encountered any major issues; in all likelihood, yours will work too. +Still, if it doesn't, please +[open a ticket](https://tickets.sr.ht/~bptato/chawan.) + ## Queries Queries are preferred to hardcoded terminal descriptions because they |