2017-03-21 09:08:19 -07:00
|
|
|
*deprecated.txt* Nvim
|
2016-09-24 06:07:49 -07:00
|
|
|
|
|
|
|
|
|
|
|
NVIM REFERENCE MANUAL
|
|
|
|
|
|
|
|
|
|
|
|
Nvim *deprecated*
|
|
|
|
|
2016-10-15 18:54:22 -07:00
|
|
|
The items listed below are "deprecated". This means they will be removed in
|
|
|
|
the future. They should not be used in new scripts, and old scripts should be
|
|
|
|
updated.
|
|
|
|
|
2016-09-24 06:07:49 -07:00
|
|
|
==============================================================================
|
|
|
|
|
2019-04-08 14:08:01 -07:00
|
|
|
API ~
|
|
|
|
*nvim_buf_clear_highlight()* Use |nvim_buf_clear_namespace()| instead.
|
2021-08-22 18:26:35 -07:00
|
|
|
*nvim_buf_set_virtual_text()* Use |nvim_buf_set_extmark()| instead.
|
2019-12-01 23:43:16 -07:00
|
|
|
*nvim_command_output()* Use |nvim_exec()| instead.
|
2019-12-02 01:46:46 -07:00
|
|
|
*nvim_execute_lua()* Use |nvim_exec_lua()| instead.
|
2019-04-08 14:08:01 -07:00
|
|
|
|
2016-09-24 06:07:49 -07:00
|
|
|
Commands ~
|
|
|
|
*:rv*
|
|
|
|
*:rviminfo* Deprecated alias to |:rshada| command.
|
|
|
|
*:wv*
|
|
|
|
*:wviminfo* Deprecated alias to |:wshada| command.
|
|
|
|
|
2018-04-08 08:20:25 -07:00
|
|
|
Environment Variables ~
|
|
|
|
*$NVIM_LISTEN_ADDRESS* Deprecated in favor of |--listen|. If both are given,
|
|
|
|
$NVIM_LISTEN_ADDRESS is ignored.
|
|
|
|
|
2016-09-24 06:07:49 -07:00
|
|
|
Events ~
|
2020-01-13 00:41:55 -07:00
|
|
|
*BufCreate* Use |BufAdd| instead.
|
2016-09-24 06:07:49 -07:00
|
|
|
*EncodingChanged* Never fired; 'encoding' is always "utf-8".
|
|
|
|
*FileEncoding* Never fired; equivalent to |EncodingChanged|.
|
2019-09-12 16:08:22 -07:00
|
|
|
*GUIEnter* Never fired; use |UIEnter| instead.
|
2017-06-21 08:59:52 -07:00
|
|
|
*GUIFailed* Never fired.
|
2016-09-24 06:07:49 -07:00
|
|
|
|
2017-02-26 19:10:55 -07:00
|
|
|
Keycodes ~
|
|
|
|
*<MouseDown>* Use <ScrollWheelUp> instead.
|
|
|
|
*<MouseUp>* Use <ScrollWheelDown> instead.
|
|
|
|
|
2016-09-24 06:07:49 -07:00
|
|
|
Functions ~
|
|
|
|
*buffer_exists()* Obsolete name for |bufexists()|.
|
|
|
|
*buffer_name()* Obsolete name for |bufname()|.
|
2016-09-26 10:31:26 -07:00
|
|
|
*buffer_number()* Obsolete name for |bufnr()|.
|
2016-09-24 06:07:49 -07:00
|
|
|
*file_readable()* Obsolete name for |filereadable()|.
|
|
|
|
*highlight_exists()* Obsolete name for |hlexists()|.
|
|
|
|
*highlightID()* Obsolete name for |hlID()|.
|
2018-12-01 07:32:41 -07:00
|
|
|
*inputdialog()* Use |input()| instead.
|
2017-12-31 07:50:05 -07:00
|
|
|
*jobclose()* Obsolete name for |chanclose()|
|
|
|
|
*jobsend()* Obsolete name for |chansend()|
|
2016-09-24 06:07:49 -07:00
|
|
|
*last_buffer_nr()* Obsolete name for bufnr("$").
|
jobstop(): close channel before process_stop() #10522
fix #9799
regression of #7081
Helped-by: Björn Linse <bjorn.linse@gmail.com>
Problem: :UpdateRemotePlugins (which calls rpcstop()) sometimes crashes:
remote/host: python3 host registered plugins []
nvim: ../src/nvim/event/wstream.c:78:
_Bool wstream_write(Stream *, WBuffer *): Assertion `!stream->closed' failed.
Aborted (core dumped)
Order of events (channel 163, see logs below):
1. Channel's in-stream (0x2ba86c0) is **closed** by `f_rpcstop`..`process_stop`.
2. `receive_msgpack` parses the channel out-stream (0x2ba8860)
3. Invokes "nvim_command_output" API method.
4. Writes result to the **closed** in-stream => **abort**
- af993da4351d (`receive_msgpack`) tried to hack around same/similar issue.
- Hack was removed in 5215e3205a07.
Solution: in jobstop(), close the channel before process_stop().
Log:
DEBUG 2019-07-16T20:54:12.191 25159 stream_close:96: closing Stream: 0x2b01a90
DEBUG 2019-07-16T20:54:12.210 25159 process_spawn:124: new: pid=28407 argv=[/usr/bin/python3]
DEBUG 2019-07-16T20:54:12.210 25159 rpc_start:72: rpc ch 163 in-stream=0x2ba86c0 out-stream=0x2ba8860
INFO 2019-07-16T20:54:12.210 25159 channel_create_event:199: new channel 163 (function <SNR>61_on_exit[4]..<SNR>60_job_exit_cb[101]..<SNR>60_decrement_job_count[8]..remote#host#UpdateRemotePlugins[6]..<SNR>31_RegistrationCommands[15]..remote#host#Require[10]..provider#pythonx#Require[13]..provider#Poll:3) : {"id": 163, "client": {}, "mode": "rpc", "stream": "job"}
DEBUG 2019-07-16T20:54:12.211 25159 log_server_msg:729: RPC ->ch 163: [request] [0, 1, "poll", []]
DEBUG 2019-07-16T20:54:12.355 25159 receive_msgpack:227: ch 163: parsing 21 bytes from msgpack Stream: 0x2ba8860
DEBUG 2019-07-16T20:54:12.355 25159 log_client_msg:766: RPC <-ch 163: [request] [0, 1, "vim_get_api_info", []]
DEBUG 2019-07-16T20:54:12.355 25159 RPC: <-ch 163: invoke nvim_get_api_info
DEBUG 2019-07-16T20:54:12.357 25159 log_server_msg:729: RPC ->ch 163: [response] [1, 1, nil, [163, {"version"=>{"major"=>0, "minor"=>4, }, ...
DEBUG 2019-07-16T20:54:12.377 25159 receive_msgpack:227: ch 163: parsing 85 bytes from msgpack Stream: 0x2ba8860
DEBUG 2019-07-16T20:54:12.377 25159 log_client_msg:766: RPC <-ch 163: [request] [0, 2, "nvim_eval", ["((&number||&relativenumber) ? &numberwidth : 0) + &foldcolumn"]]
DEBUG 2019-07-16T20:54:12.377 25159 handle_request:359: RPC: scheduled nvim_eval
DEBUG 2019-07-16T20:54:12.377 25159 log_client_msg:766: RPC <-ch 163: [response] [1, 1, nil, "ok"]
DEBUG 2019-07-16T20:54:12.378 25159 log_server_msg:729: RPC ->ch 163: [request] [0, 2, "specs", ["/home/vagrant/.config/nvim/rplugin/python3/__pycache__"]]
DEBUG 2019-07-16T20:54:12.378 25159 RPC: <-ch 163: invoke nvim_eval
DEBUG 2019-07-16T20:54:12.379 25159 log_server_msg:729: RPC ->ch 163: [response] [1, 2, nil, 0]
DEBUG 2019-07-16T20:54:12.379 25159 receive_msgpack:227: ch 163: parsing 5 bytes from msgpack Stream: 0x2ba8860
DEBUG 2019-07-16T20:54:12.379 25159 log_client_msg:766: RPC <-ch 163: [response] [1, 2, nil, 0]
DEBUG 2019-07-16T20:54:12.380 25159 log_server_msg:729: RPC ->ch 163: [request] [0, 3, "specs", ["/home/vagrant/.config/nvim/rplugin/python3/foo.py"]]
DEBUG 2019-07-16T20:54:12.380 25159 receive_msgpack:227: ch 163: parsing 79 bytes from msgpack Stream: 0x2ba8860
DEBUG 2019-07-16T20:54:12.380 25159 log_client_msg:766: RPC <-ch 163: [request] [0, 3, "nvim_command", ["redir =>a |exe "sil sign place buffer=".bufnr('')|redir end"]]
DEBUG 2019-07-16T20:54:12.381 25159 handle_request:359: RPC: scheduled nvim_command
DEBUG 2019-07-16T20:54:12.381 25159 RPC: <-ch 163: invoke nvim_command
DEBUG 2019-07-16T20:54:12.381 25159 log_server_msg:729: RPC ->ch 163: [response] [1, 3, nil, nil]
DEBUG 2019-07-16T20:54:12.381 25159 receive_msgpack:227: ch 163: parsing 5 bytes from msgpack Stream: 0x2ba8860
DEBUG 2019-07-16T20:54:12.381 25159 log_client_msg:766: RPC <-ch 163: [response] [1, 3, nil, 0]
DEBUG 2019-07-16T20:54:12.382 25159 stream_close:95: trace:
log_callstack at /home/vagrant/neovim/build/../src/nvim/log.c:256
stream_close at /home/vagrant/neovim/build/../src/nvim/event/stream.c:95
stream_may_close at /home/vagrant/neovim/build/../src/nvim/event/stream.c:111
process_stop at /home/vagrant/neovim/build/../src/nvim/event/process.c:230
f_jobstop at /home/vagrant/neovim/build/../src/nvim/eval.c:12231
f_rpcstop at /home/vagrant/neovim/build/../src/nvim/eval.c:14533
call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6564
get_func_tv at /home/vagrant/neovim/build/../src/nvim/eval.c:6304
ex_call at /home/vagrant/neovim/build/../src/nvim/eval.c:2903
do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2249
do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
call_user_func at /home/vagrant/neovim/build/../src/nvim/eval.c:22666
call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6550
get_func_tv at /home/vagrant/neovim/build/../src/nvim/eval.c:6304
eval7 at /home/vagrant/neovim/build/../src/nvim/eval.c:4407
eval6 at /home/vagrant/neovim/build/../src/nvim/eval.c:4104
eval5 at /home/vagrant/neovim/build/../src/nvim/eval.c:3985
eval4 at /home/vagrant/neovim/build/../src/nvim/eval.c:3688
eval3 at /home/vagrant/neovim/build/../src/nvim/eval.c:3606
eval2 at /home/vagrant/neovim/build/../src/nvim/eval.c:3537
eval1 at /home/vagrant/neovim/build/../src/nvim/eval.c:3464
eval0 at /home/vagrant/neovim/build/../src/nvim/eval.c:3424
ex_let_const at /home/vagrant/neovim/build/../src/nvim/eval.c:1604
ex_let at /home/vagrant/neovim/build/../src/nvim/eval.c:1546
do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2249
do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
call_user_func at /home/vagrant/neovim/build/../src/nvim/eval.c:22666
call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6550
get_func_tv at /home/vagrant/neovim/build/../src/nvim/eval.c:6304
ex_call at /home/vagrant/neovim/build/../src/nvim/eval.c:2903
do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2249
do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
do_ucmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:5803
do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2243
do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
call_user_func at /home/vagrant/neovim/build/../src/nvim/eval.c:22666
call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6550
get_func_tv at /home/vagrant/neovim/build/../src/nvim/eval.c:6304
ex_call at /home/vagrant/neovim/build/../src/nvim/eval.c:2903
do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2249
do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
call_user_func at /home/vagrant/neovim/build/../src/nvim/eval.c:22666
call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6550
get_func_tv at /home/vagrant/neovim/build/../src/nvim/eval.c:6304
ex_call at /home/vagrant/neovim/build/../src/nvim/eval.c:2903
do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2249
do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
call_user_func at /home/vagrant/neovim/build/../src/nvim/eval.c:22666
call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6550
callback_call at /home/vagrant/neovim/build/../src/nvim/eval.c:17917
channel_callback_call at /home/vagrant/neovim/build/../src/nvim/channel.c:675
on_channel_event at /home/vagrant/neovim/build/../src/nvim/channel.c:581
multiqueue_process_events at /home/vagrant/neovim/build/../src/nvim/event/multiqueue.c:147
nv_event at /home/vagrant/neovim/build/../src/nvim/normal.c:7987
normal_execute at /home/vagrant/neovim/build/../src/nvim/normal.c:1133
state_enter at /home/vagrant/neovim/build/../src/nvim/state.c:73
normal_enter at /home/vagrant/neovim/build/../src/nvim/normal.c:462
main at /home/vagrant/neovim/build/../src/nvim/main.c:570
?? ??:0
_start at ??:?
DEBUG 2019-07-16T20:54:12.417 25159 stream_close:96: closing Stream: 0x2ba86c0
INFO 2019-07-16T20:54:12.417 25159 os_proc_tree_kill:96: sending SIGTERM to process group: -28407
DEBUG 2019-07-16T20:54:12.417 25159 receive_msgpack:227: ch 163: parsing 31 bytes from msgpack Stream: 0x2ba8860
DEBUG 2019-07-16T20:54:12.417 25159 log_client_msg:766: RPC <-ch 163: [request] [0, 4, "nvim_command_output", ["echo a"]]
DEBUG 2019-07-16T20:54:12.417 25159 handle_request:359: RPC: scheduled nvim_command_output
DEBUG 2019-07-16T20:54:12.424 25159 RPC: <-ch 163: invoke nvim_command_output
DEBUG 2019-07-16T20:54:12.424 25159 log_server_msg:729: RPC ->ch 163: [response] [1, 4, [0, "Vim(echo):E121: Undefined variable: a"], nil]
ERROR 2019-07-16T20:54:12.424 25159 wstream_write:78: xxx stream=0x2ba86c0
DEBUG 2019-07-16T20:54:12.425 25159 wstream_write:79: trace:
log_callstack at /home/vagrant/neovim/build/../src/nvim/log.c:256
wstream_write at /home/vagrant/neovim/build/../src/nvim/event/wstream.c:82
channel_write at /home/vagrant/neovim/build/../src/nvim/msgpack_rpc/channel.c:407
request_event at /home/vagrant/neovim/build/../src/nvim/msgpack_rpc/channel.c:383
multiqueue_process_events at /home/vagrant/neovim/build/../src/nvim/event/multiqueue.c:147
nv_event at /home/vagrant/neovim/build/../src/nvim/normal.c:7987
normal_execute at /home/vagrant/neovim/build/../src/nvim/normal.c:1133
state_enter at /home/vagrant/neovim/build/../src/nvim/state.c:73
normal_enter at /home/vagrant/neovim/build/../src/nvim/normal.c:462
main at /home/vagrant/neovim/build/../src/nvim/main.c:570
?? ??:0
_start at ??:?
2019-07-17 02:13:57 -07:00
|
|
|
*rpcstop()* Deprecated. Instead use |jobstop()| to stop any job,
|
|
|
|
or chanclose(id, "rpc") to close RPC communication
|
|
|
|
without stopping the job. Use chanclose(id) to close
|
|
|
|
any socket.
|
|
|
|
|
2021-09-06 19:21:18 -07:00
|
|
|
LSP Diagnostics ~
|
|
|
|
|
|
|
|
For each of the functions below, use the corresponding function in
|
|
|
|
|vim.diagnostic| instead (unless otherwise noted). For example, use
|
|
|
|
|vim.diagnostic.get()| instead of |vim.lsp.diagnostic.get()|.
|
|
|
|
|
|
|
|
*vim.lsp.diagnostic.clear()* Use |vim.diagnostic.hide()| instead.
|
|
|
|
*vim.lsp.diagnostic.disable()*
|
|
|
|
*vim.lsp.diagnostic.display()* Use |vim.diagnostic.show()| instead.
|
|
|
|
*vim.lsp.diagnostic.enable()*
|
|
|
|
*vim.lsp.diagnostic.get()*
|
|
|
|
*vim.lsp.diagnostic.get_all()* Use |vim.diagnostic.get()| instead.
|
|
|
|
*vim.lsp.diagnostic.get_count()* Use |vim.diagnostic.get()| instead.
|
|
|
|
*vim.lsp.diagnostic.get_line_diagnostics()*
|
|
|
|
Use |vim.diagnostic.get()| instead.
|
|
|
|
*vim.lsp.diagnostic.get_next()*
|
|
|
|
*vim.lsp.diagnostic.get_next_pos()*
|
|
|
|
*vim.lsp.diagnostic.get_prev()*
|
|
|
|
*vim.lsp.diagnostic.get_prev_pos()*
|
|
|
|
*vim.lsp.diagnostic.get_virtual_text_chunks_for_line()*
|
|
|
|
Use |vim.diagnostic.get_virt_text_chunks()| instead.
|
|
|
|
*vim.lsp.diagnostic.goto_next()*
|
|
|
|
*vim.lsp.diagnostic.goto_prev()*
|
|
|
|
*vim.lsp.diagnostic.redraw()* Use |vim.diagnostic.show()| instead.
|
|
|
|
*vim.lsp.diagnostic.reset()*
|
|
|
|
*vim.lsp.diagnostic.save()* Use |vim.diagnostic.set()| instead.
|
|
|
|
*vim.lsp.diagnostic.set_loclist()* Use |vim.diagnostic.setloclist()| instead.
|
|
|
|
*vim.lsp.diagnostic.set_qflist()* Use |vim.diagnostic.setqflist()| instead.
|
|
|
|
*vim.lsp.diagnostic.show_line_diagnostics()*
|
|
|
|
*vim.lsp.diagnostic.show_position_diagnostics()*
|
|
|
|
|
|
|
|
The following are deprecated without replacement. These functions are moved
|
|
|
|
internally and are no longer exposed as part of the API. Instead, use
|
|
|
|
|vim.diagnostic.config()| and |vim.diagnostic.show()|.
|
|
|
|
|
|
|
|
*vim.lsp.diagnostic.set_signs()*
|
|
|
|
*vim.lsp.diagnostic.set_underline()*
|
|
|
|
*vim.lsp.diagnostic.set_virtual_text()*
|
|
|
|
|
|
|
|
LSP Utility Functions ~
|
|
|
|
|
|
|
|
*vim.lsp.util.set_qflist()* Use |setqflist()| instead.
|
|
|
|
*vim.lsp.util.set_loclist()* Use |setloclist()| instead.
|
|
|
|
|
2021-08-22 18:26:35 -07:00
|
|
|
Lua ~
|
|
|
|
*vim.register_keystroke_callback()* Use |vim.on_key()| instead.
|
2016-09-24 06:07:49 -07:00
|
|
|
|
2017-07-02 04:46:41 -07:00
|
|
|
Modifiers ~
|
2018-10-31 21:24:44 -07:00
|
|
|
*cpo-<*
|
2017-07-02 04:46:41 -07:00
|
|
|
*:menu-<special>*
|
2018-10-31 21:24:44 -07:00
|
|
|
*:menu-special* <> notation is always enabled.
|
2017-07-02 04:46:41 -07:00
|
|
|
*:map-<special>*
|
2018-10-31 21:24:44 -07:00
|
|
|
*:map-special* <> notation is always enabled.
|
2017-07-02 04:46:41 -07:00
|
|
|
|
2017-12-27 11:30:23 -07:00
|
|
|
Normal commands ~
|
|
|
|
*]f*
|
|
|
|
*[f* Same as "gf".
|
|
|
|
|
2016-09-24 06:07:49 -07:00
|
|
|
Options ~
|
2018-01-15 14:26:48 -07:00
|
|
|
*'cscopeverbose'* Enabled by default. Use |:silent| instead.
|
2019-06-29 15:09:45 -07:00
|
|
|
*'exrc'* *'ex'* Security risk: downloaded files could include
|
|
|
|
a malicious .nvimrc or .exrc file. See 'secure'.
|
|
|
|
Recommended alternative: define an autocommand in your
|
|
|
|
|vimrc| to set options for a matching directory.
|
2017-12-31 07:50:05 -07:00
|
|
|
'gd'
|
|
|
|
'gdefault' Enables the |:substitute| flag 'g' by default.
|
2016-09-24 06:07:49 -07:00
|
|
|
*'fe'* 'fenc'+'enc' before Vim 6.0; no longer used.
|
2017-12-31 07:50:05 -07:00
|
|
|
*'highlight'* *'hl'* Names of builtin |highlight-groups| cannot be changed.
|
2017-04-01 08:33:32 -07:00
|
|
|
*'langnoremap'* Deprecated alias to 'nolangremap'.
|
2020-08-15 19:19:06 -07:00
|
|
|
'sessionoptions' Flags "unix", "slash" are ignored and always enabled.
|
2016-09-24 06:07:49 -07:00
|
|
|
*'vi'*
|
2020-08-15 19:19:06 -07:00
|
|
|
'viewoptions' Flags "unix", "slash" are ignored and always enabled.
|
2016-09-24 06:07:49 -07:00
|
|
|
*'viminfo'* Deprecated alias to 'shada' option.
|
2019-04-15 12:15:36 -07:00
|
|
|
*'viminfofile'* Deprecated alias to 'shadafile' option.
|
2016-09-24 06:07:49 -07:00
|
|
|
|
2019-03-20 15:09:53 -07:00
|
|
|
UI extensions~
|
UI/nvim_ui_attach(): add `override` option
Before now, Nvim always degrades UI capabilities to the lowest-common
denominator. For example, if any connected UI has `ext_messages=false`
then `ext_messages=true` requested by any other connected UI is ignored.
Now `nvim_ui_attach()` supports `override=true`, which flips the
behavior: if any UI requests an `ext_*` UI capability then the
capability is enabled (and the legacy behavior is disabled).
Legacy UIs will be broken while a `override=true` UI is connected, but
it's useful for debugging: you can type into the TUI and observe the UI
events from another connected (UI) client. And the legacy UI will
"recover" after the `override=true` UI disconnects.
Example using pynvim:
>>> n.ui_attach(2048, 2048, rgb=True, override=True, ext_multigrid=True, ext_messages=True, ext_popupmenu=True)
>>> while True: n.next_message();
2019-05-09 10:35:38 -07:00
|
|
|
*ui-wildmenu* Use |ui-cmdline| with |ui-popupmenu| instead. Enabled
|
2019-05-11 07:58:47 -07:00
|
|
|
by the `ext_wildmenu` |ui-option|. Emits these events:
|
2019-03-20 15:09:53 -07:00
|
|
|
["wildmenu_show", items]
|
|
|
|
["wildmenu_select", selected]
|
|
|
|
["wildmenu_hide"]
|
|
|
|
|
2017-12-27 11:30:23 -07:00
|
|
|
Variables~
|
|
|
|
*b:terminal_job_pid* PID of the top-level process in a |:terminal|.
|
|
|
|
Use `jobpid(&channel)` instead.
|
|
|
|
|
2017-07-02 04:46:41 -07:00
|
|
|
vim:noet:tw=78:ts=8:ft=help:norl:
|