mirror of
https://github.com/neovim/neovim.git
synced 2025-09-17 00:38:17 +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:
@@ -27,6 +27,7 @@
|
||||
#include "nvim/highlight.h"
|
||||
#include "nvim/indent_c.h"
|
||||
#include "nvim/keymap.h"
|
||||
#include "nvim/lua/executor.h"
|
||||
#include "nvim/macros.h"
|
||||
#include "nvim/mbyte.h"
|
||||
#include "nvim/memline.h"
|
||||
@@ -6919,6 +6920,7 @@ void do_highlight(const char *line, const bool forceit, const bool init)
|
||||
hlgroup->sg_deflink = to_id;
|
||||
hlgroup->sg_deflink_sctx = current_sctx;
|
||||
hlgroup->sg_deflink_sctx.sc_lnum += sourcing_lnum;
|
||||
nlua_set_sctx(&hlgroup->sg_deflink_sctx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6939,6 +6941,7 @@ void do_highlight(const char *line, const bool forceit, const bool init)
|
||||
hlgroup->sg_link = to_id;
|
||||
hlgroup->sg_script_ctx = current_sctx;
|
||||
hlgroup->sg_script_ctx.sc_lnum += sourcing_lnum;
|
||||
nlua_set_sctx(&hlgroup->sg_script_ctx);
|
||||
hlgroup->sg_cleared = false;
|
||||
redraw_all_later(SOME_VALID);
|
||||
|
||||
@@ -7319,6 +7322,7 @@ void do_highlight(const char *line, const bool forceit, const bool init)
|
||||
}
|
||||
HL_TABLE()[idx].sg_script_ctx = current_sctx;
|
||||
HL_TABLE()[idx].sg_script_ctx.sc_lnum += sourcing_lnum;
|
||||
nlua_set_sctx(&HL_TABLE()[idx].sg_script_ctx);
|
||||
}
|
||||
xfree(key);
|
||||
xfree(arg);
|
||||
|
Reference in New Issue
Block a user