]> Sergey Matveev's repositories - vim-lsp.git/blobdiff - autoload/lsp/diag.vim
Move the code for displaying the current diag in the status line to diag.vim
[vim-lsp.git] / autoload / lsp / diag.vim
index 7eba712dfbedd87710a4531476074c198dd5d8c1..880e08c8f4a49fa33a29e1e308a6b6f667fbc2c2 100644 (file)
@@ -125,6 +125,16 @@ export def BufferInit(lspserver: dict<any>, bnr: number)
     :set ballooneval balloonevalterm
     setbufvar(bnr, '&balloonexpr', 'g:LspDiagExpr()')
   endif
+
+  var acmds: list<dict<any>> = []
+  # Show diagnostics on the status line
+  if opt.lspOptions.showDiagOnStatusLine
+    acmds->add({bufnr: bnr,
+               event: 'CursorMoved',
+               group: 'LSPBufferAutocmds',
+               cmd: 'ShowCurrentDiagInStatusLine()'})
+  endif
+  autocmd_add(acmds)
 enddef
 
 # Function to sort the diagnostics in ascending order based on the line and
@@ -641,7 +651,7 @@ export def ShowCurrentDiag(atPos: bool)
 enddef
 
 # Show the diagnostic message for the current line without linebreak
-export def ShowCurrentDiagInStatusLine()
+def ShowCurrentDiagInStatusLine()
   var bnr: number = bufnr()
   var lnum: number = line('.')
   var col: number = charcol('.')
@@ -653,9 +663,11 @@ export def ShowCurrentDiagInStatusLine()
     if diag->has_key('code')
       code = $'[{diag.code}] '
     endif
-    var msgNoLineBreak = code .. substitute(substitute(diag.message, "\n", ' ', ''), "\\n", ' ', '')
+    var msgNoLineBreak = code ..
+       diag.message->substitute("\n", ' ', '')->substitute("\\n", ' ', '')
     :echo msgNoLineBreak[ : max_width]
   else
+    # clear the previous message
     :echo ''
   endif
 enddef