NeoVim中Omnisharp LSP跳转定义功能报错求助
Omnisharp LSP跳转定义报错:Cursor position outside buffer
问题说明
配置NeoVim中Omnisharp LSP的跳转定义功能,已按文档要求安装omnisharp_extended,但触发跳转时出现报错。其他LSP的跳转定义功能正常,仅Omnisharp存在问题。已确认LSP已附加到缓冲区、omnisharp_extended已正确安装,点击报错提示的回车后会跳转到空白界面。
配置代码
require('mason-lspconfig').setup { handlers = { omnisharp = function() local config = { ['textDocument/definition'] = require('omnisharp_extended').definition_handler, ['textDocument/typeDefinition'] = require('omnisharp_extended').type_definition_handler, ['textDocument/references'] = require('omnisharp_extended').references_handler, ['textDocument/implementation'] = require('omnisharp_extended').implementation_handler, } require('lspconfig').omnisharp.setup(config) end, function(server_name) local server = servers[server_name] or {} -- This handles overriding only values explicitly passed -- by the server configuration above. Useful when disabling -- certain features of an LSP (for example, turning off formatting for ts_ls) server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) require('lspconfig')[server_name].setup(server) end, }, }
报错信息
Error executing vim.schedule lua callback: ...ar/neovim/0.10.2/share/nvim/runtime/lua/vim/lsp/util.lua:1142: Cursor position outside buffer stack traceback: [C]: in function 'nvim_win_set_cursor' ...ar/neovim/0.10.2/share/nvim/runtime/lua/vim/lsp/util.lua:1142: in function 'jump_to_location' ...nvim/lazy/telescope.nvim/lua/telescope/builtin/__lsp.lua:187: in function 'handler' .../neovim/0.10.2/share/nvim/runtime/lua/vim/lsp/client.lua:687: in function '' vim/_editor.lua: in function <vim/_editor.lua:0>
解决思路建议
- 升级
omnisharp_extended到最新版本:旧版本可能与NeoVim 0.10.2存在兼容性问题,导致返回的位置信息格式异常 - 调整配置结构:将
omnisharp_extended的handler配置放到handlers子字段中,并确保传递基础的capabilities,示例调整后的配置:require('mason-lspconfig').setup { handlers = { omnisharp = function() -- 初始化基础capabilities,可根据需求添加cmp等扩展 local capabilities = vim.lsp.protocol.make_client_capabilities() local config = { capabilities = capabilities, handlers = { ['textDocument/definition'] = require('omnisharp_extended').definition_handler, ['textDocument/typeDefinition'] = require('omnisharp_extended').type_definition_handler, ['textDocument/references'] = require('omnisharp_extended').references_handler, ['textDocument/implementation'] = require('omnisharp_extended').implementation_handler, } } require('lspconfig').omnisharp.setup(config) end, function(server_name) local server = servers[server_name] or {} server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) require('lspconfig')[server_name].setup(server) end, }, } - 更新Omnisharp服务器:通过Mason将Omnisharp更新到最新稳定版,旧服务器返回的位置数据可能无法被
omnisharp_extended正确解析 - 测试原生LSP跳转:暂时禁用Telescope,直接执行
:lua vim.lsp.buf.definition()测试跳转,排查是否是Telescope与omnisharp_extended的兼容性问题 - 检查目标文件路径:确认跳转目标文件存在,且路径无特殊字符或编码问题,Omnisharp对特殊路径的解析可能出现异常
内容的提问来源于stack exchange,提问作者Haroon Almadani
相关产品推荐
相关产品推荐

