commit 1d7823451e2ad07a958551961083c85cf67a0ac5
parent 6ad2a130541cf684b2b3c536e1d336efd5827118
Author: someoneinjd <61791143+someoneinjd@users.noreply.github.com>
Date: Mon, 16 Jun 2025 20:02:59 +0800
fix(lsp): use vim.notify for all message types #34489
Problem: Currently, vim.notify is only used to display messages when the
message type is Error.
Solution: Use vim.notify to display messages for all message types.
Diffstat:
2 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/runtime/lua/vim/lsp/handlers.lua b/runtime/lua/vim/lsp/handlers.lua
@@ -588,12 +588,8 @@ NSC['window/showMessage'] = function(_, params, ctx)
if not client then
err_message('LSP[', client_name, '] client has shut down after sending ', message)
end
- if message_type == protocol.MessageType.Error then
- err_message('LSP[', client_name, '] ', message)
- else
- message = ('LSP[%s][%s] %s\n'):format(client_name, protocol.MessageType[message_type], message)
- api.nvim_echo({ { message } }, true, {})
- end
+ message = ('LSP[%s] %s'):format(client_name, message)
+ vim.notify(message, log._from_lsp_level(message_type))
return params
end
diff --git a/runtime/lua/vim/lsp/log.lua b/runtime/lua/vim/lsp/log.lua
@@ -25,6 +25,8 @@ local log = {}
local log_levels = vim.log.levels
+local protocol = require('vim.lsp.protocol')
+
--- Log level dictionary with reverse lookup as well.
---
--- Can be used to lookup the number from the name or the name from the number.
@@ -218,4 +220,19 @@ function log.should_log(level)
return level >= current_log_level
end
+--- Convert LSP MessageType to vim.log.levels
+---
+---@param message_type lsp.MessageType
+function log._from_lsp_level(message_type)
+ if message_type == protocol.MessageType.Error then
+ return vim.log.levels.ERROR
+ elseif message_type == protocol.MessageType.Warning then
+ return vim.log.levels.WARN
+ elseif message_type == protocol.MessageType.Info or message_type == protocol.MessageType.Log then
+ return vim.log.levels.INFO
+ else
+ return vim.log.levels.DEBUG
+ end
+end
+
return log