mirror of
https://github.com/neovim/neovim.git
synced 2025-12-15 19:05:40 +00:00
feat(lua): show proper verbose output for lua configuration
`:verbose` didn't work properly with lua configs (For example:
options or keymaps are set from lua, just say that they were set
from lua, doesn't say where they were set at.
This fixes that issue. Now `:verbose` will provide filename and line no
when option/keymap is set from lua.
Changes:
- compiles lua/vim/keymap.lua as vim/keymap.lua
- When souring a lua file current_sctx.sc_sid is set to SID_LUA
- Moved finding scripts SID out of `do_source()` to `get_current_script_id()`.
So it can be reused for lua files.
- Added new function `nlua_get_sctx` that extracts current lua scripts
name and line no with debug library. And creates a sctx for it.
NOTE: This function ignores C functions and blacklist which
currently contains only vim/_meta.lua so vim.o/opt wrappers aren't
targeted.
- Added function `nlua_set_sctx` that changes provided sctx to current
lua scripts sctx if a lua file is being executed.
- Added tests in tests/functional/lua/verbose_spec.lua
- add primary support for additional types (:autocmd, :function, :syntax) to lua verbose
Note: These can't yet be directly set from lua but once that's possible
:verbose should work for them hopefully :D
- add :verbose support for nvim_exec & nvim_command within lua
Currently auto commands/commands/functions ... can only be defined
by nvim_exec/nvim_command this adds support for them. Means if those
Are defined within lua with vim.cmd/nvim_exec :verbose will show their
location . Though note it'll show the line no on which nvim_exec call was made.
This commit is contained in:
@@ -15,6 +15,9 @@ local pcall_err = helpers.pcall_err
|
||||
local shallowcopy = helpers.shallowcopy
|
||||
local sleep = helpers.sleep
|
||||
|
||||
local sid_api_client = -9
|
||||
local sid_lua = -8
|
||||
|
||||
describe('nvim_get_keymap', function()
|
||||
before_each(clear)
|
||||
|
||||
@@ -340,7 +343,7 @@ describe('nvim_get_keymap', function()
|
||||
script=0,
|
||||
silent=0,
|
||||
expr=0,
|
||||
sid=0,
|
||||
sid=sid_lua,
|
||||
buffer=0,
|
||||
nowait=0,
|
||||
mode='n',
|
||||
@@ -357,7 +360,7 @@ describe('nvim_get_keymap', function()
|
||||
script=0,
|
||||
silent=0,
|
||||
expr=0,
|
||||
sid=0,
|
||||
sid=sid_api_client,
|
||||
buffer=0,
|
||||
nowait=0,
|
||||
mode='n',
|
||||
@@ -400,7 +403,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
||||
to_return.silent = not opts.silent and 0 or 1
|
||||
to_return.nowait = not opts.nowait and 0 or 1
|
||||
to_return.expr = not opts.expr and 0 or 1
|
||||
to_return.sid = not opts.sid and 0 or opts.sid
|
||||
to_return.sid = not opts.sid and sid_api_client or opts.sid
|
||||
to_return.buffer = not opts.buffer and 0 or opts.buffer
|
||||
to_return.lnum = not opts.lnum and 0 or opts.lnum
|
||||
to_return.desc = opts.desc
|
||||
@@ -625,7 +628,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
||||
it('interprets control sequences in expr-quotes correctly when called '
|
||||
..'inside vim', function()
|
||||
command([[call nvim_set_keymap('i', "\<space>", "\<tab>", {})]])
|
||||
eq(generate_mapargs('i', '<Space>', '\t', {}),
|
||||
eq(generate_mapargs('i', '<Space>', '\t', {sid=0}),
|
||||
get_mapargs('i', '<Space>'))
|
||||
feed('i ')
|
||||
eq({'\t'}, curbufmeths.get_lines(0, -1, 0))
|
||||
@@ -807,7 +810,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
||||
local mapargs = funcs.maparg('asdf', 'n', false, true)
|
||||
assert.Truthy(type(mapargs.callback) == 'number', 'callback is not luaref number')
|
||||
mapargs.callback = nil
|
||||
eq(generate_mapargs('n', 'asdf', nil, {}), mapargs)
|
||||
eq(generate_mapargs('n', 'asdf', nil, {sid=sid_lua}), mapargs)
|
||||
end)
|
||||
|
||||
it('can make lua expr mappings', function()
|
||||
|
||||
Reference in New Issue
Block a user