diff options
author | Matthew Lemon <y@yulqen.org> | 2023-04-11 10:35:29 +0100 |
---|---|---|
committer | Matthew Lemon <y@yulqen.org> | 2023-04-11 10:35:29 +0100 |
commit | 918ec40cd8c51068abf58bd6992ebad15bec9f74 (patch) | |
tree | 010e21f85a2fd2f5b5c462abd50e6081d35e4281 /vim/vimrc | |
parent | 0649a7f18f4241570183c9dcf473fed04c66977f (diff) |
Put back all important vim plugins
And got basic completion and go to definition working.
Diffstat (limited to '')
-rw-r--r-- | vim/vimrc | 255 |
1 files changed, 244 insertions, 11 deletions
@@ -8,7 +8,7 @@ let @s = ")i\<BS>\<CR>\<Esc>" " leader let maplocalleader = "\\" -let mapleader = "," +let mapleader = " " " encryption method when using :X set cm=blowfish2 @@ -45,21 +45,43 @@ noremap <silent> <leader>rs :!clear; sh %<CR> " essential plugins call plug#begin() +Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } +Plug 'junegunn/fzf.vim' +Plug 'sheerun/vim-polyglot' +Plug 'preservim/vim-markdown' +Plug 'mhinz/vim-signify' Plug 'vim-test/vim-test' +Plug 'ledger/vim-ledger' +Plug 'jlanzarotta/bufexplorer' +Plug 'tpope/vim-fugitive' Plug 'tpope/vim-dispatch' Plug 'tpope/vim-commentary' Plug 'ycm-core/YouCompleteMe' Plug 'rose-pine/vim' Plug 'SirVer/UltiSnips' Plug 'honza/vim-snippets' +Plug 'dense-analysis/ale' +Plug 'davidhalter/jedi-vim' call plug#end() +" jedi-vim + +let g:jedi#goto_command = "<leader>d" +let g:jedi#goto_assignments_command = "<leader>g" +let g:jedi#goto_stubs_command = "<leader>s" +let g:jedi#goto_definitions_command = "" +let g:jedi#documentation_command = "K" +let g:jedi#usages_command = "<leader>n" +let g:jedi#completions_command = "<C-Space>" +let g:jedi#rename_command = "<leader>r" +let g:jedi#rename_command_keep_name = "<leader>R" + " YCM let g:ycm_enable_inlay_hints = 1 nnoremap <silent> <localleader>h <Plug>(YCMToggleInlayHints) -nnoremap <leader>jd :YcmCompleter GoTo<CR> -nnoremap <leader>jr :YcmCompleter GoToReferences<CR> -nnoremap <leader>k :YcmCompleter GetDoc<CR> +nnoremap gd :YcmCompleter GoToDefinition<CR> +nnoremap <leader>gr :YcmCompleter GoToReferences<CR> +nnoremap K :YcmCompleter GetDoc<CR> " snippets " Trigger configuration. You need to change this to something other than <tab> if you use one of the following: @@ -96,6 +118,7 @@ set hi=500 set scrolloff=0 set novisualbell set relativenumber "show line numbers +set wildignore=**/__pycache*/** set wildmenu "enable a menu that shows tab completion options in the status bar set wildchar=<TAB> set showmatch "highlights matching brackets on cursor hover @@ -142,16 +165,102 @@ if has('folding') set viewoptions=folds,options,cursor,unix,slash endif -" Check whether any buffers have been updated outside of vim -nnoremap <F5> :checktime<CR> +" from https://www.reddit.com/r/vim/comments/f5gi2g/vim_notetaking_automatic_link_creation_between/ +" copies a link from file from previous buffer for pasting into +" next buffer with "ap +function! s:copy_filename_as_mdlink() + let fname=expand("%") + let @a="[" . fname . "](./" . fname. ")" +endfunction +autocmd BufLeave * call s:copy_filename_as_mdlink() + +" Ultisnips +let g:UltiSnipsExpandTrigger="<tab>" +let g:UltiSnipsJumpForwardTrigger="<c-j>" +let g:UltiSnipsJumpBackwardTrigger="<c-k>" + +" YouCompleteMe +let g:ycm_python_interpreter_path = '.venv/bin/python3' +let g:ycm_python_sys_path = [] +let g:ycm_extra_conf_vim_data = [ + \ 'g:ycm_python_interpreter_path', + \ 'g:ycm_python_sys_path' + \] +let g:ycm_global_ycm_extra_conf = '~/.global_extra_conf.py' +nnoremap <leader>jd :YcmCompleter GoTo<CR> + +" vim-test +" use vim-dispatch to run tests in the quickfix window +" from Modern Vim Ch.4 +" the mappings below are from vim-test +" https://github.com/vim-test/vim-test +" dispatch opens send test output to quickfix window +let test#strategy = "basic" +let test#python#runner = "pytest" +let test#vim#term_position = "topleft 10" +let test#python#pytest#options = '--tb=short' +let test#go#runner = 'gotest' +"let test#go#gotest#options = '-v' +" To run mypy using vim-dispath -with Dispatch +autocmd FileType python let b:dispatch = 'mypy --ignore-missing-imports' + +" Set wrap option for Markdown files +autocmd FileType markdown setlocal linebreak + +" test +nmap <silent> tn :TestNearest<CR> +nmap <silent> ts :TestSuite<CR> +nmap <silent> tf :TestFile<CR> +nmap <silent> <S-F10> :TestLast<CR> +nmap <silent> t<C-g> :TestVisit<CR> + +" disable folding by default with vim-markdown +let g:vim_markdown_folding_disabled = 1 +" +" ALE ale config +let g:ale_echo_msg_format = '[%linter%] %s [%severity%]' +let g:ale_sign_error = '✘' +let g:ale_sign_warning = '⚠' +let g:ale_lint_on_text_changed = 0 +let g:ale_hover_cursor = 1 +let g:ale_enabled = 1 +let g:ale_sign_column_always = 1 +let g:ale_open_list = 0 +let g:ale_set_highlights = 1 +let g:ale_set_signs = 1 +let g:ale_set_loclist = 1 +let g:ale_set_quickfix = 0 +let g:ale_echo_cursor = 1 +let g:ale_echo_msg_error_str = 'Error' +let g:ale_echo_msg_format = '%linter% - %code: %%s' +let g:ale_loclist_msg_format = '%linter% - %code: %%s' +let g:ale_echo_msg_warning_str = 'Warning' +let g:ale_linters = {'python': ['ruff', 'flake8', 'mypy'], +\ 'ocaml': ['merlin'], +\ 'cpp': ['clang'], +\ 'yaml': ['yamllint'], +\ 'c': ['clang'], +\ 'go': ['gopls', 'golint', 'gofmt'], + \} +let g:ale_fixers = { +\ 'python': ['ruff', 'isort', 'yapf', 'black'], +\ 'go': ['gofmt'], +\ 'rust': ['rustfmt'] +\ } +let g:ale_python_mypy_ignore_invalid_syntax = 1 +let g:ale_python_mypy_executable = 'mypy' +let g:ale_python_mypy_options = '--config-file mypy.ini' +" let g:ale_sign_error = '>>' +let g:ale_fix_on_save = 1 +let g:ale_linters_explicit = 0 " Python - keybindings -"nnoremap <leader>Ts :setlocal makeprg=pytest\ -q\ %<cr> -"nnoremap <leader>Tf :setlocal makeprg=flake8\ %<cr> -"nnoremap <leader>Tb :setlocal makeprg=black\ %<cr> -"nnoremap <leader>Tm :setlocal makeprg=mypy\ --ignore-missing-imports\ %<cr> +nnoremap <leader>Ts :setlocal makeprg=pytest\ -q\ %<cr> +nnoremap <leader>Tf :setlocal makeprg=flake8\ %<cr> +nnoremap <leader>Tb :setlocal makeprg=black\ %<cr> +nnoremap <leader>Tm :setlocal makeprg=mypy\ --ignore-missing-imports\ %<cr> " then run the one set with this... -"nnoremap <leader>Tt :make!<cr> +nnoremap <leader>Tt :make!<cr> " clear search highlights nnoremap <leader><space> :noh<cr>:call clearmatches()<cr> @@ -163,6 +272,120 @@ let g:netrw_preview = 1 autocmd BufNewFile,BufReadPost *.md map <leader>jj <Esc>:r! date +" - \%H:\%M: "<ENTER>kJA<Esc>$<space><Esc> autocmd BufNewFile,BufReadPost *.md map <leader>jd <Esc>:r! date +"(\%Y-\%m-\%dT\%H:\%M)"<ENTER>i<backspace><space><Esc> +syntax on "turn syntax highlighting on +filetype plugin indent on "load plugin and indent files associated a detected filetype +runtime macros/matchit.vim "allows jumping between brackets with % in normal mode + +" Go stuff +let g:go_highlight_fields = 1 +let g:go_highlight_functions = 1 +let g:go_highlight_function_calls = 1 +let g:go_highlight_extra_types = 1 +let g:go_highlight_operators = 1 +let g:go_doc_keywordprg_enabled = 1 +let g:go_list_height = 0 +let g:go_highlight_operators = 1 +let g:go_highlight_function_parameters = 1 +let g:go_doc_max_height = 50 +let g:go_doc_popup_window = 1 +let g:go_list_height = 10 + + +" vim-go debugger window settings +let g:go_debug_windows = { + \ 'vars': 'leftabove 40vnew', + \ 'stack': 'leftabove 20new', + \ 'goroutines': 'botright 10new', + \ 'out': 'botright 5new', +\ } + +" vim-go and gopls +let g:go_def_mode='gopls' +let g:go_info_mode='gopls' +let g:go_play_browser_command = 'firefox %URL% &' +let g:go_test_show_name = 1 +let g:go_auto_type_info = 1 +let test#go#runner = 'gotest' +let g:go_term_mode = "split" +let g:go_term_height = 50 +let g:go_highlight_fields = 1 +let g:go_highlight_functions = 1 + +"autocmd FileType go nmap <leader>r :w<CR>:split <bar> terminal go run %<CR> +autocmd FileType go nmap <leader>R :GoRun<CR> +" highlights the variable in the file for you.. +"let g:go_auto_sameids = 1 +" auto import... +let g:go_fmt_command = "goimports" +" automatic type info on cursor +let g:go_auto_type_info = 2 +let g:go_snippet_engine = "ultisnips" +au Filetype go nmap <leader>ga <Plug>(go-alternate-edit) +au Filetype go nmap <leader>gah <Plug>(go-alternate-split) +au Filetype go nmap <leader>gav <Plug>(go-alternate-vertical) +au Filetype go nmap <leader>gaf <Plug>(go-fmt) +au Filetype go nmap <leader>gal <Plug>(go-lint) +au Filetype go nmap <leader>gbx <Plug>(go-deps) +au FileType go nmap <F8> :GoTestFunc -short<cr> +au FileType go nmap <F10> :GoTest -short<cr> +au FileType go nmap <F9> :DlvToggleBreakpoint<CR> +au FileType go nmap <S-F9> :DlvTest<CR> +au FileType go nmap <F11> :DlvDebug<CR> +au FileType go nmap <S-F5> :GoRename<CR> + +" FZF +" This is the default extra key bindings +let g:fzf_action = { + \ 'ctrl-t': 'tab split', + \ 'ctrl-x': 'split', + \ 'ctrl-v': 'vsplit' } + +" - FZF Popup window (center of the screen) +let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } } + +" Customize fzf colors to match your color scheme +let g:fzf_colors = +\ { 'fg': ['fg', '#f8f8f2'], + \ 'bg': ['bg', '#282a36'], + \ 'hl': ['fg', '#bd93f9'], + \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], + \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], + \ 'hl+': ['fg', 'Statement'], + \ 'info': ['fg', '#ffb86c'], + \ 'prompt': ['fg', '#50fa7b'], + \ 'pointer': ['fg', 'Exception'], + \ 'marker': ['fg', 'Keyword'], + \ 'spinner': ['fg', '#ffb86c'], + \ 'header': ['fg', '#6272a4'] } +" More fzf settings +" (https://github.com/zenbro/dotfiles/blob/master/.nvimrc#L151-L187) + let g:fzf_nvim_statusline = 0 " disable statusline overwriting + + " copy the path of the current file into the system clipboard +"nnoremap <leader>y :let @+=expand('%:p')<CR>:call system("true")<CR>:let @"=@+<CR>:echo "File path copied to clipboard: " . @+<CR> +nnoremap <leader>y :let @*=expand('%:p')<CR>:call system("true")<CR>:let @+=@*<CR>:echo "File path copied to clipboard: " . @+<CR> + +" Alternatively, format is as Markdown link +nnoremap <leader>Y :let @+=printf("[%s](%s)", expand('%:t'), "file://" . expand('%:p'))<CR>:call system("true")<CR>:let @"=@+<CR>:echo "Markdown link copied to clipboard: " . @+<CR> + +" command history is :History: + nnoremap <C-s> :GFiles!<CR> + nnoremap <leader><C-p> :<C-u>FZF!<CR> + nnoremap <leader>t :Files<CR> + nnoremap <leader>o :Tags<CR> + nnoremap <leader>h :History<CR> + nnoremap <silent> <leader>0 :Files<CR> + nnoremap <silent> <leader>; :BLines<CR> + nnoremap <silent> <leader>l :Lines<CR> + nnoremap <silent> <leader>o :BTags<CR> + nnoremap <silent> <leader>bu :Buffers<CR> + nnoremap <silent> <leader>? :History:<CR> + " nnoremap <silent> <leader>/ :execute 'Ag ' . input('Ag/')<CR> + nnoremap <silent> <leader>ft :Filetypes<CR> + nnoremap <silent> <leader>CC :Commands<CR> + imap <C-x><C-f> <plug>(fzf-complete-file-ag) + imap <C-x><C-l> <plug>(fzf-complete-line) + " ghetto note system " Go to index of notes nnoremap <leader>ni :e $NOTES_DIR/index.md<CR>:cd $NOTES_DIR<CR> @@ -187,6 +410,16 @@ nnoremap <C-p>a :Rg "" Quick Editing vimrc nnoremap <leader>ev <C-w>s<C-w>j<C-w>L:e $MYVIMRC<cr> +syntax enable +let g:solarized_termcolors=256 +let g:gruvbox_termcolors=256 +let g:gruvbox_contrast_dark='hard' +let g:gruvbox_contrast_light='hard' +let g:gruvbox_hls_cursor='orange' +let g:gruvbox_sign_column='bg0' +let g:gruvbox_number_column='bg0' +let g:gruvbox_invert_signs='0' +let g:gruvbox_improved_strings='0' set background=dark "colorscheme hipster colorscheme rosepine |