Skip to content

Commit

Permalink
Call setup only once when using auto setup
Browse files Browse the repository at this point in the history
Fix #39
  • Loading branch information
cannorin committed Sep 3, 2021
1 parent 0b688cc commit 80620da
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 68 deletions.
65 changes: 23 additions & 42 deletions autoload/fsharp.vim
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
" Vim autoload functions

if exists('g:loaded_autoload_fsharp')
finish
endif
Expand Down Expand Up @@ -236,14 +235,6 @@ function! fsharp#loadConfig()

if !exists('g:fsharp#fsautocomplete_command')
let s:fsac = fnamemodify(s:script_root_dir . "fsac/fsautocomplete.dll", ":p")

" check if FSAC exists
if empty(glob(s:fsac))
echoerr "FSAC not found. :FSharpUpdateFSAC to download."
let &cpo = s:cpo_save
finish
endif

let g:fsharp#fsautocomplete_command =
\ ['dotnet', s:fsac,
\ '--background-service-enabled'
Expand Down Expand Up @@ -327,6 +318,29 @@ function! fsharp#loadConfig()
endif
endif

" FSI keymaps
if g:fsharp#fsi_keymap == "vscode"
if has('nvim')
let g:fsharp#fsi_keymap_send = "<M-cr>"
let g:fsharp#fsi_keymap_toggle = "<M-@>"
else
let g:fsharp#fsi_keymap_send = "<esc><cr>"
let g:fsharp#fsi_keymap_toggle = "<esc>@"
endif
elseif g:fsharp#fsi_keymap == "vim-fsharp"
let g:fsharp#fsi_keymap_send = "<leader>i"
let g:fsharp#fsi_keymap_toggle = "<leader>e"
elseif g:fsharp#fsi_keymap == "custom"
let g:fsharp#fsi_keymap = "none"
if !exists('g:fsharp#fsi_keymap_send')
echoerr "g:fsharp#fsi_keymap_send is not set"
elseif !exists('g:fsharp#fsi_keymap_toggle')
echoerr "g:fsharp#fsi_keymap_toggle is not set"
else
let g:fsharp#fsi_keymap = "custom"
endif
endif

let s:config_is_loaded = 1
endfunction

Expand Down Expand Up @@ -394,39 +408,6 @@ endfunction

" .NET/F# specific operations

function! s:findWorkspace(dir, cont)
let s:cont_findWorkspace = a:cont
function! s:callback_findWorkspace(result)
let result = a:result
let content = json_decode(result.result.content)
if len(content.Data.Found) < 1
return []
endif
let workspace = { 'Type': 'none' }
for found in content.Data.Found
if workspace.Type == 'none'
let workspace = found
elseif found.Type == 'solution'
if workspace.Type == 'project'
let workspace = found
else
let curLen = len(workspace.Data.Items)
let newLen = len(found.Data.Items)
if newLen > curLen
let workspace = found
endif
endif
endif
endfor
if workspace.Type == 'solution'
call s:cont_findWorkspace([workspace.Data.Path])
else
call s:cont_findWorkspace(workspace.Data.Fsprojs)
endif
endfunction
call s:workspacePeek(a:dir, g:fsharp#workspace_mode_peek_deep_level, g:fsharp#exclude_project_directories, function("s:callback_findWorkspace"))
endfunction

let s:workspace = []

function! fsharp#handle_notifyWorkspace(payload) abort
Expand Down
27 changes: 1 addition & 26 deletions ftplugin/fsharp.vim
Original file line number Diff line number Diff line change
Expand Up @@ -63,39 +63,14 @@ com! -buffer FsiEvalBuffer call fsharp#sendAllToFsi()
com! -buffer FsiReset call fsharp#resetFsi()
com! -buffer FsiShow call fsharp#toggleFsi()

if g:fsharp#fsi_keymap == "vscode"
if has('nvim')
let g:fsharp#fsi_keymap_send = "<M-cr>"
let g:fsharp#fsi_keymap_toggle = "<M-@>"
else
let g:fsharp#fsi_keymap_send = "<esc><cr>"
let g:fsharp#fsi_keymap_toggle = "<esc>@"
endif
elseif g:fsharp#fsi_keymap == "vim-fsharp"
let g:fsharp#fsi_keymap_send = "<leader>i"
let g:fsharp#fsi_keymap_toggle = "<leader>e"
elseif g:fsharp#fsi_keymap == "custom"
let g:fsharp#fsi_keymap = "none"
if !exists('g:fsharp#fsi_keymap_send')
echoerr "g:fsharp#fsi_keymap_send is not set"
elseif !exists('g:fsharp#fsi_keymap_toggle')
echoerr "g:fsharp#fsi_keymap_toggle is not set"
else
let g:fsharp#fsi_keymap = "custom"
endif
endif
if g:fsharp#fsi_keymap != "none"
execute "vnoremap <silent>" g:fsharp#fsi_keymap_send ":call fsharp#sendSelectionToFsi()<cr><esc>"
execute "nnoremap <silent>" g:fsharp#fsi_keymap_send ":call fsharp#sendLineToFsi()<cr>"
execute "nnoremap <silent>" g:fsharp#fsi_keymap_toggle ":call fsharp#toggleFsi()<cr>"
execute "tnoremap <silent>" g:fsharp#fsi_keymap_toggle "<C-\\><C-n>:call fsharp#toggleFsi()<cr>"
endif

" auto setup nvim-lsp
if g:fsharp#backend == 'nvim' && g:fsharp#lsp_auto_setup
lua ionide.setup{}
endif

let &cpo = s:cpo_save
unlet s:cpo_save

" vim: sw=4 et sts=4
17 changes: 17 additions & 0 deletions plugin/ionide.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
let s:cpo_save = &cpo
set cpo&vim

" load configurations
call fsharp#loadConfig()

" auto setup nvim-lsp
let s:did_lsp_setup = 0
if g:fsharp#backend == 'nvim' && g:fsharp#lsp_auto_setup && !s:did_lsp_setup
let s:did_lsp_setup = 1
lua ionide.setup{}
endif

let &cpo = s:cpo_save
unlet s:cpo_save

" vim: sw=4 et sts=4

0 comments on commit 80620da

Please sign in to comment.