Lsp

Nvim の :help ページは、ソース生成 し、tree-sitter-vimdoc パーサーを使用しています。


LSP クライアント/フレームワーク LSP
Nvim は Language Server Protocol (LSP) をサポートしており、これは Nvim が LSP サーバーのクライアントとして機能し、拡張された LSP ツールを構築するための Lua フレームワーク vim.lsp を含むことを意味します。
LSP は、セマンティックなプロジェクト全体の分析(ctags とは異なり)を使用して、定義へのジャンプ、参照の検索、ホバー、補完、名前変更、フォーマット、リファクタリングなどの機能を実現します。

クイックスタート lsp-quickstart

Nvim は LSP クライアントを提供しますが、サーバーはサードパーティによって提供されます。LSP 機能を利用するには、以下の手順に従ってください。
1. パッケージマネージャーを使用するか、アップストリームのインストール手順に従って、言語サーバーをインストールします。言語サーバーはここで見つけることができます: https://microsoft.github.io/language-server-protocol/implementors/servers/
2. ファイルが開かれたときに LSP サーバーを起動(または既存のサーバーに接続)するには、vim.lsp.start() を使用します。例
-- Create an event handler for the FileType autocommand
vim.api.nvim_create_autocmd('FileType', {
  -- This handler will fire when the buffer's 'filetype' is "python"
  pattern = 'python',
  callback = function(args)
    vim.lsp.start({
      name = 'my-server-name',
      cmd = {'name-of-language-server-executable', '--option', 'arg1', 'arg2'},
      -- Set the "root directory" to the parent directory of the file in the
      -- current buffer (`args.buf`) that contains either a "setup.py" or a
      -- "pyproject.toml" file. Files that share a root directory will reuse
      -- the connection to the same LSP server.
      root_dir = vim.fs.root(args.buf, {'setup.py', 'pyproject.toml'}),
    })
  end,
})
3. バッファーがサーバーに接続されていることを確認します。
:checkhealth lsp
4. (オプション)LSP 機能を使用するためにキーマップと自動コマンドを設定します。 lsp-config
lsp-defaults
Nvim LSP クライアントが起動すると、診断機能 vim.diagnostic が有効になります(カスタマイズするには vim.diagnostic.config() を参照)。また、以下のデフォルトオプションが設定されます。(1)言語サーバーがその機能をサポートしており、(2)オプションが空であるか、組み込みのランタイム(ftplugin)ファイルによって設定された場合。LSP クライアントが停止またはデタッチされた場合、オプションは復元されません。
'omnifunc'vim.lsp.omnifunc() に設定され、補完をトリガーするには i_CTRL-X_CTRL-O を使用します。
'tagfunc'vim.lsp.tagfunc() に設定されます。これにより、定義へのジャンプ、:tjump などの機能や、CTRL-], CTRL-W_], CTRL-W_} などのキーマップを使用して、言語サーバーを利用できるようになります。
'formatexpr'vim.lsp.formatexpr() に設定されるため、言語サーバーがサポートしている場合は gq を介して行をフォーマットできます。
この設定をオプトアウトするには、gq の代わりに gw を使用するか、LspAttach'formatexpr' をクリアします。
K は、'keywordprg' がカスタマイズされているか、K のカスタムキーマップが存在しない限り、vim.lsp.buf.hover() にマップされます。
grr gra grn gri i_CTRL-S Nvim の起動時に一部のキーマップが条件なしで作成されます。
"grn" はノーマルモードで vim.lsp.buf.rename() にマップされます。
"gra" はノーマルモードおよびビジュアルモードで vim.lsp.buf.code_action() にマップされます。
"grr" はノーマルモードで vim.lsp.buf.references() にマップされます。
"gri" はノーマルモードで vim.lsp.buf.implementation() にマップされます。
"gO" はノーマルモードで vim.lsp.buf.document_symbol() にマップされます。
CTRL-S は挿入モードで vim.lsp.buf.signature_help() にマップされます。
不要な場合、これらのキーマップは vim.keymap.del() または :unmap を使用していつでも削除できます(gr-default も参照)。
lsp-defaults-disable
上記のデフォルトを上書きまたは削除するには、LspAttach でオプションを設定または設定解除します。
vim.api.nvim_create_autocmd('LspAttach', {
  callback = function(args)
    -- Unset 'formatexpr'
    vim.bo[args.buf].formatexpr = nil
    -- Unset 'omnifunc'
    vim.bo[args.buf].omnifunc = nil
    -- Unmap K
    vim.keymap.del('n', 'K', { buffer = args.buf })
  end,
})
lsp-config
他の LSP 機能を使用するには、LspAttach でキーマップやその他のバッファオプションを設定します。すべての言語サーバーが同じ機能を提供するわけではありません。機能チェックを使用して、言語サーバーでサポートされている機能のみを使用するようにしてください。例
vim.api.nvim_create_autocmd('LspAttach', {
  callback = function(args)
    local client = vim.lsp.get_client_by_id(args.data.client_id)
    if client.supports_method('textDocument/implementation') then
      -- Create a keymap for vim.lsp.buf.implementation
    end
    if client.supports_method('textDocument/completion') then
      -- Enable auto-completion
      vim.lsp.completion.enable(true, client.id, args.buf, {autotrigger = true})
    end
    if client.supports_method('textDocument/formatting') then
      -- Format the current buffer on save
      vim.api.nvim_create_autocmd('BufWritePre', {
        buffer = args.buf,
        callback = function()
          vim.lsp.buf.format({bufnr = args.buf, id = client.id})
        end,
      })
    end
  end,
})
利用可能な機能を確認するには、起動した LSP クライアントを持つバッファで次のコマンドを実行できます。
:lua =vim.lsp.get_clients()[1].server_capabilities
デフォルトで提供される機能の完全なリストは、lsp-buf で確認できます。

FAQ lsp-faq

Q: LSP を強制的にリロードするにはどうすればよいですか?
A: すべてのクライアントを停止してから、バッファをリロードします。
:lua vim.lsp.stop_client(vim.lsp.get_clients())
:edit
Q: 補完が機能しないのはなぜですか?
A: LSP を使用したいバッファで、'omnifunc' が "v:lua.vim.lsp.omnifunc" に設定されていることを確認してください: :verbose set omnifunc?
他のプラグインがオプションを上書きしている可能性があります。それを避けるには、after-directory ftplugin(例: "after/ftplugin/python.vim")でオプションを設定できます。
Q: リクエストを同期的に実行するにはどうすればよいですか(例: ファイル保存時のフォーマット)?
A: 関数に async パラメーターがあるかどうかを確認し、値を false に設定します。例: コードのフォーマット
" Auto-format *.rs (rust) files prior to saving them
" (async = false is the default for format)
autocmd BufWritePre *.rs lua vim.lsp.buf.format({ async = false })
lsp-vs-treesitter
Q: LSP と Treesitter はどのように比較されますか?
A: LSP には、クライアントと言語サーバーが必要です。言語サーバーは、セマンティック分析を使用して、プロジェクトレベルでコードを理解します。これにより、言語サーバーは、ファイル全体での名前変更、外部ライブラリでの定義の検索などが可能になります。
Treesitter は、テキストをインクリメンタルに解析し、エラーを処理するための優れたツールを提供する言語解析ライブラリです。これにより、構文強調表示、単純な定義へのジャンプ、スコープ分析などのために、エディターが現在のファイルの内容を理解するのに適しています。
LSP と Treesitter はどちらも、コードを編集および検査するための優れたツールです。

LSP API lsp-api

LSP のコア API については、lsp-core で説明されています。これらはクライアントを作成および管理するためのコア関数です。
vim.lsp.buf_… 関数は、指定されたバッファにアタッチされているすべての LSP クライアントに対して操作を実行します。 lsp-buf
LSP リクエスト/レスポンスハンドラーは、Lua 関数として実装されています(lsp-handler を参照)。 lsp-method
LSP 仕様で定義されているリクエストと通知は、「LSP メソッド」と呼ばれます。Nvim LSP クライアントは、グローバルな vim.lsp.handlers テーブルにデフォルトのハンドラーを提供しています。このコマンドでそれらをリストできます。
:lua vim.print(vim.tbl_keys(vim.lsp.handlers))
それらは以下にもリストされています。ハンドラーはサーバーのサポートに依存することに注意してください。サーバーがそれらをサポートしていない場合、実行されません。
'callHierarchy/incomingCalls'
'callHierarchy/outgoingCalls'
'textDocument/codeAction'
'textDocument/completion'
'textDocument/declaration'
'textDocument/definition'
'textDocument/diagnostic'
'textDocument/documentHighlight'
'textDocument/documentSymbol'
'textDocument/formatting'
'textDocument/hover'
'textDocument/implementation'
'textDocument/inlayHint'
'textDocument/prepareTypeHierarchy'
'textDocument/publishDiagnostics'
'textDocument/rangeFormatting'
'textDocument/rangesFormatting'
'textDocument/references'
'textDocument/rename'
'textDocument/semanticTokens/full'
'textDocument/semanticTokens/full/delta'
'textDocument/signatureHelp'
'textDocument/typeDefinition*'
'typeHierarchy/subtypes'
'typeHierarchy/supertypes'
'window/logMessage'
'window/showMessage'
'window/showDocument'
'window/showMessageRequest'
'workspace/applyEdit'
'workspace/configuration'
'workspace/executeCommand'
'workspace/inlayHint/refresh'
'workspace/symbol'
'workspace/workspaceFolders'
lsp-handler
LSP ハンドラーは、Nvim がサーバーに送信したリクエストに対する lsp-response を処理する関数です。(リクエストとは対照的に、通知は fire-and-forget です。応答がないため、処理できません。lsp-notification
各レスポンスハンドラーには、次のシグネチャがあります。
function(err, result, ctx)
パラメーター
{err} (table|nil) エラー情報辞書、またはリクエストが完了した場合は nil
{result} (Result|Params|nil) lsp-responseresult キー、またはリクエストが失敗した場合は nil
{ctx} (table) ハンドラーに関連付けられた呼び出し状態のテーブル。次のキーがあります。
{method} (string) lsp-method の名前。
{client_id} (number) vim.lsp.Client の識別子。
{bufnr} (Buffer) バッファハンドル。
{params} (table|nil) リクエストパラメーターのテーブル。
{version} (number) リクエスト時のドキュメントバージョン。ハンドラーは、これを現在のドキュメントバージョンと比較して、応答が「古い」かどうかを確認できます。b:changedtick も参照してください。
戻り値
result, err の 2 つの値。err は RPC エラーのような形式です。
{ code, message, data? }
このオブジェクトを作成するには、vim.lsp.rpc.rpc_response_error() を使用できます。
lsp-handler-resolution
ハンドラーは、(優先度が高い順に)以下によって設定できます。
vim.lsp.handlers のフィールドを設定します。 vim.lsp.handlers
vim.lsp.handlers は、lsp-method 名を lsp-handlers にデフォルトでマッピングするグローバルテーブルです。
vim.lsp.handlers['textDocument/publishDiagnostics'] = my_custom_diagnostics_handler
注意: これは、サーバーからクライアントへのリクエスト/通知にのみ適用されます。
vim.lsp.start(){handlers} パラメーター。これにより、特定のサーバーのデフォルトの lsp-handler が設定されます。
vim.lsp.start {
  ..., -- Other configuration omitted.
  handlers = {
    ['textDocument/publishDiagnostics'] = my_custom_server_definition
  },
}
注意: これは、サーバーからクライアントへのリクエスト/通知にのみ適用されます。
vim.lsp.buf_request_all(){handler} パラメーター。これにより、指定されたリクエストのみに lsp-handler が設定されます。
vim.lsp.buf_request_all(
  0,
  'textDocument/publishDiagnostics',
  my_request_params,
  my_handler
)
vim.lsp.log_levels
ログレベルは vim.log.levels で定義されています。

VIM.LSP.PROTOCOL vim.lsp.protocol

モジュール vim.lsp.protocol は、LSP 仕様によって規定された定数と、プロトコル関連オブジェクトを作成するためのヘルパー関数を定義します。 https://github.com/microsoft/language-server-protocol/raw/gh-pages/_specifications/specification-3-14.md
たとえば、vim.lsp.protocol.ErrorCodes では、番号または名前による逆引きが可能です。
vim.lsp.protocol.TextDocumentSyncKind.Full == 1
vim.lsp.protocol.TextDocumentSyncKind[1] == "Full"

LSP ハイライト lsp-highlight

参照ハイライト
vim.lsp.buf.document_highlight() で使用されることを意図したハイライトグループ。
タイプの違いの詳細については、こちらをご覧ください: https://microsoft.github.io/language-server-protocol/specification#textDocument_documentHighlight
hl-LspReferenceText
"text" 参照のハイライトに使用される LspReferenceText hl-LspReferenceRead
"read" 参照のハイライトに使用される LspReferenceRead hl-LspReferenceWrite
"write" 参照のハイライトに使用される LspReferenceWrite hl-LspInlayHint
インレイヒントのハイライトに使用される LspInlayHint
lsp-codelens 機能に関連するハイライトグループ。
hl-LspCodeLens
LspCodeLens codelens の仮想テキストの色付けに使用されます。nvim_buf_set_extmark() を参照してください。
LspCodeLensSeparator hl-LspCodeLensSeparator
2つ以上のコードレンズ間のセパレーターの色付けに使用します。
vim.lsp.handlers.signature_help() に関連するハイライトグループ。
hl-LspSignatureActiveParameter
LspSignatureActiveParameter シグネチャヘルプのアクティブなパラメーターをハイライトするために使用します。 vim.lsp.handlers.signature_help() を参照してください。

LSPセマンティックハイライト lsp-semantic-highlight

利用可能な場合、LSPクライアントはlsp-semantic_tokensを使用してコードをハイライトします。これは、LSPサーバーがソースコードに関する情報を提供できる別の方法です。これはTree-sitterの構文ハイライトに加えて行われることに注意してください。セマンティックハイライトは構文ハイライトを置き換えるものではありません。
サーバーは通常、ソースコード内の識別子ごとに1つのトークンを提供します。トークンには、「function」や「variable」などのtypeと、「readonly」や「deprecated」などの0個以上のmodifierがあります。標準の型と修飾子は、こちらで説明されています:https://microsoft.github.io/language-server-protocol/specification/#textDocument_semanticTokens LSPサーバーは、仕様外の型と修飾子を使用する場合もあります。
LSPクライアントは、各トークンに1つ以上のハイライトを追加します。ハイライトグループは、トークンの型と修飾子から派生します。
型に対して @lsp.type.<type>.<ft>
各修飾子に対して @lsp.mod.<mod>.<ft>
各修飾子に対して @lsp.typemod.<type>.<mod>.<ft> 特定のトークンのハイライトを表示するには、:Inspectを使用します。セマンティックハイライトの外観を変更するには、:hi または nvim_set_hl() を使用します。
hi @lsp.type.function guifg=Yellow        " function names are yellow
hi @lsp.type.variable.lua guifg=Green     " variables in lua are green
hi @lsp.mod.deprecated gui=strikethrough  " deprecated is crossed out
hi @lsp.typemod.function.async guifg=Blue " async functions are blue
vim.hl.priorities.semantic_tokens は、@lsp.type.* ハイライトの優先度です。@lsp.mod.*@lsp.typemod.* ハイライトは、それぞれ1つと2つ高い優先度を持っています。
ハイライトグループをクリアすることで、セマンティックハイライトを無効にできます。
-- Hide semantic highlights for functions
vim.api.nvim_set_hl(0, '@lsp.type.function', {})
-- Hide all semantic highlights
for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do
  vim.api.nvim_set_hl(0, group, {})
end
おそらく、これらは ColorScheme 自動コマンド内に配置する必要があります。
より複雑なハイライトには、LspTokenUpdate および vim.lsp.semantic_tokens.highlight_token() を使用してください。
以下は、Nvimのクエリで使用される標準キャプチャのリストであり、現在のカラースキームに従ってハイライトされています(正確な定義を確認するには、1つで :Inspect を使用してください)。
@lsp.type.class クラス型を宣言または参照する識別子 @lsp.type.comment コメントを表すトークン @lsp.type.decorator デコレーターとアノテーションを宣言または参照する識別子 @lsp.type.enum 列挙型を宣言または参照する識別子 @lsp.type.enumMember 列挙プロパティ、定数、またはメンバーを宣言または参照する識別子 @lsp.type.event イベントプロパティを宣言する識別子 @lsp.type.function 関数を宣言する識別子 @lsp.type.interface インターフェイス型を宣言または参照する識別子 @lsp.type.keyword 言語キーワードを表すトークン @lsp.type.macro マクロを宣言する識別子 @lsp.type.method メンバー関数またはメソッドを宣言する識別子 @lsp.type.modifier 修飾子を表すトークン @lsp.type.namespace 名前空間、モジュール、またはパッケージを宣言または参照する識別子 @lsp.type.number 数値リテラルを表すトークン @lsp.type.operator 演算子を表すトークン @lsp.type.parameter 関数またはメソッドのパラメーターを宣言または参照する識別子 @lsp.type.property メンバープロパティ、メンバーフィールド、またはメンバー変数を宣言または参照する識別子 @lsp.type.regexp 正規表現リテラルを表すトークン @lsp.type.string 文字列リテラルを表すトークン @lsp.type.struct 構造体型を宣言または参照する識別子 @lsp.type.type 上記に含まれない型を宣言または参照する識別子 @lsp.type.typeParameter 型パラメーターを宣言または参照する識別子 @lsp.type.variable ローカル変数またはグローバル変数を宣言または参照する識別子
@lsp.mod.abstract 抽象的な型とメンバー関数 @lsp.mod.async asyncとしてマークされた関数 @lsp.mod.declaration シンボルの宣言 @lsp.mod.defaultLibrary 標準ライブラリの一部であるシンボル @lsp.mod.definition たとえばヘッダーファイルにあるシンボルの定義 @lsp.mod.deprecated 使用すべきではないシンボル @lsp.mod.documentation ドキュメント内のシンボルの出現 @lsp.mod.modification 変数が代入される変数参照 @lsp.mod.readonly 読み取り専用の変数とメンバーフィールド(定数)@lsp.mod.static クラスメンバー(静的メンバー)

イベント lsp-events

LspAttach LspAttach
LSPクライアントがバッファーにアタッチした後。 autocmd-pattern はバッファーの名前です。Luaから使用すると、クライアントIDは "data" テーブルのコールバックに渡されます。例については lsp-config を参照してください。
LspDetach LspDetach
LSPクライアントがバッファーからデタッチする直前。 autocmd-pattern はバッファーの名前です。Luaから使用すると、クライアントIDは "data" テーブルのコールバックに渡されます。例
vim.api.nvim_create_autocmd('LspDetach', {
  callback = function(args)
    -- Get the detaching client
    local client = vim.lsp.get_client_by_id(args.data.client_id)
    -- Remove the autocommand to format the buffer on save, if it exists
    if client.supports_method('textDocument/formatting') then
      vim.api.nvim_clear_autocmds({
        event = 'BufWritePre',
        buffer = args.buf,
      })
    end
  end,
})
LspNotify LspNotify
このイベントは、LSPサーバーに送信された各成功した通知の後にトリガーされます。
Luaから使用すると、client_id、LSPメソッド、およびパラメーターは "data" テーブルに送信されます。例
vim.api.nvim_create_autocmd('LspNotify', {
  callback = function(args)
    local bufnr = args.buf
    local client_id = args.data.client_id
    local method = args.data.method
    local params = args.data.params
    -- do something with the notification
    if method == 'textDocument/...' then
      update_buffer(bufnr)
    end
  end,
})
LspProgress LspProgress
サーバーからの進捗通知を受信した場合。通知は、vim.lsp.Clientprogressリングバッファーからポーリングするか、vim.lsp.status()を使用して集約メッセージを取得できます。
サーバーが「work done progress」を送信する場合、patternkindbeginreport、またはendのいずれか)に設定されます。
Luaから使用すると、イベントにはclient_idparamsプロパティを持つdataテーブルが含まれます。paramsには、サーバーによって送信されたリクエストパラメーターが含まれます(lsp.ProgressParamsを参照)。
autocmd LspProgress * redrawstatus
LspRequest LspRequest
LSPサーバーに送信された各リクエストについて、このイベントは、リクエストのステータスのすべての変更に対してトリガーされます。ステータスは、pendingcomplete、またはcancelのいずれかであり、コールバック関数に渡される "data" テーブルの{type}として送信されます。
最初の要求が送信されたとき({type} == pending)と、LSPサーバーが応答したとき({type} == complete)にトリガーされます。 client.cancel_request(request_id)を使用してキャンセルが要求された場合、このイベントは{type} == cancelでトリガーされます。
Luaから使用すると、クライアントID、リクエストID、およびリクエストは "data" テーブルに送信されます。 {requests} の詳細については、vim.lsp.Client を参照してください。リクエストタイプがcompleteの場合、イベントのコールバックを呼び出した直後に、リクエストはクライアントの保留中のリクエストテーブルから削除されます。例
vim.api.nvim_create_autocmd('LspRequest', {
  callback = function(args)
    local bufnr = args.buf
    local client_id = args.data.client_id
    local request_id = args.data.request_id
    local request = args.data.request
    if request.type == 'pending' then
      -- do something with pending requests
      track_pending(client_id, bufnr, request_id, request)
    elseif request.type == 'cancel' then
      -- do something with pending cancel requests
      track_canceling(client_id, bufnr, request_id, request)
    elseif request.type == 'complete' then
      -- do something with finished requests. this pending
      -- request entry is about to be removed since it is complete
      track_finish(client_id, bufnr, request_id, request)
    end
  end,
})
LspTokenUpdate LspTokenUpdate
表示されているセマンティックトークンがLSPサーバーによって送信または更新されたとき、または既存のトークンが初めて表示されたとき。 autocmd-pattern はバッファーの名前です。Luaから使用すると、トークンとクライアントIDは "data" テーブルのコールバックに渡されます。トークンフィールドはvim.lsp.semantic_tokens.get_at_pos()に記載されています。例
vim.api.nvim_create_autocmd('LspTokenUpdate', {
  callback = function(args)
    local token = args.data.token
    if token.type == 'variable' and not token.modifiers.readonly then
      vim.lsp.semantic_tokens.highlight_token(
        token, args.buf, args.data.client_id, 'MyMutableVariableHighlight'
      )
    end
  end,
})
注: vim.lsp.semantic_tokens.highlight_token() の呼び出し以外のことを行うことは実験的と見なされます。

Luaモジュール:vim.lsp lsp-core

buf_attach_client({bufnr}, {client_id}) vim.lsp.buf_attach_client()
言語サーバーのバッファーを追跡するために必要な textDocument/did… 通知を実装します。
これを呼び出さないと、サーバーはバッファーへの変更について通知されません。
パラメーター
{bufnr} (integer) バッファーハンドル、または現在の場合は 0
{client_id} (integer) クライアントID
戻り値
(boolean) 成功。クライアントが正常にアタッチされた場合は true、それ以外の場合は false
buf_detach_client({bufnr}, {client_id}) vim.lsp.buf_detach_client()
指定されたバッファーからクライアントをデタッチします。注:テキストドキュメント(バッファー)が閉じられたことはサーバーに通知されますが、この通知を無視した場合でも通知を送信できます。
パラメーター
{bufnr} (integer) バッファーハンドル、または現在の場合は 0
{client_id} (integer) クライアントID
buf_is_attached({bufnr}, {client_id}) vim.lsp.buf_is_attached()
特定のクライアントのバッファーがアタッチされているかどうかを確認します。
パラメーター
{bufnr} (integer) バッファーハンドル、または現在の場合は 0
{client_id} (integer) クライアントID
buf_notify({bufnr}, {method}, {params}) vim.lsp.buf_notify()
サーバーに通知を送信します
パラメーター
{bufnr} (integer?) バッファー番号
{method} (string) リクエストメソッドの名前
{params} (any) サーバーに送信する引数
戻り値
(boolean) 成功。クライアントが true を返した場合は true、それ以外の場合は false
vim.lsp.buf_request_all()
buf_request_all({bufnr}, {method}, {params}, {handler}) バッファーにアタッチされているすべてのアクティブなクライアントに非同期リクエストを送信し、結合された結果でhandlerコールバックを実行します。
パラメーター
{bufnr} (integer) バッファーハンドル、または現在の場合は 0。
{method} (string) LSPメソッド名
{params} (table|(fun(client: vim.lsp.Client, bufnr: integer): table?)?) サーバーに送信するパラメーター。パラメーターがクライアントに固有の場合にパラメーターテーブルを返す関数としても渡すことができます。
{handler} (function) すべてのリクエストが完了した後に呼び出されるハンドラー。サーバーの結果は、client_id:result マップとして渡されます。
戻り値
(function) キャンセル。すべてのリクエストをキャンセルする関数。
vim.lsp.buf_request_sync()
buf_request_sync({bufnr}, {method}, {params}, {timeout_ms}) すべてのサーバーにリクエストを送信し、すべての応答を待ちます。
vim.lsp.buf_request_all() を呼び出しますが、結果を待っている間は Nvim をブロックします。パラメーターは vim.lsp.buf_request_all() と同じですが、結果は異なります。最大 {timeout_ms} を待ちます。
パラメーター
{bufnr} (integer) バッファーハンドル、または現在の場合は 0。
{method} (string) LSPメソッド名
{params} (table?) サーバーに送信するパラメーター
{timeout_ms} (integer?, デフォルト: 1000) 結果を待つ最大時間(ミリ秒単位)。
戻り値 (複数)
(table<integer, {error: lsp.ResponseError?, result: any}>?) クライアントIDとリクエスト結果のマップ。 (string?) err タイムアウト、キャンセル、またはエラーの場合、err は失敗理由を説明する文字列で、result は nil になります。
client_is_stopped({client_id}) vim.lsp.client_is_stopped()
クライアントが停止しているかどうかを確認します。
パラメーター
{client_id} (integer)
戻り値
(boolean) stopped クライアントが停止している場合は true、そうでない場合は false。
commands vim.lsp.commands
クライアント側のコマンドのレジストリ。これは、コア言語サーバープロトコル仕様の一部ではないカスタムコマンドを処理するためのプラグインの拡張ポイントです。
レジストリは、キーが一意のコマンド名であり、値が、LSPアクション(コードアクション、コードレンズなど)がコマンドをトリガーした場合に呼び出される関数であるテーブルです。
このレジストリに一致するエントリがないコマンドがLSP応答に含まれている場合、コマンドは workspace/executeCommand を使用してLSPサーバー経由で実行されます。
関数への最初の引数は Command です: コマンドのタイトル: String コマンド: String 引数?: any[]
2番目の引数は、lsp-handlerctx です。
formatexpr({opts}) vim.lsp.formatexpr()
組み込みクライアントと formatexpr 関数の間のインターフェースを提供します。
現在、単一のクライアントのみをサポートしています。これは setlocal formatexpr=v:lua.vim.lsp.formatexpr() または(より一般的には)on_attachvim.bo[bufnr].formatexpr = 'v:lua.vim.lsp.formatexpr(#{timeout_ms:250})' を使用して設定できます。
パラメーター
{opts} (table?) 次のフィールドを持つテーブル
{timeout_ms} (integer, デフォルト: 500ms) フォーマットリクエストのタイムアウト期間。
vim.lsp.get_buffers_by_client_id()
get_buffers_by_client_id({client_id}) client_id にアタッチされたバッファのリストを返します。
パラメーター
{client_id} (integer) クライアントID
戻り値
(integer[]) buffers バッファIDのリスト
get_client_by_id({client_id}) vim.lsp.get_client_by_id()
IDでクライアントを取得します。IDが無効な場合はnilを返します。返されたクライアントはまだ完全に初期化されていない可能性があります。
パラメーター
{client_id} (integer) クライアントID
戻り値
(vim.lsp.Client?) クライアントRPCオブジェクト
get_clients({filter}) vim.lsp.get_clients()
アクティブなクライアントを取得します。
パラメーター
{filter} (table?) 返されるクライアントをフィルタリングするために使用されるキーと値のペア。
{id} (integer) 指定されたIDを持つクライアントのみを返します
{bufnr} (integer) このバッファにアタッチされたクライアントのみを返します
{name} (string) 指定された名前を持つクライアントのみを返します
{method} (string) 指定されたメソッドをサポートするクライアントのみを返します
戻り値
(vim.lsp.Client[]) vim.lsp.Client オブジェクトのリスト
get_log_path() vim.lsp.get_log_path()
LSPクライアントで使用されるログファイルのパスを取得します。
戻り値
(string) ログファイルへのパス
omnifunc({findstart}, {base}) vim.lsp.omnifunc()
'omnifunc' 互換のLSP補完を実装します。
パラメーター
{findstart} (integer) 0または1、動作を決定します
{base} (integer) findstart=0、照合するテキスト
戻り値
(integer|table) {findstart} によって決定されます
findstart=0: 補完が開始される列、または -2 または -3
findstart=1: 一致するリスト (実際には complete() を呼び出すだけです)
set_log_level({level}) vim.lsp.set_log_level()
LSPロギングのグローバルログレベルを設定します。
名前によるレベル: "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF"
レベル番号は "TRACE" を0として開始します
逆引きには lsp.log_levels を使用します。
パラメーター
{level} (integer|string) 大文字と小文字を区別しないレベル名または番号
以下も参照
start({config}, {opts}) vim.lsp.start()
新しいLSPクライアントを作成して言語サーバーを起動するか、nameroot_dir に一致するものが既に見つかっている場合は、既に実行中のクライアントを再利用します。現在のバッファをクライアントにアタッチします。
vim.lsp.start({
   name = 'my-server-name',
   cmd = {'name-of-language-server-executable'},
   root_dir = vim.fs.root(0, {'pyproject.toml', 'setup.py'}),
})
利用可能なすべてのオプションについては、vim.lsp.start_client() を参照してください。最も重要なのは次のとおりです。
name LSPクライアントの任意の名前。言語サーバーごとに一意である必要があります。
cmd コマンド文字列[] または関数、vim.lsp.start_client() で説明されています。
root_dir プロジェクトルートへのパス。デフォルトでは、これは既存のクライアントを再利用するかどうかを決定するために使用されます。上記の例では、vim.fs.root() を使用して、現在のディレクトリから上に向かってファイルシステムを走査し、pyproject.toml または setup.py ファイルが見つかるまでルートを検出します。
workspace_folders 言語サーバーで使用されるプロジェクトルートフォルダを指定する { uri:string, name: string } テーブルのリスト。nil の場合、便宜上、プロパティは root_dir から派生します。
言語サーバーはこの情報を使用して、プロジェクトの依存関係のようなメタデータを検出し、プロジェクトフォルダ内のコンテンツにインデックスを付ける傾向があります。
言語サーバーが処理できる言語でのみ起動されるようにするには、FileType autocmd内で vim.lsp.start() を呼び出すようにしてください。:aunvim_create_autocmd() を使用するか、呼び出しを ftplugin/<filetype_name>.lua に配置します ( ftplugin-name を参照)。
パラメーター
{config} (vim.lsp.ClientConfig) サーバーの構成。vim.lsp.ClientConfig を参照してください。
{opts} (table?) オプションのキーワード引数
{reuse_client} (fun(client: vim.lsp.Client, config: vim.lsp.ClientConfig): boolean) クライアントを再利用するかどうかを決定するために使用される述語。実行中のすべてのクライアントで使用されます。デフォルトの実装では、名前と root_dir が一致する場合にクライアントを再利用します。
{bufnr} (integer) クライアントの起動または再利用時にアタッチするバッファハンドル (現在のバッファの場合は0)。
{silent} (boolean) LSPサーバーの起動に失敗した場合のエラー報告を抑制します (デフォルトは false)。
戻り値
(integer?) client_id
start_client({config}) vim.lsp.start_client()
指定された構成でクライアントを起動および初期化します。
パラメーター
{config} (vim.lsp.ClientConfig) サーバーの構成。vim.lsp.ClientConfig を参照してください。
戻り値 (複数)
(integer?) client_id vim.lsp.get_client_by_id() 注: クライアントは完全に初期化されていない可能性があります。クライアントが初期化されたらアクションを実行するには、on_init を使用してください。(string?) エラーメッセージ(ある場合)
status() vim.lsp.status()
すべてのクライアントからの最新の進捗メッセージを消費し、それらを文字列としてフォーマットします。クライアントがない場合、または新しいメッセージがない場合は空です。
戻り値
(string)
stop_client({client_id}, {force}) vim.lsp.stop_client()
クライアントを停止します。
vim.lsp.Client オブジェクトで stop() 関数を使用することもできます。すべてのクライアントを停止するには
vim.lsp.stop_client(vim.lsp.get_clients())
デフォルトでは、このクライアントで既に停止がリクエストされていない限り、サーバーにシャットダウンを要求し、その後、強制シャットダウンが試行されます。
パラメーター
{client_id} (integer|integer[]|vim.lsp.Client[]) ID、IDのリスト、または vim.lsp.Client オブジェクトのリスト
{force} (boolean?) 強制的にシャットダウン
tagfunc({pattern}, {flags}) vim.lsp.tagfunc()
組み込みクライアントと 'tagfunc' の間のインターフェースを提供します。
通常モードのコマンド(例:CTRL-])で使用すると、カーソル下のタグを見つけるために "textDocument/definition" LSPメソッドを呼び出します。それ以外の場合は、"workspace/symbol" を使用します。LSPサーバーから結果が返されない場合は、組み込みのタグを使用するようにフォールバックします。
パラメーター
{pattern} (string) ワークスペースシンボルを見つけるために使用されるパターン
{flags} (string) tag-function を参照してください
戻り値
(table[]) tags 一致するタグのリスト

Luaモジュール: vim.lsp.client lsp-client

フィールド
{id} (integer) クライアントに割り当てられたID。
{name} (string) 作成時に名前が指定されている場合は、それが使用されます。それ以外の場合は、クライアントIDのみです。これはログとメッセージに使用されます。
{rpc} (vim.lsp.rpc.PublicClient) クライアントとの低レベルな対話のためのRPCクライアントオブジェクト。vim.lsp.rpc.start() を参照してください。
{offset_encoding} (string) サーバーとの通信に使用されるエンコーディング。テキストがサーバーに送信される前に、configon_init メソッドでこれを変更できます。
{handlers} (table<string,lsp.Handler>) lsp-handler で説明されているように、クライアントで使用されるハンドラー。
{requests} (table<integer,{ type: string, bufnr: integer, method: string}>) サーバーに送信中の現在の保留中のリクエスト。エントリは、キーがリクエストIDであり、値が typebufnr、および method キーと値のペアを持つテーブルであるキーと値のペアです。type は、アクティブなリクエストの場合は "pending"、キャンセルリクエストの場合は "cancel" になります。サーバーから応答を受信すると、LspRequest autocmd を実行中に一時的に "complete" になります。
{config} (vim.lsp.ClientConfig) ユーザーが vim.lsp.start_client() に渡したテーブルのコピー。vim.lsp.ClientConfig を参照してください。
{server_capabilities} (lsp.ServerCapabilities?) サーバーの機能について説明する、initialize で送信されたサーバーからの応答。
{progress} (vim.lsp.Client.Progress) サーバーから送信された進捗メッセージを含むリングバッファ (vim.ringbuf()) 。vim.lsp.Client.Progress を参照してください。
{initialized} (true?)
{workspace_folders} (lsp.WorkspaceFolder[]?) サーバーの起動時にクライアントで構成されたワークスペースフォルダ。このプロパティは、クライアントがワークスペースフォルダをサポートしている場合にのみ使用できます。クライアントがワークスペースフォルダをサポートしているが構成されていない場合は、null になる可能性があります。
{root_dir} (string?)
{attached_buffers} (table<integer,true>)
{commands} (table<string,fun(command: lsp.Command, ctx: table)>) LSPアクション(コードアクション、コードレンズなど)がコマンドをトリガーした場合に呼び出される関数へのコマンド名のテーブル。クライアントコマンドは、グローバルコマンドレジストリよりも優先されます。
{settings} (table) 言語サーバー固有の設定を含むマップ。これらは、workspace/configuration を介してリクエストされた場合、言語サーバーに返されます。キーは大文字と小文字を区別します。
{flags} (table) クライアントのフラグを含むテーブル。現在の(実験的な)フラグは次のとおりです。
{allow_incremental_sync} (boolean, デフォルト: true) バッファ編集にインクリメンタル同期を使用することを許可します
{debounce_text_changes} (integer, デフォルト: 150) didChange 通知をサーバーへ送信する際の遅延時間(ミリ秒単位)。nil の場合は遅延は発生しません。
{exit_timeout} (integer|false, デフォルト: false) "shutdown" リクエストを送信後、サーバーがクリーンに終了するのを待つ時間(ミリ秒単位)。この時間が経過すると kill -15 を送信します。false が設定された場合、nvim はサーバーに "shutdown" リクエストを送信後、直ちに終了します。
{get_language_id} (fun(bufnr: integer, filetype: string): string)
{capabilities} (lsp.ClientCapabilities) クライアント(エディターまたはツール)が提供する capabilities。
{dynamic_capabilities} (lsp.DynamicCapabilities)
{request} (fun(method: string, params: table?, handler: lsp.Handler?, bufnr: integer?): boolean, integer?) サーバーにリクエストを送信します。これは、{client.rpc.request} を薄くラップしたもので、追加のチェックが含まれています。{handler} が指定されておらず、対応するグローバルハンドラーもない場合、エラーが発生します。返り値: {status}, {client_id}{status} は、通知が成功したかどうかを示す boolean 値です。false の場合は常に false になります (クライアントがシャットダウンしたことを意味します)。{status}true の場合、関数は 2 つ目の結果として {request_id} を返します。この request_idclient.cancel_request(request_id) で使用してリクエストをキャンセルできます。
{request_sync} (fun(method: string, params: table?, timeout_ms: integer?, bufnr: integer): {err: lsp.ResponseError?, result:any}?, string?) err # dict
{notify} (fun(method: string, params: table?): boolean) LSP サーバーに通知を送信します。返り値: 通知が成功したかどうかを示す boolean 値。false の場合は常に false になります (クライアントがシャットダウンしたことを意味します)。
{cancel_request} (fun(id: integer): boolean) 指定されたリクエスト ID のリクエストをキャンセルします。返り値: notify() と同じ。
{stop} (fun(force?: boolean)) クライアントを停止します。オプションで強制停止できます。デフォルトでは、サーバーに強制停止せずにシャットダウンを要求します。以前にシャットダウンが要求されたクライアントの停止を要求すると、自動的にエスカレートして強制シャットダウンします。
{on_attach} (fun(bufnr: integer)) クライアントの設定で定義されている場合、クライアントの on_attach 関数を実行します。バッファローカルな設定に役立ちます。
{supports_method} (fun(method: string, opts?: {bufnr: integer?}): boolean) クライアントが指定されたメソッドをサポートしているかどうかを確認します。仕様外の未知のメソッドに対しては常に true を返します。{opts} はオプションの {bufnr?: integer} テーブルです。一部の言語サーバーの機能は、ファイル固有である場合があります。
{is_stopped} (fun(): boolean) クライアントが停止しているかどうかを確認します。返り値: クライアントが完全に停止している場合は true。
{exec_cmd} (fun(self: vim.lsp.Client, command: lsp.Command, context: {bufnr?: integer}?, handler: lsp.Handler?)) LSP コマンドを実行します。クライアントコマンド関数(利用可能な場合)経由、または workspace/executeCommand(サーバーでサポートされている場合)経由。
フィールド
{pending} (table<lsp.ProgressToken,lsp.LSPAny>)
フィールド
{cmd} (string[]|fun(dispatchers: vim.lsp.rpc.Dispatchers): vim.lsp.rpc.PublicClient) 言語サーバーを起動するコマンド文字列の配列 ( jobstart() と同様に扱われます。絶対パスであるか、$PATH 上にある必要があります。 "~" のようなシェル構文は展開されません)、または RPC クライアントを作成する関数。関数は dispatchers テーブルを受け取り、メンバー関数 request, notify, is_closing, terminate を持つテーブルを返します。 vim.lsp.rpc.request(), vim.lsp.rpc.notify() を参照してください。TCP の場合、組み込みの RPC クライアントファクトリーがあります: vim.lsp.rpc.connect()
{cmd_cwd} (string, デフォルト: cwd) cmd プロセスを起動するディレクトリ。root_dir とは関係ありません。
{cmd_env} (table) スポーン時に LSP に渡す環境フラグ。テーブルを使用して指定する必要があります。文字列以外の値は文字列に変換されます。例:
{ PORT = 8080; HOST = "0.0.0.0"; }
{detached} (boolean, デフォルト: true) Nvim とは別のプロセスグループで実行するようにサーバープロセスをデーモン化します。Nvim は終了時にプロセスをシャットダウンしますが、Nvim が正常に終了しない場合、孤立したサーバープロセスが残る可能性があります。
{workspace_folders} (lsp.WorkspaceFolder[]) 言語サーバーに渡されるワークスペースフォルダーのリスト。下位互換性のため、rootUri および rootPath は、このリストの最初のワークスペースフォルダーから派生します。LSP 仕様の workspaceFolders を参照してください。
{capabilities} (lsp.ClientCapabilities) vim.lsp.protocol.make_client_capabilities() で定義されたデフォルトの capabilities をオーバーライドするマップ。初期化時に言語サーバーに渡されます。ヒント: make_client_capabilities() を使用し、その結果を変更します。
注意: 空の辞書を送信するには、vim.empty_dict() を使用してください。そうしないと、配列としてエンコードされます。
{handlers} (table<string,function>) 言語サーバーのメソッド名を lsp-handler にマップするテーブル。
{settings} (table) 言語サーバー固有の設定を持つマップ。vim.lsp.Client{settings} を参照してください。
{commands} (table<string,fun(command: lsp.Command, ctx: table)>) クライアント側のコマンド文字列をユーザー定義関数にマップするテーブル。start_client に渡されるコマンドは、グローバルコマンドレジストリよりも優先されます。各キーは一意のコマンド名である必要があり、値は、LSP アクション (コードアクション、コードレンズなど) がコマンドをトリガーした場合に呼び出される関数です。
{init_options} (table) 初期化リクエストで initializationOptions として渡す値。LSP 仕様の initialize を参照してください。
{name} (string, デフォルト: client-id) ログメッセージでの名前。
{get_language_id} (fun(bufnr: integer, filetype: string): string) 文字列としての言語 ID。デフォルトはファイルタイプです。
{offset_encoding} ('utf-8'|'utf-16'|'utf-32') LSP サーバーが予期するエンコーディング。クライアントはこれが正しいかどうかを検証しません。
{on_error} (fun(code: integer, err: string)) クライアント操作がエラーをスローしたときに呼び出されるコールバック。code はエラーを説明する数値です。エラーの種類に応じて、他の引数が渡される場合があります。可能なエラーについては、vim.lsp.rpc.client_errors を参照してください。人間が理解しやすい名前を取得するには、vim.lsp.rpc.client_errors[code] を使用してください。
{before_init} (fun(params: lsp.InitializeParams, config: vim.lsp.ClientConfig)) LSP の "initialize" フェーズの前に呼び出されるコールバック。ここで、params にはサーバーに送信されるパラメーターが含まれ、configvim.lsp.start_client() に渡された構成です。これをを使用して、パラメーターを送信前に変更できます。
{on_init} (elem_or_list<fun(client: vim.lsp.Client, initialize_result: lsp.InitializeResult)>) LSP の "initialize" の後に呼び出されるコールバック。resultcapabilities およびサーバーが送信する可能性のあるその他のもののテーブルです。たとえば、clangd は、capabilities.offsetEncoding が送信された場合、initialize_result.offsetEncoding を送信します。通知が送信される前に、ここで client.offset_encoding のみを変更できます。
{on_exit} (elem_or_list<fun(code: integer, signal: integer, client_id: integer)>) クライアントの終了時に呼び出されるコールバック。
code: プロセスの終了コード
signal: 終了に使用されたシグナルを表す番号 (存在する場合)
client_id: クライアントハンドル
{on_attach} (elem_or_list<fun(client: vim.lsp.Client, bufnr: integer)>) クライアントがバッファにアタッチされたときに呼び出されるコールバック。
{trace} ('off'|'messages'|'verbose', デフォルト: "off") 初期化リクエストで言語サーバーに直接渡されます。無効/空の値は
{flags} (table) クライアントのフラグを含むテーブル。現在の(実験的な)フラグは次のとおりです。
{allow_incremental_sync} (boolean, デフォルト: true) バッファ編集にインクリメンタル同期を使用することを許可します
{debounce_text_changes} (integer, デフォルト: 150) didChange 通知をサーバーへ送信する際の遅延時間(ミリ秒単位)。nil の場合は遅延は発生しません。
{exit_timeout} (integer|false, デフォルト: false) "shutdown" リクエストを送信後、サーバーがクリーンに終了するのを待つ時間(ミリ秒単位)。この時間が経過すると kill -15 を送信します。false が設定された場合、nvim はサーバーに "shutdown" リクエストを送信後、直ちに終了します。
{root_dir} (string) LSP サーバーが初期化時に workspaceFolders、rootUri、および rootPath のベースとするディレクトリ。
Client:exec_cmd({command}, {context}, {handler}) Client:exec_cmd()
LSP コマンドを実行します。クライアントコマンド関数 (利用可能な場合) 経由、または workspace/executeCommand (サーバーでサポートされている場合) 経由。
パラメーター
{command} (lsp.Command)
{context} ({bufnr?: integer}?)
{handler} (lsp.Handler?) サーバーコマンドの場合のみ呼び出されます

Lua モジュール: vim.lsp.buf lsp-buf

フィールド
{on_list} (fun(t: vim.lsp.LocationOpts.OnList)) デフォルトのハンドラーを置き換えるリストハンドラー。空でない結果に対して呼び出されます。このテーブルは setqflist() または setloclist() と共に使用できます。例:
local function on_list(options)
  vim.fn.setqflist({}, ' ', options)
  vim.cmd.cfirst()
end
vim.lsp.buf.definition({ on_list = on_list })
vim.lsp.buf.references(nil, { on_list = on_list })
qflist の代わりに loclist を優先する場合
vim.lsp.buf.definition({ loclist = true })
vim.lsp.buf.references(nil, { loclist = true })
{loclist} (boolean)
フィールド
{reuse_win} (boolean) バッファがすでに開いている場合は、既存のウィンドウにジャンプします。
フィールド
{items} (table[]) setqflist-what のように構造化されています
{title} (string) リストのタイトル。
{context} (table) lsp-handler からの ctx
フィールド
{silent} (boolean)
フィールド
{silent} (boolean)
vim.lsp.buf.add_workspace_folder()
add_workspace_folder({workspace_folder}) 指定されたパスにあるフォルダをワークスペースフォルダに追加します。{path} が指定されていない場合は、input() を使用してパスをユーザーに求めるプロンプトが表示されます。
パラメーター
{workspace_folder} (string?)
clear_references() vim.lsp.buf.clear_references()
現在のバッファからドキュメントのハイライトを削除します。
code_action({opts}) vim.lsp.buf.code_action()
現在のカーソル位置で利用可能なコードアクションを選択します。
パラメーター
{opts} (table?) 次のフィールドを持つテーブル
{context} (lsp.CodeActionContext) LSP 仕様の CodeActionContext に対応します
{diagnostics} (table) LSP Diagnostic[]。指定されていない場合は、現在の位置から推測されます。
{only} (table) コードアクションをフィルター処理するために使用される LSP CodeActionKind のリスト。ほとんどの言語サーバーは、refactorquickfix などの値をサポートしています。
{triggerKind} (integer) コードアクションが要求された理由。
{filter} (fun(x: lsp.CodeAction|lsp.Command):boolean) CodeAction を受け取り boolean を返す述語。
{apply} (boolean) true に設定され、(フィルタリング後) 残りのアクションが 1 つしかない場合、ユーザーに問い合わせることなくアクションが適用されます。
{range} ({start: integer[], end: integer[]}) コードアクションをリクエストする範囲。ビジュアルモードの場合、これはアクティブな選択範囲がデフォルトになります。テーブルには、マークのようなインデックス付けを使用する {row,col} タプルを持つ start キーと end キーが含まれている必要があります。api-indexing を参照してください
declaration({opts}) vim.lsp.buf.declaration()
カーソル下のシンボルの宣言にジャンプします。
ノート
多くのサーバーはこのメソッドを実装していません。一般的には、代わりに vim.lsp.buf.definition() を参照してください。
パラメーター
{opts} (vim.lsp.LocationOpts?) vim.lsp.LocationOpts を参照してください。
definition({opts}) vim.lsp.buf.definition()
カーソル下のシンボルの定義へジャンプします。
パラメーター
{opts} (vim.lsp.LocationOpts?) vim.lsp.LocationOpts を参照してください。
document_highlight() vim.lsp.buf.document_highlight()
現在のテキストドキュメント位置のドキュメントハイライトを解決するために、サーバーにリクエストを送信します。このリクエストは、キーマッピングや CursorHold などのイベントによってトリガーできます。例えば、以下のようにします。
autocmd CursorHold  <buffer> lua vim.lsp.buf.document_highlight()
autocmd CursorHoldI <buffer> lua vim.lsp.buf.document_highlight()
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
注意: vim.lsp.buf.document_highlight() を使用するには、以下のハイライトグループが定義されている必要があります。定義されていない場合、実際のハイライトは表示されません。 hl-LspReferenceText hl-LspReferenceRead hl-LspReferenceWrite
document_symbol({opts}) vim.lsp.buf.document_symbol()
現在のバッファ内のすべてのシンボルをクイックフィックスウィンドウにリストします。
パラメーター
{opts} (vim.lsp.ListOpts?) vim.lsp.ListOpts を参照してください。
format({opts}) vim.lsp.buf.format()
アタッチされた(オプションでフィルタリングされた)言語サーバークライアントを使用してバッファをフォーマットします。
パラメーター
{opts} (table?) 次のフィールドを持つテーブル
{formatting_options} (table) FormattingOptionsを指定するために使用できます。指定されていないオプションのいくつかは、現在のNvimオプションから自動的に導出されます。https://microsoft.github.io/language-server-protocol/specification/#formattingOptions を参照してください。
{timeout_ms} (integer, デフォルト: 1000) フォーマットリクエストをブロックする時間(ミリ秒単位)。async=trueの場合は効果がありません。
{bufnr} (integer, デフォルト: 現在のバッファ) 指定されたバッファにアタッチされたクライアントにフォーマットを制限します。
{filter} (fun(client: vim.lsp.Client): boolean?) クライアントをフィルタリングするために使用される述語。クライアントを引数として受け取り、ブール値を返す必要があります。述語に一致するクライアントが含まれます。例:
-- Never request typescript-language-server for formatting
vim.lsp.buf.format {
  filter = function(client) return client.name ~= "tsserver" end
}
{async} (boolean, デフォルト: false) trueの場合、メソッドはブロックしません。非同期でフォーマット中にバッファを編集すると、予期しない変更が発生する可能性があります。
{id} (integer) このフィールドに一致するID (client.id)を持つクライアントにフォーマットを制限します。
{name} (string) このフィールドに一致する名前 (client.name)を持つクライアントにフォーマットを制限します。
{range} ({start:[integer,integer],end:[integer, integer]}|{start:[integer,integer],end:[integer,integer]}[], デフォルト: ビジュアルモードでの現在の選択範囲、他のモードでは nil、バッファ全体をフォーマット) フォーマットする範囲。テーブルには、(1,0)インデックスを使用した {row,col} タプルを持つ startend キーが含まれている必要があります。また、上記のように start キーと end キーを含むテーブルのリストであることもできます。その場合は textDocument/rangesFormatting のサポートが必要です。
hover({config}) vim.lsp.buf.hover()
カーソル下のシンボルに関するホバー情報をフローティングウィンドウに表示します。ウィンドウはカーソル移動時に閉じられます。関数を2回呼び出すと、フローティングウィンドウにジャンプします(したがって、デフォルトでは "KK" でホバーウィンドウを開いてフォーカスします)。フローティングウィンドウでは、"q" でウィンドウを閉じる以外は、通常のすべてのコマンドとマッピングを使用できます。他のバッファと同様にコンテンツをスクロールできます。
パラメーター
{config} (vim.lsp.buf.hover.Opts?) vim.lsp.buf.hover.Opts を参照してください。
implementation({opts}) vim.lsp.buf.implementation()
カーソル下のシンボルのすべての実装をクイックフィックスウィンドウにリストします。
パラメーター
{opts} (vim.lsp.LocationOpts?) vim.lsp.LocationOpts を参照してください。
incoming_calls() vim.lsp.buf.incoming_calls()
クイックフィックスウィンドウにカーソル下のシンボルのすべての呼び出し元をリストします。シンボルが複数の項目に解決できる場合、ユーザーはinputlist()でいずれかを選択できます。
list_workspace_folders() vim.lsp.buf.list_workspace_folders()
ワークスペースフォルダをリストします。
outgoing_calls() vim.lsp.buf.outgoing_calls()
クイックフィックスウィンドウにカーソル下のシンボルによって呼び出されるすべての項目をリストします。シンボルが複数の項目に解決できる場合、ユーザーはinputlist()でいずれかを選択できます。
references({context}, {opts}) vim.lsp.buf.references()
カーソル下のシンボルのすべての参照をクイックフィックスウィンドウにリストします。
パラメーター
{context} (table?) リクエストのコンテキスト
{opts} (vim.lsp.ListOpts?) vim.lsp.ListOpts を参照してください。
vim.lsp.buf.remove_workspace_folder()
remove_workspace_folder({workspace_folder}) パスにあるフォルダをワークスペースフォルダから削除します。 {path} が指定されていない場合、ユーザーは input() を使用してパスの入力を求められます。
パラメーター
{workspace_folder} (string?)
rename({new_name}, {opts}) vim.lsp.buf.rename()
カーソル下のシンボルへのすべての参照を名前変更します。
パラメーター
{new_name} (string?) 指定されていない場合、ユーザーは vim.ui.input() を使用して新しい名前の入力を求められます。
{opts} (table?) 追加のオプション
{filter} (fun(client: vim.lsp.Client): boolean?) クライアントをフィルタリングするために使用される述語。クライアントを引数として受け取り、ブール値を返す必要があります。述語に一致するクライアントが含まれます。
{name} (string) 名前変更に使用するクライアントを、client.nameがこのフィールドに一致するものに制限します。
{bufnr} (integer) (デフォルト: 現在のバッファ)
signature_help({config}) vim.lsp.buf.signature_help()
カーソル下のシンボルの署名情報をフローティングウィンドウに表示します。
パラメーター
{config} (vim.lsp.buf.signature_help.Opts?) vim.lsp.buf.signature_help.Opts を参照してください。
type_definition({opts}) vim.lsp.buf.type_definition()
カーソル下のシンボルの型の定義へジャンプします。
パラメーター
{opts} (vim.lsp.LocationOpts?) vim.lsp.LocationOpts を参照してください。
typehierarchy({kind}) vim.lsp.buf.typehierarchy()
クイックフィックスウィンドウに、カーソル下のシンボルのすべてのサブタイプまたはスーパータイプをリストします。シンボルが複数の項目に解決できる場合、ユーザーはvim.ui.select()を使用して1つを選択できます。
パラメーター
{kind} ("subtypes"|"supertypes")
workspace_symbol({query}, {opts}) vim.lsp.buf.workspace_symbol()
現在のワークスペース内のすべてのシンボルをクイックフィックスウィンドウにリストします。
リストは {query} に対してフィルタリングされます。引数が呼び出しから省略された場合、ユーザーはコマンドラインで文字列を入力するように求められます。空の文字列は、フィルタリングが行われないことを意味します。
パラメーター
{query} (string?) オプション
{opts} (vim.lsp.ListOpts?) vim.lsp.ListOpts を参照してください。

Luaモジュール: vim.lsp.diagnostic lsp-diagnostic

from({diagnostics}) vim.lsp.diagnostic.from()
入力された vim.Diagnostic を LSP 診断に変換します。
パラメーター
{diagnostics} (vim.Diagnostic[])
戻り値
(lsp.Diagnostic[])
vim.lsp.diagnostic.get_namespace()
get_namespace({client_id}, {is_pull}) LSPクライアントに関連付けられた診断の名前空間 vim.diagnostic を取得します。
パラメーター
{client_id} (integer) LSPクライアントのID
{is_pull} (boolean?) 名前空間がプルクライアント用かプッシュクライアント用か。デフォルトはプッシュです
vim.lsp.diagnostic.on_diagnostic()
on_diagnostic({_}, {result}, {ctx}) メソッド "textDocument/diagnostic" のための lsp-handler
設定オプションについては、vim.diagnostic.config()を参照してください。
パラメーター
{result} (lsp.DocumentDiagnosticReport)
{ctx} (lsp.HandlerContext)
vim.lsp.diagnostic.on_publish_diagnostics()
on_publish_diagnostics({_}, {result}, {ctx}) メソッド "textDocument/publishDiagnostics" のための lsp-handler
設定オプションについては、vim.diagnostic.config()を参照してください。
パラメーター
{result} (lsp.PublishDiagnosticsParams)
{ctx} (lsp.HandlerContext)

Luaモジュール: vim.lsp.codelens lsp-codelens

clear({client_id}, {bufnr}) vim.lsp.codelens.clear()
レンズをクリアします。
パラメーター
{client_id} (integer?) client_idでフィルタリングします。nilの場合はすべてのクライアント
{bufnr} (integer?) バッファでフィルタリングします。nilの場合はすべてのバッファ、0の場合は現在のバッファ
display({lenses}, {bufnr}, {client_id}) vim.lsp.codelens.display()
仮想テキストを使用してレンズを表示します
パラメーター
{lenses} (lsp.CodeLens[]?) 表示するレンズ
{bufnr} (integer)
{client_id} (integer)
get({bufnr}) vim.lsp.codelens.get()
指定されたバッファのすべてのレンズを返します
パラメーター
{bufnr} (integer) バッファ番号。現在のバッファには0を使用できます。
戻り値
(lsp.CodeLens[])
on_codelens({err}, {result}, {ctx}) vim.lsp.codelens.on_codelens()
メソッド textDocument/codeLens のための lsp-handler
パラメーター
{err} (lsp.ResponseError?)
{result} (lsp.CodeLens[])
{ctx} (lsp.HandlerContext)
refresh({opts}) vim.lsp.codelens.refresh()
レンズをリフレッシュします。
これは、autocmdまたはキーマップを使用してトリガーすることをお勧めします。
autocmd BufEnter,CursorHold,InsertLeave <buffer> lua vim.lsp.codelens.refresh({ bufnr = 0 })
パラメーター
{opts} (table?) オプションフィールド
{bufnr} (integer?) バッファでフィルタリングします。nilの場合はすべてのバッファ、0の場合は現在のバッファ
run() vim.lsp.codelens.run()
現在の行のコードレンズを実行します
save({lenses}, {bufnr}, {client_id}) vim.lsp.codelens.save()
特定のバッファとクライアントのレンズを保存します。
パラメーター
{lenses} (lsp.CodeLens[]?) 保存するレンズ
{bufnr} (integer)
{client_id} (integer)

Luaモジュール: vim.lsp.completion lsp-completion

フィールド
{autotrigger} (boolean) デフォルト: false。 trueの場合、サーバーのtriggerCharactersに基づいて補完が自動的にトリガーされます。
{convert} (fun(item: lsp.CompletionItem): table) LSPのCompletionItemをcomplete-itemsに変換します。
vim.lsp.completion.enable()
enable({enable}, {client_id}, {bufnr}, {opts}) 指定されたバッファ内の指定された言語クライアントからの補完を有効または無効にします。
パラメーター
{enable} (boolean) 有効にする場合はtrue、無効にする場合はfalse
{client_id} (integer) クライアントID
{bufnr} (integer) バッファハンドル。現在のバッファの場合は0
{opts} (vim.lsp.completion.BufferOpts?) vim.lsp.completion.BufferOptsを参照してください。
trigger() vim.lsp.completion.trigger()
現在のバッファでLSP補完をトリガーします。

Luaモジュール: vim.lsp.inlay_hint lsp-inlay_hint

enable({enable}, {filter}) vim.lsp.inlay_hint.enable()
{filter}された範囲のインレイヒントを有効または無効にします。
「トグル」するには、is_enabled()の逆を渡します
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
属性
バージョン: 0.10.0以降
パラメーター
{enable} (boolean?) 有効にする場合はtrue/nil、無効にする場合はfalse
{filter} (table?) オプションのフィルタ kwargs、またはすべての場合はnil
{bufnr} (integer?) バッファ番号。現在のバッファの場合は0、またはすべての場合はnil。
get({filter}) vim.lsp.inlay_hint.get()
バッファまたは範囲によって(オプションで)制限されたインレイヒントのリストを取得します。
使用例
local hint = vim.lsp.inlay_hint.get({ bufnr = 0 })[1] -- 0 for current buffer
local client = vim.lsp.get_client_by_id(hint.client_id)
local resp = client.request_sync('inlayHint/resolve', hint.inlay_hint, 100, 0)
local resolved_hint = assert(resp and resp.result, resp.err)
vim.lsp.util.apply_text_edits(resolved_hint.textEdits, 0, client.encoding)
location = resolved_hint.label[1].location
client.request('textDocument/hover', {
  textDocument = { uri = location.uri },
  position = location.range.start,
})
属性
バージョン: 0.10.0以降
パラメーター
{filter} (table?) オプションのフィルタ kwargs
{bufnr} (integer?)
{range} (lsp.Range?)
戻り値
(table[]) 次のフィールドを持つオブジェクトのリスト
{bufnr} (integer)
{client_id} (integer)
{inlay_hint} (lsp.InlayHint)
is_enabled({filter}) vim.lsp.inlay_hint.is_enabled()
{filter}された範囲でインレイヒントが有効になっているかどうかを照会します
属性
バージョン: 0.10.0以降
パラメーター
{filter} (table?) オプションのフィルタ kwargs、またはすべての場合はnil
{bufnr} (integer?) バッファ番号。現在のバッファの場合は0、またはすべての場合はnil。
戻り値
(boolean)

Luaモジュール: vim.lsp.semantic_tokens lsp-semantic_tokens

force_refresh({bufnr}) vim.lsp.semantic_tokens.force_refresh()
すべてのセマンティックトークンの更新を強制します。
バッファが現在セマンティックトークン強調表示でアクティブな場合にのみ効果があります(vim.lsp.semantic_tokens.start()が呼び出されている場合)。
パラメーター
{bufnr} (integer?) バッファでフィルタリングします。nilの場合はすべてのバッファ、0の場合は現在のバッファ。
vim.lsp.semantic_tokens.get_at_pos()
get_at_pos({bufnr}, {row}, {col}) 指定された位置にあるセマンティックトークンを返します。引数なしで呼び出された場合、カーソルの下にあるトークンを返します。
パラメーター
{bufnr} (integer?) バッファ番号(現在のバッファの場合は0、デフォルト)
{row} (integer?) 行の位置 (デフォルトはカーソル位置)
{col} (integer?) 列の位置 (デフォルトはカーソル位置)
戻り値
(table?) 位置にあるトークンのリスト。各トークンには次のフィールドがあります
line (integer) 行番号、0ベース
start_col (integer) 開始列、0ベース
end_col (integer) 終了列、0ベース
type (string) トークンタイプ(文字列)、例: "variable"
modifiers (table) トークン修飾子のセット。例: { static = true, readonly = true }
client_id (integer)
vim.lsp.semantic_tokens.highlight_token()
highlight_token({token}, {bufnr}, {client_id}, {hl_group}, {opts}) セマンティックトークンを強調表示します。
セマンティックトークンに特定の強調表示グループの拡張マークを適用します。マークは、LSPが更新されたトークンを送信するなど、適切なときにセマンティックトークンエンジンによって削除されます。この関数は、LspTokenUpdateコールバック内で使用することを目的としています。
パラメーター
{token} (table) LspTokenUpdateargs.data.tokenとして見つかったセマンティックトークン
{bufnr} (integer) 強調表示するバッファ。現在のバッファの場合は0
{client_id} (integer) vim.lsp.ClientのID
{hl_group} (string) 強調表示グループ名
{opts} (table?) オプションパラメータ
{priority} (integer, デフォルト: vim.hl.priorities.semantic_tokens + 3) 適用される拡張マークの優先度。
start({bufnr}, {client_id}, {opts}) vim.lsp.semantic_tokens.start()
指定されたクライアントを使用して、指定されたバッファのセマンティックトークン強調表示エンジンを開始します。クライアントはすでにバッファにアタッチされている必要があります。
注: これは現在、vim.lsp.buf_attach_client()によって自動的に呼び出されます。それをサポートするサーバーでのセマンティック強調表示をオプトアウトするには、LspAttachコールバックまたは構成のon_attachコールバックで、クライアントの{server_capabilities}からsemanticTokensProviderテーブルを削除できます。
client.server_capabilities.semanticTokensProvider = nil
パラメーター
{bufnr} (integer) バッファ番号。現在のバッファの場合は0
{client_id} (integer) vim.lsp.ClientのID
{opts} (table?) オプションのキーワード引数
debounce (integer, デフォルト: 200): 指定されたミリ秒数だけサーバーへのトークンリクエストをデバウンスします。
stop({bufnr}, {client_id}) vim.lsp.semantic_tokens.stop()
指定されたクライアントを使用して、指定されたバッファのセマンティックトークン強調表示エンジンを停止します。
注: これは、start()の一部として設定されるLspDetach自動コマンドによって自動的に呼び出されるため、LSPクライアントをバッファから完全に切り離さずにセマンティックトークンエンジンを手動で解除する場合にのみ、この関数が必要になります。
パラメーター
{bufnr} (integer) バッファ番号。現在のバッファの場合は0
{client_id} (integer) vim.lsp.ClientのID

Luaモジュール: vim.lsp.util lsp-util

フィールド
{height} (integer) フローティングウィンドウの高さ
{width} (integer) フローティングウィンドウの幅
{wrap} (boolean, デフォルト: true) 長い行を折り返す
{wrap_at} (integer) 折り返しが有効になっている場合に高さを計算するために折り返す文字
{max_width} (integer) フローティングウィンドウの最大幅
{max_height} (integer) フローティングウィンドウの最大高さ
{focus_id} (string) このIDでポップアップが開かれた場合は、フォーカスを当てます
{close_events} (table) フローティングウィンドウを閉じるイベントのリスト
{focusable} (boolean, デフォルト: true) フローティングウィンドウをフォーカス可能にします。
{focus} (boolean, デフォルト: true) trueの場合、および{focusable}trueの場合、同じ{focus_id}で既存のフローティングウィンドウにフォーカスします
{offset_x} (integer) colに追加するオフセット
{offset_y} (integer) rowに追加するオフセット
{border} (string|(string|[string,string])[]) borderをオーバーライドします
{zindex} (integer) zindexをオーバーライドします。デフォルトは50です
{title} (string)
{title_pos} ('left'|'center'|'right')
{relative} ('mouse'|'cursor') (デフォルト: 'cursor')
{anchor_bias} ('auto'|'above'|'below', デフォルト: 'auto') - "auto": カーソルのどちら側に多くの行があるかに基づいてウィンドウを配置します
"above": 完全なウィンドウの高さを表示するのに十分な行がない場合を除き、カーソルより上にウィンドウを配置します。
"below": 完全なウィンドウの高さを表示するのに十分な行がない場合を除き、カーソルより下にウィンドウを配置します。
vim.lsp.util.apply_text_document_edit()
apply_text_document_edit({text_document_edit}, {index}, {offset_encoding}) 1つのドキュメントへの変更のリストであるTextDocumentEditを適用します。
パラメーター
{text_document_edit} (lsp.TextDocumentEdit)
{index} (integer?) 編集のオプションのインデックス。編集のリストからの場合は (リストからのものではない場合はnil)
{offset_encoding} ('utf-8'|'utf-16'|'utf-32'?)
vim.lsp.util.apply_text_edits()
apply_text_edits({text_edits}, {bufnr}, {offset_encoding}) テキスト編集のリストをバッファに適用します。
パラメーター
{text_edits} (lsp.TextEdit[])
{bufnr} (integer) バッファID
{offset_encoding} ('utf-8'|'utf-16'|'utf-32')
vim.lsp.util.apply_workspace_edit()
apply_workspace_edit({workspace_edit}, {offset_encoding}) WorkspaceEditを適用します。
パラメーター
{workspace_edit} (lsp.WorkspaceEdit)
{offset_encoding} ('utf-8'|'utf-16'|'utf-32') (必須)
buf_clear_references({bufnr}) vim.lsp.util.buf_clear_references()
バッファからドキュメントの強調表示を削除します。
パラメーター
{bufnr} (integer?) バッファID
vim.lsp.util.buf_highlight_references()
buf_highlight_references({bufnr}, {references}, {offset_encoding}) 特定のバッファのドキュメント強調表示のリストを表示します。
パラメーター
{bufnr} (integer) バッファID
{references} (lsp.DocumentHighlight[]) 強調表示するオブジェクト
{offset_encoding} ('utf-8'|'utf-16'|'utf-32')
vim.lsp.util.character_offset()
character_offset({buf}, {row}, {col}, {offset_encoding}) 特定のバッファ内の位置のUTF-32およびUTF-16オフセットを返します。
パラメーター
{buf} (integer) バッファ番号 (現在の場合は0)
{row} (integer) 0から始まる行
{col} (integer) 行内の0から始まるバイトオフセット
{offset_encoding} ('utf-8'|'utf-16'|'utf-32'?) デフォルトは、bufの最初のクライアントのoffset_encoding
戻り値
(integer) バッファ{buf}の行{row}の列{col}にある文字のoffset_encodingインデックス
vim.lsp.util.convert_input_to_markdown_lines()
convert_input_to_markdown_lines({input}, {contents}) MarkedString | MarkedString[] | MarkupContent のいずれかを有効なマークダウンを含む行のリストに変換します。textDocument/hoverのホバーウィンドウの入力、textDocument/signatureHelpの結果の解析などに役立ちます。
入力がMarkupContent型で、その種類がplaintextの場合、対応する値はそれ以上変更を加えずに返されることに注意してください。
パラメーター
{input} (lsp.MarkedString|lsp.MarkedString[]|lsp.MarkupContent)
{contents} (string[]?) 変換された行で拡張する文字列のリスト。デフォルトは{}。
戻り値
(string[]) 変換されたマークダウンの行で拡張されたもの。
vim.lsp.util.convert_signature_help_to_markdown_lines()
convert_signature_help_to_markdown_lines({signature_help}, {ft}, {triggers}) textDocument/signatureHelp のレスポンスをマークダウンの行に変換します。
パラメーター
{signature_help} (lsp.SignatureHelp) textDocument/SignatureHelp のレスポンス
{ft} (string?) ラベルのマークダウンコードブロックの `lang` として使用されるファイルタイプ
{triggers} (string[]?) LSPサーバーからのトリガー文字のリスト。パラメーターのオフセットをより正確に決定するために使用されます。
戻り値 (複数)
(string[]?) 変換されたマークダウンの行。(Range4?) アクティブなパラメーターのハイライト範囲
get_effective_tabstop({bufnr}) vim.lsp.util.get_effective_tabstop()
インデントサイズを返します。
パラメーター
{bufnr} (integer?) バッファーハンドル。デフォルトは現在。
戻り値
(integer) インデントサイズ
以下も参照
vim.lsp.util.locations_to_items()
locations_to_items({locations}, {offset_encoding}) クイックフィックスとロケーションリストに表示するために、バイト位置が正しく計算され、ソートされた順序でアイテムを返します。
結果の各項目の user_data フィールドには、計算元の元の Location または LocationLink が含まれます。
結果は、setqflist() または setloclist(){list} 引数に渡すことができます。
パラメーター
{locations} (lsp.Location[]|lsp.LocationLink[])
{offset_encoding} ('utf-8'|'utf-16'|'utf-32'?) デフォルトはバッファーの最初のクライアント
戻り値
(vim.quickfix.entry[]) フォーマットについては setqflist() を参照してください。
vim.lsp.util.make_floating_popup_options()
make_floating_popup_options({width}, {height}, {opts}) フローティングウィンドウの適切なデフォルトオプションを持つテーブルを作成します。テーブルは nvim_open_win() に渡すことができます。
パラメーター
{width} (integer) ウィンドウ幅(文字セル単位)
{height} (integer) ウィンドウ高さ(文字セル単位)
{opts} (vim.lsp.util.open_floating_preview.Opts?) vim.lsp.util.open_floating_preview.Opts を参照してください。
戻り値
(table) オプション
vim.lsp.util.make_formatting_params()
make_formatting_params({options}) 現在のバッファーとカーソル位置の DocumentFormattingParams オブジェクトを作成します。
パラメーター
{options} (lsp.FormattingOptions?) 有効な FormattingOptions エントリー
戻り値
(lsp.DocumentFormattingParams) オブジェクト
vim.lsp.util.make_given_range_params()
make_given_range_params({start_pos}, {end_pos}, {bufnr}, {offset_encoding}) 現在のバッファーの指定された範囲を使用して、vim.lsp.util.make_range_params() と同様のオブジェクトを作成します。
パラメーター
{start_pos} ([integer,integer]?) {row,col} マークインデックス位置。デフォルトは最後のビジュアル選択の開始位置。
{end_pos} ([integer,integer]?) {row,col} マークインデックス位置。デフォルトは最後のビジュアル選択の終了位置。
{bufnr} (integer?) バッファーハンドル。現在のバッファーは 0。デフォルトは現在。
{offset_encoding} ('utf-8'|'utf-16'|'utf-32'?) デフォルトは bufnr の最初のクライアントの offset_encoding
戻り値
(table) { textDocument = { uri = current_file_uri }, range = { start = start_position, end = end_position } }
vim.lsp.util.make_position_params()
make_position_params({window}, {offset_encoding}) 現在のバッファーとカーソル位置の TextDocumentPositionParams オブジェクトを作成します。
パラメーター
{window} (integer?) ウィンドウハンドル。現在のウィンドウは 0。デフォルトは現在。
{offset_encoding} ('utf-8'|'utf-16'|'utf-32'?) デフォルトは window のバッファーの最初のクライアントの offset_encoding
戻り値
(lsp.TextDocumentPositionParams)
vim.lsp.util.make_range_params()
make_range_params({window}, {offset_encoding}) 現在のバッファーの現在の位置を使用して、textDocument/codeActiontextDocument/colorPresentationtextDocument/rangeFormatting など、いくつかのLSPリクエストの構成要素として使用できるオブジェクトを作成します。
パラメーター
{window} (integer?) ウィンドウハンドル。現在のウィンドウは 0。デフォルトは現在。
{offset_encoding} ("utf-8"|"utf-16"|"utf-32"?) デフォルトは window のバッファーの最初のクライアントの offset_encoding
戻り値
(table) { textDocument = { uri = current_file_uri }, range = { start = current_position, end = current_position } }
vim.lsp.util.make_text_document_params()
make_text_document_params({bufnr}) 現在のバッファーの TextDocumentIdentifier オブジェクトを作成します。
パラメーター
{bufnr} (integer?) バッファーハンドル。デフォルトは現在。
戻り値
(lsp.TextDocumentIdentifier)
vim.lsp.util.make_workspace_params()
make_workspace_params({added}, {removed}) ワークスペースパラメーターを作成します
パラメーター
{added} (lsp.WorkspaceFolder[])
{removed} (lsp.WorkspaceFolder[])
戻り値
(lsp.WorkspaceFoldersChangeEvent)
vim.lsp.util.open_floating_preview()
open_floating_preview({contents}, {syntax}, {opts}) フローティングウィンドウにコンテンツを表示します。
パラメーター
{contents} (table) ウィンドウに表示する行
{syntax} (string) 開いたバッファーに設定するシンタックス
{opts} (vim.lsp.util.open_floating_preview.Opts?) オプションのフィールド付き(追加のキーは vim.lsp.util.make_floating_popup_options() でフィルタリングされてから nvim_open_win() に渡されます)。vim.lsp.util.open_floating_preview.Opts を参照してください。
戻り値 (複数)
(integer) 新しく作成されたフローティングウィンドウの bufnr (integer) 新しく作成されたフローティングウィンドウプレビューウィンドウの winid
preview_location({location}, {opts}) vim.lsp.util.preview_location()
フローティングウィンドウで場所をプレビューします
動作は場所の種類によって異なります
Location の場合、範囲が表示されます(例:関数定義)
LocationLink の場合、targetRange が表示されます(例:関数定義の本体)
パラメーター
{location} (lsp.Location|lsp.LocationLink)
{opts} (vim.lsp.util.open_floating_preview.Opts?) vim.lsp.util.open_floating_preview.Opts を参照してください。
戻り値 (複数)
(integer?) フローティングウィンドウのバッファーID (integer?) フローティングウィンドウのウィンドウID
rename({old_fname}, {new_fname}, {opts}) vim.lsp.util.rename()
old_fname を new_fname にリネームします
既存のバッファーもリネームされ、bufnr は維持されます。
リネームされたファイル名と競合する既存のバッファーは、以下の場合のみ削除されます。
opts が上書きを要求する場合。または
競合するバッファーがロードされていない場合(削除してもデータが失われることはありません)。
パラメーター
{old_fname} (string)
{new_fname} (string)
{opts} (table?) オプション
{overwrite} (boolean)
{ignoreIfExists} (boolean)
vim.lsp.util.show_document()
show_document({location}, {offset_encoding}, {opts}) ドキュメントを表示し、オプションでその場所にジャンプします。
パラメーター
{location} (lsp.Location|lsp.LocationLink)
{offset_encoding} ('utf-8'|'utf-16'|'utf-32'?)
{opts} (table?) 次のフィールドを持つテーブル
{reuse_win} (boolean) バッファがすでに開いている場合は、既存のウィンドウにジャンプします。
{focus} (boolean) 可能であれば、場所にフォーカス/ジャンプするかどうか。(デフォルト: true)
戻り値
(boolean) 成功した場合は true
vim.lsp.util.stylize_markdown()
stylize_markdown({bufnr}, {contents}, {opts}) マークダウンを、コードブロックを削除して強調表示されたコードに変換することにより、シンタックスを強調表示した領域に変換します。デフォルトでは、可読性を向上させるために、これらのコードブロック領域の後に空白行区切り記号が挿入されます。
このメソッドは、指定されたバッファーを構成し、設定する行を返します。
派手なマークダウンでポップアップを開きたい場合は、代わりに open_floating_preview を使用してください。
パラメーター
{bufnr} (integer)
{contents} (string[]) ウィンドウに表示する行
{opts} (table?) オプションのフィールド付き
フローティングウィンドウの高さ
フローティングウィンドウの幅
高さを計算するための折り返し文字
max_width フローティングウィンドウの最大幅
max_height フローティングウィンドウの最大高さ
separator コードブロックの後に区切り記号を挿入
戻り値
(table) ストリップされたコンテンツ
symbols_to_items({symbols}, {bufnr}) vim.lsp.util.symbols_to_items()
シンボルをクイックフィックスリストアイテムに変換します。
パラメーター
{symbols} (lsp.DocumentSymbol[]|lsp.SymbolInformation[])
{bufnr} (integer?)
戻り値
(vim.quickfix.entry[]) フォーマットについては setqflist() を参照してください。

Luaモジュール: vim.lsp.log lsp-log

get_filename() vim.lsp.log.get_filename()
ログファイル名を返します。
戻り値
(string) ログファイル名
get_level() vim.lsp.log.get_level()
現在のログレベルを取得します。
戻り値
(integer) 現在のログレベル
set_format_func({handle}) vim.lsp.log.set_format_func()
ログのフォーマットに使用するフォーマット関数を設定します
パラメーター
{handle} (function) ロギング引数に適用する関数。複数行のフォーマットには vim.inspect を渡します
set_level({level}) vim.lsp.log.set_level()
現在のログレベルを設定します。
パラメーター
{level} (string|integer) vim.lsp.log.levels のいずれか
should_log({level}) vim.lsp.log.should_log()
ログを記録するのに十分なレベルであるかどうかを確認します。
パラメーター
{level} (integer) ログレベル
戻り値
(bool) ログを記録する場合は true、そうでない場合は false

Luaモジュール: vim.lsp.rpc lsp-rpc

フィールド
{request} (fun(method: string, params: table?, callback: fun(err: lsp.ResponseError?, result: any), notify_reply_callback: fun(message_id: integer)?):boolean,integer?) vim.lsp.rpc.request() を参照してください
{notify} (fun(method: string, params: any):boolean) vim.lsp.rpc.notify() を参照してください
{is_closing} (fun(): boolean)
{terminate} (fun())
connect({host_or_path}, {port}) vim.lsp.rpc.connect()
次のいずれかに接続する LSP RPC クライアントファクトリを作成します
名前付きパイプ(Windows)
ドメインソケット(Unix)
TCP 経由のホストとポート
vim.lsp.start_client() または vim.lsp.start()cmd フィールドに渡すことができる関数を返します。
パラメーター
{host_or_path} (string) 接続先のホストまたはパイプ/ドメインソケットへのパス
{port} (integer?) 接続先の TCP ポート。指定しない場合、最初の引数はパイプである必要があります
戻り値
(fun(dispatchers: vim.lsp.rpc.Dispatchers): vim.lsp.rpc.PublicClient)
format_rpc_error({err}) vim.lsp.rpc.format_rpc_error()
LSPエラーオブジェクトからエラーメッセージを構築します。
パラメーター
{err} (table) エラーオブジェクト
戻り値
(string) error_message フォーマットされたエラーメッセージ
notify({method}, {params}) vim.lsp.rpc.notify()
LSPサーバーに通知を送信します。
パラメーター
{method} (string) 呼び出されるLSPメソッド
{params} (table?) 呼び出されるLSPメソッドのパラメータ
戻り値
(boolean) 通知を送信できた場合はtrue、できなかった場合はfalse
vim.lsp.rpc.request()
request({method}, {params}, {callback}, {notify_reply_callback}) LSPサーバーにリクエストを送信し、レスポンス時に{callback}を実行します。
パラメーター
{method} (string) 呼び出されるLSPメソッド
{params} (table?) 呼び出されるLSPメソッドのパラメータ
{callback} (fun(err: lsp.ResponseError?, result: any)) 呼び出すコールバック関数
{notify_reply_callback} (fun(message_id: integer)?) リクエストが保留中でなくなったときにすぐに呼び出すコールバック関数
戻り値 (複数)
(boolean) success リクエストを送信できた場合はtrue、できなかった場合はfalse (integer?) リクエストを送信できた場合はmessage_id、できなかった場合はnil
vim.lsp.rpc.rpc_response_error()
rpc_response_error({code}, {message}, {data}) LSPレスポンスに送信するRPCレスポンステーブルのerrorを作成します。
パラメーター
{code} (integer) 定義済みのRPCエラーコード。vim.lsp.protocol.ErrorCodesを参照してください。
{message} (string?) サーバーに送信する任意のエラーメッセージ
{data} (any?) サーバーに送信する任意のデータ
戻り値
(lsp.ResponseError)
以下も参照
lsp.ErrorCodes vim.lsp.protocol.ErrorCodesを参照してください。
start({cmd}, {dispatchers}, {extra_spawn_params}) vim.lsp.rpc.start() LSPサーバープロセスを開始し、それとやり取りするためのLSP RPCクライアントオブジェクトを作成します。spawnされたプロセスとの通信は標準入出力(stdio)を介して行われます。TCP経由で通信する場合は、プロセスを手動でspawnし、vim.lsp.rpc.connect()を使用してください。
パラメーター
{cmd} (string[]) LSPサーバーを起動するためのコマンド。
{dispatchers} (table?) LSPメッセージタイプのディスパッチャ。
{notification} (fun(method: string, params: table))
{server_request} (fun(method: string, params: table): any?, lsp.ResponseError?)
{on_exit} (fun(code: integer, signal: integer))
{on_error} (fun(code: integer, err: any))
{extra_spawn_params} (table?) LSPサーバープロセスの追加コンテキスト。
{cwd} (string) LSPサーバープロセスの作業ディレクトリ
{detached} (boolean) 現在のプロセスからLSPサーバープロセスをデタッチします。
{env} (table<string,string>) LSPサーバープロセスの追加環境変数。vim.system()を参照してください。
戻り値
(vim.lsp.rpc.PublicClient) 次のメソッドを持つクライアントRPCオブジェクト
is_closing() RPCがクローズ中かどうかを示すブール値を返します。
terminate() RPCクライアントを終了します。vim.lsp.rpc.PublicClientを参照してください。

Luaモジュール: vim.lsp.protocol lsp-protocol

vim.lsp.protocol.make_client_capabilities()
make_client_capabilities() LSPクライアントの機能を記述する新しいClientCapabilitiesオブジェクトを取得します。
戻り値
(lsp.ClientCapabilities)
メソッド vim.lsp.protocol.Methods
LSPメソッド名。
vim.lsp.protocol.resolve_capabilities()
resolve_capabilities({server_capabilities}) LSPサーバーの機能を記述する正規化されたオブジェクトを作成します。
パラメーター
{server_capabilities} (table) サーバーがサポートする機能のテーブル
戻り値
(lsp.ServerCapabilities?) 正規化された機能のテーブル
メイン
コマンドインデックス
クイックリファレンス