aboutsummaryrefslogtreecommitdiffstats
path: root/vim/vimrc
diff options
context:
space:
mode:
authorMatthew Lemon <y@yulqen.org>2023-04-11 10:35:29 +0100
committerMatthew Lemon <y@yulqen.org>2023-04-11 10:35:29 +0100
commit918ec40cd8c51068abf58bd6992ebad15bec9f74 (patch)
tree010e21f85a2fd2f5b5c462abd50e6081d35e4281 /vim/vimrc
parent0649a7f18f4241570183c9dcf473fed04c66977f (diff)
Put back all important vim plugins
And got basic completion and go to definition working.
Diffstat (limited to '')
-rw-r--r--vim/vimrc255
1 files changed, 244 insertions, 11 deletions
diff --git a/vim/vimrc b/vim/vimrc
index 4bf6c8e..35d0661 100644
--- a/vim/vimrc
+++ b/vim/vimrc
@@ -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