summary refs log tree commit diff
path: root/.vim
diff options
context:
space:
mode:
Diffstat (limited to '.vim')
-rw-r--r--.vim/UltiSnips/dockerfile.snippets17
-rw-r--r--.vim/UltiSnips/tex.snippets20
-rw-r--r--.vim/colors/misc.vim36
-rw-r--r--.vim/colors/nihoncolors.vim1258
-rw-r--r--.vim/init.lua67
-rw-r--r--.vim/lua/color_palette.lua32
-rw-r--r--.vim/lua/color_palette.lua.in32
-rw-r--r--.vim/lua/colors.lua225
-rw-r--r--.vim/lua/colors.lua.in298
-rw-r--r--.vim/lua/job.lua45
-rw-r--r--.vim/lua/lsp.lua168
-rw-r--r--.vim/lua/misc.lua26
-rw-r--r--.vim/lua/plugins.lua487
-rw-r--r--.vim/lua/plugins/_colorizer.lua8
-rw-r--r--.vim/lua/plugins/_completion.lua53
-rw-r--r--.vim/lua/plugins/_git-messenger.lua4
-rw-r--r--.vim/lua/plugins/_goyo.lua12
-rw-r--r--.vim/lua/plugins/_indent-guides.lua4
-rw-r--r--.vim/lua/plugins/_lightbulb.lua19
-rw-r--r--.vim/lua/plugins/_limelight.lua7
-rw-r--r--.vim/lua/plugins/_lsp.lua176
-rw-r--r--.vim/lua/plugins/_markdown.lua12
-rw-r--r--.vim/lua/plugins/_neuron.lua15
-rw-r--r--.vim/lua/plugins/_signify.lua10
-rw-r--r--.vim/lua/plugins/_telescope.lua114
-rw-r--r--.vim/lua/plugins/_treesitter.lua24
-rw-r--r--.vim/lua/plugins/_ultisnips.lua4
-rw-r--r--.vim/lua/plugins/_vimtex.lua8
-rw-r--r--.vim/lua/utils.lua29
-rw-r--r--.vim/plugin/packer_compiled.lua370
-rw-r--r--.vim/plugin/packer_compiled.vim347
31 files changed, 1225 insertions, 2702 deletions
diff --git a/.vim/UltiSnips/dockerfile.snippets b/.vim/UltiSnips/dockerfile.snippets
index 304a00a..c8d7502 100644
--- a/.vim/UltiSnips/dockerfile.snippets
+++ b/.vim/UltiSnips/dockerfile.snippets
@@ -1,7 +1,7 @@
 # vim: ft=snippets:
 
-snippet skel "skeleton" b
-#syntax=docker/dockerfile:1-experimental
+snippet FROM:skel "skeleton" b
+#syntax=docker/dockerfile:1.2
 
 FROM docker.io/library/alpine:3${1}
 $0
@@ -9,24 +9,23 @@ $0
 #vim: ft=Dockerfile:
 endsnippet
 
-snippet from:buildpl "FROM --platform=$BUILDPLATFORM"
+snippet FROM:alpine "FROM --platform=$BUILDPLATFORM"
 FROM --platform=$BUILDPLATFORM docker.io/library/alpine:3${1} AS base
 ARG TARGETPLATFORM
 RUN apk -U add --no-cache $0
 endsnippet
 
-snippet from:final "FROM scratch AS final"
+snippet FROM:final "FROM scratch AS final"
 FROM scratch AS final
 COPY --from=build /out/* /
 endsnippet
 
-snippet run "RUN" b
-RUN --mount=type=bind,target=. \
-    --mount=type=cache,target=/root/.cache \
+snippet RUN "RUN" b
+RUN --mount=target=. \
+    --mount=target=${1:/root/.cache},type=cache \
     ${0}
 endsnippet
 
-snippet xx "tonistiigi/xx" b
+snippet FROM:xx "tonistiigi/xx" b
 FROM --platform=$BUILDPLATFORM docker.io/tonistiigi/xx:${1:golang} AS xx
-${0}COPY --from=xx / /
 endsnippet
diff --git a/.vim/UltiSnips/tex.snippets b/.vim/UltiSnips/tex.snippets
index bc92b06..de9a974 100644
--- a/.vim/UltiSnips/tex.snippets
+++ b/.vim/UltiSnips/tex.snippets
@@ -1,18 +1,3 @@
-snippet \begin "begin{} .. end{}" bA
-\begin{$1}$2
-$0
-\end{$1}
-endsnippet
-
-snippet $$ "math env $$" wA
-$${1}$ $0
-endsnippet
-snippet \[ "math block \[" iA
-\[
-	${1:${VISUAL}}
-.\] $0
-endsnippet
-
 snippet frac "\\frac" iA
 \\frac{$1}{$2}$0
 endsnippet
@@ -30,7 +15,7 @@ snippet -> "\to" wA
 \to
 endsnippet
 
-snippet latex "\documentclass{report}"
+snippet report "\documentclass{report}"
 \documentclass{report}
 \usepackage[a4paper,margin=30truemm]{geometry}
 \usepackage{polyglossia}
@@ -41,10 +26,9 @@ snippet latex "\documentclass{report}"
 
 \title{$1}
 \author{Robert Günzler}
-\date{`!v strftime('%Y-%m-%d')`}
+\date{\today}
 
 \begin{document}
-\title{awesome title}
 
 $0
 
diff --git a/.vim/colors/misc.vim b/.vim/colors/misc.vim
deleted file mode 100644
index 6583470..0000000
--- a/.vim/colors/misc.vim
+++ /dev/null
@@ -1,36 +0,0 @@
-" 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
deleted file mode 100644
index 1919466..0000000
--- a/.vim/colors/nihoncolors.vim
+++ /dev/null
@@ -1,1258 +0,0 @@
-" 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',      color05)
-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'  . ' guibg=#292929 ' . 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/init.lua b/.vim/init.lua
index 600a76b..d56d1c7 100644
--- a/.vim/init.lua
+++ b/.vim/init.lua
@@ -15,7 +15,7 @@ opt.clipboard:prepend { 'unnamedplus' }
 opt.cmdheight = 1
 opt.colorcolumn = {80} -- depends on 'textwidth'
 opt.complete = '.,w,b,u'
-opt.completeopt = 'menuone,noinsert,noselect'
+opt.completeopt = 'menuone,noselect'
 opt.concealcursor = ''
 opt.conceallevel = 2
 opt.cursorline = true
@@ -72,46 +72,61 @@ nnoremap { 'gB', function() cmd [[ bprevious ]] end }
 -- terminal
 tnoremap { '<esc>', [[ <c-\><c-n> ]] }
 tnoremap { '<leader>qq', [[ <c-\><c-n> :bdelete!<cr> ]] }
+vnoremap { 'T', function() cmd [[ retab! | call feedkeys("\<esc>") ]] end }
 
-nnoremap { 'gf', function() require('misc').open_under_cursor('open') end }
-nnoremap { 'gF', function() require('misc').open_under_cursor() end }
-nnoremap { 'gx', function() require('misc').open_under_cursor('url-launcher') end }
+nnoremap { 'gf',  function() require('misc').file_under_cursor(function(s) vim.cmd('edit ' .. s) end) end }
+nnoremap { 'gF',  function() require('misc').open_under_cursor() end }
+nnoremap { 'gx',  function() require('misc').open_under_cursor('url-launcher') end }
 nnoremap { 'gGw', function() require('misc').word_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end }
 nnoremap { 'gGe', function() require('misc').expr_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end }
 nnoremap { 'gGf', function() require('misc').file_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end }
-nnoremap { 'gs', function() require('misc').word_under_cursor(function(s) vim.fn.feedkeys(':%s/' .. s .. '//g'); cmd [[ call feedkeys("\<left>\<left>") ]] end) end }
-
-nnoremap { '<leader>gg', function() require('neogit').open({ kind = "split" }) end }
-nnoremap { 'gm', function() cmd [[ GitMessenger ]] end }
-vnoremap { 'T', function() cmd [[ retab! | call feedkeys("\<esc>") ]] end }
+nnoremap { 'gs',  function() require('misc').word_under_cursor(function(s) vim.fn.feedkeys(':%s/' .. s .. '//g'); cmd [[ call feedkeys("\<left>\<left>") ]] end) end }
 -- }}}
 
 local u = require('utils')
 
 -- AUTO GROUPS -- {{{
 u.augroup2 {
-  yank_highlight = {{ 'TextYankPost', '*', [[ silent! lua require("vim.highlight").on_yank() ]] }},
+  yank_highlight = {{'TextYankPost', '*', [[ silent! lua require("vim.highlight").on_yank() ]]}},
   obvious_active_win = {
-    { 'WinEnter', '*', 'set cul' },
-    { 'WinLeave', '*', 'set nocul' }
+    {'WinEnter', '*', 'set cul'},
+    {'WinLeave', '*', 'set nocul'}
+  },
+  c_makeprg = {{'BufRead', '*.c', [[ set makeprg=ninja\ -C\ build ]]}},
+  open_qf = {{'QuickFixCmdPost', '*', [[ :clist ]]}},
+  -- packer_auto_compile = {{'BufWritePost', 'plugins.lua', [[ source <afile> | PackerCompile ]]}},
+  commentstring = {
+    {'FileType', 'i3config', [[ setlocal commentstring=#\ %s ]]},
+    {'FileType', 'jsonc', [[ setlocal commentstring=//\ %s ]]},
   },
-  c_makeprg = {{'BufRead', '*.c', [[ set makeprg=ninja\ -C\ build ]] }},
 }
 -- }}}
 
 -- USER COMMANDS -- {{{
-u.def('BalenaDiagnosticsFold', [[ call balena_diagnostics_fold#apply() ]])
-u.def('SortLine', [[ call setline(".", join(sort(split(getline("."), " ")), " ")) ]])
+cmd [[ command! BalenaDiagnosticsFold call balena_diagnostics_fold#apply() ]]
+cmd [[ command! -range SortLine <line1>,<line2>lua require('misc').sort_line() ]]
+cmd [[ command! -nargs=1 Make lua require('job').make({<f-args>}) ]]
 -- }}}
 
 -- STATUS LINE -- {{{
+require('spinner').setup {
+  spinner = {'⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'},
+  interval = 120, -- spinner frame rate in ms
+}
 statusline = function()
   local sl = ''
   -- left
   sl = sl .. statusline_color(vim.fn.mode())
   sl = sl .. [[ ⢷ %<%F %-m %-r ]]
   -- right
-  sl = sl .. [[ %=  %l:%v %y ]]
+  sl = sl .. [[ %= ]] -- spacer
+
+  local lsp_spinner = require('spinner').status(vim.fn.bufnr())
+  local lsp_diagnostics = statusline_lsp_diagnostics(vim.fn.bufnr())
+
+  sl = sl .. lsp_spinner .. ' '
+  sl = sl .. lsp_diagnostics
+  sl = sl .. [[  %l:%v %y ]]
   return sl
 end
 statusline_color = function(mode)
@@ -128,6 +143,20 @@ statusline_color = function(mode)
   -- return '%{g:actual_curwin==win_getid()?'.. hi ..':%#StatusLineNC#}'
   return hi
 end
+statusline_lsp_diagnostics = function(bufnr)
+  -- Error, Warning, Information, Hint
+  local error_num = vim.lsp.diagnostic.get_count(bufnr, 'Error')
+  local warn_num = vim.lsp.diagnostic.get_count(bufnr, 'Warning')
+
+  local s = ''
+  if error_num > 0 then
+    s = s .. vim.fn.sign_getdefined('LspDiagnosticsSignError')[1].text .. error_num
+  end
+  if warn_num > 0 then
+    s = s .. vim.fn.sign_getdefined('LspDiagnosticsSignWarning')[1].text .. warn_num
+  end
+  return s
+end
 -- }}}
 
 -- source .nvimrc if it exists
@@ -135,3 +164,9 @@ local local_vimrc = vim.fn.getcwd()..'/.nvimrc'
 if vim.loop.fs_stat(local_vimrc) then
   cmd('source ' .. local_vimrc)
 end
+
+-- configure :grep to use ripgrep if it's available
+if vim.fn.executable('rg') then
+  vim.opt.grepprg = 'rg --vimgrep --smart-case --hidden'
+  vim.opt.grepformat = '%f:%l:%c:%m'
+end
diff --git a/.vim/lua/color_palette.lua b/.vim/lua/color_palette.lua
new file mode 100644
index 0000000..f30e97e
--- /dev/null
+++ b/.vim/lua/color_palette.lua
@@ -0,0 +1,32 @@
+return {
+  normal = {
+    black   = '#080808', -- 00
+    red     = '#cb1b45', -- 01
+    green   = '#227d51', -- 02
+    yellow  = '#f7d94c', -- 03
+    blue    = '#005caf', -- 04
+    magenta = '#986db2', -- 05
+    cyan    = '#33a6b8', -- 06
+    white   = '#bdc0ba', -- 07
+  },
+  bright = {
+    black   = '#0c0c0c', -- 08
+    red     = '#db4d6d', -- 09
+    green   = '#5dac81', -- 11
+    yellow  = '#fad689', -- 12
+    blue    = '#7b90d2', -- 13
+    magenta = '#b28fce', -- 14
+    cyan    = '#a5dee4', -- 15
+    white   = '#fffffb', -- 16
+  },
+  dim = {
+    black   = '#080808',
+    red     = '#9f353a',
+    green   = '#0f4c3a',
+    yellow  = '#6c6024',
+    blue    = '#113285',
+    magenta = '#4a225d',
+    cyan    = '#0d5661',
+    white   = '#4f4f48',
+  },
+}
diff --git a/.vim/lua/color_palette.lua.in b/.vim/lua/color_palette.lua.in
new file mode 100644
index 0000000..4d3fe52
--- /dev/null
+++ b/.vim/lua/color_palette.lua.in
@@ -0,0 +1,32 @@
+return {
+  normal = {
+    black   = '{{ .normal_black }}',
+    red     = '{{ .normal_red }}',
+    green   = '{{ .normal_green }}',
+    yellow  = '{{ .normal_yellow }}',
+    blue    = '{{ .normal_blue }}',
+    magenta = '{{ .normal_magenta }}',
+    cyan    = '{{ .normal_cyan }}',
+    white   = '{{ .normal_white }}',
+  },
+  bright = {
+    black   = '{{ .bright_black }}',
+    red     = '{{ .bright_red }}',
+    green   = '{{ .bright_green }}',
+    yellow  = '{{ .bright_yellow }}',
+    blue    = '{{ .bright_blue }}',
+    magenta = '{{ .bright_magenta }}',
+    cyan    = '{{ .bright_cyan }}',
+    white   = '{{ .bright_white }}',
+  },
+  dim = {
+    black   = '{{ .dim_black }}',
+    red     = '{{ .dim_red }}',
+    green   = '{{ .dim_green }}',
+    yellow  = '{{ .dim_yellow }}',
+    blue    = '{{ .dim_blue }}',
+    magenta = '{{ .dim_magenta }}',
+    cyan    = '{{ .dim_cyan }}',
+    white   = '{{ .dim_white }}',
+  },
+}
diff --git a/.vim/lua/colors.lua b/.vim/lua/colors.lua
index ac6109f..32af6b2 100644
--- a/.vim/lua/colors.lua
+++ b/.vim/lua/colors.lua
@@ -1,207 +1,149 @@
-
 local lush = require('lush')
 local hsl = lush.hsl
-
-local p = {
-  normal = {
-    black   = '#080808', -- 00
-    red     = '#cb1b45', -- 01
-    green   = '#227d51', -- 02
-    yellow  = '#f7d94c', -- 03
-    blue    = '#005caf', -- 04
-    magenta = '#986db2', -- 05
-    cyan    = '#33a6b8', -- 06
-    white   = '#bdc0ba', -- 07
-  },
-  bright = {
-    black   = '#0c0c0c', -- 08
-    red     = '#db4d6d', -- 09
-    green   = '#5dac81', -- 11
-    yellow  = '#fad689', -- 12
-    blue    = '#7b90d2', -- 13
-    magenta = '#b28fce', -- 14
-    cyan    = '#a5dee4', -- 15
-    white   = '#fffffb', -- 16
-  },
-  dim = {
-    black   = '#080808',
-    red     = '#9f353a',
-    green   = '#0f4c3a',
-    yellow  = '#6c6024',
-    blue    = '#113285',
-    magenta = '#4a225d',
-    cyan    = '#0d5661',
-    white   = '#4f4f48',
-  },
-}
-
--- terminal buffer colors {{{
--- TODO just let it use the default, for now...
--- 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]
--- }}}
+local p = require('color_palette')
 
 return lush(function()
-	return {
-    None       { fg = 'none', bg = 'none', gui = 'none' },
-    Underlined { gui = 'underline' }, -- (preferred) text that stands out, HTML links
+  return {
     Bold       { gui = 'bold' },
     Italic     { gui = 'italic' },
+    None       { fg = 'none', bg = 'none', gui = 'none' },
     Reverse    { gui = 'reverse' },
+    Underlined { gui = 'underline' }, -- (preferred) text that stands out, HTML links
 
     ColorColumn  { bg = hsl(p.dim.white).darken(40) }, -- used for the columns set with 'colorcolumn'
     Conceal      { gui = 'none' }, -- placeholder characters substituted for concealed text (see 'conceallevel')
     Cursor       { Reverse }, -- character under the cursor
-    lCursor      { Cursor }, -- the character under the cursor when |language-mapping| is used (see 'guicursor')
     CursorIM     { Cursor }, -- like Cursor, but used when in IME mode |CursorIM|
+    TermCursor   { Cursor }, -- cursor in a focused terminal
+    TermCursorNC { Cursor }, -- cursor in an unfocused terminal
+    lCursor      { Cursor }, -- the character under the cursor when |language-mapping| is used (see 'guicursor')
     CursorColumn { ColorColumn }, -- Screen-column at the cursor, when 'cursorcolumn' is set.
     CursorLine   { ColorColumn }, -- Screen-line at the cursor, when 'cursorline' is set.  Low-priority if foreground (ctermfg OR guifg) is not set.
-    -- Directory    { }, -- directory names (and other special names in listings)
+    CursorLineNr { Cursor }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
     DiffAdd      { fg = hsl(p.bright.black), bg = hsl(p.bright.green) }, -- diff mode: Added line |diff.txt|
-    DiffChange   { fg = hsl(p.bright.black), bg = hsl(p.bright.cyan) }, -- diff mode: Changed line |diff.txt|
+    DiffChange   { fg = hsl(p.bright.black), bg = hsl(p.bright.cyan).darken(20) }, -- diff mode: Changed line |diff.txt|
     DiffDelete   { fg = hsl(p.bright.black), bg = hsl(p.bright.red) }, -- diff mode: Deleted line |diff.txt|
-    DiffText     { fg = hsl(p.normal.white) }, -- diff mode: Changed text within a changed line |diff.txt|
+    DiffText     { DiffChange }, -- diff mode: Changed text within a changed line |diff.txt|
+    -- Directory    { }, -- directory names (and other special names in listings)
     EndOfBuffer  { fg = hsl(p.bright.blue) }, -- filler lines (~) after the end of the buffer.  By default, this is highlighted like |hl-NonText|.
-    TermCursor   { Cursor }, -- cursor in a focused terminal
-    TermCursorNC { Cursor }, -- cursor in an unfocused terminal
     ErrorMsg     { Bold, fg = hsl(p.bright.white), bg = hsl(p.dim.red) }, -- error messages on the command line
-    VertSplit    { fg = hsl(p.dim.white), bg = 'none' }, -- the column separating vertically split windows
     Folded       { fg = hsl(p.bright.magenta), bg = 'none' }, -- line used for closed folds
     FoldColumn   { Folded }, -- 'foldcolumn'
-    SignColumn   { gui = 'none' }, -- column where |signs| are displayed
     Search       { Bold, fg = hsl(p.normal.black), bg = hsl(p.bright.white) }, -- Last search pattern highlighting (see 'hlsearch').  Also used for similar items that need to stand out.
     IncSearch    { Search }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
-    Substitute   { fg = hsl(p.normal.blue) }, -- |:substitute| replacement text highlighting
     LineNr       { fg = hsl(p.dim.white) }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
-    CursorLineNr { Cursor }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
     MatchParen   { fg = hsl(p.bright.white), bg = hsl(p.dim.black), gui = 'underline' }, -- The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt|
     ModeMsg      { fg = hsl(p.normal.yellow) }, -- 'showmode' message (e.g., "-- INSERT -- ")
+    MoreMsg      { fg = hsl(p.normal.cyan) }, -- |more-prompt|
     -- MsgArea      { }, -- Area for messages and cmdline
     -- MsgSeparator { }, -- Separator for scrolled messages, `msgsep` flag of 'display'
-    MoreMsg      { ModeMsg }, -- |more-prompt|
     NonText      { EndOfBuffer }, -- '@' at the end of the window, characters from 'showbreak' and other characters that do not really exist in the text (e.g., ">" displayed when a double-wide character doesn't fit at the end of the line). See also |hl-EndOfBuffer|.
     Normal       { fg = hsl(p.bright.white) }, -- normal text
-    NormalFloat  { Normal, bg = hsl(p.normal.black).lighten(6) }, -- Normal text in floating windows.
+    NormalFloat  { Normal, bg = hsl(p.dim.white) }, -- Normal text in floating windows.
     NormalNC     { Normal }, -- normal text in non-current windows
     Pmenu        { NormalFloat }, -- Popup menu: normal item.
-    PmenuSel     { Pmenu, gui = 'reverse' }, -- Popup menu: selected item.
     PmenuSbar    { bg = 'none' }, -- Popup menu: scrollbar.
+    PmenuSel     { Pmenu, gui = 'reverse' }, -- Popup menu: selected item.
     PmenuThumb   { bg = hsl(p.bright.white) }, -- Popup menu: Thumb of the scrollbar.
     Question     { fg = hsl(p.normal.green) }, -- |hit-enter| prompt and yes/no questions
     -- QuickFixLine { }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there.
+    SignColumn   { gui = 'none' }, -- column where |signs| are displayed
     SpecialKey   { fg = hsl(p.dim.white) }, -- Unprintable characters: text displayed differently from what it really is.  But not 'listchars' whitespace. |hl-Whitespace| SpellBad  Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise.  SpellCap  Word that should start with a capital. |spell| Combined with the highlighting used otherwise.  SpellLocal  Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise.
     -- SpellRare    { }, -- Word that is recognized by the spellchecker as one that is hardly ever used.  |spell| Combined with the highlighting used otherwise.
     StatusLine   { fg = hsl(p.bright.white), bg = 'none', gui = 'bold' }, -- status line of current window
     StatusLineNC { StatusLine, gui = 'none' }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window.
+    Substitute   { fg = hsl(p.normal.blue) }, -- |:substitute| replacement text highlighting
     TabLine      { fg = hsl(p.dim.white) }, -- tab pages line, not active tab page label
     TabLineFill  { StatusLineNC }, -- tab pages line, where there are no labels
     TabLineSel   { fg = hsl(p.bright.white), gui = 'bold' }, -- tab pages line, active tab page label
     Title        { fg = hsl(p.bright.blue) }, -- titles for output from ":set all", ":autocmd" etc.
+    VertSplit    { fg = hsl(p.dim.white), bg = 'none' }, -- the column separating vertically split windows
     Visual       { fg = hsl(p.bright.white), bg = hsl(p.normal.magenta) }, -- Visual mode selection
     VisualNOS    { Visual }, -- Visual mode selection when vim is "Not Owning the Selection".
     WarningMsg   { fg = hsl(p.normal.yellow) }, -- warning messages
     Whitespace   { fg = hsl(p.dim.white) }, -- "nbsp", "space", "tab" and "trail" in 'listchars'
     WildMenu     { bg = hsl(p.bright.black) }, -- current match in 'wildmenu' completion
 
+    Boolean        { fg = hsl(p.bright.red).lighten(20) }, --  a boolean constant: TRUE, false
     String         { fg = hsl(p.normal.yellow) }, --   a string constant: "this is a string"
     Character      { String }, --  a character constant: 'c', '\n'
-    Number         { fg = hsl(p.bright.red).lighten(20) }, --   a number constant: 234, 0xff
+    Number         { Boolean }, --   a number constant: 234, 0xff
     Float          { Number }, --    a floating point constant: 2.3e10
-    Boolean        { Number }, --  a boolean constant: TRUE, false
 
-    Constant       { Normal, gui = 'bold' }, -- (preferred) any constant
-    Identifier     { Normal }, -- (preferred) any variable name
-    Function       { Normal }, -- function name (also: methods for classes)
     Comment        { Italic, fg = hsl(p.dim.white).lighten(30) },
-
+    Macro          { fg = hsl(p.normal.cyan) }, --    same as Define
+    Constant       { gui = 'bold' }, -- (preferred) any constant
+    Special        { fg = hsl(p.normal.yellow) }, -- (preferred) any special symbol
+    SpecialComment { fg = hsl(p.bright.cyan), gui = 'italic' }, -- special things inside a comment
     Statement      { fg = hsl(p.bright.blue) }, -- (preferred) any statement
-    Keyword        { Statement }, --  any other keyword
+    Keyword        { fg = hsl(p.normal.green) }, --  any other keyword
+    Tag            { Special, gui = 'underline' }, --    you can use CTRL-] on this
+    Type           { fg = hsl(p.bright.green) }, -- (preferred) int, long, char, etc.
     Conditional    { Keyword }, --  if, then, else, endif, switch, etc.
-    Repeat         { Keyword }, --   for, do, while, etc.
+    Define         { Macro }, --   preprocessor #define
+    Delimiter      { Special }, --  character that needs attention
+    Exception      { Keyword }, --  try, catch, throw
+    Function       { Normal }, -- function name (also: methods for classes)
+    Identifier     { Normal }, -- (preferred) any variable name
+    Include        { Macro }, --  preprocessor #include
     Label          { Keyword }, --    case, default, etc.
     Operator       { Keyword }, -- "sizeof", "+", "*", etc.
-    Exception      { Keyword }, --  try, catch, throw
-
-    PreProc        { fg = hsl(p.normal.cyan) }, -- (preferred) generic Preprocessor
-    Include        { PreProc }, --  preprocessor #include
-    Define         { PreProc }, --   preprocessor #define
-    Macro          { PreProc }, --    same as Define
-    PreCondit      { PreProc }, --  preprocessor #if, #else, #endif, etc.
-
-    Type           { fg = hsl(p.bright.green) }, -- (preferred) int, long, char, etc.
+    PreCondit      { Macro }, --  preprocessor #if, #else, #endif, etc.
+    PreProc        { Macro }, -- (preferred) generic Preprocessor
+    Repeat         { Keyword }, --   for, do, while, etc.
+    SpecialChar    { Special }, --  special character in a constant
+    Typedef        { Type }, --  A typedef
     StorageClass   { Type }, -- static, register, volatile, etc.
     Structure      { Type }, --  struct, union, enum, etc.
-    Typedef        { Type }, --  A typedef
 
-    Special        { fg = hsl(p.normal.yellow) }, -- (preferred) any special symbol
-    SpecialChar    { Special }, --  special character in a constant
-    Tag            { Special, gui = 'underline' }, --    you can use CTRL-] on this
-    Delimiter      { Special }, --  character that needs attention
-    SpecialComment { fg = hsl(p.bright.cyan), gui = 'italic' }, -- special things inside a comment
     Debug          { Special }, --    debugging statements
-
-    -- Ignore         { }, -- (preferred) left blank, hidden  |hl-Ignore|
     Error          { Bold, fg = hsl(p.normal.red) }, -- (preferred) any erroneous construct
+    Ignore         { None }, -- (preferred) left blank, hidden  |hl-Ignore|
     Todo           { Bold, fg = hsl(p.bright.yellow) }, -- (preferred) anything that needs extra attention; mostly the keywords TODO FIXME and XXX
 
     -- Lang specific {{{
-    -- C {{{2
-    cType { Type, gui = 'bold' },
-    -- cFormat {},
-    -- cStorageClass { Bold },
-
-    cBoolean { Boolean, gui = 'bold' },
+    -- C {{{
+    -- cAnsiFunction { Bold },
+    -- cAnsiName {},
+    -- cBraces {},
     -- cCharacter {},
-    cConstant { Constant, gui = 'bold' },
     -- cConditional { Bold },
-    cSpecial { Bold },
+    -- cCustomFunc {},
+    -- cCustomParen {},
     -- cDefine {},
+    -- cDelimiter {},
+    -- cFormat {},
+    -- cFunction {},
+    -- cIdentifier {},
+    -- cLabel { fg = hsl(p.dim.black), bg = hsl(p.dim.red) },
     -- cNumber {},
+    -- cOctalZero { Bold },
+    -- cOperator {},
     -- cPreCondit {},
     -- cRepeat {},
-    -- cLabel { fg = hsl(p.dim.black), bg = hsl(p.dim.red) },
-    -- cAnsiFunction { Bold },
-    -- cAnsiName {},
-    -- cDelimiter {},
-    -- cBraces {},
-    -- cIdentifier {},
     -- cSemiColon {},
-    -- cOperator {},
     -- cStatement {},
+    -- cStorageClass { Bold },
     -- cTodo { Bold },
-    cStructure { Bold },
-    -- cCustomParen {},
-    -- cCustomFunc {},
     -- cUserFunction { Function, gui = 'bold' },
-    -- cOctalZero { Bold },
-    -- cFunction {},
-    -- }}}2
+    cBoolean { Boolean, gui = 'bold' },
+    cConstant { Constant, gui = 'bold' },
+    cSpecial { Bold },
+    cStructure { Bold },
+    cType { Type, gui = 'bold' },
+    -- }}}
 
-    -- Markdown {{{2
+    -- Markdown {{{
     -- mkdCode { markdownCode },
+    mkdBlockQuote { Comment },
+    mkdDelimiter { Delimiter },
+    mkdHeading { Title },
     mkdID { Constant },
-    mkdURL { Tag },
     mkdLink { Tag },
     mkdLinkTitle { bg = hsl('#ff0000') },
-    mkdDelimiter { Delimiter },
-    mkdBlockQuote { Comment },
     mkdListItem { Number },
-    mkdHeading { Title },
-    -- 2}}}
+    mkdURL { Tag },
+    -- }}}
     -- }}}
 
     -- LSP {{{
@@ -215,9 +157,9 @@ return lush(function()
     LspDiagnosticsVirtualTextWarning     { fg = LspDiagnosticsWarning.fg.darken(60) },
     LspDiagnosticsSignWarning            { LspDiagnosticsWarning },
 
-    LspDiagnosticsInformation            { fg = hsl(p.normal.blue).lighten(20) }, -- used for "Information" diagnostics
+    LspDiagnosticsInformation            { MoreMsg }, -- used for "Information" diagnostics
     LspDiagnosticsFloatingInformation    { LspDiagnosticsInformation },
-    LspDiagnosticsVirtualTextInformation { fg = LspDiagnosticsInformation.fg.darken(30) },
+    LspDiagnosticsVirtualTextInformation { fg = LspDiagnosticsInformation.fg.darken(20) },
     LspDiagnosticsSignInformation        { LspDiagnosticsInformation },
 
     LspDiagnosticsHint                   { fg = hsl(p.normal.white) }, -- used for "Hint" diagnostics
@@ -231,7 +173,7 @@ return lush(function()
     -- }}}
 
     -- TreeSitter {{{
-    -- TSError              { }, -- For syntax/parser errors.
+    TSError              { Error }, -- For syntax/parser errors.
     -- TSPunctDelimiter     { }, -- For delimiters ie: `.`
     -- TSPunctBracket       { }, -- For brackets and parens.
     -- TSPunctSpecial       { }, -- For special punctutation that does not fall in the catagories before.
@@ -281,14 +223,18 @@ return lush(function()
     IndentGuidesOdd { bg = hsl(p.bright.black) },
     IndentGuidesEven { bg = hsl(p.dim.white).darken(40) },
 
+    IndentBlanklineChar { fg = hsl(p.dim.white), gui = 'nocombine'},
+
+    -- signify {{{
     SignifyLineChange { DiffChange },
     SignifyLineAdd { DiffAdd },
     SignifyLineDelete { DiffDelete },
     SignifySignChange { fg = SignifyLineChange.bg },
     SignifySignAdd { fg = SignifyLineAdd.bg },
     SignifySignDelete { fg = SignifyLineDelete.bg },
+    -- }}}
 
-    -- git
+    -- git {{{
     gitcommitSummary { Bold },
     -- gitcommitHeader { Bold },
     -- gitcommitSelectedType {},
@@ -305,13 +251,34 @@ return lush(function()
     -- diffLine {},
     -- diffBDiffer {},
     -- diffNewFile {},
+    -- }}}
 
-    -- git-messenger
+    -- git-messenger {{{
     gitmessengerPopupNormal { CursorLine },
     gitmessengerHeader { Statement },
     gitmessengerHash { Special },
     gitmessengerHistory { Title },
     gitmessengerEmail { Comment },
+    -- }}}
+
+    -- nvim-lightbulb {{{
+    LightBulbFloatWin { LspDiagnosticsFloatingHint },
+    LightBulbVirtualText { LspDiagnosticsVirtualTextHint },
+    -- }}}
+
+    CompeDocumentation { NormalFloat },
+
+    -- startify {{{
+    StartifyBracket { fg = hsl(p.bright.blue) },
+    StartifyFile { fg = hsl(p.normal.red), gui = 'bold' },
+    StartifyNumber { fg = hsl(p.bright.blue).darken(20) },
+    StartifyPath { fg = hsl(p.normal.green).lighten(10) },
+    StartifySlash { fg = hsl(p.normal.white) },
+    StartifySection { fg = hsl(p.bright.yellow) },
+    StartifySpecial { fg = hsl(p.normal.red) },
+    StartifyHeader { fg = hsl(p.dim.white) },
+    StartifyFooter { fg = hsl(p.dim.white) },
+    -- }}}
 
     -- Plugin configs END }}}
 
@@ -320,7 +287,5 @@ return lush(function()
     StatusLineCommand { StatusLine },
     StatusLineVisual { Visual },
     StatusLineReplace { StatusLine },
-	}
+  }
 end)
-
--- vi:nowrap
diff --git a/.vim/lua/colors.lua.in b/.vim/lua/colors.lua.in
deleted file mode 100644
index caafa52..0000000
--- a/.vim/lua/colors.lua.in
+++ /dev/null
@@ -1,298 +0,0 @@
-
-local lush = require('lush')
-local hsl = lush.hsl
-
-local palette = {
-	normal = {
-		black   = '{{ .normal_black }}',
-		red     = '{{ .normal_red }}',
-		green   = '{{ .normal_green }}',
-		yellow  = '{{ .normal_yellow }}',
-		blue    = '{{ .normal_blue }}',
-		magenta = '{{ .normal_magenta }}',
-		cyan    = '{{ .normal_cyan }}',
-		white   = '{{ .normal_white }}',
-	},
-	bright = {
-		black   = '{{ .bright_black }}',
-		red     = '{{ .bright_red }}',
-		green   = '{{ .bright_green }}',
-		yellow  = '{{ .bright_yellow }}',
-		blue    = '{{ .bright_blue }}',
-		magenta = '{{ .bright_magenta }}',
-		cyan    = '{{ .bright_cyan }}',
-		white   = '{{ .bright_white }}',
-	},
-	dim = {
-		black   = '{{ .dim_black }}',
-		red     = '{{ .dim_red }}',
-		green   = '{{ .dim_green }}',
-		yellow  = '{{ .dim_yellow }}',
-		blue    = '{{ .dim_blue }}',
-		magenta = '{{ .dim_magenta }}',
-		cyan    = '{{ .dim_cyan }}',
-		white   = '{{ .dim_white }}',
-	},
-}
-
--- terminal buffer colors {{{
--- TODO just let it use the default, for now...
--- 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]
--- }}}
-
-return lush(function()
-	return {
-    Underlined { gui = 'underline' }, -- (preferred) text that stands out, HTML links
-    Bold       { gui = 'bold' },
-    Italic     { gui = 'italic' },
-    Reverse    { gui = 'reverse' },
-
-    ColorColumn  { bg = hsl(p.dim.white).darken(40) }, -- used for the columns set with 'colorcolumn'
-    -- Conceal      { }, -- placeholder characters substituted for concealed text (see 'conceallevel')
-    Cursor       { Reverse }, -- character under the cursor
-    lCursor      { Cursor }, -- the character under the cursor when |language-mapping| is used (see 'guicursor')
-    CursorIM     { Cursor }, -- like Cursor, but used when in IME mode |CursorIM|
-    CursorColumn { ColorColumn }, -- Screen-column at the cursor, when 'cursorcolumn' is set.
-    CursorLine   { ColorColumn }, -- Screen-line at the cursor, when 'cursorline' is set.  Low-priority if foreground (ctermfg OR guifg) is not set.
-    -- Directory    { }, -- directory names (and other special names in listings)
-    DiffAdd      { fg = hsl(p.bright.green) }, -- diff mode: Added line |diff.txt|
-    DiffChange   { fg = hsl(p.bright.cyan) }, -- diff mode: Changed line |diff.txt|
-    DiffDelete   { fg = hsl(p.bright.red) }, -- diff mode: Deleted line |diff.txt|
-    DiffText     { fg = hsl(p.normal.white) }, -- diff mode: Changed text within a changed line |diff.txt|
-    EndOfBuffer  { fg = hsl(p.bright.blue) }, -- filler lines (~) after the end of the buffer.  By default, this is highlighted like |hl-NonText|.
-    TermCursor   { Cursor }, -- cursor in a focused terminal
-    TermCursorNC { Cursor }, -- cursor in an unfocused terminal
-    ErrorMsg     { Bold, fg = hsl(p.bright.white), bg = hsl(p.dim.red) }, -- error messages on the command line
-    VertSplit    { fg = hsl(p.dim.magenta), bg = 'none' }, -- the column separating vertically split windows
-    Folded       { fg = hsl(p.bright.magenta), bg = 'none' }, -- line used for closed folds
-    FoldColumn   { Folded }, -- 'foldcolumn'
-    SignColumn   { gui = 'none' }, -- column where |signs| are displayed
-    Search       { Bold, fg = hsl(p.normal.black), bg = hsl(p.bright.white) }, -- Last search pattern highlighting (see 'hlsearch').  Also used for similar items that need to stand out.
-    IncSearch    { Search }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
-    Substitute   { fg = hsl(p.normal.blue) }, -- |:substitute| replacement text highlighting
-    LineNr       { fg = hsl(p.dim.white) }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
-    CursorLineNr { Cursor }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
-    MatchParen   { fg = hsl(p.bright.white), bg = hsl(p.dim.black) }, -- The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt|
-    ModeMsg      { fg = hsl(p.normal.yellow) }, -- 'showmode' message (e.g., "-- INSERT -- ")
-    -- MsgArea      { }, -- Area for messages and cmdline
-    -- MsgSeparator { }, -- Separator for scrolled messages, `msgsep` flag of 'display'
-    -- MoreMsg      { }, -- |more-prompt|
-    NonText      { EndOfBuffer }, -- '@' at the end of the window, characters from 'showbreak' and other characters that do not really exist in the text (e.g., ">" displayed when a double-wide character doesn't fit at the end of the line). See also |hl-EndOfBuffer|.
-    Normal       { fg = hsl(p.bright.white) }, -- normal text
-    NormalFloat  { Normal }, -- Normal text in floating windows.
-    NormalNC     { Normal }, -- normal text in non-current windows
-    Pmenu        { fg = hsl(p.bright.yellow), bg = hsl(p.normal.black) }, -- Popup menu: normal item.
-    PmenuSel     { Pmenu, gui = 'reverse' }, -- Popup menu: selected item.
-    PmenuSbar    { bg = 'none' }, -- Popup menu: scrollbar.
-    PmenuThumb   { bg = hsl(p.bright.white) }, -- Popup menu: Thumb of the scrollbar.
-    -- Question     { }, -- |hit-enter| prompt and yes/no questions
-    -- QuickFixLine { }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there.
-    -- SpecialKey   { }, -- Unprintable characters: text displayed differently from what it really is.  But not 'listchars' whitespace. |hl-Whitespace| SpellBad  Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise.  SpellCap  Word that should start with a capital. |spell| Combined with the highlighting used otherwise.  SpellLocal  Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise.
-    -- SpellRare    { }, -- Word that is recognized by the spellchecker as one that is hardly ever used.  |spell| Combined with the highlighting used otherwise.
-    StatusLine   { fg = hsl(p.normal.white), bg = hsl(p.normal.black) }, -- status line of current window
-    StatusLineNC { fg = hsl(p.dim.white) }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window.
-    TabLine      { StatusLine }, -- tab pages line, not active tab page label
-    TabLineFill  { gui = 'none' }, -- tab pages line, where there are no labels
-    -- TabLineSel   { }, -- tab pages line, active tab page label
-    -- Title        { }, -- titles for output from ":set all", ":autocmd" etc.
-    Visual       { fg = hsl(p.bright.white), bg = hsl(p.normal.magenta) }, -- Visual mode selection
-    VisualNOS    { Visual }, -- Visual mode selection when vim is "Not Owning the Selection".
-    WarningMsg   { fg = hsl(p.normal.yellow) }, -- warning messages
-    Whitespace   { fg = hsl(p.dim.white) }, -- "nbsp", "space", "tab" and "trail" in 'listchars'
-    WildMenu     { bg = hsl(p.bright.black) }, -- current match in 'wildmenu' completion
-
-    Constant       { fg = hsl(p.bright.yellow).darken(50) }, -- (preferred) any constant
-    String         { fg = hsl(p.normal.yellow) }, --   a string constant: "this is a string"
-    Character      { String }, --  a character constant: 'c', '\n'
-    Number         { fg = hsl(p.normal.cyan) }, --   a number constant: 234, 0xff
-    Float          { Number }, --    a floating point constant: 2.3e10
-    Boolean        { Number }, --  a boolean constant: TRUE, false
-
-    Identifier     { fg = hsl(p.bright.magenta) }, -- (preferred) any variable name
-    Function       { Identifier }, -- function name (also: methods for classes)
-    Comment        { Italic, fg = hsl(p.dim.white).lighten(30) },
-
-    Statement      { fg = hsl(p.normal.green) }, -- (preferred) any statement
-    Keyword        { fg = hsl(p.bright.blue) }, --  any other keyword
-    Conditional    { Keyword }, --  if, then, else, endif, switch, etc.
-    Repeat         { Keyword }, --   for, do, while, etc.
-    Label          { Keyword }, --    case, default, etc.
-    Operator       { Keyword }, -- "sizeof", "+", "*", etc.
-    Exception      { Keyword }, --  try, catch, throw
-
-    PreProc        { fg = hsl(p.normal.cyan) }, -- (preferred) generic Preprocessor
-    Include        { PreProc }, --  preprocessor #include
-    Define         { PreProc }, --   preprocessor #define
-    Macro          { PreProc }, --    same as Define
-    PreCondit      { PreProc }, --  preprocessor #if, #else, #endif, etc.
-
-    Type           { fg = hsl(p.bright.green) }, -- (preferred) int, long, char, etc.
-    StorageClass   { Type }, -- static, register, volatile, etc.
-    Structure      { Type }, --  struct, union, enum, etc.
-    Typedef        { Type }, --  A typedef
-
-    Special        { fg = hsl(p.normal.yellow) }, -- (preferred) any special symbol
-    SpecialChar    { Special }, --  special character in a constant
-    Tag            { Special }, --    you can use CTRL-] on this
-    Delimiter      { Special }, --  character that needs attention
-    SpecialComment { Special }, -- special things inside a comment
-    Debug          { Special }, --    debugging statements
-
-    -- Ignore         { }, -- (preferred) left blank, hidden  |hl-Ignore|
-    Error          { Bold, fg = hsl(p.normal.red) }, -- (preferred) any erroneous construct
-    Todo           { Italic, fg = hsl(p.normal.black), bg = hsl(p.bright.yellow) }, -- (preferred) anything that needs extra attention; mostly the keywords TODO FIXME and XXX
-
-    -- Lang specific {{{
-    -- C
-    cType { Type, gui = 'bold' },
-    -- cFormat {},
-    -- cStorageClass { Bold },
-
-    cBoolean { Boolean, gui = 'bold' },
-    -- cCharacter {},
-    cConstant { Constant, gui = 'bold' },
-    -- cConditional { Bold },
-    cSpecial { Bold },
-    -- cDefine {},
-    -- cNumber {},
-    -- cPreCondit {},
-    -- cRepeat {},
-    -- cLabel { fg = hsl(p.dim.black), bg = hsl(p.dim.red) },
-    -- cAnsiFunction { Bold },
-    -- cAnsiName {},
-    -- cDelimiter {},
-    -- cBraces {},
-    -- cIdentifier {},
-    -- cSemiColon {},
-    -- cOperator {},
-    -- cStatement {},
-    -- cTodo { Bold },
-    cStructure { Bold },
-    -- cCustomParen {},
-    -- cCustomFunc {},
-    -- cUserFunction { Function, gui = 'bold' },
-    -- cOctalZero { Bold },
-    -- cFunction {},
-    -- }}}
-
-    -- LSP {{{
-    LspDiagnosticsError                  { Error }, -- used for "Error" diagnostics
-    LspDiagnosticsFloatingError          { LspDiagnosticsError },
-    LspDiagnosticsVirtualTextError       { fg = LspDiagnosticsError.fg.darken(40) },
-    LspDiagnosticsSignError              { LspDiagnosticsError },
-
-    LspDiagnosticsWarning                { WarningMsg }, -- used for "Warning" diagnostics
-    LspDiagnosticsFloatingWarning        { LspDiagnosticsWarning },
-    LspDiagnosticsVirtualTextWarning     { fg = LspDiagnosticsWarning.fg.darken(60) },
-    LspDiagnosticsSignWarning            { LspDiagnosticsWarning },
-
-    LspDiagnosticsInformation            { fg = hsl(p.normal.blue).lighten(20) }, -- used for "Information" diagnostics
-    LspDiagnosticsFloatingInformation    { LspDiagnosticsInformation },
-    LspDiagnosticsVirtualTextInformation { fg = LspDiagnosticsInformation.fg.darken(30) },
-    LspDiagnosticsSignInformation        { LspDiagnosticsInformation },
-
-    LspDiagnosticsHint                   { fg = hsl(p.normal.green) }, -- used for "Hint" diagnostics
-    LspDiagnosticsFloatingHint           { LspDiagnosticsHint },
-    LspDiagnosticsVirtualTextHint        { fg = LspDiagnosticsHint.fg.darken(40) },
-    LspDiagnosticsSignHint               { LspDiagnosticsHint },
-
-    -- LspReferenceText                  { }, -- used for highlighting "text" references
-    -- LspReferenceRead                  { }, -- used for highlighting "read" references
-    -- LspReferenceWrite                 { }, -- used for highlighting "write" references
-    -- }}}
-
-    -- TreeSitter {{{
-    -- TSError              { }, -- For syntax/parser errors.
-    -- TSPunctDelimiter     { }, -- For delimiters ie: `.`
-    -- TSPunctBracket       { }, -- For brackets and parens.
-    -- TSPunctSpecial       { }, -- For special punctutation that does not fall in the catagories before.
-    -- TSConstant           { }, -- For constants
-    -- TSConstBuiltin       { }, -- For constant that are built in the language: `nil` in Lua.
-    -- TSConstMacro         { }, -- For constants that are defined by macros: `NULL` in C.
-    -- TSString             { }, -- For strings.
-    -- TSStringRegex        { }, -- For regexes.
-    -- TSStringEscape       { }, -- For escape characters within a string.
-    -- TSCharacter          { }, -- For characters.
-    -- TSNumber             { }, -- For integers.
-    -- TSBoolean            { }, -- For booleans.
-    -- TSFloat              { }, -- For floats.
-    -- TSFunction           { }, -- For function (calls and definitions).
-    -- TSFuncBuiltin        { }, -- For builtin functions: `table.insert` in Lua.
-    -- TSFuncMacro          { }, -- For macro defined fuctions (calls and definitions): each `macro_rules` in Rust.
-    -- TSParameter          { }, -- For parameters of a function.
-    -- TSParameterReference { }, -- For references to parameters of a function.
-    -- TSMethod             { }, -- For method calls and definitions.
-    -- TSField              { }, -- For fields.
-    -- TSProperty           { }, -- Same as `TSField`.
-    -- TSConstructor        { }, -- For constructor calls and definitions: `{ }` in Lua, and Java constructors.
-    -- TSConditional        { }, -- For keywords related to conditionnals.
-    -- TSRepeat             { }, -- For keywords related to loops.
-    -- TSLabel              { }, -- For labels: `label:` in C and `:label:` in Lua.
-    -- TSOperator           { }, -- For any operator: `+`, but also `->` and `*` in C.
-    -- TSKeyword            { }, -- For keywords that don't fall in previous categories.
-    -- TSKeywordFunction    { }, -- For keywords used to define a fuction.
-    -- TSException          { }, -- For exception related keywords.
-    -- TSType               { }, -- For types.
-    -- TSTypeBuiltin        { }, -- For builtin types (you guessed it, right ?).
-    -- TSNamespace          { }, -- For identifiers referring to modules and namespaces.
-    -- TSInclude            { }, -- For includes: `#include` in C, `use` or `extern crate` in Rust, or `require` in Lua.
-    -- TSAnnotation         { }, -- For C++/Dart attributes, annotations that can be attached to the code to denote some kind of meta information.
-    -- TSText               { }, -- For strings considered text in a markup language.
-    -- TSStrong             { }, -- For text to be represented with strong.
-    -- TSEmphasis           { }, -- For text to be represented with emphasis.
-    -- TSUnderline          { }, -- For text to be represented with an underline.
-    -- TSTitle              { }, -- Text that is part of a title.
-    -- TSLiteral            { }, -- Literal text.
-    -- TSURI                { }, -- Any URI like a link or email.
-    -- TSVariable           { }, -- Any variable name that does not have another highlight.
-    -- TSVariableBuiltin    { }, -- Variable names that are defined by the languages, like `this` or `self`.
-    -- }}}
-
-    -- Plugin configs {{{
-    IndentGuidesOdd { bg = hsl(p.bright.black) },
-    IndentGuidesEven { bg = hsl(p.dim.white).darken(40) },
-
-    SignifyLineChange { DiffChange },
-    SignifySignChange { SignifyLineChange },
-    SignifyLineAdd { DiffAdd },
-    SignifySignAdd { SignifyLineAdd },
-    SignifyLineDelete { DiffDelete },
-    SignifySignDelete { SignifyLineDelete },
-
-    -- git
-    gitcommitSummary { Bold },
-    -- gitcommitHeader { Bold },
-    -- gitcommitSelectedType {},
-    -- gitcommitSelectedFile {},
-    -- gitcommitUntrackedFile {},
-    -- gitcommitBranch {},
-    -- gitcommitDiscardedType {},
-    gitcommitDiff { fg = hsl(p.dim.white) },
-    diffFile { fg = hsl(p.bright.yellow) },
-    diffSubname { diffFile },
-    diffIndexLine { diffFile },
-    diffAdded { DiffAdd },
-    diffRemoved { DiffDelete },
-    -- diffLine {},
-    -- diffBDiffer {},
-    -- diffNewFile {},
-    -- }}}
-	}
-end)
-
--- vi:nowrap
diff --git a/.vim/lua/job.lua b/.vim/lua/job.lua
new file mode 100644
index 0000000..a3591e5
--- /dev/null
+++ b/.vim/lua/job.lua
@@ -0,0 +1,45 @@
+
+local M = {}
+
+function M.jobstart(cmd)
+  local output = {}
+
+  local function on_event(job_id, data, event)
+    if event == 'stdout' or event == 'stderr' then
+      if data then
+        vim.list_extend(output, data)
+      end
+    end
+    if event == 'exit' then
+      vim.fn.setqflist({}, ' ', {
+        title = cmd,
+        lines = output,
+      })
+      vim.api.nvim_command('doautocmd QuickFixCmdPost')
+    end
+  end
+
+  local job_id = require('spinner.job').jobstart(cmd, {
+    on_stdout = on_event,
+    on_stderr = on_event,
+    on_exit = on_event,
+    stdout_buffered = true,
+    stderr_buffered = true,
+  })
+  return job_id
+end
+
+function M.make(args)
+  local args = args or {}
+  local makeprg = vim.opt.makeprg:get()
+  local cmd = vim.split(vim.fn.expandcmd(makeprg), ' ')
+  table.foreach(args, function(_, v) table.insert(cmd, v) end)
+  return M.jobstart(cmd)
+end
+
+function M.sh(cmd)
+  local cmd = {vim.env.SHELL, '-c', cmd}
+  return M.jobstart(cmd)
+end
+
+return M
diff --git a/.vim/lua/lsp.lua b/.vim/lua/lsp.lua
new file mode 100644
index 0000000..0e5f736
--- /dev/null
+++ b/.vim/lua/lsp.lua
@@ -0,0 +1,168 @@
+local lsp        = require('lspconfig')
+local nnoremap   = require('astronauta.keymap').nnoremap
+local spinner_lsp= require('spinner.lsp')
+
+local my_attach = function(client, bufnr)
+  spinner_lsp.on_attach(client, bufnr)
+
+  -- lsp mappings
+  nnoremap { 'K'         , vim.lsp.buf.hover }
+  nnoremap { '<C-]>'     , vim.lsp.buf.definition }
+  nnoremap { 'gd'        , vim.lsp.buf.definition }
+  nnoremap { 'grr'       , vim.lsp.buf.rename }
+  nnoremap { '<c-h>'     , vim.lsp.buf.signature_help }
+  nnoremap { ']d'        , vim.lsp.diagnostic.goto_next }
+  nnoremap { '[d'        , vim.lsp.diagnostic.goto_prev }
+
+  nnoremap { '<leader>f' , vim.lsp.buf.formatting }
+  -- nnoremap { 'g0', vim.lsp.buf.document_symbol }
+  nnoremap { 'gR'        , vim.lsp.buf.references }
+  nnoremap { 'gW'        , vim.lsp.buf.workspace_symbol }
+  nnoremap { 'gD'        , vim.lsp.buf.declaration }
+  nnoremap { 'gT'        , vim.lsp.buf.type_definition }
+  nnoremap { 'gI'        , vim.lsp.buf.implementation }
+
+  -- nnoremap <silent> ;s <cmd> lua vim.lsp.buf.signature_help()<CR>
+  nnoremap { '<leader>d' , vim.lsp.diagnostic.show_line_diagnostics }
+
+  require('utils').augroup2 {
+    lsp_user = {
+      {'BufWritePre' , '*'    ,  'lua vim.lsp.buf.formatting_seq_sync(nil, 1000)'},
+      {'BufWritePre' , '*.go' ,  'lua vim.lsp.buf.code_action({ only = {"source.organizeImports"} })'},
+      {'CursorHold'  , '*'    ,  'lua vim.lsp.diagnostic.show_line_diagnostics()'},
+    }
+  }
+end
+
+local setup = function()
+  local caps = vim.lsp.protocol.make_client_capabilities()
+  -- enable lsp-based snippets
+  caps.textDocument.completion.completionItem.snippetSupport = true
+  caps.textDocument.completion.completionItem.resolveSupport = {
+    properties = {
+      'documentation',
+      'detail',
+      'additionalTextEdits',
+    }
+  }
+
+  spinner_lsp.setup()
+  spinner_lsp.init_capabilities(caps)
+
+  -- handler overwrites
+  -- configure builtin diagnositics
+  vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( -- {{{
+    vim.lsp.diagnostic.on_publish_diagnostics, {
+      virtual_text     = false,
+      signs            = true,
+      underline        = true,
+      update_in_insert = false,
+    }
+  )
+  -- }}}
+
+  -- overwrite codeAction handler to not ask for confirmation if only a single
+  -- action is given
+  vim.lsp.handlers["textDocument/codeAction"] = function(_, _, actions) -- {{{
+    if actions == nil or vim.tbl_isempty(actions) then
+      -- skip printing 'no code actions available'
+      return
+    end
+
+    local action_cosen
+    if #actions == 1 then
+      action_chosen = actions[1]
+    else
+      local option_strings = {"Code Actions:"}
+      for i, action in ipairs(actions) do
+        local title = action.title:gsub('\r\n', '\\r\\n')
+        title = title:gsub('\n', '\\n')
+        table.insert(option_strings, string.format("%d. %s", i, title))
+      end
+
+      local choice = vim.fn.inputlist(option_strings)
+      if choice < 1 or choice > #actions then
+        return
+      end
+      action_chosen = actions[choice]
+    end
+
+    if action_chosen.edit or type(action_chosen.command) == "table" then
+      if action_chosen.edit then
+        vim.lsp.util.apply_workspace_edit(action_chosen.edit)
+      end
+      if type(action_chosen.command) == "table" then
+        vim.lsp.buf.execute_command(action_chosen.command)
+      end
+    else
+      vim.lsp.buf.execute_command(action_chosen)
+    end
+  end
+  -- }}}
+
+  vim.fn.sign_define("LspDiagnosticsSignError", {text="⚡", numhl="Error"})
+  vim.fn.sign_define("LspDiagnosticsSignWarning", {text="⯈", numhl="Warning"})
+  vim.fn.sign_define("LspDiagnosticsSignInformation", {text="ℹ"})
+  vim.fn.sign_define("LspDiagnosticsSignHint", {text="🞶"})
+
+  -- lsp.ccls.setup {
+  --  on_attach = my_attach,
+  --  capabilities = caps,
+  -- }
+
+  lsp.gopls.setup {
+    on_attach = my_attach,
+    capabilities = caps,
+    settings = {
+      gopls = {
+        -- analyses = {
+        --  composites = false
+        -- },
+        codelenses = {
+          test = true,
+          tidy = true,
+        },
+        gofumpt = true,
+      }
+    }
+  }
+
+  lsp.sumneko_lua.setup {
+    on_attach = my_attach,
+    capabilities = caps,
+    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 {
+    on_attach = my_attach,
+    capabilities = caps,
+    cmd = { 'env', 'CARGO_TARGET_DIR=/tmp', 'rust-analyzer' },
+  }
+
+  lsp.zls.setup {
+    on_attach = my_attach,
+    capabilities = caps,
+  }
+
+end
+
+return {
+  my_attach = my_attach,
+  setup = setup
+}
diff --git a/.vim/lua/misc.lua b/.vim/lua/misc.lua
index 4f2b9dc..0067efb 100644
--- a/.vim/lua/misc.lua
+++ b/.vim/lua/misc.lua
@@ -31,4 +31,30 @@ function M.open_under_cursor(cmd)
   end)
 end
 
+function get_visual_selection()
+  pos1 = vim.fn.getpos("'<")
+  ln1, col1 = pos1[2], pos1[3]
+  pos2 = vim.fn.getpos("'>")
+  ln2, col2 = pos2[2], pos2[3]
+  lines = vim.fn.getline(ln1, ln2)
+  if vim.opt.selection:get() == 'inclusive' then
+    lines[#lines] = lines[#lines]:sub(1,col2)
+  else
+    lines[#lines] = lines[#lines]:sub(1,col2-1)
+  end
+  lines[1] = lines[1]:sub(col1)
+  return pos1, pos2, lines
+end
+
+function M.sort_line()
+  local fn = vim.fn
+  pos1, pos2, lines = get_visual_selection()
+  for i=1, #lines do
+    local ln = pos1[2] + (i-1)
+    local line = fn.join(fn.sort(fn.split(lines[i], " ")))
+    line = fn.substitute(fn.getline(ln), lines[i], line, "")
+    vim.fn.setline(ln, line)
+  end
+end
+
 return M
diff --git a/.vim/lua/plugins.lua b/.vim/lua/plugins.lua
index f5f9a37..cb8bdb1 100644
--- a/.vim/lua/plugins.lua
+++ b/.vim/lua/plugins.lua
@@ -1,14 +1,22 @@
+-- vim: foldenable
 -- load by calling `lua require('plugins')` from your init.vim
 local g = vim.g
 local u = require('utils')
 
--- local install_path = fn.stdpath('data') .. '/site/pack/packer/opt/packer.nvim'
--- if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
---   vim.fn.system({ 'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path })
---   vim.api.nvim_command 'packadd packer.nvim'
--- end
+-- force packer into a system directory
+local sysdata = vim.fn.stdpath('data_dirs')[1]
 
-function disable_distribution_plugins()
+local install_path = sysdata .. '/site/pack/packer/start/packer.nvim'
+if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
+  vim.fn.system({ 'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path })
+  vim.api.nvim_command 'packadd packer.nvim'
+end
+
+if not vim.fn.filewritable(vim.fn.stdpath('cache')) == 2 then
+  return
+end
+
+function disable_distribution_plugins() --{{{
   g.loaded_gzip              = 1
   g.loaded_tar               = 1
   g.loaded_tarPlugin         = 1
@@ -27,12 +35,9 @@ function disable_distribution_plugins()
   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
--- vim.cmd [[packadd packer.nvim]]
+end -- }}}
 
-return require'packer'.startup(function()
+return require('packer').startup({function()
   -- disable built-in plugins
   disable_distribution_plugins()
 
@@ -40,119 +45,388 @@ return require'packer'.startup(function()
   use {'wbthomason/packer.nvim'}
 
   -- git status in the sign column
-  use {'mhinz/vim-signify',
-    config = "require('plugins._signify')"
-  }
+  use {'mhinz/vim-signify', -- {{{
+    config = function()
+      local nnoremap = require('astronauta.keymap').nnoremap
+
+      vim.g.signify_sign_change = '~'
+
+      nnoremap { ']h', function() vim.fn['sy#jump#next_hunk'](1) end }
+      nnoremap { '[h', function() vim.fn['sy#jump#prev_hunk'](1) end }
+    end} -- }}}
 
   use {'tpope/vim-commentary'}   -- auto-comment using `gcc`
-  use {'cohama/lexima.vim'}      -- auto-close parens, brackets, etc.
+
+  use {'windwp/nvim-autopairs',
+    config = function()
+      require('nvim-autopairs').setup()
+    end}
+
   use {'tpope/vim-surround'}     -- edit surroundings in pairs
-  -- use {'neomake/neomake'}        -- async job runner
-  use {'sbdchd/neoformat'}       -- async code formatter
+
   use {'justinmk/vim-dirvish'}   -- folder browser
-  use {'justinmk/vim-sneak',
-    config = "vim.g['sneak#label'] = true"
-  }
+
+  use {'ggandor/lightspeed.nvim'}
+
+  use {'jose-elias-alvarez/null-ls.nvim', -- {{{
+    requires = {'nvim-lua/plenary.nvim'},
+    config = function()
+      local nls = require('null-ls')
+      nls.config {
+        sources = {
+          nls.builtins.formatting.clang_format, -- c*
+          nls.builtins.formatting.gofumpt, -- go
+          nls.builtins.formatting.json_tool, -- json
+          nls.builtins.formatting.rustfmt, -- rust
+          nls.builtins.formatting.shfmt, -- *sh
+          nls.builtins.formatting.yapf, -- python
+          nls.builtins.diagnostics.shellcheck, -- *sh
+        }
+      }
+
+      require('lspconfig')['null-ls'].setup {
+        on_attach = require('lsp').my_attach
+      }
+    end} -- }}}
 
   use {'neovim/nvim-lspconfig',
-    requires = {
-      {'kosayoda/nvim-lightbulb', config = "require('plugins._lightbulb')"},
-    },
-    config = "require('plugins._lsp')"
-  }
+    requires = {'~/devel/projects/spinner.nvim'},
+    config = function()
+      require('lsp').setup()
+    end}
+
+  use {'kosayoda/nvim-lightbulb', -- {{{
+    config = function()
+      require('nvim-lightbulb').update_lightbulb {
+        sign = {
+          enabled = true,
+          priority = 10,
+        },
+        float = {
+          enabled = true,
+          text = '󱉵 ',
+          win_opts = {},
+        },
+        virtual_text = {
+          enabled = false,
+          text = '󱉵 ',
+        },
+        status_text = {
+          enabled = false,
+        }
+      }
+
+      vim.fn.sign_define('LightBulbSign', {text="⚐", texthl="LightBulbVirtualText"})
 
-  use {'nvim-treesitter/nvim-treesitter',
+      require('utils').augroup2 {
+        lightbulb = {
+          {'CursorHold', '*', "lua require('nvim-lightbulb').update_lightbulb()"}
+        }
+      }
+    end} -- }}}
+
+  use {'nvim-treesitter/nvim-treesitter', -- {{{
+    run = ':TSUpdate',
     requires = {
       'nvim-treesitter/completion-treesitter',
       'nvim-treesitter/nvim-treesitter-refactor',
     },
-    config = "require('plugins._treesitter')",
-    run = ':TSUpdate',
-  }
+    config = function()
+      require('nvim-treesitter.configs').setup {
+        ensure_installed = { 
+          "bash",
+          "c",
+          "c_sharp",
+          "css",
+          "dockerfile",
+          "html",
+          "go", "gomod",
+          "javascript",
+          "ledger",
+          "lua",
+          "rust",
+          "typescript",
+        },
+        highlight = {
+          enable = false,
+        },
+        indent = {
+          enable = true,
+        },
+        refactor = {
+          navigation = {
+            enable = true,
+            keymaps = {
+              goto_definition = "<c-]>",
+            },
+          },
+          smart_rename = {
+            enable = true,
+            keymaps = {
+              smart_rename = "grr",
+            },
+          },
+        },
+      }
+    end} -- }}}
 
-  use {'nvim-lua/completion-nvim',
-    requires = {'steelsojka/completion-buffers'},
-    config = "require('plugins._completion')",
-  }
+  use {'hrsh7th/nvim-compe', -- {{{
+    -- requires nvim-autopairs
+    config = function()
+      require('compe').setup {
+        enabled = true,
+        autocomplete = true,
+        preselect = 'enable',
+        documentation = {
+          border = 'single',
+        },
+        source = {
+          path = true,
+          buffer = true,
+          tags = true,
+          nvim_lsp = true,
+          nvim_lua = true,
+          orgmode = true,
+          ultisnips = true,
+        }
+      }
 
-  -- use {'hrsh7th/nvim-compe',
-  --   config = "require('plugins._compe')",
-  -- }
+      vim.cmd [[
+        inoremap <silent><expr> <c-space> compe#complete()
+        inoremap <silent><expr> <c-e>     compe#close('<c-e>')
+      ]]
+
+      require('nvim-autopairs.completion.compe').setup {
+        map_cr = true,
+        map_complete = true,
+      }
+    end} -- }}}
 
-  use {'nvim-telescope/telescope.nvim',
+  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')"
-  }
+    config = function()
+      local nnoremap = require('astronauta.keymap').nnoremap
+
+      require('telescope').setup{
+        defaults = {
+          -- initial_mode = 'input',
+          prompt_prefix = '> ',
+          selection_caret = '* ',
+
+          sorting_strategy = 'ascending',
+
+          preview_title = '',
+          layout_strategy = 'bottom_pane',
+          layout_config = {
+            preview_cutoff = 1,
+            height = 20,
+          },
+          border = true,
+          borderchars = {
+            'z',
+            prompt = { '─', ' ', ' ', ' ', '─', '─', ' ', ' ' },
+            results = { ' ' },
+            -- results = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' },
+            preview = { '─', '│', '─', '│', '┌', '┐', '┘', '└'},
+
+            -- "center"
+            -- { '─', '│', '─', '│', '┌', '┐', '┘', '└'},
+            -- prompt = {'─', '│', ' ', '│', '┌', '┐', '│', '│'},
+            -- results = {'─', '│', '─', '│', '├', '┤', '┘', '└'},
+            -- preview = { '─', '│', '─', '│', '┌', '┐', '┘', '└'},
+          },
+
+          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,
+            }
+          }
+        }
+      }
+
+      nnoremap { ';q', require('telescope.builtin').quickfix }
+      nnoremap { ';c', require('telescope.builtin').loclist }
+
+      nnoremap { ';g', require('telescope').extensions.fzf_writer.staged_grep }
+      nnoremap { ';f', require('telescope.builtin').fd }
+      nnoremap { ';l', require('telescope.builtin').current_buffer_fuzzy_find }
+      nnoremap { ';w', require('telescope.builtin').file_browser }
+      nnoremap { ';b', require('telescope.builtin').buffers }
+      nnoremap { ';t', require('telescope.builtin').tags }
+      nnoremap { ';h', require('telescope.builtin').command_history }
+      nnoremap { ';H', require('telescope.builtin').help_tags }
+      nnoremap { ';c', require('telescope.builtin').commands }
+
+      nnoremap { ';v', function()
+          require('telescope.builtin').find_files({
+            prompt_title = 'vimrc',
+            previewer = false,
+            cwd = vim.fn.stdpath('config'),
+          })
+        end }
+
+      -- LSP stuff
+      nnoremap { ';a', require('telescope.builtin').lsp_code_actions }
+      nnoremap { ';0', require('telescope.builtin').lsp_document_symbols }
+      nnoremap { ';r', require('telescope.builtin').lsp_references }
+    end} -- }}}
 
   -- polyfill for some missing stuff
   use {'tjdevries/astronauta.nvim'}
 
   -- snippets
-  use {'SirVer/ultisnips',
+  use {'SirVer/ultisnips', -- {{{
     requires = {'honza/vim-snippets'},
-    config = "require('plugins._ultisnips')"
-  }
+    config = function()
+      vim.g.UltiSnipsJumpForwardTrigger = "<tab>"
+      vim.g.UltiSnipsJumpBackwardTrigger = "<s-tab>"
+    end} -- }}}
+
+  -- use {'L3MON4D3/LuaSnip',
+  --   config = "require('plugins._ultisnips')",
+  -- }
 
   use {'junegunn/vim-easy-align'}
 
-  use {'editorconfig/editorconfig-vim',
-    config = "require('plugins._editorconfig')"
-  }
-  -- use {'tpope/vim-sleuth'}                -- detect indentation
-  use {'nathanaelkane/vim-indent-guides',
-    disable = true,
-    config = "require('plugins._indent-guides')"
-  }
+  use {'editorconfig/editorconfig-vim', -- {{{
+    config = function()
+      require('utils').augroup2 {
+        editorconfig = {
+          { 'FileType', 'gitcommit', 'let b:EditorConfig_disable = 1' },
+        }
+      }
+    end} -- }}}
 
-  use {'tpope/vim-repeat'}                -- extend '.' to plugins
-  use {'michaeljsmith/vim-indent-object'} -- adds indentation text-objects
-  use {'kshenoy/vim-signature', disable = true}           -- toggle, display and navigate marks
-  use {'norcalli/nvim-colorizer.lua',
-    config = "require('plugins._colorizer')"
-  }
+  use {'lukas-reineke/indent-blankline.nvim',
+    config = function()
+      vim.g.indent_blankline_char = '▏'
+    end}
 
-  use {'rhysd/git-messenger.vim',
-    config = "require('plugins._git-messenger')"
-  }
+  use {'tpope/vim-repeat'} -- extend '.' to plugins
+  use {'michaeljsmith/vim-indent-object'} -- indentation text-objects
+  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 {'TimUntersberger/neogit'}
+  use {'rhysd/git-messenger.vim', -- {{{
+    config = function()
+      -- vim.g.git_messenger_include_diff = false
+      vim.g.git_messenger_always_into_popup = true
+      vim.g.git_messenger_close_on_cursor_moved = true
+      vim.g.git_messenger_no_default_mappings = true
+    end} -- }}}
 
+  -- use {'TimUntersberger/neogit',
+  --   config = "require('astronauta.keymap').nnoremap { '<leader>gg', function() require('neogit').open({ kind = 'split' }) end }"
+  -- }
+
+  use {'liuchengxu/vista.vim'}
   use {'rhysd/conflict-marker.vim', disable = true}
-  -- use {'liuchengxu/vista.vim'}            -- sidebar populated by lsp, ctags, etc.
   use {'kassio/neoterm', disable = true}
 
   -- zettelkasten via neuron
-  -- NOTE: needs telescope.nvim and plenary.nvim
-  use {'oberblastmeister/neuron.nvim',
+  use {'oberblastmeister/neuron.nvim', -- {{{
     branch = 'unstable',
     requires = {'nvim-telescope/telescope.nvim'},
-    config = "require('.plugins._neuron')"
-  }
+    config = function()
+      require('neuron').setup {
+        virtual_titles = true,
+        mappings = true,
+        run = nil,
+        neuron_dir = "~/.zk",
+        leader = "gz",
+      }
+
+      vim.cmd [[ command! NeuronServe lua require('neuron').rib {address = "127.0.0.1:8200", verbose = true} ]]
+      vim.cmd [[ command! NeuronZettels lua require('neuron.telescope').find_zettels {insert = false} ]]
+      vim.cmd [[ command! NeuronZettelsInsert lua require('neuron.telescope').find_zettels {insert = true} ]]
+      vim.cmd [[ command! NeuronTags lua require('neuron.telescope').find_tags() ]]
+    end} -- }}}
+
+  use {'kristijanhusak/orgmode.nvim', -- {{{
+    config = function()
+      local nnoremap = require('astronauta.keymap').nnoremap
+
+      require('orgmode').setup {
+        org_agenda_files = {'$HOME/.zk/.orgmode/*.org'},
+        org_default_notes_file = '$HOME/.zk/.orgmode/todo.org',
+      }
+
+      local pickers = require('telescope.pickers')
+      local finders = require('telescope.finders')
+
+      nnoremap { ';o', function()
+          pickers.new(opts, {
+            prompt_title = 'Orgmode',
+            finder = finders.new_table(require('orgmode.config'):get_all_files()),
+          }):find()
+        end }
+
+      vim.cmd [[ command! Orgmode lua require('orgmode').action('agenda.prompt') ]]
+      vim.cmd [[ command! OrgmodeCapture lua require('orgmode').action('capture.refile') ]]
+      vim.cmd [[ command! OrgmodeInsert lua require('orgmode').action('org_mappings.insert_heading_respect_content') ]]
+      vim.cmd [[ command! OrgmodeTodoCycle lua require('orgmode').action('org_mappings.todo_next_state') ]]
+      vim.cmd [[ command! OrgmodeTag lua require('orgmode').action('org_mappings.set_tags') ]]
+      vim.cmd [[ command! OrgmodeArchive lua require('orgmode').action('org_mappings.toggle_archive_tag') ]]
+    end} -- }}}
 
   -- languages
   -- NOTE: these should only be loaded when they are required...
   -- use {'rhysd/vim-grammarous',
   --  ft = {'markdown', 'latex', 'tex'}
   -- }
-  use {'lervag/vimtex',
+  use {'lervag/vimtex', -- {{{
     ft = {'latex', 'tex'},
-    config = "require('plugins._vimtex')"
-  }
-  use {'plasticboy/vim-markdown',
+    config = function()
+      vim.g.tex_flavor = 'latex'
+      vim.g.vimtex_compiler_enabled = 0
+      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
+    end} -- }}}
+
+  use {'plasticboy/vim-markdown', -- {{{
     ft = {'markdown'},
-    config = "require('plugins._markdown')"
-  }
-  use {'masukomi/vim-markdown-folding',
-    ft = {'markdown'}
-  }
-  use {'jjo/vim-cue',
-    ft = {'cue'}
-  }
+    config = function()
+      vim.g.vim_markdown_folding_disabled = true
+      vim.g.vim_markdown_math = true
+      vim.g.vim_markdown_frontmatter = true
+      vim.g.vim_markdown_json_frontmatter = true
+      vim.g.vim_markdown_toml_frontmatter = true
+      vim.g.vim_markdown_yaml_frontmatter = true
+      -- vim.g.vim_markdown_folding_level = 2
+      vim.g.vim_markdown_strikethrough = true
+      vim.g.vim_markdown_auto_insert_bullets = true
+      vim.g.vim_markdown_new_list_item_indent = false
+      vim.g.vim_markdown_conceal = true
+      vim.g.vim_markdown_conceal_code_blocks = true
+    end} -- }}}
+
+  use {'masukomi/vim-markdown-folding', ft = {'markdown'}}
+  use {'jjo/vim-cue', ft = {'cue'}}
   use {'gentoo/gentoo-syntax'}
 
   -- multi-language support with lazy loading
@@ -160,22 +434,53 @@ return require'packer'.startup(function()
   g.polyglot_disabled = { 'autoindent' }
   use {'sheerun/vim-polyglot'}
 
-  -- minimal ux
-  use {'junegunn/goyo.vim',
-    cmd = 'Goyo',
-    config = "require('plugins._goyo')"
-  }
-  use {'junegunn/limelight.vim',
-    cmd = 'Limelight',
-    config = "require('plugins._limelight')"
-  }
+  use {'folke/zen-mode.nvim', -- {{{
+    config = function()
+      require('zen-mode').setup {
+        window = {
+          backdrop = 1,
+          width = 0.3,
+          -- height = 1,
+          options = {
+            number = false,
+            list = false,
+          },
+        },
+        plugins = {
+          options = {
+            enabled = true,
+            ruler = false,
+            showcmd = false,
+          },
+          twilight = { enabled = true },
+        }
+      }
+    end} -- }}}
 
-  use {'rktjmp/lush.nvim',}
-    -- config="require('colors')"}
+  use {'folke/twilight.nvim', -- {{{
+    config = function()
+      require('twilight').setup {
+        context = 15,
+        dimming = {
+          alpha = 0.3,
+          color = { 'Normal', '#ffffff' },
+        },
+      }
+    end} -- }}}
 
-  -- vim config debugging
-  use {'dstein64/vim-startuptime', disable = true}
+  use {'mhinz/vim-startify', -- {{{
+    config = function()
+      require('utils').augroup2 {
+        startify = {{ 'FileType', 'startify', [[ IndentBlanklineDisable ]] }}
+      }
+    end} -- }}}
+
+  use {'rktjmp/lush.nvim'}
 
   -- local
   use {'~/devel/upstream/github.com/knsh14/vim-github-link'}
-end)
+
+end,
+config = {
+  package_root = require('packer.util').join_paths(sysdata, 'site', 'pack'),
+}})
diff --git a/.vim/lua/plugins/_colorizer.lua b/.vim/lua/plugins/_colorizer.lua
deleted file mode 100644
index 7b6f678..0000000
--- a/.vim/lua/plugins/_colorizer.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100644
index 5497c4b..0000000
--- a/.vim/lua/plugins/_completion.lua
+++ /dev/null
@@ -1,53 +0,0 @@
-local g = vim.g
-local u = require('utils')
-local inoremap = require('astronauta.keymap').inoremap
-
-g.completion_enable_auto_popup = true
-g.completion_enable_auto_signature = true
-g.completion_enable_auto_paren = false
-g.completion_enable_auto_hover = true
-g.completion_trigger_on_delete = true
-g.completion_confirm_key = '<cr>'
-g.completion_enable_snippet = 'UltiSnips'
--- g.completion_matching_ignore_case = false
-g.completion_matching_smart_case = true
-g.completion_matching_strategy_list = {'exact', 'substring', 'fuzzy', 'all'}
-g.completion_sorting = 'length' -- or: alphabet, none
-
-g.completion_auto_change_source = true
-g.completion_chain_complete_list = {
-  {complete_items = {'lsp', 'snippet', 'path', 'buffers', 'ts'}},
-  -- {mode = '<c-p>'},
-  -- {mode = '<c-n>'},
-  {mode = 'file'},
-  {mode = 'spel'},
-}
-
-u.augroup2 {
-  completion_user = {{'BufEnter', '*', 'lua require("completion").on_attach()'}}
-}
-
-inoremap { '<tab>', require('completion').smart_tab}
-inoremap { '<s-tab>', require('completion').smart_s_tab }
-inoremap { '<c-j>', require('completion.source').nextCompletion }
-inoremap { '<c-k>', require('completion.source').prevCompletion }
-
--- inoremap { '<c-n>', function()
---   if vim.fn.pumvisible() == 1 then
---     vim.api.nvim_feedkeys('<c-n>')
---   else
---     require('completion').triggerCompletion()
---   end
--- end }
-
--- inoremap { '<c-p>', function()
---   if vim.fn.pumvisible() == 1 then
---     vim.api.nvim_feedkeys('<c-p>')
---   else
---     require('completion').triggerCompletion()
---   end
--- end }
-
--- require('utils').map('i', '<C-n>', 'pumvisible() ? "\\<C-n>" : completion#trigger_completion()', { expr = true })
--- require('utils').map('i', '<C-p>', 'pumvisible() ? "\\<C-p>" : completion#trigger_completion()', { expr = true })
-
diff --git a/.vim/lua/plugins/_git-messenger.lua b/.vim/lua/plugins/_git-messenger.lua
deleted file mode 100644
index dceadeb..0000000
--- a/.vim/lua/plugins/_git-messenger.lua
+++ /dev/null
@@ -1,4 +0,0 @@
--- vim.g.git_messenger_include_diff = false
-vim.g.git_messenger_always_into_popup = true
-vim.g.git_messenger_close_on_cursor_moved = true
-vim.g.git_messenger_no_default_mappings = true
diff --git a/.vim/lua/plugins/_goyo.lua b/.vim/lua/plugins/_goyo.lua
deleted file mode 100644
index 538712d..0000000
--- a/.vim/lua/plugins/_goyo.lua
+++ /dev/null
@@ -1,12 +0,0 @@
-vim.g.goyo_width = 120
-vim.g.goyo_height = 90
-vim.g.goyo_linenr = false
-
-require('utils').augroup2 {
-  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
deleted file mode 100644
index eb3c4aa..0000000
--- a/.vim/lua/plugins/_indent-guides.lua
+++ /dev/null
@@ -1,4 +0,0 @@
-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/_lightbulb.lua b/.vim/lua/plugins/_lightbulb.lua
deleted file mode 100644
index cc3f941..0000000
--- a/.vim/lua/plugins/_lightbulb.lua
+++ /dev/null
@@ -1,19 +0,0 @@
-
-require('nvim-lightbulb').update_lightbulb {
-  sign = {
-    enabled = true,
-    priority = 10,
-  },
-  float = {
-    enabled = true,
-    text = '󱉵',
-    win_opts = {},
-  },
-  virtual_test = {
-    enabled = false
-  }
-}
-
-require('utils').augroup('lightbulb', {
-  {'CursorHold,CursorHoldI', '*', "lua require'nvim-lightbulb'.update_lightbulb()"}
-})
diff --git a/.vim/lua/plugins/_limelight.lua b/.vim/lua/plugins/_limelight.lua
deleted file mode 100644
index b77fdfc..0000000
--- a/.vim/lua/plugins/_limelight.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-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/plugins/_lsp.lua b/.vim/lua/plugins/_lsp.lua
deleted file mode 100644
index 39a10b9..0000000
--- a/.vim/lua/plugins/_lsp.lua
+++ /dev/null
@@ -1,176 +0,0 @@
--- lsp config
-
-local lsp      = require('lspconfig')
-local util     = require('lspconfig.util')
-local u        = require('utils')
-local nnoremap = require('astronauta.keymap').nnoremap
-
-local M = {}
-local my_attach = function(client)
-  -- attach completion
-  require 'completion'.on_attach(client)
-
-  -- lsp mappings
-  nnoremap { 'K'         , vim.lsp.buf.hover }
-  nnoremap { '<C-]>'     , vim.lsp.buf.definition }
-  nnoremap { 'gd'        , vim.lsp.buf.definition }
-  nnoremap { 'grr'       , vim.lsp.buf.rename }
-  nnoremap { '<c-h>'     , vim.lsp.buf.signature_help }
-  nnoremap { ']d'        , vim.lsp.diagnostic.goto_next }
-  nnoremap { '[d'        , vim.lsp.diagnostic.goto_prev }
-
-  nnoremap { '<leader>f' , vim.lsp.buf.formatting }
-  -- nnoremap { 'g0', vim.lsp.buf.document_symbol }
-  nnoremap { 'gR'        , vim.lsp.buf.references }
-  nnoremap { 'gW'        , vim.lsp.buf.workspace_symbol }
-  nnoremap { 'gD'        , vim.lsp.buf.declaration }
-  nnoremap { 'gT'        , vim.lsp.buf.type_definition }
-  nnoremap { 'gI'        , vim.lsp.buf.implementation }
-
-  -- nnoremap <silent> ;s <cmd> lua vim.lsp.buf.signature_help()<CR>
-  nnoremap { '<leader>d' , vim.lsp.diagnostic.show_line_diagnostics }
-
-  u.augroup2 {
-    lsp_user = {
-      {'BufWritePre' , '*'    ,  'lua vim.lsp.buf.formatting_sync(nil, 1000)'},
-      {'BufWritePre' , '*.go' ,  'lua vim.lsp.buf.code_action({ source = { organizeImports = true } })'},
-      -- {'CursorHold'  , '*'    ,  'lua vim.lsp.diagnostic.show_line_diagnostics()'},
-    }
-  }
-end
-
--- handler overwrites
--- configure builtin diagnositcs
-vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( -- {{{
-  vim.lsp.diagnostic.on_publish_diagnostics, {
-    virtual_text     = false,
-    signs            = true,
-    underline        = true,
-    update_in_insert = false,
-  }
-)
--- }}}
-
--- overwrite codeAction handler to not ask for confirmation if only a single
--- action is given
-vim.lsp.handlers["textDocument/codeAction"] = function(_, _, actions) -- {{{
-  if actions == nil or vim.tbl_isempty(actions) then
-    -- skip printing 'no code actions available'
-    return
-  end
-
-  local action_cosen
-  if #actions == 1 then
-    action_chosen = actions[1]
-  else
-    local option_strings = {"Code Actions:"}
-    for i, action in ipairs(actions) do
-      local title = action.title:gsub('\r\n', '\\r\\n')
-      title = title:gsub('\n', '\\n')
-      table.insert(option_strings, string.format("%d. %s", i, title))
-    end
-
-    local choice = vim.fn.inputlist(option_strings)
-    if choice < 1 or choice > #actions then
-      return
-    end
-    action_chosen = actions[choice]
-  end
-
-  if action_chosen.edit or type(action_chosen.command) == "table" then
-    if action_chosen.edit then
-      vim.lsp.util.apply_workspace_edit(action_chosen.edit)
-    end
-    if type(action_chosen.command) == "table" then
-      vim.lsp.buf.execute_command(action_chosen.command)
-    end
-  else
-    vim.lsp.buf.execute_command(action_chosen)
-  end
-end
--- }}}
-
--- configure signs {{{
-vim.fn.sign_define("LspDiagnosticsSignError", {text="⚡", numhl="Error"})
-vim.fn.sign_define("LspDiagnosticsSignWarning", {text="⯈", numhl="Warning"})
-vim.fn.sign_define("LspDiagnosticsSignInformation", {text="≈"})
-vim.fn.sign_define("LspDiagnosticsSignHint", {text="🞶"})
--- }}}
-
--- lsp.ccls.setup{
---  on_attach = my_attach,
--- }
-
-lsp.gopls.setup{
-  on_attach = my_attach,
-  -- root_dir = util.root_pattern('go.mod', '.git'),
-  settings = {
-    gopls = {
-      -- analyses = {
-      --  composites = false
-      -- },
-      codelenses = {
-        test = true,
-        tidy = true,
-      },
-      gofumpt = true,
-    }
-  }
-}
-
-lsp.sumneko_lua.setup{
-  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{
-  on_attach = my_attach,
-  cmd = { 'env', 'CARGO_TARGET_DIR=/tmp', 'rust-analyzer' },
-}
-
-lsp.efm.setup{
-  on_attach = my_attach,
-  root_dir = util.root_pattern('.git', '.editorconfig'),
-  init_options = { documentFormatting = true },
-  -- filetypes = { "sh", "c" },
-  settings = {
-    -- rootMarkers = {".git/"},
-    languages = {
-      sh = {
-        {
-          lintCommand = 'shellcheck -f gcc -x',
-          lintSource = 'shellcheck',
-          lintFormats = {
-            '%f:%l:%c: %trror: %m',
-            '%f:%l:%c: %tarning: %m',
-            '%f:%l:%c: %tote: %m',
-          },
-          formatCommand = 'shfmt -ci -s -bn',
-          formatStdin = true,
-        }
-      }
-    }
-  }
-}
-
-lsp.zls.setup{
-  on_attach = my_attach
-}
-
-return M
diff --git a/.vim/lua/plugins/_markdown.lua b/.vim/lua/plugins/_markdown.lua
deleted file mode 100644
index e02e160..0000000
--- a/.vim/lua/plugins/_markdown.lua
+++ /dev/null
@@ -1,12 +0,0 @@
-vim.g.vim_markdown_folding_disabled = true
-vim.g.vim_markdown_math = true
-vim.g.vim_markdown_frontmatter = true
-vim.g.vim_markdown_json_frontmatter = true
-vim.g.vim_markdown_toml_frontmatter = true
-vim.g.vim_markdown_yaml_frontmatter = true
--- vim.g.vim_markdown_folding_level = 2
-vim.g.vim_markdown_strikethrough = true
-vim.g.vim_markdown_auto_insert_bullets = true
-vim.g.vim_markdown_new_list_item_indent = false
-vim.g.vim_markdown_conceal = true
-vim.g.vim_markdown_conceal_code_blocks = true
diff --git a/.vim/lua/plugins/_neuron.lua b/.vim/lua/plugins/_neuron.lua
deleted file mode 100644
index d99a13f..0000000
--- a/.vim/lua/plugins/_neuron.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-
-local def = require('utils').def
-
-require('neuron').setup {
-  virtual_titles = true,
-  mappings = true,
-  run = nil,
-  neuron_dir = "~/.zk",
-  leader = "gz",
-}
-
-def("NeuronServe", [[ lua require('neuron').rib {address = "127.0.0.1:8200", verbose = true} ]])
-def("NeuronZettels", [[ lua require('neuron/telescope').find_zettels {insert = false} ]])
-def("NeuronZettelsInsert", [[ lua require('neuron/telescope').find_zettels {insert = true} ]])
-def("NeuronTags", [[ lua require('neuron/telescope').find_tags() ]])
diff --git a/.vim/lua/plugins/_signify.lua b/.vim/lua/plugins/_signify.lua
deleted file mode 100644
index 41ced80..0000000
--- a/.vim/lua/plugins/_signify.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-local def = require('utils').def
-local nnoremap = require('astronauta.keymap').nnoremap
-
-vim.g.signify_sign_change = '~'
-
-nnoremap { ']h', function() vim.fn['sy#jump#next_hunk'](1) end }
-nnoremap { '[h', function() vim.fn['sy#jump#prev_hunk'](1) end }
-
-def("SignifyNextHunk", [[ call sy#jump#next_hunk(1) ]])
-def("SignifyPrevHunk", [[ call sy#jump#prev_hunk(1) ]])
diff --git a/.vim/lua/plugins/_telescope.lua b/.vim/lua/plugins/_telescope.lua
deleted file mode 100644
index 44931fa..0000000
--- a/.vim/lua/plugins/_telescope.lua
+++ /dev/null
@@ -1,114 +0,0 @@
--- telescope.nvim et al config
-
-local nnoremap = require('astronauta.keymap').nnoremap
-
-local M = {}
-
--- TELESCOPE config -- {{{
-require('telescope').setup{
-  defaults = {
-    initial_mode = 'normal',
-    prompt_prefix = '> ',
-    selection_caret = '* ',
-
-    -- copied from dropdown theme
-    sorting_strategy = 'ascending',
-    layout_strategy = 'center',
-    results_title = false,
-    preview_title = 'P',
-    preview_cutoff = 1,
-    width = 0.88,
-    results_height = 15,
-    borderchars = {
-      { '─', '│', '─', '│', '┌', '┐', '┘', '└'},
-      prompt = {'─', '│', ' ', '│', '┌', '┐', '│', '│'},
-      results = {'─', '│', '─', '│', '├', '┤', '┘', '└'},
-      preview = { '─', '│', '─', '│', '┌', '┐', '┘', '└'},
-    },
-
-    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,
-      }
-    }
-  }
-}
--- }}}
-
--- MAPPINGS -- {{{
-
-nnoremap { ';g', function()
-    require('telescope').extensions.fzf_writer.staged_grep()
-end }
-
-nnoremap { ';w', function()
-    require('telescope.builtin').find_files({
-      prompt_title = 'workspace',
-      previewer = false,
-      cwd = vim.lsp.buf.list_workspace_folders()[1] or require('lspconfig.util').root_pattern('.git')(vim.fn.expand('%:p')),
-    })
-end }
-
-nnoremap { ';q', function()
-    local ids = vim.fn.getqflist({winid = 1})
-    if ids and not (ids.winid == 0) then
-      vim.api.nvim_win_close(ids.winid, true)
-    end
-    require('telescope.builtin').quickfix()
-end }
-
-nnoremap { ';l', function()
-    local ids = vim.fn.getloclist(0, {winid = 1})
-    if ids and not (ids.winid == 0) then
-      vim.api.nvim_win_close(ids.winid, true)
-    end
-    require('telescope.builtin').loclist()
-end }
-
-nnoremap { ';f', function()
-    require('telescope.builtin').fd()
-end }
-
-nnoremap { ';b', function()
-    require('telescope.builtin').buffers()
-end }
-
-nnoremap { ';t', function()
-    require('telescope.builtin').tags()
-end }
-
-nnoremap { ';h', function()
-    require('telescope.builtin').command_history()
-end }
-
-nnoremap { ';c', function()
-    require('telescope.builtin').commands()
-end }
-
--- LSP stuff
-
-nnoremap { 'gA', function()
-    require('telescope.builtin').lsp_code_actions()
-end }
-
-nnoremap { 'gA', function()
-    require('telescope.builtin').lsp_code_actions()
-end }
-
-nnoremap { 'g0', function()
-    require('telescope.builtin').lsp_document_symbols()
-end }
-
-nnoremap { 'gr', function()
-    require('telescope.builtin').lsp_references()
-end }
-
--- }}}
-
-return M
diff --git a/.vim/lua/plugins/_treesitter.lua b/.vim/lua/plugins/_treesitter.lua
deleted file mode 100644
index c5225bc..0000000
--- a/.vim/lua/plugins/_treesitter.lua
+++ /dev/null
@@ -1,24 +0,0 @@
-
-require('nvim-treesitter.configs').setup {
-  ensure_installed = { "c", "c_sharp", "lua", "bash" },
-  highlight = {
-    enable = false,
-  },
-  indent = {
-    enable = true,
-  },
-  refactor = {
-    navigation = {
-      enable = true,
-      keymaps = {
-        goto_definition = "<c-]>",
-      },
-    },
-    smart_rename = {
-      enable = true,
-      keymaps = {
-        smart_rename = "grr",
-      },
-    },
-  },
-}
diff --git a/.vim/lua/plugins/_ultisnips.lua b/.vim/lua/plugins/_ultisnips.lua
deleted file mode 100644
index cd077d2..0000000
--- a/.vim/lua/plugins/_ultisnips.lua
+++ /dev/null
@@ -1,4 +0,0 @@
--- vim.g.UltiSnipsListSnippets = "<c-tab>"
-vim.g.UltiSnipsExpandTrigger = vim.g.completion_confirm_key
-vim.g.UltiSnipsJumpForwardTrigger = "<c-n>"
-vim.g.UltiSnipsJumpBackwardTrigger = "<c-p>"
diff --git a/.vim/lua/plugins/_vimtex.lua b/.vim/lua/plugins/_vimtex.lua
deleted file mode 100644
index 2a3d550..0000000
--- a/.vim/lua/plugins/_vimtex.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-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/utils.lua b/.vim/lua/utils.lua
index 1141e8d..b0edacd 100644
--- a/.vim/lua/utils.lua
+++ b/.vim/lua/utils.lua
@@ -2,30 +2,6 @@
 
 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.augroup2 = function(tbl)
   for name, autocmds in pairs(tbl) do
     vim.cmd('augroup ' .. name)
@@ -37,9 +13,4 @@ M.augroup2 = function(tbl)
   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/packer_compiled.lua b/.vim/plugin/packer_compiled.lua
new file mode 100644
index 0000000..ab3d8c9
--- /dev/null
+++ b/.vim/plugin/packer_compiled.lua
@@ -0,0 +1,370 @@
+-- Automatically generated packer.nvim plugin loader code
+
+if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then
+  vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"')
+  return
+end
+
+vim.api.nvim_command('packadd packer.nvim')
+
+local no_errors, error_msg = pcall(function()
+
+  local time
+  local profile_info
+  local should_profile = false
+  if should_profile then
+    local hrtime = vim.loop.hrtime
+    profile_info = {}
+    time = function(chunk, start)
+      if start then
+        profile_info[chunk] = hrtime()
+      else
+        profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6
+      end
+    end
+  else
+    time = function(chunk, start) end
+  end
+  
+local function save_profiles(threshold)
+  local sorted_times = {}
+  for chunk_name, time_taken in pairs(profile_info) do
+    sorted_times[#sorted_times + 1] = {chunk_name, time_taken}
+  end
+  table.sort(sorted_times, function(a, b) return a[2] > b[2] end)
+  local results = {}
+  for i, elem in ipairs(sorted_times) do
+    if not threshold or threshold and elem[2] > threshold then
+      results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms'
+    end
+  end
+
+  _G._packer = _G._packer or {}
+  _G._packer.profile_output = results
+end
+
+time([[Luarocks path setup]], true)
+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
+
+time([[Luarocks path setup]], false)
+time([[try_loadstring definition]], true)
+local function try_loadstring(s, component, name)
+  local success, result = pcall(loadstring(s))
+  if not success then
+    vim.schedule(function()
+      vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {})
+    end)
+  end
+  return result
+end
+
+time([[try_loadstring definition]], false)
+time([[Defining packer_plugins]], true)
+_G.packer_plugins = {
+  ["astronauta.nvim"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/astronauta.nvim"
+  },
+  ["completion-treesitter"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/completion-treesitter"
+  },
+  ["editorconfig-vim"] = {
+    config = { "\27LJ\1\2\1\0\0\4\0\6\0\v4\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\4\0002\2\3\0003\3\3\0;\3\1\2:\2\5\1>\0\2\1G\0\1\0\17editorconfig\1\0\0\1\4\0\0\rFileType\14gitcommit#let b:EditorConfig_disable = 1\raugroup2\nutils\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/editorconfig-vim"
+  },
+  ["gentoo-syntax"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/gentoo-syntax"
+  },
+  ["git-messenger.vim"] = {
+    config = { "\27LJ\1\2\1\0\0\2\0\5\0\r4\0\0\0007\0\1\0)\1\2\0:\1\2\0004\0\0\0007\0\1\0)\1\2\0:\1\3\0004\0\0\0007\0\1\0)\1\2\0:\1\4\0G\0\1\0&git_messenger_no_default_mappings(git_messenger_close_on_cursor_moved$git_messenger_always_into_popup\6g\bvim\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/git-messenger.vim"
+  },
+  ["indent-blankline.nvim"] = {
+    config = { "\27LJ\1\2;\0\0\2\0\4\0\0054\0\0\0007\0\1\0%\1\3\0:\1\2\0G\0\1\0\b▏\26indent_blankline_char\6g\bvim\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/indent-blankline.nvim"
+  },
+  ["lightspeed.nvim"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/lightspeed.nvim"
+  },
+  ["lush.nvim"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/lush.nvim"
+  },
+  ["neuron.nvim"] = {
+    config = { "\27LJ\1\2\4\0\0\2\0\n\0\0234\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\3\0>\0\2\0014\0\4\0007\0\5\0%\1\6\0>\0\2\0014\0\4\0007\0\5\0%\1\a\0>\0\2\0014\0\4\0007\0\5\0%\1\b\0>\0\2\0014\0\4\0007\0\5\0%\1\t\0>\0\2\1G\0\1\0F command! NeuronTags lua require('neuron.telescope').find_tags() ` command! NeuronZettelsInsert lua require('neuron.telescope').find_zettels {insert = true} [ command! NeuronZettels lua require('neuron.telescope').find_zettels {insert = false} b command! NeuronServe lua require('neuron').rib {address = \"127.0.0.1:8200\", verbose = true} \bcmd\bvim\1\0\4\15neuron_dir\n~/.zk\vleader\agz\rmappings\2\19virtual_titles\2\nsetup\vneuron\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/neuron.nvim"
+  },
+  ["null-ls.nvim"] = {
+    config = { "\27LJ\1\2\2\0\0\5\0\21\00014\0\0\0%\1\1\0>\0\2\0027\1\2\0003\2\r\0002\3\b\0007\4\3\0007\4\4\0047\4\5\4;\4\1\0037\4\3\0007\4\4\0047\4\6\4;\4\2\0037\4\3\0007\4\4\0047\4\a\4;\4\3\0037\4\3\0007\4\4\0047\4\b\4;\4\4\0037\4\3\0007\4\4\0047\4\t\4;\4\5\0037\4\3\0007\4\4\0047\4\n\4;\4\6\0037\4\3\0007\4\v\0047\4\f\4;\4\a\3:\3\14\2>\1\2\0014\1\0\0%\2\15\0>\1\2\0027\1\1\0017\1\16\0013\2\19\0004\3\0\0%\4\17\0>\3\2\0027\3\18\3:\3\20\2>\1\2\1G\0\1\0\14on_attach\1\0\0\14my_attach\blsp\nsetup\14lspconfig\fsources\1\0\0\15shellcheck\16diagnostics\tyapf\nshfmt\frustfmt\14json_tool\fgofumpt\17clang_format\15formatting\rbuiltins\vconfig\fnull-ls\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/null-ls.nvim"
+  },
+  ["nvim-autopairs"] = {
+    config = { "\27LJ\1\2<\0\0\2\0\3\0\0064\0\0\0%\1\1\0>\0\2\0027\0\2\0>\0\1\1G\0\1\0\nsetup\19nvim-autopairs\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/nvim-autopairs"
+  },
+  ["nvim-colorizer.lua"] = {
+    config = { "\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" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/nvim-colorizer.lua"
+  },
+  ["nvim-compe"] = {
+    config = { "\27LJ\1\2\3\0\0\3\0\r\0\0214\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\3\0003\2\4\0:\2\5\0013\2\6\0:\2\a\1>\0\2\0014\0\b\0007\0\t\0%\1\n\0>\0\2\0014\0\0\0%\1\v\0>\0\2\0027\0\2\0003\1\f\0>\0\2\1G\0\1\0\1\0\2\17map_complete\2\vmap_cr\2$nvim-autopairs.completion.compe\1        inoremap <silent><expr> <c-space> compe#complete()\n        inoremap <silent><expr> <c-e>     compe#close('<c-e>')\n      \bcmd\bvim\vsource\1\0\a\vbuffer\2\rnvim_lua\2\rnvim_lsp\2\ttags\2\forgmode\2\14ultisnips\2\tpath\2\18documentation\1\0\1\vborder\vsingle\1\0\3\17autocomplete\2\14preselect\venable\fenabled\2\nsetup\ncompe\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/nvim-compe"
+  },
+  ["nvim-lightbulb"] = {
+    config = { "\27LJ\1\2\3\0\0\4\0\23\0!4\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\4\0003\2\3\0:\2\5\0013\2\6\0002\3\0\0:\3\a\2:\2\b\0013\2\t\0:\2\n\0013\2\v\0:\2\f\1>\0\2\0014\0\r\0007\0\14\0007\0\15\0%\1\16\0003\2\17\0>\0\3\0014\0\0\0%\1\18\0>\0\2\0027\0\19\0003\1\21\0002\2\3\0003\3\20\0;\3\1\2:\2\22\1>\0\2\1G\0\1\0\14lightbulb\1\0\0\1\4\0\0\15CursorHold\6*5lua require('nvim-lightbulb').update_lightbulb()\raugroup2\nutils\1\0\2\ttext\b⚐\vtexthl\25LightBulbVirtualText\18LightBulbSign\16sign_define\afn\bvim\16status_text\1\0\1\fenabled\1\17virtual_text\1\0\2\fenabled\1\ttext\n󱉵 \nfloat\rwin_opts\1\0\2\ttext\n󱉵 \fenabled\2\tsign\1\0\0\1\0\2\fenabled\2\rpriority\3\n\21update_lightbulb\19nvim-lightbulb\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/nvim-lightbulb"
+  },
+  ["nvim-lspconfig"] = {
+    config = { "\27LJ\1\0021\0\0\2\0\3\0\0064\0\0\0%\1\1\0>\0\2\0027\0\2\0>\0\1\1G\0\1\0\nsetup\blsp\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/nvim-lspconfig"
+  },
+  ["nvim-treesitter"] = {
+    config = { "\27LJ\1\2\3\0\0\5\0\19\0\0234\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\4\0003\2\3\0:\2\5\0013\2\6\0:\2\a\0013\2\b\0:\2\t\0013\2\r\0003\3\n\0003\4\v\0:\4\f\3:\3\14\0023\3\15\0003\4\16\0:\4\f\3:\3\17\2:\2\18\1>\0\2\1G\0\1\0\rrefactor\17smart_rename\1\0\1\17smart_rename\bgrr\1\0\1\venable\2\15navigation\1\0\0\fkeymaps\1\0\1\20goto_definition\n<c-]>\1\0\1\venable\2\vindent\1\0\1\venable\2\14highlight\1\0\1\venable\1\21ensure_installed\1\0\0\1\14\0\0\tbash\6c\fc_sharp\bcss\15dockerfile\thtml\ago\ngomod\15javascript\vledger\blua\trust\15typescript\nsetup\28nvim-treesitter.configs\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/nvim-treesitter"
+  },
+  ["nvim-treesitter-refactor"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor"
+  },
+  ["orgmode.nvim"] = {
+    config = { "\27LJ\1\2\1\0\0\6\2\t\0\19+\0\0\0007\0\0\0004\1\1\0003\2\2\0+\3\1\0007\3\3\0034\4\4\0%\5\5\0>\4\2\2\16\5\4\0007\4\6\4>\4\2\0=\3\0\2:\3\a\2>\0\3\2\16\1\0\0007\0\b\0>\0\2\1G\0\1\0\1\2\tfind\vfinder\18get_all_files\19orgmode.config\frequire\14new_table\1\0\1\17prompt_title\fOrgmode\topts\bnew\a\1\0\6\0\20\00014\0\0\0%\1\1\0>\0\2\0027\0\2\0004\1\0\0%\2\3\0>\1\2\0027\1\4\0013\2\6\0003\3\5\0:\3\a\2>\1\2\0014\1\0\0%\2\b\0>\1\2\0024\2\0\0%\3\t\0>\2\2\2\16\3\0\0003\4\n\0001\5\v\0;\5\2\4>\3\2\0014\3\f\0007\3\r\3%\4\14\0>\3\2\0014\3\f\0007\3\r\3%\4\15\0>\3\2\0014\3\f\0007\3\r\3%\4\16\0>\3\2\0014\3\f\0007\3\r\3%\4\17\0>\3\2\0014\3\f\0007\3\r\3%\4\18\0>\3\2\0014\3\f\0007\3\r\3%\4\19\0>\3\2\0010\0\0G\0\1\0_ command! OrgmodeArchive lua require('orgmode').action('org_mappings.toggle_archive_tag') Q command! OrgmodeTag lua require('orgmode').action('org_mappings.set_tags') ^ command! OrgmodeTodoCycle lua require('orgmode').action('org_mappings.todo_next_state') j command! OrgmodeInsert lua require('orgmode').action('org_mappings.insert_heading_respect_content') N command! OrgmodeCapture lua require('orgmode').action('capture.refile') F command! Orgmode lua require('orgmode').action('agenda.prompt') \bcmd\bvim\0\1\2\0\0\a;o\22telescope.finders\22telescope.pickers\21org_agenda_files\1\0\1\27org_default_notes_file $HOME/.zk/.orgmode/todo.org\1\2\0\0\29$HOME/.zk/.orgmode/*.org\nsetup\forgmode\rnnoremap\22astronauta.keymap\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/orgmode.nvim"
+  },
+  ["packer.nvim"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/packer.nvim"
+  },
+  ["plenary.nvim"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/plenary.nvim"
+  },
+  ["popup.nvim"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/popup.nvim"
+  },
+  ["spinner.nvim"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/spinner.nvim"
+  },
+  ["telescope-fzf-writer.nvim"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/telescope-fzf-writer.nvim"
+  },
+  ["telescope.nvim"] = {
+    config = { "\27LJ\1\2\1\0\0\4\0\t\0\r4\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\3\0004\2\4\0007\2\5\0027\2\6\2%\3\a\0>\2\2\2:\2\b\1>\0\2\1G\0\1\0\bcwd\vconfig\fstdpath\afn\bvim\1\0\2\14previewer\1\17prompt_title\nvimrc\15find_files\22telescope.builtin\frequire\v\1\0\6\0=\0\0014\0\0\0%\1\1\0>\0\2\0027\0\2\0004\1\0\0%\2\3\0>\1\2\0027\1\4\0013\2\28\0003\3\5\0003\4\6\0:\4\a\0033\4\b\0003\5\t\0:\5\n\0043\5\v\0:\5\f\0043\5\r\0:\5\14\4:\4\15\0034\4\0\0%\5\16\0>\4\2\0027\4\17\0047\4\18\4:\4\19\0034\4\0\0%\5\16\0>\4\2\0027\4\20\0047\4\18\4:\4\21\0034\4\0\0%\5\16\0>\4\2\0027\4\22\0047\4\18\4:\4\23\0033\4\25\0003\5\24\0:\5\26\4:\4\27\3:\3\29\2>\1\2\1\16\1\0\0003\2\30\0004\3\0\0%\4\31\0>\3\2\0027\3 \3;\3\2\2>\1\2\1\16\1\0\0003\2!\0004\3\0\0%\4\31\0>\3\2\0027\3\"\3;\3\2\2>\1\2\1\16\1\0\0003\2#\0004\3\0\0%\4\3\0>\3\2\0027\3\27\0037\3\26\0037\3$\3;\3\2\2>\1\2\1\16\1\0\0003\2%\0004\3\0\0%\4\31\0>\3\2\0027\3&\3;\3\2\2>\1\2\1\16\1\0\0003\2'\0004\3\0\0%\4\31\0>\3\2\0027\3(\3;\3\2\2>\1\2\1\16\1\0\0003\2)\0004\3\0\0%\4\31\0>\3\2\0027\3*\3;\3\2\2>\1\2\1\16\1\0\0003\2+\0004\3\0\0%\4\31\0>\3\2\0027\3,\3;\3\2\2>\1\2\1\16\1\0\0003\2-\0004\3\0\0%\4\31\0>\3\2\0027\3.\3;\3\2\2>\1\2\1\16\1\0\0003\2/\0004\3\0\0%\4\31\0>\3\2\0027\0030\3;\3\2\2>\1\2\1\16\1\0\0003\0021\0004\3\0\0%\4\31\0>\3\2\0027\0032\3;\3\2\2>\1\2\1\16\1\0\0003\0023\0004\3\0\0%\4\31\0>\3\2\0027\0034\3;\3\2\2>\1\2\1\16\1\0\0003\0025\0001\0036\0;\3\2\2>\1\2\1\16\1\0\0003\0027\0004\3\0\0%\4\31\0>\3\2\0027\0038\3;\3\2\2>\1\2\1\16\1\0\0003\0029\0004\3\0\0%\4\31\0>\3\2\0027\3:\3;\3\2\2>\1\2\1\16\1\0\0003\2;\0004\3\0\0%\4\31\0>\3\2\0027\3<\3;\3\2\2>\1\2\1G\0\1\0\19lsp_references\1\2\0\0\a;r\25lsp_document_symbols\1\2\0\0\a;0\21lsp_code_actions\1\2\0\0\a;a\0\1\2\0\0\a;v\rcommands\1\2\0\0\a;c\14help_tags\1\2\0\0\a;H\20command_history\1\2\0\0\a;h\ttags\1\2\0\0\a;t\fbuffers\1\2\0\0\a;b\17file_browser\1\2\0\0\a;w\30current_buffer_fuzzy_find\1\2\0\0\a;l\afd\1\2\0\0\a;f\16staged_grep\1\2\0\0\a;g\floclist\1\2\0\0\a;c\rquickfix\22telescope.builtin\1\2\0\0\a;q\rdefaults\1\0\0\15extensions\15fzf_writer\1\0\0\1\0\3\28minimum_grep_characters\3\4\17shorten_path\2\20use_highlighter\2\21qflist_previewer\22vim_buffer_qflist\19grep_previewer\23vim_buffer_vimgrep\19file_previewer\bnew\19vim_buffer_cat\25telescope.previewers\16borderchars\fpreview\1\t\0\0\b─\b│\b─\b│\b┌\b┐\b┘\b└\fresults\1\2\0\0\6 \vprompt\1\t\0\0\b─\6 \6 \6 \b─\b─\6 \6 \1\2\0\0\6z\18layout_config\1\0\2\vheight\3\20\19preview_cutoff\3\1\1\0\6\21sorting_strategy\14ascending\20layout_strategy\16bottom_pane\18preview_title\5\vborder\2\18prompt_prefix\a> \20selection_caret\a* \nsetup\14telescope\rnnoremap\22astronauta.keymap\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/telescope.nvim"
+  },
+  ["twilight.nvim"] = {
+    config = { "\27LJ\1\2\1\0\0\4\0\b\0\v4\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\3\0003\2\4\0003\3\5\0:\3\6\2:\2\a\1>\0\2\1G\0\1\0\fdimming\ncolor\1\3\0\0\vNormal\f#ffffff\1\0\1\nalpha\4̙\3\3\1\0\1\fcontext\3\15\nsetup\rtwilight\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/twilight.nvim"
+  },
+  ultisnips = {
+    config = { "\27LJ\1\2x\0\0\2\0\6\0\t4\0\0\0007\0\1\0%\1\3\0:\1\2\0004\0\0\0007\0\1\0%\1\5\0:\1\4\0G\0\1\0\f<s-tab>!UltiSnipsJumpBackwardTrigger\n<tab> UltiSnipsJumpForwardTrigger\6g\bvim\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/ultisnips"
+  },
+  ["vim-commentary"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-commentary"
+  },
+  ["vim-cue"] = {
+    loaded = false,
+    needs_bufread = true,
+    path = "/usr/local/share/nvim/site/pack/packer/opt/vim-cue"
+  },
+  ["vim-dirvish"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-dirvish"
+  },
+  ["vim-easy-align"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-easy-align"
+  },
+  ["vim-github-link"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-github-link"
+  },
+  ["vim-indent-object"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-indent-object"
+  },
+  ["vim-markdown"] = {
+    config = { '\27LJ\1\2\3\0\0\2\0\r\0-4\0\0\0007\0\1\0)\1\2\0:\1\2\0004\0\0\0007\0\1\0)\1\2\0:\1\3\0004\0\0\0007\0\1\0)\1\2\0:\1\4\0004\0\0\0007\0\1\0)\1\2\0:\1\5\0004\0\0\0007\0\1\0)\1\2\0:\1\6\0004\0\0\0007\0\1\0)\1\2\0:\1\a\0004\0\0\0007\0\1\0)\1\2\0:\1\b\0004\0\0\0007\0\1\0)\1\2\0:\1\t\0004\0\0\0007\0\1\0)\1\1\0:\1\n\0004\0\0\0007\0\1\0)\1\2\0:\1\v\0004\0\0\0007\0\1\0)\1\2\0:\1\f\0G\0\1\0%vim_markdown_conceal_code_blocks\25vim_markdown_conceal&vim_markdown_new_list_item_indent%vim_markdown_auto_insert_bullets\31vim_markdown_strikethrough"vim_markdown_yaml_frontmatter"vim_markdown_toml_frontmatter"vim_markdown_json_frontmatter\29vim_markdown_frontmatter\22vim_markdown_math"vim_markdown_folding_disabled\6g\bvim\0' },
+    loaded = false,
+    needs_bufread = true,
+    path = "/usr/local/share/nvim/site/pack/packer/opt/vim-markdown"
+  },
+  ["vim-markdown-folding"] = {
+    loaded = false,
+    needs_bufread = true,
+    path = "/usr/local/share/nvim/site/pack/packer/opt/vim-markdown-folding"
+  },
+  ["vim-polyglot"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-polyglot"
+  },
+  ["vim-repeat"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-repeat"
+  },
+  ["vim-signify"] = {
+    config = { "\27LJ\1\0028\0\0\2\0\3\0\0064\0\0\0007\0\1\0007\0\2\0'\1\1\0>\0\2\1G\0\1\0\22sy#jump#next_hunk\afn\bvim8\0\0\2\0\3\0\0064\0\0\0007\0\1\0007\0\2\0'\1\1\0>\0\2\1G\0\1\0\22sy#jump#prev_hunk\afn\bvim\1\1\0\4\0\v\0\0194\0\0\0%\1\1\0>\0\2\0027\0\2\0004\1\3\0007\1\4\1%\2\6\0:\2\5\1\16\1\0\0003\2\a\0001\3\b\0;\3\2\2>\1\2\1\16\1\0\0003\2\t\0001\3\n\0;\3\2\2>\1\2\1G\0\1\0\0\1\2\0\0\a[h\0\1\2\0\0\a]h\6~\24signify_sign_change\6g\bvim\rnnoremap\22astronauta.keymap\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-signify"
+  },
+  ["vim-snippets"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-snippets"
+  },
+  ["vim-startify"] = {
+    config = { "\27LJ\1\2\1\0\0\4\0\6\0\v4\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\4\0002\2\3\0003\3\3\0;\3\1\2:\2\5\1>\0\2\1G\0\1\0\rstartify\1\0\0\1\4\0\0\rFileType\rstartify\29 IndentBlanklineDisable \raugroup2\nutils\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-startify"
+  },
+  ["vim-surround"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vim-surround"
+  },
+  vimtex = {
+    config = { "\27LJ\1\2\1\0\0\2\0\v\0\0214\0\0\0007\0\1\0%\1\3\0:\1\2\0004\0\0\0007\0\1\0'\1\0\0:\1\4\0004\0\0\0007\0\1\0%\1\6\0:\1\5\0004\0\0\0007\0\1\0%\1\b\0:\1\a\0004\0\0\0007\0\1\0%\1\n\0:\1\t\0G\0\1\0\fzathura\23vimtex_view_method\31{'executable': 'tectonic'}\29vimtex_compiler_tectonic\rtectonic\27vimtex_compiler_method\28vimtex_compiler_enabled\nlatex\15tex_flavor\6g\bvim\0" },
+    loaded = false,
+    needs_bufread = true,
+    path = "/usr/local/share/nvim/site/pack/packer/opt/vimtex"
+  },
+  ["vista.vim"] = {
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/vista.vim"
+  },
+  ["zen-mode.nvim"] = {
+    config = { "\27LJ\1\2\1\0\0\4\0\r\0\0174\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\6\0003\2\3\0003\3\4\0:\3\5\2:\2\a\0013\2\t\0003\3\b\0:\3\5\0023\3\n\0:\3\v\2:\2\f\1>\0\2\1G\0\1\0\fplugins\rtwilight\1\0\1\fenabled\2\1\0\0\1\0\3\fenabled\2\nruler\1\fshowcmd\1\vwindow\1\0\0\foptions\1\0\2\tlist\1\vnumber\1\1\0\2\rbackdrop\3\1\nwidth\4̙\3\3\nsetup\rzen-mode\frequire\0" },
+    loaded = true,
+    path = "/usr/local/share/nvim/site/pack/packer/start/zen-mode.nvim"
+  }
+}
+
+time([[Defining packer_plugins]], false)
+-- Config for: nvim-treesitter
+time([[Config for nvim-treesitter]], true)
+try_loadstring("\27LJ\1\2\3\0\0\5\0\19\0\0234\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\4\0003\2\3\0:\2\5\0013\2\6\0:\2\a\0013\2\b\0:\2\t\0013\2\r\0003\3\n\0003\4\v\0:\4\f\3:\3\14\0023\3\15\0003\4\16\0:\4\f\3:\3\17\2:\2\18\1>\0\2\1G\0\1\0\rrefactor\17smart_rename\1\0\1\17smart_rename\bgrr\1\0\1\venable\2\15navigation\1\0\0\fkeymaps\1\0\1\20goto_definition\n<c-]>\1\0\1\venable\2\vindent\1\0\1\venable\2\14highlight\1\0\1\venable\1\21ensure_installed\1\0\0\1\14\0\0\tbash\6c\fc_sharp\bcss\15dockerfile\thtml\ago\ngomod\15javascript\vledger\blua\trust\15typescript\nsetup\28nvim-treesitter.configs\frequire\0", "config", "nvim-treesitter")
+time([[Config for nvim-treesitter]], false)
+-- Config for: editorconfig-vim
+time([[Config for editorconfig-vim]], true)
+try_loadstring("\27LJ\1\2\1\0\0\4\0\6\0\v4\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\4\0002\2\3\0003\3\3\0;\3\1\2:\2\5\1>\0\2\1G\0\1\0\17editorconfig\1\0\0\1\4\0\0\rFileType\14gitcommit#let b:EditorConfig_disable = 1\raugroup2\nutils\frequire\0", "config", "editorconfig-vim")
+time([[Config for editorconfig-vim]], false)
+-- Config for: orgmode.nvim
+time([[Config for orgmode.nvim]], true)
+try_loadstring("\27LJ\1\2\1\0\0\6\2\t\0\19+\0\0\0007\0\0\0004\1\1\0003\2\2\0+\3\1\0007\3\3\0034\4\4\0%\5\5\0>\4\2\2\16\5\4\0007\4\6\4>\4\2\0=\3\0\2:\3\a\2>\0\3\2\16\1\0\0007\0\b\0>\0\2\1G\0\1\0\1\2\tfind\vfinder\18get_all_files\19orgmode.config\frequire\14new_table\1\0\1\17prompt_title\fOrgmode\topts\bnew\a\1\0\6\0\20\00014\0\0\0%\1\1\0>\0\2\0027\0\2\0004\1\0\0%\2\3\0>\1\2\0027\1\4\0013\2\6\0003\3\5\0:\3\a\2>\1\2\0014\1\0\0%\2\b\0>\1\2\0024\2\0\0%\3\t\0>\2\2\2\16\3\0\0003\4\n\0001\5\v\0;\5\2\4>\3\2\0014\3\f\0007\3\r\3%\4\14\0>\3\2\0014\3\f\0007\3\r\3%\4\15\0>\3\2\0014\3\f\0007\3\r\3%\4\16\0>\3\2\0014\3\f\0007\3\r\3%\4\17\0>\3\2\0014\3\f\0007\3\r\3%\4\18\0>\3\2\0014\3\f\0007\3\r\3%\4\19\0>\3\2\0010\0\0G\0\1\0_ command! OrgmodeArchive lua require('orgmode').action('org_mappings.toggle_archive_tag') Q command! OrgmodeTag lua require('orgmode').action('org_mappings.set_tags') ^ command! OrgmodeTodoCycle lua require('orgmode').action('org_mappings.todo_next_state') j command! OrgmodeInsert lua require('orgmode').action('org_mappings.insert_heading_respect_content') N command! OrgmodeCapture lua require('orgmode').action('capture.refile') F command! Orgmode lua require('orgmode').action('agenda.prompt') \bcmd\bvim\0\1\2\0\0\a;o\22telescope.finders\22telescope.pickers\21org_agenda_files\1\0\1\27org_default_notes_file $HOME/.zk/.orgmode/todo.org\1\2\0\0\29$HOME/.zk/.orgmode/*.org\nsetup\forgmode\rnnoremap\22astronauta.keymap\frequire\0", "config", "orgmode.nvim")
+time([[Config for orgmode.nvim]], false)
+-- Config for: indent-blankline.nvim
+time([[Config for indent-blankline.nvim]], true)
+try_loadstring("\27LJ\1\2;\0\0\2\0\4\0\0054\0\0\0007\0\1\0%\1\3\0:\1\2\0G\0\1\0\b▏\26indent_blankline_char\6g\bvim\0", "config", "indent-blankline.nvim")
+time([[Config for indent-blankline.nvim]], false)
+-- Config for: twilight.nvim
+time([[Config for twilight.nvim]], true)
+try_loadstring("\27LJ\1\2\1\0\0\4\0\b\0\v4\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\3\0003\2\4\0003\3\5\0:\3\6\2:\2\a\1>\0\2\1G\0\1\0\fdimming\ncolor\1\3\0\0\vNormal\f#ffffff\1\0\1\nalpha\4̙\3\3\1\0\1\fcontext\3\15\nsetup\rtwilight\frequire\0", "config", "twilight.nvim")
+time([[Config for twilight.nvim]], false)
+-- Config for: git-messenger.vim
+time([[Config for git-messenger.vim]], true)
+try_loadstring("\27LJ\1\2\1\0\0\2\0\5\0\r4\0\0\0007\0\1\0)\1\2\0:\1\2\0004\0\0\0007\0\1\0)\1\2\0:\1\3\0004\0\0\0007\0\1\0)\1\2\0:\1\4\0G\0\1\0&git_messenger_no_default_mappings(git_messenger_close_on_cursor_moved$git_messenger_always_into_popup\6g\bvim\0", "config", "git-messenger.vim")
+time([[Config for git-messenger.vim]], false)
+-- Config for: ultisnips
+time([[Config for ultisnips]], true)
+try_loadstring("\27LJ\1\2x\0\0\2\0\6\0\t4\0\0\0007\0\1\0%\1\3\0:\1\2\0004\0\0\0007\0\1\0%\1\5\0:\1\4\0G\0\1\0\f<s-tab>!UltiSnipsJumpBackwardTrigger\n<tab> UltiSnipsJumpForwardTrigger\6g\bvim\0", "config", "ultisnips")
+time([[Config for ultisnips]], false)
+-- Config for: telescope.nvim
+time([[Config for telescope.nvim]], true)
+try_loadstring("\27LJ\1\2\1\0\0\4\0\t\0\r4\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\3\0004\2\4\0007\2\5\0027\2\6\2%\3\a\0>\2\2\2:\2\b\1>\0\2\1G\0\1\0\bcwd\vconfig\fstdpath\afn\bvim\1\0\2\14previewer\1\17prompt_title\nvimrc\15find_files\22telescope.builtin\frequire\v\1\0\6\0=\0\0014\0\0\0%\1\1\0>\0\2\0027\0\2\0004\1\0\0%\2\3\0>\1\2\0027\1\4\0013\2\28\0003\3\5\0003\4\6\0:\4\a\0033\4\b\0003\5\t\0:\5\n\0043\5\v\0:\5\f\0043\5\r\0:\5\14\4:\4\15\0034\4\0\0%\5\16\0>\4\2\0027\4\17\0047\4\18\4:\4\19\0034\4\0\0%\5\16\0>\4\2\0027\4\20\0047\4\18\4:\4\21\0034\4\0\0%\5\16\0>\4\2\0027\4\22\0047\4\18\4:\4\23\0033\4\25\0003\5\24\0:\5\26\4:\4\27\3:\3\29\2>\1\2\1\16\1\0\0003\2\30\0004\3\0\0%\4\31\0>\3\2\0027\3 \3;\3\2\2>\1\2\1\16\1\0\0003\2!\0004\3\0\0%\4\31\0>\3\2\0027\3\"\3;\3\2\2>\1\2\1\16\1\0\0003\2#\0004\3\0\0%\4\3\0>\3\2\0027\3\27\0037\3\26\0037\3$\3;\3\2\2>\1\2\1\16\1\0\0003\2%\0004\3\0\0%\4\31\0>\3\2\0027\3&\3;\3\2\2>\1\2\1\16\1\0\0003\2'\0004\3\0\0%\4\31\0>\3\2\0027\3(\3;\3\2\2>\1\2\1\16\1\0\0003\2)\0004\3\0\0%\4\31\0>\3\2\0027\3*\3;\3\2\2>\1\2\1\16\1\0\0003\2+\0004\3\0\0%\4\31\0>\3\2\0027\3,\3;\3\2\2>\1\2\1\16\1\0\0003\2-\0004\3\0\0%\4\31\0>\3\2\0027\3.\3;\3\2\2>\1\2\1\16\1\0\0003\2/\0004\3\0\0%\4\31\0>\3\2\0027\0030\3;\3\2\2>\1\2\1\16\1\0\0003\0021\0004\3\0\0%\4\31\0>\3\2\0027\0032\3;\3\2\2>\1\2\1\16\1\0\0003\0023\0004\3\0\0%\4\31\0>\3\2\0027\0034\3;\3\2\2>\1\2\1\16\1\0\0003\0025\0001\0036\0;\3\2\2>\1\2\1\16\1\0\0003\0027\0004\3\0\0%\4\31\0>\3\2\0027\0038\3;\3\2\2>\1\2\1\16\1\0\0003\0029\0004\3\0\0%\4\31\0>\3\2\0027\3:\3;\3\2\2>\1\2\1\16\1\0\0003\2;\0004\3\0\0%\4\31\0>\3\2\0027\3<\3;\3\2\2>\1\2\1G\0\1\0\19lsp_references\1\2\0\0\a;r\25lsp_document_symbols\1\2\0\0\a;0\21lsp_code_actions\1\2\0\0\a;a\0\1\2\0\0\a;v\rcommands\1\2\0\0\a;c\14help_tags\1\2\0\0\a;H\20command_history\1\2\0\0\a;h\ttags\1\2\0\0\a;t\fbuffers\1\2\0\0\a;b\17file_browser\1\2\0\0\a;w\30current_buffer_fuzzy_find\1\2\0\0\a;l\afd\1\2\0\0\a;f\16staged_grep\1\2\0\0\a;g\floclist\1\2\0\0\a;c\rquickfix\22telescope.builtin\1\2\0\0\a;q\rdefaults\1\0\0\15extensions\15fzf_writer\1\0\0\1\0\3\28minimum_grep_characters\3\4\17shorten_path\2\20use_highlighter\2\21qflist_previewer\22vim_buffer_qflist\19grep_previewer\23vim_buffer_vimgrep\19file_previewer\bnew\19vim_buffer_cat\25telescope.previewers\16borderchars\fpreview\1\t\0\0\b─\b│\b─\b│\b┌\b┐\b┘\b└\fresults\1\2\0\0\6 \vprompt\1\t\0\0\b─\6 \6 \6 \b─\b─\6 \6 \1\2\0\0\6z\18layout_config\1\0\2\vheight\3\20\19preview_cutoff\3\1\1\0\6\21sorting_strategy\14ascending\20layout_strategy\16bottom_pane\18preview_title\5\vborder\2\18prompt_prefix\a> \20selection_caret\a* \nsetup\14telescope\rnnoremap\22astronauta.keymap\frequire\0", "config", "telescope.nvim")
+time([[Config for telescope.nvim]], false)
+-- Config for: vim-startify
+time([[Config for vim-startify]], true)
+try_loadstring("\27LJ\1\2\1\0\0\4\0\6\0\v4\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\4\0002\2\3\0003\3\3\0;\3\1\2:\2\5\1>\0\2\1G\0\1\0\rstartify\1\0\0\1\4\0\0\rFileType\rstartify\29 IndentBlanklineDisable \raugroup2\nutils\frequire\0", "config", "vim-startify")
+time([[Config for vim-startify]], false)
+-- Config for: nvim-colorizer.lua
+time([[Config for nvim-colorizer.lua]], true)
+try_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", "nvim-colorizer.lua")
+time([[Config for nvim-colorizer.lua]], false)
+-- Config for: nvim-compe
+time([[Config for nvim-compe]], true)
+try_loadstring("\27LJ\1\2\3\0\0\3\0\r\0\0214\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\3\0003\2\4\0:\2\5\0013\2\6\0:\2\a\1>\0\2\0014\0\b\0007\0\t\0%\1\n\0>\0\2\0014\0\0\0%\1\v\0>\0\2\0027\0\2\0003\1\f\0>\0\2\1G\0\1\0\1\0\2\17map_complete\2\vmap_cr\2$nvim-autopairs.completion.compe\1        inoremap <silent><expr> <c-space> compe#complete()\n        inoremap <silent><expr> <c-e>     compe#close('<c-e>')\n      \bcmd\bvim\vsource\1\0\a\vbuffer\2\rnvim_lua\2\rnvim_lsp\2\ttags\2\forgmode\2\14ultisnips\2\tpath\2\18documentation\1\0\1\vborder\vsingle\1\0\3\17autocomplete\2\14preselect\venable\fenabled\2\nsetup\ncompe\frequire\0", "config", "nvim-compe")
+time([[Config for nvim-compe]], false)
+-- Config for: neuron.nvim
+time([[Config for neuron.nvim]], true)
+try_loadstring("\27LJ\1\2\4\0\0\2\0\n\0\0234\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\3\0>\0\2\0014\0\4\0007\0\5\0%\1\6\0>\0\2\0014\0\4\0007\0\5\0%\1\a\0>\0\2\0014\0\4\0007\0\5\0%\1\b\0>\0\2\0014\0\4\0007\0\5\0%\1\t\0>\0\2\1G\0\1\0F command! NeuronTags lua require('neuron.telescope').find_tags() ` command! NeuronZettelsInsert lua require('neuron.telescope').find_zettels {insert = true} [ command! NeuronZettels lua require('neuron.telescope').find_zettels {insert = false} b command! NeuronServe lua require('neuron').rib {address = \"127.0.0.1:8200\", verbose = true} \bcmd\bvim\1\0\4\15neuron_dir\n~/.zk\vleader\agz\rmappings\2\19virtual_titles\2\nsetup\vneuron\frequire\0", "config", "neuron.nvim")
+time([[Config for neuron.nvim]], false)
+-- Config for: nvim-lspconfig
+time([[Config for nvim-lspconfig]], true)
+try_loadstring("\27LJ\1\0021\0\0\2\0\3\0\0064\0\0\0%\1\1\0>\0\2\0027\0\2\0>\0\1\1G\0\1\0\nsetup\blsp\frequire\0", "config", "nvim-lspconfig")
+time([[Config for nvim-lspconfig]], false)
+-- Config for: vim-signify
+time([[Config for vim-signify]], true)
+try_loadstring("\27LJ\1\0028\0\0\2\0\3\0\0064\0\0\0007\0\1\0007\0\2\0'\1\1\0>\0\2\1G\0\1\0\22sy#jump#next_hunk\afn\bvim8\0\0\2\0\3\0\0064\0\0\0007\0\1\0007\0\2\0'\1\1\0>\0\2\1G\0\1\0\22sy#jump#prev_hunk\afn\bvim\1\1\0\4\0\v\0\0194\0\0\0%\1\1\0>\0\2\0027\0\2\0004\1\3\0007\1\4\1%\2\6\0:\2\5\1\16\1\0\0003\2\a\0001\3\b\0;\3\2\2>\1\2\1\16\1\0\0003\2\t\0001\3\n\0;\3\2\2>\1\2\1G\0\1\0\0\1\2\0\0\a[h\0\1\2\0\0\a]h\6~\24signify_sign_change\6g\bvim\rnnoremap\22astronauta.keymap\frequire\0", "config", "vim-signify")
+time([[Config for vim-signify]], false)
+-- Config for: null-ls.nvim
+time([[Config for null-ls.nvim]], true)
+try_loadstring("\27LJ\1\2\2\0\0\5\0\21\00014\0\0\0%\1\1\0>\0\2\0027\1\2\0003\2\r\0002\3\b\0007\4\3\0007\4\4\0047\4\5\4;\4\1\0037\4\3\0007\4\4\0047\4\6\4;\4\2\0037\4\3\0007\4\4\0047\4\a\4;\4\3\0037\4\3\0007\4\4\0047\4\b\4;\4\4\0037\4\3\0007\4\4\0047\4\t\4;\4\5\0037\4\3\0007\4\4\0047\4\n\4;\4\6\0037\4\3\0007\4\v\0047\4\f\4;\4\a\3:\3\14\2>\1\2\0014\1\0\0%\2\15\0>\1\2\0027\1\1\0017\1\16\0013\2\19\0004\3\0\0%\4\17\0>\3\2\0027\3\18\3:\3\20\2>\1\2\1G\0\1\0\14on_attach\1\0\0\14my_attach\blsp\nsetup\14lspconfig\fsources\1\0\0\15shellcheck\16diagnostics\tyapf\nshfmt\frustfmt\14json_tool\fgofumpt\17clang_format\15formatting\rbuiltins\vconfig\fnull-ls\frequire\0", "config", "null-ls.nvim")
+time([[Config for null-ls.nvim]], false)
+-- Config for: nvim-autopairs
+time([[Config for nvim-autopairs]], true)
+try_loadstring("\27LJ\1\2<\0\0\2\0\3\0\0064\0\0\0%\1\1\0>\0\2\0027\0\2\0>\0\1\1G\0\1\0\nsetup\19nvim-autopairs\frequire\0", "config", "nvim-autopairs")
+time([[Config for nvim-autopairs]], false)
+-- Config for: zen-mode.nvim
+time([[Config for zen-mode.nvim]], true)
+try_loadstring("\27LJ\1\2\1\0\0\4\0\r\0\0174\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\6\0003\2\3\0003\3\4\0:\3\5\2:\2\a\0013\2\t\0003\3\b\0:\3\5\0023\3\n\0:\3\v\2:\2\f\1>\0\2\1G\0\1\0\fplugins\rtwilight\1\0\1\fenabled\2\1\0\0\1\0\3\fenabled\2\nruler\1\fshowcmd\1\vwindow\1\0\0\foptions\1\0\2\tlist\1\vnumber\1\1\0\2\rbackdrop\3\1\nwidth\4̙\3\3\nsetup\rzen-mode\frequire\0", "config", "zen-mode.nvim")
+time([[Config for zen-mode.nvim]], false)
+-- Config for: nvim-lightbulb
+time([[Config for nvim-lightbulb]], true)
+try_loadstring("\27LJ\1\2\3\0\0\4\0\23\0!4\0\0\0%\1\1\0>\0\2\0027\0\2\0003\1\4\0003\2\3\0:\2\5\0013\2\6\0002\3\0\0:\3\a\2:\2\b\0013\2\t\0:\2\n\0013\2\v\0:\2\f\1>\0\2\0014\0\r\0007\0\14\0007\0\15\0%\1\16\0003\2\17\0>\0\3\0014\0\0\0%\1\18\0>\0\2\0027\0\19\0003\1\21\0002\2\3\0003\3\20\0;\3\1\2:\2\22\1>\0\2\1G\0\1\0\14lightbulb\1\0\0\1\4\0\0\15CursorHold\6*5lua require('nvim-lightbulb').update_lightbulb()\raugroup2\nutils\1\0\2\ttext\b⚐\vtexthl\25LightBulbVirtualText\18LightBulbSign\16sign_define\afn\bvim\16status_text\1\0\1\fenabled\1\17virtual_text\1\0\2\fenabled\1\ttext\n󱉵 \nfloat\rwin_opts\1\0\2\ttext\n󱉵 \fenabled\2\tsign\1\0\0\1\0\2\fenabled\2\rpriority\3\n\21update_lightbulb\19nvim-lightbulb\frequire\0", "config", "nvim-lightbulb")
+time([[Config for nvim-lightbulb]], false)
+vim.cmd [[augroup packer_load_aucmds]]
+vim.cmd [[au!]]
+  -- Filetype lazy-loads
+time([[Defining lazy-load filetype autocommands]], true)
+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)]]
+time([[Defining lazy-load filetype autocommands]], false)
+vim.cmd("augroup END")
+vim.cmd [[augroup filetypedetect]]
+time([[Sourcing ftdetect script at: /usr/local/share/nvim/site/pack/packer/opt/vimtex/ftdetect/tex.vim]], true)
+vim.cmd [[source /usr/local/share/nvim/site/pack/packer/opt/vimtex/ftdetect/tex.vim]]
+time([[Sourcing ftdetect script at: /usr/local/share/nvim/site/pack/packer/opt/vimtex/ftdetect/tex.vim]], false)
+time([[Sourcing ftdetect script at: /usr/local/share/nvim/site/pack/packer/opt/vim-cue/ftdetect/cue.vim]], true)
+vim.cmd [[source /usr/local/share/nvim/site/pack/packer/opt/vim-cue/ftdetect/cue.vim]]
+time([[Sourcing ftdetect script at: /usr/local/share/nvim/site/pack/packer/opt/vim-cue/ftdetect/cue.vim]], false)
+time([[Sourcing ftdetect script at: /usr/local/share/nvim/site/pack/packer/opt/vim-markdown/ftdetect/markdown.vim]], true)
+vim.cmd [[source /usr/local/share/nvim/site/pack/packer/opt/vim-markdown/ftdetect/markdown.vim]]
+time([[Sourcing ftdetect script at: /usr/local/share/nvim/site/pack/packer/opt/vim-markdown/ftdetect/markdown.vim]], false)
+vim.cmd("augroup END")
+if should_profile then save_profiles() end
+
+end)
+
+if not no_errors then
+  vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None')
+end
diff --git a/.vim/plugin/packer_compiled.vim b/.vim/plugin/packer_compiled.vim
deleted file mode 100644
index a36d052..0000000
--- a/.vim/plugin/packer_compiled.vim
+++ /dev/null
@@ -1,347 +0,0 @@
-" Automatically generated packer.nvim plugin loader code
-
-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 time
-  local profile_info
-  local should_profile = false
-  if should_profile then
-    local hrtime = vim.loop.hrtime
-    profile_info = {}
-    time = function(chunk, start)
-      if start then
-        profile_info[chunk] = hrtime()
-      else
-        profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6
-      end
-    end
-  else
-    time = function(chunk, start) end
-  end
-
-local function save_profiles(threshold)
-  local sorted_times = {}
-  for chunk_name, time_taken in pairs(profile_info) do
-    sorted_times[#sorted_times + 1] = {chunk_name, time_taken}
-  end
-  table.sort(sorted_times, function(a, b) return a[2] > b[2] end)
-  local results = {}
-  for i, elem in ipairs(sorted_times) do
-    if not threshold or threshold and elem[2] > threshold then
-      results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms'
-    end
-  end
-
-  _G._packer = _G._packer or {}
-  _G._packer.profile_output = results
-end
-
-time("Luarocks path setup", true)
-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
-
-time("Luarocks path setup", false)
-time("try_loadstring definition", true)
-local function try_loadstring(s, component, name)
-  local success, result = pcall(loadstring(s))
-  if not success then
-    vim.schedule(function()
-      vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {})
-    end)
-  end
-  return result
-end
-
-time("try_loadstring definition", false)
-time("Defining packer_plugins", true)
-_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"
-  },
-  ["editorconfig-vim"] = {
-    config = { "require('plugins._editorconfig')" },
-    loaded = true,
-    path = "/home/robert/.local/share/nvim/site/pack/packer/start/editorconfig-vim"
-  },
-  ["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,
-    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,
-    needs_bufread = false,
-    path = "/home/robert/.local/share/nvim/site/pack/packer/opt/limelight.vim"
-  },
-  ["lush.nvim"] = {
-    loaded = true,
-    path = "/home/robert/.local/share/nvim/site/pack/packer/start/lush.nvim"
-  },
-  neoformat = {
-    loaded = true,
-    path = "/home/robert/.local/share/nvim/site/pack/packer/start/neoformat"
-  },
-  neogit = {
-    loaded = true,
-    path = "/home/robert/.local/share/nvim/site/pack/packer/start/neogit"
-  },
-  ["neuron.nvim"] = {
-    config = { "require('.plugins._neuron')" },
-    loaded = true,
-    path = "/home/robert/.local/share/nvim/site/pack/packer/start/neuron.nvim"
-  },
-  ["nvim-colorizer.lua"] = {
-    config = { "require('plugins._colorizer')" },
-    loaded = true,
-    path = "/home/robert/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua"
-  },
-  ["nvim-lightbulb"] = {
-    config = { "require('plugins._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,
-    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-github-link"] = {
-    loaded = true,
-    path = "/home/robert/.local/share/nvim/site/pack/packer/start/vim-github-link"
-  },
-  ["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,
-    needs_bufread = true,
-    path = "/home/robert/.local/share/nvim/site/pack/packer/opt/vim-markdown"
-  },
-  ["vim-markdown-folding"] = {
-    loaded = 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,
-    needs_bufread = true,
-    path = "/home/robert/.local/share/nvim/site/pack/packer/opt/vimtex"
-  }
-}
-
-time("Defining packer_plugins", false)
--- Config for: telescope.nvim
-time("Config for telescope.nvim", true)
-require('plugins._telescope')
-time("Config for telescope.nvim", false)
--- Config for: editorconfig-vim
-time("Config for editorconfig-vim", true)
-require('plugins._editorconfig')
-time("Config for editorconfig-vim", false)
--- Config for: neuron.nvim
-time("Config for neuron.nvim", true)
-require('.plugins._neuron')
-time("Config for neuron.nvim", false)
--- Config for: git-messenger.vim
-time("Config for git-messenger.vim", true)
-require('plugins._git-messenger')
-time("Config for git-messenger.vim", false)
--- Config for: completion-nvim
-time("Config for completion-nvim", true)
-require('plugins._completion')
-time("Config for completion-nvim", false)
--- Config for: nvim-lightbulb
-time("Config for nvim-lightbulb", true)
-require('plugins._lightbulb')
-time("Config for nvim-lightbulb", false)
--- Config for: nvim-colorizer.lua
-time("Config for nvim-colorizer.lua", true)
-require('plugins._colorizer')
-time("Config for nvim-colorizer.lua", false)
--- Config for: vim-signify
-time("Config for vim-signify", true)
-require('plugins._signify')
-time("Config for vim-signify", false)
--- Config for: vim-sneak
-time("Config for vim-sneak", true)
-vim.g['sneak#label'] = true
-time("Config for vim-sneak", false)
--- Config for: nvim-lspconfig
-time("Config for nvim-lspconfig", true)
-require('plugins._lsp')
-time("Config for nvim-lspconfig", false)
--- Config for: ultisnips
-time("Config for ultisnips", true)
-require('plugins._ultisnips')
-time("Config for ultisnips", false)
--- Config for: nvim-treesitter
-time("Config for nvim-treesitter", true)
-require('plugins._treesitter')
-time("Config for nvim-treesitter", false)
-
--- Command lazy-loads
-time("Defining lazy-load commands", true)
-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 [[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)]]
-time("Defining lazy-load commands", false)
-
-vim.cmd [[augroup packer_load_aucmds]]
-vim.cmd [[au!]]
-  -- Filetype lazy-loads
-time("Defining lazy-load filetype autocommands", true)
-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)]]
-time("Defining lazy-load filetype autocommands", false)
-vim.cmd("augroup END")
-vim.cmd [[augroup filetypedetect]]
-time("Sourcing ftdetect script at: /home/robert/.local/share/nvim/site/pack/packer/opt/vimtex/ftdetect/tex.vim", true)
-vim.cmd [[source /home/robert/.local/share/nvim/site/pack/packer/opt/vimtex/ftdetect/tex.vim]]
-time("Sourcing ftdetect script at: /home/robert/.local/share/nvim/site/pack/packer/opt/vimtex/ftdetect/tex.vim", false)
-time("Sourcing ftdetect script at: /home/robert/.local/share/nvim/site/pack/packer/opt/vim-markdown/ftdetect/markdown.vim", true)
-vim.cmd [[source /home/robert/.local/share/nvim/site/pack/packer/opt/vim-markdown/ftdetect/markdown.vim]]
-time("Sourcing ftdetect script at: /home/robert/.local/share/nvim/site/pack/packer/opt/vim-markdown/ftdetect/markdown.vim", false)
-time("Sourcing ftdetect script at: /home/robert/.local/share/nvim/site/pack/packer/opt/vim-cue/ftdetect/cue.vim", true)
-vim.cmd [[source /home/robert/.local/share/nvim/site/pack/packer/opt/vim-cue/ftdetect/cue.vim]]
-time("Sourcing ftdetect script at: /home/robert/.local/share/nvim/site/pack/packer/opt/vim-cue/ftdetect/cue.vim", false)
-vim.cmd("augroup END")
-if should_profile then save_profiles() end
-
-END
-
-catch
-  echohl ErrorMsg
-  echom "Error in packer_compiled: " .. v:exception
-  echom "Please check your config for correctness"
-  echohl None
-endtry