From 2155fc42ad8751090c990ef3b8f791889c567e9f Mon Sep 17 00:00:00 2001 From: Andrew Spaulding Date: Mon, 5 Feb 2024 20:32:31 -0800 Subject: [PATCH 1/2] Added an option for configuring the wrapping mode of diagnostic virtual text --- autoload/lsp/diag.vim | 4 ++++ autoload/lsp/options.vim | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/autoload/lsp/diag.vim b/autoload/lsp/diag.vim index 6e24a12c..acf07367 100644 --- a/autoload/lsp/diag.vim +++ b/autoload/lsp/diag.vim @@ -267,6 +267,10 @@ export def DiagsRefresh(bnr: number, all: bool = false) diag_symbol = 'E>' endif + if lspOpts.diagVirtualTextWrap != 'default' + diag_wrap = lspOpts.diagVirtualTextWrap + endif + var signs: list> = [] var diags: list> = diagsMap[bnr].sortedDiagnostics var inlineHLprops: list>> = [[], [], [], [], []] diff --git a/autoload/lsp/options.vim b/autoload/lsp/options.vim index 18e23dd1..50697a3b 100644 --- a/autoload/lsp/options.vim +++ b/autoload/lsp/options.vim @@ -70,6 +70,10 @@ export var lspOptions: dict = { # Allowed values: 'above' | 'below' | 'after' (default is 'above') diagVirtualTextAlign: 'above', + # Wrapping of virtual diagnostic text, when showDiagWithVirtualText is true. + # Allowed valuse: 'default' | 'truncate' | 'wrap' (default is 'default') + diagVirtualTextWrap: 'default', + # Suppress adding a new line on completion selection with noNewlineInCompletion: false, From 757daeccb75397dd33cc36dce6f983b3b5c28abb Mon Sep 17 00:00:00 2001 From: Andrew Spaulding Date: Wed, 7 Feb 2024 18:56:07 -0800 Subject: [PATCH 2/2] Added README and help information for diagVirtualTextWrap --- README.md | 1 + doc/lsp.txt | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ffedb69a..b489cafc 100644 --- a/README.md +++ b/README.md @@ -131,6 +131,7 @@ call LspOptionsSet(#{ \ keepFocusInReferences: v:true, \ completionTextEdit: v:true, \ diagVirtualTextAlign: 'above', + \ diagVirtualTextWrap: 'default', \ noNewlineInCompletion: v:false, \ omniComplete: v:null, \ outlineOnRight: v:false, diff --git a/doc/lsp.txt b/doc/lsp.txt index 68e4861a..7db10965 100644 --- a/doc/lsp.txt +++ b/doc/lsp.txt @@ -3,7 +3,7 @@ Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com) For Vim version 9.0 and above -Last change: Dec 2, 2023 +Last change: Feb 7, 2024 ============================================================================== CONTENTS *lsp-contents* @@ -516,6 +516,12 @@ diagVirtualTextAlign |String| option. Alignment of diagnostics messages Allowed values are 'above', 'below' or 'after' By default this is set to 'above', + *lsp-opt-diagVirtualTextWrap* +diagVirtualTextWrap |String| option. Wrapping of diagnostics messages + if |lsp-opt-showDiagWithVirtualText| is set to true. + Allowed values are 'default', 'wrap' or 'truncate' + By default this is set to 'default', + *lsp-opt-echoSignature* echoSignature |Boolean| option. In insert mode, echo the current symbol signature instead of showing it in a popup. @@ -1413,6 +1419,16 @@ values for "diagVirtualTextAlign" are 'below', which positions the virtual text below the affected line, and 'after', which displays the virtual text immediately after the text on the affected line. +The wrapping of the virtual text can be controlled using the +"diagVirtualTextWrap" option. By default, this option is set to 'default', +which will 'truncate' virtual text placed 'above' or 'below' the affected +line, and 'wrap' text placed 'after' the affected line. Setting the value to +'wrap' or 'truncate' will force the specified behavior for the current +value of "diagVirtualTextAlign". If 'truncate' is used while +"diagVirtualTextAlign" is set to 'after', and a diagnostic message has already +been truncated for the affected line, then further diagnostics will be placed +below the affected line. + The LSP plugin offers convenient ways to highlight diagnostic messages, making it easier to spot errors, warnings, hints, or informational notices within your code. By default, the plugin automatically highlights the range of text