mirror of
https://github.com/neovim/neovim.git
synced 2025-09-29 14:38:32 +00:00
Merge pull request #13843 from teto/notif_provider
[RDY] Notification provider
This commit is contained in:
@@ -10,13 +10,7 @@ local log = {}
|
|||||||
-- Can be used to lookup the number from the name or the name from the number.
|
-- Can be used to lookup the number from the name or the name from the number.
|
||||||
-- Levels by name: 'trace', 'debug', 'info', 'warn', 'error'
|
-- Levels by name: 'trace', 'debug', 'info', 'warn', 'error'
|
||||||
-- Level numbers begin with 'trace' at 0
|
-- Level numbers begin with 'trace' at 0
|
||||||
log.levels = {
|
log.levels = vim.log.levels
|
||||||
TRACE = 0;
|
|
||||||
DEBUG = 1;
|
|
||||||
INFO = 2;
|
|
||||||
WARN = 3;
|
|
||||||
ERROR = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Default log level is warn.
|
-- Default log level is warn.
|
||||||
local current_log_level = log.levels.WARN
|
local current_log_level = log.levels.WARN
|
||||||
|
@@ -545,6 +545,26 @@ Object nvim_exec_lua(String code, Array args, Error *err)
|
|||||||
return nlua_exec(code, args, err);
|
return nlua_exec(code, args, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Notify the user with a message
|
||||||
|
///
|
||||||
|
/// Relays the call to vim.notify . By default forwards your message in the
|
||||||
|
/// echo area but can be overriden to trigger desktop notifications.
|
||||||
|
///
|
||||||
|
/// @param msg Message to display to the user
|
||||||
|
/// @param log_level The log level
|
||||||
|
/// @param opts Reserved for future use.
|
||||||
|
/// @param[out] err Error details, if any
|
||||||
|
Object nvim_notify(String msg, Integer log_level, Dictionary opts, Error *err)
|
||||||
|
FUNC_API_SINCE(7)
|
||||||
|
{
|
||||||
|
FIXED_TEMP_ARRAY(args, 3);
|
||||||
|
args.items[0] = STRING_OBJ(msg);
|
||||||
|
args.items[1] = INTEGER_OBJ(log_level);
|
||||||
|
args.items[2] = DICTIONARY_OBJ(opts);
|
||||||
|
|
||||||
|
return nlua_exec(STATIC_CSTR_AS_STRING("return vim.notify(...)"), args, err);
|
||||||
|
}
|
||||||
|
|
||||||
/// Calls a VimL function.
|
/// Calls a VimL function.
|
||||||
///
|
///
|
||||||
/// @param fn Function name
|
/// @param fn Function name
|
||||||
|
@@ -17,10 +17,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define DEBUG_LOG_LEVEL 0
|
#define TRACE_LOG_LEVEL 0
|
||||||
#define INFO_LOG_LEVEL 1
|
#define DEBUG_LOG_LEVEL 1
|
||||||
#define WARN_LOG_LEVEL 2
|
#define INFO_LOG_LEVEL 2
|
||||||
#define ERROR_LOG_LEVEL 3
|
#define WARN_LOG_LEVEL 3
|
||||||
|
#define ERROR_LOG_LEVEL 4
|
||||||
|
|
||||||
#define DLOG(...)
|
#define DLOG(...)
|
||||||
#define DLOGN(...)
|
#define DLOGN(...)
|
||||||
|
@@ -39,6 +39,16 @@ assert(vim)
|
|||||||
vim.inspect = package.loaded['vim.inspect']
|
vim.inspect = package.loaded['vim.inspect']
|
||||||
assert(vim.inspect)
|
assert(vim.inspect)
|
||||||
|
|
||||||
|
vim.log = {
|
||||||
|
levels = {
|
||||||
|
TRACE = 0;
|
||||||
|
DEBUG = 1;
|
||||||
|
INFO = 2;
|
||||||
|
WARN = 3;
|
||||||
|
ERROR = 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
-- Internal-only until comments in #8107 are addressed.
|
-- Internal-only until comments in #8107 are addressed.
|
||||||
-- Returns:
|
-- Returns:
|
||||||
-- {errcode}, {output}
|
-- {errcode}, {output}
|
||||||
@@ -478,6 +488,23 @@ function vim.defer_fn(fn, timeout)
|
|||||||
return timer
|
return timer
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Notification provider
|
||||||
|
--- without a runtime, writes to :Messages
|
||||||
|
-- see :help nvim_notify
|
||||||
|
--@param msg Content of the notification to show to the user
|
||||||
|
--@param log_level Optional log level
|
||||||
|
--@param opts Dictionary with optional options (timeout, etc)
|
||||||
|
function vim.notify(msg, log_level, _opts)
|
||||||
|
|
||||||
|
if log_level == vim.log.levels.ERROR then
|
||||||
|
vim.api.nvim_err_writeln(msg)
|
||||||
|
else
|
||||||
|
vim.api.nvim_echo(msg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
local on_keystroke_callbacks = {}
|
local on_keystroke_callbacks = {}
|
||||||
|
|
||||||
--- Register a lua {fn} with an {id} to be run after every keystroke.
|
--- Register a lua {fn} with an {id} to be run after every keystroke.
|
||||||
|
@@ -475,6 +475,15 @@ describe('API', function()
|
|||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
describe('nvim_notify', function()
|
||||||
|
it('can be overriden', function()
|
||||||
|
command("lua vim.notify = function(...) return 42 end")
|
||||||
|
eq(42, meths.exec_lua("return vim.notify('Hello world')", {}))
|
||||||
|
nvim("notify", "hello world", 4, {})
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
describe('nvim_input', function()
|
describe('nvim_input', function()
|
||||||
it("VimL error: does NOT fail, updates v:errmsg", function()
|
it("VimL error: does NOT fail, updates v:errmsg", function()
|
||||||
local status, _ = pcall(nvim, "input", ":call bogus_fn()<CR>")
|
local status, _ = pcall(nvim, "input", ":call bogus_fn()<CR>")
|
||||||
|
Reference in New Issue
Block a user