This commit is contained in:
Justin M. Keyes 2024-12-19 13:11:26 +09:00 committed by GitHub
commit a427cf8361
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 58 additions and 55 deletions

View File

@ -17,10 +17,14 @@ TUI and GUI (assuming the UI supports the given feature). See |TUI| for notes
specific to the terminal UI. Help tags with the "gui-" prefix refer to UI specific to the terminal UI. Help tags with the "gui-" prefix refer to UI
features, whereas help tags with the "ui-" prefix refer to the |ui-protocol|. features, whereas help tags with the "ui-" prefix refer to the |ui-protocol|.
Nvim provides a default, builtin UI (the |TUI|), but there are many other ==============================================================================
(third-party) GUIs that you can use instead: Third-party GUIs *third-party-guis* *vscode*
Nvim provides a builtin "terminal UI" (|TUI|), but also works with many
(third-party) GUIs which may provide a fresh look or extra features on top of
Nvim. For example, "vscode-neovim" essentally allows you to use VSCode as
a Nvim GUI.
*vscode*
- vscode-neovim (Nvim in VSCode!) https://github.com/vscode-neovim/vscode-neovim - vscode-neovim (Nvim in VSCode!) https://github.com/vscode-neovim/vscode-neovim
- Firenvim (Nvim in your web browser!) https://github.com/glacambre/firenvim - Firenvim (Nvim in your web browser!) https://github.com/glacambre/firenvim
- Neovide https://neovide.dev/ - Neovide https://neovide.dev/

View File

@ -32,8 +32,9 @@ and |user-manual|.
Resources *resources* Resources *resources*
*internet* *www* *distribution* *internet* *www* *distribution*
- Nvim home page: https://neovim.io/ Nvim home page:
- Vim FAQ: https://vimhelp.org/vim_faq.txt.html
https://neovim.io/
*book* *book*
There are many resources to learn Vi, Vim, and Nvim. We recommend: There are many resources to learn Vi, Vim, and Nvim. We recommend:
@ -48,6 +49,7 @@ There are many resources to learn Vi, Vim, and Nvim. We recommend:
- For more information try one of these: - For more information try one of these:
- https://iccf-holland.org/click5.html - https://iccf-holland.org/click5.html
- https://www.vim.org/iccf/click5.html - https://www.vim.org/iccf/click5.html
- Vim FAQ: https://vimhelp.org/vim_faq.txt.html
*bugs* *bug-report* *feature-request* *bugs* *bug-report* *feature-request*
Report bugs and request features here: https://github.com/neovim/neovim/issues Report bugs and request features here: https://github.com/neovim/neovim/issues
@ -67,18 +69,24 @@ To install or upgrade Nvim, you can...
- Build from source: - Build from source:
https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-source https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-source
*uninstall* ------------------------------------------------------------------------------
Un-installing Nvim *uninstall*
To uninstall Nvim: To uninstall Nvim:
- If you downloaded a pre-built archive or built Nvim from source (e.g. `make - If you downloaded a pre-built archive or built Nvim from source (e.g.
install`), just delete its files, typically located in: > `make install`), just delete its files, typically located in: >
/usr/local/bin/nvim /usr/local/bin/nvim
/usr/local/share/nvim /usr/local/share/nvim
<
- To find where Nvim is installed, run these commands: >
:echo v:progpath
:echo $VIMRUNTIME
< <
- If you installed via package manager, read your package manager's - If you installed via package manager, read your package manager's
documentation. Common examples: documentation. Common examples:
- APT (Debian, Ubuntu, …): `apt-get remove neovim` - APT (Debian, Ubuntu, …): `apt-get remove neovim`
- Homebrew (macOS): `brew install neovim` - Homebrew (macOS): `brew uninstall neovim`
- Scoop (Windows): `scoop install neovim` - Scoop (Windows): `scoop uninstall neovim`
============================================================================== ==============================================================================
Sponsor Vim/Nvim development *sponsor* *register* Sponsor Vim/Nvim development *sponsor* *register*

View File

@ -348,22 +348,17 @@ Each response handler has this signature: >
*lsp-handler-resolution* *lsp-handler-resolution*
Handlers can be set by (in increasing priority): Handlers can be set by (in increasing priority):
- Setting a field in vim.lsp.handlers. *vim.lsp.handlers* *vim.lsp.handlers*
`vim.lsp.handlers` is a global table that contains the default mapping of - Setting a field in `vim.lsp.handlers`. The `vim.lsp.handlers` global table
|lsp-method| names to lsp-handlers. contains the default mappings of |lsp-method| names to handlers. (Note: only
for server-to-client requests/notifications, not client-to-server.)
Example: >lua Example: >lua
vim.lsp.handlers['textDocument/publishDiagnostics'] = my_custom_diagnostics_handler vim.lsp.handlers['textDocument/publishDiagnostics'] = my_custom_diagnostics_handler
< <
Note: this only applies for requests/notifications made by the - Passing a {handlers} parameter to |vim.lsp.start()|. This sets the default
server to the client. |lsp-handler| for a specific server. (Note: only for server-to-client
requests/notifications, not client-to-server.)
- The {handlers} parameter of |vim.lsp.start()|. This sets the default
|lsp-handler| for a specific server.
Example: >lua Example: >lua
vim.lsp.start { vim.lsp.start {
..., -- Other configuration omitted. ..., -- Other configuration omitted.
handlers = { handlers = {
@ -371,14 +366,9 @@ Handlers can be set by (in increasing priority):
}, },
} }
< <
Note: this only applies for requests/notifications made by the - Passing a {handler} parameter to |vim.lsp.buf_request_all()|. This sets the
server to the client. |lsp-handler| ONLY for the given request(s).
- The {handler} parameter of |vim.lsp.buf_request_all()|. This sets
the |lsp-handler| ONLY for the given request(s).
Example: >lua Example: >lua
vim.lsp.buf_request_all( vim.lsp.buf_request_all(
0, 0,
'textDocument/publishDiagnostics', 'textDocument/publishDiagnostics',

View File

@ -817,8 +817,8 @@ vim.json.encode({obj}, {opts}) *vim.json.encode()*
Parameters: ~ Parameters: ~
• {obj} (`any`) • {obj} (`any`)
• {opts} (`table<string,any>?`) Options table with keys: • {opts} (`table<string,any>?`) Options table with keys:
• escape_slash: (boolean) (default false) When true, escapes • escape_slash: (boolean) (default false) Escape slash
`/` character in JSON strings characters "/" in string values.
Return: ~ Return: ~
(`string`) (`string`)

View File

@ -12,7 +12,7 @@ manual.
Type |gO| to see the table of contents. Type |gO| to see the table of contents.
============================================================================== ==============================================================================
1. Key mapping *keybind* *key-mapping* *mapping* *macro* 1. Key mapping *keybind* *key-mapping* *mapping*
Key mapping is used to change the meaning of typed keys. The most common use Key mapping is used to change the meaning of typed keys. The most common use
is to define a sequence of commands for a function key. Example: > is to define a sequence of commands for a function key. Example: >

View File

@ -61,7 +61,6 @@ DEFAULTS
current buffer, respectively. current buffer, respectively.
• 'number', 'relativenumber', 'signcolumn', and 'foldcolumn' are disabled in • 'number', 'relativenumber', 'signcolumn', and 'foldcolumn' are disabled in
|terminal| buffers. See |terminal-config| for an example of changing these defaults. |terminal| buffers. See |terminal-config| for an example of changing these defaults.
• |vim.json.encode()| no longer escapes the forward slash symbol by default
DIAGNOSTICS DIAGNOSTICS
@ -124,6 +123,7 @@ LUA
• Command-line completions for: `vim.g`, `vim.t`, `vim.w`, `vim.b`, `vim.v`, • Command-line completions for: `vim.g`, `vim.t`, `vim.w`, `vim.b`, `vim.v`,
`vim.o`, `vim.wo`, `vim.bo`, `vim.opt`, `vim.opt_local`, `vim.opt_global`, `vim.o`, `vim.wo`, `vim.bo`, `vim.opt`, `vim.opt_local`, `vim.opt_global`,
and `vim.fn`. and `vim.fn`.
• |vim.json.encode()| no longer escapes forward slashes "/" by default
OPTIONS OPTIONS
@ -177,7 +177,6 @@ The following new features were added.
API API
• |nvim__ns_set()| can set properties for a namespace • |nvim__ns_set()| can set properties for a namespace
• |vim.json.encode()| has an option to enable forward slash escaping
DEFAULTS DEFAULTS
@ -255,6 +254,7 @@ LUA
is more performant and easier to read. is more performant and easier to read.
• |vim.str_byteindex()| and |vim.str_utfindex()| gained overload signatures • |vim.str_byteindex()| and |vim.str_utfindex()| gained overload signatures
supporting two new parameters, `encoding` and `strict_indexing`. supporting two new parameters, `encoding` and `strict_indexing`.
• |vim.json.encode()| has an option to enable forward slash escaping
OPTIONS OPTIONS
@ -266,6 +266,8 @@ PERFORMANCE
• Significantly reduced redraw time for long lines with treesitter • Significantly reduced redraw time for long lines with treesitter
highlighting. highlighting.
• LSP diagnostics and inlay hints are de-duplicated (new requests cancel
inflight requests). This greatly improves performance with slow LSP servers.
PLUGINS PLUGINS

View File

@ -111,7 +111,7 @@ To abort this type CTRL-C twice.
============================================================================== ==============================================================================
Complex repeats *complex-repeat* Complex repeats *complex-repeat*
*q* *recording* *q* *recording* *macro*
q{0-9a-zA-Z"} Record typed characters into register {0-9a-zA-Z"} q{0-9a-zA-Z"} Record typed characters into register {0-9a-zA-Z"}
(uppercase to append). The 'q' command is disabled (uppercase to append). The 'q' command is disabled
while executing a register, and it doesn't work inside while executing a register, and it doesn't work inside

View File

@ -24,7 +24,7 @@ User configuration and data files are found in standard |base-directories|
session information. |shada| session information. |shada|
============================================================================== ==============================================================================
Defaults *nvim-defaults* Defaults *defaults* *nvim-defaults*
- Filetype detection is enabled by default. This can be disabled by adding - Filetype detection is enabled by default. This can be disabled by adding
":filetype off" to |init.vim|. ":filetype off" to |init.vim|.
@ -291,7 +291,8 @@ Commands:
User commands can support |:command-preview| to show results as you type User commands can support |:command-preview| to show results as you type
- |:write| with "++p" flag creates parent directories. - |:write| with "++p" flag creates parent directories.
Events: Events (autocommands):
- Fixed inconsistent behavior in execution of nested autocommands #23368
- |RecordingEnter| - |RecordingEnter|
- |RecordingLeave| - |RecordingLeave|
- |SearchWrapped| - |SearchWrapped|
@ -299,6 +300,8 @@ Events:
- |TabNewEntered| - |TabNewEntered|
- |TermClose| - |TermClose|
- |TermOpen| - |TermOpen|
- |TermResponse| is fired for any OSC sequence received from the terminal,
instead of the Primary Device Attributes response. |v:termresponse|
- |UIEnter| - |UIEnter|
- |UILeave| - |UILeave|
@ -366,7 +369,7 @@ Options:
- 'shortmess' - 'shortmess'
- "F" flag does not affect output from autocommands. - "F" flag does not affect output from autocommands.
- "q" flag fully hides macro recording message. - "q" flag fully hides macro recording message.
- 'signcolumn' supports up to 9 dynamic/fixed columns - 'signcolumn' can show multiple signs (dynamic or fixed columns)
- 'statuscolumn' full control of columns using 'statusline' format - 'statuscolumn' full control of columns using 'statusline' format
- 'tabline' middle-click on tabpage label closes tabpage, - 'tabline' middle-click on tabpage label closes tabpage,
and %@Func@foo%X can call any function on mouse-click and %@Func@foo%X can call any function on mouse-click
@ -375,6 +378,10 @@ Options:
- 'winblend' pseudo-transparency in floating windows |api-floatwin| - 'winblend' pseudo-transparency in floating windows |api-floatwin|
- 'winhighlight' window-local highlights - 'winhighlight' window-local highlights
Performance:
- Signs are implemented using Nvim's internal "marktree" (btree) structure.
- Folds are not updated during insert-mode.
Providers: Providers:
- If a Python interpreter is available on your `$PATH`, |:python| and - If a Python interpreter is available on your `$PATH`, |:python| and
|:python3| are always available. See |provider-python|. |:python3| are always available. See |provider-python|.
@ -392,6 +399,7 @@ Shell:
- |system()| does not support writing/reading "backgrounded" commands. |E5677| - |system()| does not support writing/reading "backgrounded" commands. |E5677|
Signs: Signs:
- 'signcolumn' can show multiple signs.
- Signs are removed if the associated line is deleted. - Signs are removed if the associated line is deleted.
- Signs placed twice with the same identifier in the same group are moved. - Signs placed twice with the same identifier in the same group are moved.
@ -584,9 +592,6 @@ Mappings:
Motion: Motion:
- The |jumplist| avoids useless/phantom jumps. - The |jumplist| avoids useless/phantom jumps.
Performance:
- Folds are not updated during insert-mode.
Syntax highlighting: Syntax highlighting:
- syncolor.vim has been removed. Nvim now sets up default highlighting groups - syncolor.vim has been removed. Nvim now sets up default highlighting groups
automatically for both light and dark backgrounds, regardless of whether or automatically for both light and dark backgrounds, regardless of whether or
@ -611,12 +616,6 @@ Working directory (Vim implemented some of these after Nvim):
- `getcwd(-1)` is equivalent to `getcwd(-1, 0)` instead of returning the global - `getcwd(-1)` is equivalent to `getcwd(-1, 0)` instead of returning the global
working directory. Use `getcwd(-1, -1)` to get the global working directory. working directory. Use `getcwd(-1, -1)` to get the global working directory.
Autocommands:
- Fixed inconsistent behavior in execution of nested autocommands:
https://github.com/neovim/neovim/issues/23368
- |TermResponse| is fired for any OSC sequence received from the terminal,
instead of the Primary Device Attributes response. |v:termresponse|
Options: Options:
- 'titlestring' uses printf-style '%' items (see: 'statusline') to implement - 'titlestring' uses printf-style '%' items (see: 'statusline') to implement
the default behaviour. The implementation is equivalent to setting the default behaviour. The implementation is equivalent to setting

View File

@ -25,18 +25,18 @@ vim.json = {}
--- ---
---@param str string Stringified JSON data. ---@param str string Stringified JSON data.
---@param opts? table<string,any> Options table with keys: ---@param opts? table<string,any> Options table with keys:
--- - luanil: (table) Table with keys: --- - luanil: (table) Table with keys:
--- * object: (boolean) When true, converts `null` in JSON objects --- - object: (boolean) When true, converts `null` in JSON objects
--- to Lua `nil` instead of |vim.NIL|. --- to Lua `nil` instead of |vim.NIL|.
--- * array: (boolean) When true, converts `null` in JSON arrays --- - array: (boolean) When true, converts `null` in JSON arrays
--- to Lua `nil` instead of |vim.NIL|. --- to Lua `nil` instead of |vim.NIL|.
---@return any ---@return any
function vim.json.decode(str, opts) end function vim.json.decode(str, opts) end
--- Encodes (or "packs") Lua object {obj} as JSON in a Lua string. --- Encodes (or "packs") Lua object {obj} as JSON in a Lua string.
---@param obj any ---@param obj any
---@param opts? table<string,any> Options table with keys: ---@param opts? table<string,any> Options table with keys:
--- - escape_slash: (boolean) (default false) When true, escapes `/` --- - escape_slash: (boolean) (default false) Escape slash
--- character in JSON strings --- characters "/" in string values.
---@return string ---@return string
function vim.json.encode(obj, opts) end function vim.json.encode(obj, opts) end

View File

@ -152,7 +152,7 @@ describe('vim.json.encode()', function()
clear() clear()
end) end)
it('dumps strings with & without escaped slash', function() it('escape_slash', function()
-- With slash -- With slash
eq('"Test\\/"', exec_lua([[return vim.json.encode('Test/', { escape_slash = true })]])) eq('"Test\\/"', exec_lua([[return vim.json.encode('Test/', { escape_slash = true })]]))
eq( eq(