aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/log.lua
diff options
context:
space:
mode:
authorMathias Fußenegger <mfussenegger@users.noreply.github.com>2022-12-04 18:02:24 +0100
committerGitHub <noreply@github.com>2022-12-04 18:02:24 +0100
commitb098e7971fdf8ed3f7d0c52aff0ce126c34ff3c8 (patch)
tree9e86075ac23fa5079a6befc5f555c545d4a0a562 /runtime/lua/vim/lsp/log.lua
parentec6ba87229704463007fd9db665dcc303e0e4e74 (diff)
downloadrneovim-b098e7971fdf8ed3f7d0c52aff0ce126c34ff3c8.tar.gz
rneovim-b098e7971fdf8ed3f7d0c52aff0ce126c34ff3c8.tar.bz2
rneovim-b098e7971fdf8ed3f7d0c52aff0ce126c34ff3c8.zip
fix(lsp): ensure open_logfile is safe for fast events (#21288)
Closes https://github.com/neovim/neovim/issues/21052
Diffstat (limited to 'runtime/lua/vim/lsp/log.lua')
-rw-r--r--runtime/lua/vim/lsp/log.lua15
1 files changed, 13 insertions, 2 deletions
diff --git a/runtime/lua/vim/lsp/log.lua b/runtime/lua/vim/lsp/log.lua
index 6c6ba0f206..dd9f7d42a4 100644
--- a/runtime/lua/vim/lsp/log.lua
+++ b/runtime/lua/vim/lsp/log.lua
@@ -20,6 +20,17 @@ local format_func = function(arg)
end
do
+ ---@private
+ local function notify(msg, level)
+ if vim.in_fast_event() then
+ vim.schedule(function()
+ vim.notify(msg, level)
+ end)
+ else
+ vim.notify(msg, level)
+ end
+ end
+
local path_sep = vim.loop.os_uname().version:match('Windows') and '\\' or '/'
---@private
local function path_join(...)
@@ -53,7 +64,7 @@ do
logfile, openerr = io.open(logfilename, 'a+')
if not logfile then
local err_msg = string.format('Failed to open LSP client log file: %s', openerr)
- vim.notify(err_msg, vim.log.levels.ERROR)
+ notify(err_msg, vim.log.levels.ERROR)
return false
end
@@ -64,7 +75,7 @@ do
log_info.size / (1000 * 1000),
logfilename
)
- vim.notify(warn_msg)
+ notify(warn_msg)
end
-- Start message for logging