From 4321a9830d470f1dfaf5efbe5fd6d469d1d81d0b Mon Sep 17 00:00:00 2001
From: Andreas Louv <andreas@louv.dk>
Date: Mon, 3 Apr 2023 02:04:03 +0200
Subject: [PATCH] Add ":LspDiagLast" which shows the last diagnostic

---
 autoload/lsp/diag.vim | 5 +++++
 plugin/lsp.vim        | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/autoload/lsp/diag.vim b/autoload/lsp/diag.vim
index 8e27723..c7dd31a 100644
--- a/autoload/lsp/diag.vim
+++ b/autoload/lsp/diag.vim
@@ -487,6 +487,11 @@ export def LspDiagsJump(lspserver: dict<any>, which: string, a_count: number = 0
     return
   endif
 
+  if which == 'last'
+    JumpDiag(diags[-1])
+    return
+  endif
+
   # Find the entry just before the current line (binary search)
   var count = a_count > 1 ? a_count : 1
   var curlnum: number = line('.')
diff --git a/plugin/lsp.vim b/plugin/lsp.vim
index 12271dd..7731f6d 100644
--- a/plugin/lsp.vim
+++ b/plugin/lsp.vim
@@ -82,6 +82,7 @@ command! -nargs=0 -bar -bang LspDiagCurrent lsp.LspShowCurrentDiag(<bang>false)
 command! -nargs=0 -bar LspDiagFirst lsp.JumpToDiag('first')
 command! -nargs=0 -bar LspDiagHighlightDisable lsp.DiagHighlightDisable()
 command! -nargs=0 -bar LspDiagHighlightEnable lsp.DiagHighlightEnable()
+command! -nargs=0 -bar LspDiagLast lsp.JumpToDiag('last')
 command! -nargs=0 -bar -count=1 LspDiagNext lsp.JumpToDiag('next', <count>)
 command! -nargs=0 -bar -count=1 LspDiagPrev lsp.JumpToDiag('prev', <count>)
 command! -nargs=0 -bar LspDiagShow lsp.ShowDiagnostics()
@@ -149,6 +150,7 @@ if has('gui_running')
   anoremenu <silent> L&sp.Diagnostics.Current :LspDiagCurrent<CR>
   anoremenu <silent> L&sp.Diagnostics.Show\ All :LspDiagShow<CR>
   anoremenu <silent> L&sp.Diagnostics.First :LspDiagFirst<CR>
+  anoremenu <silent> L&sp.Diagnostics.Last :LspDiagLast<CR>
   anoremenu <silent> L&sp.Diagnostics.Next :LspDiagNext<CR>
   anoremenu <silent> L&sp.Diagnostics.Prev :LspDiagPrev<CR>
   anoremenu <silent> L&sp.Diagnostics.This :LspDiagHere<CR>
-- 
2.51.0