]> Sergey Matveev's repositories - vim-lsp.git/blob - autoload/lsp/codelens.vim
257166540fe81ef15090d27279e012ffed03cecc
[vim-lsp.git] / autoload / lsp / codelens.vim
1 vim9script
2
3 import './codeaction.vim'
4
5 # Functions related to handling LSP code lens
6
7 export def ProcessCodeLens(lspserver: dict<any>, codeLensItems: list<dict<any>>)
8   var text: list<string> = []
9   for i in codeLensItems->len()->range()
10     var item = codeLensItems[i]
11     if !item->has_key('command')
12       # resolve the code lens
13       item = lspserver.resolveCodeLens(item)
14       if item->empty()
15         continue
16       endif
17       codeLensItems[i] = item
18     endif
19     text->add(printf("%d. %s\t| L%s:%s", i + 1, item.command.title,
20                         item.range.start.line + 1,
21                         getline(item.range.start.line + 1)))
22   endfor
23
24   var choice = inputlist(['Code Lens:'] + text)
25   if choice < 1 || choice > codeLensItems->len()
26     return
27   endif
28
29   codeaction.DoCommand(lspserver, codeLensItems[choice - 1].command)
30 enddef
31
32 # vim: tabstop=8 shiftwidth=2 softtabstop=2