feat(docs): numbered listitems

This commit is contained in:
Justin M. Keyes
2025-12-14 23:25:46 -05:00
parent dc1310d591
commit d5cfca5b76
17 changed files with 222 additions and 210 deletions

View File

@@ -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.

View File

@@ -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*

View File

@@ -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 <CR>, Vim computes the
result of the expression. If you end it with <Esc>, 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 <NL>
characters. If the String ends in a <NL>, 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 <CR>, Vim computes the
result of the expression. If you end it with <Esc>, 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
<NL> characters. If the String ends in a <NL>, 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: >

View File

@@ -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.

View File

@@ -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*

View File

@@ -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 ~

View File

@@ -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*

View File

@@ -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

View File

@@ -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|

View File

@@ -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|.

View File

@@ -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.

View File

@@ -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

View File

@@ -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'

View File

@@ -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 <Esc> <C-\><C-n>
tnoremap <Esc> <C-\><C-n>
endif
For a more granular approach use |exists()|:
>vim
if exists(':tnoremap')
tnoremap <Esc> <C-\><C-n>
tnoremap <Esc> <C-\><C-n>
endif
Now you should be able to explore Nvim more comfortably. Check |nvim-features|

View File

@@ -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*

View File

@@ -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

View File

@@ -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<string, string>
@@ -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('<div class="help-li" style="%s">%s</div>', margin, text)
return string.format('<div class="%s" style="%s">%s</div>', 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 <pre> is already visually separated by the linebreak. */