診断

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


診断フレームワーク
Nvimは、外部ツールからのエラーや警告、いわゆる「診断」を表示するためのフレームワークを提供します。これらの診断は、linterやLSPサーバーなど、さまざまなソースから発生する可能性があります。診断フレームワークは、quickfixリストなどの既存のエラー処理機能の拡張です。

クイックスタート diagnostic-quickstart

診断を報告するものはすべて、以下「診断プロデューサー」と呼ばれます。診断プロデューサーは、診断を報告するために、いくつかの簡単な手順に従う必要があります。
1. 名前空間nvim_create_namespace()を作成します。名前空間には名前が必要であることに注意してください。匿名の名前空間は機能しません。 2. (オプション)診断名前空間のオプションを設定しますvim.diagnostic.config()。 3. 診断を生成します。 4. バッファの診断を設定しますvim.diagnostic.set()。 5. ステップ3から繰り返します。
一般的に、APIは診断プロデューサーが使用する関数と、診断コンシューマー(つまり、バッファの診断を読み取って表示したいエンドユーザー)が使用する関数に分けられます。プロデューサー用のAPIは最初の引数として{namespace}を必要としますが、コンシューマー用のAPIは通常、名前空間を必要としません(ただし、多くの場合、オプションで指定できます)。良い経験則として、メソッドがバッファの診断を変更することを目的としている場合(例:vim.diagnostic.set())、名前空間が必要です。
vim.diagnostic.severity diagnostic-severity 診断の「severity」キーは、vim.diagnostic.severityで定義されている値のいずれかです。
vim.diagnostic.severity.ERROR vim.diagnostic.severity.WARN vim.diagnostic.severity.INFO vim.diagnostic.severity.HINT
重大度をオプションのパラメーターとして受け取る関数(例:vim.diagnostic.get())は、次の3つの形式のいずれかを受け入れます。
1. 単一のvim.diagnostic.severity
vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN })
2. 「min」または「max」キー(または両方)を持つテーブル
vim.diagnostic.get(0, { severity = { min = vim.diagnostic.severity.WARN } })
この形式では、ユーザーは重大度の範囲を指定できます。
3. リストのようなテーブル
vim.diagnostic.get(0, { severity = {
    vim.diagnostic.severity.WARN,
    vim.diagnostic.severity.INFO,
} })
この形式では、ユーザーは特定の重大度でフィルタリングできます。

ハンドラ diagnostic-handlers

診断はvim.diagnostic.show()を使用してユーザーに表示されます。診断の表示はハンドラによって管理されます。ハンドラは、「show」関数と(オプションで)「hide」関数を持つテーブルです。「show」関数のシグネチャは次のとおりです。
function(namespace, bufnr, diagnostics, opts)
指定された診断を表示または処理する役割を担います。「hide」関数は、「show」関数によって実行されたアクションの「クリーンアップ」を行い、次のシグネチャを持ちます。
function(namespace, bufnr)
ハンドラはvim.diagnostic.config()で設定し、vim.diagnostic.handlersに新しいキーを作成することで追加できます(diagnostic-handlers-exampleを参照)。
ハンドラに渡される{opts}テーブルは、設定オプションの完全なセットです(つまり、ハンドラ自体のオプションのみに限定されません)。テーブル内の値はすでに解決されています(つまり、ユーザーが設定オプションに関数を指定した場合、関数はすでに評価されています)。
Nvimはデフォルトで次のハンドラを提供します:「virtual_text」、「signs」、および「underline」。
diagnostic-handlers-example
以下の例では、vim.notify()を使用してユーザーに診断を通知する新しいハンドラを作成します。
-- It's good practice to namespace custom handlers to avoid collisions
vim.diagnostic.handlers["my/notify"] = {
  show = function(namespace, bufnr, diagnostics, opts)
    -- In our example, the opts table has a "log_level" option
    local level = opts["my/notify"].log_level
    local name = vim.diagnostic.get_namespace(namespace).name
    local msg = string.format("%d diagnostics in buffer %d from %s",
                              #diagnostics,
                              bufnr,
                              name)
    vim.notify(msg, level)
  end,
}
-- Users can configure the handler
vim.diagnostic.config({
  ["my/notify"] = {
    log_level = vim.log.levels.INFO
  }
})
この例では、診断が非表示になったときに何もする必要がないため、「hide」関数は省略します。
既存のハンドラはオーバーライドできます。たとえば、以下を使用して、特定の行で最も重大度の高い診断のサインのみを表示します。
-- Create a custom namespace. This will aggregate signs from all other
-- namespaces and only show the one with the highest severity on a
-- given line
local ns = vim.api.nvim_create_namespace("my_namespace")
-- Get a reference to the original signs handler
local orig_signs_handler = vim.diagnostic.handlers.signs
-- Override the built-in signs handler
vim.diagnostic.handlers.signs = {
  show = function(_, bufnr, _, opts)
    -- Get all diagnostics from the whole buffer rather than just the
    -- diagnostics passed to the handler
    local diagnostics = vim.diagnostic.get(bufnr)
    -- Find the "worst" diagnostic per line
    local max_severity_per_line = {}
    for _, d in pairs(diagnostics) do
      local m = max_severity_per_line[d.lnum]
      if not m or d.severity < m.severity then
        max_severity_per_line[d.lnum] = d
      end
    end
    -- Pass the filtered diagnostics (with our custom namespace) to
    -- the original handler
    local filtered_diagnostics = vim.tbl_values(max_severity_per_line)
    orig_signs_handler.show(ns, bufnr, filtered_diagnostics, opts)
  end,
  hide = function(_, bufnr)
    orig_signs_handler.hide(ns, bufnr)
  end,
}

ハイライト diagnostic-highlights

診断に定義されているすべてのハイライトは、Diagnosticで始まり、その後にハイライトの種類(例:SignUnderlineなど)と重大度(例:ErrorWarnなど)が続きます。
デフォルトでは、記号、フローティングウィンドウ、および仮想テキストのハイライトは、対応するデフォルトのハイライトにリンクされています。下線ハイライトはリンクされておらず、独自のデフォルトハイライトグループを使用します。
たとえば、hl-DiagnosticSignErrorのデフォルトのハイライトはhl-DiagnosticErrorにリンクされています。デフォルト(およびリンクされたハイライト)を変更するには、:highlightコマンドを使用します。
highlight DiagnosticError guifg="BrightRed"
hl-DiagnosticError
DiagnosticError 基本ハイライトグループとして使用されます。他の診断ハイライトは、デフォルトでこれにリンクされます(下線を除く)。
hl-DiagnosticWarn
DiagnosticWarn 基本ハイライトグループとして使用されます。他の診断ハイライトは、デフォルトでこれにリンクされます(下線を除く)。
hl-DiagnosticInfo
DiagnosticInfo 基本ハイライトグループとして使用されます。他の診断ハイライトは、デフォルトでこれにリンクされます(下線を除く)。
hl-DiagnosticHint
DiagnosticHint 基本ハイライトグループとして使用されます。他の診断ハイライトは、デフォルトでこれにリンクされます(下線を除く)。
hl-DiagnosticOk
DiagnosticOk 基本ハイライトグループとして使用されます。他の診断ハイライトは、デフォルトでこれにリンクされます(下線を除く)。
hl-DiagnosticVirtualTextError
DiagnosticVirtualTextError 「エラー」診断仮想テキストに使用されます。
hl-DiagnosticVirtualTextWarn
DiagnosticVirtualTextWarn 「警告」診断仮想テキストに使用されます。
hl-DiagnosticVirtualTextInfo
DiagnosticVirtualTextInfo 「情報」診断仮想テキストに使用されます。
hl-DiagnosticVirtualTextHint
DiagnosticVirtualTextHint 「ヒント」診断仮想テキストに使用されます。
hl-DiagnosticVirtualTextOk
DiagnosticVirtualTextOk 「OK」診断仮想テキストに使用されます。
hl-DiagnosticUnderlineError
DiagnosticUnderlineError 「エラー」診断に下線を引くために使用されます。
hl-DiagnosticUnderlineWarn
DiagnosticUnderlineWarn 「警告」診断に下線を引くために使用されます。
hl-DiagnosticUnderlineInfo
DiagnosticUnderlineInfo 「情報」診断に下線を引くために使用されます。
hl-DiagnosticUnderlineHint
DiagnosticUnderlineHint 「ヒント」診断に下線を引くために使用されます。
hl-DiagnosticUnderlineOk
DiagnosticUnderlineOk 「OK」診断に下線を引くために使用されます。
hl-DiagnosticFloatingError
DiagnosticFloatingError 診断フロートの「エラー」診断メッセージを着色するために使用されます。vim.diagnostic.open_float()を参照してください。
hl-DiagnosticFloatingWarn
DiagnosticFloatingWarn 診断フロートの「警告」診断メッセージを着色するために使用されます。
hl-DiagnosticFloatingInfo
DiagnosticFloatingInfo 診断フロートの「情報」診断メッセージを着色するために使用されます。
hl-DiagnosticFloatingHint
DiagnosticFloatingHint 診断フロートの「ヒント」診断メッセージを着色するために使用されます。
hl-DiagnosticFloatingOk
DiagnosticFloatingOk 診断フロートの「OK」診断メッセージを着色するために使用されます。
hl-DiagnosticSignError
DiagnosticSignError 符号列の「エラー」符号に使用されます。
hl-DiagnosticSignWarn
DiagnosticSignWarn 符号列の「警告」符号に使用されます。
hl-DiagnosticSignInfo
DiagnosticSignInfo 符号列の「情報」符号に使用されます。
hl-DiagnosticSignHint
DiagnosticSignHint 符号列の「ヒント」符号に使用されます。
hl-DiagnosticSignOk
DiagnosticSignOk 符号列の「OK」符号に使用されます。
hl-DiagnosticDeprecated
DiagnosticDeprecated 非推奨または廃止されたコードに使用されます。
hl-DiagnosticUnnecessary
DiagnosticUnnecessary 不要または未使用のコードに使用されます。
符号は、診断の重大度ごとに定義されます。各符号のデフォルトテキストは、重大度名の最初の文字です(たとえば、ERRORの場合は「E」)。符号はvim.diagnostic.config()でカスタマイズできます。例:
-- Highlight entire line for errors
-- Highlight the line number for warnings
vim.diagnostic.config({
    signs = {
        text = {
            [vim.diagnostic.severity.ERROR] = '',
            [vim.diagnostic.severity.WARN] = '',
        },
        linehl = {
            [vim.diagnostic.severity.ERROR] = 'ErrorMsg',
        },
        numhl = {
            [vim.diagnostic.severity.WARN] = 'WarningMsg',
        },
    },
})
「severity_sort」オプションが設定されている場合(vim.diagnostic.config()を参照)、各符号の優先度は、関連付けられた診断の重大度に依存します。それ以外の場合、すべての符号は同じ優先度を持ちます(vim.diagnostic.config()の「signs」テーブルの「priority」オプションの値、または設定されていない場合は10)。

イベント diagnostic-events

DiagnosticChanged
DiagnosticChanged 診断が変更された後。Luaから使用する場合、新しい診断は「data」テーブルのautocmdコールバックに渡されます。
例:
vim.api.nvim_create_autocmd('DiagnosticChanged', {
  callback = function(args)
    local diagnostics = args.data.diagnostics
    vim.print(diagnostics)
  end,
})

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

診断は、Nvim APIの残りの部分と同じインデックスを使用します(つまり、0ベースの行と列)。api-indexing
フィールド
{bufnr} (integer) バッファ番号
{lnum} (integer) 診断の開始行(0インデックス)
{end_lnum} (integer) 診断の最終行(0インデックス)
{col} (integer) 診断の開始列(0インデックス)
{end_col} (integer) 診断の最終列(0インデックス)
{severity} (vim.diagnostic.Severity) 診断の重大度vim.diagnostic.severity
{message} (string) 診断テキスト
{source} (string) 診断のソース
{code} (string|integer) 診断コード
{user_data} (any) プラグインが追加できる任意のデータ
{namespace} (integer)
vim.diagnostic.GetOpts 次のキーを持つテーブル
フィールド
{namespace} (integer[]|integer) 診断を1つ以上の名前空間に制限します。
{lnum} (integer) 診断を、指定された行番号にまたがるものに制限します。
{severity} (vim.diagnostic.SeverityFilter) diagnostic-severityを参照してください。
以下にリストされているキーを持つ設定テーブル。一部のパラメーターは、vim.diagnostic.config()を使用してデフォルト値を変更できます。
フィールド
{diagnostic} (vim.Diagnostic) ジャンプ先の診断。{count}{namespace}、および{severity}と相互排他です。vim.Diagnosticを参照してください。
{count} (integer) {pos}から始まる、移動する診断の数。正の整数は{count}診断だけ前方に移動し、負の整数は{count}診断だけ後方に移動します。{diagnostic}と相互排他です。
{pos} ([integer,integer]) (row, col)タプルとしてのカーソル位置。nvim_win_get_cursor()を参照してください。{count}が使用されている場合に、最も近い診断を見つけるために使用されます。{count}がnilでない場合にのみ使用されます。デフォルトは現在のカーソル位置です。
{wrap} (boolean, デフォルト: true) ファイルの周りをループするかどうか。'wrapscan'に似ています。
{severity} (vim.diagnostic.SeverityFilter) diagnostic-severityを参照してください。
{float} (boolean|vim.diagnostic.Opts.Float, デフォルト: false) trueの場合、移動後にvim.diagnostic.open_float()を呼び出します。テーブルの場合、テーブルをvim.diagnostic.open_float(){opts}パラメーターとして渡します。オーバーライドされない限り、フロートは新しいカーソル位置に診断を表示します(「cursor」が「scope」オプションに渡された場合と同様)。
{winid} (integer, デフォルト: 0) ウィンドウID
フィールド
{name} (string)
{opts} (vim.diagnostic.Opts) vim.diagnostic.Optsを参照してください。
{user_data} (table)
{disabled} (boolean)
vim.diagnostic.Opts 以下の設定オプションの多くは、次のいずれかを受け入れます。
false: この機能を無効にします。
true: この機能を有効にし、デフォルト設定を使用します。
table: この機能を有効にし、上書きを行います。デフォルト値を使用するには、空のテーブルを使用します。
function: 上記のいずれかを返すシグネチャ (namespace, bufnr) を持つ関数。
フィールド
{underline} (boolean|vim.diagnostic.Opts.Underline|fun(namespace: integer, bufnr:integer): vim.diagnostic.Opts.Underline, デフォルト: true) 診断に下線を使用します。
{virtual_text} (boolean|vim.diagnostic.Opts.VirtualText|fun(namespace: integer, bufnr:integer): vim.diagnostic.Opts.VirtualText, デフォルト: true) 診断に仮想テキストを使用します。 1つの名前空間に複数の診断が設定されている場合、診断ごとに1つのプレフィックスと最後の診断メッセージが表示されます。
{signs} (boolean|vim.diagnostic.Opts.Signs|fun(namespace: integer, bufnr:integer): vim.diagnostic.Opts.Signs, デフォルト: true) 診断に signos を使用します diagnostic-signs
{float} (boolean|vim.diagnostic.Opts.Float|fun(namespace: integer, bufnr:integer): vim.diagnostic.Opts.Float) 浮動ウィンドウのオプション。 vim.diagnostic.Opts.Floatを参照してください。
{update_in_insert} (boolean, デフォルト: false) 挿入モードで診断を更新します (falseの場合、診断はInsertLeaveで更新されます)。
{severity_sort} (boolean|{reverse?:boolean}, デフォルト: false) 診断を重大度でソートします。これは、 signos 、仮想テキスト、およびハイライトが表示される順序に影響します。 trueの場合、重大度の高い診断が重大度の低い診断の前に表示されます(例:ERRORがWARNの前に表示されます)。オプション
{reverse} (boolean) ソート順を反転します。
{jump} (vim.diagnostic.Opts.Jump) vim.diagnostic.jump()のデフォルト値。 vim.diagnostic.Opts.Jumpを参照してください。
フィールド
{bufnr} (integer, デフォルト: 現在のバッファ) 診断を表示するバッファ番号。
{namespace} (integer) 診断を指定された名前空間に制限します。
{scope} ('line'|'buffer'|'cursor'|'c'|'l'|'b', デフォルト: line) バッファ全体(buffer)、現在のカーソル行(line)、または現在のカーソル位置(cursor)から診断を表示します。短縮バージョンも使用できます (ccursorllinebbuffer)。
{pos} (integer|[integer,integer]) {scope} が "line" または "cursor" の場合、カーソル位置ではなくこの位置を使用します。数値の場合、行番号として解釈されます。それ以外の場合は、(行、列)のタプルです。
{severity_sort} (boolean|{reverse?:boolean}, デフォルト: false) 診断を重大度でソートします。 vim.diagnostic.config()の設定を上書きします。
{severity} (vim.diagnostic.SeverityFilter) diagnostic-severityを参照してください。 vim.diagnostic.config()の設定を上書きします。
{header} (string|[string,any]) 浮動ウィンドウのヘッダーとして使用する文字列。テーブルの場合、[text, hl_group] タプルとして解釈されます。 vim.diagnostic.config()の設定を上書きします。
{source} (boolean|'if_many') 診断ソースをメッセージに含めます。バッファに複数の診断ソースがある場合にのみソースを表示するには、"if_many" を使用します。それ以外の場合、truthy な値は常に診断ソースを表示することを意味します。 vim.diagnostic.config()の設定を上書きします。
{format} (fun(diagnostic:vim.Diagnostic): string) 診断を入力として受け取り、文字列を返す関数。戻り値は、診断を表示するために使用されるテキストです。 vim.diagnostic.config()の設定を上書きします。
{prefix} (string|table|(fun(diagnostic:vim.Diagnostic,i:integer,total:integer): string, string)) 浮動ウィンドウの各診断にプレフィックスを付けます。
function の場合、{i} は評価中の診断のインデックス、{total} はウィンドウに表示される診断の総数です。関数は、ウィンドウの各診断の先頭に付加される string と、プレフィックスの強調表示に使用される(オプションの)強調表示グループを返す必要があります。
table の場合、nvim_echo()のように [text, hl_group] タプルとして解釈されます。
string の場合、強調表示なしでウィンドウの各診断の先頭に付加されます。 vim.diagnostic.config()の設定を上書きします。
{suffix} (string|table|(fun(diagnostic:vim.Diagnostic,i:integer,total:integer): string, string)) {prefix}と同じですが、テキストを診断の先頭ではなく末尾に追加します。 vim.diagnostic.config()の設定を上書きします。
{focus_id} (string)
{border} (string) nvim_open_win()を参照してください。
フィールド
{float} (boolean|vim.diagnostic.Opts.Float, デフォルト: false) vim.diagnostic.jump(){float} パラメータのデフォルト値。
{wrap} (boolean, デフォルト: true) vim.diagnostic.jump(){wrap} パラメータのデフォルト値。
{severity} (vim.diagnostic.SeverityFilter) vim.diagnostic.jump(){severity} パラメータのデフォルト値。
フィールド
{severity} (vim.diagnostic.SeverityFilter) 指定された重大度に一致する診断の仮想テキストのみを表示します diagnostic-severity
{priority} (integer, デフォルト: 10) signos に使用する基本優先度。 {severity_sort} が使用されている場合、signo の優先度はその重大度に基づいて調整されます。それ以外の場合、すべての signo は同じ優先度を使用します。
{text} (table<vim.diagnostic.Severity,string>) diagnostic-severity を signo カラムに表示する signo テキストにマッピングするテーブル。デフォルトでは、エラー、警告、情報、ヒントにそれぞれ "E""W""I""H" が使用されます。例
vim.diagnostic.config({
  signs = { text = { [vim.diagnostic.severity.ERROR] = 'E', ... } }
})
{numhl} (table<vim.diagnostic.Severity,string>) diagnostic-severity を signo が配置されている行番号に使用されるハイライトグループにマッピングするテーブル。
{linehl} (table<vim.diagnostic.Severity,string>) diagnostic-severity を signo が配置されている行全体に使用されるハイライトグループにマッピングするテーブル。
フィールド
{severity} (vim.diagnostic.SeverityFilter) 指定された重大度に一致する診断にのみ下線を引きます diagnostic-severity
フィールド
{severity} (vim.diagnostic.SeverityFilter) 指定された重大度に一致する診断の仮想テキストのみを表示します diagnostic-severity
{source} (boolean|"if_many") 診断ソースを仮想テキストに含めます。バッファに複数の診断ソースがある場合にのみソースを表示するには、'if_many' を使用します。それ以外の場合、truthy な値は常に診断ソースを表示することを意味します。
{spacing} (integer) 仮想テキストの先頭に追加される空白の数。
{prefix} (string|(fun(diagnostic:vim.Diagnostic,i:integer,total:integer): string)) 診断メッセージにプレフィックスを付けます。 function の場合、{i} は評価中の診断のインデックス、{total} はその行の診断の総数です。これは、診断記号またはエラーコードをレンダリングするために使用できます。
{suffix} (string|(fun(diagnostic:vim.Diagnostic): string)) 診断メッセージにサフィックスを付けます。これは、LSP診断エラーコードをレンダリングするために使用できます。
{format} (fun(diagnostic:vim.Diagnostic): string) 戻り値は、診断を表示するために使用されるテキストです。例
function(diagnostic)
  if diagnostic.severity == vim.diagnostic.severity.ERROR then
    return string.format("E: %s", diagnostic.message)
  end
  return diagnostic.message
end
{hl_mode} ('replace'|'combine'|'blend') nvim_buf_set_extmark()を参照してください。
{virt_text} ([string,any][]) nvim_buf_set_extmark()を参照してください。
{virt_text_pos} ('eol'|'overlay'|'right_align'|'inline') nvim_buf_set_extmark()を参照してください。
{virt_text_win_col} (integer) nvim_buf_set_extmark()を参照してください。
{virt_text_hide} (boolean) nvim_buf_set_extmark()を参照してください。
config({opts}, {namespace}) vim.diagnostic.config()
診断オプションをグローバルに、または特定の診断名前空間に対して設定します。
設定は、グローバル、名前空間ごと、または一時的に(つまり、vim.diagnostic.set()またはvim.diagnostic.show()の単一の呼び出しに対してのみ)指定できます。一時的な設定が最も優先度が高く、次に名前空間の設定、最後にグローバル設定が続きます。
たとえば、ユーザーがグローバルに仮想テキストを有効にした場合
vim.diagnostic.config({ virtual_text = true })
そして、診断プロデューサーが診断を
vim.diagnostic.set(ns, 0, diagnostics, { virtual_text = false })
で設定した場合、それらの診断に対して仮想テキストは有効になりません。
パラメータ
{opts} (vim.diagnostic.Opts?) 省略またはnilの場合、現在の設定を取得します。それ以外の場合、設定テーブル(vim.diagnostic.Optsを参照)。
{namespace} (integer?) 指定された名前空間のオプションを更新します。省略した場合、グローバル診断オプションを更新します。
戻り値
(vim.diagnostic.Opts?) {opts} が省略された場合の現在の診断設定。 vim.diagnostic.Optsを参照してください。
count({bufnr}, {opts}) vim.diagnostic.count()
現在の診断数を取得します。
パラメータ
{bufnr} (integer?) 診断を取得するバッファ番号。現在のバッファの場合は0を、すべてバッファの場合はnilを使用します。
{opts} (vim.diagnostic.GetOpts?) vim.diagnostic.GetOptsを参照してください。
戻り値
(table) 実際に存在する重大度値をキー(diagnostic-severityを参照)、整数カウントを値とするテーブル。
enable({enable}, {filter}) vim.diagnostic.enable()
診断を有効または無効にします。
「切り替え」するには、is_enabled() の逆を渡します。
vim.diagnostic.enable(not vim.diagnostic.is_enabled())
パラメータ
{enable} (boolean?) 有効にする場合はtrue/nil、無効にする場合はfalse。
{filter} (table?) オプションのフィルタ kwargs、またはすべてにnil
{ns_id} (integer) 診断名前空間、またはすべてにnil
{bufnr} (integer) バッファ番号、現在のバッファの場合は0、すべてバッファの場合はnil
fromqflist({list}) vim.diagnostic.fromqflist()
quickfixアイテムのリストを診断のリストに変換します。
パラメータ
{list} (table[]) getqflist() または getloclist() からの quickfix アイテムのリスト。
戻り値
(vim.Diagnostic[]) vim.Diagnosticを参照してください。
get({bufnr}, {opts}) vim.diagnostic.get()
現在の診断を取得します。
返されたテーブルの診断を変更しても効果はありません。バッファに診断を設定するには、vim.diagnostic.set()を使用します。
パラメータ
{bufnr} (integer?) 診断を取得するバッファ番号。現在のバッファの場合は0を、すべてバッファの場合はnilを使用します。
{opts} (vim.diagnostic.GetOpts?) vim.diagnostic.GetOptsを参照してください。
戻り値
(vim.Diagnostic[]) フィールド bufnrend_lnumend_col、および severity は必ず存在します。 vim.Diagnosticを参照してください。
get_namespace({namespace}) vim.diagnostic.get_namespace()
名前空間メタデータを取得します。
パラメータ
{namespace} (integer) 診断名前空間
戻り値
(vim.diagnostic.NS) 名前空間メタデータ。 vim.diagnostic.NSを参照してください。
get_namespaces() vim.diagnostic.get_namespaces()
現在の診断名前空間を取得します。
戻り値
(table<integer,vim.diagnostic.NS>) アクティブな診断名前空間のリスト vim.diagnostic
get_next({opts}) vim.diagnostic.get_next()
カーソル位置に最も近い次の診断を取得します。
パラメータ
{opts} (vim.diagnostic.JumpOpts?) vim.diagnostic.JumpOptsを参照してください。
戻り値
(vim.Diagnostic?) 次の診断。 vim.Diagnosticを参照してください。
get_prev({opts}) vim.diagnostic.get_prev()
カーソル位置に最も近い前の診断を取得します。
パラメータ
{opts} (vim.diagnostic.JumpOpts?) vim.diagnostic.JumpOptsを参照してください。
戻り値
(vim.Diagnostic?) 前の診断。 vim.Diagnosticを参照してください。
hide({namespace}, {bufnr}) vim.diagnostic.hide()
現在表示されている診断を非表示にします。
これは、バッファに表示されているデコレーションのみをクリアします。診断はvim.diagnostic.show()で再表示できます。診断を完全に削除するには、vim.diagnostic.reset()を使用します。
診断を非表示にして再表示されないようにするには、vim.diagnostic.enable()を使用します。
パラメータ
{namespace} (integer?) 診断の名前空間。省略した場合、すべての名前空間の診断が非表示になります。
{bufnr} (integer?) バッファ番号、または現在のバッファの場合は0。省略した場合、すべてのバッファの診断が非表示になります。
is_enabled({filter}) vim.diagnostic.is_enabled()
診断が有効になっているかどうかを確認します。
属性
バージョン: 0.10.0以降
パラメータ
{filter} (table?) オプションのフィルタ kwargs、またはすべてにnil
{ns_id} (integer) 診断名前空間、またはすべてにnil
{bufnr} (integer) バッファ番号、現在のバッファの場合は0、すべてバッファの場合はnil
戻り値
(boolean)
jump({opts}) vim.diagnostic.jump()
診断に移動します。
パラメータ
{opts} (vim.diagnostic.JumpOpts) vim.diagnostic.JumpOptsを参照してください。
戻り値
(vim.Diagnostic?) 移動先の診断。 vim.Diagnosticを参照してください。
vim.diagnostic.match()
match({str}, {pat}, {groups}, {severity_map}, {defaults}) 文字列から診断を解析します。
たとえば、リンターからの出力行を考えてみましょう
WARNING filename:27:3: Variable 'foo' does not exist
これは、以下を使用してvim.Diagnostic構造体に解析できます。
local s = "WARNING filename:27:3: Variable 'foo' does not exist"
local pattern = "^(%w+) %w+:(%d+):(%d+): (.+)$"
local groups = { "severity", "lnum", "col", "message" }
vim.diagnostic.match(s, pattern, groups, { WARNING = vim.diagnostic.WARN })
パラメータ
{str} (string) 診断を解析する文字列。
{pat} (string) キャプチャグループを持つLuaパターン。
{groups} (string[]) {pat}からのキャプチャに関連付けるvim.Diagnostic構造体のフィールドのリスト。
{severity_map} (table) {groups}の重大度フィールドをvim.diagnostic.severityの項目にマッピングするテーブル。
{defaults} (table?) {groups}にリストされていないフィールドのデフォルト値のテーブル。省略した場合、数値はデフォルトで0になり、「severity」はデフォルトでERRORになります。
戻り値
(vim.Diagnostic?) vim.Diagnostic構造体、または{pat}{str}と一致しない場合はnil
open_float({opts}) vim.diagnostic.open_float()
フローティングウィンドウに診断を表示します。
パラメータ
{opts} (vim.diagnostic.Opts.Float?) vim.diagnostic.Opts.Floatを参照してください。
戻り値 (複数)
(integer?) float_bufnr (integer?) winid
reset({namespace}, {bufnr}) vim.diagnostic.reset()
指定された名前空間からすべての診断を削除します。
vim.diagnostic.hide()とは異なり、この関数は保存されているすべての診断を削除します。vim.diagnostic.show()を使用して再表示することはできません。再表示可能な方法で診断デコレーションを削除するには、vim.diagnostic.hide()を使用します。
パラメータ
{namespace} (integer?) 診断の名前空間。省略した場合、すべての名前空間の診断が削除されます。
{bufnr} (integer?) 指定されたバッファの診断を削除します。省略した場合、すべてのバッファの診断が削除されます。
set({namespace}, {bufnr}, {diagnostics}, {opts}) vim.diagnostic.set() 指定された名前空間とバッファの診断を設定します。
パラメータ
{namespace} (integer) 診断の名前空間
{bufnr} (integer) バッファ番号
{bufnr} (integer) バッファ番号、または現在のバッファの場合は0
{diagnostics} (vim.Diagnostic[]) vim.Diagnosticを参照してください。
{opts} (vim.diagnostic.Opts?) vim.diagnostic.show()に渡す表示オプション。 vim.diagnostic.Optsを参照してください。
setloclist({opts}) vim.diagnostic.setloclist()
パラメータ
バッファ診断をロケーションリストに追加します。
{opts} (table?) 次のキーを持つ設定テーブル
{namespace} (integer) 指定された名前空間からの診断のみを追加します。
{winnr} (integer, デフォルト: 0) ロケーションリストを設定するウィンドウ番号。
{open} (boolean, デフォルト: true) 設定後にロケーションリストを開きます。
{severity} (vim.diagnostic.SeverityFilter) diagnostic-severityを参照してください。
{title} (string) ロケーションリストのタイトル。デフォルトは「Diagnostics」です。
setqflist({opts}) vim.diagnostic.setqflist()
パラメータ
バッファ診断をロケーションリストに追加します。
{opts} (table?) 次のキーを持つ設定テーブル
すべての診断をクイックフィックスリストに追加します。
{open} (boolean, デフォルト: true) 設定後にクイックフィックスリストを開きます。
{severity} (vim.diagnostic.SeverityFilter) diagnostic-severityを参照してください。
{title} (string) クイックフィックスリストのタイトル。デフォルトは「Diagnostics」です。
show({namespace}, {bufnr}, {diagnostics}, {opts}) 指定された名前空間とバッファの診断を表示します。
パラメータ
{namespace} (integer?) 診断の名前空間。省略した場合、すべての名前空間の診断が表示されます。
{bufnr} (integer?) バッファ番号、または現在のバッファの場合は0。省略した場合、すべてのバッファの診断が表示されます。
{diagnostics} (vim.Diagnostic[]?) 表示する診断。省略した場合、指定された名前空間とバッファの保存された診断が使用されます。これは、診断を保存せずに診断のリストを表示したり、診断のサブセットのみを表示したりするために使用できます。 {namespace}または{bufnr}がnilの場合は使用できません。 vim.Diagnosticを参照してください。
{opts} (vim.diagnostic.Opts?) 表示オプション。 vim.diagnostic.Optsを参照してください。
toqflist({diagnostics}) vim.diagnostic.toqflist()
診断のリストを、setqflist()またはsetloclist()に渡すことができるクイックフィックスアイテムのリストに変換します。
パラメータ
{bufnr} (integer) バッファ番号、または現在のバッファの場合は0
戻り値
(table[]) クイックフィックスリストアイテム setqflist-what
メイン
コマンドインデックス
クイックリファレンス