From 2538c536582bc61c391f8bf7a09ee84029d4cd85 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Fri, 22 Dec 2017 21:20:35 +0800 Subject: [PATCH] Update lsp layer --- autoload/SpaceVim/layers/lang/javascript.vim | 7 +++---- autoload/SpaceVim/layers/lsp.vim | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/autoload/SpaceVim/layers/lang/javascript.vim b/autoload/SpaceVim/layers/lang/javascript.vim index 1dc40e58c..b4419d8fc 100644 --- a/autoload/SpaceVim/layers/lang/javascript.vim +++ b/autoload/SpaceVim/layers/lang/javascript.vim @@ -13,7 +13,7 @@ function! SpaceVim#layers#lang#javascript#plugins() abort \ ['pangloss/vim-javascript', { 'on_ft': 'javascript' }], \ ] - if !s:use_lsp + if !SpaceVim#layers#lsp#check_filetype('javascript') call add(plugins, ['ternjs/tern_for_vim', { \ 'on_ft': 'javascript', 'build' : 'npm install' }]) call add(plugins, ['carlitux/deoplete-ternjs', { 'on_ft': [ @@ -23,7 +23,6 @@ function! SpaceVim#layers#lang#javascript#plugins() abort return plugins endfunction -let s:use_lsp = 0 let s:auto_fix = 0 function! SpaceVim#layers#lang#javascript#set_variable(var) abort @@ -46,7 +45,7 @@ function! SpaceVim#layers#lang#javascript#config() abort call SpaceVim#mapping#space#regesit_lang_mappings('javascript', \ funcref('s:on_ft')) - if s:use_lsp + if SpaceVim#layers#lsp#check_filetype('javascript') call SpaceVim#lsp#reg_server('javascript', ['javascript-typescript-stdio']) call SpaceVim#mapping#gd#add('javascript', \ function('SpaceVim#lsp#go_to_def')) @@ -81,7 +80,7 @@ function! s:on_ft() abort inoremap g :ImportJSGotoa " }}} - if s:use_lsp + if SpaceVim#layers#lsp#check_filetype('javascript') nnoremap K :call SpaceVim#lsp#show_doc() call SpaceVim#mapping#space#langSPC('nnoremap', ['l', 'd'], diff --git a/autoload/SpaceVim/layers/lsp.vim b/autoload/SpaceVim/layers/lsp.vim index 63bbe005e..3bfb5591b 100644 --- a/autoload/SpaceVim/layers/lsp.vim +++ b/autoload/SpaceVim/layers/lsp.vim @@ -62,3 +62,22 @@ function! SpaceVim#layers#lsp#config() abort " }}} endfunction +let s:enabled_fts = [] + +let s:lsp_servers = { + \ 'javascript' : ['javascript-typescript-stdio'], + \ } + +function! SpaceVim#layers#lsp#set_variable(var) abort + for ft in get(a:var, 'filetypes', []) + if executable(s:lsp_servers[ft][0]) + call add(s:enabled_fts, ft) + else + call SpaceVim#logger#warn('Failed to enable lsp for ' . ft . ', ' . s:lsp_servers[ft][0] . 'is not executable!') + endif + endfor +endfunction + +function! SpaceVim#layers#lsp#check_filetype(ft) abort + return index(s:enabled_fts, a:ft) != -1 +endfunction