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 'ap/vim-buftabline' Plug 'sheerun/vim-polyglot' Plug 'tpope/vim-commentary' Plug 'yegappan/lsp' Plug 'dense-analysis/ale' Plug 'kalbasit/vim-colemak' call plug#end() let mapleader = "\" syntax on "filetype filetype on filetype indent on filetype plugin on "set set updatetime=300 set completeopt=menuone,popup,noinsert,noselect set scrolloff=5 " same as helix's scrolloff set clipboard=unnamedplus set splitright set splitbelow set confirm set title set fileformat=unix set encoding=UTF-8 set number set nowrap set relativenumber 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 inoremap pumvisible() ? "\" : "\" "let let g:ale_linters = { \'vim': ['vint'], \'css': ['stylelint'], \'html': ['tidy', 'htmlhint'], \'js': ['eslint'], \'go': ['golangci-lint'], \'markdown': [], \} let g:ale_fixers = { \'html': ['tidy'], \} let g:ale_html_tidy_options = '-indent -asxhtml -q ' let g:ale_sign_column_always = 1 let g:lsp_settings_filetype_markdown = [] let g:ale_lint_on_save = 1 let g:ale_fix_on_save = 1 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') augroup lsp autocmd User LspSetup call LspOptionsSet(#{ \ autoComplete: v:true, \ autoHighlightDiags: v:true, \ noNewlineCompletion: v:true, \ formatFallback: v:false, \ }) autocmd User LspSetup call LspAddServer([ \ #{name: 'hs', filetype: ['hs', 'lhs'], path: 'haskell-language-server-wrapper'}, \ #{name: 'pylsp', filetype: 'python', path: 'pylsp'}, \ #{name: 'clangd', filetype: ['c', 'cpp', 'objc', 'objcpp'], path: 'clangd', args: ['--background-index']}, \ #{name: 'html', filetype: 'html', path: 'vscode-html-language-server', args: ['--stdio']}, \ #{name: 'css', filetype: ['css', 'scss', 'less'], path: 'vscode-css-language-server', args: ['--stdio']}, \ #{name: 'js', filetype: ['ts', 'js', 'jsx'], path: 'typescript-language-server', args: []}, \ #{name: 'vim', filetype: 'vim', path: 'vim-language-server', args: ['--stdio']}, \ #{name: 'go', filetype: 'go', path: 'gopls', args: ['--stdio']}, \ #{name: 'zk', filetype: 'markdown', path: 'zk', args: ['lsp']}, \]) autocmd User LspAttached call s:lsp_keymaps() function! s:lsp_keymaps() abort nmap gs :LspDocumentSymbol nmap gr :LspShowReferences nmap gi :LspGotoImpl nmap gt :LspGotoTypeDef nmap rn :LspRename nmap [g :LspDiagPrev nmap ]g :LspDiagNext nmap K :LspHover if index(['vim', 'html', 'css', 'markdown'], &filetype) == -1 autocmd BufWritePre LspFormat endif endfunction augroup END