aboutsummaryrefslogblamecommitdiffstats
path: root/vim/vimrc-sept24
blob: 02a117078883b04094a7c52ab198dacbf4346ee3 (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                                                      
                                                       












































                                                                                                                                                                                                       
                    
 


                                                                  
                                    
 













































                                                                                                     
                                                         
               
                


























                               
            










                                                                   

                                     


























                                                          
                               

                                                   
                         
                        
                         



                                                                                                                          
                           












                                                 

                                                 
               































































                                                                                                                 
 


































                                                                         














































                                                                      
                          













                                                                  
                                                       











                                                        
                                





                                               
                                     
































































































                                                                                                                                

                                                   


                                    

                                    





                                      
                     
                    
                
                    


































































                                                                                                   
                          






























                                                              
" Setup 
set nocompatible
filetype indent on
filetype plugin on
" syntax on
runtime macros/matchit.vim	"allows jumping between brackets with % in normal mode
" 
" Leaders 
let maplocalleader = "\\"
let mapleader = ","
nnoremap <leader>rs :!ruff check --select I --fix .<cr>
nnoremap <leader>tsk 0i- [ ] 
nnoremap <silent> <leader>idate :.!date +"\%F"<CR>Ea<space>
nnoremap <silent> <leader>mdate :.!date -Iminutes<CR>Ea<space>
nnoremap <leader>q :call TaskWarriorAddCurrentLine()<CR>
" nnoremap <C-h> :tabprevious<cr>
" nnoremap <C-l> :tabnext<cr>
" switch between tabs....
nnoremap <tab> gt
" pandoc command to generate weekly plan page in Firefox (or not, if we just
" wish to refresh)
nnoremap <leader>w :!pandoc /home/lemon/Documents/Notes/MOD/Projects/weekly_planning.md --css /home/lemon/.local/share/pandoc/templates/mystyles.css -s -o /tmp/toss.html; firefox /tmp/toss.html &<cr>
nnoremap <leader>W :!pandoc /home/lemon/Documents/Notes/MOD/Projects/weekly_planning.md --css /home/lemon/.local/share/pandoc/templates/mystyles.css -s -o /tmp/toss.html<cr>
" Open vimrc
nnoremap <leader>ev <C-w>s<C-w>j<C-w>L:e $HOME/.vim/vimrc<cr>
" Place timestamps, be it date (YYYY-MM-DD) or time (HH:MM:SS).
if (exists("*strftime"))
	noremap <silent> <leader>date "=strftime("%F")<CR>p9h
	noremap <silent> <leader>time "=strftime("%X")<CR>p7h
endif
" Generate ctags for current working directory
nnoremap <leader>tt :silent !ctags -R . <CR>:redraw!<CR>
" notes stuff - from https://www.edwinwenink.xyz/posts/43-notes_tagging/
" Go to index of notes and set working directory to my notes
nnoremap <leader>ni :e $NOTES_DIR/index.md<CR>:cd $NOTES_DIR<CR>
" related to https://oleksii.shmalko.com/2014/using-vim-as-c-cpp-ide/
" to enable putting a config file in the proejct directory
" clear search highlights
nnoremap <leader><space> :noh<cr>:call clearmatches()<cr>
nnoremap <leader><C-p> :<C-u>FZF!<CR>
nnoremap <C-p>g :Files<CR>
nnoremap <C-p>p :GitFiles<CR>
nnoremap <leader>o :Tags<CR>
nnoremap <leader>h :History<CR>
nnoremap <silent> <leader>0 :Files<CR>
nnoremap <silent> <leader>l :BLines<CR>
nnoremap <silent> <leader>; :Lines<CR>
nnoremap <silent> <leader>o :BTags<CR>
nnoremap <C-p>b :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>
" Open quickfix list in a right vertical split (good for Ngrep results)
command! Vlist botright vertical copen | vertical resize 50
nnoremap <leader>v : Vlist<CR>
set pastetoggle=<F3>

" Here we are going to switch on column highlighting in HTML files
" see https://www.youtube.com/watch?v=DeLBFiQ_LEQ
autocmd FileType htmldjango,html setlocal cuc cul
hi ColumnColor ctermbg=red term=none

" In pursuit of the single text file idea, which uses TODO, IDEA, FLAG
" as tags at the start of lines, this function is a vim-native replacement
" for fzf BLines, which does get a bit fuzzy sometimes. Not a biggie.
" Do do a sort of fuzzy line match in the buffer insread
" of BLines - call with :SearchAndAddToQuickfix ^IDEA and it will
" open in quickfix:
function! SearchAndAddToQuickfix(pattern)
    " Clear the current quickfix list
    call setqflist([])

    " Initialize an empty list to store quickfix items
    let l:qf_list = []

    " Iterate over each line in the buffer to find matches
    for l:num in range(1, line('$'))
        let l:line = getline(l:num)

        " If the line matches the search pattern, add it to the quickfix list
        if l:line =~ a:pattern
            call add(l:qf_list, {'filename': expand('%:p'), 'lnum': l:num, 'col': 1, 'text': l:line})
        endif
    endfor

    " Set the quickfix list with the collected items
    if !empty(l:qf_list)
        call setqflist(l:qf_list, 'r')
        " Open the quickfix window
        copen
    else
        echo "No matches found for pattern: " . a:pattern
    endif
endfunction

" Command to use the function, :SearchAndAddToQuickfix [pattern]
command! -nargs=1 SearchAndAddToQuickfix call SearchAndAddToQuickfix(<q-args>)
" Define a keybinding to call SearchAndAddToQuickfix
nnoremap <leader>f :call SearchAndAddToQuickfix(input('Search term: '))<CR>

" 
" Options 
set clipboard=unnamed,unnamedplus " just past in with out needing "*
set autoread
set ttyfast
set exrc
set nocuc
set secure
set updatetime=300 " https://github.com/neoclide/coc.nvim
set scrolloff=1
set history=2000
set encoding=utf-8
set wrap
set wrapmargin=0
set wildignore=**/__pycache*/**
set wildoptions=pum
set wildmenu
set wildchar=<TAB>
set showmatch
set ruler
set showcmd
set nohlsearch
set incsearch
set ignorecase
set smartindent
set smartcase
set tabstop=4
set softtabstop=4
set shiftwidth=4
set splitbelow 
set noswapfile
set nobackup
set splitright
set autoindent
set expandtab
set hidden
set path+=**
" set relativenumber
set nonumber
set more
set signcolumn=number
set colorcolumn=0
set equalalways
set showmode
set nolist
set listchars=tab:»-,trail:␣,leadmultispace:---+,eol:\\U000021b5
set shortmess+=c
set tags+=./tags
set background=dark
set completeopt=menuone,longest
"set omnifunc=syntaxcomplete#Complete
set omnifunc=ale#completion#OmniFunc
" 
" Folding 
if has('folding')
	set foldmethod=marker " default
	" set foldmethod=syntax
"	set foldmarker=#\ ,#\ 
	set viewoptions=folds,options,cursor,unix,slash
endif
" disable folding by default with vim-markdown
let g:vim_markdown_folding_disabled = 1
" 
" Remaps 
let @x = 'o- [ ] '
noremap <silent> J 10j
noremap <silent> K 10k
" macro to go to end of sentence and add a line break (for
" one-line-per-sentence vimming...)
let @s = ")i\<BS>\<CR>\<Esc>"
" remap :W to :w - :W was previous Windows in fzf
command! W w
" Open Fern with Ctrl-N
nnoremap <C-n> :Fern -drawer .<CR> <C-w>l
" 
" Plugins 
call plug#begin()
"Plug 'vim-scripts/AutoComplPop'
Plug 'mattn/emmet-vim',
" Plug 'ycm-core/YouCompleteMe'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'github/copilot.vim'
Plug 'ayu-theme/ayu-vim'
Plug 'github/copilot.vim'
Plug 'airblade/vim-tailwind'
Plug 'vim-perl/vim-perl', { 'for': 'perl', 'do': 'make clean carp dancer highlight-all-pragmas moose test-more try-tiny' }
Plug 'morhetz/gruvbox'
Plug 'eemed/sitruuna.vim'
Plug 'sheerun/vim-polyglot'
Plug 'preservim/vim-markdown'
Plug 'mhinz/vim-signify'
Plug 'vim-test/vim-test'
Plug 'ledger/vim-ledger'
Plug 'fatih/vim-go', {'do': ':GoUpdateBinaries' }
Plug 'tpope/vim-dispatch'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-unimpaired'
Plug 'tpope/vim-fugitive'
Plug 'SirVer/UltiSnips'
Plug 'honza/vim-snippets'
Plug 'dense-analysis/ale'
" Plug 'neoclide/coc.nvim', {'branch': 'release'}
"Plug 'gergap/vim-ollama'
call plug#end()

" " New CoC stuff.... https://github.com/neoclide/coc.nvim

" " Use `[g` and `]g` to navigate diagnostics
" " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list
" nmap <silent> [g <Plug>(coc-diagnostic-prev)
" nmap <silent> ]g <Plug>(coc-diagnostic-next)

" " GoTo code navigation
" nmap <silent> gd <Plug>(coc-definition)
" nmap <silent> gy <Plug>(coc-type-definition)
" nmap <silent> gi <Plug>(coc-implementation)
" nmap <silent> gr <Plug>(coc-references)

" " Use K to show documentation in preview window
" nnoremap <silent> K :call ShowDocumentation()<CR>

" function! ShowDocumentation()
"   if CocAction('hasProvider', 'hover')
"     call CocActionAsync('doHover')
"   else
"     call feedkeys('K', 'in')
"   endif
" endfunction

" " Highlight the symbol and its references when holding the cursor
" autocmd CursorHold * silent call CocActionAsync('highlight')

" " Formatting selected code
" xmap <leader>f  <Plug>(coc-format-selected)
" nmap <leader>f  <Plug>(coc-format-selected)

" " Remap keys for applying code actions at the cursor position
" nmap <leader>ac  <Plug>(coc-codeaction-cursor)
" " Remap keys for apply code actions affect whole buffer
" nmap <leader>as  <Plug>(coc-codeaction-source)
" " Apply the most preferred quickfix action to fix diagnostic on the current line
" nmap <leader>qf  <Plug>(coc-fix-current)

" " Remap keys for applying refactor code actions
" nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
" xmap <silent> <leader>r  <Plug>(coc-codeaction-refactor-selected)
" nmap <silent> <leader>r  <Plug>(coc-codeaction-refactor-selected)

" " Run the Code Lens action on the current line
" nmap <leader>cl  <Plug>(coc-codelens-action)

" " Remap <C-f> and <C-b> to scroll float windows/popups
" if has('nvim-0.4.0') || has('patch-8.2.0750')
"   nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
"   nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
"   inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
"   inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
"   vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
"   vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
" endif

" " Add `:Format` command to format current buffer
" command! -nargs=0 Format :call CocActionAsync('format')

" " Add `:OR` command for organize imports of the current buffer
" command! -nargs=0 OR   :call     CocActionAsync('runCommand', 'editor.action.organizeImport')

" " END OF COC
"
"" vim-ollama
"" Default chat model
"let g:ollama_chat_model = 'llama3.1'
"
"" Codellama models
""let g:ollama_model = 'codellama:13b-code'
"" let g:ollama_model = 'codellama:7b-code'
"" let g:ollama_model = 'codellama:code'
"
"" Codegemma (small and fast)
"let g:ollama_model = 'codegemma:latest'
"" let g:ollama_model = 'codegemma:2b'
"let g:ollama_fim_prefix = '<|fim_prefix|>'
"let g:ollama_fim_middle = '<|fim_middle|>'
"let g:ollama_fim_suffix = '<|fim_suffix|>'
"
"" Deepseek-coder-v2
""let g:ollama_model = 'deepseek-coder-v2:16b-lite-base-q4_0'
"" let g:ollama_fim_prefix = '<|fim▁begin|>'
"" let g:ollama_fim_suffix = '<|fim▁hole|>'
"" let g:ollama_fim_middle = '<|fim▁end|>'
"
"" 
"" Snippets 
"" Trigger configuration. You need to change this to something other than
""<tab> if you use one of the following:
"" - https://github.com/Valloric/YouCompleteMe
"" - https://github.com/nvim-lua/completion-nvim
"let g:UltiSnipsExpandTrigger="<C-y>"
""let g:UltiSnipsExpandTrigger="<S-t>"
"let g:UltiSnipsJumpForwardTrigger="<S-f>"
"let g:UltiSnipsJumpBackwardTrigger="<S-b>"
"let g:ycm_key_list_select_completion=[]
"let g:ycm_key_list_previous_completion=[]
""
" 
"  emmet
" being very explicit, which is not required
autocmd FileType css imap html <tab> <plug>(emmet-expand-abbr)
let g:user_emmet_leader_key = '<C-b>'
let g:user_emmet_expandabbr_key = '<C-b>,'
let g:user_emmet_expandword_key = '<C-b>;'
let g:user_emmet_update_tag = '<C-b>u'
let g:user_emmet_balancetaginward_key = '<C-b>d'
let g:user_emmet_balancetagoutward_key = '<C-b>D'
let g:user_emmet_next_key = '<C-b>n'
let g:user_emmet_prev_key = '<C-b>N'
let g:user_emmet_imagesize_key = '<C-b>i'
let g:user_emmet_togglecomment_key = '<C-b>/'
let g:user_emmet_splitjointag_key = '<C-b>j'
let g:user_emmet_removetag_key = '<C-b>k'
let g:user_emmet_anchorizeurl_key = '<C-b>a'
let g:user_emmet_anchorizesummary_key = '<C-b>A'
let g:user_emmet_mergelines_key = '<C-b>m'
let g:user_emmet_codepretty_key = '<C-b>c'
"
" vim-tailwind 
function! s:is_tailwind()
  return !empty(findfile('tailwind.config.js', '.;')) ||
       \ !empty(findfile('theme/static_src/tailwind.config.js', '.;'))
endfunction

nmap <silent> <buffer> gk <Plug>(tailwind-lookup)

autocmd BufEnter *.html,*.slim if s:is_tailwind() |
      \   setlocal omnifunc=tailwind#Complete |
      \ endif
" 
" ALE 
let g:ale_enabled = 1
let g:ale_set_balloons = 0
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 = 1
let g:ale_hover_cursor = 1
let g:ale_virtualtext_cursor = 'disabled'
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 = 'ALE Error'
let g:ale_echo_msg_format = 'ALE: %linter% - %code: %%s'
let g:ale_loclist_msg_format = 'ALE: %linter% - %code: %%s'
let g:ale_echo_msg_warning_str = 'ALE Warning'
let g:ale_linters = {'python': ['ruff', 'mypy'],
\                    'ocaml': ['merlin'],
\					 'javascript': ['eslint'],
\                    'cpp': ['clangd'],
\                    'yaml': ['yamllint'],
\                    'c': ['clangd'],
\                    'go': ['gopls', 'golint', 'gofmt'],
 \}
let g:ale_fixers = {
\           'python': ['ruff_format', 'isort', 'yapf'],
\	        'javascript': ['eslint'],
\           'go': ['gofmt', 'goimports', 'gopls'],
\	        'cpp': ['clang-format'],
\	        'c': ['clang-format'],
\           '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
let g:ale_completion_enabled = 1
" Map movement through errors without wrapping.
" nmap <silent> <C-k> <Plug>(ale_previous)
" nmap <silent> <C-j> <Plug>(ale_next)
" OR map keys to use wrapping.
nmap <silent> <C-k> <Plug>(ale_previous_wrap)
nmap <silent> <C-j> <Plug>(ale_next_wrap)
"set omnifunc=ale#completion#OmniFunc
" 
" :grep use ripgrep 
if executable('rg')
    set grepprg=rg\ --color=never\ --vimgrep
endif

" and search with ripgrep
command! -bang -nargs=* Rg
      \ call fzf#vim#grep(
      \   'rg --column --line-number --no-heading --color=always --ignore-case '.shellescape(<q-args>), 1,
      \   <bang>0 ? fzf#vim#with_preview('up:60%')
      \           : fzf#vim#with_preview('right:50%:hidden', '?'),
      \   <bang>0)

nnoremap <C-p>a :Rg 
" 
" 'Notes Grep' with ripgrep (see grepprg) 
" -i case insensitive
" -g glob pattern
" ! to not immediately open first search result
"command! -nargs=1 Ngrep :silent grep! "<args>" -i -g '*.md' $NOTES_DIR | execute ':redraw!'
command! -nargs=1 Ngrep vimgrep "<args>" $NOTES_DIR/**/*.md
nnoremap <leader>nn :Ngrep 
" 
" vim-test 
nmap <silent> tn :TestNearest<CR>
nmap <silent> tf :TestFile<CR>
nmap <silent> ts :TestSuite<CR>
nmap <silent> tl :TestLast<CR>
nmap <silent> <leader>tv :TestVisit<CR>
let test#strategy = "basic"
let test#python#pytest#options = '-q -s'
let test#python#runner = 'pytest'
let test#vimterminal#term_position = "belowright"
" 
" Titbits 
" " Increment an ordered (numbered) list with <leader><cr>
" inoremap <leader><cr> <esc>yyp<C-a>
" " sudo write
" command! S :w !sudo tee %

"nnoremap <Tab> %
nnoremap <C-@> :call system("wl-copy", @")<CR>
xnoremap <silent> <C-@> :w !wl-copy<CR><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

  nnoremap <C-s> :GFiles!<CR>
  imap <C-x><C-f> <plug>(fzf-complete-file-ag)
  imap <C-x><C-l> <plug>(fzf-complete-line)
" 
" Colorscheme 
" This is imported from the old ephemera.vim file which has now been removed
"
" I got the following from gruvbox docs
"Use 24-bit (true-color) mode in Vim/Neovim when outside tmux.
"If you're using tmux version 2.2 or later, you can remove the outermost $TMUX check and use tmux's 24-bit color support
"(see < http://sunaku.github.io/tmux-24bit-color.html#usage > for more information.)
if (has("nvim"))
"For Neovim 0.1.3 and 0.1.4 < https://github.com/neovim/neovim/pull/2198 >
	let $NVIM_TUI_ENABLE_TRUE_COLOR=1
endif
"For Neovim > 0.1.5 and Vim > patch 7.4.1799 < https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162 >
"Based on Vim patch 7.4.1770 (`guicolors` option) < https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd >
" < https://github.com/neovim/neovim/wiki/Following-HEAD#20160511 >
if (has("termguicolors"))
	set termguicolors
endif

"ayu theme
" let ayucolor="light"  " for light version of theme
let ayucolor="mirage" " for mirage version of theme
"let ayucolor="dark"   " for dark version of theme

"colorscheme gruber-darker
let g:gruvbox_contrast_dark = "hard"
let g:gruvbox_italicize_strings = -1
let g:gruvbox_improved_strings = 0
let g:gruvbox_improved_warnings = 1
let g:gruvbox_invert_indent_guides = 0
let g:gruvbox_invert_signs = 0
let g:gruvbox_italic = 0

"colorscheme evening
"colorscheme codedark
colorscheme sitruuna
"colorscheme ayu
"colorscheme evening
"colorscheme gruvbox
" 
" GPG files 
" from https://vim.fandom.com/wiki/Edit_gpg_encrypted_files
" Don't save backups of *.gpg files
set backupskip+=*.gpg
" To avoid that parts of the file is saved to .viminfo when yanking or
" deleting, empty the 'viminfo' option.
set viminfo=

augroup encrypted
  au!
  " Disable swap files, and set binary file format before reading the file
  autocmd BufReadPre,FileReadPre *.gpg
    \ setlocal noswapfile bin
  " Decrypt the contents after reading the file, reset binary file format
  " and run any BufReadPost autocmds matching the file name without the .gpg
  " extension
  autocmd BufReadPost,FileReadPost *.gpg
    \ execute "'[,']!gpg --decrypt --default-recipient-self" |
    \ setlocal nobin |
    \ execute "doautocmd BufReadPost " . expand("%:r")
  " Set binary file format and encrypt the contents before writing the file
  autocmd BufWritePre,FileWritePre *.gpg
    \ setlocal bin |
    \ '[,']!gpg --encrypt --default-recipient-self
  " After writing the file, do an :undo to revert the encryption in the
  " buffer, and reset binary file format
  autocmd BufWritePost,FileWritePost *.gpg
    \ silent u |
    \ setlocal nobin
augroup END
" 
" Golang 
augroup golang
    autocmd!
    autocmd FileType go
        \ set tabstop=8 |
        \ set softtabstop=8 |
        \ set shiftwidth=8
augroup END
" 
" GitFZF 
" from https://git.sr.ht/~sircmpwn/dotfiles/tree/master/item/.vimrc
function! GitFZF()
    let path = trim(system('cd '.shellescape(expand('%:p:h')).' && git rev-parse --show-toplevel'))
    exe 'FZF ' . path
endfunction
command! GitFZF call GitFZF()
nnoremap <leader><C-f> :GitFZF<CR>
" 
" Switching off colours 
"syntax off
" hi Visual term=reverse ctermbg=7 ctermfg=black guifg=black guibg=LightPink
" hi SpellBad term=reverse ctermbg=224 gui=undercurl guisp=Red guibg=Red
" hi SpellCap term=reverse ctermbg=224 gui=undercurl guisp=Red guibg=Red
" hi SpellRare term=reverse ctermbg=224 gui=undercurl guisp=Red guibg=Blue
" hi Search term=reverse ctermbg=11 guifg=black guibg=Green
"
" Turn spelling on for text files 
" from - https://dmerej.info/blog/post/syntax-highlighting-is-useless/
" augroup textfiles
"   autocmd!
"   autocmd filetype markdown setlocal spell spelllang=en
" augroup end
" 
" Read man pages in vim 
"runtime! ftplugin/man.vim
" 
"" YouCompleteMe 
""  -"" *** STARTING AND ENABLING ***
"" Don't start on start - or use show_diagnostics below
"let g:loaded_youcompleteme = 1
"" with this set to 0, YCM doesn't load/start
"let g:ycm_show_diagnostics_ui = 1
"" ******************************
"let g:ycm_enable_inlay_hints = 1
"nnoremap <silent> <localleader>h <Plug>(YCMToggleInlayHints)
"nnoremap gd :YcmCompleter GoToDefinition<CR>
"nnoremap <leader>gr :YcmCompleter GoToReferences<CR>
"nnoremap K :YcmCompleter GetDoc<CR>
"" this will disable tab, allowing it to be used for ultisnips
"" let g:ycm_key_list_select_completion=[]
"" let g:ycm_key_list_previous_completion=[]
"let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
"let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
"let g:ycm_python_interpreter_path = '.venv/bin/python3'
"let g:ycm_auto_trigger = 1
"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>
"imap <silent> <C-l> <Plug>(YCMToggleSignatureHelp)'.

"let g:ycm_enable_inlay_hints = 0
""