nvim lsp denols 대 tsserver 충돌 해결

최근에 저는 일부 개인 프로젝트에 Deno를 사용하기 시작했고, neovim에 Deno lsp 클라이언트를 설치했을 때 Deno 유형이 무엇인지 모르고 다른 성가신 진단이 있기 때문에 tsserver와 충돌했습니다.

official 문서는 root_dirserver:setup(options) 매개변수를 지정하라고 지시하지만 Deno 프로젝트가 없고 package.json 도 없는 경우 작동하지 않기 때문에 번거롭다고 생각했습니다.

내 솔루션은 프로그래밍 방식을 사용하여 시작할 시기를 세밀하게 제어하는 ​​것이었습니다. 기본적으로 tsserver이 시작하려고 할 때 denols이 활성 클라이언트(vim.lsp.get_active_clients()을 사용하여 얻을 수 있음)에 있는지 확인하고 설정을 계속하지 않으며 denols은 동일한 확인을 수행하여 tsserver이 자신에게 속한 파일에 첨부되어 있는지 확인하고 종료합니다. 그것.

전체 스 니펫은 다음과 같습니다.

      local active_clients = vim.lsp.get_active_clients()
      if client.name == 'denols' then
        for _, client_ in pairs(active_clients) do
          -- stop tsserver if denols is already active
          if client_.name == 'tsserver' then
            client_.stop()
          end
        end
      elseif client.name == 'tsserver' then
        for _, client_ in pairs(active_clients) do
          -- prevent tsserver from starting if denols is already active
          if client_.name == 'denols' then
            client.stop()
          end
        end
      end


시간이 절약되길 바랍니다.

좋은 웹페이지 즐겨찾기