"TODO: add documentation in the vim folder for this vim config if empty(glob('~/.vim/autoload/plug.vim')) silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim endif call plug#begin('~/.vim/plugged') Plug 'itchyny/lightline.vim' Plug 'rafi/awesome-vim-colorschemes' Plug 'mattn/emmet-vim' Plug 'liuchengxu/vim-which-key' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' Plug 'kamil-stachowski/flatwhite-vim' Plug 'prabirshrestha/vim-lsp' Plug 'mattn/vim-lsp-settings' Plug 'prabirshrestha/asyncomplete.vim' Plug 'prabirshrestha/asyncomplete-lsp.vim' Plug 'ap/vim-buftabline' Plug 'sheerun/vim-polyglot' Plug 'tpope/vim-commentary' Plug 'prabirshrestha/asyncomplete-emmet.vim' Plug 'keremc/asyncomplete-clang.vim' Plug 'kalbasit/vim-colemak' call plug#end() let mapleader = "\" syntax on "filetype filetype on filetype indent on filetype plugin on "set set nocompatible set fileformat=unix set encoding=UTF-8 set number set nowrap set rnu set expandtab set tabstop=4 set shiftwidth=4 set smarttab set smartindent set noswapfile set incsearch set ignorecase set smartcase set autochdir set hidden set virtualedit=onemore set timeoutlen=500 set ttimeoutlen=1 set termguicolors set laststatus=2 set noshowmode set undofile set undodir=~/.vim/undodir set signcolumn=yes set shortmess+=c " etc colorscheme flatwhite nnoremap nnoremap :WhichKey '' inoremap l nnoremap y w nnoremap c "+y vnoremap c "+y autocmd FileType html,css EmmetInstall "let let g:VM_maps = {} let g:buftabline_show = 2 let g:buftabline_numbers = 1 let g:user_emmet_leader_key='' let g:user_emmet_mode='n' let g:user_emmet_install_global = 0 let g:lightline = { \ 'colorscheme': 'one', \ 'background': 'light', \ } let g:which_key_map = {} let g:which_key_map.f = ['Files', 'file buffer'] let g:which_key_map.b = { \ 'name' : '+buffer', \ 'n' : ['bn', 'next buffer'], \ 'p' : ['bp', 'previous buffer'], \ 'b' : ['Buffers', 'fuzzy find buffers'], \ } call which_key#register('', 'g:which_key_map') " lsp if executable('pylsp') au User lsp_setup call lsp#register_server({ \ 'name': 'pylsp', \ 'cmd': {server_info->['pylsp']}, \ 'allowlist': ['python'], \ }) endif if executable('clangd') au User lsp_setup call lsp#register_server({ \ 'name': 'clangd', \ 'cmd': {server_info->['clangd', '-background-index']}, \ 'allowlist': ['c', 'cpp', 'objc', 'objcpp'], \}) endif if executable('emmet-language-server') au User asyncomplete_setup call asyncomplete#register_source(asyncomplete#sources#emmet#get_source_options({ \ 'name': 'emmet', \ 'whitelist': ['html'], \ 'completor': function('asyncomplete#sources#emmet#completor'), \ })) endif if executable('vscode-html-language-server') autocmd User lsp_setup call lsp#register_server({ \ 'name': 'vscode-html-language-server', \ 'cmd': {server_info->[&shell, &shellcmdflag, 'vscode-html-language-server --stdio']}, \ 'whitelist': ['html'], \ 'initialization_options': { \ 'provideFormatter': v:true, \ 'embeddedLanguages': {'css': v:true, 'javascript': v:true} \ }}) endif if executable('vscode-css-language-server') au User lsp_setup call lsp#register_server({ \ 'name': 'css', \ 'cmd': {server_info->['vscode-css-language-server']}, \ 'allowlist': ['css', 'scss', 'less'], \}) endif if executable('typescript-language-server') au User lsp_setup call lsp#register_server({ \ 'name': 'javascript support using typescript-language-server', \ 'cmd': { server_info->[&shell, &shellcmdflag, 'typescript-language-server --stdio']}, \ 'root_uri': { server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_directory(lsp#utils#get_buffer_path(), '.git/..'))}, \ 'whitelist': ['javascript', 'javascript.jsx', 'javascriptreact'] \ }) endif function! s:on_lsp_buffer_enabled() abort setlocal omnifunc=lsp#complete setlocal signcolumn=yes if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif nmap gs (lsp-document-symbol-search) nmap gS (lsp-workspace-symbol-search) nmap gr (lsp-references) nmap gi (lsp-implementation) nmap gt (lsp-type-definition) nmap rn (lsp-rename) nmap [g (lsp-previous-diagnostic) nmap ]g (lsp-next-diagnostic) nmap K (lsp-hover) nnoremap lsp#scroll(+4) nnoremap lsp#scroll(-4) let g:lsp_format_sync_timeout = 1000 autocmd! BufWritePre *.rs,*.go call execute('LspDocumentFormatSync') endfunction augroup lsp_install au! " call s:on_lsp_buffer_enabled only for languages that has the server registered. autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() augroup END autocmd User asyncomplete_setup call asyncomplete#register_source( \ asyncomplete#sources#clang#get_source_options())