You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:29:56