diff options
75 files changed, 2055 insertions, 2579 deletions
diff --git a/.config/nvim b/.config/nvim new file mode 120000 index 0000000..815cbcc --- /dev/null +++ b/.config/nvim @@ -0,0 +1 @@ +../.vim \ No newline at end of file diff --git a/.vim/.ignore b/.vim/.ignore deleted file mode 100644 index 060f79b..0000000 --- a/.vim/.ignore +++ /dev/null @@ -1 +0,0 @@ -plugged/ diff --git a/.vim/UltiSnips/all.snippets b/.vim/UltiSnips/all.snippets index f53e12b..0b9cf72 100644 --- a/.vim/UltiSnips/all.snippets +++ b/.vim/UltiSnips/all.snippets @@ -13,3 +13,10 @@ endsnippet snippet today "YYYY-MM-DD" `date +%Y-%m-%d` endsnippet + +snippet ok "✔" +✔ +endsnippet +snippet bad "✘" +✘ +endsnippet diff --git a/.vim/UltiSnips/markdown.snippets b/.vim/UltiSnips/markdown.snippets index f0c48a5..34b1c40 100644 --- a/.vim/UltiSnips/markdown.snippets +++ b/.vim/UltiSnips/markdown.snippets @@ -25,3 +25,15 @@ ${2:${VISUAL}} </details> $0 endsnippet + +snippet todo "todo: generic" +* [ ] $0 +endsnippet + +snippet todoKV "todo: krankenversicherung" +* [ ] $0 + - [ ] überweisung + - [ ] beleg einreichen + - [ ] filings + - [ ] refund +endsnippet diff --git a/.vim/UltiSnips/tex.snippets b/.vim/UltiSnips/tex.snippets index 38e9ef1..abaf5c6 100644 --- a/.vim/UltiSnips/tex.snippets +++ b/.vim/UltiSnips/tex.snippets @@ -4,33 +4,33 @@ $0 \end{$1} endsnippet -snippet $$ "Math" wA +snippet $$ "math env $$" wA $${1}$ $0 endsnippet -snippet \[ "Math" iA +snippet \[ "math block \[" iA \[ ${1:${VISUAL}} .\] $0 endsnippet -snippet frac "Fraction" iA +snippet frac "\\frac" iA \\frac{$1}{$2}$0 endsnippet snippet fun "Function" wA f: \R \to \R endsnippet -snippet sum "Sum" wA +snippet sum "\sum_" wA \sum_{n=1}^{${1:\infty}} $0 endsnippet -snippet !> "Maps to" wA +snippet !> "\mapsto" wA \mapsto endsnippet -snippet -> "To" wA +snippet -> "\to" wA \to endsnippet -snippet latex "latex" +snippet latex "\documentclass{report}" \documentclass{report} \usepackage[a4paper,margin=30truemm]{geometry} \usepackage{polyglossia} @@ -50,7 +50,7 @@ $0 \end{document} endsnippet -snippet letter "letter" +snippet brief "\documentclass{dinbrief}" \documentclass{dinbrief} \usepackage{graphicx} \usepackage[a4paper,margin=30truemm]{geometry} diff --git a/.vim/after/ftplugin/c.vim b/.vim/after/ftplugin/c.vim deleted file mode 100644 index 2d275a6..0000000 --- a/.vim/after/ftplugin/c.vim +++ /dev/null @@ -1,88 +0,0 @@ -" setlocal cindent - -" setlocal foldmethod=syntax -" setlocal foldlevel=10 - -if exists('g:loaded_nvim_treesitter') - set foldmethod=expr - set foldexpr=nvim_treesitter#foldexpr() -endif - -if exists('g:loaded_gutentags') - let g:gutentags_enabled = 1 -endif - -let g:neoformat_enabled_c = [] - -" toggle between header and implementation in c/cpp -function! Alternate_c() - let file = expand('%') - if match(file, '\.c') > 0 - exe ':e %<.h' - elseif match(file, '\.h') > 0 - exe ':e %<.c' - endif -endfunction - -nmap <Leader>a :call alternate#alternate() - -" source: https://github.com/igankevich/mesonic/blob/master/plugin/meson.vim -function! MesonProjectDir() - let l:dir = getcwd() " a starting directory to look for meson.build file - let l:project_dir = l:dir " the top-most directory with meson.build file - let l:nesting = 100 " maximal no. of subdirectories in a project - - " find top-most directory with readable meson.build file - while fnamemodify(l:dir, ':p') !=# '/' && l:nesting > 0 - if filereadable(l:dir . '/' . 'meson.build') - let l:project_dir = l:dir - endif - let l:dir = l:dir . '/..' - let l:nesting = l:nesting - 1 - endwhile - - " why one needs to do it two times? - let l:project_dir = fnamemodify(l:project_dir, ':p') - let l:project_dir = fnamemodify(l:project_dir, ':p') - return l:project_dir -endfunction - -if exists('g:loaded_neomake') - function! s:ninja_InitForJob(_jobinfo) dict - " set cwd to project dir - if !has_key(self, 'cwd') - let self.cwd = MesonProjectDir() - endif - " generate new error format lines - " source: https://github.com/igankevich/mesonic/blob/master/compiler/meson.vim#L67 - if !has_key(self, 'errorformat') - let g:meson_error_format = [ - \ '%EMeson encountered an error in file ' . l:project_subdir . '%f\, line %l\, column %c:,%Z%m', - \ '%Dninja: Entering directory `%f''', - \ '%f:%l.%c-%[%^:]%#: %t%[%^:]%#: %m' - \ ] - let self.errorformat = join(g:meson_error_format, ',') - endif - return self - endfunction - function! s:ninja_postprocess(entry) - if empty(a:entry.type) - let a:entry.type = 'E' - endif - endfunction - let g:neomake_c_ninja_maker = { - \ 'exe': 'ninja', - \ 'args': ['-C', 'build'], - \ 'append_file': 0, - \ 'postprocess': function('s:ninja_postprocess'), - \ 'InitForJob': function('s:ninja_InitForJob'), - \ } - let g:neomake_c_ninjaclean_maker = { - \ 'exe': 'ninja', - \ 'args': ['-C', 'build', 'clean'], - \ 'append_file': 0, - \ 'postprocess': function('s:ninja_postprocess'), - \ 'InitForJob': function('s:ninja_InitForJob'), - \ } - let g:neomake_c_enabled_makers = ['ninja'] -endif diff --git a/.vim/after/ftplugin/clap_input.vim b/.vim/after/ftplugin/clap_input.vim deleted file mode 100644 index 6579064..0000000 --- a/.vim/after/ftplugin/clap_input.vim +++ /dev/null @@ -1,6 +0,0 @@ - -nnoremap <silent><buffer> q :<c-u>call clap#handler#exit()<CR> -inoremap <silent><buffer> <C-n> <C-R>=clap#navigation#linewise('down')<CR> -inoremap <silent><buffer> <C-p> <C-R>=clap#navigation#linewise('up')<CR> -nnoremap <silent><buffer> <C-n> :<c-u> call clap#navigation#linewise('down')<CR> -nnoremap <silent><buffer> <C-p> :<c-r> call clap#navigation#linewise('up')<CR> diff --git a/.vim/after/ftplugin/crontab.vim b/.vim/after/ftplugin/crontab.vim deleted file mode 100644 index 46faa33..0000000 --- a/.vim/after/ftplugin/crontab.vim +++ /dev/null @@ -1 +0,0 @@ -autocmd filetype crontab setlocal nobackup nowritebackup diff --git a/.vim/after/ftplugin/diff.vim b/.vim/after/ftplugin/diff.vim deleted file mode 100644 index 49974ec..0000000 --- a/.vim/after/ftplugin/diff.vim +++ /dev/null @@ -1,33 +0,0 @@ -" disable annoying plugins -let b:coc_enabled = 0 -silent NeomakeDisable - -command! FindMergeMarker execute 'normal /^<<<<<<</<CR>' - -" shortcuts for 3-way merges -command! DiffGetLocal :diffget LOCAL -command! DiffGetRemote :diffget REMOTE -" quicksave -command! DiffSave :wqa - -cnoreabbrev fmm FindMergeMarker -cnoreabbrev dgl DiffGetLocal -cnoreabbrev dgr DiffGetRemote -cnoreabbrev ds DiffSave - - -let s:markers = { - \ 'ours': '^<<<<<<< ', - \ 'theirs': '^>>>>>>> ', - \ 'base': '^||||||| ', - \ 'delimiter': '^=======\r\?$', - \ } - -if &diff - " set custom ctags in diff mode - - let _ft=&filetype - let g:vista_ctags_cmd = { - \ _ft: 'ctags --format=2 --excmd=pattern --fields=nksSaf --file-scope=yes --sort=no --append=no --output-format=json --fields=-PF -f-', - \ } -endif diff --git a/.vim/after/ftplugin/gitrebase.vim b/.vim/after/ftplugin/gitrebase.vim deleted file mode 100644 index e97d225..0000000 --- a/.vim/after/ftplugin/gitrebase.vim +++ /dev/null @@ -1,8 +0,0 @@ -set keywordprg=:GitShow -command! -nargs=1 -bar GitShow call s:git_show(<f-args>) - -function! s:git_show(commit) abort - let p = popup#new({ 'filetype': 'diff' }) - let p.contents = systemlist("git show ".a:commit) - call p.open() -endfunction diff --git a/.vim/after/ftplugin/go.vim b/.vim/after/ftplugin/go.vim deleted file mode 100644 index b5c0d44..0000000 --- a/.vim/after/ftplugin/go.vim +++ /dev/null @@ -1,77 +0,0 @@ -setlocal noexpandtab -setlocal shiftwidth=8 -setlocal tabstop=8 - -let g:go_echo_go_info = 0 -let g:go_auto_type_info = 0 -" let g:go_info_mode = 'gocode' -" let g:go_auto_sameids = 1 -" let g:go_gocode_unimported_packages = 0 -" let g:go_list_type = 'quickfix' -let g:go_template_autocreate = 0 - -let g:go_mod_fmt_autosave = 1 -let g:go_fmt_autosave = 1 -let g:go_fmt_command = 'goimports' -let g:go_fmt_fail_silently = 1 -let g:go_fmt_experimental = 1 " solves https://github.com/fatih/vim-go/issues/502 - -" let g:go_term_enabled = 0 -" let g:go_term_mode = 'split' - -let g:go_metalinter_autosave = 0 -let g:go_metalinter_enabled = ['vet', 'golint', 'errcheck'] -let g:go_metalinter_autosave_enabled = ['vet', 'golint'] -let g:go_metalinter_deadline = '2s' - -" let g:go_highlight_functions = 1 -" let g:go_highlight_methods = 1 -" let g:go_highlight_fields = 1 -" let g:go_highlight_structs = 1 -" let g:go_highlight_interfaces = 1 -" let g:go_highlight_build_constraints = 1 -" let g:go_highlight_types = 1 -" let g:go_highlight_extra_types = 1 -" let g:go_highlight_operators = 1 -" let g:go_highlight_space_tab_error = 1 -" let g:go_highlight_array_whitespace_error = 1 -" let g:go_highlight_trailing_whitespace_error = 1 - -function! Alternate_go() - call <Plug>(go-alternate-edit) -endfunction - -" augroup go -" au! -" au VimEnter go call vista#RunForNearestMethodOrFunction() -" augroup END - -if exists('g:loaded_neomake') - let g:neomake_go_build_maker = { - \ 'exe': 'go', - \ 'args': 'build', - \ 'append_file': 0, - \ } - " let g:neomake_go_golangci_lint_args = ['run', '--out-format=line-number', '--print-issued-lines=false'] - let g:neomake_go_enabled_makers = ['go', 'golangci_lint'] -endif - -" https://github.com/fatih/dotfiles/blob/master/vimrc#L380 -" create a go doc comment based on the word under the cursor -function! s:create_go_doc_comment() - norm "zyiw - execute ":put! z" - execute ":norm I// \<Esc>$" -endfunction -nnoremap <Leader>ui :<C-u>call <SID>create_go_doc_comment()<CR> - -" let b:deoplete_disable_auto_complete = 0 -" let g:neoformat_enabled_go = [] -" - -if exists('g:did_coc_loaded') - augroup CoC - au! - au BufWritePre * CocCommand editor.action.organizeImport - augroup END -endif diff --git a/.vim/after/ftplugin/gomod.vim b/.vim/after/ftplugin/gomod.vim deleted file mode 100644 index 96369aa..0000000 --- a/.vim/after/ftplugin/gomod.vim +++ /dev/null @@ -1 +0,0 @@ -set commentstring=//\ %s diff --git a/.vim/after/ftplugin/gotmpl.vim b/.vim/after/ftplugin/gotmpl.vim deleted file mode 100644 index cf481c4..0000000 --- a/.vim/after/ftplugin/gotmpl.vim +++ /dev/null @@ -1 +0,0 @@ -set commentstring=<!--\ %s\ --> diff --git a/.vim/after/ftplugin/i3.vim b/.vim/after/ftplugin/i3.vim deleted file mode 100644 index 9c2e80a..0000000 --- a/.vim/after/ftplugin/i3.vim +++ /dev/null @@ -1 +0,0 @@ -set commentstring=#\ %s diff --git a/.vim/after/ftplugin/ledger.vim b/.vim/after/ftplugin/ledger.vim deleted file mode 100644 index 0aa29a3..0000000 --- a/.vim/after/ftplugin/ledger.vim +++ /dev/null @@ -1 +0,0 @@ -let g:ledger_bin = 'hledger' diff --git a/.vim/after/ftplugin/mail.vim b/.vim/after/ftplugin/mail.vim deleted file mode 100644 index cdfbfc6..0000000 --- a/.vim/after/ftplugin/mail.vim +++ /dev/null @@ -1,20 +0,0 @@ -" backup aerc mails to a draft directory -let g:mail_draft_dir = $HOME.'/.aerc/drafts' - -function! SaveDraft() - if !isdirectory(g:mail_draft_dir) - call mkdir(g:mail_draft_dir, 'p') - endif - let draft = join([g:mail_draft_dir, systemlist('now')[0] . '_' .expand('%:t')], '/') - execute 'silent! write! '.draft -endfunction - -augroup vim_mail - au! - au CursorHold * call SaveDraft() -augroup END - -set commentstring=>\ %s -set showtabline=0 - -command! DraftSave call SaveDraft() diff --git a/.vim/after/ftplugin/make.vim b/.vim/after/ftplugin/make.vim deleted file mode 100644 index 840c87a..0000000 --- a/.vim/after/ftplugin/make.vim +++ /dev/null @@ -1,2 +0,0 @@ -" Disable tabs->spaces for Makefiles -autocmd filetype make setlocal noexpandtab diff --git a/.vim/after/ftplugin/markdown.vim b/.vim/after/ftplugin/markdown.vim deleted file mode 100644 index 0d42ff0..0000000 --- a/.vim/after/ftplugin/markdown.vim +++ /dev/null @@ -1,27 +0,0 @@ -setlocal foldlevel=1 - -if exists('g:loaded_lexima') - let g:lexima_enable_space_rules=0 -endif - -function! s:markdown_underline(bang) - call append(line('.'), substitute(getline('.'), '.', (a:bang ? '-' : '='), 'g')) -endfunction -command! -nargs=0 -bang Underline call s:markdown_underline(<bang>0) - -if exists('g:loaded_neomake') - let g:neomake_markdown_shiba_maker = { - \ 'exe': 'shiba', - \ 'args': ['--detach', '%:p'], - \ 'append_file': 0, - \ } - let g:neomake_markdown_enabled_makers = [] -endif - -augroup Markdown - au! - " au FileType markdown NeomakeDisableBuffer - - " Make vim-markdown-folding ignore frontmatter blocks - au BufNewFile,BufRead markdown syntax match Comment /\%^---\_.\{-}---$/ -augroup END diff --git a/.vim/after/ftplugin/python.vim b/.vim/after/ftplugin/python.vim deleted file mode 100644 index abdaca6..0000000 --- a/.vim/after/ftplugin/python.vim +++ /dev/null @@ -1,4 +0,0 @@ -let g:neomake_python_enabled_makers = [] -let g:neoformat_enabled_python = ["yapf"] -let g:neoformat_python_maker_yapf_args = ["--style=pep8"] - diff --git a/.vim/after/ftplugin/rust.vim b/.vim/after/ftplugin/rust.vim deleted file mode 100644 index 9bf2ca9..0000000 --- a/.vim/after/ftplugin/rust.vim +++ /dev/null @@ -1,72 +0,0 @@ -set tags='./rusty-tags.vi/' - -if exists('g:loaded_lexima') - call lexima#add_rule({'filetype': ['rust'], 'char': "'", 'at': '<\%# | &\%#'}) -endif - -let g:racer_cmd = $HOME.'/.cargo/bin/racer' - -" let g:gutentags_enabled = 0 -" let g:gutentags_define_advanced_commands = 1 -" let g:gutentags_ctags_executable_rust = 'rusty-tags' -" let g:gutentags_ctags_extra_args = ['--omit-deps', 'vi'] -" let g:gutentags_ctags_tagfile = 'rusty-tags.vi' - -" when using standard ctags -let g:tagbar_type_rust = { - \ 'ctagstype' : 'rust', - \ 'kinds' : [ - \'T:types,type definitions', - \'f:functions,function definitions', - \'g:enum,enumeration names', - \'s:structure names', - \'m:modules,module names', - \'c:consts,static constants', - \'t:traits', - \'i:impls,trait implementations', - \] - \} - -" when using universal-ctags -" let g:rust_use_custom_ctags_defs = 1 " if using rust.vim -" let g:tagbar_type_rust = { -" \ 'ctagstype' : 'rust', -" \ 'kinds' : [ -" \ 'n:modules', -" \ 's:structures:1', -" \ 'i:interfaces', -" \ 'c:implementations', -" \ 'f:functions:1', -" \ 'g:enumerations:1', -" \ 't:type aliases:1:0', -" \ 'v:constants:1:0', -" \ 'M:macros:1', -" \ 'm:fields:1:0', -" \ 'e:enum variants:1:0', -" \ 'P:methods:1', -" \ ], -" \ 'sro': '::', -" \ 'kind2scope' : { -" \ 'n': 'module', -" \ 's': 'struct', -" \ 'i': 'interface', -" \ 'c': 'implementation', -" \ 'f': 'function', -" \ 'g': 'enum', -" \ 't': 'typedef', -" \ 'v': 'variable', -" \ 'M': 'macro', -" \ 'm': 'field', -" \ 'e': 'enumerator', -" \ 'P': 'method', -" \ }, -" \ } - -let g:neomake_rust_enabled_makers = ['cargo'] - -" augroup rust -" au! -" augroup END - -" nmap <Leader>d <Plug>(rust-doc) -" nmap <Leader>j <Plug>(rust-def) diff --git a/.vim/after/ftplugin/snippets.vim b/.vim/after/ftplugin/snippets.vim deleted file mode 100644 index cb39fa6..0000000 --- a/.vim/after/ftplugin/snippets.vim +++ /dev/null @@ -1 +0,0 @@ -set list diff --git a/.vim/after/ftplugin/tex.vim b/.vim/after/ftplugin/tex.vim deleted file mode 100644 index 88d4f11..0000000 --- a/.vim/after/ftplugin/tex.vim +++ /dev/null @@ -1,23 +0,0 @@ - -nnoremap <leader>c :call vimtex#compiler#compile()<cr> -" augroup Vimtex -" au! -" au BufWritePost * silent call vimtex#compiler#compile() -" augroup END - -" if exists('g:loaded_neomake') -" let g:neomake_tex_tectonic_maker = { -" \ 'exe': 'tectonic', -" \ 'append_file': 1, -" \ 'errorformat': -" \ '%Eerror: something bad happened inside TeX; its output follows:,'. -" \ '%C^[=]+$,'. -" \ '%C(%f,'. -" \ '%C.*,'. -" \ '%C! %m,'. -" \ '%Cl.%l %s,'. -" \ '%C^[=]+$,'. -" \ '%-Zcaused by: %s,' -" \ } -" let g:neomake_tex_enabled_makers = ['tectonic'] -" endif diff --git a/.vim/after/ftplugin/toml.vim b/.vim/after/ftplugin/toml.vim deleted file mode 100644 index 03bf098..0000000 --- a/.vim/after/ftplugin/toml.vim +++ /dev/null @@ -1,6 +0,0 @@ -" let g:neoformat_toml_tomlfix = { -" \ 'exe': 'tomlfix', -" \ 'args': ['-w'], -" \ 'replace': 1, -" \ } -" let g:neoformat_enabled_toml = ['tomlfix'] diff --git a/.vim/after/ftplugin/vim.vim b/.vim/after/ftplugin/vim.vim deleted file mode 100644 index a6014c7..0000000 --- a/.vim/after/ftplugin/vim.vim +++ /dev/null @@ -1 +0,0 @@ -set foldmethod=marker diff --git a/.vim/after/ftplugin/yaml.vim b/.vim/after/ftplugin/yaml.vim deleted file mode 100644 index 2d09076..0000000 --- a/.vim/after/ftplugin/yaml.vim +++ /dev/null @@ -1,2 +0,0 @@ -" fix indent -set et sts=2 diff --git a/.vim/after/plugin/line_bufferline.vim b/.vim/after/plugin/line_bufferline.vim deleted file mode 100644 index 551790f..0000000 --- a/.vim/after/plugin/line_bufferline.vim +++ /dev/null @@ -1,30 +0,0 @@ -if !exists('g:loaded_bufferline') - finish -endif - -if !exists('g:lightline.tabline.left') - let g:lightline.tabline.left = [] -endif -let g:lightline.tabline.left += [['bufferline']] -let g:lightline.component_expand.bufferline = 'LightLineBufferline' -let g:lightline.component_type.bufferline = 'tabsel' - -function! LightLineBufferline() - call bufferline#refresh_status() - let l:buffers = [ - \ g:bufferline_status_info.before, - \ g:bufferline_status_info.current, - \ g:bufferline_status_info.after - \ ] - - function! s:fmt(key, val) - let limit = 25 - if strlen(a:val) > limit - return trim(a:val)[:limit] . '..' - endif - return trim(a:val) - endfunction - - call map(l:buffers, function('s:fmt')) - return l:buffers -endfunction diff --git a/.vim/after/plugin/line_obsession.vim b/.vim/after/plugin/line_obsession.vim deleted file mode 100644 index c4f774f..0000000 --- a/.vim/after/plugin/line_obsession.vim +++ /dev/null @@ -1,10 +0,0 @@ -if !exists('g:loaded_obsession') - finish -endif - -let g:lightline.component_function.obsession = 'LightLineSession' - -function! LightLineSession() - let l:indicator = ObsessionStatus('active', 'paused') - return l:indicator ? '[obs '.l:indicator.']' : '' -endfunction diff --git a/.vim/after/plugin/neomake.vim b/.vim/after/plugin/neomake.vim deleted file mode 100644 index 1e30a72..0000000 --- a/.vim/after/plugin/neomake.vim +++ /dev/null @@ -1,85 +0,0 @@ -finish -if !exists('g:loaded_neomake') - finish -endif - -" Neomake -cnoreabbrev neom Neomake -cnoreabbrev nm Neomake -call neomake#configure#automake('w') - -" \ 'BufWritePost': {'delay': 0}, -let g:neomake_error_sign = {'text': '✘', 'texthl': 'NeomakeErrorSign'} -let g:neomake_warning_sign = {'text': '‼', 'texthl': 'NeomakeWarningSign'} -let g:neomake_message_sign = {'text': '☛', 'texthl': 'NeomakeMessageSign'} -let g:neomake_info_sign = {'text': 'i', 'texthl': 'NeomakeInfoSign'} - -" make diagnosis-nvim match -call sign_define("LspDiagnosticsErrorSign", {"text" : copy(g:neomake_error_sign.text), "texthl" : copy(g:neomake_error_sign.texthl)}) -call sign_define("LspDiagnosticsWarningSign", {"text" : copy(g:neomake_warning_sign.text), "texthl" : copy(g:neomake_warning_sign.texthl)}) -call sign_define("LspDiagnosticsHintSign", {"text" : copy(g:neomake_message_sign.text), "texthl" : copy(g:neomake_message_sign.texthl)}) -call sign_define("LspDiagnosticsInformationSign", {"text" : copy(g:neomake_info_sign.text), "texthl" : copy(g:neomake_info_sign.texthl)}) - -" let g:neomake_serialize = 1 - -let g:neomake_highlight_columns = 1 -let g:neomake_highlight_lines = 1 -let g:neomake_open_list = 0 - -" function! OnNeomakeJobFinished() -" let l:ctx = g:neomake_hook_context -" if l:ctx.jobinfo.exit_code != 0 -" echoerr l:ctx.jobinfo.maker.name . ' failed' -" endif -" endfunction -augroup neomake_hooks - au! - " au User NeomakeJobFinished call OnNeomakeJobFinished() - au BufWritePost * Neomake -augroup END - -" generic makers -let g:neomake_makeclean_maker = { 'exe': 'make', 'args': ['clean'], 'errorformat': '%f:%l:%c: %m' } -let g:neomake_make_maker = { 'exe': 'make', 'errorformat': '%f:%l:%c: %m' } - -nmap <leader>nm :Neomake<space> - -if exists('g:loaded_lightline') - if exists('g:lightline') - let g:lightline.component_function.neomake = 'LightLineNeomake' - else - let g:lightline = {'component_function': {'neomake': 'LightLineNeomake'}} - endif - function! LightLineNeomake() - let l:msg = neomake#statusline#get(bufnr('%'), { - \ 'format_status_disabled': '{{disabled_info}} %s', - \ 'format_status_enabled': '%s', - \ 'format_running': '… {{running_job_names}}', - \ 'format_loclist_ok': ' ✔', - \ 'format_loclist_issues': '%s', - \ 'format_loclist_unknown': '', - \ 'format_loclist_type_E': ' ✘ {{count}}', - \ 'format_loclist_type_W': ' ‼ {{count}}', - \ 'format_loclist_type_I': ' i {{count}}', - \ 'format_quickfix_type_E': '✘ {{count}}', - \ 'format_quickfix_type_W': '‼ {{count}}', - \ 'format_quickfix_type_I': 'i {{count}}', - \ }) - return l:msg ? 'nm:'.l:msg : '' - endfunction -endif - -" hightlights {{{ -hi SpellBad ctermfg=red guifg=red -hi SpellCap ctermfg=yellow guifg=yellow - -hi link NeomakeErrorSign NeomakeError -hi link NeomakeWarningSign NeomakeWarning -hi link NeomakeMessageSign NeomakeMessage -hi link NeomakeInfoSign NeomakeInfo - -hi link NeomakeVirtualtextError NeomakeError -hi link NeomakeVirtualtextWarning NeomakeWarning -hi link NeomakeVirtualtextMessage NeomakeMessage -hi link NeomakeVirtualtextInfo NeomakeInfo -" }}} diff --git a/.vim/after/plugin/writing.vim b/.vim/after/plugin/writing.vim deleted file mode 100644 index f84cc48..0000000 --- a/.vim/after/plugin/writing.vim +++ /dev/null @@ -1,92 +0,0 @@ -" Configuration for writing text in vim - -" Grammer checker -let g:grammarous#languagetool_cmd = 'languagetool' - -" Minimal UX for concentration -let g:goyo_width = 120 -let g:goyo_height = 90 -let g:goyo_linenr = 0 -nmap <F0> :Goyo<CR> - -let g:limelight_conceal_ctermfg = 'gray' -let g:limelight_conceal_ctermbg = 'none' -let g:limelight_conceal_guifg = 'gray' -let g:limelight_conceal_guibg = 'none' - -let g:limelight_default_coefficient = 0.5 -let g:limelight_paragraph_span = 1 -let g:limelight_priority = -1 - -" goyo enter/leave funcs {{{ -function! s:goyo_enter() - if has('gui_running') || has('gui_vimr') - " set linespace = 7 - end - if executable('tmux') && strlen($TMUX) - silent !tmux set status off - silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z - endif - - " set noshowmode - " set noshowcmd - set scrolloff=999 - Limelight - - " make sure :q in the last buffer, in Goyo also quits vim - " let b:quitting = 0 - " let b:quitting_bang = 0 - " autocmd QuitPre <buffer> let b:quitting = 1 - " cabbrev <buffer> q! let b:quitting_bang = 1 <bar> q! -endfunction - -function! s:goyo_leave() - if has('gui_running') || has('gui_vimr') - " set linespace = 0 - endif - if executable('tmux') && strlen($TMUX) - silent !tmux set status on - silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z - endif - - " set showmode - " set showcmd - set scrolloff=5 - Limelight! - - " make sure :q in the last buffer, in Goyo also quits vim - " if b:quitting && len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1 - " if b:quitting_bang - " qa! - " else - " qa - " endif - " endif - - hi SignColumn guibg=none ctermbg=none -endfunction -" }}} - -" writing autocommands -function! s:writing_mode_enter() - set textwidth=120 - " ALEToggle - " Grammarous keymaps - if exists('g:loaded_grammarous') - nmap <leader>l :GrammarousCheck --lang=de - nmap <leader>gi <Plug>(grammarous-move-to-info-window) - nmap <leader>gr <Plug>(grammarous-remove-error) - nmap <leader>gd <Plug>(grammarous-disable-rule) - nmap <leader>gf <Plug>(grammarous-fixit) - nmap <leader>gn <Plug>(grammarous-move-to-next-error) - nmap <leader>gp <Plug>(grammarous-move-to-previous-error) - endif -endfunction - -augroup Writing - au! - au FileType markdown,tex call <SID>writing_mode_enter() - " goyo autocommands - au User GoyoEnter nested call <SID>goyo_enter() - au User GoyoLeave nested call <SID>goyo_leave() -augroup END diff --git a/.vim/autoload/alternate.vim b/.vim/autoload/alternate.vim deleted file mode 100644 index e179fce..0000000 --- a/.vim/autoload/alternate.vim +++ /dev/null @@ -1,8 +0,0 @@ -function! alternate#alternate() - let l:function_name = 'Alternate_' . &filetype - if exists('*' . l:function_name) - execute l:function_name - else - echo 'no alternate function defined for "' . &filetype . '"' - endif -endfunction diff --git a/.vim/autoload/daymode.vim b/.vim/autoload/daymode.vim deleted file mode 100644 index b2c8cdb..0000000 --- a/.vim/autoload/daymode.vim +++ /dev/null @@ -1,27 +0,0 @@ -function! s:lightline_update(colors) - if exists('g:loaded_lightline') - try - let g:lightline.colorscheme = a:colors - call lightline#init() - call lightline#colorscheme() - call lightline#update() - catch - endtry - endif -endfunction - -function! daymode#switch(bang) - if a:bang - set background=dark - execute 'colorscheme' get(g:, 'daymode_colorscheme_night', 'default') - call s:lightline_update(get(g:, 'daymode_lightline_colorscheme_night', 'PaperColor')) - else - set background=light - execute 'colorscheme' get(g:, 'daymode_colorscheme_day', 'default') - call s:lightline_update(get(g:, 'daymode_lightline_colorscheme_day', 'PaperColor')) - endif - - " if exists("syntax_on") - " syntax reset - " endif -endfunction diff --git a/.vim/autoload/fasd.vim b/.vim/autoload/fasd.vim deleted file mode 100644 index 7ef53bd..0000000 --- a/.vim/autoload/fasd.vim +++ /dev/null @@ -1,18 +0,0 @@ -" not sure if I am using this -finish - -if exists('g:loaded_fasd') - finish -endif -let g:loaded_fasd = 1 -let g:fasd_path = '/home/robert/.dotfiles/zsh/.zplug/repos/sorin-ionescu/prezto/modules/fasd/external/fasd' - -function! fasd#run(args) abort - return system(g:fasd_path . ' -d -0 ' . a:args) -endfunction - -function! fasd#cd(args) abort - execute 'tcd' . fasd#run(a:args) -endfunction - -command! -nargs=1 J :call fasd#cd(<f-args>) diff --git a/.vim/autoload/fuzz.vim b/.vim/autoload/fuzz.vim deleted file mode 100644 index 39d02f1..0000000 --- a/.vim/autoload/fuzz.vim +++ /dev/null @@ -1,140 +0,0 @@ -function! s:prompt(str) - return a:str . g:fuzz_prompt . ' ' -endfunction - -function! s:fuzz(name, opts) - " call skim#run(skim#wrap(a:name, a:opts, 0)) - call fzf#run(fzf#wrap(a:name, a:opts, 0)) -endfunction - -function! s:strip(str) - return substitute(a:str, '^\s*\|\s*$', '', 'g') -endfunction - -function! s:open(cmd, target) - if stridx('edit', a:cmd) == 0 && fnamemodify(a:target, ':p') ==# expand('%:p') - return - endif - execute a:cmd fnameescape(a:target) -endfunction - - -" rg {{{ -function s:map_rg_output(line) - let parts = split(a:line, ':') - return {'filename': &acd ? fnamemodify(parts[0], ':p') : parts[0], 'lnum': parts[1], 'text': join(parts[2:], ':')} -endfunction - -function s:rg_handler(lines) - if len(a:lines) < 1 - return - endif - let first = map(filter(a:lines, 'len(v:val)'), 's:map_rg_output(v:val)')[0] - call s:open('edit', first.filename) - execute first.lnum - normal! zz -endfunction - -function s:rg(prompt, ...) - if !executable('rg') - echoerr 'rg not found' - return - endif - if len(a:000) < 1 || len(a:000[0]) < 1 - echoerr 'no arguments' - return - endif - - call s:fuzz(!empty(a:prompt) ? tolower(a:prompt) : 'rg', { - \ 'source': 'rg --line-number --no-heading --color=always --smart-case '.join(a:000[0], ' '), - \ 'sink*': function('s:rg_handler'), - \ 'options': ['--prompt', s:prompt(!empty(a:prompt) ? a:prompt : 'Rg'), - \ '--ansi', '--multi'] - \ }) -endfunction - -function! fuzz#rg(args) abort - call s:rg('', a:args) -endfunction -" }}} - -" files {{{ -function! fuzz#files() abort - call s:fuzz('files', { - \ 'options': ['--prompt', s:prompt('Fs')] - \ }) -endfunction -" }}} - -" buffers {{{ -function! s:buffers_list() - function! s:buflisted() - return filter(range(1, bufnr('$')), 'buflisted(v:val) && getbufvar(v:val, "&filetype") != "qf"') - endfunction - - function! s:format_buffer(b) - let name = bufname(a:b) - let name = empty(name) ? '[No Name]' : fnamemodify(name, ":p:~:.") - let flag = a:b == bufnr('') ? '%' : - \ (a:b == bufnr('#') ? '#' : ' ') - let modified = getbufvar(a:b, '&modified') ? ' [+]' : '' - let readonly = getbufvar(a:b, '&modifiable') ? '' : ' [RO]' - let extra = join(filter([modified, readonly], '!empty(v:val)'), '') - return s:strip(printf("[%s] %s\t%s\t%s", a:b, flag, name, extra)) - endfunction - - return map(sort(s:buflisted()), 's:format_buffer(v:val)') -endfunction - -function! s:buffers_handler(lines) - if len(a:lines) < 1 - return - endif - let b = matchstr(a:lines[0], '\[\zs[0-9]*\ze\]') - execute 'buffer' b -endfunction - -function! fuzz#buffers() abort - call s:fuzz('buffers', { - \ 'source': s:buffers_list(), - \ 'sink*': function('s:buffers_handler'), - \ 'options': ['--prompt', s:prompt('Buf')] - \ }) -endfunction -" }}} - -" commands {{{ -function! s:command_handler(lines) - if len(a:lines) < 1 - return - endif - call feedkeys(':'.a:lines[0]) -endfunction - -function! fuzz#commands() abort - call s:fuzz('commands', { - \ 'source': sort(getcompletion('', 'command')), - \ 'sink*': function('s:command_handler'), - \ 'options': ['--prompt', s:prompt('Cmd')] - \ }) -endfunction -" }}} - -function! fuzz#cmdoptions(...) abort - let opts = sort(['files', 'buffers', 'commands', 'rg']) - return join(opts, "\n") -endfunction - -function! fuzz#exec(cmd, ...) abort - if a:cmd == 'files' - call fuzz#files() - elseif a:cmd == 'buffers' - call fuzz#buffers() - elseif a:cmd == 'commands' - call fuzz#commands() - elseif a:cmd == 'rg' - call fuzz#rg(a:000) - else - echoerr 'Unknown command ' . a:cmd - endif -endfunction diff --git a/.vim/autoload/lightline/colorscheme/papercolor_dim.vim b/.vim/autoload/lightline/colorscheme/papercolor_dim.vim deleted file mode 100644 index 0ba29f3..0000000 --- a/.vim/autoload/lightline/colorscheme/papercolor_dim.vim +++ /dev/null @@ -1,59 +0,0 @@ -" papercolor_dim : a less flashy statusline -" -" Adapted from the Papercolor_dark theme: -" ============================================================================= -" Filename: autoload/lightline/colorscheme/PaperColor_dark.vim -" Author: TKNGUE -" License: MIT License -" Last Change: 2015-07-27 06:01 -" ============================================================================= - -" colors -let s:color00 = '#1c1c1c' -let s:color01 = '#af005f' -let s:color02 = '#5faf00' -let s:color03 = '#d7af5f' -let s:color04 = '#5fafd7' -let s:color05 = '#808080' -let s:color06 = '#d7875f' -let s:color07 = '#d0d0d0' -let s:color08 = '#585858' -let s:color09 = '#5faf5f' -let s:color10 = '#afd700' -let s:color11 = '#af87d7' -let s:color12 = '#ffaf00' -let s:color13 = '#ff5faf' -let s:color14 = '#00afaf' -let s:color15 = '#5f8787' -let s:color16 = '#5fafd7' -let s:color17 = '#d7af00' - -let s:black = '#1c1c1c' -let s:grey_dim = '#3a3a3a' -let s:grey_dimmer = '#262626' -let s:white = '#d0d0d0' -let s:white_dim = '#bdc0ba' - -" palette -let s:p = {'command': {}, 'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}} - -let s:p.normal.left = [[ s:white, s:grey_dim ], [ s:white_dim, s:grey_dimmer ], [ s:white_dim, 'none' ]] -let s:p.normal.right = [[ s:white, s:grey_dim ], [ s:white_dim, s:grey_dimmer ], [ s:white_dim, 'none' ]] -let s:p.normal.middle = [[ s:white_dim, 'none' ]] -let s:p.normal.error = [[ s:black, s:color01 ]] - -let s:p.inactive.right = [[ s:white_dim, s:grey_dim ], [ s:white_dim, s:grey_dim ]] -let s:p.inactive.middle = [[ s:white_dim, s:grey_dim ]] -let s:p.inactive.right = [[ s:white_dim, s:grey_dim ], [ s:white_dim, s:grey_dim ]] - -let s:p.insert.left = [[ s:black, s:color04 ], copy(s:p.normal.left[1]), copy(s:p.normal.left[2])] -let s:p.replace.left = [[ s:black, s:color06 ], copy(s:p.normal.left[1]), copy(s:p.normal.left[2])] -let s:p.visual.left = [[ s:black, s:color11 ], copy(s:p.normal.left[1]), copy(s:p.normal.left[2])] -let s:p.command.left = [[ s:color03, s:grey_dim, 'italic' ], copy(s:p.normal.left[1]), copy(s:p.normal.left[2])] - -let s:p.tabline.tabsel = [[ s:white, s:color08 ]] -let s:p.tabline.left = [[ s:white_dim, s:grey_dimmer ]] -let s:p.tabline.middle = copy(s:p.normal.middle) -let s:p.tabline.right = copy(s:p.normal.right) - -let g:lightline#colorscheme#papercolor_dim#palette = lightline#colorscheme#fill(s:p) diff --git a/.vim/autoload/numbertoggle.vim b/.vim/autoload/numbertoggle.vim deleted file mode 100644 index fe8ddcc..0000000 --- a/.vim/autoload/numbertoggle.vim +++ /dev/null @@ -1,17 +0,0 @@ -function! s:relative_linenumbers() - set number - set relativenumber -endfunc - -function! s:absolute_linenumbers() - set number - set norelativenumber -endfunc - -function! numbertoggle#switch() - if &relativenumber - call s:absolute_linenumbers() - else - call s:relative_linenumbers() - endif -endfunc diff --git a/.vim/autoload/popup.vim b/.vim/autoload/popup.vim deleted file mode 100644 index e9f27d4..0000000 --- a/.vim/autoload/popup.vim +++ /dev/null @@ -1,215 +0,0 @@ -if !(has('nvim') && exists('*nvim_win_set_config')) - echoerr "floating window not supported" - finish -endif - -if exists('g:nvim_popup_loaded') - finish -endif -let g:nvim_popup_loaded = 1 - -let s:popup = {} - -function! s:popup__floating_win_opts(width, height) dict abort - let bottom_line = line('w0') + winheight(0) - 1 - if self.opened_at[1] + a:height <= bottom_line - let vert = 'N' - let row = 1 - else - let vert = 'S' - let row = 0 - endif - if self.opened_at[2] + a:width <= &columns - let hor = 'W' - let col = 0 - else - let hor = 'E' - let col = 1 - endif - return { - \ 'style': 'minimal', - \ 'relative': 'cursor', - \ 'anchor': vert.hor, - \ 'row': row, - \ 'col': col, - \ 'width': a:width, - \ 'height': a:height, - \ } -endfunction -let s:popup.floating_win_opts = funcref('s:popup__floating_win_opts') - -function! s:popup__window_size() dict abort - let max_width = winwidth(0) / 2 - let max_height = winheight(0) / 3 - let width = 0 - let height = 0 - for line in self.contents - let lw = strdisplaywidth(line) - if lw > width - if lw > max_width - let height += lw / popup_max_width + 1 - let width = popup_max_width - continue - endif - let width = lw - endif - let height += 1 - endfor - let width += 1 - - if height > max_height - let height = max_height - endif - - return [width, height] -endfunction -let s:popup.window_size = funcref('s:popup__window_size') - -function! s:popup__get_winnr() dict abort - return win_id2win(self.win_id) -endfunction -let s:popup.get_winnr = funcref('s:popup__get_winnr') - -function! s:popup__get_opener_winnr() dict abort - let winnr = win_id2win(self.opener_winid) - if winnr != 0 - return winnr - endif - let winnr = bufwinnr(self.opener_bufnr) - if winnr > 0 - return winnr - endif - return 0 -endfunction -let s:popup.get_opener_winnr = funcref('s:popup__get_opener_winnr') - -function! s:popup_open() dict abort - let self.opened_at = getpos('.') - let self.opener_bufnr = bufnr('%') - let self.opener_winid = win_getid() - let self.type = 'floating' - - let [w, h] = self.window_size() - - if self.type ==# 'floating' - let opts = self.floating_win_opts(w, h) - let win_id = nvim_open_win(self.opener_bufnr, v:true, opts) - endif - - enew! - let popup_bufnr = bufnr('%') - setlocal - \ buftype=nofile bufhidden=hide nomodified nobuflisted noswapfile nonumber - \ nocursorline wrap nonumber norelativenumber signcolumn=no nofoldenable - \ nospell nolist nomodeline - if has_key(self.opts, 'filetype') - let &l:filetype = self.opts.filetype - endif - - call setline(1, self.contents) - setlocal nomodified nomodifiable - - if has('nvim') - setlocal winhl=Normal:NormalFloat,NormalNC:NormalFloat - endif - - nnoremap <buffer><silent><nowait><Esc> :<C-u>call b:__popup.close()<CR> - nnoremap <buffer><silent><nowait>q :<C-u>call b:__popup.close()<CR> - - let b:__popup = self - execute 'autocmd BufWipeout,BufLeave <buffer> call getbufvar(' . popup_bufnr . ', "__popup").close()' - - if has_key(self.opts, 'enter') && !self.opts.enter - wincmd p - endif - - let self.bufnr = popup_bufnr - let self.win_id = win_id -endfunction -let s:popup.open = funcref('s:popup_open') - -function! s:popup__close() dict abort - if !has_key(self, 'bufnr') - return - endif - - let winnr = self.get_winnr() - if winnr > 0 - noautocmd execute winnr . 'wincmd c' - endif - - unlet self.bufnr - unlet self.win_id -endfunction -let s:popup.close = funcref('s:popup__close') - -function! s:popup__scroll(map) dict abort - let winnr = self.get_winnr() - if winnr == 0 - return - endif - execute winnr . 'wincmd w' - sandbox let input = eval('"\<'.a:map.'>"') - execute 'normal!' input - wincmd p -endfunction -let s:popup.scroll = funcref('s:popup__scroll') - -function! s:popup__update() dict abort - " Note: `:noautocmd` to prevent BufLeave autocmd event (#13) - " It should be ok because the cursor position is finally back to the first - " position. - - let prev_winnr = winnr() - - let popup_winnr = self.get_winnr() - if popup_winnr == 0 - return - endif - let opener_winnr = self.get_opener_winnr() - if opener_winnr == 0 - return - endif - - if opener_winnr != prev_winnr - noautocmd execute opener_winnr . 'wincmd w' - endif - - try - let [width, height] = self.window_size() - - " Window must be configured in opener buffer since the window position - " is relative to cursor - if self.type ==# 'floating' - let id = win_getid(popup_winnr) - if id == 0 - return - endif - let opts = self.floating_win_opts(width, height) - call nvim_win_set_config(id, opts) - endif - - noautocmd execute popup_winnr . 'wincmd w' - - if self.type ==# 'preview' - execute height . 'wincmd _' - endif - - setlocal modifiable - silent %delete _ - call setline(1, self.contents) - setlocal nomodified nomodifiable - finally - if winnr() != prev_winnr - noautocmd execute prev_winnr . 'wincmd w' - endif - endtry -endfunction -let s:popup.update = funcref('s:popup__update') - -function! popup#new(opts) abort - let p = deepcopy(s:popup) - let opts = { 'floating': v:true } - let p.opts = extend(opts, a:opts) - return p -endfunction diff --git a/.vim/colors/misc.vim b/.vim/colors/misc.vim new file mode 100644 index 0000000..6583470 --- /dev/null +++ b/.vim/colors/misc.vim @@ -0,0 +1,36 @@ +" SignColumn should match background +hi! clear SignColumn + +" nvim-treesitter/nvim-treesitter {{{ +hi! link TSPunctDelimiter Delimiter +hi! link TSPunctBracket Delimiter +hi! link TSPunctSpecial Special +hi! link TSConstant Constant +hi! link TSConstBuiltin Constant +hi! link TSConstMacro Macro +hi! link TSString String +hi! link TSStringRegex String +hi! link TSStringEscape SpecialChar +hi! link TSCharacter Character +hi! link TSNumber Number +hi! link TSBoolean Boolean +hi! link TSFloat Float +hi! link TSFunction Function +hi! link TSFuncBuiltin Function +hi! link TSFuncMacro Macro +hi! link TSParameter Identifier +hi! link TSMethod Function +hi! link TSField Typedef +hi! link TSProperty Typedef +hi! link TSConstructor Define +hi! link TSConditional Conditional +hi! link TSRepeat Repeat +hi! link TSLabel Label +hi! link TSOperator Operator +hi! link TSKeyword Keyword +hi! link TSException Exception +hi! link TSType Type +hi! link TSTypeBuiltin Type +hi! link TSStructure Structure +hi! link TSInclude Include +" }}} diff --git a/.vim/colors/nihoncolors.vim b/.vim/colors/nihoncolors.vim new file mode 100644 index 0000000..51056b8 --- /dev/null +++ b/.vim/colors/nihoncolors.vim @@ -0,0 +1,1258 @@ +" Theme: nihoncolors +" Author: robertgzr <r@gnzler.io> +" License: MIT +" Source: http://git.sr.ht/~robertgzr/nihoncolors/ +" +" A lot of this is based on Nikyle Nguyen's PaperColor theme: +" http://github.com/NLKNguyen/papercolor-theme + +hi clear +syntax reset +let g:colors_name = "nihoncolors" + +let s:transparent_background = 0 +if exists("g:nihoncolors_transparent_background") + let s:transparent_background = g:nihoncolors_transparent_background +endif + +" palette +let color00 = '#1c1c1c' +let color01 = '#e03c8a' +let color02 = '#90b44b' +let color03 = '#caad5f' +let color04 = '#58b2dc' +let color05 = '#828282' +let color06 = '#e3916e' +let color07 = '#bdc0ba' +let color08 = '#535953' +let color09 = '#86c166' +let color10 = '#ddd23b' +let color11 = '#b28fce' +let color12 = '#ffb11b' +let color13 = '#66bab7' +let color14 = '#77969a' +let color15 = '#fffffb' + +" set color variables {{{ + +let s:ft_bold = " cterm=bold gui=bold " +let s:ft_none = " cterm=none gui=none " +let s:ft_reverse = " cterm=reverse gui=reverse " +let s:ft_italic = " cterm=italic gui=italic " +let s:ft_italic_bold = " cterm=italic,bold gui=italic,bold " + +" we don't care about cterm +fun! s:create_color_variables(color_name, rich_color) + let {'s:fg_' . a:color_name} = ' guifg=' . a:rich_color . ' ' + let {'s:bg_' . a:color_name} = ' guibg=' . a:rich_color . ' ' +endfun + +call s:create_color_variables('background', color00) +call s:create_color_variables('foreground', color07) +call s:create_color_variables('nontext', color08) +call s:create_color_variables('negative', color01) +call s:create_color_variables('positive', color02) +call s:create_color_variables('highlight', color15) +call s:create_color_variables('comment', color05) +call s:create_color_variables('neutral', color04) +" TODO get rid of this +call s:create_color_variables('navy', color06) " storageclass +call s:create_color_variables('olive', color03) " string +call s:create_color_variables('red', color09) " import / try/catch +call s:create_color_variables('pink', color10) " statement, type +call s:create_color_variables('purple', color11) " if / conditional +call s:create_color_variables('accent', color12) +call s:create_color_variables('orange', color13) " number +call s:create_color_variables('blue', color14) " other keyword +call s:create_color_variables('aqua', color14) +call s:create_color_variables('green', color13) +call s:create_color_variables('wine', color11) + +call s:create_color_variables('cursor_fg', color00) +call s:create_color_variables('cursor_bg', color15) + +call s:create_color_variables('cursorline', color00) +call s:create_color_variables('cursorcolumn', color00) +call s:create_color_variables('cursorlinenr_fg', color13) +call s:create_color_variables('cursorlinenr_bg', color00) + +call s:create_color_variables('popupmenu_fg', color03) +call s:create_color_variables('popupmenu_bg', color00) + +call s:create_color_variables('search_fg', color00) +call s:create_color_variables('search_bg', color15) + +call s:create_color_variables('todo_fg', color05) +call s:create_color_variables('todo_bg', color00) + +call s:create_color_variables('error_fg', color01) +call s:create_color_variables('error_bg', color00) + +call s:create_color_variables('matchparen_fg', color00) +call s:create_color_variables('matchparen_bg', color05) + +call s:create_color_variables('visual_fg', color08) +call s:create_color_variables('visual_bg', color07) + +call s:create_color_variables('vertsplit_fg', color15) +call s:create_color_variables('vertsplit_bg', color00) + +call s:create_color_variables('statusline_active_fg', color15) +call s:create_color_variables('statusline_active_bg', color00) +call s:create_color_variables('statusline_inactive_fg', color07) +call s:create_color_variables('statusline_inactive_bg', color08) + +call s:create_color_variables('linenumber_fg', color08) +call s:create_color_variables('linenumber_bg', color00) + +call s:create_color_variables('transparent', 'none') +call s:create_color_variables('folded_fg', color11) +call s:create_color_variables('folded_bg', color00) + +call s:create_color_variables('wildmenu_fg', color00) +call s:create_color_variables('wildmenu_bg', color08) + +call s:create_color_variables('tabline_bg', color00) +call s:create_color_variables('tabline_active_fg', color07) +call s:create_color_variables('tabline_active_bg', color00) +call s:create_color_variables('tabline_inactive_fg', color07) +call s:create_color_variables('tabline_inactive_bg', color08) + +call s:create_color_variables('buftabline_bg', color00) +call s:create_color_variables('buftabline_current_fg', color07) +call s:create_color_variables('buftabline_current_bg', color05) +call s:create_color_variables('buftabline_active_fg', color07) +call s:create_color_variables('buftabline_active_bg', color12) +call s:create_color_variables('buftabline_inactive_fg', color07) +call s:create_color_variables('buftabline_inactive_bg', color00) + +call s:create_color_variables('diffadd_fg', color02) +call s:create_color_variables('diffadd_bg', color00) +call s:create_color_variables('diffdelete_fg', color01) +call s:create_color_variables('diffdelete_bg', color00) +call s:create_color_variables('difftext_fg', color10) +call s:create_color_variables('difftext_bg', color00) +call s:create_color_variables('diffchange_fg', color04) +call s:create_color_variables('diffchange_bg', color00) + +call s:create_color_variables('spellbad', color04) +call s:create_color_variables('spellcap', color05) +call s:create_color_variables('spellrare', color06) +call s:create_color_variables('spelllocal', color01) +" }}} + +if s:transparent_background + exec 'hi Normal' . s:fg_foreground + " Switching between dark & light variant through `set background` + " NOTE: Handle background switching right after `Normal` group because of + " God-know-why reason. Not doing this way had caused issue before + set background=dark + exec 'hi NonText' . s:fg_nontext + exec 'hi LineNr' . s:fg_linenumber_fg + exec 'hi Conceal' . s:fg_linenumber_fg + exec 'hi VertSplit' . s:fg_vertsplit_fg . s:ft_none + " TODO check this out.... + exec 'hi FoldColumn' . s:fg_folded_fg . s:bg_transparent . s:ft_none +else + exec 'hi Normal' . s:fg_foreground . s:bg_background + set background=dark + exec 'hi EndOfBuffer' . s:fg_cursor_fg . s:ft_none + exec 'hi NonText' . s:fg_nontext . s:bg_background + exec 'hi LineNr' . s:fg_linenumber_fg . s:bg_linenumber_bg + exec 'hi Conceal' . s:fg_linenumber_fg . s:bg_linenumber_bg + exec 'hi VertSplit' . s:fg_vertsplit_bg . s:bg_vertsplit_fg + " TODO here too ^ + exec 'hi FoldColumn' . s:fg_folded_fg . s:bg_background . s:ft_none +endif + +exec 'hi Cursor' . s:fg_cursor_fg . s:bg_cursor_bg +exec 'hi SpecialKey' . s:fg_nontext +exec 'hi Search' . s:fg_search_fg . s:bg_search_bg +exec 'hi StatusLine' . s:fg_statusline_active_bg . s:bg_statusline_active_fg +exec 'hi StatusLineNC' . s:fg_statusline_inactive_bg . s:bg_statusline_inactive_fg +exec 'hi StatusLineTerm' . s:fg_statusline_active_bg . s:bg_statusline_active_fg +exec 'hi StatusLineTermNC' . s:fg_statusline_inactive_bg . s:bg_statusline_inactive_fg + +exec 'hi Visual' . s:fg_visual_fg . s:bg_visual_bg +exec 'hi Directory' . s:fg_blue +exec 'hi ModeMsg' . s:fg_olive +exec 'hi MoreMsg' . s:fg_olive +exec 'hi Question' . s:fg_olive +exec 'hi WarningMsg' . s:fg_pink +exec 'hi MatchParen' . s:fg_matchparen_fg . s:bg_matchparen_bg +exec 'hi Folded' . s:fg_folded_fg . s:bg_folded_bg +exec 'hi WildMenu' . s:fg_wildmenu_fg . s:bg_wildmenu_bg . s:ft_bold + +if version >= 700 + exec 'hi CursorLine' . s:bg_cursorline . s:ft_none + exec 'hi CursorLineNr' . s:fg_cursorlinenr_fg . s:bg_cursorlinenr_bg . s:ft_none + exec 'hi CursorColumn' . s:bg_cursorcolumn . s:ft_none + exec 'hi PMenu' . s:fg_popupmenu_fg . s:bg_popupmenu_bg . s:ft_none + exec 'hi PMenuSel' . s:fg_popupmenu_fg . s:bg_popupmenu_bg . s:ft_reverse + if s:transparent_background + exec 'hi SignColumn' . s:bg_transparent . s:ft_none + else + exec 'hi SignColumn' . s:fg_green . s:bg_background . s:ft_none + endif +end +if version >= 703 + exec 'hi ColorColumn' . s:bg_cursorcolumn . s:ft_none +end + +exec 'hi TabLine' . s:fg_tabline_inactive_fg . s:bg_tabline_inactive_bg . s:ft_none +exec 'hi TabLineFill' . s:fg_tabline_bg . s:bg_tabline_bg . s:ft_none +exec 'hi TabLineSel' . s:fg_tabline_active_fg . s:bg_tabline_active_bg . s:ft_none + +exec 'hi BufTabLineCurrent' . s:fg_buftabline_current_fg . s:bg_buftabline_current_bg . s:ft_none +exec 'hi BufTabLineActive' . s:fg_buftabline_active_fg . s:bg_buftabline_active_bg . s:ft_none +exec 'hi BufTabLineHidden' . s:fg_buftabline_inactive_fg . s:bg_buftabline_inactive_bg . s:ft_none +exec 'hi BufTabLineFill' . s:bg_buftabline_bg . s:ft_none + +" --- Standard Group Highlighting {{{ + +exec 'hi Comment' . s:fg_comment . s:ft_italic + +exec 'hi Constant' . s:fg_orange +exec 'hi String' . s:fg_olive +exec 'hi Character' . s:fg_olive +exec 'hi Number' . s:fg_orange +exec 'hi Boolean' . s:fg_green . s:ft_bold +exec 'hi Float' . s:fg_orange + +exec 'hi Identifier' . s:fg_navy +exec 'hi Function' . s:fg_foreground + +exec 'hi Statement' . s:fg_pink . s:ft_none +exec 'hi Conditional' . s:fg_purple . s:ft_bold +exec 'hi Repeat' . s:fg_purple . s:ft_bold +exec 'hi Label' . s:fg_blue +exec 'hi Operator' . s:fg_aqua . s:ft_none +exec 'hi Keyword' . s:fg_blue +exec 'hi Exception' . s:fg_red + +exec 'hi PreProc' . s:fg_blue +exec 'hi Include' . s:fg_red +exec 'hi Define' . s:fg_blue +exec 'hi Macro' . s:fg_blue +exec 'hi PreCondit' . s:fg_aqua + +exec 'hi Type' . s:fg_pink . s:ft_bold +exec 'hi StorageClass' . s:fg_navy . s:ft_bold +exec 'hi Structure' . s:fg_blue . s:ft_bold +exec 'hi Typedef' . s:fg_pink . s:ft_bold + +exec 'hi Special' . s:fg_foreground +exec 'hi SpecialChar' . s:fg_foreground +exec 'hi Tag' . s:fg_green +exec 'hi Delimiter' . s:fg_aqua +exec 'hi SpecialComment' . s:fg_comment . s:ft_bold +exec 'hi Debug' . s:fg_orange + +exec 'hi Error' . s:fg_error_fg . s:bg_error_bg +exec 'hi Todo' . s:fg_todo_fg . s:bg_todo_bg . s:ft_bold + +exec 'hi Title' . s:fg_comment +exec 'hi Global' . s:fg_blue + +" --- end of Standard Group Highlighting }}} + +" --- Language Highlighting {{{ + +" VimL Highlighting +exec 'hi vimCommand' . s:fg_pink +exec 'hi vimVar' . s:fg_navy +exec 'hi vimFuncKey' . s:fg_pink +exec 'hi vimFunction' . s:fg_blue . s:ft_bold +exec 'hi vimNotFunc' . s:fg_pink +exec 'hi vimMap' . s:fg_red +exec 'hi vimAutoEvent' . s:fg_aqua . s:ft_bold +exec 'hi vimMapModKey' . s:fg_aqua +exec 'hi vimFuncName' . s:fg_purple +exec 'hi vimIsCommand' . s:fg_foreground +exec 'hi vimFuncVar' . s:fg_aqua +exec 'hi vimLet' . s:fg_red +exec 'hi vimContinue' . s:fg_aqua +exec 'hi vimMapRhsExtend' . s:fg_foreground +exec 'hi vimCommentTitle' . s:fg_comment . s:ft_italic_bold +exec 'hi vimBracket' . s:fg_aqua +exec 'hi vimParenSep' . s:fg_aqua +exec 'hi vimNotation' . s:fg_aqua +exec 'hi vimOper' . s:fg_foreground +exec 'hi vimOperParen' . s:fg_foreground +exec 'hi vimSynType' . s:fg_purple +exec 'hi vimSynReg' . s:fg_pink . s:ft_none +exec 'hi vimSynRegion' . s:fg_foreground +exec 'hi vimSynMtchGrp' . s:fg_pink +exec 'hi vimSynNextgroup' . s:fg_pink +exec 'hi vimSynKeyRegion' . s:fg_green +exec 'hi vimSynRegOpt' . s:fg_blue +exec 'hi vimSynMtchOpt' . s:fg_blue +exec 'hi vimSynContains' . s:fg_pink +exec 'hi vimGroupName' . s:fg_foreground +exec 'hi vimGroupList' . s:fg_foreground +exec 'hi vimHiGroup' . s:fg_foreground +exec 'hi vimGroup' . s:fg_navy . s:ft_bold +exec 'hi vimOnlyOption' . s:fg_blue + +" Makefile Highlighting +exec 'hi makeIdent' . s:fg_blue +exec 'hi makeSpecTarget' . s:fg_olive +exec 'hi makeTarget' . s:fg_red +exec 'hi makeStatement' . s:fg_aqua . s:ft_bold +exec 'hi makeCommands' . s:fg_foreground +exec 'hi makeSpecial' . s:fg_orange . s:ft_bold + +" CMake Highlighting (Builtin) +exec 'hi cmakeStatement' . s:fg_blue +exec 'hi cmakeArguments' . s:fg_foreground +exec 'hi cmakeVariableValue' . s:fg_pink + +" CMake Highlighting (Plugin: https://github.com/pboettch/vim-cmake-syntax) +exec 'hi cmakeCommand' . s:fg_blue +exec 'hi cmakeCommandConditional' . s:fg_purple . s:ft_bold +exec 'hi cmakeKWset' . s:fg_orange +exec 'hi cmakeKWvariable_watch' . s:fg_orange +exec 'hi cmakeKWif' . s:fg_orange +exec 'hi cmakeArguments' . s:fg_foreground +exec 'hi cmakeKWproject' . s:fg_pink +exec 'hi cmakeGeneratorExpressions' . s:fg_orange +exec 'hi cmakeGeneratorExpression' . s:fg_aqua +exec 'hi cmakeVariable' . s:fg_pink +exec 'hi cmakeProperty' . s:fg_aqua +exec 'hi cmakeKWforeach' . s:fg_aqua +exec 'hi cmakeKWunset' . s:fg_aqua +exec 'hi cmakeKWmacro' . s:fg_aqua +exec 'hi cmakeKWget_property' . s:fg_aqua +exec 'hi cmakeKWset_tests_properties' . s:fg_aqua +exec 'hi cmakeKWmessage' . s:fg_aqua +exec 'hi cmakeKWinstall_targets' . s:fg_orange +exec 'hi cmakeKWsource_group' . s:fg_orange +exec 'hi cmakeKWfind_package' . s:fg_aqua +exec 'hi cmakeKWstring' . s:fg_olive +exec 'hi cmakeKWinstall' . s:fg_aqua +exec 'hi cmakeKWtarget_sources' . s:fg_orange + +" C Highlighting +exec 'hi cType' . s:fg_pink . s:ft_bold +exec 'hi cFormat' . s:fg_olive +exec 'hi cStorageClass' . s:fg_navy . s:ft_bold + +exec 'hi cBoolean' . s:fg_green . s:ft_bold +exec 'hi cCharacter' . s:fg_olive +exec 'hi cConstant' . s:fg_green . s:ft_bold +exec 'hi cConditional' . s:fg_purple . s:ft_bold +exec 'hi cSpecial' . s:fg_olive . s:ft_bold +exec 'hi cDefine' . s:fg_blue +exec 'hi cNumber' . s:fg_orange +exec 'hi cPreCondit' . s:fg_aqua +exec 'hi cRepeat' . s:fg_purple . s:ft_bold +exec 'hi cLabel' . s:fg_aqua +" exec 'hi cAnsiFunction' . s:fg_aqua . s:ft_bold +" exec 'hi cAnsiName' . s:fg_pink +exec 'hi cDelimiter' . s:fg_blue +" exec 'hi cBraces' . s:fg_foreground +" exec 'hi cIdentifier' . s:fg_blue . s:bg_pink +" exec 'hi cSemiColon' . s:bg_blue +exec 'hi cOperator' . s:fg_aqua +" exec 'hi cStatement' . s:fg_pink +" exec 'hi cTodo' . s:fg_comment . s:ft_bold +" exec 'hi cStructure' . s:fg_blue . s:ft_bold +exec 'hi cCustomParen' . s:fg_foreground +" exec 'hi cCustomFunc' . s:fg_foreground +" exec 'hi cUserFunction' . s:fg_blue . s:ft_bold +exec 'hi cOctalZero' . s:fg_purple . s:ft_bold +exec 'hi cFunction' . s:fg_blue +" exec 'hi cFunction' . s:fg_foreground + +" CPP highlighting +exec 'hi cppBoolean' . s:fg_green . s:ft_bold +exec 'hi cppSTLnamespace' . s:fg_purple +exec 'hi cppSTLexception' . s:fg_pink +exec 'hi cppSTLfunctional' . s:fg_foreground . s:ft_bold +exec 'hi cppSTLiterator' . s:fg_foreground . s:ft_bold +exec 'hi cppExceptions' . s:fg_red +exec 'hi cppStatement' . s:fg_blue +exec 'hi cppStorageClass' . s:fg_navy . s:ft_bold +exec 'hi cppAccess' . s:fg_orange . s:ft_bold +" exec 'hi cppSTL' . s:fg_blue +" highlight standard library +exec 'hi cppSTLconstant' . s:fg_green . s:ft_bold +exec 'hi cppSTLtype' . s:fg_pink . s:ft_bold +exec 'hi cppSTLfunction' . s:fg_blue +exec 'hi cppSTLios' . s:fg_olive . s:ft_bold +" DON'T highlight standard library +" exec 'hi cppSTLconstant' . s:fg_foreground +" exec 'hi cppSTLtype' . s:fg_foreground +" exec 'hi cppSTLfunction' . s:fg_foreground +" exec 'hi cppSTLios' . s:fg_foreground + +" Rust highlighting +exec 'hi rustKeyword' . s:fg_pink +exec 'hi rustModPath' . s:fg_blue +exec 'hi rustModPathSep' . s:fg_blue +exec 'hi rustLifetime' . s:fg_purple +exec 'hi rustStructure' . s:fg_aqua . s:ft_bold +exec 'hi rustAttribute' . s:fg_aqua . s:ft_bold +exec 'hi rustPanic' . s:fg_olive . s:ft_bold +exec 'hi rustTrait' . s:fg_blue . s:ft_bold +exec 'hi rustEnum' . s:fg_green . s:ft_bold +exec 'hi rustEnumVariant' . s:fg_green +exec 'hi rustSelf' . s:fg_orange +exec 'hi rustSigil' . s:fg_aqua . s:ft_bold +exec 'hi rustOperator' . s:fg_aqua . s:ft_bold +exec 'hi rustMacro' . s:fg_olive . s:ft_bold +exec 'hi rustMacroVariable' . s:fg_olive +exec 'hi rustAssert' . s:fg_olive . s:ft_bold +exec 'hi rustConditional' . s:fg_purple . s:ft_bold + +" Lex highlighting +exec 'hi lexCFunctions' . s:fg_foreground +exec 'hi lexAbbrv' . s:fg_purple +exec 'hi lexAbbrvRegExp' . s:fg_aqua +exec 'hi lexAbbrvComment' . s:fg_comment +exec 'hi lexBrace' . s:fg_navy +exec 'hi lexPat' . s:fg_aqua +exec 'hi lexPatComment' . s:fg_comment +exec 'hi lexPatTag' . s:fg_orange +" exec 'hi lexPatBlock' . s:fg_foreground . s:ft_bold +exec 'hi lexSlashQuote' . s:fg_foreground +exec 'hi lexSep' . s:fg_foreground +exec 'hi lexStartState' . s:fg_orange +exec 'hi lexPatTagZone' . s:fg_olive . s:ft_bold +exec 'hi lexMorePat' . s:fg_olive . s:ft_bold +exec 'hi lexOptions' . s:fg_olive . s:ft_bold +exec 'hi lexPatString' . s:fg_olive + +" Yacc highlighting +exec 'hi yaccNonterminal' . s:fg_navy +exec 'hi yaccDelim' . s:fg_orange +exec 'hi yaccInitKey' . s:fg_aqua +exec 'hi yaccInit' . s:fg_navy +exec 'hi yaccKey' . s:fg_purple +exec 'hi yaccVar' . s:fg_aqua + +" NASM highlighting +exec 'hi nasmStdInstruction' . s:fg_navy +exec 'hi nasmGen08Register' . s:fg_aqua +exec 'hi nasmGen16Register' . s:fg_aqua +exec 'hi nasmGen32Register' . s:fg_aqua +exec 'hi nasmGen64Register' . s:fg_aqua +exec 'hi nasmHexNumber' . s:fg_purple +exec 'hi nasmStorage' . s:fg_aqua . s:ft_bold +exec 'hi nasmLabel' . s:fg_pink +exec 'hi nasmDirective' . s:fg_blue . s:ft_bold +exec 'hi nasmLocalLabel' . s:fg_orange + +" GAS highlighting +exec 'hi gasSymbol' . s:fg_pink +exec 'hi gasDirective' . s:fg_blue . s:ft_bold +exec 'hi gasOpcode_386_Base' . s:fg_navy +exec 'hi gasDecimalNumber' . s:fg_purple +exec 'hi gasSymbolRef' . s:fg_pink +exec 'hi gasRegisterX86' . s:fg_blue +exec 'hi gasOpcode_P6_Base' . s:fg_navy +exec 'hi gasDirectiveStore' . s:fg_foreground . s:ft_bold + +" MIPS highlighting +exec 'hi mipsInstruction' . s:fg_pink +exec 'hi mipsRegister' . s:fg_navy +exec 'hi mipsLabel' . s:fg_aqua . s:ft_bold +exec 'hi mipsDirective' . s:fg_purple . s:ft_bold + +" Shell/Bash highlighting +exec 'hi bashStatement' . s:fg_foreground . s:ft_bold +exec 'hi shDerefVar' . s:fg_aqua . s:ft_bold +exec 'hi shDerefSimple' . s:fg_aqua +exec 'hi shFunction' . s:fg_orange . s:ft_bold +exec 'hi shStatement' . s:fg_foreground +exec 'hi shLoop' . s:fg_purple . s:ft_bold +exec 'hi shQuote' . s:fg_olive +exec 'hi shCaseEsac' . s:fg_aqua . s:ft_bold +exec 'hi shSnglCase' . s:fg_purple . s:ft_none +exec 'hi shFunctionOne' . s:fg_navy +exec 'hi shCase' . s:fg_navy +exec 'hi shSetList' . s:fg_navy +" @see Dockerfile Highlighting section for more sh* + +" PowerShell Highlighting +exec 'hi ps1Type' . s:fg_green . s:ft_bold +exec 'hi ps1Variable' . s:fg_navy +exec 'hi ps1Boolean' . s:fg_navy . s:ft_bold +exec 'hi ps1FunctionInvocation' . s:fg_pink +exec 'hi ps1FunctionDeclaration' . s:fg_pink +exec 'hi ps1Keyword' . s:fg_blue . s:ft_bold +exec 'hi ps1Exception' . s:fg_red +exec 'hi ps1Operator' . s:fg_aqua . s:ft_bold +exec 'hi ps1CommentDoc' . s:fg_purple +exec 'hi ps1CDocParam' . s:fg_orange + +" HTML Highlighting +exec 'hi htmlTitle' . s:fg_green . s:ft_bold +exec 'hi htmlH1' . s:fg_green . s:ft_bold +exec 'hi htmlH2' . s:fg_aqua . s:ft_bold +exec 'hi htmlH3' . s:fg_purple . s:ft_bold +exec 'hi htmlH4' . s:fg_orange . s:ft_bold +exec 'hi htmlTag' . s:fg_comment +exec 'hi htmlTagName' . s:fg_wine +exec 'hi htmlArg' . s:fg_pink +exec 'hi htmlEndTag' . s:fg_comment +exec 'hi htmlString' . s:fg_blue +exec 'hi htmlScriptTag' . s:fg_comment +exec 'hi htmlBold' . s:fg_foreground . s:ft_bold +exec 'hi htmlItalic' . s:fg_comment . s:ft_italic +exec 'hi htmlBoldItalic' . s:fg_navy . s:ft_italic_bold +" exec 'hi htmlLink' . s:fg_blue . s:ft_bold +exec 'hi htmlTagN' . s:fg_wine . s:ft_bold +exec 'hi htmlSpecialTagName' . s:fg_wine +exec 'hi htmlComment' . s:fg_comment . s:ft_italic +exec 'hi htmlCommentPart' . s:fg_comment . s:ft_italic + +" CSS Highlighting +exec 'hi cssIdentifier' . s:fg_pink +exec 'hi cssPositioningProp' . s:fg_foreground +exec 'hi cssNoise' . s:fg_foreground +exec 'hi cssBoxProp' . s:fg_foreground +exec 'hi cssTableAttr' . s:fg_purple +exec 'hi cssPositioningAttr' . s:fg_navy +exec 'hi cssValueLength' . s:fg_orange +exec 'hi cssFunctionName' . s:fg_blue +exec 'hi cssUnitDecorators' . s:fg_aqua +exec 'hi cssColor' . s:fg_blue . s:ft_bold +exec 'hi cssBraces' . s:fg_pink +exec 'hi cssBackgroundProp' . s:fg_foreground +exec 'hi cssTextProp' . s:fg_foreground +exec 'hi cssDimensionProp' . s:fg_foreground +exec 'hi cssClassName' . s:fg_pink + +" Markdown Highlighting +exec 'hi markdownHeadingRule' . s:fg_pink . s:ft_bold +exec 'hi markdownH1' . s:fg_pink . s:ft_bold +exec 'hi markdownH2' . s:fg_orange . s:ft_bold +exec 'hi markdownBlockquote' . s:fg_pink +exec 'hi markdownCodeBlock' . s:fg_olive +exec 'hi markdownCode' . s:fg_olive +exec 'hi markdownLink' . s:fg_blue . s:ft_bold +exec 'hi markdownUrl' . s:fg_blue +exec 'hi markdownLinkText' . s:fg_pink +exec 'hi markdownLinkTextDelimiter' . s:fg_purple +exec 'hi markdownLinkDelimiter' . s:fg_purple +exec 'hi markdownCodeDelimiter' . s:fg_blue + +exec 'hi mkdCode' . s:fg_olive +exec 'hi mkdLink' . s:fg_blue . s:ft_bold +exec 'hi mkdURL' . s:fg_comment +exec 'hi mkdString' . s:fg_foreground +exec 'hi mkdBlockQuote' . s:fg_pink +exec 'hi mkdLinkTitle' . s:fg_pink +exec 'hi mkdDelimiter' . s:fg_aqua +exec 'hi mkdRule' . s:fg_pink + +" reStructuredText Highlighting +exec 'hi rstSections' . s:fg_pink . s:ft_bold +exec 'hi rstDelimiter' . s:fg_pink . s:ft_bold +exec 'hi rstExplicitMarkup' . s:fg_pink . s:ft_bold +exec 'hi rstDirective' . s:fg_blue +exec 'hi rstHyperlinkTarget' . s:fg_green +exec 'hi rstExDirective' . s:fg_foreground +exec 'hi rstInlineLiteral' . s:fg_olive +exec 'hi rstInterpretedTextOrHyperlinkReference' . s:fg_blue + +" Python Highlighting +exec 'hi pythonImport' . s:fg_pink . s:ft_bold +exec 'hi pythonExceptions' . s:fg_red +exec 'hi pythonException' . s:fg_purple . s:ft_bold +exec 'hi pythonInclude' . s:fg_red +exec 'hi pythonStatement' . s:fg_pink +exec 'hi pythonConditional' . s:fg_purple . s:ft_bold +exec 'hi pythonRepeat' . s:fg_purple . s:ft_bold +exec 'hi pythonFunction' . s:fg_aqua . s:ft_bold +exec 'hi pythonPreCondit' . s:fg_purple +exec 'hi pythonExClass' . s:fg_orange +exec 'hi pythonOperator' . s:fg_purple . s:ft_bold +exec 'hi pythonBuiltin' . s:fg_foreground +exec 'hi pythonDecorator' . s:fg_orange + +exec 'hi pythonString' . s:fg_olive +exec 'hi pythonEscape' . s:fg_olive . s:ft_bold +exec 'hi pythonStrFormatting' . s:fg_olive . s:ft_bold + +exec 'hi pythonBoolean' . s:fg_green . s:ft_bold +exec 'hi pythonBytesEscape' . s:fg_olive . s:ft_bold +exec 'hi pythonDottedName' . s:fg_purple +exec 'hi pythonStrFormat' . s:fg_foreground + +exec 'hi pythonBuiltinFunc' . s:fg_blue +exec 'hi pythonBuiltinObj' . s:fg_red +" exec 'hi pythonBuiltinFunc' . s:fg_foreground +" exec 'hi pythonBuiltinObj' . s:fg_foreground + +" Java Highlighting +exec 'hi javaExternal' . s:fg_pink +exec 'hi javaAnnotation' . s:fg_orange +exec 'hi javaTypedef' . s:fg_aqua +exec 'hi javaClassDecl' . s:fg_aqua . s:ft_bold +exec 'hi javaScopeDecl' . s:fg_blue . s:ft_bold +exec 'hi javaStorageClass' . s:fg_navy . s:ft_bold +exec 'hi javaBoolean' . s:fg_green . s:ft_bold +exec 'hi javaConstant' . s:fg_blue +exec 'hi javaCommentTitle' . s:fg_wine +exec 'hi javaDocTags' . s:fg_aqua +exec 'hi javaDocComment' . s:fg_comment +exec 'hi javaDocParam' . s:fg_foreground +exec 'hi javaStatement' . s:fg_pink + +" JavaScript Highlighting +exec 'hi javaScriptBraces' . s:fg_blue +exec 'hi javaScriptParens' . s:fg_blue +exec 'hi javaScriptIdentifier' . s:fg_pink +exec 'hi javaScriptFunction' . s:fg_blue . s:ft_bold +exec 'hi javaScriptConditional' . s:fg_purple . s:ft_bold +exec 'hi javaScriptRepeat' . s:fg_purple . s:ft_bold +exec 'hi javaScriptBoolean' . s:fg_green . s:ft_bold +exec 'hi javaScriptNumber' . s:fg_orange +exec 'hi javaScriptMember' . s:fg_navy +exec 'hi javaScriptReserved' . s:fg_navy +exec 'hi javascriptNull' . s:fg_comment . s:ft_bold +exec 'hi javascriptGlobal' . s:fg_foreground +exec 'hi javascriptStatement' . s:fg_pink +exec 'hi javaScriptMessage' . s:fg_foreground +exec 'hi javaScriptMember' . s:fg_foreground + +" TypeScript Highlighting +exec 'hi typescriptDecorators' . s:fg_orange +exec 'hi typescriptLabel' . s:fg_purple . s:ft_bold + +" @target https://github.com/pangloss/vim-javascript +exec 'hi jsImport' . s:fg_pink . s:ft_bold +exec 'hi jsExport' . s:fg_pink . s:ft_bold +exec 'hi jsModuleAs' . s:fg_pink . s:ft_bold +exec 'hi jsFrom' . s:fg_pink . s:ft_bold +exec 'hi jsExportDefault' . s:fg_pink . s:ft_bold +exec 'hi jsFuncParens' . s:fg_blue +exec 'hi jsFuncBraces' . s:fg_blue +exec 'hi jsParens' . s:fg_blue +exec 'hi jsBraces' . s:fg_blue +exec 'hi jsNoise' . s:fg_blue + +" Jsx Highlighting +" @target https://github.com/MaxMEllon/vim-jsx-pretty +exec 'hi jsxTagName' . s:fg_wine +exec 'hi jsxComponentName' . s:fg_wine +exec 'hi jsxAttrib' . s:fg_pink +exec 'hi jsxEqual' . s:fg_comment +exec 'hi jsxString' . s:fg_blue +exec 'hi jsxCloseTag' . s:fg_comment +exec 'hi jsxCloseString' . s:fg_comment +exec 'hi jsxDot' . s:fg_wine +exec 'hi jsxNamespace' . s:fg_wine +exec 'hi jsxPunct' . s:fg_comment + +" Json Highlighting +" @target https://github.com/elzr/vim-json +exec 'hi jsonKeyword' . s:fg_blue +exec 'hi jsonString' . s:fg_olive +exec 'hi jsonQuote' . s:fg_comment +exec 'hi jsonNoise' . s:fg_foreground +exec 'hi jsonKeywordMatch' . s:fg_foreground +exec 'hi jsonBraces' . s:fg_foreground +exec 'hi jsonNumber' . s:fg_orange +exec 'hi jsonNull' . s:fg_purple . s:ft_bold +exec 'hi jsonBoolean' . s:fg_green . s:ft_bold +exec 'hi jsonCommentError' . s:fg_pink . s:bg_background + +" Go Highlighting +exec 'hi goDirective' . s:fg_red +exec 'hi goDeclaration' . s:fg_blue . s:ft_bold +exec 'hi goStatement' . s:fg_pink +exec 'hi goConditional' . s:fg_purple . s:ft_bold +exec 'hi goConstants' . s:fg_orange +exec 'hi goFunction' . s:fg_orange +" exec 'hi goTodo' . s:fg_comment . s:ft_bold +exec 'hi goDeclType' . s:fg_blue +exec 'hi goBuiltins' . s:fg_purple + +" Systemtap Highlighting +" exec 'hi stapBlock' . s:fg_comment . s:ft_none +exec 'hi stapComment' . s:fg_comment . s:ft_none +exec 'hi stapProbe' . s:fg_aqua . s:ft_bold +exec 'hi stapStat' . s:fg_navy . s:ft_bold +exec 'hi stapFunc' . s:fg_foreground +exec 'hi stapString' . s:fg_olive +exec 'hi stapTarget' . s:fg_navy +exec 'hi stapStatement' . s:fg_pink +exec 'hi stapType' . s:fg_pink . s:ft_bold +exec 'hi stapSharpBang' . s:fg_comment +exec 'hi stapDeclaration' . s:fg_pink +exec 'hi stapCMacro' . s:fg_blue + +" DTrace Highlighting +exec 'hi dtraceProbe' . s:fg_blue +exec 'hi dtracePredicate' . s:fg_purple . s:ft_bold +exec 'hi dtraceComment' . s:fg_comment +exec 'hi dtraceFunction' . s:fg_foreground +exec 'hi dtraceAggregatingFunction' . s:fg_blue . s:ft_bold +exec 'hi dtraceStatement' . s:fg_navy . s:ft_bold +exec 'hi dtraceIdentifier' . s:fg_pink +exec 'hi dtraceOption' . s:fg_pink +exec 'hi dtraceConstant' . s:fg_orange +exec 'hi dtraceType' . s:fg_pink . s:ft_bold + +" PlantUML Highlighting +exec 'hi plantumlPreProc' . s:fg_orange . s:ft_bold +exec 'hi plantumlDirectedOrVerticalArrowRL' . s:fg_pink +exec 'hi plantumlDirectedOrVerticalArrowLR' . s:fg_pink +exec 'hi plantumlString' . s:fg_olive +exec 'hi plantumlActivityThing' . s:fg_purple +exec 'hi plantumlText' . s:fg_navy +exec 'hi plantumlClassPublic' . s:fg_olive . s:ft_bold +exec 'hi plantumlClassPrivate' . s:fg_red +exec 'hi plantumlColonLine' . s:fg_orange +exec 'hi plantumlClass' . s:fg_navy +exec 'hi plantumlHorizontalArrow' . s:fg_pink +exec 'hi plantumlTypeKeyword' . s:fg_blue . s:ft_bold +exec 'hi plantumlKeyword' . s:fg_pink . s:ft_bold + +exec 'hi plantumlType' . s:fg_blue . s:ft_bold +exec 'hi plantumlBlock' . s:fg_pink . s:ft_bold +exec 'hi plantumlPreposition' . s:fg_orange +exec 'hi plantumlLayout' . s:fg_blue . s:ft_bold +exec 'hi plantumlNote' . s:fg_orange +exec 'hi plantumlLifecycle' . s:fg_aqua +exec 'hi plantumlParticipant' . s:fg_foreground . s:ft_bold + + +" Haskell Highlighting +exec 'hi haskellType' . s:fg_aqua . s:ft_bold +exec 'hi haskellIdentifier' . s:fg_orange . s:ft_bold +exec 'hi haskellOperators' . s:fg_pink +exec 'hi haskellWhere' . s:fg_foreground . s:ft_bold +exec 'hi haskellDelimiter' . s:fg_aqua +exec 'hi haskellImportKeywords' . s:fg_pink +exec 'hi haskellStatement' . s:fg_purple . s:ft_bold + + +" SQL/MySQL Highlighting +exec 'hi sqlStatement' . s:fg_pink . s:ft_bold +exec 'hi sqlType' . s:fg_blue . s:ft_bold +exec 'hi sqlKeyword' . s:fg_pink +exec 'hi sqlOperator' . s:fg_aqua +exec 'hi sqlSpecial' . s:fg_green . s:ft_bold + +exec 'hi mysqlVariable' . s:fg_olive . s:ft_bold +exec 'hi mysqlType' . s:fg_blue . s:ft_bold +exec 'hi mysqlKeyword' . s:fg_pink +exec 'hi mysqlOperator' . s:fg_aqua +exec 'hi mysqlSpecial' . s:fg_green . s:ft_bold + + +" Octave/MATLAB Highlighting +exec 'hi octaveVariable' . s:fg_foreground +exec 'hi octaveDelimiter' . s:fg_pink +exec 'hi octaveQueryVar' . s:fg_foreground +exec 'hi octaveSemicolon' . s:fg_purple +exec 'hi octaveFunction' . s:fg_navy +exec 'hi octaveSetVar' . s:fg_blue +exec 'hi octaveUserVar' . s:fg_foreground +exec 'hi octaveArithmeticOperator' . s:fg_aqua +exec 'hi octaveBeginKeyword' . s:fg_purple . s:ft_bold +exec 'hi octaveElseKeyword' . s:fg_purple . s:ft_bold +exec 'hi octaveEndKeyword' . s:fg_purple . s:ft_bold +exec 'hi octaveStatement' . s:fg_pink + +" Ruby Highlighting +exec 'hi rubyModule' . s:fg_navy . s:ft_bold +exec 'hi rubyClass' . s:fg_pink . s:ft_bold +exec 'hi rubyPseudoVariable' . s:fg_comment . s:ft_bold +exec 'hi rubyKeyword' . s:fg_pink +exec 'hi rubyInstanceVariable' . s:fg_purple +exec 'hi rubyFunction' . s:fg_foreground . s:ft_bold +exec 'hi rubyDefine' . s:fg_pink +exec 'hi rubySymbol' . s:fg_aqua +exec 'hi rubyConstant' . s:fg_blue +exec 'hi rubyAccess' . s:fg_navy +exec 'hi rubyAttribute' . s:fg_green +exec 'hi rubyInclude' . s:fg_red +exec 'hi rubyLocalVariableOrMethod' . s:fg_orange +exec 'hi rubyCurlyBlock' . s:fg_foreground +exec 'hi rubyCurlyBlockDelimiter' . s:fg_aqua +exec 'hi rubyArrayDelimiter' . s:fg_aqua +exec 'hi rubyStringDelimiter' . s:fg_olive +exec 'hi rubyInterpolationDelimiter' . s:fg_orange +exec 'hi rubyConditional' . s:fg_purple . s:ft_bold +exec 'hi rubyRepeat' . s:fg_purple . s:ft_bold +exec 'hi rubyControl' . s:fg_purple . s:ft_bold +exec 'hi rubyException' . s:fg_purple . s:ft_bold +exec 'hi rubyExceptional' . s:fg_purple . s:ft_bold +exec 'hi rubyBoolean' . s:fg_green . s:ft_bold + +" Fortran Highlighting +exec 'hi fortranUnitHeader' . s:fg_blue . s:ft_bold +exec 'hi fortranIntrinsic' . s:fg_blue . s:bg_background . s:ft_none +exec 'hi fortranType' . s:fg_pink . s:ft_bold +exec 'hi fortranTypeOb' . s:fg_pink . s:ft_bold +exec 'hi fortranStructure' . s:fg_aqua +exec 'hi fortranStorageClass' . s:fg_navy . s:ft_bold +exec 'hi fortranStorageClassR' . s:fg_navy . s:ft_bold +exec 'hi fortranKeyword' . s:fg_pink +exec 'hi fortranReadWrite' . s:fg_aqua . s:ft_bold +exec 'hi fortranIO' . s:fg_navy +exec 'hi fortranOperator' . s:fg_aqua . s:ft_bold +exec 'hi fortranCall' . s:fg_aqua . s:ft_bold +exec 'hi fortranContinueMark' . s:fg_green + +" ALGOL Highlighting (Plugin: https://github.com/sterpe/vim-algol68) +exec 'hi algol68Statement' . s:fg_blue . s:ft_bold +exec 'hi algol68Operator' . s:fg_aqua . s:ft_bold +exec 'hi algol68PreProc' . s:fg_green +exec 'hi algol68Function' . s:fg_blue + +" R Highlighting +exec 'hi rType' . s:fg_blue +exec 'hi rArrow' . s:fg_pink +exec 'hi rDollar' . s:fg_blue + +" XXD Highlighting +exec 'hi xxdAddress' . s:fg_navy +exec 'hi xxdSep' . s:fg_pink +exec 'hi xxdAscii' . s:fg_pink +exec 'hi xxdDot' . s:fg_aqua + +" PHP Highlighting +exec 'hi phpIdentifier' . s:fg_foreground +exec 'hi phpVarSelector' . s:fg_pink +exec 'hi phpKeyword' . s:fg_blue +exec 'hi phpRepeat' . s:fg_purple . s:ft_bold +exec 'hi phpConditional' . s:fg_purple . s:ft_bold +exec 'hi phpStatement' . s:fg_pink +exec 'hi phpAssignByRef' . s:fg_aqua . s:ft_bold +exec 'hi phpSpecialFunction' . s:fg_blue +exec 'hi phpFunctions' . s:fg_blue +exec 'hi phpComparison' . s:fg_aqua +exec 'hi phpBackslashSequences' . s:fg_olive . s:ft_bold +exec 'hi phpMemberSelector' . s:fg_blue +exec 'hi phpStorageClass' . s:fg_purple . s:ft_bold +exec 'hi phpDefine' . s:fg_navy +exec 'hi phpIntVar' . s:fg_navy . s:ft_bold + +" Perl Highlighting +exec 'hi perlFiledescRead' . s:fg_green +exec 'hi perlMatchStartEnd' . s:fg_pink +exec 'hi perlStatementFlow' . s:fg_pink +exec 'hi perlStatementStorage' . s:fg_pink +exec 'hi perlFunction' . s:fg_pink . s:ft_bold +exec 'hi perlMethod' . s:fg_foreground +exec 'hi perlStatementFiledesc' . s:fg_orange +exec 'hi perlVarPlain' . s:fg_navy +exec 'hi perlSharpBang' . s:fg_comment +exec 'hi perlStatementInclude' . s:fg_aqua . s:ft_bold +exec 'hi perlStatementScalar' . s:fg_purple +exec 'hi perlSubName' . s:fg_aqua . s:ft_bold +exec 'hi perlSpecialString' . s:fg_olive . s:ft_bold + +" Pascal Highlighting +exec 'hi pascalType' . s:fg_pink . s:ft_bold +exec 'hi pascalStatement' . s:fg_blue . s:ft_bold +exec 'hi pascalPredefined' . s:fg_pink +exec 'hi pascalFunction' . s:fg_foreground +exec 'hi pascalStruct' . s:fg_navy . s:ft_bold +exec 'hi pascalOperator' . s:fg_aqua . s:ft_bold +exec 'hi pascalPreProc' . s:fg_green +exec 'hi pascalAcces' . s:fg_navy . s:ft_bold + +" Lua Highlighting +exec 'hi luaFunc' . s:fg_foreground +exec 'hi luaIn' . s:fg_blue . s:ft_bold +exec 'hi luaFunction' . s:fg_pink +exec 'hi luaStatement' . s:fg_blue +exec 'hi luaRepeat' . s:fg_blue . s:ft_bold +exec 'hi luaCondStart' . s:fg_purple . s:ft_bold +exec 'hi luaTable' . s:fg_aqua . s:ft_bold +exec 'hi luaConstant' . s:fg_green . s:ft_bold +exec 'hi luaElse' . s:fg_purple . s:ft_bold +exec 'hi luaCondElseif' . s:fg_purple . s:ft_bold +exec 'hi luaCond' . s:fg_purple . s:ft_bold +exec 'hi luaCondEnd' . s:fg_purple + +" Clojure highlighting: +exec 'hi clojureConstant' . s:fg_blue +exec 'hi clojureBoolean' . s:fg_orange +exec 'hi clojureCharacter' . s:fg_olive +exec 'hi clojureKeyword' . s:fg_pink +exec 'hi clojureNumber' . s:fg_orange +exec 'hi clojureString' . s:fg_olive +exec 'hi clojureRegexp' . s:fg_purple +exec 'hi clojureRegexpEscape' . s:fg_pink +exec 'hi clojureParen' . s:fg_aqua +exec 'hi clojureVariable' . s:fg_olive +exec 'hi clojureCond' . s:fg_blue +exec 'hi clojureDefine' . s:fg_blue . s:ft_bold +exec 'hi clojureException' . s:fg_red +exec 'hi clojureFunc' . s:fg_navy +exec 'hi clojureMacro' . s:fg_blue +exec 'hi clojureRepeat' . s:fg_blue +exec 'hi clojureSpecial' . s:fg_blue . s:ft_bold +exec 'hi clojureQuote' . s:fg_blue +exec 'hi clojureUnquote' . s:fg_blue +exec 'hi clojureMeta' . s:fg_blue +exec 'hi clojureDeref' . s:fg_blue +exec 'hi clojureAnonArg' . s:fg_blue +exec 'hi clojureRepeat' . s:fg_blue +exec 'hi clojureDispatch' . s:fg_aqua + +" Dockerfile Highlighting +" @target https://github.com/docker/docker/tree/master/contrib/syntax/vim +exec 'hi dockerfileKeyword' . s:fg_blue +exec 'hi shDerefVar' . s:fg_purple . s:ft_bold +exec 'hi shOperator' . s:fg_aqua +exec 'hi shOption' . s:fg_navy +exec 'hi shLine' . s:fg_foreground +exec 'hi shWrapLineOperator' . s:fg_pink + +" NGINX Highlighting +" @target https://github.com/evanmiller/nginx-vim-syntax +exec 'hi ngxDirectiveBlock' . s:fg_pink . s:ft_bold +exec 'hi ngxDirective' . s:fg_blue . s:ft_none +exec 'hi ngxDirectiveImportant' . s:fg_blue . s:ft_bold +exec 'hi ngxString' . s:fg_olive +exec 'hi ngxVariableString' . s:fg_purple +exec 'hi ngxVariable' . s:fg_purple . s:ft_none + +" Yaml Highlighting +exec 'hi yamlBlockMappingKey' . s:fg_blue +exec 'hi yamlKeyValueDelimiter' . s:fg_pink +exec 'hi yamlBlockCollectionItemStart' . s:fg_pink + +" Qt QML Highlighting +exec 'hi qmlObjectLiteralType' . s:fg_pink +exec 'hi qmlReserved' . s:fg_purple +exec 'hi qmlBindingProperty' . s:fg_navy +exec 'hi qmlType' . s:fg_navy + +" Dosini Highlighting +exec 'hi dosiniHeader' . s:fg_pink +exec 'hi dosiniLabel' . s:fg_blue + +" Mail highlighting +exec 'hi mailHeaderKey' . s:fg_blue +exec 'hi mailHeaderEmail' . s:fg_purple +exec 'hi mailSubject' . s:fg_pink +exec 'hi mailHeader' . s:fg_comment +exec 'hi mailURL' . s:fg_aqua +exec 'hi mailEmail' . s:fg_purple +exec 'hi mailQuoted1' . s:fg_olive +exec 'hi mailQuoted2' . s:fg_navy + +" XML Highlighting +exec 'hi xmlProcessingDelim' . s:fg_pink +exec 'hi xmlString' . s:fg_olive +exec 'hi xmlEqual' . s:fg_orange +exec 'hi xmlAttrib' . s:fg_navy +exec 'hi xmlAttribPunct' . s:fg_pink +exec 'hi xmlTag' . s:fg_blue +exec 'hi xmlTagName' . s:fg_blue +exec 'hi xmlEndTag' . s:fg_blue +exec 'hi xmlNamespace' . s:fg_orange + +" Exlixir Highlighting +" @target https://github.com/elixir-lang/vim-elixir +exec 'hi elixirAlias' . s:fg_blue . s:ft_bold +exec 'hi elixirAtom' . s:fg_navy +exec 'hi elixirVariable' . s:fg_navy +exec 'hi elixirUnusedVariable' . s:fg_foreground . s:ft_bold +exec 'hi elixirInclude' . s:fg_purple +exec 'hi elixirStringDelimiter' . s:fg_olive +exec 'hi elixirKeyword' . s:fg_purple . s:ft_bold +exec 'hi elixirFunctionDeclaration' . s:fg_aqua . s:ft_bold +exec 'hi elixirBlockDefinition' . s:fg_pink +exec 'hi elixirDefine' . s:fg_pink +exec 'hi elixirStructDefine' . s:fg_pink +exec 'hi elixirPrivateDefine' . s:fg_pink +exec 'hi elixirModuleDefine' . s:fg_pink +exec 'hi elixirProtocolDefine' . s:fg_pink +exec 'hi elixirImplDefine' . s:fg_pink +exec 'hi elixirModuleDeclaration' . s:fg_aqua . s:ft_bold +exec 'hi elixirDocString' . s:fg_olive +exec 'hi elixirDocTest' . s:fg_green . s:ft_bold + +" Erlang Highlighting +exec 'hi erlangBIF' . s:fg_purple . s:ft_bold +exec 'hi erlangBracket' . s:fg_pink +exec 'hi erlangLocalFuncCall' . s:fg_foreground +exec 'hi erlangVariable' . s:fg_foreground +exec 'hi erlangAtom' . s:fg_navy +exec 'hi erlangAttribute' . s:fg_blue . s:ft_bold +exec 'hi erlangRecordDef' . s:fg_blue . s:ft_bold +exec 'hi erlangRecord' . s:fg_blue +exec 'hi erlangRightArrow' . s:fg_blue . s:ft_bold +exec 'hi erlangStringModifier' . s:fg_olive . s:ft_bold +exec 'hi erlangInclude' . s:fg_blue . s:ft_bold +exec 'hi erlangKeyword' . s:fg_pink +exec 'hi erlangGlobalFuncCall' . s:fg_foreground + +" Cucumber Highlighting +exec 'hi cucumberFeature' . s:fg_blue . s:ft_bold +exec 'hi cucumberBackground' . s:fg_pink . s:ft_bold +exec 'hi cucumberScenario' . s:fg_pink . s:ft_bold +exec 'hi cucumberGiven' . s:fg_orange +exec 'hi cucumberGivenAnd' . s:fg_blue +exec 'hi cucumberThen' . s:fg_orange +exec 'hi cucumberThenAnd' . s:fg_blue +exec 'hi cucumberWhen' . s:fg_purple . s:ft_bold +exec 'hi cucumberScenarioOutline' . s:fg_pink . s:ft_bold +exec 'hi cucumberExamples' . s:fg_aqua +exec 'hi cucumberTags' . s:fg_aqua +exec 'hi cucumberPlaceholder' . s:fg_aqua + +" Ada Highlighting +exec 'hi adaInc' . s:fg_aqua . s:ft_bold +exec 'hi adaSpecial' . s:fg_aqua . s:ft_bold +exec 'hi adaKeyword' . s:fg_pink +exec 'hi adaBegin' . s:fg_pink +exec 'hi adaEnd' . s:fg_pink +exec 'hi adaTypedef' . s:fg_navy . s:ft_bold +exec 'hi adaAssignment' . s:fg_aqua . s:ft_bold +exec 'hi adaAttribute' . s:fg_green + +" COBOL Highlighting +exec 'hi cobolMarker' . s:fg_comment . s:bg_cursorline +exec 'hi cobolLine' . s:fg_foreground +exec 'hi cobolReserved' . s:fg_blue +exec 'hi cobolDivision' . s:fg_pink . s:ft_bold +exec 'hi cobolDivisionName' . s:fg_pink . s:ft_bold +exec 'hi cobolSection' . s:fg_navy . s:ft_bold +exec 'hi cobolSectionName' . s:fg_navy . s:ft_bold +exec 'hi cobolParagraph' . s:fg_purple +exec 'hi cobolParagraphName' . s:fg_purple +exec 'hi cobolDeclA' . s:fg_purple +exec 'hi cobolDecl' . s:fg_green +exec 'hi cobolCALLs' . s:fg_aqua . s:ft_bold +exec 'hi cobolEXECs' . s:fg_aqua . s:ft_bold + +" GNU sed highlighting +exec 'hi sedST' . s:fg_purple . s:ft_bold +exec 'hi sedFlag' . s:fg_purple . s:ft_bold +exec 'hi sedRegexp47' . s:fg_pink +exec 'hi sedRegexpMeta' . s:fg_blue . s:ft_bold +exec 'hi sedReplacement47' . s:fg_olive +exec 'hi sedReplaceMeta' . s:fg_orange . s:ft_bold +exec 'hi sedAddress' . s:fg_pink +exec 'hi sedFunction' . s:fg_aqua . s:ft_bold +exec 'hi sedBranch' . s:fg_green . s:ft_bold +exec 'hi sedLabel' . s:fg_green . s:ft_bold + +" GNU awk highlighting +exec 'hi awkPatterns' . s:fg_pink . s:ft_bold +exec 'hi awkSearch' . s:fg_pink +exec 'hi awkRegExp' . s:fg_blue . s:ft_bold +exec 'hi awkCharClass' . s:fg_blue . s:ft_bold +exec 'hi awkFieldVars' . s:fg_green . s:ft_bold +exec 'hi awkStatement' . s:fg_blue . s:ft_bold +exec 'hi awkFunction' . s:fg_blue +exec 'hi awkVariables' . s:fg_green . s:ft_bold +exec 'hi awkArrayElement' . s:fg_orange +exec 'hi awkOperator' . s:fg_foreground +exec 'hi awkBoolLogic' . s:fg_foreground +exec 'hi awkExpression' . s:fg_foreground +exec 'hi awkSpecialPrintf' . s:fg_olive . s:ft_bold + +" Elm highlighting +exec 'hi elmImport' . s:fg_navy +exec 'hi elmAlias' . s:fg_aqua +exec 'hi elmType' . s:fg_pink +exec 'hi elmOperator' . s:fg_aqua . s:ft_bold +exec 'hi elmBraces' . s:fg_aqua . s:ft_bold +exec 'hi elmTypedef' . s:fg_blue . s:ft_bold +exec 'hi elmTopLevelDecl' . s:fg_green . s:ft_bold + +" Purescript highlighting +exec 'hi purescriptModuleKeyword' . s:fg_navy +exec 'hi purescriptImportKeyword' . s:fg_navy +exec 'hi purescriptModuleName' . s:fg_pink +exec 'hi purescriptOperator' . s:fg_aqua . s:ft_bold +exec 'hi purescriptType' . s:fg_pink +exec 'hi purescriptTypeVar' . s:fg_navy +exec 'hi purescriptStructure' . s:fg_blue . s:ft_bold +exec 'hi purescriptLet' . s:fg_blue . s:ft_bold +exec 'hi purescriptFunction' . s:fg_green . s:ft_bold +exec 'hi purescriptDelimiter' . s:fg_aqua . s:ft_bold +exec 'hi purescriptStatement' . s:fg_purple . s:ft_bold +exec 'hi purescriptConstructor' . s:fg_pink +exec 'hi purescriptWhere' . s:fg_purple . s:ft_bold + +" F# highlighting +exec 'hi fsharpTypeName' . s:fg_pink +exec 'hi fsharpCoreClass' . s:fg_pink +exec 'hi fsharpType' . s:fg_pink +exec 'hi fsharpKeyword' . s:fg_blue . s:ft_bold +exec 'hi fsharpOperator' . s:fg_aqua . s:ft_bold +exec 'hi fsharpBoolean' . s:fg_green . s:ft_bold +exec 'hi fsharpFormat' . s:fg_foreground +exec 'hi fsharpLinq' . s:fg_blue +exec 'hi fsharpKeyChar' . s:fg_aqua . s:ft_bold +exec 'hi fsharpOption' . s:fg_orange +exec 'hi fsharpCoreMethod' . s:fg_purple +exec 'hi fsharpAttrib' . s:fg_orange +exec 'hi fsharpModifier' . s:fg_aqua +exec 'hi fsharpOpen' . s:fg_red + +" ASN.1 highlighting +exec 'hi asnExternal' . s:fg_green . s:ft_bold +exec 'hi asnTagModifier' . s:fg_purple +exec 'hi asnBraces' . s:fg_aqua . s:ft_bold +exec 'hi asnDefinition' . s:fg_foreground +exec 'hi asnStructure' . s:fg_blue +exec 'hi asnType' . s:fg_pink +exec 'hi asnTypeInfo' . s:fg_aqua . s:ft_bold +exec 'hi asnFieldOption' . s:fg_purple + +" -- end of Language Highlighting }}} + +" --- Plugin Highlighting {{{ + +" Plugin: Netrw +exec 'hi netrwVersion' . s:fg_red +exec 'hi netrwList' . s:fg_pink +exec 'hi netrwHidePat' . s:fg_olive +exec 'hi netrwQuickHelp' . s:fg_blue +exec 'hi netrwHelpCmd' . s:fg_blue +exec 'hi netrwDir' . s:fg_aqua . s:ft_bold +exec 'hi netrwClassify' . s:fg_pink +exec 'hi netrwExe' . s:fg_green +exec 'hi netrwSuffixes' . s:fg_comment +exec 'hi netrwTreeBar' . s:fg_linenumber_fg + +" Plugin: NERDTree +exec 'hi NERDTreeUp' . s:fg_comment +exec 'hi NERDTreeHelpCommand' . s:fg_pink +exec 'hi NERDTreeHelpTitle' . s:fg_blue . s:ft_bold +exec 'hi NERDTreeHelpKey' . s:fg_pink +exec 'hi NERDTreeHelp' . s:fg_foreground +exec 'hi NERDTreeToggleOff' . s:fg_red +exec 'hi NERDTreeToggleOn' . s:fg_green +exec 'hi NERDTreeDir' . s:fg_blue . s:ft_bold +exec 'hi NERDTreeDirSlash' . s:fg_pink +exec 'hi NERDTreeFile' . s:fg_foreground +exec 'hi NERDTreeExecFile' . s:fg_green +exec 'hi NERDTreeOpenable' . s:fg_aqua . s:ft_bold +exec 'hi NERDTreeClosable' . s:fg_pink + +" Plugin: Tagbar +exec 'hi TagbarHelpTitle' . s:fg_blue . s:ft_bold +exec 'hi TagbarHelp' . s:fg_foreground +exec 'hi TagbarKind' . s:fg_pink +exec 'hi TagbarSignature' . s:fg_aqua + +" Plugin: Vimdiff +exec 'hi DiffAdd' . s:fg_diffadd_fg . s:bg_diffadd_bg . s:ft_none +exec 'hi DiffChange' . s:fg_diffchange_fg . s:bg_diffchange_bg . s:ft_none +exec 'hi DiffDelete' . s:fg_diffdelete_fg . s:bg_diffdelete_bg . s:ft_none +exec 'hi DiffText' . s:fg_difftext_fg . s:bg_difftext_bg . s:ft_none + +" Plugin: Spell Checking +exec 'hi SpellBad' . s:fg_foreground . s:bg_spellbad +exec 'hi SpellCap' . s:fg_foreground . s:bg_spellcap +exec 'hi SpellRare' . s:fg_foreground . s:bg_spellrare +exec 'hi SpellLocal' . s:fg_foreground . s:bg_spelllocal + +" Plugin: Indent Guides +exec 'hi IndentGuidesOdd' . s:bg_background +exec 'hi IndentGuidesEven' . s:bg_cursorline + +" Plugin: Startify +exec 'hi StartifyFile' . s:fg_blue . s:ft_bold +exec 'hi StartifyNumber' . s:fg_orange +exec 'hi StartifyHeader' . s:fg_comment +exec 'hi StartifySection' . s:fg_pink +exec 'hi StartifyPath' . s:fg_foreground +exec 'hi StartifySlash' . s:fg_navy +exec 'hi StartifyBracket' . s:fg_aqua +exec 'hi StartifySpecial' . s:fg_aqua + +" Plugin: Signify +exec 'hi SignifyLineChange' . s:fg_diffchange_fg +exec 'hi SignifySignChange' . s:fg_diffchange_fg +exec 'hi SignifyLineAdd' . s:fg_diffadd_fg +exec 'hi SignifySignAdd' . s:fg_diffadd_fg +exec 'hi SignifyLineDelete' . s:fg_diffdelete_fg +exec 'hi SignifySignDelete' . s:fg_diffdelete_fg + +" Plugin: Treesitter +hi! link TSPunctDelimiter Delimiter +hi! link TSPunctBracket Delimiter +hi! link TSPunctSpecial Special +hi! link TSConstant Constant +hi! link TSConstBuiltin Constant +hi! link TSConstMacro Macro +hi! link TSString String +hi! link TSStringRegex String +hi! link TSStringEscape SpecialChar +hi! link TSCharacter Character +hi! link TSNumber Number +hi! link TSBoolean Boolean +hi! link TSFloat Float +hi! link TSFunction Function +hi! link TSFuncBuiltin Function +hi! link TSFuncMacro Macro +hi! link TSParameter Identifier +hi! link TSMethod Function +hi! link TSField Typedef +hi! link TSProperty Typedef +hi! link TSConstructor Define +hi! link TSConditional Conditional +hi! link TSRepeat Repeat +hi! link TSLabel Label +hi! link TSOperator Operator +hi! link TSKeyword Keyword +hi! link TSException Exception +hi! link TSType Type +hi! link TSTypeBuiltin Type +hi! link TSStructure Structure +hi! link TSInclude Include + +" -- end of Plugin Highlighting }}} + +" Git commit message +exec 'hi gitcommitSummary' . s:fg_blue +exec 'hi gitcommitHeader' . s:fg_green . s:ft_bold +exec 'hi gitcommitSelectedType' . s:fg_blue +exec 'hi gitcommitSelectedFile' . s:fg_pink +exec 'hi gitcommitUntrackedFile' . s:fg_diffdelete_fg +exec 'hi gitcommitBranch' . s:fg_aqua . s:ft_bold +exec 'hi gitcommitDiscardedType' . s:fg_diffdelete_fg +exec 'hi gitcommitDiff' . s:fg_comment + +exec 'hi diffFile' . s:fg_blue +exec 'hi diffSubname' . s:fg_comment +exec 'hi diffIndexLine' . s:fg_comment +exec 'hi diffAdded' . s:fg_diffadd_fg +exec 'hi diffRemoved' . s:fg_diffdelete_fg +exec 'hi diffLine' . s:fg_orange +exec 'hi diffBDiffer' . s:fg_orange +exec 'hi diffNewFile' . s:fg_comment + +" Neovim terminal colors https://neovim.io/doc/user/nvim_terminal_emulator.html#nvim-terminal-emulator-configuration +let g:terminal_color_0 = color00[0] +let g:terminal_color_1 = color01[0] +let g:terminal_color_2 = color02[0] +let g:terminal_color_3 = color03[0] +let g:terminal_color_4 = color04[0] +let g:terminal_color_5 = color05[0] +let g:terminal_color_6 = color06[0] +let g:terminal_color_7 = color07[0] +let g:terminal_color_8 = color08[0] +let g:terminal_color_9 = color09[0] +let g:terminal_color_10 = color10[0] +let g:terminal_color_11 = color11[0] +let g:terminal_color_12 = color12[0] +let g:terminal_color_13 = color13[0] +let g:terminal_color_14 = color14[0] +let g:terminal_color_15 = color15[0] + +" Vim 8's :terminal buffer ANSI colors +if has('terminal') + let g:terminal_ansi_colors = [color00[0], color01[0], color02[0], color03[0], + \ color04[0], color05[0], color06[0], color07[0], color08[0], color09[0], + \ color10[0], color11[0], color12[0], color13[0], color14[0], color15[0]] +endif + +" vim: fdm=marker ff=unix diff --git a/.vim/doc/how-to-do-things.md b/.vim/doc/how-to-do-things.md deleted file mode 100644 index a705d62..0000000 --- a/.vim/doc/how-to-do-things.md +++ /dev/null @@ -1,9 +0,0 @@ -# vim : how to do things - -## navigation - -### open path under cursor? - -- `gf` _goto file_ -- `<c-w>f` _in new window_ -- `<c-w>gf` \_in new tab` diff --git a/.vim/ftdetect/h.vim b/.vim/ftdetect/h.vim deleted file mode 100644 index fe92579..0000000 --- a/.vim/ftdetect/h.vim +++ /dev/null @@ -1 +0,0 @@ -au BufNewFile,BufEnter *.h setlocal filetype=c diff --git a/.vim/ftdetect/journal.vim b/.vim/ftdetect/journal.vim deleted file mode 100644 index a636837..0000000 --- a/.vim/ftdetect/journal.vim +++ /dev/null @@ -1 +0,0 @@ -au BufNewFile,BufRead *.journal set filetype=ledger diff --git a/.vim/ftdetect/pixy.vim b/.vim/ftdetect/pixy.vim deleted file mode 100644 index 2ffb158..0000000 --- a/.vim/ftdetect/pixy.vim +++ /dev/null @@ -1 +0,0 @@ -au BufNewFile,BufRead *.pixy set filetype=pug noet diff --git a/.vim/ftdetect/scarlet.vim b/.vim/ftdetect/scarlet.vim deleted file mode 100644 index 40ed638..0000000 --- a/.vim/ftdetect/scarlet.vim +++ /dev/null @@ -1 +0,0 @@ -au BufNewFile,BufRead *.scarlet set filetype=stylus diff --git a/.vim/ftplugin/markdown.lua b/.vim/ftplugin/markdown.lua new file mode 100644 index 0000000..e4647b3 --- /dev/null +++ b/.vim/ftplugin/markdown.lua @@ -0,0 +1,2 @@ + +require('utils').opt('w', 'foldlevel', 2) diff --git a/.vim/general.vim b/.vim/general.vim deleted file mode 100644 index 84bafbf..0000000 --- a/.vim/general.vim +++ /dev/null @@ -1,71 +0,0 @@ -" .vimrc#General settings -set exrc -set secure -set title -set noshowmode -set autowrite -set inccommand=split -set noshowcmd -" set autochdir " automatically sets cwd to the dir containing the file in the current buffer -set hidden -set notimeout -set list -set listchars+=trail:¬ " ,space:• -set iskeyword-=- - -set encoding=utf-8 nobomb -" set nocompatible -set number -let &showbreak='↪ ' -set visualbell -set noerrorbells -set hlsearch -set smartcase -set ignorecase -set incsearch -" set cmdheight=2 -set pumheight=10 -set lazyredraw -set mouse=a -set clipboard+=unnamedplus " share OSX clipboard -set backspace=indent,eol,start " allow backspace in INSERT mode -set signcolumn=yes -set cursorline -" set cursorcolumn -set colorcolumn=80 -set updatetime=300 -set splitbelow -set foldlevel=1 -set nofoldenable - -" For conceal markers. -if has('conceal') - " set conceallevel=2 concealcursor=nv - set conceallevel=1 concealcursor= -endif - -set backupdir=$XDG_CACHE_HOME -set directory=$XDG_CACHE_HOME -if exists('&undodir') - set undodir=$XDG_CACHE_HOME -endif - -" pane divider chars -set fillchars=fold:-,vert:\│ - -"" colorscheme options -if has("termguicolors") - set termguicolors -endif - -filetype plugin indent on -if has('syntax') && !exists('g:syntax_on') - syntax enable -endif - -" some defaults -" set ts=8 sts=0 et sw=4 sta -set shiftround - -set diffopt+=algorithm:patience -set path+=expand('%:h:p') diff --git a/.vim/init.lua b/.vim/init.lua new file mode 100644 index 0000000..419bf0b --- /dev/null +++ b/.vim/init.lua @@ -0,0 +1,106 @@ +local cmd = vim.cmd +local fn = vim.fn +local g = vim.g +local o = vim.o + +g.mapleader = ' ' -- <leader> key to <space> +g.maplocalleader = '\\' + +require('plugins') +require('hardmode') +local u = require('utils') + +-- OPTIONS -- {{{ +cmd('set clipboard+=unnamedplus') +u.opt('o', 'shiftround', true) +u.opt('o', 'termguicolors', true) +u.opt('o', 'incsearch', true) +u.opt('o', 'inccommand', 'split') +u.opt('o', 'smartcase', true) +u.opt('o', 'hidden', true) +u.opt('w', 'list', true) +u.opt('w', 'number', true) +u.opt('w', 'wrap', true) +u.opt('o', 'scrolloff', 3) +cmd('set listchars+=trail:¬') +u.opt('o', 'showbreak', '↪ ') +u.opt('b', 'textwidth', 80) -- TODO see if this is annoying +u.opt('w', 'colorcolumn', '+1') -- depends on 'textwidth' +u.opt('w', 'foldenable', true) +u.opt('w', 'foldlevel', 0) +u.opt('w', 'foldmethod', 'marker') +u.opt('o', 'fillchars', 'fold:─') +u.opt('o', 'complete', '.,w,b,u') +u.opt('o', 'completeopt', 'menuone,noinsert,noselect,preview') +cmd('set shortmess+=c') +u.opt('w', 'statusline', '%!luaeval("statusline()")') +u.opt('o', 'cmdheight', 1) +u.opt('o', 'showmode', true) +u.opt('o', 'showcmd', false) +u.opt('o', 'laststatus', 2) +u.opt('o', 'ruler', true) +u.opt('o', 'mouse', 'a') +u.opt('o', 'spell', false) +u.opt('o', 'lazyredraw', true) +u.opt('o', 'backspace', 'indent,eol,start') +u.opt('o', 'undolevels', 1000) +u.opt('o', 'updatetime', 300) +u.opt('o', 'signcolumn', 'yes') +-- }}} + +-- COLORS -- {{{ +g.nihoncolors_transparent_background = true +cmd('colorscheme nihoncolors') +-- }}} + +-- KEY BINDS -- {{{ +u.map('n', 'Q', ':quitall', { silent = false }) +u.map('n', 'gb', ':bnext<CR>') +u.map('n', 'gB', ':bprevious<CR>') +-- terminal +u.map('t', '<ESC>', '<C-\\><C-n>') +u.map('t', '<Leader>qq', '<C-\\><C-n>:bdelete!<CR>') +-- completion +u.map('i', '<C-n>', 'pumvisible() ? "\\<C-n>" : completion#trigger_completion()', { expr = true }) +u.map('i', '<C-p>', 'pumvisible() ? "\\<C-n>" : completion#trigger_completion()', { expr = true }) +u.map('i', '<C-j>', '<cmd>lua require("completion.source").nextCompletion()<CR>') +u.map('i', '<C-k>', '<cmd>lua require("completion.source").prevCompletion()<CR>') +-- }}} + +-- AUTO GROUPS -- {{{ +u.augroup('yank_highlight', {{'TextYankPost', '*', 'silent! lua require("vim.highlight").on_yank()'}}) +u.augroup('diagnostics', {{'CursorHold', '*', 'lua vim.lsp.diagnostic.show_line_diagnostics()'}}) +-- }}} + +-- USER COMMANDS -- {{{ +u.def('BalenaDiagnosticsFold', 'call balena_diagnostics_fold#apply()') +u.def('SortLine', 'call setline(".", join(sort(split(getline("."), " ")), " "))') +-- }}} + +-- STATUS LINE -- {{{ +vim.api.nvim_command('hi StatusLineInsert guifg=#00ffff guibg=None') +vim.api.nvim_command('hi StatusLineCommand guifg=#ff3300 guibg=None') +statusline = function() + local sl = '' + -- left + sl = sl .. statusline_color(vim.fn.mode()) + sl = sl .. [[ ⢷ %<%F %-m %-r ]] + -- right + sl = sl .. [[ %= %l:%v %y ]] + return sl +end +statusline_color = function(mode) + if mode == 'i' then + return '%#StatusLineInsert#' + elseif mode == 'c' then + return '%#StatusLineCommand#' + elseif mode == 'v' or mode == 'V' or mode == '' then + return '%#Visual#' + elseif mode == 'R' or mode == 'Rv' then + return '%1*' + -- return '%#Include#' + else + return '%1*' + end +end +-- }}} diff --git a/.vim/init.vim b/.vim/init.vim deleted file mode 100644 index 8ebf080..0000000 --- a/.vim/init.vim +++ /dev/null @@ -1,422 +0,0 @@ -" vim: ts=2:sw=2:et:tw=99 - -let g:mapleader = ' ' " <leader> key to <space> -let g:maplocalleader = '\' - -runtime general.vim -" runtime plug.vim -lua require'init' - -" hi CursorLine cterm=NONE ctermbg=darkred ctermfg=white guibg=darkred guifg=white -" hi CursorLine cterm=NONE ctermbg=darkred ctermfg=white guibg=darkred guifg=white -" nnoremap <Leader>cl :set cursorline!<CR> -" nnoremap <Leader>cc :set cursorcolumn!<CR> - -" looks {{{ -let g:daymode = 0 -let g:daymode_colorscheme_day = 'ayu' -let g:daymode_colorscheme_night = 'PaperColor' -" let g:daymode_lightline_colorscheme_day = 'ayu_light' -" let g:daymode_lightline_colorscheme_night = 'papercolor_dim' - -let g:ayucolor="light" -let g:PaperColor_Theme_Options = { -\ 'theme': { -\ 'default.dark': { -\ 'allow_bold': 1, -\ 'allow_italic': 1, -\ 'transparent_background': 1, -\ } -\ } -\ } -colorscheme PaperColor - -augroup Colors - au! - au ColorScheme * runtime colors/PaperColor_ext.vim - " NOTE: this is necessary for to fix the guibg when transparent_background - " is enabled - au ColorScheme * hi! clear SignColumn - " TODO: this breaks colorizer highlighting - " au VimEnter * if exists('g:daymode') && g:daymode - " \ | call daymode#switch(0) - " \ | else - " \ | call daymode#switch(1) - " \ | endif -augroup END - -" Make comments italic, no matter what the colorscheme does -hi Comment gui=italic cterm=italic -" Fix ugly looking grey when transparent_background=1 -hi SignColumn guibg=none ctermbg=none -hi MatchParen gui=underline cterm=underline -" }}} - -" key bindings {{{ -" speed -noremap j gj -noremap k gk -" because this is annoying -noreabbrev W w -cnoreabbrev E e -cnoreabbrev Q q -nnoremap Q :q -" Buffer commands -nmap <silent> gb :bnext<CR> -nmap <silent> gB :bprevious<CR> - -" quickfix jumping -" nnoremap <leader>cn :cnext<CR> -" nnoremap <leader>cp :cprevious<CR> - -" loclist jumping -" nnoremap <leader>ln :lnext<CR> -" nnoremap <leader>lp :lprevious<CR> - -" escape terminal mode with <esc> -tnoremap <esc> <C-\><C-n> -tnoremap <leader>qq <C-\><C-n>:bdelete!<CR> -" delete and don't remember... -" nnoremap s "_d -" nnoremap ss "_dd -" vnoremap s "_d - -" replace word under cursor -nmap <silent> riw :%s/\<<C-r><C-w>\>/ - -nmap <silent> ga <cmd>EasyAlign<cr> -vmap <silent> <Enter> <cmd>EasyAlign<cr> -" nmap <leader>gm <cmd>GitMessenger<cr> -nmap <silent> gm <cmd>GitMessenger<cr> -nmap <silent> <leader>v :Vista!!<CR> -nmap <silent> <leader>nt :call numbertoggle#switch()<CR> -nmap <silent> <leader>tn :rightbelow Tnew<CR> -nmap <silent> gF :lua require'misc'.open_under_cursor()<CR> -nmap <silent> gf :lua require'misc'.open_under_cursor('open')<CR> -noremap <silent> gx :lua require'misc'.open_under_cursor('url-launcher')<CR> -augroup netrw_maps - au! - au BufEnter * nnoremap <silent><buffer> gx :lua require'misc'.open_under_cursor('url-launcher')<CR> -augroup END -" }}} - -" alternate -> plugin/alternate.vim -" daymode -> plugin/daymode.vim -" fasd -> plugin/fasd.vim -" fuzzy -> plugin/fuzz.vim -" hardmode -> plugin/hard.vim -" numbertoggle -> plugin/numbertoggle.vim -" writing -> after/plugin/writing.vim -" filetype configs -> after/ftplugin -" neomake -> after/plugin/neomake.vim -" lightline -> plugin/line.vim - -" let g:netrw_browsex_viewer = 'url-launcher' - -" plugin config {{{ -" -let g:easy_align_ignore_groups = [] -" obsession {{{2 -let g:session_extension = ".vim-session" -let g:session_autosave = "no" -let g:session_autoload = "no" -let g:session_autosave_periodic = 5 -let g:session_command_aliases = 1 -" }}}2 -let g:echodoc_enable_at_startup = 1 -" matchtagalways {{{2 -let g:mta_use_matchparen_group = 1 -let g:mta_filetypes = { - \ 'html' : 1, - \ 'xhtml' : 1, - \ 'xml' : 1, - \ 'jinja' : 1, - \ 'vue' : 1 - \} -" }}}2 -" emmet -let g:user_emmet_leader_key = g:maplocalleader " followed by , -" let g:user_emmet_mode = 'a' -" indentguides {{{2 -let g:indent_guides_enable_on_vim_startup = 1 -let g:indent_guides_start_level = 2 -let g:indent_guides_color_change_percent = 2 -let g:indent_guides_guide_size = 1 -" }}}2 -" indentline {{{2 -" let g:indentLine_char = '▏' -" let g:indentLine_enabled = 1 -" let g:indentLine_conceallevel = 1 -" :set list lcs=tab:\▏\ -" }}}2 -" signify {{{2 -" let g:signify_sign_add = '▎' -" let g:signify_sign_delete = '▎' -" let g:signify_sign_delete_first_line = '▀' -let g:signify_sign_change = '~' -" let g:signify_sign_changedelete = g:signify_sign_change -" let g:signify_sign_show_text = 0 - -hi SignifySignChange guibg=NONE ctermbg=NONE -hi SignifySignAdd guibg=NONE ctermbg=NONE -hi SignifySignDelete guibg=NONE ctermbg=NONE - -" NOTE: it's not a good idea to start the bind with `h` -" since that will interfere with cursor movement -" nmap <silent> ]h <cmd>SignifyJumpToNextHunk<cr> -" nmap <silent> [h <cmd>SignifyJumpToPrevHunk<cr> -nmap <silent> ]h <plug>(signify-next-hunk) -nmap <silent> [h <plug>(signify-prev-hunk) -" }}}2 - -let g:vue_disable_pre_processors = 1 -let g:vim_json_syntax_conceal = 1 - -let g:qs_highlight_on_keys = ['f', 'F', 't', 'T'] " quickscope -let g:utl_cfg_hdl_scm_http = 'silent !xdg-open %u' -let g:sneak#label = 1 - -" vista {{{2 -let g:vista_icon_indent = ['> ', '* '] -let g:vista_default_executive = 'ctags' -let g:vista_go_executive = 'nvim_lsp' -let g:vista_rust_executive = 'nvim_lsp' -let g:vista_ctags_cmd = { -\ 'vimwiki': $HOME . '/.vim/vwtags.py markdown', -\ } - -let g:vista#renderer#enable_icon = 0 -let g:vista#renderer#icons = { -\ 'func': "f", -\ 'function': "f", -\ 'functions': "fs", -\ 'var': "v", -\ 'variable': "v", -\ 'variables': "vs", -\ 'const': "c", -\ 'constant': "c", -\ 'method': "m", -\ 'package': "p", -\ 'packages': "ps", -\ 'enum': "e", -\ 'enumerator': "E", -\ 'module': "m", -\ 'modules': "ms", -\ 'type': "t", -\ 'typedef': "t", -\ 'types': "ts", -\ 'field': "fd", -\ 'fields': "fds", -\ 'macro': "mc", -\ 'macros': "mcs", -\ 'map': "mp", -\ 'class': "cl", -\ 'augroup': "au", -\ 'struct': "st", -\ 'union': "u", -\ 'member': "mb", -\ 'target': "ta", -\ 'property': "pr", -\ 'interface': "if", -\ 'namespace': "ns", -\ 'subroutine': "sr", -\ 'implementation': "im", -\ 'typeParameter': "tp", -\ 'default': "_" -\ } -" }}}2 - -" vim-markdown {{{2 -let g:vim_markdown_folding_disabled = 1 -let g:vim_markdown_math = 1 -let g:vim_markdown_frontmatter = 1 -let g:vim_markdown_json_frontmatter = 1 -let g:vim_markdown_toml_frontmatter = 1 -let g:vim_markdown_folding_level = 2 -let g:vim_markdown_strikethrough = 1 -let g:vim_markdown_auto_insert_bullets = 1 -let g:vim_markdown_new_list_item_indent = 0 -" }}}2 - -" let g:git_messenger_include_diff = v:false -let g:git_messenger_always_into_popup = v:true -let g:git_messenger_close_on_cursor_moved = v:true - -" Neoformat {{{2 -let g:neoformat_basic_format_align = 0 -let g:neoformat_basic_format_retab = 0 -let g:neoformat_basic_format_trim = 0 -let g:neoformat_only_msg_on_error = 1 -" }}}2 - -" Clap {{{2 -" " let g:clap_insert_mode_only = v:true -" let g:clap_popup_border = 'sharp' -" let g:clap_layout = {} -" " let g:clap_layout.relative = 'editor' -" " let g:clap_layout.row = '5%' -" " let g:clap_layout.col = '0%' -" " let g:clap_layout.width = '100%' -" " let g:clap_layout.height = '33%' -" let g:clap_multi_selection_warning_silent = 1 -" let g:clap_selected_sign = { 'text': '* ', 'texthl': "WarningMsg", "linehl": "ClapSelected" } -" nnoremap <silent> <leader>cc :Clap<CR> -" nnoremap <silent> <leader>cg :Clap grep2<CR> -" nnoremap <silent> <leader>cb :Clap buffers<CR> -" nnoremap <silent> <leader>cf :Clap files<CR> -" nnoremap <silent> <leader>cl :Clap quickfix<CR> -" nnoremap <silent> <leader>ll :Clap loclist<CR> -" }}}2 - -let g:neoterm_size = 20 -let g:neoterm_autoinsert = 1 - -let g:UltiSnipsExpandTrigger = "<cr>" -" let g:UltiSnipsListSnippets = "<c-tab>" -let g:UltiSnipsJumpForwardTrigger = "<c-n>" -let g:UltiSnipsJumpBackwardTrigger = "<c-p>" - -let g:vimwiki_main = {} -let g:vimwiki_main.path = '~/wiki/' -let g:vimwiki_main.syntax = 'markdown' -let g:vimwiki_main.ext = '.md' -let g:vimwiki_main.name = 'wiki' -let g:vimwiki_main.index = '_index' -let g:vimwiki_list = [vimwiki_main] -let g:vimwiki_folding = 'list' - -let g:tex_flavor = 'latex' -let g:vimtex_compiler_enabled = 1 -let g:vimtex_compiler_method = 'tectonic' -let g:vimtex_compiler_tectonic = { -\ 'executable': 'tectonic', -\ } -let g:vimtex_view_method = 'zathura' -" let g:vimtex_view_zathura_check_libsynctex = 0 -" let g:vimtex_view_use_temp_files = 1 -" let g:vimtex_view_forward_search_on_start = 0 -" }}}1 - -" lua stuff {{{1 -set complete=.,w,b,u -set completeopt=menuone,noinsert,noselect -" set completeopt-=preview -set shortmess+=c - -let g:completion_enable_auto_popup = 1 -let g:completion_enable_auto_signature = 1 -let g:completion_enable_auto_paren = 0 -let g:completion_confirm_key = "\<cr>" -let g:completion_enable_snippet = 'UltiSnips' -let g:completion_auto_change_source = 1 -let g:completion_chain_complete_list = [ - \ {'complete_items': ['lsp']}, - \ {'complete_items': ['snippet']}, - \ {'complete_items': ['buffers']}, - \ {'complete_items': ['path']}, - \ {'complete_items': ['wiki']}, - \ {'complete_items': ['ts']}, - \ {'mode': 'file'}, - \ ] - -inoremap <silent><expr> <c-n> - \ pumvisible() ? "\<c-n>" : completion#trigger_completion() -inoremap <silent><expr> <c-p> - \ pumvisible() ? "\<c-p>" : completion#trigger_completion() -imap <c-j> <cmd> lua require'completion.source'.nextCompletion()<CR> -imap <c-k> <cmd> lua require'completion.source'.prevCompletion()<CR> - -augroup Compl - au! - au BufEnter * lua require'completion'.on_attach() -augroup END -" }}}1 - -" gui extra config {{{ -" probably obsolete... -if exists('veonim') - " set linespace=5 - set guifont=Iosevka\ R:h17 - runtime init_veonim.vim -endif -" }}} - -function! s:fmt() abort - if exists('g:nofmt') || exists('b:nofmt') - return - endif - try - undojoin - Neoformat - catch - " hmm - echo 'not formatted' - endtry -endfunction - -augroup DoFmt - au! - au BufWritePre * :call <SID>fmt() -augroup END - -" autogroups {{{ -augroup SpecialBuffers - au! - " au FileType vista,fzf,skim set laststatus=0 noshowmode noruler - " \| au BufLeave <buffer> set laststatus=2 ruler - au FileType fzf,skim tnoremap <buffer><esc> <c-c> - au FileType gitmessengerpopup nmap <buffer><esc> <cmd>GitMessengerClose<cr> - au FileType vista nmap <buffer><space> :wincmd p<CR> - au FileType help,qf,vista nmap <silent><buffer>q <c-w><c-q> - " au FileType vimwiki call vista#sidebar#ToggleFocus() -augroup END - -" augroup AutoSaveFolds -" autocmd! -" autocmd BufWinLeave * mkview -" autocmd BufWinEnter * silent loadview -" augroup END - -augroup Init - au! - " au VimEnter * call vista#RunForNearestMethodOrFunction() - " au VimEnter * Vista!! - - " vim was opened as diff tool, load the 'diff' ftplugin conf - au VimEnter * if &diff | runtime after/ftplugin/diff.vim | endif - - au BufEnter,BufLeave,BufWritePost * rshada|wshada - " au FileType dirvish call fugitive#detect(@%) - au BufReadPost * - \ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' - \ | exe "normal! g`\"" - \ | endif -augroup END - -augroup YankHighlight - au! - au TextYankPost * silent! lua require'vim.highlight'.on_yank() -augroup END - -augroup Diagnostic - au! - " au CursorHold * lua vim.lsp.util.show_line_diagnostics() -augroup END -" }}} - -command! SortLine call setline('.', join(sort(split(getline('.'), ' ')), " ")) -command! -bang DayMode call daymode#switch(<bang>0) -command! NumberToggle call numbertoggle#switch() -command! Alternate call alternate#alternate() -command! InsertTS r!now -command! BalenaDiagnosticsFold call balena_diagnostics_fold#apply() - -command! -range=% -nargs=0 Tab2Space execute '<line1>,<line2>s#^\t\+#\=repeat(" ", len(submatch(0))*' . &ts . ')' -command! -range=% -nargs=0 Space2Tab execute '<line1>,<line2>s#^\( \{'.&ts.'\}\)\+#\=repeat("\t", len(submatch(0))/' . &ts . ')' - -" WARNING! roadwork ahead -" lua << EOF -" if vim.env.SNIPPETS then -" vim.snippet = require 'snippet' -" end -" EOF diff --git a/.vim/init_veonim.vim b/.vim/init_veonim.vim deleted file mode 100644 index 7cfa3a6..0000000 --- a/.vim/init_veonim.vim +++ /dev/null @@ -1,34 +0,0 @@ -" workspace functions -nno <silent> ,f :Veonim files<cr> -nno <silent> ,e :Veonim explorer<cr> -nno <silent> ,b :Veonim buffers<cr> -nno <silent> ,d :Veonim change-dir<cr> - -" searching text -nno <silent> <space>fw :Veonim grep-word<cr> -vno <silent> <space>fw :Veonim grep-selection<cr> -nno <silent> <space>fa :Veonim grep<cr> -nno <silent> <space>ff :Veonim grep-resume<cr> -nno <silent> <space>fb :Veonim buffer-search<cr> - -" language server functions -nno <silent> sr :Veonim rename<cr> -nno <silent> sd :Veonim definition<cr> -nno <silent> st :Veonim type-definition<cr> -nno <silent> si :Veonim implementation<cr> -nno <silent> sf :Veonim references<cr> -nno <silent> sh :Veonim hover<cr> -nno <silent> sl :Veonim symbols<cr> -nno <silent> so :Veonim workspace-symbols<cr> -nno <silent> sq :Veonim code-action<cr> -nno <silent> sp :Veonim show-problem<cr> -nno <silent> sk :Veonim highlight<cr> -nno <silent> sK :Veonim highlight-clear<cr> -nno <silent> <c-n> :Veonim next-problem<cr> -nno <silent> <c-p> :Veonim prev-problem<cr> -nno <silent> ,n :Veonim next-usage<cr> -nno <silent> ,p :Veonim prev-usage<cr> -nno <silent> <space>pt :Veonim problems-toggle<cr> -nno <silent> <space>pf :Veonim problems-focus<cr> -nno <silent> <d-o> :Veonim buffer-prev<cr> -nno <silent> <d-i> :Veonim buffer-next<cr> diff --git a/.vim/lua/conf/diagnostic.lua b/.vim/lua/conf/diagnostic.lua index 4fd5047..fe80fff 100644 --- a/.vim/lua/conf/diagnostic.lua +++ b/.vim/lua/conf/diagnostic.lua @@ -1,9 +1,12 @@ -vim.g.diagnostic_enable_virtual_text = 1 -vim.g.diagnostic_trimmed_virtual_text = '40' -vim.g.diagnostic_insert_delay = 1 -vim.api.nvim_command('nnoremap <silent> c[ <cmd>PrevDiagnosticCycle<cr>') -vim.api.nvim_command('nnoremap <silent> c] <cmd>NextDiagnosticCycle<cr>') +local g = vim.g +local cmd = vim.api.nvim_command + +g.diagnostic_enable_virtual_text = 1 +g.diagnostic_trimmed_virtual_text = '40' +g.diagnostic_insert_delay = 1 +cmd('nnoremap <silent> c[ <cmd>PrevDiagnosticCycle<cr>') +cmd('nnoremap <silent> c] <cmd>NextDiagnosticCycle<cr>') vim.fn.sign_define("LspDiagnosticsErrorSign", {text="✘", texthl="LspDiagnosticsError"}) @@ -11,7 +14,7 @@ vim.fn.sign_define("LspDiagnosticsWarningSign", {text="‼", texthl="LspDiagnost vim.fn.sign_define("LspDiagnosticsInformationSign", {text="i", texthl="LspDiagnosticsInformation"}) vim.fn.sign_define("LspDiagnosticsHintSign", {text="☛",texthl="LspDiagnosticsHint"}) -vim.api.nvim_command('highlight link LspDiagnosticsError Error') -vim.api.nvim_command('highlight link LspDiagnosticsWarning WarningMsg') -vim.api.nvim_command('highlight link LspDiagnosticsInformation Todo') -vim.api.nvim_command('highlight link LspDiagnosticsHint Question') +cmd('highlight link LspDiagnosticsError Error') +cmd('highlight link LspDiagnosticsWarning WarningMsg') +cmd('highlight link LspDiagnosticsInformation Todo') +cmd('highlight link LspDiagnosticsHint Question') diff --git a/.vim/lua/conf/telescope.lua b/.vim/lua/conf/telescope.lua deleted file mode 100644 index e1145c2..0000000 --- a/.vim/lua/conf/telescope.lua +++ /dev/null @@ -1,75 +0,0 @@ --- config for telescope.nvim -local telescope = require('telescope') -local finders = require('telescope.finders') -local pickers = require('telescope.pickers') -local previewers = require('telescope.previewers') -local make_entry = require('telescope.make_entry') -local sorters = require('telescope.sorters') - -telescope.setup{ - defaults = { - borderchars = {'─', '│', '─', '│', '┌', '┐', '┘', '└'}, - winblend = 3, - layout_strategy = 'flex', - } -} - -vim.api.nvim_set_keymap('n', ';f', "<cmd>lua require'telescope.builtin'.find_files{}<cr>", - {noremap=true, silent=true}) -vim.api.nvim_set_keymap('n', ';g', "<cmd>lua require'telescope.builtin'.live_grep{}<cr>", - {noremap=true, silent=true}) -vim.api.nvim_set_keymap('n', ';r', "<cmd>lua require'telescope.builtin'.lsp_references{}<cr>", - {noremap=true, silent=true}) -vim.api.nvim_set_keymap('n', ';q', "<cmd>lua require'telescope.builtin'.quickfix{}<cr>", - {noremap=true, silent=true}) -vim.api.nvim_set_keymap('n', ';l', "<cmd>lua require'telescope.builtin'.loclist{}<cr>", - {noremap=true, silent=true}) -vim.api.nvim_set_keymap('n', ';b', "<cmd>lua require'telescope.builtin'.buffers{}<cr>", - {noremap=true, silent=true}) --- vim.api.nvim_set_keymap('n', ';h', "<cmd>lua require'conf.telescope'.home{}<cr>", --- {noremap=true, silent=true}) -vim.api.nvim_set_keymap('n', ';w', "<cmd>lua require'conf.telescope'.wiki{}<cr>", - {noremap=true, silent=true}) - -local M = {} -M.fzf = function(opts) - opts = opts or {} - if opts.cwd then - opts.cwd = vim.fn.expand(opts.cwd) - end - local cmd = {'fd', '--type', 'f', '--no-ignore', '--absolute-path'} - if opts.extensions then - for _, ext in ipairs(opts.extensions) do - table.insert(cmd, '--extension') - table.insert(cmd, ext) - end - end - if opts.exclude then - for _, excl in ipairs(opts.exclude) do - table.insert(cmd, '--exclude') - table.insert(cmd, excl) - end - end - pickers.new(opts, { - prompt = opts.prompt or "FZF", - finder = finders.new_oneshot_job(cmd, opts), - previewer = previewers.cat.new(opts), - sorter = sorters.get_fuzzy_file(), - }):find() -end - -M.wiki = function() - return M.fzf { - prompt = 'WIKI', - cwd = '~/wiki', - extensions = {'md'}, - exclude = {'_templates/*'} - } -end --- M.home = function() --- return M.fzf { --- prompt = 'HOME', --- cwd = '~', --- } --- end -return M diff --git a/.vim/lua/hardmode.lua b/.vim/lua/hardmode.lua new file mode 100644 index 0000000..ed7d4ac --- /dev/null +++ b/.vim/lua/hardmode.lua @@ -0,0 +1,38 @@ +-- hard mode means we're not using the arrow keys! +-- map them to more useful actions instead +-- https://coderoncode.com/posts/vim-is-the-perfect-ide + +local cmd = vim.cmd +local u = require('utils') + +local bail = ':silent! echohl ErrorMsg | echo "HARD MODE: hjkl operation only" | echohl None<CR>' + +u.map('n', 'R<up>', ':resize +2<CR>') +u.map('n', 'R<down>', ':resize -2<CR>') +u.map('n', 'R<left>', ':vertical resize +2<CR>') +u.map('n', 'R<right>', ':vertical resize +2<CR>') + +u.map('n', 'W<up>', ':wincmd k<CR>') +u.map('n', 'W<down>', ':wincmd j<CR>') +u.map('n', 'W<left>', ':wincmd h<CR>') +u.map('n', 'W<right>', ':wincmd l<CR>') + +u.map('n', 'Wm<up>', ':wincmd K<CR>') +u.map('n', 'Wm<down>', ':wincmd J<CR>') +u.map('n', 'Wm<left>', ':wincmd H<CR>') +u.map('n', 'Wm<right>', ':wincmd L<CR>') + +u.map('n', '<up>', bail) +u.map('n', '<down>', bail) +u.map('n', '<left>', bail) +u.map('n', '<right>', bail) + +u.map('v', '<up>', bail) +u.map('v', '<down>', bail) +u.map('v', '<left>', bail) +u.map('v', '<right>', bail) + +u.map('i', '<up>', '<esc>' .. bail) +u.map('i', '<down>', '<esc>' .. bail) +u.map('i', '<left>', '<esc>' .. bail) +u.map('i', '<right>', '<esc>' .. bail) diff --git a/.vim/lua/init.lua b/.vim/lua/init.lua deleted file mode 100644 index 0397b28..0000000 --- a/.vim/lua/init.lua +++ /dev/null @@ -1,4 +0,0 @@ --- init lua - -require 'plugins' -require 'conf.diagnostic' diff --git a/.vim/lua/line.lua b/.vim/lua/line.lua deleted file mode 100644 index 278782f..0000000 --- a/.vim/lua/line.lua +++ /dev/null @@ -1,146 +0,0 @@ --- statusline - -local gl = require('galaxyline') -local gls = gl.section -local gcolors = require('galaxyline.colors') - -local colors = { - blue = '#5fafd7', - orange = '#d7875f', - purple = '#af87d7', - yellow = '#d7af5f', - - black = '#1c1c1c', - grey_dim = '#3a3a3a', - grey_dimmer = '#262626', - white = '#d0d0d0', - white_dim = '#bdc0ba', -} - -local style = { - left = { - sep = ' ', - sep_hl = {colors.white, colors.black}, - }, - right = { - hl = {colors.white,colors.grey_dimmer}, - sep = ' ', - sep_hl = {colors.grey_dim, colors.grey_dimmer}, - } -} - -local empty_buffer = function() - if vim.fn.empty(vim.fn.expand('%:t')) ~= 1 then - return true - end - return false -end - -local space = function() return ' ' end - -gls.left[1] = { - ViMode = { - provider = function() - local m = vim.fn.mode() - if m == 'n' then - gcolors.set_highlight('GalaxyViMode', {colors.white, colors.grey_dim, 'bold'}) - elseif m == 'i' then - gcolors.set_highlight('GalaxyViMode', {colors.black, colors.blue, 'bold'}) - elseif m == 'v' or m == 'V' or m == 'CTRL-V' then - gcolors.set_highlight('GalaxyViMode', {colors.black, colors.purple, 'bold'}) - elseif m == 's' or m == 'S' or m == 'CTRL-S' then - gcolors.set_highlight('GalaxyViMode', {colors.black, '#ff0000', 'bold'}) - elseif m == 'R' or m == 'Rc' or m == 'Rv' or m == 'Rx' then - gcolors.set_highlight('GalaxyViMode', {colors.black, colors.orange, 'bold'}) - elseif m == 'c' then - gcolors.set_highlight('GalaxyViMode', {colors.yellow, colors.grey_dim, 'bold,italic'}) - end - return ' ' .. m:gsub("^%l*$", string.upper) .. ' ' - end, - separator = style.left.sep, - separator_highlight = style.left.sep_hl, - }, -} - -gls.left[2] = { - FileName = { - provider = function() - local file = vim.fn.expand('%:t') - if vim.fn.empty(file) == 1 then return '' end - if vim.bo.readonly then - return file .. ' ' - end - if vim.o.modifiable then - if vim.bo.modified then - return file .. ' +' - end - end - return file .. ' ' - end, - condition = empty_buffer, - highlight = {colors.white,colors.grey_dimmer}, - separator = style.left.sep, - separator_highlight = style.left.sep_hl, - } -} - --- ########################################################## -- - -gls.right[1] = { - Indent = { - provider = function() - local res = vim.o.expandtab and '→' or '␣' - return res - .. ' ' - .. 'ts=' .. vim.o.tabstop - .. ' ' - .. 'sw=' .. vim.o.shiftwidth - end, - highlight = style.right.hl, - }, -} - -gls.right[2] = { - BufNum = { - icon = '% ', - provider = function() - local nbufs = #vim.fn.getbufinfo({buflisted = 1}) - local res = vim.fn.bufnr('%') .. '(' .. nbufs .. ')' - if vim.fn.tabpagenr() > 1 then - res = res .. ':' .. vim.fn.tabpagenr() - end - return res - end, - highlight = style.right.hl, - separator = style.right.sep, - separator_highlight = style.right.sep_hl, - }, -} - -gls.right[3] = { - LineColumn = { - icon = ' ', - provider = 'LineColumn', - highlight = style.right.hl, - separator = style.right.sep, - separator_highlight = style.right.sep_hl, - }, -} - -gls.right[4] = { - LinePercent = { - provider = 'LinePercent', - highlight = style.right.hl, - separator = style.right.sep, - separator_highlight = style.right.sep_hl, - } -} - -gls.right[5] = { - BufferType = { - provider = function() return ' ' .. vim.bo.filetype .. ' ' end, - highlight = {colors.white,colors.grey_dim,'bold'}, - -- separator = style.right.sep, - -- separator_highlight = style.right.sep_hl, - } -} diff --git a/.vim/lua/plugins.lua b/.vim/lua/plugins.lua index 0ccfb05..4830b4b 100644 --- a/.vim/lua/plugins.lua +++ b/.vim/lua/plugins.lua @@ -1,24 +1,27 @@ -- load by calling `lua require('plugins')` from your init.vim +local cmd = vim.cmd +local g = vim.g +local u = require('utils') function disable_distribution_plugins() - vim.g.loaded_gzip = 1 - vim.g.loaded_tar = 1 - vim.g.loaded_tarPlugin = 1 - vim.g.loaded_zip = 1 - vim.g.loaded_zipPlugin = 1 - vim.g.loaded_getscript = 1 - vim.g.loaded_getscriptPlugin = 1 - vim.g.loaded_vimball = 1 - vim.g.loaded_vimballPlugin = 1 - vim.g.loaded_matchit = 1 - -- vim.g.loaded_matchparen = 1 - vim.g.loaded_2html_plugin = 1 - vim.g.loaded_logiPat = 1 - vim.g.loaded_rrhelper = 1 - vim.g.loaded_netrw = 1 - vim.g.loaded_netrwPlugin = 1 - vim.g.loaded_netrwSettings = 1 - vim.g.loaded_netrwFileHandlers = 1 + g.loaded_gzip = 1 + g.loaded_tar = 1 + g.loaded_tarPlugin = 1 + g.loaded_zip = 1 + g.loaded_zipPlugin = 1 + g.loaded_getscript = 1 + g.loaded_getscriptPlugin = 1 + g.loaded_vimball = 1 + g.loaded_vimballPlugin = 1 + g.loaded_matchit = 1 + -- g.loaded_matchparen = 1 + g.loaded_2html_plugin = 1 + g.loaded_logiPat = 1 + g.loaded_rrhelper = 1 + g.loaded_netrw = 1 + g.loaded_netrwPlugin = 1 + g.loaded_netrwSettings = 1 + g.loaded_netrwFileHandlers = 1 end -- enable to bootstrap packer from ~/.local/share/nvim/site/pack/packer/opt/packer.nvim @@ -31,112 +34,124 @@ return require'packer'.startup(function() -- manage packer itself use {'wbthomason/packer.nvim'} - use {'mhinz/vim-signify'} -- git status in the sign column + -- git status in the sign column + use {'mhinz/vim-signify', + config = "require('plugins._signify')" + } + use {'tpope/vim-commentary'} -- auto-comment using `gcc` use {'cohama/lexima.vim'} -- auto-close parens, brackets, etc. use {'tpope/vim-surround'} -- edit surroundings in pairs - -- use {'itchyny/lightline.vim'} -- lightweight status bar - use {'glepnir/galaxyline.nvim', - branch = 'main', - config=function() require 'line' end} - use {'neomake/neomake'} -- async job runner - use {'sbdchd/neoformat'} -- async code formatter + -- use {'neomake/neomake'} -- async job runner + -- use {'sbdchd/neoformat'} -- async code formatter use {'justinmk/vim-dirvish'} -- folder browser - use {'justinmk/vim-sneak'} -- powerful missing vim motions - - use { 'neovim/nvim-lspconfig', - requires = {'nvim-lua/completion-nvim'}, -- , 'nvim-lua/diagnostic-nvim'}, - config=function() require'conf.lsp' end} + use {'justinmk/vim-sneak', + config = "vim.g['sneak#label'] = true" + } - use { 'steelsojka/completion-buffers' } - -- config = function() - -- vim.api.nvim_command("autocmd BufEnter * require'completion'.on_attach()") - -- end} + use {'neovim/nvim-lspconfig', + requires = { + {'nvim-lua/completion-nvim', + requires = {'steelsojka/completion-buffers'}, + config = "require('plugins._completion')"}, + 'kosayoda/nvim-lightbulb', + }, + config = "require('plugins._lsp')" + } - use { 'nvim-treesitter/nvim-treesitter', + use {'nvim-treesitter/nvim-treesitter', requires = { 'nvim-lua/completion-nvim', 'nvim-treesitter/completion-treesitter', 'nvim-treesitter/nvim-treesitter-refactor', }, - config=function() require'conf.treesitter' end} - - use { 'nvim-lua/telescope.nvim', - requires = {'nvim-lua/popup.nvim', 'nvim-lua/plenary.nvim'}, - config=function() require'conf.telescope' end} + config = "require('plugins._treesitter')" + } + + use {'nvim-telescope/telescope.nvim', + requires = { + 'nvim-lua/popup.nvim', + 'nvim-lua/plenary.nvim', + -- telescope plugins: + 'nvim-telescope/telescope-fzf-writer.nvim', + }, + config = "require('plugins._telescope')" + } + + -- polyfill for some missing stuff + use {'tjdevries/astronauta.nvim'} -- snippets use {'SirVer/ultisnips', - requires = {'honza/vim-snippets'}} - - -- interactive finder / dispatcher - -- use {'liuchengxu/vim-clap', - -- run = ':Clap install-binary!'} + requires = {'honza/vim-snippets'}, + config = "require('plugins._ultisnips')" + } - use {'junegunn/vim-easy-align', - cmd = {'EasyAlign'}} + use {'junegunn/vim-easy-align'} -- use {'tpope/vim-sleuth'} -- detect indentation - use {'nathanaelkane/vim-indent-guides'} -- show indentation levels + use {'nathanaelkane/vim-indent-guides', + config = "require('plugins._indent-guides')" + } + use {'tpope/vim-repeat'} -- extend '.' to plugins - use {'liuchengxu/vista.vim'} -- sidebar populated by lsp, ctags, etc. use {'sgur/vim-editorconfig'} -- implements editorconfig in vimscript - -- use 'rhysd/conflict-marker.vim' use {'michaeljsmith/vim-indent-object'} -- adds indentation text-objects - use {'kshenoy/vim-signature'} -- toggle, display and navigate marks - -- highlight color codes + use {'kshenoy/vim-signature', disable = true} -- toggle, display and navigate marks use {'norcalli/nvim-colorizer.lua', - config=function() - require'colorizer'.setup(nil, { - name = true; - RRGGBB = true; - RRGGBBAA = false; - rgb_fn = true; - hsl_fn = true; - mode = 'background'; - }) - end} - use {'rhysd/git-messenger.vim'} -- git-blame in a popup - use {'kassio/neoterm'} + config = "require('plugins._colorizer')" + } + + use {'rhysd/git-messenger.vim', + config = "require('plugins._git-messenger')" + } + + use {'rhysd/conflict-marker.vim', disable = true} + -- use {'liuchengxu/vista.vim'} -- sidebar populated by lsp, ctags, etc. + use {'kassio/neoterm', disable = true} -- languages -- NOTE: these should only be loaded when they are required... - -- use {'rhysd/vim-grammarous', ft = {'markdown', 'latex', 'tex'}} - use {'lervag/vimtex', ft = {'latex', 'tex'}} - use {'plasticboy/vim-markdown', ft = {'markdown'}} - use {'masukomi/vim-markdown-folding', ft = {'markdown'}} - -- easy html editing - use {'mattn/emmet-vim', ft = {'html'}} - -- use {'valloric/matchtagalways', ft = {'html', 'vue', 'xml'}} -- visually match HTML tags enclosing cursor location - -- use {'ledger/vim-ledger', ft = {'ledger'}, - -- requires = { - -- 'tpope/vim-speeddating', -- easy time/date incrementing - -- 'vim-scripts/utl.vim'}} -- follow links/urls - + -- use {'rhysd/vim-grammarous', + -- ft = {'markdown', 'latex', 'tex'} + -- } + use {'lervag/vimtex', + ft = {'latex', 'tex'}, + config = "require('plugins._vimtex')" + } + use {'plasticboy/vim-markdown', + ft = {'markdown'}, + config = "require('plugins._markdown')" + } + use {'masukomi/vim-markdown-folding', + ft = {'markdown'} + } + use {'jjo/vim-cue', + ft = {'cue'} + } use {'gentoo/gentoo-syntax'} - use {'jjo/vim-cue'} -- multi-language support with lazy loading -- NOTE: put language specific plugs before this to avoid conflicsts use {'sheerun/vim-polyglot'} -- minimal ux - use {'junegunn/goyo.vim', cmd = 'Goyo'} -- hide ui clutter - use {'junegunn/limelight.vim', cmd = 'Limelight'} -- dims colors - -- use 'equalsraf/neovim-gui-shim' - - -- colorschemes - use {'NLKNguyen/papercolor-theme'} - -- use {'cideM/yui'} - use {'ayu-theme/ayu-vim'} - -- use {'rktjmp/lush.nvim', - -- config=function() require'conf.colors' end} - - use {'dstein64/vim-startuptime'} + use {'junegunn/goyo.vim', + cmd = 'Goyo', + config = "require('plugins._goyo')" + } + use {'junegunn/limelight.vim', + cmd = 'Limelight', + config = "require('plugins._limelight')" + } + + use {'rktjmp/lush.nvim', + disable = true, + config="require('plugins._lush')"} + + -- vim config debugging + use {'dstein64/vim-startuptime', disable = true} -- local - -- use {'~/devel/projects/nihon-theme/vim'} - -- use {'~/devel/projects/vim-orgdown'} - use {'~/.vim/devel/obsidian.nvim'} - use {'~/.vim/devel/vim-github-link'} + use {'~/devel/upstream/github.com/knsh14/vim-github-link'} end) diff --git a/.vim/lua/plugins/_colorizer.lua b/.vim/lua/plugins/_colorizer.lua new file mode 100644 index 0000000..7b6f678 --- /dev/null +++ b/.vim/lua/plugins/_colorizer.lua @@ -0,0 +1,8 @@ +require('colorizer').setup(nil, { + name = true; + RRGGBB = true; + RRGGBBAA = false; + rgb_fn = true; + hsl_fn = true; + mode = 'background'; +}) diff --git a/.vim/lua/plugins/_completion.lua b/.vim/lua/plugins/_completion.lua new file mode 100644 index 0000000..8a4a92e --- /dev/null +++ b/.vim/lua/plugins/_completion.lua @@ -0,0 +1,17 @@ +local g = vim.g +local u = require('utils') + +g.completion_enable_auto_popup = true +g.completion_enable_auto_signature = true +g.completion_enable_auto_paren = false +g.completion_confirm_key = '<tab>' +g.completion_enable_snippet = 'UltiSnips' +g.completion_auto_change_source = true +g.completion_chain_complete_list = { + {complete_items = {'lsp', 'snippet', 'buffers', 'ts', 'path'}}, + {mode = 'file'}, +} + +u.augroup('completion', { + {'BufEnter', '*', 'lua require("completion").on_attach()'}, +}) diff --git a/.vim/lua/plugins/_git-messenger.lua b/.vim/lua/plugins/_git-messenger.lua new file mode 100644 index 0000000..ea1c271 --- /dev/null +++ b/.vim/lua/plugins/_git-messenger.lua @@ -0,0 +1,3 @@ +-- vim.g.git_messenger_include_diff = false +vim.g.git_messenger_always_into_popup = true +vim.g.git_messenger_close_on_cursor_moved = true diff --git a/.vim/lua/plugins/_goyo.lua b/.vim/lua/plugins/_goyo.lua new file mode 100644 index 0000000..e18d2ba --- /dev/null +++ b/.vim/lua/plugins/_goyo.lua @@ -0,0 +1,9 @@ +vim.g.goyo_width = 120 +vim.g.goyo_height = 90 +vim.g.goyo_linenr = false +require('utils').augroup('goyo_hooks', { + {'User', 'GoyoEnter', 'set laststatus=0 scrolloff=999'}, + {'User', 'GoyoEnter', 'Limelight'}, + {'User', 'GoyoLeave', 'set laststatus=2 scrolloff=5'}, + {'User', 'GoyoLeave', 'Limelight!'}, +}) diff --git a/.vim/lua/plugins/_indent-guides.lua b/.vim/lua/plugins/_indent-guides.lua new file mode 100644 index 0000000..eb3c4aa --- /dev/null +++ b/.vim/lua/plugins/_indent-guides.lua @@ -0,0 +1,4 @@ +vim.g.indent_guides_enable_on_vim_startup = false +vim.g.indent_guides_start_level = 2 +vim.g.indent_guides_color_change_percent = 2 +vim.g.indent_guides_guide_size = 1 diff --git a/.vim/lua/plugins/_limelight.lua b/.vim/lua/plugins/_limelight.lua new file mode 100644 index 0000000..b77fdfc --- /dev/null +++ b/.vim/lua/plugins/_limelight.lua @@ -0,0 +1,7 @@ +vim.g.limelight_conceal_ctermfg = 'gray' +vim.g.limelight_conceal_ctermbg = 'none' +vim.g.limelight_conceal_guifg = '#828282' +vim.g.limelight_conceal_guibg = 'none' +vim.g.limelight_default_coefficient = 0.5 +vim.g.limelight_paragraph_span = 1 +vim.g.limelight_priority = -1 diff --git a/.vim/lua/conf/lsp.lua b/.vim/lua/plugins/_lsp.lua index 4249de5..9d98aca 100644 --- a/.vim/lua/conf/lsp.lua +++ b/.vim/lua/plugins/_lsp.lua @@ -1,21 +1,33 @@ -- lsp config -local lsp = require 'lspconfig' -local util = require 'lspconfig.util' +local lsp = require('lspconfig') +local util = require('lspconfig.util') +local u = require('utils') -local function my_attach(client) +-- https://github.com/kosayoda/nvim-lightbulb +require('nvim-lightbulb').update_lightbulb { + sign = { + enabled = true, + priority = 10, + }, + float = { + enabled = true, + text = '', + win_opts = {}, + }, +} + +local my_attach = function(client) -- attach completion require 'completion'.on_attach(client) - -- do lsp mappings - vim.fn.nvim_buf_set_keymap(0, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>', - {noremap=true, silent=true}) - vim.fn.nvim_buf_set_keymap(0, 'n', '<c-]>', '<cmd>lua vim.lsp.buf.definition()<cr>', - {noremap=true, silent=true}) - vim.fn.nvim_buf_set_keymap(0, 'n', 'grr', '<cmd>lua vim.lsp.buf.rename()<cr>', - {noremap=true, silent=true}) - vim.fn.nvim_buf_set_keymap(0, 'i', '<c-h>', '<cmd>lua vim.lsp.buf.signature_help()<cr>', - {noremap=true, silent=true}) + -- lsp mappings + u.map('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>') + u.map(0, 'n', '<c-]>', '<cmd>lua vim.lsp.buf.definition()<cr>') + u.map(0, 'n', 'grr', '<cmd>lua vim.lsp.buf.rename()<cr>') + u.map(0, 'i', '<c-h>', '<cmd>lua vim.lsp.buf.signature_help()<cr>') + u.map(0, 'n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<cr>') + u.map(0, 'n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<cr>') -- nnoremap <silent> gD <cmd> lua vim.lsp.buf.declaration()<CR> -- nnoremap <silent> gd <cmd> lua vim.lsp.buf.definition()<CR> @@ -40,12 +52,27 @@ lsp.gopls.setup{ } lsp.sumneko_lua.setup{ - cmd = { 'lua-language-server' }; on_attach = my_attach; + cmd = { 'lua-language-server' }; + settings = { + Lua = { + runtime = { + version = 'LuaJIT', + }, + diagnostics = { + globals = {'vim'}, + }, + workspace = { + library = { + [vim.fn.expand('$VIMRUNTIME/lua')] = true, + [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, + } + } + } + }, } lsp.rust_analyzer.setup{ - cmd = { 'env', 'CARGO_TARGET_DIR=/tmp', 'rust-analyzer' }, on_attach = my_attach, - + cmd = { 'env', 'CARGO_TARGET_DIR=/tmp', 'rust-analyzer' }, } diff --git a/.vim/lua/plugins/_markdown.lua b/.vim/lua/plugins/_markdown.lua new file mode 100644 index 0000000..c773d50 --- /dev/null +++ b/.vim/lua/plugins/_markdown.lua @@ -0,0 +1,9 @@ +g.vim_markdown_folding_disabled = true +g.vim_markdown_math = true +g.vim_markdown_frontmatter = true +g.vim_markdown_json_frontmatter = true +g.vim_markdown_toml_frontmatter = true +g.vim_markdown_folding_level = 2 +g.vim_markdown_strikethrough = true +g.vim_markdown_auto_insert_bullets = true +g.vim_markdown_new_list_item_indent = false diff --git a/.vim/lua/plugins/_signify.lua b/.vim/lua/plugins/_signify.lua new file mode 100644 index 0000000..a91ecb6 --- /dev/null +++ b/.vim/lua/plugins/_signify.lua @@ -0,0 +1,6 @@ +vim.g.signify_sign_change = '~' +require('utils').map('n', ']h', '<plug>(signify-next-hunk)', {silent=false}) +require('utils').map('n', '[h', '<plug>(signify-prev-hunk)') +vim.cmd('hi SignifySignChange guibg=NONE ctermbg=NONE') +vim.cmd('hi SignifySignAdd guibg=NONE ctermbg=NONE') +vim.cmd('hi SignifySignDelete guibg=NONE ctermbg=NONE') diff --git a/.vim/lua/plugins/_telescope.lua b/.vim/lua/plugins/_telescope.lua new file mode 100644 index 0000000..d4f9b89 --- /dev/null +++ b/.vim/lua/plugins/_telescope.lua @@ -0,0 +1,99 @@ +-- telescope.nvim et al config + +local u = require('utils') + +local M = {} + +-- TELESCOPE config -- {{{ +require('telescope').setup{ + defaults = { + -- vimgrep_arguments = { + -- 'rg', + -- '--color=never', + -- '--no-heading', + -- '--with-filename', + -- '--line-number', + -- '--column', + -- '--smart-case' + -- }, + + prompt_prefix = ' >', + borderchars = {'─', '│', '─', '│', '┌', '┐', '┘', '└'}, + winblend = 0, + preview_cutoff = 120, + + layout_strategy = 'flex', + + file_previewer = require('telescope.previewers').vim_buffer_cat_new, + grep_previewer = require('telescope.previewers').vim_buffer_vimgrep_new, + qflist_previewer = require('telescope.previewers').vim_buffer_qflist_new, + + extensions = { + fzf_writer = { + use_highlighter = true, + minimum_grep_characters = 4, + shorten_path = true, + } + } + } +} +-- }}} + +-- LOCAL finders -- {{{ +M.wrap = function(opts) + opts = opts or {} + my_opts = require('telescope.themes').get_dropdown({ width = 110 }) + return vim.tbl_deep_extend("force", my_opts, opts) +end + +M.live_grep = function() + require('telescope').extensions.fzf_writer.staged_grep(M.wrap()) +end + +M.repo_search = function() + require('telescope').extensions.fzf_writer.files(M.wrap({ + previewer = false, + cwd = require('lspconfig.util').root_pattern('.git')(vim.fn.expand('%:p')), + })) +end + +M.wiki = function() + require('telescope').extensions.fzf_writer.files(M.wrap({ + previewer = false, + cwd = '~/wiki/', + })) +end + +M.devel = function() + require('telescope').extensions.fzf_writer.files(M.wrap({ + previewer = false, + cwd = '~/devel/', + })) +end +-- }}} + +-- MAPPINGS -- {{{ + +u.map('n', ';g', "<cmd>lua require('plugins._telescope').live_grep()<cr>") +u.map('n', ';r', "<cmd>lua require('plugins._telescope').repo_search()<cr>") +-- u.map('n', ';w', "<cmd>lua require('plugins._telescope').wiki()<cr>") +u.map('n', ';d', "<cmd>lua require('plugins._telescope').devel()<cr>") + +local mapbuiltin = function(key, fn, previewer) + opts = (not previewer and '{ previewer = false }') or '{}' + u.map('n', key, "<cmd>lua require('telescope.builtin')."..fn.."(require('plugins._telescope').wrap("..opts.."))<cr>") +end + +mapbuiltin(';f', 'fd', true) +mapbuiltin(';q', 'quickfix') +mapbuiltin(';l', 'loclist') +mapbuiltin(';b', 'buffers') +mapbuiltin(';t', 'tags') +mapbuiltin(';lr', 'lsp_references') +mapbuiltin(';la', 'lsp_code_actions') +mapbuiltin(';lw', 'lsp_workspace_symbols') +mapbuiltin(';c', 'command_history') + +-- }}} + +return M diff --git a/.vim/lua/conf/treesitter.lua b/.vim/lua/plugins/_treesitter.lua index fed55e1..ef24286 100644 --- a/.vim/lua/conf/treesitter.lua +++ b/.vim/lua/plugins/_treesitter.lua @@ -1,5 +1,5 @@ -require 'nvim-treesitter.configs'.setup { +require('nvim-treesitter.configs').setup { ensure_installed = { "c", "c_sharp", "javascript", "lua", "bash" }, highlight = { enable = false, diff --git a/.vim/lua/plugins/_ultisnips.lua b/.vim/lua/plugins/_ultisnips.lua new file mode 100644 index 0000000..f2a6f6e --- /dev/null +++ b/.vim/lua/plugins/_ultisnips.lua @@ -0,0 +1,4 @@ +-- vim.g.UltiSnipsListSnippets = "<c-tab>" +vim.g.UltiSnipsExpandTrigger = "<Tab>" +vim.g.UltiSnipsJumpForwardTrigger = "<c-n>" +vim.g.UltiSnipsJumpBackwardTrigger = "<c-p>" diff --git a/.vim/lua/plugins/_vimtex.lua b/.vim/lua/plugins/_vimtex.lua new file mode 100644 index 0000000..2a3d550 --- /dev/null +++ b/.vim/lua/plugins/_vimtex.lua @@ -0,0 +1,8 @@ +vim.g.tex_flavor = 'latex' +vim.g.vimtex_compiler_enabled = 1 +vim.g.vimtex_compiler_method = 'tectonic' +vim.g.vimtex_compiler_tectonic = "{'executable': 'tectonic'}" +vim.g.vimtex_view_method = 'zathura' +-- vim.g.vimtex_view_zathura_check_libsynctex = false +-- vim.g.vimtex_view_use_temp_files = true +-- vim.g.vimtex_view_forward_search_on_start = false diff --git a/.vim/lua/split_term/init.lua b/.vim/lua/split_term/init.lua deleted file mode 100644 index 7dcb044..0000000 --- a/.vim/lua/split_term/init.lua +++ /dev/null @@ -1,46 +0,0 @@ -local spt = {} - -function spt:create() - self = { - height = 80, - buf_nr = nil, - win_id = nil, - visible = false, - } -end - -function spt:show() - vim.eval('botright new') - if self.buf_nr then - vim.eval('buffer ' .. self.buf_nr) - else - vim.termopen(self.exec, { detach=0 }) - self.buf_nr = vim.bufnr('%') - end -end - -function spt:open() -end - -function spt:hide() -end - -function spt:close() - local force = true - vim.api.nvim_win_close(self.win_id, force) - self.buf_nr = nil - self.win_id = nil -end - -function spt_toggle() - if spt.win_id then - if spt.visible then - spt:hide() - else - spt:show() - end - else - spt:create() - spt:show() - end -end diff --git a/.vim/lua/utils.lua b/.vim/lua/utils.lua new file mode 100644 index 0000000..ab7793f --- /dev/null +++ b/.vim/lua/utils.lua @@ -0,0 +1,35 @@ +-- utils.lua + +local M = {} + +-- crutch until https://github.com/neovim/neovim/pull/13479 +M.opt = function(scope, key, val) + local scopes = {o = vim.o, b = vim.bo, w = vim.wo} + if not ( scope and key and val ) then return end + scopes[scope][key] = val + if scope ~= 'o' then scopes['o'][key] = val end +end + +M.map = function(mode, lhs, rhs, opts) + if not ( mode and lhs and rhs ) then return end + local o = {noremap = true, silent = true} + if opts then o = vim.tbl_extend('force', o, opts) end + vim.api.nvim_set_keymap(mode, lhs, rhs, o) +end + +M.augroup = function(name, autocmds) + if not ( name and autocmds ) then return end + vim.cmd('augroup ' .. name) + vim.cmd('autocmd!') + for _, au in ipairs(autocmds) do + vim.cmd('autocmd ' .. table.concat(au, ' ')) + end + vim.cmd('augroup END') +end + +M.def = function(name, cmd, ...) + local opts = table.concat((... or {}), ' ') + vim.cmd('command! ' .. opts .. ' ' .. name .. ' ' .. cmd) +end + +return M diff --git a/.vim/plugin/fuzz.vim b/.vim/plugin/fuzz.vim deleted file mode 100644 index 0e1cb55..0000000 --- a/.vim/plugin/fuzz.vim +++ /dev/null @@ -1,16 +0,0 @@ -" skip this, we have vim-clap now!!! -finish - -if exists('g:loaded_fuzz') - finish -endif -let g:loaded_fuzz = 1 -let g:fuzz_prompt = '❯' - -nmap <silent> ff :call fuzz#files()<CR> -nmap <silent> fb :call fuzz#buffers()<CR> -nmap <silent> fc :call fuzz#commands()<CR> -nmap <silent> fr :Rg<space> - -command! -nargs=* -complete=custom,fuzz#cmdoptions Fuzz :call fuzz#exec(<f-args>) -command! -nargs=* Rg :call fuzz#rg(<f-args>) diff --git a/.vim/plugin/hard.vim b/.vim/plugin/hard.vim deleted file mode 100644 index 6f82e37..0000000 --- a/.vim/plugin/hard.vim +++ /dev/null @@ -1,65 +0,0 @@ -" hardmode == not using arrow keys - -function! s:bail() - let l:msg = 'E0X: Use hjkl' - echohl ErrorMsg | echo l:msg | echohl None -endfunction - -function! s:enable_hardmode(bang) - if !a:bang - try - " map arrow keys to more useful actions - " https://coderoncode.com/posts/vim-is-the-perfect-ide - nmap R<up> :resize +2<CR> - nmap R<down> :resize -2<CR> - nmap R<left> :vertical resize +2<CR> - nmap R<right> :vertical resize +2<CR> - - nmap W<up> :wincmd k<CR> - nmap W<down> :wincmd j<CR> - nmap W<left> :wincmd h<CR> - nmap W<right> :wincmd l<CR> - - nmap Wm<up> :wincmd K<CR> - nmap Wm<down> :wincmd J<CR> - nmap Wm<left> :wincmd H<CR> - nmap Wm<right> :wincmd L<CR> - - " or bail on them altogether - nmap <up> :call <SID>bail()<CR> - nmap <down> :call <SID>bail()<CR> - nmap <left> :call <SID>bail()<CR> - nmap <right> :call <SID>bail()<CR> - - vmap <up> :call <SID>bail()<CR> - vmap <down> :call <SID>bail()<CR> - vmap <left> :call <SID>bail()<CR> - vmap <right> :call <SID>bail()<CR> - - imap <up> <esc>:call <SID>bail()<CR> - imap <down> <esc>:call <SID>bail()<CR> - imap <left> <esc>:call <SID>bail()<CR> - imap <right> <esc>:call <SID>bail()<CR> - catch - endtry - else - try - nunmap <up> - nunmap <down> - nunmap <left> - nunmap <right> - vunmap <up> - vunmap <down> - vunmap <left> - vunmap <right> - iunmap <up> - iunmap <down> - iunmap <left> - iunmap <right> - catch - endtry - endif -endfunction - -call s:enable_hardmode(0) -command! -bang Hardmode call s:enable_hardmode(<bang>0) diff --git a/.vim/plugin/line.vim b/.vim/plugin/line.vim deleted file mode 100644 index eed5224..0000000 --- a/.vim/plugin/line.vim +++ /dev/null @@ -1,174 +0,0 @@ -finish - -let g:lightline = {} - -let g:lightline.enable = { 'statusline': 1, 'tabline': 0 } - -let g:lightline.mode_map = { -\ 'n' : 'N', -\ 'i' : 'I', -\ 'R' : 'R', -\ 'v' : 'V', -\ 'V' : 'V-LINE', -\ "\<C-v>": 'V-BLOCK', -\ 'c' : '>', -\ 's' : 'SELECT', -\ 'S' : 'S-LINE', -\ "\<C-s>": 'S-BLOCK', -\ 't': 'T', -\ } - -let g:lightline.active = { -\ 'left': [ -\ ['mode', 'paste'], -\ ['filename', 'vista'], -\ ['neomake', 'ctags', 'obsession'], -\ ], -\ 'right': [ -\ ['filetype', 'fileencoding', 'fileformat'], -\ ['indent', 'bufnum', 'lineinfo', 'percent'], -\ ], -\ } - -set showtabline=0 -let g:bufferline_echo = 0 -let g:bufferline_show_bufnr = 0 -" let g:bufferline_separator = ' ' -let g:bufferline_active_buffer_left = '' -let g:bufferline_active_buffer_right = '' -" let g:bufferline_unamed_buffer = '[no name]' -let g:bufferline_fname_mod = ':t:s?^$?[no name]?' -let g:lightline.tabline = { -\ 'right': [ -\ ['tabs'], -\ ['porcelain'], -\ ], -\ } -let g:lightline.tab = { -\ 'active': ['tabnum'], -\ 'inactive': ['tabnum'], -\ } - -let g:lightline.component = { -\ 'lineinfo': ' %l:%v', -\ 'filetype': "%{winwidth(0) > 70 ? (strlen(&filetype) ? &filetype : 'no ft') : ''}", -\ 'dir': "%{substitute(expand('%:p:h'), $HOME, '~', '')}", -\ } - -let g:lightline.component_function = { -\ 'filename': 'LightLineFilename', -\ 'bufnum': 'LightLineBufnum', -\ 'fileformat': 'LightLineFileformat', -\ 'fileencoding': 'LightLineFileencoding', -\ 'mode': 'LightLineMode', -\ 'vista': 'LightLineVista', -\ 'o': 'LightLineO', -\ 'porcelain': 'LightLinePorcelain', -\ 'indent': 'LightLineIndent', -\ } - -" \ 'separator': { 'left': "\ue0b8", 'right': "\ue0be" }, -" \ 'subseparator': { 'left': "\ue0b9", 'right': "\ue0b9" }, -" \ 'tabline_separator': { 'left': "\ue0bc", 'right': "\ue0ba" }, -" \ 'tabline_subseparator': { 'left': "\ue0bb", 'right': "\ue0bb" }, -" \ - -let g:lightline.component_expand = {} -let g:lightline.component_type = {} - - -" Modified {{{ -hi ModifiedColor ctermfg=196 guifg=#ff0000 gui=bold -function! LightLineModified() - return &modified ? '+' : &modifiable ? '' : '-' -endfunction -" }}} - -" Readonly {{{ -function! LightLineReadonly() - return &filetype !~? 'help\|vimfiler\|gundo' && &readonly ? '' : '' -endfunction -" }}} - -" Filename {{{ -function! LightLineFilename() - return ('' !=? LightLineReadonly() ? LightLineReadonly() . ' ' : '') . - \ (&filetype ==# 'vimfiler' ? vimfiler#get_status_string() : - \ &filetype ==# 'unite' ? unite#get_status_string() : - \ &filetype ==# 'vimshell' ? vimshell#get_status_string() : - \ '' !=? expand('%:t') ? expand('%:t') : '[No Name]') . - \ ('' !=? LightLineModified() ? ' ' . LightLineModified() : '') -endfunction -" }}} - -" Bufnum {{{ -function! LightLineBufnum() - let l:nbufs = len(getbufinfo({'buflisted':1})) - return '% '. bufnr('%') . '('.l:nbufs.')' . (tabpagenr() != 1 ? ':'. tabpagenr() : '') -endfunction -" }}} - -" Fileformat {{{ -function! LightLineFileformat() - if (&fileformat == 'unix') - return '' - endif - return winwidth(0) > 70 ? &fileformat : '' -endfunction -" }}} - -" Fileencoding {{{ -function! LightLineFileencoding() - if (&fileencoding == 'utf-8') - return '' - endif - return winwidth(0) > 70 ? (strlen(&fileencoding) ? &fileencoding : &encoding) : '' -endfunction -" }}} - -" Mode {{{ -function! LightLineMode() - return winwidth(0) > 60 ? ( - \ expand('%:t') ==# '__Tagbar__' ? 'Tagbar': - \ &filetype ==# 'vimfiler' ? 'VimFiler' : - \ &filetype ==# 'vimshell' ? 'VimShell' : - \ &filetype ==# 'dirvish' ? 'DIRVISH' : - \ lightline#mode() ) - \ : '' -endfunction -" }}} - -" Indent {{{ -function! LightLineIndent() - return '' . - \ (&expandtab == 1 ? '␣' : '→') . ' ' . - \ 'ts=' . &tabstop . - \ ' ' . - \ 'sw=' . &shiftwidth -endfunction -" }}} - -" Vista {{{ -function! LightLineVista() - let l:sym = get(b:, 'vista_nearest_method_or_function', '') - return empty(l:sym) ? '' : g:vista#renderer#icons.function . ' ' . l:sym -endfunction -" }}} - -" Porcelain {{{ -function! LightLinePorcelain() - if &buftype !=# 'terminal' - let gitinfo = system('porcelain -no-color -path=' . expand('%:h')) - return (v:shell_error ? '' : gitinfo) - endif -endfunction -" }}} - -function! LightLineO() - let l:circ_empty="\u25CB" - let l:circ_quart="\u25D4" - let l:circ_half="\u25D1" - let l:circ_threequart="\u25D5" - let l:circ_full="\u25CF" - return ('' != LightLineModified() ? l:circ_full : l:circ_empty) -endfunction diff --git a/.vim/plugin/packer_compiled.vim b/.vim/plugin/packer_compiled.vim index a40dddd..a663292 100644 --- a/.vim/plugin/packer_compiled.vim +++ b/.vim/plugin/packer_compiled.vim @@ -1,211 +1,252 @@ " Automatically generated packer.nvim plugin loader code -if !has('nvim') +if !has('nvim-0.5') + echohl WarningMsg + echom "Invalid Neovim version for packer.nvim!" + echohl None finish endif +packadd packer.nvim + +try + lua << END -local plugins = { - ["emmet-vim"] = { - loaded = false, - only_sequence = false, - only_setup = false, - path = "/home/robert/.local/share/nvim/site/pack/packer/opt/emmet-vim" +local package_path_str = "/tmp/robert/.cache/nvim/packer_hererocks/2.0.5/share/lua/5.1/?.lua;/tmp/robert/.cache/nvim/packer_hererocks/2.0.5/share/lua/5.1/?/init.lua;/tmp/robert/.cache/nvim/packer_hererocks/2.0.5/lib/luarocks/rocks-5.1/?.lua;/tmp/robert/.cache/nvim/packer_hererocks/2.0.5/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/tmp/robert/.cache/nvim/packer_hererocks/2.0.5/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s)) + if not success then + print('Error running ' .. component .. ' for ' .. name) + error(result) + end + return result +end + +_G.packer_plugins = { + ["astronauta.nvim"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/astronauta.nvim" + }, + ["completion-buffers"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/completion-buffers" + }, + ["completion-nvim"] = { + config = { "require('plugins._completion')" }, + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/completion-nvim" + }, + ["completion-treesitter"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/completion-treesitter" + }, + ["gentoo-syntax"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/gentoo-syntax" + }, + ["git-messenger.vim"] = { + config = { "require('plugins._git-messenger')" }, + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/git-messenger.vim" }, ["goyo.vim"] = { commands = { "Goyo" }, + config = { "require('plugins._goyo')" }, loaded = false, - only_sequence = false, - only_setup = false, + needs_bufread = false, path = "/home/robert/.local/share/nvim/site/pack/packer/opt/goyo.vim" }, + ["lexima.vim"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/lexima.vim" + }, ["limelight.vim"] = { commands = { "Limelight" }, + config = { "require('plugins._limelight')" }, loaded = false, - only_sequence = false, - only_setup = false, + needs_bufread = false, path = "/home/robert/.local/share/nvim/site/pack/packer/opt/limelight.vim" }, - ["vim-easy-align"] = { - commands = { "EasyAlign" }, + ["nvim-colorizer.lua"] = { + config = { "require('plugins._colorizer')" }, + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua" + }, + ["nvim-lightbulb"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/nvim-lightbulb" + }, + ["nvim-lspconfig"] = { + config = { "require('plugins._lsp')" }, + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/nvim-lspconfig" + }, + ["nvim-treesitter"] = { + config = { "require('plugins._treesitter')" }, + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/nvim-treesitter" + }, + ["nvim-treesitter-refactor"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor" + }, + ["packer.nvim"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/packer.nvim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/plenary.nvim" + }, + ["popup.nvim"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/popup.nvim" + }, + ["telescope-fzf-writer.nvim"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/telescope-fzf-writer.nvim" + }, + ["telescope.nvim"] = { + config = { "require('plugins._telescope')" }, + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/telescope.nvim" + }, + ultisnips = { + config = { "require('plugins._ultisnips')" }, + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/ultisnips" + }, + ["vim-commentary"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-commentary" + }, + ["vim-cue"] = { loaded = false, - only_sequence = false, - only_setup = false, - path = "/home/robert/.local/share/nvim/site/pack/packer/opt/vim-easy-align" + needs_bufread = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/opt/vim-cue" + }, + ["vim-dirvish"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-dirvish" + }, + ["vim-easy-align"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-easy-align" + }, + ["vim-editorconfig"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-editorconfig" + }, + ["vim-github-link"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-github-link" + }, + ["vim-indent-guides"] = { + config = { "require('plugins._indent-guides')" }, + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-indent-guides" + }, + ["vim-indent-object"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-indent-object" }, ["vim-markdown"] = { + config = { "require('plugins._markdown')" }, loaded = false, - only_sequence = false, - only_setup = false, + needs_bufread = true, path = "/home/robert/.local/share/nvim/site/pack/packer/opt/vim-markdown" }, ["vim-markdown-folding"] = { loaded = false, - only_sequence = false, - only_setup = false, + needs_bufread = true, path = "/home/robert/.local/share/nvim/site/pack/packer/opt/vim-markdown-folding" }, + ["vim-polyglot"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-polyglot" + }, + ["vim-repeat"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-repeat" + }, + ["vim-signify"] = { + config = { "require('plugins._signify')" }, + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-signify" + }, + ["vim-sneak"] = { + config = { "vim.g['sneak#label'] = true" }, + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-sneak" + }, + ["vim-snippets"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-snippets" + }, + ["vim-surround"] = { + loaded = true, + path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-surround" + }, vimtex = { + config = { "require('plugins._vimtex')" }, loaded = false, - only_sequence = false, - only_setup = false, + needs_bufread = true, path = "/home/robert/.local/share/nvim/site/pack/packer/opt/vimtex" } } -local function handle_bufread(names) - for _, name in ipairs(names) do - local path = plugins[name].path - for _, dir in ipairs({ 'ftdetect', 'ftplugin', 'after/ftdetect', 'after/ftplugin' }) do - if #vim.fn.finddir(dir, path) > 0 then - vim.cmd('doautocmd BufRead') - return - end - end - end -end - -_packer_load = nil - -local function handle_after(name, before) - local plugin = plugins[name] - plugin.load_after[before] = nil - if next(plugin.load_after) == nil then - _packer_load({name}, {}) - end -end - -_packer_load = function(names, cause) - local some_unloaded = false - for _, name in ipairs(names) do - if not plugins[name].loaded then - some_unloaded = true - break - end - end - - if not some_unloaded then return end - - local fmt = string.format - local del_cmds = {} - local del_maps = {} - for _, name in ipairs(names) do - if plugins[name].commands then - for _, cmd in ipairs(plugins[name].commands) do - del_cmds[cmd] = true - end - end - - if plugins[name].keys then - for _, key in ipairs(plugins[name].keys) do - del_maps[key] = true - end - end - end - - for cmd, _ in pairs(del_cmds) do - vim.cmd('silent! delcommand ' .. cmd) - end - - for key, _ in pairs(del_maps) do - vim.cmd(fmt('silent! %sunmap %s', key[1], key[2])) - end - - for _, name in ipairs(names) do - if not plugins[name].loaded then - vim.cmd('packadd ' .. name) - if plugins[name].config then - for _i, config_line in ipairs(plugins[name].config) do - loadstring(config_line)() - end - end - - if plugins[name].after then - for _, after_name in ipairs(plugins[name].after) do - handle_after(after_name, name) - vim.cmd('redraw') - end - end - - plugins[name].loaded = true - end - end - - handle_bufread(names) - - if cause.cmd then - local lines = cause.l1 == cause.l2 and '' or (cause.l1 .. ',' .. cause.l2) - vim.cmd(fmt('%s%s%s %s', lines, cause.cmd, cause.bang, cause.args)) - elseif cause.keys then - local keys = cause.keys - local extra = '' - while true do - local c = vim.fn.getchar(0) - if c == 0 then break end - extra = extra .. vim.fn.nr2char(c) - end - - if cause.prefix then - local prefix = vim.v.count and vim.v.count or '' - prefix = prefix .. '"' .. vim.v.register .. cause.prefix - if vim.fn.mode('full') == 'no' then - if vim.v.operator == 'c' then - prefix = '' .. prefix - end - - prefix = prefix .. vim.v.operator - end - - vim.fn.feedkeys(prefix, 'n') - end - - -- NOTE: I'm not sure if the below substitution is correct; it might correspond to the literal - -- characters \<Plug> rather than the special <Plug> key. - vim.fn.feedkeys(string.gsub(string.gsub(cause.keys, '^<Plug>', '\\<Plug>') .. extra, '<[cC][rR]>', '\r')) - elseif cause.event then - vim.cmd(fmt('doautocmd <nomodeline> %s', cause.event)) - elseif cause.ft then - vim.cmd(fmt('doautocmd <nomodeline> %s FileType %s', 'filetypeplugin', cause.ft)) - vim.cmd(fmt('doautocmd <nomodeline> %s FileType %s', 'filetypeindent', cause.ft)) - end -end - --- Runtimepath customization - --- Pre-load configuration --- Post-load configuration --- Config for: nvim-treesitter -loadstring("\27LJ\1\2/\0\0\2\0\2\0\0044\0\0\0%\1\1\0>\0\2\1G\0\1\0\20conf.treesitter\frequire\0")() +-- Config for: telescope.nvim +require('plugins._telescope') +-- Config for: completion-nvim +require('plugins._completion') -- Config for: nvim-colorizer.lua -loadstring("\27LJ\1\2z\0\0\3\0\4\0\b4\0\0\0%\1\1\0>\0\2\0027\0\2\0)\1\0\0003\2\3\0>\0\3\1G\0\1\0\1\0\6\vrgb_fn\2\tname\2\rRRGGBBAA\1\vhsl_fn\2\tmode\15background\vRRGGBB\2\nsetup\14colorizer\frequire\0")() --- Config for: galaxyline.nvim -loadstring("\27LJ\1\2$\0\0\2\0\2\0\0044\0\0\0%\1\1\0>\0\2\1G\0\1\0\tline\frequire\0")() +require('plugins._colorizer') +-- Config for: nvim-treesitter +require('plugins._treesitter') +-- Config for: vim-indent-guides +require('plugins._indent-guides') +-- Config for: vim-signify +require('plugins._signify') +-- Config for: git-messenger.vim +require('plugins._git-messenger') +-- Config for: vim-sneak +vim.g['sneak#label'] = true +-- Config for: ultisnips +require('plugins._ultisnips') -- Config for: nvim-lspconfig -loadstring("\27LJ\1\2(\0\0\2\0\2\0\0044\0\0\0%\1\1\0>\0\2\1G\0\1\0\rconf.lsp\frequire\0")() --- Config for: telescope.nvim -loadstring("\27LJ\1\2.\0\0\2\0\2\0\0044\0\0\0%\1\1\0>\0\2\1G\0\1\0\19conf.telescope\frequire\0")() --- Conditional loads --- Load plugins in order defined by `after` +require('plugins._lsp') + +-- Command lazy-loads +vim.cmd [[command! -nargs=* -range -bang -complete=file Limelight lua require("packer.load")({'limelight.vim'}, { cmd = "Limelight", l1 = <line1>, l2 = <line2>, bang = <q-bang>, args = <q-args> }, _G.packer_plugins)]] +vim.cmd [[command! -nargs=* -range -bang -complete=file Goyo lua require("packer.load")({'goyo.vim'}, { cmd = "Goyo", l1 = <line1>, l2 = <line2>, bang = <q-bang>, args = <q-args> }, _G.packer_plugins)]] + +vim.cmd [[augroup packer_load_aucmds]] +vim.cmd [[au!]] + -- Filetype lazy-loads +vim.cmd [[au FileType markdown ++once lua require("packer.load")({'vim-markdown-folding', 'vim-markdown'}, { ft = "markdown" }, _G.packer_plugins)]] +vim.cmd [[au FileType cue ++once lua require("packer.load")({'vim-cue'}, { ft = "cue" }, _G.packer_plugins)]] +vim.cmd [[au FileType latex ++once lua require("packer.load")({'vimtex'}, { ft = "latex" }, _G.packer_plugins)]] +vim.cmd [[au FileType tex ++once lua require("packer.load")({'vimtex'}, { ft = "tex" }, _G.packer_plugins)]] +vim.cmd("augroup END") +vim.cmd [[augroup filetypedetect]] +vim.cmd [[source /home/robert/.local/share/nvim/site/pack/packer/opt/vimtex/ftdetect/tex.vim]] +vim.cmd [[source /home/robert/.local/share/nvim/site/pack/packer/opt/vim-markdown/ftdetect/markdown.vim]] +vim.cmd [[source /home/robert/.local/share/nvim/site/pack/packer/opt/vim-cue/ftdetect/cue.vim]] +vim.cmd("augroup END") END -function! s:load(names, cause) abort -call luaeval('_packer_load(_A[1], _A[2])', [a:names, a:cause]) -endfunction - - -" Command lazy-loads -command! -nargs=* -range -bang -complete=file Goyo call s:load(['goyo.vim'], { "cmd": "Goyo", "l1": <line1>, "l2": <line2>, "bang": <q-bang>, "args": <q-args> }) -command! -nargs=* -range -bang -complete=file Limelight call s:load(['limelight.vim'], { "cmd": "Limelight", "l1": <line1>, "l2": <line2>, "bang": <q-bang>, "args": <q-args> }) -command! -nargs=* -range -bang -complete=file EasyAlign call s:load(['vim-easy-align'], { "cmd": "EasyAlign", "l1": <line1>, "l2": <line2>, "bang": <q-bang>, "args": <q-args> }) - -" Keymap lazy-loads - -augroup packer_load_aucmds - au! - " Filetype lazy-loads - au FileType markdown ++once call s:load(['vim-markdown', 'vim-markdown-folding'], { "ft": "markdown" }) - au FileType html ++once call s:load(['emmet-vim'], { "ft": "html" }) - au FileType latex ++once call s:load(['vimtex'], { "ft": "latex" }) - au FileType tex ++once call s:load(['vimtex'], { "ft": "tex" }) - " Event lazy-loads -augroup END +catch + echohl ErrorMsg + echom "Error in packer_compiled: " .. v:exception + echom "Please check your config for correctness" + echohl None +endtry diff --git a/.vim/plugin/zettel.vim b/.vim/plugin/zettel.vim deleted file mode 100644 index 948bb91..0000000 --- a/.vim/plugin/zettel.vim +++ /dev/null @@ -1,43 +0,0 @@ -" markdown extended for bullet journaling and personal wiki-keeping - -if exists('g:loaded_zettel') - finish -endif -let g:loaded_zettel = 1 - -if !exists('g:zettel_root') - let g:zettel_root = expand($HOME.'/wiki') -endif - -if !exists('g:zettel_create_on_empty') - let g:zettel_create_on_emtpy = 1 -endif - -if v:progname =~ 'vimdiff' - let g:zettel_create_on_empty = 0 -endif - -function! <SID>make_new_zettel() - let l:pastebackup = &paste - set nopaste - - 0 put ='---' - read !yq n date $(date -Iseconds) | yq w - title "%:t:r" - put ='---' - call feedkeys('Go', 'n') - - if pastebackup == 0 - set nopaste - endif -endfunction - -command! -nargs=0 NewZettel call <SID>make_new_zettel() - -augroup NewZettel - au! - au BufNewFile *.md - \ if expand('%:p') =~# fnameescape(g:zettel_root).'/.*.md' | - \ call <SID>make_new_zettel() | - \ endif -augroup END - diff --git a/.vim/syntax/gotmpl.vim b/.vim/syntax/gotmpl.vim deleted file mode 100644 index b4bf6b9..0000000 --- a/.vim/syntax/gotmpl.vim +++ /dev/null @@ -1,93 +0,0 @@ -" Copyright 2011 The Go Authors. All rights reserved. -" Use of this source code is governed by a BSD-style -" license that can be found in the LICENSE file. -" -" gotexttmpl.vim: Vim syntax file for Go templates. - -" Quit when a (custom) syntax file was already loaded -if exists("b:current_syntax") - finish -endif - -if !exists("g:main_syntax") - let g:main_syntax = 'html' -endif - -runtime! syntax/html.vim - -" syn case match - -" Go escapes -syn match goEscapeOctal display contained "\\[0-7]\{3}" -syn match goEscapeC display contained +\\[abfnrtv\\'"]+ -syn match goEscapeX display contained "\\x\x\{2}" -syn match goEscapeU display contained "\\u\x\{4}" -syn match goEscapeBigU display contained "\\U\x\{8}" -syn match goEscapeError display contained +\\[^0-7xuUabfnrtv\\'"]+ - -hi def link goEscapeOctal goSpecialString -hi def link goEscapeC goSpecialString -hi def link goEscapeX goSpecialString -hi def link goEscapeU goSpecialString -hi def link goEscapeBigU goSpecialString -hi def link goSpecialString Special -hi def link goEscapeError Error - -" Strings and their contents -syn cluster goStringGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU,goEscapeError -syn region goString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@goStringGroup -syn region goRawString contained start=+`+ end=+`+ - -hi def link goString String -hi def link goRawString String - -" Characters; their contents -syn cluster goCharacterGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU -syn region goCharacter contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@goCharacterGroup - -hi def link goCharacter Character - -" Integers -syn match goDecimalInt contained "\<\d\+\([Ee]\d\+\)\?\>" -syn match goHexadecimalInt contained "\<0x\x\+\>" -syn match goOctalInt contained "\<0\o\+\>" -syn match goOctalError contained "\<0\o*[89]\d*\>" -syn cluster goInt contains=goDecimalInt,goHexadecimalInt,goOctalInt -" Floating point -syn match goFloat contained "\<\d\+\.\d*\([Ee][-+]\d\+\)\?\>" -syn match goFloat contained "\<\.\d\+\([Ee][-+]\d\+\)\?\>" -syn match goFloat contained "\<\d\+[Ee][-+]\d\+\>" -" Imaginary literals -syn match goImaginary contained "\<\d\+i\>" -syn match goImaginary contained "\<\d\+\.\d*\([Ee][-+]\d\+\)\?i\>" -syn match goImaginary contained "\<\.\d\+\([Ee][-+]\d\+\)\?i\>" -syn match goImaginary contained "\<\d\+[Ee][-+]\d\+i\>" - -hi def link goInt Number -hi def link goFloat Number -hi def link goImaginary Number - -" Token groups -syn cluster gotplLiteral contains=goString,goRawString,goCharacter,@goInt,goFloat,goImaginary -syn keyword gotplControl contained if else end range with template -syn keyword gotplFunctions contained and html index js len not or print printf println urlquery eq ne lt le gt ge -syn match gotplVariable contained /\$[a-zA-Z0-9_]*\>/ -syn match goTplIdentifier contained /\.[^\s}]+\>/ - -hi def link gotplControl Keyword -hi def link gotplFunctions Function -hi def link goTplVariable Special - -syn region gotplAction start="{{" end="}}" contains=@gotplLiteral,gotplControl,gotplFunctions,gotplVariable,goTplIdentifier display -syn region gotplAction start="\[\[" end="\]\]" contains=@gotplLiteral,gotplControl,gotplFunctions,gotplVariable display -syn region goTplComment start="{{\(- \)\?/\*" end="\*/\( -\)\?}}" display -syn region goTplComment start="\[\[\(- \)\?/\*" end="\*/\( -\)\?\]\]" display - -hi def link gotplAction PreProc -hi def link goTplComment Comment - -syn cluster htmlPreproc add=gotplAction,goTplComment - -let b:current_syntax = "gotmpl" - -" vim: sw=2 ts=2 et |