Files
Edith Boles 80936dca39 Fix link
2026-08-27 22:44:58 -07:00

282 lines
7.9 KiB
VimL

set nocompatible " be iMproved, required
filetype off " required
let mapleader = ";"
let install = 0
if empty(glob("~/.vim/autoload/plug.vim"))
silent execute '!mkdir -p ~/.vim/autoload'
silent execute '!mkdir -p ~/.vim/undodir'
silent execute '!mkdir -p ~/.vim/swapdir'
silent execute '!curl -fLo ~/.vim/autoload/plug.vim https://raw.github.com/junegunn/vim-plug/master/plug.vim'
let install = 1
endif
call plug#begin()
Plug 'tpope/vim-fugitive'
Plug 'puremourning/vimspector'
Plug 'vim-scripts/DrawIt'
Plug 'Bercio/vim-inkscape-insert'
Plug 'rstacruz/sparkup', {'rtp': 'vim/'}
Plug 'vim-pandoc/vim-pandoc'
Plug 'vim-pandoc/vim-pandoc-syntax'
Plug 'MarcWeber/vim-addon-mw-utils'
Plug 'tomtom/tlib_vim'
Plug 'cespare/vim-toml'
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'mhartington/oceanic-next'
Plug 'preservim/nerdtree'
Plug 'farmergreg/vim-lastplace'
Plug 'sk1418/HowMuch'
Plug 'godlygeek/tabular'
Plug 'vim-crystal/vim-crystal'
Plug 'stephpy/vim-yaml'
Plug 'MaxMEllon/vim-jsx-pretty'
Plug 'arrufat/vala.vim'
Plug 'chaimleib/vim-renpy'
Plug 'vhda/verilog_systemverilog.vim'
Plug 'gregkh/kernel-coding-style'
Plug 'dense-analysis/ale'
Plug 'PenguinOwl/lsp'
Plug 'editorconfig/editorconfig-vim'
Plug '907th/vim-auto-save'
call plug#end() " required
if install
set number
PlugInstall
q
endif
filetype plugin indent on " required
set number
set tabstop=2 shiftwidth=2 expandtab
set ai
nnoremap <expr> gp '`[' . strpart(getregtype(), 0, 1) . '`]'
" tnoremap <ESC> <C-\><C-n>
tnoremap <Esc> <C-W>N
tnoremap <Esc><Esc> <C-W>N
set timeout timeoutlen=500 " Default
set ttimeout ttimeoutlen=100 " Set by defaults.vim
set undofile
set undodir=~/.vim/undodir
set directory=~/.vim/swapdir
set ignorecase
set smartcase
set nomodeline
set exrc
set secure
set cursorline
set wildmode=longest,list
set wildmenu
let g:solarized_termcolors=256
let g:pandoc#folding#fold_yaml=1
let g:pandoc#folding#mode = ['manual']
let g:pandoc#folding#fdc = 0
let g:pandoc#syntax#conceal#use=0
let g:UltiSnipsExpandTrigger="<c-s>"
let g:UltiSnipsJumpForwardTrigger="<c-s>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
let g:UltiSnipsListSnippets="<c-a>"
if (has("termguicolors"))
set termguicolors
endif
" Theme
syntax enable
colorscheme OceanicNext
let g:airine_theme='oceanicnext'
let g:airline_powerline_fonts = 1
autocmd FileType help setlocal nospell
set laststatus=2
set statusline=%m\ %F\ %y\ %{&fileencoding?&fileencoding:&encoding}\ %=%(C:%c\ L:%l\ %P%)
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree")
\ && b:NERDTree.isTabTree()) | q | endif
autocmd FileType gitcommit setlocal spell
set viminfo='20,<1000,s1000
hi CursorLineNr term=bold cterm=bold ctermfg=012 gui=bold
hi EndOfBuffer ctermfg=bg guifg=#404950
hi ALEError ctermbg=DarkRed
hi ALEWarning ctermbg=DarkBlue
hi SpellBad ctermbg=88
hi SpellCap ctermbg=97 guibg=#c65d34
hi SpellRare ctermbg=52
hi SpellLocal ctermbg=19
hi Pmenu ctermfg=145 ctermbg=233 guifg=#a7adba guibg=#263956
hi PmenuSel ctermfg=145 ctermbg=233 guifg=#ffffff guibg=#0d6221
hi Search ctermfg=243 ctermbg=221 guifg=#dfdd99 guibg=#715910
hi! def link DiffAdded DiffAdd
hi! def link DiffRemoved DiffDelete
hi! def link ALEError SpellBad
hi! def link ALEWarning SpellCap
inoremap <expr> <TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
inoremap <expr> <S-TAB> pumvisible() ? "\<C-p>" : "\<TAB>"
noremap <leader>= :Tab /^[^=]\zs=*<return>
noremap <leader>p <C-w><up>
noremap <leader>; <C-w><down>
noremap <leader>l <C-w><left>
noremap <leader>' <C-w><right>
noremap <leader>t :NERDTree %<return>
noremap <leader>2 :botright terminal<return><C-w>10_
noremap <leader>q :qa<return>
noremap <leader>Q :qa!<return>
noremap <leader>a :xa<return>
noremap <leader>r :w<return>:!%:p<return>
noremap <leader>9 :%!xxd<return>
noremap <leader>0 :%!xxd -r<return>
noremap <leader>e :diffput RE<return>]c
noremap <leader>r :diffg RE<return>]c
noremap <leader>f :ALEFix<return>
noremap <leader>i :ALEImport<return>
noremap <leader>x :LspCodeAction<return>
noremap <leader>d :LspGotoDefinition<return>
noremap <leader>D :LspGotoDeclaration<return>
noremap <leader>w :LspShowReferences<return>
noremap <leader>z :LspRename<return>
noremap <leader>s :ALEDetail<return>
noremap ]e :ALENext<return>
noremap [e :ALEPrevious<return>
noremap <leader>kb <Plug>VimspectorToggleBreakpoint
noremap <leader>kr <Plug>VimspectorRestart
noremap <leader>kc <Plug>VimspectorContinue
noremap <leader>ks <Plug>VimspectorStepInto
noremap <leader>kd <Plug>VimspectorStepOver
noremap <leader>ka <Plug>VimspectorStepOut
noremap <leader>kw <Plug>VimspectorBalloonEval
noremap <leader>kx :VimspectorReset<return>
noremap <leader><tab> :tab split<return>
let g:vimspector_sidebar_width = 40
let g:vimspector_bottombar_height = 3
let g:vimspector_code_minwidth = 120
"let g:vimspector_terminal_maxwidth = 80
"let g:vimspector_terminal_minwidth = 10
set mouse=a
set foldmethod=indent
set foldlevel=1
set foldclose=all
set nofoldenable
set foldlevel=99
set scrolloff=7
set noballoonevalterm
let g:ale_linters = #{
\ cs: [],
\ c: [],
\ ruby: []
\ }
let g:ale_fixers = #{
\ python: [
\ 'remove_trailing_lines',
\ 'trim_whitespace',
\ 'autoimport',
\ 'autoflake',
\ 'isort',
\ 'black',
\ ],
\ crystal: ['crystal'],
\ javascript: ['prettier', 'eslint'],
\ typescript: ['prettier', 'eslint'],
\ javascriptreact: ['prettier', 'eslint'],
\ typescriptreact: ['prettier', 'eslint'],
\ c: ['clang-format'],
\ }
function SetupALEBuffer()
if wordcount().chars > 50000
let g:ale_enabled=0
else
let g:ale_enabled=1
endif
endfunction
set pumheight=10
let lang_server_path = $VIRTUAL_ENV.'/bin/pyright-langserver'
let lspOpts = #{
\ aleSupport: 1,
\ snippetSupport: 1,
\ }
let lsp_configs = [#{name: 'pyright',
\ filetype: ['python'],
\ path: lang_server_path,
\ args: ['--stdio'],
\ workspaceConfig: #{
\ python: #{
\ pythonPath: $VIRTUAL_ENV.'/bin/python'
\ }}
\ },
\ #{name: 'tsserver',
\ filetype: ['javascript', 'typescript', 'javascriptreact', 'typescriptreact'],
\ path: '/usr/bin/typescript-language-server',
\ args: ['--stdio']
\ },
\ #{name: 'vscode-css',
\ filetype: ['css', 'scss', 'less'],
\ path: 'vscode-css-language-server',
\ args: ['--stdio'],
\ initializationOptions: #{
\ provideFormatter: 0
\ }
\ },
\ #{name: 'omnisharp',
\ filetype: ['cs'],
\ path: '/usr/lib/omnisharp/OmniSharp',
\ args: ['-z', '--languageserver', '--encoding', 'utf-8']
\ },
\ #{name: 'crystalline',
\ filetype: ['crystal'],
\ path: '/usr/bin/crystalline',
\ args: ['--stdio'],
\ rootSearch: ['shard.yml', '.git']
\ },
\ #{name: 'ruby-lsp',
\ filetype: ['ruby'],
\ path: '/usr/bin/ruby-lsp',
\ rootSearch: ['Gemfile', '.git']
\ },
\ #{name: 'clangd',
\ filetype: ['c', 'cpp'],
\ path: '/usr/bin/clangd',
\ args: ['--background-index', '--clang-tidy']
\ }
\ ]
let lsp_list = []
for config in lsp_configs
if executable(config["path"])
let lsp_list = add(lsp_list, config)
endif
endfor
autocmd BufEnter * call SetupALEBuffer()
autocmd BufEnter *.log setlocal autoread
autocmd User LspSetup call LspAddServer(lsp_list)
autocmd User LspSetup call LspOptionsSet(lspOpts)
autocmd User LspAttached let b:ale_disable_lsp = 1
"autocmd BufEnter *.jsx call UltiSnipsAddFiletypes(["html", "javascript"])