BigQuery의 LSP에서 모드 완성을 위한 nvim-lspconfig 활성화

@dr666m1공개된BigQuery(표준 SQL)의 LSPnvim-lsp로설정해사용하고(↓글 참조)빅Query에서 데이터세트의 정보를 얻어 보충 이용하는 기능이 있다.오늘 나는 이것을 시험해 보기로 결정했다.
https://zenn.dev/a24k/articles/a8b882019da106
https://zenn.dev/a24k/articles/20220325-nvim-lsp-bqls-only
다음은 보도와 같은 설정을 완성했다는 전제다.

개시하다


첫글 저도 조금 접해 봤는데 처음에 제 환경에서 이 기능이 잘 작동하지 못해서 힘들었어요.캐시 파일의 타임 스탬프가 업데이트되었지만 기대했던 내용은 들어오지 않았다.보는 과정에서 US 구역의 데이터 집합을 얻었지만 도쿄 지역의 데이터 집합을 얻지 못했다는 것을 알아차렸다.
그래서 저는 졸렬한 영어 issue로 당신과 상의를 했는데 결과는 단지 단번에 고쳤을 뿐입니다.감사합니다.0.0.17 합병 후 잘 작동합니다.
https://github.com/dr666m1/bq-extension-vscode/issues/38 nvim-lsp-installer 맞춤형 서버로 추가되면 :LspInstallInfo누름u만으로 최신 버전으로 손쉽게 업데이트할 수 있습니다.

bq/updateCache 정보


LSP 요청bq/updateCache 방법 후 LSP 측에서 bq 명령 또는 INFORMATION_SCHEMA에 대한 조회를 수행하여 항목과 데이터 세트의 정보를 얻습니다.INFORMATION_SCHEMA에 대한 조회 규정은 최소 10MB가 들지만 편집 중인 조회에 사용된 데이터 집합만 정보를 얻기 때문에 안심할 수 있다.
얻은 정보는 ~/.bq_extension_vscode/cache.sqlite라는 파일(상기0.0.17의 수정에 따라 cache_00_00_17.sqlite라는 파일 이름)에 저장되며, 이 정보를 바탕으로 보충 기능을 하는 동작이다.편리

bq/updateCache를 실행하는 키 바인딩 설정


물론 지령vim.lsp으로 직접 치면 실행할 수 있지만 귀찮으니까 일단 묶어두세요.데이터 집합의 상황에 따라 정해지지만 실행하는 데 시간이 좀 걸리기 때문에 비동기적으로 행동해야 한다.이런 인상.
local lspInstaller = require("nvim-lsp-installer")

serverOnAttach['bqls'] = function (_, bufnr)
    local function nnoremap_silent_buffer(lhs, rhs)
        vim.api.nvim_buf_set_keymap(bufnr, 'n', lhs, rhs, { noremap=true, silent=true })
    end

    nnoremap_silent_buffer('gu', '<Cmd>lua print("LSP[bqls][Request] bq/updateCache") vim.lsp.buf_request(bufnr, "bq/updateCache", {}, function(_, res, _, _) print("LSP[bqls][Response]", res) end)<CR>')
    nnoremap_silent_buffer('gc', '<Cmd>lua print("LSP[bqls][Request] bq/clearCache") vim.lsp.buf_request(bufnr, "bq/clearCache", {}, function(_, res, _, _) print("LSP[bqls][Response]", res) end)<CR>')
end

lspInstaller.on_server_ready(function(server)
    local opts = {
        on_attach = on_attach,  -- e.g.
    }

    if serverOpts[server.name] then
        for k, v in pairs(serverOpts[server.name]) do opts[k] = v end
    end

    if serverOnAttach[server.name] then
        opts.on_attach = function (client, bufnr)
            on_attach(client, bufnr)
            serverOnAttach[server.name](client, bufnr)
        end
    end

    server:setup(opts)
    vim.cmd [[ do User LspAttachBuffers ]]
end)
에도 저장된 캐시bq/clearCache를 제거하는 방법이 있어 함께 설정합니다.버튼 귀속은 취향에 따라 가능합니다.

끝말


보충도 순조롭게 진행되고 조회도 갈수록 순조롭게 진행될 것이다.BigQuery 콘솔을 여는 시간이 단축되었습니다.@dr666m1 감사합니다.

좋은 웹페이지 즐겨찾기