From d5cfca5b768c800721db7174a9af94cc75bea71f Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 14 Dec 2025 23:25:46 -0500 Subject: [PATCH] feat(docs): numbered listitems --- runtime/doc/api-ui-events.txt | 4 - runtime/doc/api.txt | 17 ++-- runtime/doc/change.txt | 174 ++++++++++++++++++++-------------- runtime/doc/channel.txt | 18 ++-- runtime/doc/dev.txt | 3 +- runtime/doc/dev_vimpatch.txt | 10 +- runtime/doc/diagnostic.txt | 11 +-- runtime/doc/insert.txt | 53 +++++------ runtime/doc/lsp.txt | 7 +- runtime/doc/lua-guide.txt | 2 - runtime/doc/lua-plugin.txt | 2 - runtime/doc/luaref.txt | 8 +- runtime/doc/mbyte.txt | 2 +- runtime/doc/nvim.txt | 6 +- runtime/doc/pi_msgpack.txt | 24 +---- runtime/doc/windows.txt | 46 ++++----- src/gen/gen_help_html.lua | 45 +++++++-- 17 files changed, 222 insertions(+), 210 deletions(-) diff --git a/runtime/doc/api-ui-events.txt b/runtime/doc/api-ui-events.txt index 2723231d91..34e9135f3f 100644 --- a/runtime/doc/api-ui-events.txt +++ b/runtime/doc/api-ui-events.txt @@ -135,18 +135,14 @@ procedure: 1. Invoke |nvim_get_api_info()|, if needed to setup the client library and/or to get the list of supported UI extensions. - 2. Do any configuration that should be happen before user config is loaded. Buffers and windows are not available at this point, but this could be used to set |g:| variables visible to init.vim - 3. If the UI wants to do additional setup after user config is loaded, register a VimEnter autocmd: >lua nvim_command("autocmd VimEnter * call rpcrequest(1, 'vimenter')") - 4. Now invoke |nvim_ui_attach()|. The UI must handle user input by now: sourcing init.vim and loading buffers might lead to blocking prompts. - 5. If step 3 was used, Nvim will send a blocking "vimenter" request to the UI. Inside this request handler, the UI can safely do any initialization before entering normal mode, for example reading variables set by init.vim. diff --git a/runtime/doc/api.txt b/runtime/doc/api.txt index ef6e6a95fc..0180cfa19f 100644 --- a/runtime/doc/api.txt +++ b/runtime/doc/api.txt @@ -204,18 +204,17 @@ About the `functions` map: External programs (clients) can use the metadata to discover the API, using any of these approaches: - 1. Connect to a running Nvim instance and call |nvim_get_api_info()| via - msgpack-RPC. This is best for clients written in dynamic languages which - can define functions at runtime. - - 2. Start Nvim with |--api-info|. Useful for statically-compiled clients. - Example (requires Python "pyyaml" and "msgpack-python" modules): > +1. Connect to a running Nvim instance and call |nvim_get_api_info()| via + msgpack-RPC. This is best for clients written in dynamic languages which + can define functions at runtime. +2. Use the |--api-info| startup arg. Useful for statically-compiled clients. + Example (requires Python "pyyaml" and "msgpack-python" modules): > nvim --api-info | python -c 'import msgpack, sys, yaml; yaml.dump(msgpack.unpackb(sys.stdin.buffer.read()), sys.stdout)' -< - 3. Use the |api_info()| Vimscript function. >vim +3. Use the |api_info()| function. >vim :lua vim.print(vim.fn.api_info()) -< Example using |filter()| to exclude non-deprecated API functions: >vim + " Example using filter() to exclude non-deprecated API functions: :new|put =map(filter(api_info().functions, '!has_key(v:val,''deprecated_since'')'), 'v:val.name') +< ============================================================================== API contract *api-contract* diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index 23e477433f..ab0defe460 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -369,18 +369,18 @@ CTRL-A Add [count] to the number or alphabetic character at highlighted, each one will be incremented by an additional [count] (so effectively creating a [count] incrementing sequence). - For Example, if you have this list of numbers: - 1. ~ - 1. ~ - 1. ~ - 1. ~ - Move to the second "1." and Visually select three - lines, pressing g CTRL-A results in: - 1. ~ - 2. ~ - 3. ~ - 4. ~ - + For Example, if you have this list of numbers: > + 1. + 1. + 1. + 1. +< Move to the second "1." and Visually select three + lines, pressing g CTRL-A results in: > + 1. + 2. + 3. + 4. +< *CTRL-X* CTRL-X Subtract [count] from the number or alphabetic character at or after the cursor. @@ -1207,7 +1207,10 @@ Rationale: In Vi the "y" command followed by a backwards motion would With a linewise yank command the cursor is put in the first line, but the column is unmodified, thus it may not be on the first yanked character. -There are ten types of registers: *registers* *{register}* *E354* +============================================================================= +Registers *registers* *{register}* *E354* + +There are ten types of registers: 1. The unnamed register "" 2. 10 numbered registers "0 to "9 3. The small delete register "- @@ -1219,7 +1222,9 @@ There are ten types of registers: *registers* *{register}* *E354* 9. The black hole register "_ 10. Last search pattern register "/ -1. Unnamed register "" *quote_quote* *quotequote* +----------------------------------------------------------------------------- +1. Unnamed register "" *quote_quote* *quotequote* + Vim fills this register with text deleted with the "d", "c", "s", "x" commands or copied with the yank "y" command, regardless of whether or not a specific register was used (e.g. "xdd). This is like the unnamed register is pointing @@ -1232,20 +1237,25 @@ which does not specify a register. Additionally you can access it with the name '"'. This means you have to type two double quotes. Writing to the "" register writes to register "0. -2. Numbered registers "0 to "9 *quote_number* *quote0* *quote1* - *quote2* *quote3* *quote4* *quote9* +----------------------------------------------------------------------------- +2. Numbered registers "0 to "9 *quote_number* + *quote0* *quote1* *quote2* *quote3* *quote4* *quote9* + Vim fills these registers with text from yank and delete commands. - Numbered register 0 contains the text from the most recent yank command, +Numbered register 0 contains the text from the most recent yank command, unless the command specified another register with ["x]. - Numbered register 1 contains the text deleted by the most recent delete or + +Numbered register 1 contains the text deleted by the most recent delete or change command (even when the command specified another register), unless the text is less than one line (the small delete register is used then). An exception is made for the delete operator with these movement commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|. + Register "1 is always used then (this is Vi compatible). The "- register is used as well if the delete is within a line. Note that these characters may be mapped. E.g. |%| is mapped by the matchit plugin. - With each successive deletion or change, Vim shifts the previous contents + +With each successive deletion or change, Vim shifts the previous contents of register 1 into register 2, 2 into 3, and so forth, losing the previous contents of register 9. *yankring* @@ -1260,92 +1270,110 @@ To also store yanks (not only deletions) in registers 1-9, try this: >lua end end, }) +< +----------------------------------------------------------------------------- +3. Small delete register "- *quote_-* *quote-* -3. Small delete register "- *quote_-* *quote-* This register contains text from commands that delete less than one line, except when the command specifies a register with ["x]. -4. Named registers "a to "z or "A to "Z *quote_alpha* *quotea* +----------------------------------------------------------------------------- +4. Named registers "a to "z or "A to "Z *quote_alpha* *quotea* + Vim fills these registers only when you say so. Specify them as lowercase letters to replace their previous contents or as uppercase letters to append to their previous contents. When the '>' flag is present in 'cpoptions' then a line break is inserted before the appended text. +----------------------------------------------------------------------------- 5. Read-only registers ":, ". and "% + These are '%', ':' and '.'. You can use them only with the "p", "P", and ":put" commands and with CTRL-R. - *quote_.* *quote.* *E29* - ". Contains the last inserted text (the same as what is inserted - with the insert mode commands CTRL-A and CTRL-@). Note: this - doesn't work with CTRL-R on the command-line. It works a bit - differently, like inserting the text instead of putting it - ('textwidth' and other options affect what is inserted). - *quote_%* *quote%* - "% Contains the name of the current file. - *quote_:* *quote:* *E30* - ": Contains the most recent executed command-line. Example: Use - "@:" to repeat the previous command-line command. - The command-line is only stored in this register when at least - one character of it was typed. Thus it remains unchanged if - the command was executed completely from a mapping. - *quote_#* *quote#* -6. Alternate file register "# + *quote_.* *quote.* *E29* + - ". Contains the last inserted text (the same as what is inserted + with the insert mode commands CTRL-A and CTRL-@). Note: this doesn't + work with CTRL-R on the command-line. It works a bit differently, + like inserting the text instead of putting it ('textwidth' and other + options affect what is inserted). + *quote_%* *quote%* + - "% Contains the name of the current file. + *quote_:* *quote:* *E30* + - ": Contains the most recent executed command-line. Example: Use + "@:" to repeat the previous command-line command. The command-line is + only stored in this register when at least one character of it was + typed. Thus it remains unchanged if the command was executed + completely from a mapping. + +----------------------------------------------------------------------------- +6. Alternate file register "# *quote_#* *quote#* + Contains the name of the alternate file for the current window. It will -change how the |CTRL-^| command works. -This register is writable, mainly to allow for restoring it after a plugin has -changed it. It accepts buffer number: > - let altbuf = bufnr(@#) - ... - let @# = altbuf +change how the |CTRL-^| command works. This register is writable, mainly to +allow for restoring it after a plugin has +changed it. + +It accepts buffer number: > + let altbuf = bufnr(@#) + ... + let @# = altbuf + It will give error |E86| if you pass buffer number and this buffer does not exist. -It can also accept a match with an existing buffer name: > - let @# = 'buffer_name' -Error |E93| if there is more than one buffer matching the given name or |E94| -if none of buffers matches the given name. -7. Expression register "= *quote_=* *quote=* *@=* +It can also accept a match with an existing buffer name: > + let @# = 'buffer_name' + +Error |E93| if there is more than one buffer matching the given name or +|E94| if none of buffers matches the given name. + +----------------------------------------------------------------------------- +7. Expression register "= *quote_=* *quote=* *@=* + This is not really a register that stores text, but is a way to use an expression in commands which use a register. The expression register is read-write. -When typing the '=' after " or CTRL-R the cursor moves to the command-line, -where you can enter any expression (see |expression|). All normal -command-line editing commands are available, including a special history for -expressions. When you end the command-line by typing , Vim computes the -result of the expression. If you end it with , Vim abandons the -expression. If you do not enter an expression, Vim uses the previous -expression (like with the "/" command). - -The expression must evaluate to a String. A Number is always automatically -converted to a String. For the "p" and ":put" command, if the result is a -Float it's converted into a String. If the result is a List each element is -turned into a String and used as a line. A Dictionary is converted into a -String. A Funcref results in an error message (use string() to convert). - -If the "= register is used for the "p" command, the String is split up at -characters. If the String ends in a , it is regarded as a linewise -register. +- When typing the '=' after " or CTRL-R the cursor moves to the command-line, + where you can enter any expression (see |expression|). All normal + command-line editing commands are available, including a special history for + expressions. When you end the command-line by typing , Vim computes the + result of the expression. If you end it with , Vim abandons the + expression. If you do not enter an expression, Vim uses the previous + expression (like with the "/" command). +- The expression must evaluate to a String. A Number is always automatically + converted to a String. For the "p" and ":put" command, if the result is + a Float it's converted into a String. If the result is a List each element + is turned into a String and used as a line. A Dictionary is converted into + a String. A Funcref results in an error message (use string() to convert). +- If the "= register is used for the "p" command, the String is split up at + characters. If the String ends in a , it is regarded as a linewise + register. +----------------------------------------------------------------------------- 8. Selection registers "* and "+ + Use these registers for storing and retrieving the selected text for the GUI. See |quotestar| and |quoteplus|. When the clipboard is not available or not working, the unnamed register is used instead. For Unix systems and Mac OS X, see |primary-selection|. -9. Black hole register "_ *quote_* -When writing to this register, nothing happens. This can be used to delete -text without affecting the normal registers. When reading from this register, -nothing is returned. +----------------------------------------------------------------------------- +9. Black hole register "_ *quote_* + +When writing to this register, nothing happens. This can be used to delete +text without affecting the normal registers. When reading from this +register, nothing is returned. + +----------------------------------------------------------------------------- +10. Last search pattern register "/ *quote_/* *quote/* -10. Last search pattern register "/ *quote_/* *quote/* Contains the most recent search-pattern. This is used for "n" and 'hlsearch'. It is writable with `:let`, you can change it to have 'hlsearch' highlight other matches without actually searching. You can't yank or delete into this -register. The search direction is available in |v:searchforward|. -Note that the value is restored when returning from a function -|function-search-undo|. +register. The search direction is available in |v:searchforward|. Note that +the value is restored when returning from a function |function-search-undo|. *@/* You can write to a register with a `:let` command |:let-@|. Example: > diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt index b2fd4d034a..a4c7e991af 100644 --- a/runtime/doc/channel.txt +++ b/runtime/doc/channel.txt @@ -15,17 +15,13 @@ Channels are Nvim's way of communicating with external processes. There are several ways to open a channel: - 1. Through stdin/stdout when `nvim` is started with `--headless` and a startup - script or `--cmd` command opens the stdio channel using |stdioopen()|. - - 2. Through stdin, stdout and stderr of a process spawned by |jobstart()|. - - 3. Through the PTY master end opened with `jobstart(…, {'pty': v:true})`. - - 4. By connecting to a TCP/IP socket or named pipe with |sockconnect()|. - - 5. By another process connecting to a socket listened to by Nvim. This only - supports RPC channels, see |rpc-connecting|. +1. Through stdin/stdout when `nvim` is started with `--headless` and a startup + script or `--cmd` command opens the stdio channel using |stdioopen()|. +2. Through stdin, stdout and stderr of a process spawned by |jobstart()|. +3. Through the PTY master end opened with `jobstart(…, {'pty': v:true})`. +4. By connecting to a TCP/IP socket or named pipe with |sockconnect()|. +5. By another process connecting to a socket listened to by Nvim. This only + supports RPC channels, see |rpc-connecting|. Channels support multiple modes or protocols. In the most basic mode of operation, raw bytes are read and written to the channel. diff --git a/runtime/doc/dev.txt b/runtime/doc/dev.txt index bffe83790c..c520bef404 100644 --- a/runtime/doc/dev.txt +++ b/runtime/doc/dev.txt @@ -92,7 +92,6 @@ Examples: 1. In the Vim source code, clipboard logic accounts for more than 1k lines of C source code (ui.c), to perform two tasks that are now accomplished with shell commands such as xclip or pbcopy/pbpaste. - 2. Python scripting support: Vim has three files dedicated to embedding the Python interpreter: if_python.c, if_python3.c and if_py_both.h. Together these files sum about 9.5k lines of C source code. In contrast, Nvim Python @@ -340,7 +339,7 @@ preference): 4. `on_error` callback - For async and "visitors" traversing a graph, where many errors may be collected while work continues. -5. `vim.notify` (sometimes with optional `opts.silent` (async, visitors ^)) +5. `vim.notify` (sometimes with optional `opts.silent` (async, visitors)) - High-level / application-level messages. End-user invokes these directly. *dev-patterns* diff --git a/runtime/doc/dev_vimpatch.txt b/runtime/doc/dev_vimpatch.txt index 54a0e5a303..f9f59ef504 100644 --- a/runtime/doc/dev_vimpatch.txt +++ b/runtime/doc/dev_vimpatch.txt @@ -22,19 +22,13 @@ See |dev-vimpatch-quickstart| to get started immediately. ============================================================================== QUICKSTART *dev-vimpatch-quickstart* -1. Pull the Nvim source: ->bash - git clone https://github.com/neovim/neovim.git -< +1. Pull the Nvim source: >bash + git clone https://github.com/neovim/neovim.git 2. Run `./scripts/vim-patch.sh -l` to see the list of missing Vim patches. - 3. Choose a patch from the list (usually the oldest one), e.g. `8.0.0123`. - - Check for open vim-patch PRs https://github.com/neovim/neovim/pulls?q=is%3Apr+is%3Aopen+label%3Avim-patch. - 4. Run `./scripts/vim-patch.sh -p 8.0.0123` - 5. Follow the instructions given by the script. NOTES ~ diff --git a/runtime/doc/diagnostic.txt b/runtime/doc/diagnostic.txt index 5e040c0a4a..604765dc2b 100644 --- a/runtime/doc/diagnostic.txt +++ b/runtime/doc/diagnostic.txt @@ -40,7 +40,7 @@ requires a namespace. *vim.diagnostic.severity* *diagnostic-severity* The "severity" key in a diagnostic is one of the values defined in -`vim.diagnostic.severity`: +`vim.diagnostic.severity`: > vim.diagnostic.severity.ERROR vim.diagnostic.severity.WARN @@ -54,20 +54,17 @@ Functions that take a severity as an optional parameter (e.g. vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) -2. A table with a "min" or "max" key (or both): >lua +2. A table with a "min" or "max" key (or both). This form allows users to + specify a range of severities: >lua vim.diagnostic.get(0, { severity = { min = vim.diagnostic.severity.WARN } }) -< - This form allows users to specify a range of severities. - -3. A list-like table: >lua +3. A list-like table. This form allows filtering for specific severities: >lua vim.diagnostic.get(0, { severity = { vim.diagnostic.severity.WARN, vim.diagnostic.severity.INFO, } }) < - This form allows users to filter for specific severities ============================================================================== DEFAULTS *diagnostic-defaults* diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index aea5559efd..ff203c4b63 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -1620,30 +1620,27 @@ The completions provided by CTRL-X CTRL-O are sensitive to the context: CONTEXT COMPLETIONS PROVIDED ~ - 1. Not inside a class definition Classes, constants and globals - - 2. Inside a class definition Methods or constants defined in the class - - 3. After '.', '::' or ':' Methods applicable to the object being - dereferenced - - 4. After ':' or ':foo' Symbol name (beginning with "foo") + 1. Not inside a class definition: Classes, constants and globals + 2. Inside a class definition: Methods or constants defined in the class + 3. After '.', '::' or ':': Methods applicable to the object being + dereferenced + 4. After ':' or ':foo': Symbol name (beginning with "foo") Notes: - - Vim will load/evaluate code in order to provide completions. This may - cause some code execution, which may be a concern. This is no longer - enabled by default, to enable this feature add > +- Vim will load/evaluate code in order to provide completions. This may + cause some code execution, which may be a concern. This is no longer + enabled by default, to enable this feature add > let g:rubycomplete_buffer_loading = 1 -<- In context 1 above, Vim can parse the entire buffer to add a list of - classes to the completion results. This feature is turned off by default, - to enable it add > +- In context 1 above, Vim can parse the entire buffer to add a list of + classes to the completion results. This feature is turned off by default, + to enable it add > let g:rubycomplete_classes_in_global = 1 < to your vimrc - - In context 2 above, anonymous classes are not supported. - - In context 3 above, Vim will attempt to determine the methods supported by - the object. - - Vim can detect and load the Rails environment for files within a rails - project. The feature is disabled by default, to enable it add > +- In context 2 above, anonymous classes are not supported. +- In context 3 above, Vim will attempt to determine the methods supported by + the object. +- Vim can detect and load the Rails environment for files within a rails + project. The feature is disabled by default, to enable it add > let g:rubycomplete_rails = 1 < to your vimrc @@ -1737,15 +1734,15 @@ SQL file (:e syntax.sql) you can use the ":syntax list" command to see the various groups and syntax items. For example: > syntax list -Yields data similar to this: - sqlOperator xxx some prior all like and any escape exists in is not ~ - or intersect minus between distinct ~ - links to Operator ~ - sqlType xxx varbit varchar nvarchar bigint int uniqueidentifier ~ - date money long tinyint unsigned xml text smalldate ~ - double datetime nchar smallint numeric time bit char ~ - varbinary binary smallmoney ~ - image float integer timestamp real decimal ~ +Yields data similar to this: > + sqlOperator xxx some prior all like and any escape exists in is not + or intersect minus between distinct + links to Operator + sqlType xxx varbit varchar nvarchar bigint int uniqueidentifier + date money long tinyint unsigned xml text smalldate + double datetime nchar smallint numeric time bit char + varbinary binary smallmoney + image float integer timestamp real decimal There are two syntax groups listed here: sqlOperator and sqlType. To retrieve a List of syntax items you can call OmniSyntaxList a number of different diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt index e264d87e43..4f3392e187 100644 --- a/runtime/doc/lsp.txt +++ b/runtime/doc/lsp.txt @@ -27,7 +27,6 @@ Follow these steps to get LSP features: 1. Install language servers using your package manager or by following the upstream installation instructions. You can find language servers here: https://microsoft.github.io/language-server-protocol/implementors/servers/ - 2. Define a new config |lsp-new-config| (or install https://github.com/neovim/nvim-lspconfig). Example: >lua vim.lsp.config['lua_ls'] = { @@ -49,18 +48,14 @@ Follow these steps to get LSP features: } } } - 3. Use |vim.lsp.enable()| to enable the config. Example: >lua vim.lsp.enable('lua_ls') -< 4. Open a code file matching one of the `filetypes` specified in the config. Note: Depending on the LSP server, you may need to ensure your project has a |lsp-root_markers| file so the workspace can be recognized. - 5. Check that LSP is active ("attached") for the buffer: >vim - :checkhealth vim.lsp -< + :checkhealth vim.lsp 6. (Optional) Configure keymaps and autocommands to use LSP features. |lsp-attach| diff --git a/runtime/doc/lua-guide.txt b/runtime/doc/lua-guide.txt index 4dec146a4c..d5d4112ff1 100644 --- a/runtime/doc/lua-guide.txt +++ b/runtime/doc/lua-guide.txt @@ -33,10 +33,8 @@ layers: as well as |user-function|s in Vimscript. These are accessed through |vim.cmd()| and |vim.fn| respectively, which are discussed under |lua-guide-vimscript| below. - 2. The "Nvim API" written in C for use in remote plugins and GUIs; see |api|. These functions are accessed through |vim.api|. - 3. The "Lua API" written in and specifically for Lua. These are any other functions accessible through `vim.*` not mentioned already; see |lua-stdlib|. diff --git a/runtime/doc/lua-plugin.txt b/runtime/doc/lua-plugin.txt index f502952e3a..d1ec2c7dc7 100644 --- a/runtime/doc/lua-plugin.txt +++ b/runtime/doc/lua-plugin.txt @@ -25,11 +25,9 @@ You can try it right now: 1. Visit your config directory: > :exe 'edit' stdpath('config') -< 2. Create a `plugin/foo.lua` file in there. 3. Add something to it, like: >lua vim.print('Hello World') -< 4. Start `nvim` and notice that it prints "Hello World" in the messages area. Check `:messages` if you don't see it. diff --git a/runtime/doc/luaref.txt b/runtime/doc/luaref.txt index 51f7b776ac..1d31ae8bb7 100644 --- a/runtime/doc/luaref.txt +++ b/runtime/doc/luaref.txt @@ -2541,10 +2541,10 @@ lua_toboolean *lua_toboolean()* < Converts the Lua value at the given acceptable index to a C boolean value (0 or 1). Like all tests in Lua, `lua_toboolean` returns 1 for - any Lua value different from `false` and `nil`; otherwise it returns - 0. It also returns 0 when called with a non-valid index. (If you want - to accept only actual boolean values, use `lua_isboolean` - |lua_isboolean()| to test the value's type.) + any Lua value different from `false` and `nil`; otherwise it returns 0. + It also returns 0 when called with a non-valid index. (If you want to + accept only actual boolean values, use `lua_isboolean` + |lua_isboolean()| to test the value's type.) lua_tocfunction *lua_tocfunction()* >c diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt index ee02b74e0e..49e129f569 100644 --- a/runtime/doc/mbyte.txt +++ b/runtime/doc/mbyte.txt @@ -690,7 +690,7 @@ doesn't always work. See the system specific remarks below, and 'langmenu'. USING UTF-8 IN X-WINDOWS *utf-8-in-xwindows* You need to specify a font to be used. For double-wide characters another -font is required, which is exactly twice as wide. There are three ways to do +font is required, which is exactly twice as wide. There are two ways to do this: 1. Set 'guifont' and let Nvim find a matching 'guifontwide' diff --git a/runtime/doc/nvim.txt b/runtime/doc/nvim.txt index bce1e9652d..e83ca8c1d5 100644 --- a/runtime/doc/nvim.txt +++ b/runtime/doc/nvim.txt @@ -77,19 +77,19 @@ because mouse support is always enabled if possible. If you use the same like so: >vim if !has('nvim') - set ttymouse=xterm2 + set ttymouse=xterm2 endif And for Nvim-specific configuration, you can do this: >vim if has('nvim') - tnoremap + tnoremap endif For a more granular approach use |exists()|: >vim if exists(':tnoremap') - tnoremap + tnoremap endif Now you should be able to explore Nvim more comfortably. Check |nvim-features| diff --git a/runtime/doc/pi_msgpack.txt b/runtime/doc/pi_msgpack.txt index f85201e574..d04e362d37 100644 --- a/runtime/doc/pi_msgpack.txt +++ b/runtime/doc/pi_msgpack.txt @@ -12,34 +12,16 @@ merchantability. No guarantees of suitability for any purpose. By using this plugin, you agree that in no event will the copyright holder be liable for any damages resulting from the use of this software. Use at your own risk! -============================================================================== -1. Contents *msgpack.vim-contents* - - 1. Contents..............................: |msgpack.vim-contents| - 2. Msgpack.vim introduction..............: |msgpack.vim-intro| - 3. Msgpack.vim manual....................: |msgpack.vim-manual| - Function arguments....................: |msgpack.vim-arguments| - msgpack#is_int function...............: |msgpack#is_int()| - msgpack#is_uint function..............: |msgpack#is_uint()| - msgpack#strftime function.............: |msgpack#strftime()| - msgpack#strptime function.............: |msgpack#strptime()| - msgpack#int_dict_to_str function......: |msgpack#int_dict_to_str()| - msgpack#special_type function.........: |msgpack#special_type()| - msgpack#type function.................: |msgpack#type()| - msgpack#deepcopy function.............: |msgpack#deepcopy()| - msgpack#string function...............: |msgpack#string()| - msgpack#eval function.................: |msgpack#eval()| - msgpack#equal function................: |msgpack#equal()| - + Type |gO| to see the table of contents. ============================================================================== -2. Msgpack.vim introduction *msgpack.vim-intro* +Msgpack.vim introduction *msgpack.vim-intro* This plugin contains utility functions to be used in conjunction with |msgpackdump()| and |msgpackparse()| functions. ============================================================================== -3. Msgpack.vim manual *msgpack.vim-manual* +Msgpack.vim manual *msgpack.vim-manual* FUNCTION ARGUMENTS *msgpack.vim-arguments* diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index 1bb084b613..3a8666efcf 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -682,30 +682,32 @@ positions are stored and used to decide whether there was a change. 7. Argument and buffer list commands *buffer-list* args list buffer list meaning ~ -1. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N -2. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf -3. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf -4. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf -5. :rewind / :first 15. :brewind / :bfirst to first arg/buf -6. :last 16. :blast to last arg/buf -7. :all 17. :ball edit all args/buffers - 18. :unhide edit all loaded buffers - 19. :[N]bmod [N] to Nth modified buf - +> + 1. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N + 2. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf + 3. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf + 4. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf + 5. :rewind / :first 15. :brewind / :bfirst to first arg/buf + 6. :last 16. :blast to last arg/buf + 7. :all 17. :ball edit all args/buffers + 18. :unhide edit all loaded buffers + 19. :[N]bmod [N] to Nth modified buf +< split & args list split & buffer list meaning ~ -21. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N -22. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf -23. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf -24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf -25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf -26. :slast 36. :sblast split + to last arg/buf -27. :sall 37. :sball edit all args/buffers - 38. :sunhide edit all loaded buffers - 39. :[N]sbmod [N] split + to Nth modified buf - -40. :args list of arguments -41. :buffers list of buffers +> + 21. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N + 22. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf + 23. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf + 24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf + 25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf + 26. :slast 36. :sblast split + to last arg/buf + 27. :sall 37. :sball edit all args/buffers + 38. :sunhide edit all loaded buffers + 39. :[N]sbmod [N] split + to Nth modified buf + 40. :args list of arguments + 41. :buffers list of buffers +< The meaning of [N] depends on the command: [N] is the number of buffers to go forward/backward on 2/12/22/32, 3/13/23/33, and 4/14/24/34 diff --git a/src/gen/gen_help_html.lua b/src/gen/gen_help_html.lua index 69691d9f05..b7b9ece661 100644 --- a/src/gen/gen_help_html.lua +++ b/src/gen/gen_help_html.lua @@ -29,6 +29,9 @@ -- * visit_node() is the core function used by gen() to traverse the document tree and produce HTML. -- * visit_validate() is the core function used by validate(). -- * Files in `new_layout` will be generated with a "flow" layout instead of preformatted/fixed-width layout. +-- +-- TODO: +-- * Conjoin listitem "blocks" (blank-separated). Example: starting.txt local pending_urls = 0 local tagmap = nil ---@type table @@ -78,6 +81,7 @@ local new_layout = { ['dev_theme.txt'] = true, ['dev_tools.txt'] = true, ['dev_vimpatch.txt'] = true, + ['diagnostic.txt'] = true, ['help.txt'] = true, ['faq.txt'] = true, ['gui.txt'] = true, @@ -629,25 +633,33 @@ local function visit_node(root, level, lang_tree, headings, opt, stats) and root:child(0) and vim.list_contains({ 'column_heading', 'h1', 'h2', 'h3' }, root:child(0):type()) return string.format('%s%s', div and trim(text) or text, div and '' or '\n') + elseif parent == 'line_li' and node_name == 'prefix' then + return '' elseif node_name == 'line_li' then + local prefix = first(root, 'prefix') + local numli = prefix and trim(node_text(prefix)):match('%d') -- Numbered listitem? local sib = root:prev_sibling() local prev_li = sib and sib:type() == 'line_li' + local cssclass = numli and 'help-li-num' or 'help-li' if not prev_li then opt.indent = 1 else - -- The previous listitem _sibling_ is _logically_ the _parent_ if it is indented less. - local parent_indent = get_indent(node_text(sib)) - local this_indent = get_indent(node_text()) - if this_indent > parent_indent then + local sib_ws = ws(sib) + local this_ws = ws() + if get_indent(node_text()) == 0 then + opt.indent = 1 + elseif this_ws > sib_ws then + -- Previous sibling is logically the _parent_ if it is indented less. opt.indent = opt.indent + 1 - elseif this_indent < parent_indent then + elseif this_ws < sib_ws then + -- TODO(justinmk): This is buggy. Need to track exact whitespace length for each level. opt.indent = math.max(1, opt.indent - 1) end end local margin = opt.indent == 1 and '' or ('margin-left: %drem;'):format((1.5 * opt.indent)) - return string.format('
%s
', margin, text) + return string.format('
%s
', cssclass, margin, text) elseif node_name == 'taglink' or node_name == 'optionlink' then local helppage, tagname, ignored = validate_link(root, opt.buf, opt.fname) if ignored or not helppage then @@ -1211,13 +1223,31 @@ local function gen_css(fname) /* font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; */ } .help-li { - white-space: normal; display: list-item; + white-space: normal; margin-left: 1.5rem; /* padding-left: 1rem; */ + /* margin-top: .1em; */ + /* margin-bottom: .1em; */ + } + .help-li-num { + display: list-item; + list-style: none; + /* Sibling UNordered help-li items will increment the builtin counter :( */ + /* list-style-type: decimal; */ + white-space: normal; + margin-left: 1.5rem; /* padding-left: 1rem; */ + margin-top: .1em; + margin-bottom: .1em; + } + .help-li-num::before { + margin-left: -1em; + counter-increment: my-li-counter; + content: counter(my-li-counter) ". "; } .help-para { padding-top: 10px; padding-bottom: 10px; + counter-reset: my-li-counter; /* Manually manage listitem numbering. */ } .old-help-para { @@ -1229,6 +1259,7 @@ local function gen_css(fname) font-size: 16px; font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; word-wrap: break-word; + counter-reset: my-li-counter; /* Manually manage listitem numbering. */ } .old-help-para pre, .old-help-para pre:hover { /* Text following
 is already visually separated by the linebreak. */