From c6156bf76669cfd32d60af6525711e6ffb5626f0 Mon Sep 17 00:00:00 2001 From: Shidong Wang Date: Tue, 5 Oct 2021 22:01:32 +0800 Subject: [PATCH] feat(`lang#vim`): add workspace related key bindings Add three key bindings: 1. SPC l w l: list workspace folder 2. SPC l w a: add workspace folder 3. SPC l w r: remove workspace folder --- autoload/SpaceVim/layers/lang/vim.vim | 10 ++++++++++ autoload/SpaceVim/lsp.vim | 9 +++++++++ doc/SpaceVim.txt | 3 +++ 3 files changed, 22 insertions(+) diff --git a/autoload/SpaceVim/layers/lang/vim.vim b/autoload/SpaceVim/layers/lang/vim.vim index 766d20cfd..0eae892f5 100644 --- a/autoload/SpaceVim/layers/lang/vim.vim +++ b/autoload/SpaceVim/layers/lang/vim.vim @@ -43,6 +43,9 @@ " SPC l s show line diagnostics " SPC l d show document " K show document +" SPC l w l list workspace folder +" SPC l w a add workspace folder +" SPC l w r remove workspace folder " < if exists('s:auto_generate_doc') @@ -157,6 +160,13 @@ function! s:language_specified_mappings() abort \ 'call SpaceVim#lsp#rename()', 'rename-symbol', 1) call SpaceVim#mapping#space#langSPC('nnoremap', ['l', 's'], \ 'call SpaceVim#lsp#show_line_diagnostics()', 'show-line-diagnostics', 1) + let g:_spacevim_mappings_space.l.w = {'name' : '+Workspace'} + call SpaceVim#mapping#space#langSPC('nnoremap', ['l', 'w', 'l'], + \ 'call SpaceVim#lsp#list_workspace_folder()', 'list-workspace-folder', 1) + call SpaceVim#mapping#space#langSPC('nnoremap', ['l', 'w', 'a'], + \ 'call SpaceVim#lsp#add_workspace_folder()', 'add-workspace-folder', 1) + call SpaceVim#mapping#space#langSPC('nnoremap', ['l', 'w', 'r'], + \ 'call SpaceVim#lsp#remove_workspace_folder()', 'remove-workspace-folder', 1) endif endfunction diff --git a/autoload/SpaceVim/lsp.vim b/autoload/SpaceVim/lsp.vim index f9b92855b..835609b9b 100644 --- a/autoload/SpaceVim/lsp.vim +++ b/autoload/SpaceVim/lsp.vim @@ -50,6 +50,15 @@ if (has('nvim-0.5.0') && s:NVIM_VERSION.is_release_version()) || has('nvim-0.6.0 function! SpaceVim#lsp#show_line_diagnostics() abort lua vim.lsp.diagnostic.show_line_diagnostics() endfunction + function! SpaceVim#lsp#list_workspace_folder() abort + lua print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + endfunction + function! SpaceVim#lsp#add_workspace_folder() abort + lua vim.lsp.buf.add_workspace_folder() + endfunction + function! SpaceVim#lsp#remove_workspace_folder() abort + lua vim.lsp.buf.remove_workspace_folder() + endfunction elseif SpaceVim#layers#isLoaded('autocomplete') && get(g:, 'spacevim_autocomplete_method') ==# 'coc' " use coc.nvim let s:coc_language_servers = {} diff --git a/doc/SpaceVim.txt b/doc/SpaceVim.txt index c68fddf43..b454c060f 100644 --- a/doc/SpaceVim.txt +++ b/doc/SpaceVim.txt @@ -4266,6 +4266,9 @@ used: SPC l s show line diagnostics SPC l d show document K show document + SPC l w l list workspace folder + SPC l w a add workspace folder + SPC l w r remove workspace folder < ==============================================================================