this repo has no description

Make Vim use Nix for language servers

Changed files
+52 -54
vim
+1
vim/.config/.gitignore
···
/tags/*
!/nvim/tags
/nvim/custom.vim
+
/nvim/pack
+1 -1
vim/.config/nvim/after/ftplugin/erlang.vim
···
-
setlocal shiftwidth=2
+
setlocal shiftwidth=4
let b:undo_ftplugin = 'setl sw&'
+3
vim/.config/nvim/after/ftplugin/nix.vim
···
+
setl path+=.
+
+
let b:undo_ftplugin = 'setl path&'
+1 -1
vim/.config/nvim/after/ftplugin/tf.vim
···
augroup autoformat
au!
-
au BufWritePre <buffer> norm! gg=G``
+
" au BufWritePre <buffer> norm! gg=G``
augroup END
let b:undo_ftplugin = 'setl mp& fp& sw&'
+11
vim/.config/nvim/autoload/open.vim
···
+
function! open#open() abort
+
if a:0 > 0
+
let l:name = a:1
+
else
+
let l:name = expand('<cfile>')
+
endif
+
+
call jobstart(['open', l:name], { 'detach': v:true })
+
+
echo 'Open '.l:name
+
endfunction
+1 -1
vim/.config/nvim/autoload/plugins.vim
···
func! plugins#spec() abort
packadd vim-packager
-
call packager#init({'dir': '~/.local/share/nvim/site/pack/packager'})
" Package manager {{{
call packager#add('kristijanhusak/vim-packager', {'type': 'opt'})
···
" File manager {{{
call packager#add('justinmk/vim-dirvish') " Required for opening directories
call packager#add('tpope/vim-eunuch')
+
call packager#add('srstevenson/vim-picker')
" }}}
" Completion {{{
call packager#add('prabirshrestha/async.vim') " autoload-only
+18 -11
vim/.config/nvim/init.vim
···
" vi: foldmethod=marker foldlevel=0
scriptencoding utf-8
-
if exists('$IN_NIX_SHELL')
-
set shell=fish
-
endif
+
set shell=fish
" Plugins {{{
let g:loaded_netrwPlugin = 1
···
command! -bar PackUpdate call plugins#reload() | call packager#update()
command! -bar PackClean call plugins#reload() | call packager#clean()
command! -bar PackStatus call plugins#reload() | call packager#status()
-
-
set runtimepath^=/usr/local/opt/fzf/
" }}}
" Identation {{{
set shiftwidth=4 expandtab
···
set wildmode=full
" Colors {{{
set termguicolors
-
" set guicursor=n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20
+
set guicursor=n-v-c-sm:block-Cursor,i-ci-ve:ver25-Cursor,r-cr-o:hor20-Cursor
colorscheme blame
" }}}
" Ignore all automatic files and folders {{{
···
" }}}
" }}}
" Diff options {{{
-
set diffopt-=internal
set diffopt+=indent-heuristic,algorithm:patience
" }}}
" Search {{{
···
" }}}
" Custom configurations {{{
" Fuzzy file search {{{
-
nnoremap <Space><Space> :<C-u>FZF<CR>
+
nnoremap <Space><Space> :<C-u>PickerEdit<CR>
+
+
let g:picker_custom_find_executable = 'rg'
+
let g:picker_custom_find_flags = '--color never --files --hidden --glob !.git'
set path=,,
" }}}
···
nnoremap Up :<C-u>Gpush<CR>
nnoremap Us :<C-u>Gstatus<CR>
nnoremap Ud :<C-u>Gdiff<CR>
-
nnoremap Ub :<C-u>MerginalToggle<CR>
-
nnoremap UB :<C-u>Start tig blame %<CR>
+
nnoremap UB :<C-u>Gblame<CR>
nnoremap Uc :<C-u>Gcommit<CR>
nnoremap Uu :<C-u>Gpull<CR>
nnoremap Ug :<C-u>Glog<CR>
···
set complete=.,w,b,t,k,kspell
set completeopt=menuone,noselect,noinsert
+
set tags^=./**/tags
+
let g:echodoc#enable_at_startup = v:true
let g:echodoc#type = 'virtual'
" }}}
-
set sessionoptions-=help
+
set sessionoptions=blank,buffers,curdir,folds,tabpages,winsize
if executable('direnv')
augroup autoreload_envrc
···
augroup END
endif
+
augroup hotfix
+
autocmd!
+
autocmd FocusGained * checktime
+
autocmd CursorHold * checktime
+
autocmd ColorScheme * highlight LspErrorHighlight gui=underline cterm=underline
+
\ | highlight LspWarningHighlight gui=underline cterm=underline
+
augroup END
" Needed for Projectionist and dadbod
command! -nargs=* Start <mods> split new <bar> call termopen(<q-args>) <bar> startinsert
command! -nargs=0 Ctags AsyncDo ctags -R
command! -nargs=? Dash call dash#open(<f-args>)
nnoremap gK :Dash<CR>
+
nnoremap gx :<C-u>call open#open()<CR>
onoremap aG :<C-u>normal! ggVG<CR>
+16 -13
vim/.config/nvim/plugin/langclient.vim
···
let g:lsp_log_file = expand('~/vim-lsp.log')
+
func! s:set_colours(...) abort
+
endfunc
+
func! s:setup_ls(...) abort
let l:servers = lsp#get_whitelisted_servers()
···
endfor
endfunc
+
func! s:nix_shell(command, ...) abort
+
let l:path = a:0 > 0 ? a:1 : a:command
+
+
return {_->['nix-shell', '--show-trace', '-p', l:path, '--run', a:command]}
+
endfunc
+
augroup LSC
autocmd!
autocmd User lsp_setup call lsp#register_server({
\ 'name': 'ElixirLS',
-
\ 'cmd': {_->[$HOME.'/.local/share/applications/lsp/language_server.sh']},
+
\ 'cmd': s:nix_shell('elixir-ls', 'elixirLS'),
\ 'whitelist': ['elixir', 'eelixir']
\})
autocmd User lsp_setup call lsp#register_server({
+
\ 'name': 'Sourcer',
+
\ 'cmd': s:nix_shell('erlang_ls -t stdio --stdout', 'erlangSourcer'),
+
\ 'whitelist': ['erlang']
+
\})
+
autocmd User lsp_setup call lsp#register_server({
\ 'name': 'RLS',
-
\ 'cmd': {_->['rls']},
+
\ 'cmd': s:nix_shell('rls'),
\ 'whitelist': ['rust']
\})
-
autocmd User lsp_setup call lsp#register_server({
-
\ 'name': 'solargraph',
-
\ 'cmd': {server_info->['solargraph', 'stdio']},
-
\ 'initialization_options': {"diagnostics": "true"},
-
\ 'whitelist': ['ruby'],
-
\ })
-
autocmd User lsp_setup call lsp#register_server({
-
\ 'name': 'dot',
-
\ 'cmd': {server_info->['dot-language-server', '--stdio']},
-
\ 'whitelist': ['dot'],
-
\ })
autocmd User lsp_server_init call <SID>setup_ls()
autocmd BufEnter * call <SID>setup_ls()
-27
vim/.config/nvim/plugin/manuclose.vim
···
-
if exists('g:loaded_manuclose')
-
finish
-
endif
-
let g:loaded_manuclose = 1
-
-
fun! s:manual_close()
-
let cls = {}
-
let opn = {}
-
-
for [l:o, l:c] in map(split(&matchpairs, ','), 'split(v:val, ":")')
-
let cls[l:o] = l:c
-
let opn[l:c] = l:o
-
endfor
-
let stack = []
-
-
for c in split(getline('.'), '\zs')
-
if match(join(keys(l:cls)) , c) > -1
-
call insert(stack, c)
-
elseif match(join(keys(l:opn)), c) > -1
-
call remove(stack, index(stack, opn[c]))
-
endif
-
endfor
-
-
return len(stack) ? cls[stack[0]] : ''
-
endfun
-
-
inoremap <expr> <C-]> <SID>manual_close()