lua << EOF vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" EOF call plug#begin('~/.local/share/nvim/plugged') Plug 'rust-lang/rust.vim' Plug 'jyapayne/nim.vim' Plug 'tpope/vim-fugitive' Plug 'tpope/vim-unimpaired' Plug 'preservim/nerdtree' | \ Plug 'Xuyuanp/nerdtree-git-plugin' Plug 'hynek/vim-python-pep8-indent' Plug 'pangloss/vim-javascript' Plug 'Glench/Vim-Jinja2-Syntax' Plug 'tpope/vim-haml' Plug 'hdima/python-syntax' Plug 'hail2u/vim-css3-syntax' Plug 'mxw/vim-jsx' Plug 'ryanoasis/vim-devicons' Plug 'johnstef99/vim-nerdtree-syntax-highlight' Plug 'jistr/vim-nerdtree-tabs' Plug 'mustache/vim-mustache-handlebars' Plug 'vim-scripts/errormarker.vim' Plug 'elixir-lang/vim-elixir' Plug 'jreybert/vim-largefile' Plug 'sbdchd/neoformat' Plug 'tikhomirov/vim-glsl' Plug 'svermeulen/vim-easyclip' " Plug 'tpope/vim-obsession' " Plug 'dhruvasagar/vim-prosession' Plug 'tmux-plugins/vim-tmux-focus-events' Plug 'rmagatti/auto-session' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' " Plug 'vim-syntastic/syntastic' "Plug 'itchyny/lightline.vim' Plug 'morhetz/gruvbox' Plug 'tpope/vim-commentary' Plug 'w0rp/ale' Plug 'ctrlpvim/ctrlp.vim' Plug 'udalov/kotlin-vim' Plug 'simnalamburt/vim-mundo' Plug 'christoomey/vim-tmux-navigator' Plug 'tpope/vim-surround' " Plug 'alaviss/nim.nvim' Plug 'prabirshrestha/asyncomplete.vim' Plug 'tpope/vim-repeat' Plug 'christoomey/vim-sort-motion' Plug 'christoomey/vim-system-copy' Plug 'michaeljsmith/vim-indent-object' Plug 'kana/vim-textobj-user' Plug 'kana/vim-textobj-line' Plug 'Julian/vim-textobj-brace' Plug 'bps/vim-textobj-python' Plug 'wellle/targets.vim' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' Plug 'jremmen/vim-ripgrep' Plug 'rescript-lang/vim-rescript' Plug 'neoclide/coc.nvim', {'branch': 'master', 'do': 'yarn install --frozen-lockfile'} Plug 'kassio/neoterm' Plug 'reasonml-editor/vim-reason-plus' Plug 'jyapayne/vim-code-dark' " Plug 'jyapayne/vimspector' Plug 'nvim-lua/popup.nvim' Plug 'nvim-lua/plenary.nvim' Plug 'nvim-telescope/telescope.nvim' Plug 'kyazdani42/nvim-web-devicons' Plug 'ryanoasis/vim-devicons' Plug 'TimUntersberger/neogit' Plug 'sindrets/diffview.nvim', {'branch': 'main'} Plug 'lewis6991/gitsigns.nvim', {'branch': 'main'} Plug 'peterhoeg/vim-qml' Plug 'mfussenegger/nvim-dap' Plug 'posva/vim-vue' " Plug 'rcarriga/nvim-dap-ui' Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " Plug 'nvim-treesitter/playground' Plug 'nvim-telescope/telescope-dap.nvim' Plug 'theHamsta/nvim-dap-virtual-text' Plug 'mfussenegger/nvim-dap-python' Plug 'KabbAmine/vCoolor.vim' " Plug 'chrisbra/Colorizer' Plug 'norcalli/nvim-colorizer.lua' Plug 'edluffy/hologram.nvim' Plug 'fatih/vim-go' Plug 'folke/trouble.nvim' "Plug 'baabelfish/nvim-nim' call plug#end() let g:EasyClipUseGlobalPasteToggle = 0 " map [1;5A " map [1;5B " map [1;5C " map [1;5D nnoremap gm m nnoremap w let g:ale_shell="/bin/bash" let g:lsp_log_verbose = 1 let g:lsp_log_file = expand('/tmp/vim-lsp.log') " Live updating substitution! set inccommand=nosplit let g:airline#extensions#ale#enabled = 1 let mapleader = "\" let maplocalleader = "\" let g:syntastic_c_compiler_options = "-std=c99" set guicursor=v-c-sm:block,n-i-ci-ve:ver25,r-cr-o:hor20 " inoremap vmark ✓ augroup Binary au! au BufReadPre *.bin let &bin=1 au BufReadPost *.bin if &bin | %!xxd au BufReadPost *.bin set ft=xxd | endif au BufWritePre *.bin if &bin | %!xxd -r au BufWritePre *.bin endif au BufWritePost *.bin if &bin | %!xxd au BufWritePost *.bin set nomod | endif augroup END set wildmenu set wildmode=full "set shell=bash set smartindent set ruler set t_Co=256 set backspace=2 set autowrite set smarttab set expandtab set nocompatible set history=10000 set foldmethod=indent set foldlevel=99 let g:pydiction_location='/home/joey/.vim/bundle/pydiction/complete-dict' let g:jsx_ext_required = 0 let g:asyncrun_auto = "make" let g:syntastic_enable_elixir_checker = 1 let g:syntastic_elixir_checkers = ['elixir'] let g:LargeFile = 20 "set rtp+=/usr/local/lib/python2.7/dist-packages/powerline/bindings/vim/ set laststatus=2 let g:airline_powerline_fonts = 1 let g:airline_section_x = '' let g:airline_section_y = '' let g:airline_section_warning = '' let g:airline_section_z = '%l/%L:%c' set undofile " Save undo's after file closes set undodir=$HOME/.vim/undo " where to save undo histories set undolevels=10000 set undoreload=10000 " number of lines to save for undo filetype plugin indent on set incsearch set guicursor= let $NVIM_TUI_ENABLE_CURSOR_SHAPE = 0 set mouse=a set tabstop=4 set shiftwidth=4 "set statusline+=%{SyntasticStatuslineFlag()} "set statusline+=%* let g:syntastic_check_on_wq = 0 let g:python_highlight_space_errors = 0 let g:jsx_ext_required = 0 "let g:airline#extensions#tabline#enabled = 1 autocmd Filetype javascript setlocal ts=2 sw=2 expandtab map :NERDTreeTabsToggle autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif let g:NERDTreeDirArrowExpandable = '▸' let g:NERDTreeDirArrowCollapsible = '▾' autocmd Filetype nim setlocal ts=2 sts=2 sw=2 expandtab autocmd Filetype ts setlocal ts=2 sts=2 sw=2 expandtab autocmd Filetype vue setlocal ts=2 sts=2 sw=2 expandtab autocmd Filetype less setlocal ts=2 sts=2 sw=2 expandtab autocmd Filetype css setlocal ts=2 sts=2 sw=2 expandtab let g:syntastic_javascript_checkers = ['eslint', 'flow'] let g:syntastic_java_checkers = [] let g:neoformat_javascript_prettier = { \ 'exe': 'prettier', \ 'args': ['--single-quote', '--trailing-comma all'], \ } let g:toggleJSFormat = 0 function! ToggleJSFormat(...) if a:0 == 1 "toggle behaviour let g:toggleJSFormat = 1 - g:toggleJSFormat endif if g:toggleJSFormat == 0 "normal action, do the hi autocmd! autocmd BufWritePre *.js Neoformat autocmd BufWritePre *.jsx Neoformat else autocmd! autocmd BufWritePre *.js "" autocmd BufWritePre *.jsx "" endif endfunction map :call ToggleJSFormat(1) "call ToggleJSFormat() " autocmd BufNew * if winnr('$') == 1 | tabmove99 | endif au! FileType python setl nosmartindent au BufRead,BufNewFile *.py,*.js,*.jsx,*.nim,*.ml,*.mli match OverLength /\%89v.\+/ au BufRead,BufNewFile *.py,*.js,*.jsx,*.nim,*.ml,*.mli 2match ExtraWhiteSpace /\s\+$\|\t/ au StdinReadPost * set buftype=nofile syntax on command C let @/="" command CC :%s#_\(\l\)#\u\1#g command U :%s#\C\(\<\u[a-z0-9]\+\|[a-z0-9]\+\)\(\u\)#\l\1_\l\2#g " clipboard mappings moved to end of file nmap =j :%!python3 -m json.tool if !exists("autocommands_loaded") let autocommands_loaded = 1 " autocmd BufRead,BufNewFile,FileReadPost *.py source ~/.vim/python endif au BufRead,BufNewFile *.shpaml setfiletype shpaml nnoremap :let _s=@/:%s/\s\+$//e:let @/=_s:nohl " This beauty remembers where you were the last time you edited the file, and returns to the same position. au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif au BufRead,BufNewFile *.sass set filetype=sass map :mksession! ~/.vim_session map :source ~/.vim_session " delete without yanking nnoremap d "_d vnoremap d "_d " Bubble single lines nmap [e nmap ]e " Bubble multiple lines vmap [egv vmap ]egv " make escape key not delay set timeoutlen=1000 ttimeoutlen=0 " nmap [e " nmap ]e vmap [egv vmap ]egv vnoremap # :s#^#\## vnoremap -# :s#^\### fun! JumpToDef() if exists("*GotoDefinition_" . &filetype) call GotoDefinition_{&filetype}() else exe "norm! \" endif endf " Jump to tag " nn :call JumpToDef() " ino :call JumpToDef()i "nn :Rg nnoremap ff :Rg autocmd FileType ocaml nmap :MerlinTypeOf " replace currently selected text with default register " without yanking it vnoremap p "_dP let g:ycm_autoclose_preview_window_after_completion = 1 let g:ycm_min_num_of_chars_for_completion = 99 let g:flow#enable = 0 command! -bang -nargs=* -complete=file Make AsyncRun -program=make @ let g:ctrlp_custom_ignore = { \ 'dir': '\v[\/](\.git|node_modules|nimcache|\.sass-cache|bower_components|build|dist)$', \ 'file': '\v\.(exe|so|dll|o)$', \ 'link': '', \ } let g:ctrlp_prompt_mappings = { \ 'AcceptSelection("e")': [''], \ 'AcceptSelection("t")': ['', '<2-LeftMouse>'], \ } " noremap ˚ :tabr " noremap ∆ :tabl noremap ˙ gT noremap ¬ gt noremap gT noremap gt " inoremap ˚ :tabri " inoremap ∆ :tabli inoremap ˙ gTi inoremap ¬ gti inoremap gTi inoremap gti set clipboard=unnamedplus let g:EasyClipShareYanks = 1 "set statusline+=%#warningmsg# "set statusline+=%{SyntasticStatuslineFlag()} "set statusline+=%* "let g:syntastic_always_populate_loc_list = 1 "let g:syntastic_auto_loc_list = 1 "let g:syntastic_check_on_wq = 0 let g:gitsigns_head = "main" " lewis6991/gitsigns.nvim lua << EOF require('gitsigns').setup({word_diff = true }) EOF " let g:vimspector_install_gadgets = [ 'debugpy', 'vscode-cpptools', 'CodeLLDB' ] " puremourning/vimspector " fun! GotoWindow(id) " :call win_gotoid(a:id) " endfun " func! AddToWatch() " let word = expand("") " call vimspector#AddWatch(word) " endfunction " let g:vimspector_base_dir = expand('$HOME/.config/vimspector-config') " let g:vimspector_sidebar_width = 60 " nnoremap da :call vimspector#Launch() " nnoremap dc :call GotoWindow(g:vimspector_session_windows.code) " nnoremap dv :call GotoWindow(g:vimspector_session_windows.variables) " nnoremap dw :call GotoWindow(g:vimspector_session_windows.watches) " nnoremap ds :call GotoWindow(g:vimspector_session_windows.stack_trace) " nnoremap do :call GotoWindow(g:vimspector_session_windows.output) " nnoremap di :call AddToWatch() " nnoremap dx :call vimspector#Reset() " nnoremap dX :call vimspector#ClearBreakpoints() " nnoremap :call vimspector#StepOut() " nnoremap :call vimspector#StepInto() " nnoremap :call vimspector#StepOver() " nnoremap d_ :call vimspector#Restart() " nnoremap dn :call vimspector#Continue() " nnoremap drc :call vimspector#RunToCursor() " nnoremap dh :call vimspector#ToggleBreakpoint() " nnoremap de :call vimspector#ToggleConditionalBreakpoint() " let g:vimspector_sign_priority = { " \ 'vimspectorBP': 998, " \ 'vimspectorBPCond': 997, " \ 'vimspectorBPDisabled': 996, " \ 'vimspectorPC': 999, " \ } let $NVIM_TUI_ENABLE_TRUE_COLOR=1 set termguicolors lua require'colorizer'.setup() nnoremap :MundoToggle nnoremap riW ciW0 nnoremap riw ciw0 let g:EasyClipShareYanks = 1 "let base16colorspace=256 " set background=dark "colorscheme base16-default-dark " ## added by OPAM user-setup for vim / base ## 93ee63e278bdfc07d1139a748ed3fff2 ## you can edit, but keep this line "let g:airline_theme='one' set background=dark syntax enable "colorscheme one "let ayucolor="dark" " for dark version of theme "colorscheme ayu " Vim color file " vimdefault " Created by Joey with ThemeCreator (https://github.com/mswift42/themecreator) if exists("syntax on") syntax reset endif set t_Co=256 "let g:colors_name = "vimdefault" " Define reusable colorvariables. let s:bg="#000000" let s:fg="#ffffff" let s:fg2="#ebebeb" let s:fg3="#d6d6d6" let s:fg4="#c2c2c2" let s:bg2="#141414" let s:bg3="#292929" let s:bg4="#3d3d3d" let s:keyword="#a65a00" let s:builtin="#10a500" let s:const= "#CC0000" let s:comment="#2d64a4" let s:func="#00a0e2" let s:str="#C40000" let s:type="#3B9B00" let s:ident="#06989A" let s:preproc="#75507B" let s:var="#ffffff" let s:warning="#e81050" let s:warning2="#e86310" let s:parenbg="#3a71c9" let s:todo="yellow" exe 'hi Normal guifg='s:fg' guibg='s:bg exe 'hi Cursor guifg='s:bg' guibg='s:fg exe 'hi CursorLine guibg='s:bg2 exe 'hi CursorColumn guibg='s:bg2 exe 'hi ColorColumn guibg='s:bg2 exe 'hi LineNr guifg='s:fg2' guibg='s:bg2 exe 'hi VertSplit guifg='s:fg3' guibg='s:bg3 exe 'hi MatchParen guifg='s:fg' guibg='s:parenbg' gui=none' exe 'hi Pmenu guifg='s:fg' guibg='s:bg2 exe 'hi PmenuSel guibg='s:bg3 exe 'hi IncSearch guifg='s:bg' guibg='s:keyword exe 'hi Directory guifg='s:const exe 'hi Folded guifg='s:fg4' guibg='s:bg exe 'hi Boolean guifg='s:const exe 'hi Character guifg='s:const exe 'hi Comment guifg='s:comment exe 'hi Conditional guifg='s:keyword exe 'hi Constant guifg='s:const exe 'hi Define guifg='s:keyword exe 'hi DiffAdd guifg=#000000 guibg=#ddffdd gui=bold' exe 'hi DiffDelete guifg=#ff0000' exe 'hi DiffChange guibg='s:bg2 exe 'hi DiffText guifg=#000000 guibg=#ddddff gui=bold' exe 'hi ErrorMsg guifg='s:warning' guibg='s:bg2' gui=bold' exe 'hi WarningMsg guifg='s:fg' guibg='s:warning2 exe 'hi Float guifg='s:const exe 'hi Function guifg='s:func exe 'hi Identifier guifg='s:ident' gui=italic' exe 'hi Keyword guifg='s:keyword' gui=bold' exe 'hi Label guifg='s:var exe 'hi NonText guifg='s:bg4' guibg='s:bg2 exe 'hi Number guifg='s:const exe 'hi Operater guifg='s:keyword exe 'hi PreProc guifg='s:preproc exe 'hi Special guifg='s:preproc exe 'hi SpecialKey guifg='s:fg2' guibg='s:bg2 exe 'hi Statement guifg='s:keyword exe 'hi StorageClass guifg='s:type' gui=italic' exe 'hi String guifg='s:str exe 'hi Tag guifg='s:keyword exe 'hi Title guifg='s:fg' gui=bold' exe 'hi Todo guibg='s:todo' guifg=black gui=bold' exe 'hi Type guifg='s:type' gui=none' exe 'hi Underlined gui=underline' " Ruby Highlighting exe 'hi rubyAttribute guifg='s:builtin exe 'hi rubyLocalVariableOrMethod guifg='s:var exe 'hi rubyGlobalVariable guifg='s:var' gui=italic' exe 'hi rubyInstanceVariable guifg='s:var exe 'hi rubyKeyword guifg='s:keyword exe 'hi rubyKeywordAsMethod guifg='s:keyword' gui=bold' exe 'hi rubyClassDeclaration guifg='s:keyword' gui=bold' exe 'hi rubyClass guifg='s:keyword' gui=bold' exe 'hi rubyNumber guifg='s:const " Python Highlighting exe 'hi pythonBuiltinFunc guifg='s:builtin " Go Highlighting exe 'hi goBuiltins guifg='s:builtin " Javascript Highlighting exe 'hi jsBuiltins guifg='s:builtin exe 'hi jsFunction guifg='s:keyword' gui=bold' exe 'hi jsGlobalObjects guifg='s:type exe 'hi jsAssignmentExps guifg='s:var " Html Highlighting exe 'hi htmlLink guifg='s:var' gui=underline' exe 'hi htmlStatement guifg='s:keyword exe 'hi htmlSpecialTagName guifg='s:keyword " Markdown Highlighting exe 'hi mkdCode guifg='s:builtin "inoremap pumvisible() ? "\" : "\" autocmd! CompleteDone * if pumvisible() == 0 | pclose | endif " set completeopt+=preview set rtp+=/usr/local/opt/fzf function! WrapForTmux(s) if !exists('$TMUX') return a:s endif let tmux_start = "\Ptmux;" let tmux_end = "\\\" return tmux_start . substitute(a:s, "\", "\\", 'g') . tmux_end endfunction let &t_SI .= WrapForTmux("\[?2004h") let &t_EI .= WrapForTmux("\[?2004l") function! XTermPasteBegin() set pastetoggle=[201~ set paste return "" endfunction inoremap [200~ XTermPasteBegin() " The Silver Searcher if executable('ag') " Use ag over grep set grepprg=ag\ --nogroup\ --nocolor\ --vimgrep " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' " ag is fast enough that CtrlP doesn't need to cache let g:ctrlp_use_caching = 0 endif " bind K to grep word under cursor nnoremap K :grep! "\b\b":cw set switchbuf+=usetab,newtab autocmd FileType rescript nnoremap r :RescriptFormat autocmd FileType rescript nnoremap t :RescriptTypeHint autocmd FileType rescript nnoremap b :RescriptBuild autocmd FileType rescript nnoremap gd :RescriptJumpToDefinition let g:asyncomplete_auto_completeopt=0 " Set internal encoding of vim, not needed on neovim, since coc.nvim using some " unicode characters in the file autoload/float.vim set encoding=utf-8 set nobackup set nowritebackup " TextEdit might fail if hidden is not set. set hidden " Some servers have issues with backup files, see #649. " set nobackup " set nowritebackup " Give more space for displaying messages. set cmdheight=1 " Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable " delays and poor user experience. set updatetime=300 " Don't pass messages to |ins-completion-menu|. set shortmess+=c " Always show the signcolumn, otherwise it would shift the text each time " diagnostics appear/become resolved. if has("nvim-0.5.0") || has("patch-8.1.1564") " Recently vim can merge signcolumn and number column into one set signcolumn=number else set signcolumn=yes endif au FileType python let b:coc_root_patterns = ['.git', '.env', 'venv', '.venv', 'setup.cfg', 'setup.py', 'pyrightconfig.json', 'env'] " Use tab for trigger completion with characters ahead and navigate. " NOTE: There's always complete item selected by default, you may want to enable " no select by `"suggest.noselect": true` in your configuration file. " NOTE: Use command ':verbose imap ' to make sure tab is not mapped by " other plugin before putting this into your config. inoremap \ coc#pum#visible() ? coc#pum#next(1) : \ CheckBackspace() ? "\" : \ coc#refresh() inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" " Make to accept selected completion item or notify coc.nvim to format " u breaks current undo, please make your own choice. inoremap coc#pum#visible() ? coc#pum#confirm() \: "\u\\=coc#on_enter()\" function! CheckBackspace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction " Use to trigger completion. if has('nvim') inoremap coc#refresh() else inoremap coc#refresh() endif " Use `[g` and `]g` to navigate diagnostics " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) " GoTo code navigation. nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) " Use K to show documentation in preview window. nnoremap K :call show_documentation() function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('') elseif (coc#rpc#ready()) call CocActionAsync('doHover') else execute '!' . &keywordprg . " " . expand('') endif endfunction " Highlight the symbol and its references when holding the cursor. autocmd CursorHold * silent call CocActionAsync('highlight') " Symbol renaming. nmap rn (coc-rename) " Formatting selected code. xmap f (coc-format-selected) nmap f (coc-format-selected) augroup mygroup autocmd! " Setup formatexpr specified filetype(s). autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') " Update signature help on jump placeholder. autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') augroup end " Applying codeAction to the selected region. " Example: `aap` for current paragraph xmap a (coc-codeaction-selected) nmap a (coc-codeaction-selected) " Remap keys for applying codeAction to the current buffer. nmap ac (coc-codeaction) " Apply AutoFix to problem on the current line. nmap qf (coc-fix-current) " Map function and class text objects " NOTE: Requires 'textDocument.documentSymbol' support from the language server. xmap if (coc-funcobj-i) omap if (coc-funcobj-i) xmap af (coc-funcobj-a) omap af (coc-funcobj-a) xmap ic (coc-classobj-i) omap ic (coc-classobj-i) xmap ac (coc-classobj-a) omap ac (coc-classobj-a) " Remap and for scroll float windows/popups. nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" " Use CTRL-S for selections ranges. " Requires 'textDocument/selectionRange' support of language server. nmap (coc-range-select) xmap (coc-range-select) " Add `:Format` command to format current buffer. command! -nargs=0 Format :call CocAction('format') " Add `:Fold` command to fold current buffer. command! -nargs=? Fold :call CocAction('fold', ) " Add `:OR` command for organize imports of the current buffer. command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') " Add (Neo)Vim's native statusline support. " NOTE: Please see `:h coc-status` for integrations with external plugins that " provide custom statusline: lightline.vim, vim-airline. set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} " Mappings for CoCList " Show all diagnostics. nnoremap a :CocList diagnostics " Manage extensions. nnoremap e :CocList extensions " Show commands. nnoremap c :CocList commands " Find symbol of current document. nnoremap o :CocList outline " Search workspace symbols. nnoremap s :CocList -I symbols " Do default action for next item. nnoremap j :CocNext " Do default action for previous item. nnoremap k :CocPrev " Resume latest coc list. nnoremap p :CocListResume " kassio/neoterm let g:neoterm_default_mod = 'vertical botright' " let g:neoterm_size = 100 let g:neoterm_autoinsert = 1 let g:neoterm_autoscroll = 1 let g:neoterm_term_per_tab = 1 nnoremap :Ttoggle inoremap :Ttoggle tnoremap :Ttoggle tnoremap " color scheme colorscheme codedark set cursorline filetype on autocmd ColorScheme * highlight ExtraWhitespace ctermbg=darkgreen guibg=darkgreen highlight ExtraWhitespace ctermbg=darkgreen guibg=darkgreen " highlight OverLength ctermbg=red ctermfg=black guibg=#592929 gui=bold highlight ALEError ctermbg=red guibg=#700000 highlight ALEErrorSign ctermfg=none ctermbg=black guifg=red guibg=#212121 highlight ALEWarning ctermbg=yellow guibg=#504a08 highlight ALEWarningSign ctermfg=yellow ctermbg=none guibg=#212121 guifg=#ecd517 highlight SignColumn ctermbg=darkgrey guibg=#212121 " highlight TabLineFill guibg=none guifg=none gui=none " highlight TabLineSel guibg=#353535 guifg=none " highlight TabLine guibg=none guifg=none highlight CocFadeOut ctermfg=lightgrey guifg=#8B8C92 " highlight CocHintVirtualText guifg=blue ctermbg=none guibg=none " highlight CocHintHighlight guifg=blue ctermbg=none guibg=none highlight CocHintSign guifg=#647644 ctermfg=lightblue ctermbg=darkgrey guibg=#212121 highlight CocErrorSign guifg=red ctermfg=red ctermbg=darkgrey guibg=#212121 highlight CocInlayHint guifg=#3D7671 ctermfg=lightblue ctermbg=darkgrey guibg=none highlight CocHighlightText ctermbg=lightblue guibg=#002c4b hi Normal ctermbg=none guibg=none hi EndOfBuffer ctermbg=none guibg=none "hi SignColumn ctermbg=none guibg=none hi NonText ctermbg=none guibg=none hi LineNr ctermbg=none guibg=none "hi CursorLine cterm=NONE ctermbg=black ctermfg=NONE guibg=black gui=NONE guifg=NONE set noshowmode " let g:opamshare = substitute(system('opam var share'),'\n$','','''') " execute "set rtp+=" . g:opamshare . "/merlin/vim" " ## added by OPAM user-setup for vim / base ## 93ee63e278bdfc07d1139a748ed3fff2 ## you can edit, but keep this line " let s:opam_share_dir = system("opam config var share") " let s:opam_share_dir = substitute(s:opam_share_dir, '[\r\n]*$', '', '') " let s:opam_configuration = {} " function! OpamConfOcpIndent() " execute "set rtp^=" . s:opam_share_dir . "/ocp-indent/vim" " endfunction " let s:opam_configuration['ocp-indent'] = function('OpamConfOcpIndent') " function! OpamConfOcpIndex() " execute "set rtp+=" . s:opam_share_dir . "/ocp-index/vim" " endfunction " let s:opam_configuration['ocp-index'] = function('OpamConfOcpIndex') " function! OpamConfMerlin() " let l:dir = s:opam_share_dir . "/merlin/vim" " execute "set rtp+=" . l:dir " endfunction " let s:opam_configuration['merlin'] = function('OpamConfMerlin') " let s:opam_packages = ["ocp-indent", "ocp-index", "merlin"] " let s:opam_check_cmdline = ["opam list --installed --short --safe --color=never"] + s:opam_packages " let s:opam_available_tools = split(system(join(s:opam_check_cmdline))) " for tool in s:opam_packages " " Respect package order (merlin should be after ocp-index) " if count(s:opam_available_tools, tool) > 0 " call s:opam_configuration[tool]() " endif " endfor " ## end of OPAM user-setup addition for vim / base ## keep this line let g:ale_linters = {'java': [], 'python': [], 'typescript': []} " " for normal mode - the word under the cursor " nmap di VimspectorBalloonEval " " for visual mode, the visually selected text " xmap di VimspectorBalloonEval " let g:vimspector_enable_mappings = 'HUMAN' " nnoremap :GFiles " nvim-telescope/telescope.nvim lua << EOF require('hologram').setup{ auto_display = true -- WIP automatic markdown image display, may be prone to breaking } _G.telescope_find_files_in_path = function(path) local _path = path or vim.fn.input("Dir: ", "", "dir") require("telescope.builtin").find_files({search_dirs = {_path}}) end EOF lua << EOF _G.telescope_live_grep_in_path = function(path) local _path = path or vim.fn.input("Dir: ", "", "dir") require("telescope.builtin").live_grep({search_dirs = {_path}}) end EOF lua << EOF require'nvim-treesitter.config'.setup { -- A list of parser names, or "all" (the four listed parsers should always be installed) ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "markdown", "markdown_inline", "go" }, -- Install parsers synchronously (only applied to `ensure_installed`) sync_install = false, -- Automatically install missing parsers when entering buffer -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally auto_install = true, -- List of parsers to ignore installing (for "all") ignore_install = { }, ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! highlight = { enable = true, -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is -- the name of the parser) -- list of language that will be disabled disable = { "python", "nim" }, -- Setting this to true will run `:h syntax` and tree-sitter at the same time. -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). -- Using this option may slow down your editor, and you may see some duplicate highlights. -- Instead of true it can also be a list of languages additional_vim_regex_highlighting = false, }, playground = { enable = true, disable = {}, updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code persist_queries = false, -- Whether the query persists across vim sessions keybindings = { toggle_query_editor = 'o', toggle_hl_groups = 'i', toggle_injected_languages = 't', toggle_anonymous_nodes = 'a', toggle_language_display = 'I', focus_language = 'f', unfocus_language = 'F', update = 'R', goto_node = '', show_help = '?', }, } } require('auto-session').setup { auto_save_enabled = true, auto_restore_enabled = true } EOF let b:current_syntax = 'nim' nnoremap :Telescope find_files nnoremap fd :lua telescope_find_files_in_path() nnoremap fD :lua telescope_live_grep_in_path() nnoremap ft :lua telescope_find_files_in_path("./tests") nnoremap fT :lua telescope_live_grep_in_path("./tests") " nnoremap ff :Telescope live_grep nnoremap fo :Telescope file_browser nnoremap fn :Telescope git_files nnoremap fg :Telescope git_branches nnoremap fb :Telescope buffers nnoremap fs :Telescope lsp_document_symbols nnoremap ff :Telescope live_grep nnoremap FF :Telescope grep_string " mfussenegger/nvim-dap lua << EOF local dap = require('dap') function os.capture(cmd) local f = assert(io.popen(cmd .. ' 2>&1', 'r')) local s = assert(f:read('*a')) f:close() return s end dap.adapters.lldb = { type = 'executable', command = '/opt/homebrew/opt/llvm/bin/lldb-vscode', -- adjust as needed name = "lldb" } dap.configurations.nim = { { name = "Launch", type = "lldb", request = "launch", program = function() -- return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') print("Compiling...") local filename = vim.api.nvim_buf_get_name(0) local res = os.capture('nim c --debugger:native ' .. filename) print("Running...") return filename:match("(.+)%..+$"); end, cwd = '${workspaceFolder}', stopOnEntry = false, args = function() return vim.fn.input('Args: ', '') end, -- if you change `runInTerminal` to true, you might need to change the yama/ptrace_scope setting: -- -- echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope -- -- Otherwise you might get the following error: -- -- Error on launch: Failed to attach to the target process -- -- But you should be aware of the implications: -- https://www.kernel.org/doc/html/latest/admin-guide/LSM/Yama.html runInTerminal = false }, } require('dap-python').setup('/opt/homebrew/bin/python3') -- If you want to use this for rust and c, add something like this: -- dap.configurations.c = dap.configurations.cpp -- dap.configurations.nim = dap.configurations.cpp vim.fn.sign_define('DapBreakpoint', {text='●', texthl='ErrorMsg', linehl='', numhl=''}) vim.fn.sign_define('DapBreakpointRejected', {text='●', texthl='LineNr', linehl='', numhl=''}) vim.fn.sign_define('DapLogPoint', {text='L', texthl='', linehl='', numhl=''}) vim.fn.sign_define('DapStopped', {text='→', texthl='WarningMsg', linehl='debugPC', numhl=''}) EOF function! SynGroup() let l:s = synID(line('.'), col('.'), 1) echo synIDattr(l:s, 'name') . ' -> ' . synIDattr(synIDtrans(l:s), 'name') endfun au FileType dap-repl lua require('dap.ext.autocompl').attach() nnoremap :lua for _, win in ipairs(vim.api.nvim_list_wins()) do local config = vim.api.nvim_win_get_config(win); if config.relative ~= "" then vim.api.nvim_win_close(win, false) end end nnoremap db :lua require'dap'.toggle_breakpoint() " option-o nnoremap ø :lua require'dap'.step_out() " option-K nnoremap ˚ :lua require'dap'.step_into() " option-J nnoremap ∆ :lua require'dap'.step_over() nnoremap ds :lua require'dap'.close() nnoremap dn :lua require'dap'.continue() nnoremap dk :lua require'dap'.up() nnoremap dj :lua require'dap'.down() nnoremap d_ :lua require'dap'.disconnect();require'dap'.stop();require'dap'.run_last() nnoremap dr :lua require'dap'.repl.toggle()l nnoremap rc :lua require'dap'.run_to_cursor()l nnoremap rb :lua require'dap'.reverse_continue()l "nnoremap di :lua require'dap.ui.variables'.hover() vnoremap di :lua require'dap.ui.variables'.visual_hover() nnoremap d? :lua require'dap.ui.variables'.scopes() nnoremap de :lua require'dap'.set_exception_breakpoints({"all"}) nnoremap da :lua require'debugHelper'.attach() nnoremap dA :lua require'debugHelper'.attachToRemote() nnoremap di :lua require'dap.ui.widgets'.hover() nnoremap qq :q nnoremap d? :lua local widgets=require'dap.ui.widgets';widgets.centered_float(widgets.scopes) " Plug 'nvim-telescope/telescope-dap.nvim' lua << EOF require('telescope').setup() require('telescope').load_extension('dap') EOF nnoremap df :Telescope dap frames nnoremap dc :Telescope dap commands nnoremap dh :Telescope dap list_breakpoints " theHamsta/nvim-dap-virtual-text and mfussenegger/nvim-dap let g:dap_virtual_text = v:true " TimUntersberger/neogit and sindrets/diffview.nvim lua << EOF require("neogit").setup { disable_commit_confirmation = true, integrations = { diffview = true } } EOF nnoremap gg :Neogit nnoremap gd :DiffviewOpen nnoremap gD :DiffviewOpen main nnoremap gl :Neogit log nnoremap gp :Neogit push hi GitSignsAdd ctermfg=green ctermbg=none guibg=#212121 guifg=#32cd32 gui=bold cterm=bold hi GitSignsDelete ctermfg=red ctermbg=none guibg=#212121 guifg=#ff6347 gui=bold cterm=bold hi GitSignsChange ctermfg=blue ctermbg=none guibg=#212121 guifg=#1e90ff gui=bold cterm=bold hi GitSignsAddInline ctermfg=none ctermbg=none guibg=#306C37 guifg=none gui=bold cterm=bold hi GitSignsDeleteInline ctermfg=red ctermbg=none guibg=#740009 guifg=none gui=bold cterm=bold hi GitSignsChangeInline ctermfg=blue ctermbg=none guibg=#0043AE guifg=none gui=bold cterm=bold hi GitSignsAddLnInline ctermfg=green ctermbg=none guibg=#306C37 guifg=none gui=bold cterm=bold hi GitSignsDeleteLnInline ctermfg=red ctermbg=none guibg=#740009 guifg=none gui=bold cterm=bold hi GitSignsChangeLnInline ctermfg=blue ctermbg=none guibg=#0043AE guifg=none gui=bold cterm=bold hi GitSignsAddVirtLnInline ctermfg=green ctermbg=none guibg=#306C37 guifg=none gui=bold cterm=bold hi GitSignsDeleteVirtLnInline ctermfg=red ctermbg=none guibg=#740009 guifg=none gui=bold cterm=bold hi GitSignsChangeVirtLnInline ctermfg=blue ctermbg=none guibg=#0043AE guifg=none gui=bold cterm=bold nmap :CocCommand java.debug.vimspector.start " nnoremap :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' " \ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" " \ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">" " Nim: replace comment above with comment below let @t = '/^proc ?^\_[\n]## V/\_[�kb�kb�kb^\_[\n\�kb]prc�kboc m/\.} pdd' let &t_SI = "\e[5 q" let &t_EI = "\e[2 q" au FileType vue let b:coc_root_patterns = ['.git', '.env', 'package.json', 'tsconfig.json', 'jsconfig.json', 'vite.config.ts', 'vite.config.js', 'vue.config.js', 'nuxt.config.ts'] autocmd Filetype typescript setlocal ts=2 sts=2 sw=2 expandtab autocmd Filetype vue setlocal ts=2 sts=2 sw=2 expandtab " init.vim set termguicolors set cursorline function! s:SetTransparent() abort for g in [ \ 'Normal', 'NormalNC', 'SignColumn', 'EndOfBuffer', 'FoldColumn', \ 'LineNr', 'MsgArea', 'CursorLine', 'CursorLineNr', \ 'StatusLine', 'StatusLineNC', 'WinSeparator', 'VertSplit', \ 'NormalFloat', 'FloatBorder' \ ] execute 'hi ' . g . ' ctermbg=NONE guibg=NONE' endfor endfunction augroup TransparentUI autocmd! autocmd ColorScheme * call s:SetTransparent() augroup END call s:SetTransparent() set cursorline set cursorlineopt=line hi CursorLine guibg=NONE ctermbg=NONE gui=bold cterm=bold " Bold + undercurl (very subtle if your terminal supports it) set cursorline set cursorlineopt=line hi CursorLine guibg=NONE ctermbg=NONE gui=bold,undercurl cterm=bold guisp=#777777 nmap y "+y vmap y "+y nmap p "+p vmap p "+p