diff --git a/runtime/doc/diagnostic.txt b/runtime/doc/diagnostic.txt index d95e0d8333..edbba6ac41 100644 --- a/runtime/doc/diagnostic.txt +++ b/runtime/doc/diagnostic.txt @@ -382,7 +382,10 @@ config({opts}, {namespace}) *vim.diagnostic.config()* • virtual_text: (default true) Use virtual text for diagnostics. If multiple diagnostics are set for a namespace, one prefix per diagnostic + the last - diagnostic message are shown. Options: + diagnostic message are shown. In addition to the + options listed below, the "virt_text" options of + |nvim_buf_set_extmark()| may also be used here (e.g. + "virt_text_pos" and "hl_mode"). Options: • severity: Only show virtual text for diagnostics matching the given severity |diagnostic-severity| • source: (boolean or string) Include the diagnostic diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt index 2396f4f5a2..576c56f408 100644 --- a/runtime/doc/news.txt +++ b/runtime/doc/news.txt @@ -194,6 +194,11 @@ The following changes to existing APIs or features add new behavior. automatically if the job exited without error, eliminating the (often unwanted) "[Process exited 0]" message. +• |vim.diagnostic.config()| now accepts virtual text relevant options to + |nvim_buf_set_extmark()| (e.g. "virt_text_pos" and "hl_mode") in its + "virtual_text" table, which gives users more control over how diagnostic + virtual text is displayed. + ============================================================================== REMOVED FEATURES *news-removed* diff --git a/runtime/lua/vim/diagnostic.lua b/runtime/lua/vim/diagnostic.lua index 180b9ad3df..1391dafd75 100644 --- a/runtime/lua/vim/diagnostic.lua +++ b/runtime/lua/vim/diagnostic.lua @@ -566,7 +566,9 @@ end --- severity |diagnostic-severity| --- - virtual_text: (default true) Use virtual text for diagnostics. If multiple diagnostics --- are set for a namespace, one prefix per diagnostic + the last diagnostic ---- message are shown. +--- message are shown. In addition to the options listed below, the +--- "virt_text" options of |nvim_buf_set_extmark()| may also be used here +--- (e.g. "virt_text_pos" and "hl_mode"). --- Options: --- * severity: Only show virtual text for diagnostics matching the given --- severity |diagnostic-severity| @@ -1008,8 +1010,11 @@ M.handlers.virtual_text = { if virt_texts then api.nvim_buf_set_extmark(bufnr, virt_text_ns, line, 0, { - hl_mode = 'combine', + hl_mode = opts.virtual_text.hl_mode or 'combine', virt_text = virt_texts, + virt_text_pos = opts.virtual_text.virt_text_pos, + virt_text_hide = opts.virtual_text.virt_text_hide, + virt_text_win_col = opts.virtual_text.virt_text_win_col, }) end end