From 4a903ca920b43184efb05a30c0bb79d21b56e0a9 Mon Sep 17 00:00:00 2001 From: Jacob McDonnell Date: Tue, 26 Mar 2024 21:43:28 -0400 Subject: Updated neovim based on theprimagen --- .config/hypr/hyprland.conf | 6 + .config/nvim.bak/.netrwhist | 11 + .config/nvim.bak/colors/gruvbox.vim | 1418 ++++++++++++++++++++++++++++++ .config/nvim.bak/init.vim | 120 +++ .config/nvim.bak/lua/dap_lldb.lua | 25 + .config/nvim.bak/lua/lsp_config.lua | 100 +++ .config/nvim/.netrwhist | 11 - .config/nvim/after/plugin/harpoon.lua | 41 + .config/nvim/after/plugin/lsp.lua | 20 + .config/nvim/after/plugin/telescope.lua | 6 + .config/nvim/after/plugin/treesitter.lua | 21 + .config/nvim/colors/gruvbox.vim | 1418 ------------------------------ .config/nvim/init.lua | 1 + .config/nvim/init.vim | 120 --- .config/nvim/lazy-lock.json | 14 + .config/nvim/lua/dap_lldb.lua | 25 - .config/nvim/lua/jacob/init.lua | 3 + .config/nvim/lua/jacob/plugins.lua | 58 ++ .config/nvim/lua/jacob/remaps.lua | 42 + .config/nvim/lua/jacob/set.lua | 32 + .config/nvim/lua/lsp_config.lua | 100 --- 21 files changed, 1918 insertions(+), 1674 deletions(-) create mode 100644 .config/nvim.bak/.netrwhist create mode 100644 .config/nvim.bak/colors/gruvbox.vim create mode 100644 .config/nvim.bak/init.vim create mode 100644 .config/nvim.bak/lua/dap_lldb.lua create mode 100644 .config/nvim.bak/lua/lsp_config.lua delete mode 100644 .config/nvim/.netrwhist create mode 100644 .config/nvim/after/plugin/harpoon.lua create mode 100644 .config/nvim/after/plugin/lsp.lua create mode 100644 .config/nvim/after/plugin/telescope.lua create mode 100644 .config/nvim/after/plugin/treesitter.lua delete mode 100644 .config/nvim/colors/gruvbox.vim create mode 100644 .config/nvim/init.lua delete mode 100644 .config/nvim/init.vim create mode 100644 .config/nvim/lazy-lock.json delete mode 100644 .config/nvim/lua/dap_lldb.lua create mode 100644 .config/nvim/lua/jacob/init.lua create mode 100644 .config/nvim/lua/jacob/plugins.lua create mode 100644 .config/nvim/lua/jacob/remaps.lua create mode 100644 .config/nvim/lua/jacob/set.lua delete mode 100644 .config/nvim/lua/lsp_config.lua (limited to '.config') diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index 1dcfaa2..20b91b9 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -150,6 +150,12 @@ bind = $mainMod, L, movefocus, r bind = $mainMod, K, movefocus, u bind = $mainMod, J, movefocus, d +# Move windows around +bind = $mainMod SHIFT, H, movewindow, l +bind = $mainMod SHIFT, L, movewindow, r +bind = $mainMod SHIFT, K, movewindow, u +bind = $mainMod SHIFT, J, movewindow, d + # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 diff --git a/.config/nvim.bak/.netrwhist b/.config/nvim.bak/.netrwhist new file mode 100644 index 0000000..f1f9805 --- /dev/null +++ b/.config/nvim.bak/.netrwhist @@ -0,0 +1,11 @@ +let g:netrw_dirhistmax =10 +let g:netrw_dirhistcnt =9 +let g:netrw_dirhist_9='/Users/jmm/Documents/git/ticalcprograms/FibFinder/src' +let g:netrw_dirhist_8='/Users/jmm/Documents/git/ticalcprograms/FibFinder' +let g:netrw_dirhist_7='/Users/jmm/Documents/git/ticalcprograms/FizzBuzz/src' +let g:netrw_dirhist_6='/opt/CEdev/examples/hello_world/src' +let g:netrw_dirhist_5='/opt/CEdev/examples/hello_world' +let g:netrw_dirhist_4='/home/jmm/.config/gzdoom' +let g:netrw_dirhist_3='/home/jmm/.local/share/xsessions' +let g:netrw_dirhist_2='/home/jmm/.config/ncmpcpp' +let g:netrw_dirhist_1='/home/jmm/st/.git' diff --git a/.config/nvim.bak/colors/gruvbox.vim b/.config/nvim.bak/colors/gruvbox.vim new file mode 100644 index 0000000..66246fb --- /dev/null +++ b/.config/nvim.bak/colors/gruvbox.vim @@ -0,0 +1,1418 @@ +" ----------------------------------------------------------------------------- +" File: gruvbox.vim +" Description: Retro groove color scheme for Vim +" Author: morhetz +" Source: https://github.com/morhetz/gruvbox +" Last Modified: 12 Aug 2017 +" ----------------------------------------------------------------------------- + +" Supporting code ------------------------------------------------------------- +" Initialisation: {{{ + +if version > 580 + hi clear + if exists("syntax_on") + syntax reset + endif +endif + +let g:colors_name='gruvbox' + +if !(has('termguicolors') && &termguicolors) && !has('gui_running') && &t_Co != 256 + finish +endif + +" }}} +" Global Settings: {{{ + +if !exists('g:gruvbox_bold') + let g:gruvbox_bold=1 +endif +if !exists('g:gruvbox_italic') + if has('gui_running') || $TERM_ITALICS == 'true' + let g:gruvbox_italic=1 + else + let g:gruvbox_italic=0 + endif +endif +if !exists('g:gruvbox_undercurl') + let g:gruvbox_undercurl=1 +endif +if !exists('g:gruvbox_underline') + let g:gruvbox_underline=1 +endif +if !exists('g:gruvbox_inverse') + let g:gruvbox_inverse=1 +endif + +if !exists('g:gruvbox_guisp_fallback') || index(['fg', 'bg'], g:gruvbox_guisp_fallback) == -1 + let g:gruvbox_guisp_fallback='NONE' +endif + +if !exists('g:gruvbox_improved_strings') + let g:gruvbox_improved_strings=0 +endif + +if !exists('g:gruvbox_improved_warnings') + let g:gruvbox_improved_warnings=0 +endif + +if !exists('g:gruvbox_termcolors') + let g:gruvbox_termcolors=256 +endif + +if !exists('g:gruvbox_invert_indent_guides') + let g:gruvbox_invert_indent_guides=0 +endif + +if exists('g:gruvbox_contrast') + echo 'g:gruvbox_contrast is deprecated; use g:gruvbox_contrast_light and g:gruvbox_contrast_dark instead' +endif + +if !exists('g:gruvbox_contrast_dark') + let g:gruvbox_contrast_dark='medium' +endif + +if !exists('g:gruvbox_contrast_light') + let g:gruvbox_contrast_light='medium' +endif + +let s:is_dark=(&background == 'dark') + +" }}} +" Palette: {{{ + +" setup palette dictionary +let s:gb = {} + +" fill it with absolute colors +let s:gb.dark0_hard = ['#1d2021', 234] " 29-32-33 +let s:gb.dark0 = ['#282828', 235] " 40-40-40 +let s:gb.dark0_soft = ['#32302f', 236] " 50-48-47 +let s:gb.dark1 = ['#3c3836', 237] " 60-56-54 +let s:gb.dark2 = ['#504945', 239] " 80-73-69 +let s:gb.dark3 = ['#665c54', 241] " 102-92-84 +let s:gb.dark4 = ['#7c6f64', 243] " 124-111-100 +let s:gb.dark4_256 = ['#7c6f64', 243] " 124-111-100 + +let s:gb.gray_245 = ['#928374', 245] " 146-131-116 +let s:gb.gray_244 = ['#928374', 244] " 146-131-116 + +let s:gb.light0_hard = ['#f9f5d7', 230] " 249-245-215 +let s:gb.light0 = ['#fbf1c7', 229] " 253-244-193 +let s:gb.light0_soft = ['#f2e5bc', 228] " 242-229-188 +let s:gb.light1 = ['#ebdbb2', 223] " 235-219-178 +let s:gb.light2 = ['#d5c4a1', 250] " 213-196-161 +let s:gb.light3 = ['#bdae93', 248] " 189-174-147 +let s:gb.light4 = ['#a89984', 246] " 168-153-132 +let s:gb.light4_256 = ['#a89984', 246] " 168-153-132 + +let s:gb.bright_red = ['#fb4934', 167] " 251-73-52 +let s:gb.bright_green = ['#b8bb26', 142] " 184-187-38 +let s:gb.bright_yellow = ['#fabd2f', 214] " 250-189-47 +let s:gb.bright_blue = ['#83a598', 109] " 131-165-152 +let s:gb.bright_purple = ['#d3869b', 175] " 211-134-155 +let s:gb.bright_aqua = ['#8ec07c', 108] " 142-192-124 +let s:gb.bright_orange = ['#fe8019', 208] " 254-128-25 + +let s:gb.neutral_red = ['#cc241d', 124] " 204-36-29 +let s:gb.neutral_green = ['#98971a', 106] " 152-151-26 +let s:gb.neutral_yellow = ['#d79921', 172] " 215-153-33 +let s:gb.neutral_blue = ['#458588', 66] " 69-133-136 +let s:gb.neutral_purple = ['#b16286', 132] " 177-98-134 +let s:gb.neutral_aqua = ['#689d6a', 72] " 104-157-106 +let s:gb.neutral_orange = ['#d65d0e', 166] " 214-93-14 + +let s:gb.faded_red = ['#9d0006', 88] " 157-0-6 +let s:gb.faded_green = ['#79740e', 100] " 121-116-14 +let s:gb.faded_yellow = ['#b57614', 136] " 181-118-20 +let s:gb.faded_blue = ['#076678', 24] " 7-102-120 +let s:gb.faded_purple = ['#8f3f71', 96] " 143-63-113 +let s:gb.faded_aqua = ['#427b58', 66] " 66-123-88 +let s:gb.faded_orange = ['#af3a03', 130] " 175-58-3 + +" }}} +" Setup Emphasis: {{{ + +let s:bold = 'bold,' +if g:gruvbox_bold == 0 + let s:bold = '' +endif + +let s:italic = 'italic,' +if g:gruvbox_italic == 0 + let s:italic = '' +endif + +let s:underline = 'underline,' +if g:gruvbox_underline == 0 + let s:underline = '' +endif + +let s:undercurl = 'undercurl,' +if g:gruvbox_undercurl == 0 + let s:undercurl = '' +endif + +let s:inverse = 'inverse,' +if g:gruvbox_inverse == 0 + let s:inverse = '' +endif + +" }}} +" Setup Colors: {{{ + +let s:vim_bg = ['bg', 'bg'] +let s:vim_fg = ['fg', 'fg'] +let s:none = ['NONE', 'NONE'] + +" determine relative colors +if s:is_dark + let s:bg0 = s:gb.dark0 + if g:gruvbox_contrast_dark == 'soft' + let s:bg0 = s:gb.dark0_soft + elseif g:gruvbox_contrast_dark == 'hard' + let s:bg0 = s:gb.dark0_hard + endif + + let s:bg1 = s:gb.dark1 + let s:bg2 = s:gb.dark2 + let s:bg3 = s:gb.dark3 + let s:bg4 = s:gb.dark4 + + let s:gray = s:gb.gray_245 + + let s:fg0 = s:gb.light0 + let s:fg1 = s:gb.light1 + let s:fg2 = s:gb.light2 + let s:fg3 = s:gb.light3 + let s:fg4 = s:gb.light4 + + let s:fg4_256 = s:gb.light4_256 + + let s:red = s:gb.bright_red + let s:green = s:gb.bright_green + let s:yellow = s:gb.bright_yellow + let s:blue = s:gb.bright_blue + let s:purple = s:gb.bright_purple + let s:aqua = s:gb.bright_aqua + let s:orange = s:gb.bright_orange +else + let s:bg0 = s:gb.light0 + if g:gruvbox_contrast_light == 'soft' + let s:bg0 = s:gb.light0_soft + elseif g:gruvbox_contrast_light == 'hard' + let s:bg0 = s:gb.light0_hard + endif + + let s:bg1 = s:gb.light1 + let s:bg2 = s:gb.light2 + let s:bg3 = s:gb.light3 + let s:bg4 = s:gb.light4 + + let s:gray = s:gb.gray_244 + + let s:fg0 = s:gb.dark0 + let s:fg1 = s:gb.dark1 + let s:fg2 = s:gb.dark2 + let s:fg3 = s:gb.dark3 + let s:fg4 = s:gb.dark4 + + let s:fg4_256 = s:gb.dark4_256 + + let s:red = s:gb.faded_red + let s:green = s:gb.faded_green + let s:yellow = s:gb.faded_yellow + let s:blue = s:gb.faded_blue + let s:purple = s:gb.faded_purple + let s:aqua = s:gb.faded_aqua + let s:orange = s:gb.faded_orange +endif + +" reset to 16 colors fallback +if g:gruvbox_termcolors == 16 + let s:bg0[1] = 0 + let s:fg4[1] = 7 + let s:gray[1] = 8 + let s:red[1] = 9 + let s:green[1] = 10 + let s:yellow[1] = 11 + let s:blue[1] = 12 + let s:purple[1] = 13 + let s:aqua[1] = 14 + let s:fg1[1] = 15 +endif + +" save current relative colors back to palette dictionary +let s:gb.bg0 = s:bg0 +let s:gb.bg1 = s:bg1 +let s:gb.bg2 = s:bg2 +let s:gb.bg3 = s:bg3 +let s:gb.bg4 = s:bg4 + +let s:gb.gray = s:gray + +let s:gb.fg0 = s:fg0 +let s:gb.fg1 = s:fg1 +let s:gb.fg2 = s:fg2 +let s:gb.fg3 = s:fg3 +let s:gb.fg4 = s:fg4 + +let s:gb.fg4_256 = s:fg4_256 + +let s:gb.red = s:red +let s:gb.green = s:green +let s:gb.yellow = s:yellow +let s:gb.blue = s:blue +let s:gb.purple = s:purple +let s:gb.aqua = s:aqua +let s:gb.orange = s:orange + +" }}} +" Setup Terminal Colors For Neovim: {{{ + +if has('nvim') + let g:terminal_color_0 = s:bg0[0] + let g:terminal_color_8 = s:gray[0] + + let g:terminal_color_1 = s:gb.neutral_red[0] + let g:terminal_color_9 = s:red[0] + + let g:terminal_color_2 = s:gb.neutral_green[0] + let g:terminal_color_10 = s:green[0] + + let g:terminal_color_3 = s:gb.neutral_yellow[0] + let g:terminal_color_11 = s:yellow[0] + + let g:terminal_color_4 = s:gb.neutral_blue[0] + let g:terminal_color_12 = s:blue[0] + + let g:terminal_color_5 = s:gb.neutral_purple[0] + let g:terminal_color_13 = s:purple[0] + + let g:terminal_color_6 = s:gb.neutral_aqua[0] + let g:terminal_color_14 = s:aqua[0] + + let g:terminal_color_7 = s:fg4[0] + let g:terminal_color_15 = s:fg1[0] +endif + +" }}} +" Overload Setting: {{{ + +let s:hls_cursor = s:orange +if exists('g:gruvbox_hls_cursor') + let s:hls_cursor = get(s:gb, g:gruvbox_hls_cursor) +endif + +let s:number_column = s:none +if exists('g:gruvbox_number_column') + let s:number_column = get(s:gb, g:gruvbox_number_column) +endif + +let s:sign_column = s:bg1 + +if exists('g:gitgutter_override_sign_column_highlight') && + \ g:gitgutter_override_sign_column_highlight == 1 + let s:sign_column = s:number_column +else + let g:gitgutter_override_sign_column_highlight = 0 + + if exists('g:gruvbox_sign_column') + let s:sign_column = get(s:gb, g:gruvbox_sign_column) + endif +endif + +let s:color_column = s:bg1 +if exists('g:gruvbox_color_column') + let s:color_column = get(s:gb, g:gruvbox_color_column) +endif + +let s:vert_split = s:bg0 +if exists('g:gruvbox_vert_split') + let s:vert_split = get(s:gb, g:gruvbox_vert_split) +endif + +let s:invert_signs = '' +if exists('g:gruvbox_invert_signs') + if g:gruvbox_invert_signs == 1 + let s:invert_signs = s:inverse + endif +endif + +let s:invert_selection = s:inverse +if exists('g:gruvbox_invert_selection') + if g:gruvbox_invert_selection == 0 + let s:invert_selection = '' + endif +endif + +let s:invert_tabline = '' +if exists('g:gruvbox_invert_tabline') + if g:gruvbox_invert_tabline == 1 + let s:invert_tabline = s:inverse + endif +endif + +let s:italicize_comments = s:italic +if exists('g:gruvbox_italicize_comments') + if g:gruvbox_italicize_comments == 0 + let s:italicize_comments = '' + endif +endif + +let s:italicize_strings = '' +if exists('g:gruvbox_italicize_strings') + if g:gruvbox_italicize_strings == 1 + let s:italicize_strings = s:italic + endif +endif + +" }}} +" Highlighting Function: {{{ + +function! s:HL(group, fg, ...) + " Arguments: group, guifg, guibg, gui, guisp + + " foreground + let fg = a:fg + + " background + if a:0 >= 1 + let bg = a:1 + else + let bg = s:none + endif + + " emphasis + if a:0 >= 2 && strlen(a:2) + let emstr = a:2 + else + let emstr = 'NONE,' + endif + + " special fallback + if a:0 >= 3 + if g:gruvbox_guisp_fallback != 'NONE' + let fg = a:3 + endif + + " bg fallback mode should invert higlighting + if g:gruvbox_guisp_fallback == 'bg' + let emstr .= 'inverse,' + endif + endif + + let histring = [ 'hi', a:group, + \ 'guifg=' . fg[0], 'ctermfg=' . fg[1], + \ 'guibg=' . bg[0], 'ctermbg=' . bg[1], + \ 'gui=' . emstr[:-2], 'cterm=' . emstr[:-2] + \ ] + + " special + if a:0 >= 3 + call add(histring, 'guisp=' . a:3[0]) + endif + + execute join(histring, ' ') +endfunction + +" }}} +" Gruvbox Hi Groups: {{{ + +" memoize common hi groups +call s:HL('GruvboxFg0', s:fg0) +call s:HL('GruvboxFg1', s:fg1) +call s:HL('GruvboxFg2', s:fg2) +call s:HL('GruvboxFg3', s:fg3) +call s:HL('GruvboxFg4', s:fg4) +call s:HL('GruvboxGray', s:gray) +call s:HL('GruvboxBg0', s:bg0) +call s:HL('GruvboxBg1', s:bg1) +call s:HL('GruvboxBg2', s:bg2) +call s:HL('GruvboxBg3', s:bg3) +call s:HL('GruvboxBg4', s:bg4) + +call s:HL('GruvboxRed', s:red) +call s:HL('GruvboxRedBold', s:red, s:none, s:bold) +call s:HL('GruvboxGreen', s:green) +call s:HL('GruvboxGreenBold', s:green, s:none, s:bold) +call s:HL('GruvboxYellow', s:yellow) +call s:HL('GruvboxYellowBold', s:yellow, s:none, s:bold) +call s:HL('GruvboxBlue', s:blue) +call s:HL('GruvboxBlueBold', s:blue, s:none, s:bold) +call s:HL('GruvboxPurple', s:purple) +call s:HL('GruvboxPurpleBold', s:purple, s:none, s:bold) +call s:HL('GruvboxAqua', s:aqua) +call s:HL('GruvboxAquaBold', s:aqua, s:none, s:bold) +call s:HL('GruvboxOrange', s:orange) +call s:HL('GruvboxOrangeBold', s:orange, s:none, s:bold) + +call s:HL('GruvboxRedSign', s:red, s:sign_column, s:invert_signs) +call s:HL('GruvboxGreenSign', s:green, s:sign_column, s:invert_signs) +call s:HL('GruvboxYellowSign', s:yellow, s:sign_column, s:invert_signs) +call s:HL('GruvboxBlueSign', s:blue, s:sign_column, s:invert_signs) +call s:HL('GruvboxPurpleSign', s:purple, s:sign_column, s:invert_signs) +call s:HL('GruvboxAquaSign', s:aqua, s:sign_column, s:invert_signs) +call s:HL('GruvboxOrangeSign', s:orange, s:sign_column, s:invert_signs) + +" }}} + +" Vanilla colorscheme --------------------------------------------------------- +" General UI: {{{ + +" Normal text +call s:HL('Normal', s:fg1, s:bg0) + +" Correct background (see issue #7): +" --- Problem with changing between dark and light on 256 color terminal +" --- https://github.com/morhetz/gruvbox/issues/7 +if s:is_dark + set background=dark +else + set background=light +endif + +if version >= 700 + " Screen line that the cursor is + call s:HL('CursorLine', s:none, s:bg1) + " Screen column that the cursor is + hi! link CursorColumn CursorLine + + " Tab pages line filler + call s:HL('TabLineFill', s:bg4, s:bg1, s:invert_tabline) + " Active tab page label + call s:HL('TabLineSel', s:green, s:bg1, s:invert_tabline) + " Not active tab page label + hi! link TabLine TabLineFill + + " Match paired bracket under the cursor + call s:HL('MatchParen', s:none, s:bg3, s:bold) +endif + +if version >= 703 + " Highlighted screen columns + call s:HL('ColorColumn', s:none, s:color_column) + + " Concealed element: \lambda → λ + call s:HL('Conceal', s:blue, s:none) + + " Line number of CursorLine + call s:HL('CursorLineNr', s:yellow, s:bg1) +endif + +hi! link NonText GruvboxBg2 +hi! link SpecialKey GruvboxBg2 + +call s:HL('Visual', s:none, s:bg3, s:invert_selection) +hi! link VisualNOS Visual + +call s:HL('Search', s:yellow, s:bg0, s:inverse) +call s:HL('IncSearch', s:hls_cursor, s:bg0, s:inverse) + +call s:HL('Underlined', s:blue, s:none, s:underline) + +call s:HL('StatusLine', s:bg2, s:fg1, s:inverse) +call s:HL('StatusLineNC', s:bg1, s:fg4, s:inverse) + +" The column separating vertically split windows +call s:HL('VertSplit', s:bg3, s:vert_split) + +" Current match in wildmenu completion +call s:HL('WildMenu', s:blue, s:bg2, s:bold) + +" Directory names, special names in listing +hi! link Directory GruvboxGreenBold + +" Titles for output from :set all, :autocmd, etc. +hi! link Title GruvboxGreenBold + +" Error messages on the command line +call s:HL('ErrorMsg', s:bg0, s:red, s:bold) +" More prompt: -- More -- +hi! link MoreMsg GruvboxYellowBold +" Current mode message: -- INSERT -- +hi! link ModeMsg GruvboxYellowBold +" 'Press enter' prompt and yes/no questions +hi! link Question GruvboxOrangeBold +" Warning messages +hi! link WarningMsg GruvboxRedBold + +" }}} +" Gutter: {{{ + +" Line number for :number and :# commands +call s:HL('LineNr', s:bg4, s:number_column) + +" Column where signs are displayed +call s:HL('SignColumn', s:none, s:sign_column) + +" Line used for closed folds +call s:HL('Folded', s:gray, s:bg1, s:italic) +" Column where folds are displayed +call s:HL('FoldColumn', s:gray, s:bg1) + +" }}} +" Cursor: {{{ + +" Character under cursor +call s:HL('Cursor', s:none, s:none, s:inverse) +" Visual mode cursor, selection +hi! link vCursor Cursor +" Input moder cursor +hi! link iCursor Cursor +" Language mapping cursor +hi! link lCursor Cursor + +" }}} +" Syntax Highlighting: {{{ + +if g:gruvbox_improved_strings == 0 + hi! link Special GruvboxOrange +else + call s:HL('Special', s:orange, s:bg1, s:italicize_strings) +endif + +call s:HL('Comment', s:gray, s:none, s:italicize_comments) +call s:HL('Todo', s:vim_fg, s:vim_bg, s:bold . s:italic) +call s:HL('Error', s:red, s:vim_bg, s:bold . s:inverse) + +" Generic statement +hi! link Statement GruvboxRed +" if, then, else, endif, swicth, etc. +hi! link Conditional GruvboxRed +" for, do, while, etc. +hi! link Repeat GruvboxRed +" case, default, etc. +hi! link Label GruvboxRed +" try, catch, throw +hi! link Exception GruvboxRed +" sizeof, "+", "*", etc. +hi! link Operator Normal +" Any other keyword +hi! link Keyword GruvboxRed + +" Variable name +hi! link Identifier GruvboxBlue +" Function name +hi! link Function GruvboxGreenBold + +" Generic preprocessor +hi! link PreProc GruvboxAqua +" Preprocessor #include +hi! link Include GruvboxAqua +" Preprocessor #define +hi! link Define GruvboxAqua +" Same as Define +hi! link Macro GruvboxAqua +" Preprocessor #if, #else, #endif, etc. +hi! link PreCondit GruvboxAqua + +" Generic constant +hi! link Constant GruvboxPurple +" Character constant: 'c', '/n' +hi! link Character GruvboxPurple +" String constant: "this is a string" +if g:gruvbox_improved_strings == 0 + call s:HL('String', s:green, s:none, s:italicize_strings) +else + call s:HL('String', s:fg1, s:bg1, s:italicize_strings) +endif +" Boolean constant: TRUE, false +hi! link Boolean GruvboxPurple +" Number constant: 234, 0xff +hi! link Number GruvboxPurple +" Floating point constant: 2.3e10 +hi! link Float GruvboxPurple + +" Generic type +hi! link Type GruvboxYellow +" static, register, volatile, etc +hi! link StorageClass GruvboxOrange +" struct, union, enum, etc. +hi! link Structure GruvboxAqua +" typedef +hi! link Typedef GruvboxYellow + +" }}} +" Completion Menu: {{{ + +if version >= 700 + " Popup menu: normal item + call s:HL('Pmenu', s:fg1, s:bg2) + " Popup menu: selected item + call s:HL('PmenuSel', s:bg2, s:blue, s:bold) + " Popup menu: scrollbar + call s:HL('PmenuSbar', s:none, s:bg2) + " Popup menu: scrollbar thumb + call s:HL('PmenuThumb', s:none, s:bg4) +endif + +" }}} +" Diffs: {{{ + +call s:HL('DiffDelete', s:red, s:bg0, s:inverse) +call s:HL('DiffAdd', s:green, s:bg0, s:inverse) +"call s:HL('DiffChange', s:bg0, s:blue) +"call s:HL('DiffText', s:bg0, s:yellow) + +" Alternative setting +call s:HL('DiffChange', s:aqua, s:bg0, s:inverse) +call s:HL('DiffText', s:yellow, s:bg0, s:inverse) + +" }}} +" Spelling: {{{ + +if has("spell") + " Not capitalised word, or compile warnings + if g:gruvbox_improved_warnings == 0 + call s:HL('SpellCap', s:none, s:none, s:undercurl, s:red) + else + call s:HL('SpellCap', s:green, s:none, s:bold . s:italic) + endif + " Not recognized word + call s:HL('SpellBad', s:none, s:none, s:undercurl, s:blue) + " Wrong spelling for selected region + call s:HL('SpellLocal', s:none, s:none, s:undercurl, s:aqua) + " Rare word + call s:HL('SpellRare', s:none, s:none, s:undercurl, s:purple) +endif + +" }}} + +" Plugin specific ------------------------------------------------------------- +" EasyMotion: {{{ + +hi! link EasyMotionTarget Search +hi! link EasyMotionShade Comment + +" }}} +" Sneak: {{{ + +hi! link Sneak Search +hi! link SneakLabel Search + +" }}} +" Indent Guides: {{{ + +if !exists('g:indent_guides_auto_colors') + let g:indent_guides_auto_colors = 0 +endif + +if g:indent_guides_auto_colors == 0 + if g:gruvbox_invert_indent_guides == 0 + call s:HL('IndentGuidesOdd', s:vim_bg, s:bg2) + call s:HL('IndentGuidesEven', s:vim_bg, s:bg1) + else + call s:HL('IndentGuidesOdd', s:vim_bg, s:bg2, s:inverse) + call s:HL('IndentGuidesEven', s:vim_bg, s:bg3, s:inverse) + endif +endif + +" }}} +" IndentLine: {{{ + +if !exists('g:indentLine_color_term') + let g:indentLine_color_term = s:bg2[1] +endif +if !exists('g:indentLine_color_gui') + let g:indentLine_color_gui = s:bg2[0] +endif + +" }}} +" Rainbow Parentheses: {{{ + +if !exists('g:rbpt_colorpairs') + let g:rbpt_colorpairs = + \ [ + \ ['blue', '#458588'], ['magenta', '#b16286'], + \ ['red', '#cc241d'], ['166', '#d65d0e'] + \ ] +endif + +let g:rainbow_guifgs = [ '#d65d0e', '#cc241d', '#b16286', '#458588' ] +let g:rainbow_ctermfgs = [ '166', 'red', 'magenta', 'blue' ] + +if !exists('g:rainbow_conf') + let g:rainbow_conf = {} +endif +if !has_key(g:rainbow_conf, 'guifgs') + let g:rainbow_conf['guifgs'] = g:rainbow_guifgs +endif +if !has_key(g:rainbow_conf, 'ctermfgs') + let g:rainbow_conf['ctermfgs'] = g:rainbow_ctermfgs +endif + +let g:niji_dark_colours = g:rbpt_colorpairs +let g:niji_light_colours = g:rbpt_colorpairs + +"}}} +" GitGutter: {{{ + +hi! link GitGutterAdd GruvboxGreenSign +hi! link GitGutterChange GruvboxAquaSign +hi! link GitGutterDelete GruvboxRedSign +hi! link GitGutterChangeDelete GruvboxAquaSign + +" }}} +" GitCommit: "{{{ + +hi! link gitcommitSelectedFile GruvboxGreen +hi! link gitcommitDiscardedFile GruvboxRed + +" }}} +" Signify: {{{ + +hi! link SignifySignAdd GruvboxGreenSign +hi! link SignifySignChange GruvboxAquaSign +hi! link SignifySignDelete GruvboxRedSign + +" }}} +" Syntastic: {{{ + +call s:HL('SyntasticError', s:none, s:none, s:undercurl, s:red) +call s:HL('SyntasticWarning', s:none, s:none, s:undercurl, s:yellow) + +hi! link SyntasticErrorSign GruvboxRedSign +hi! link SyntasticWarningSign GruvboxYellowSign + +" }}} +" Signature: {{{ +hi! link SignatureMarkText GruvboxBlueSign +hi! link SignatureMarkerText GruvboxPurpleSign + +" }}} +" ShowMarks: {{{ + +hi! link ShowMarksHLl GruvboxBlueSign +hi! link ShowMarksHLu GruvboxBlueSign +hi! link ShowMarksHLo GruvboxBlueSign +hi! link ShowMarksHLm GruvboxBlueSign + +" }}} +" CtrlP: {{{ + +hi! link CtrlPMatch GruvboxYellow +hi! link CtrlPNoEntries GruvboxRed +hi! link CtrlPPrtBase GruvboxBg2 +hi! link CtrlPPrtCursor GruvboxBlue +hi! link CtrlPLinePre GruvboxBg2 + +call s:HL('CtrlPMode1', s:blue, s:bg2, s:bold) +call s:HL('CtrlPMode2', s:bg0, s:blue, s:bold) +call s:HL('CtrlPStats', s:fg4, s:bg2, s:bold) + +" }}} +" Startify: {{{ + +hi! link StartifyBracket GruvboxFg3 +hi! link StartifyFile GruvboxFg1 +hi! link StartifyNumber GruvboxBlue +hi! link StartifyPath GruvboxGray +hi! link StartifySlash GruvboxGray +hi! link StartifySection GruvboxYellow +hi! link StartifySpecial GruvboxBg2 +hi! link StartifyHeader GruvboxOrange +hi! link StartifyFooter GruvboxBg2 + +" }}} +" Vimshell: {{{ + +let g:vimshell_escape_colors = [ + \ s:bg4[0], s:red[0], s:green[0], s:yellow[0], + \ s:blue[0], s:purple[0], s:aqua[0], s:fg4[0], + \ s:bg0[0], s:red[0], s:green[0], s:orange[0], + \ s:blue[0], s:purple[0], s:aqua[0], s:fg0[0] + \ ] + +" }}} +" BufTabLine: {{{ + +call s:HL('BufTabLineCurrent', s:bg0, s:fg4) +call s:HL('BufTabLineActive', s:fg4, s:bg2) +call s:HL('BufTabLineHidden', s:bg4, s:bg1) +call s:HL('BufTabLineFill', s:bg0, s:bg0) + +" }}} +" Asynchronous Lint Engine: {{{ + +call s:HL('ALEError', s:none, s:none, s:undercurl, s:red) +call s:HL('ALEWarning', s:none, s:none, s:undercurl, s:yellow) +call s:HL('ALEInfo', s:none, s:none, s:undercurl, s:blue) + +hi! link ALEErrorSign GruvboxRedSign +hi! link ALEWarningSign GruvboxYellowSign +hi! link ALEInfoSign GruvboxBlueSign + +" }}} +" Dirvish: {{{ + +hi! link DirvishPathTail GruvboxAqua +hi! link DirvishArg GruvboxYellow + +" }}} +" Netrw: {{{ + +hi! link netrwDir GruvboxAqua +hi! link netrwClassify GruvboxAqua +hi! link netrwLink GruvboxGray +hi! link netrwSymLink GruvboxFg1 +hi! link netrwExe GruvboxYellow +hi! link netrwComment GruvboxGray +hi! link netrwList GruvboxBlue +hi! link netrwHelpCmd GruvboxAqua +hi! link netrwCmdSep GruvboxFg3 +hi! link netrwVersion GruvboxGreen + +" }}} +" NERDTree: {{{ + +hi! link NERDTreeDir GruvboxAqua +hi! link NERDTreeDirSlash GruvboxAqua + +hi! link NERDTreeOpenable GruvboxOrange +hi! link NERDTreeClosable GruvboxOrange + +hi! link NERDTreeFile GruvboxFg1 +hi! link NERDTreeExecFile GruvboxYellow + +hi! link NERDTreeUp GruvboxGray +hi! link NERDTreeCWD GruvboxGreen +hi! link NERDTreeHelp GruvboxFg1 + +hi! link NERDTreeToggleOn GruvboxGreen +hi! link NERDTreeToggleOff GruvboxRed + +" }}} +" Vim Multiple Cursors: {{{ + +call s:HL('multiple_cursors_cursor', s:none, s:none, s:inverse) +call s:HL('multiple_cursors_visual', s:none, s:bg2) + +" }}} +" coc.nvim: {{{ + +hi! link CocErrorSign GruvboxRedSign +hi! link CocWarningSign GruvboxOrangeSign +hi! link CocInfoSign GruvboxYellowSign +hi! link CocHintSign GruvboxBlueSign +hi! link CocErrorFloat GruvboxRed +hi! link CocWarningFloat GruvboxOrange +hi! link CocInfoFloat GruvboxYellow +hi! link CocHintFloat GruvboxBlue +hi! link CocDiagnosticsError GruvboxRed +hi! link CocDiagnosticsWarning GruvboxOrange +hi! link CocDiagnosticsInfo GruvboxYellow +hi! link CocDiagnosticsHint GruvboxBlue + +hi! link CocSelectedText GruvboxRed +hi! link CocCodeLens GruvboxGray + +call s:HL('CocErrorHighlight', s:none, s:none, s:undercurl, s:red) +call s:HL('CocWarningHighlight', s:none, s:none, s:undercurl, s:orange) +call s:HL('CocInfoHighlight', s:none, s:none, s:undercurl, s:yellow) +call s:HL('CocHintHighlight', s:none, s:none, s:undercurl, s:blue) + +" }}} + +" Filetype specific ----------------------------------------------------------- +" Diff: {{{ + +hi! link diffAdded GruvboxGreen +hi! link diffRemoved GruvboxRed +hi! link diffChanged GruvboxAqua + +hi! link diffFile GruvboxOrange +hi! link diffNewFile GruvboxYellow + +hi! link diffLine GruvboxBlue + +" }}} +" Html: {{{ + +hi! link htmlTag GruvboxBlue +hi! link htmlEndTag GruvboxBlue + +hi! link htmlTagName GruvboxAquaBold +hi! link htmlArg GruvboxAqua + +hi! link htmlScriptTag GruvboxPurple +hi! link htmlTagN GruvboxFg1 +hi! link htmlSpecialTagName GruvboxAquaBold + +call s:HL('htmlLink', s:fg4, s:none, s:underline) + +hi! link htmlSpecialChar GruvboxOrange + +call s:HL('htmlBold', s:vim_fg, s:vim_bg, s:bold) +call s:HL('htmlBoldUnderline', s:vim_fg, s:vim_bg, s:bold . s:underline) +call s:HL('htmlBoldItalic', s:vim_fg, s:vim_bg, s:bold . s:italic) +call s:HL('htmlBoldUnderlineItalic', s:vim_fg, s:vim_bg, s:bold . s:underline . s:italic) + +call s:HL('htmlUnderline', s:vim_fg, s:vim_bg, s:underline) +call s:HL('htmlUnderlineItalic', s:vim_fg, s:vim_bg, s:underline . s:italic) +call s:HL('htmlItalic', s:vim_fg, s:vim_bg, s:italic) + +" }}} +" Xml: {{{ + +hi! link xmlTag GruvboxBlue +hi! link xmlEndTag GruvboxBlue +hi! link xmlTagName GruvboxBlue +hi! link xmlEqual GruvboxBlue +hi! link docbkKeyword GruvboxAquaBold + +hi! link xmlDocTypeDecl GruvboxGray +hi! link xmlDocTypeKeyword GruvboxPurple +hi! link xmlCdataStart GruvboxGray +hi! link xmlCdataCdata GruvboxPurple +hi! link dtdFunction GruvboxGray +hi! link dtdTagName GruvboxPurple + +hi! link xmlAttrib GruvboxAqua +hi! link xmlProcessingDelim GruvboxGray +hi! link dtdParamEntityPunct GruvboxGray +hi! link dtdParamEntityDPunct GruvboxGray +hi! link xmlAttribPunct GruvboxGray + +hi! link xmlEntity GruvboxOrange +hi! link xmlEntityPunct GruvboxOrange +" }}} +" Vim: {{{ + +call s:HL('vimCommentTitle', s:fg4_256, s:none, s:bold . s:italicize_comments) + +hi! link vimNotation GruvboxOrange +hi! link vimBracket GruvboxOrange +hi! link vimMapModKey GruvboxOrange +hi! link vimFuncSID GruvboxFg3 +hi! link vimSetSep GruvboxFg3 +hi! link vimSep GruvboxFg3 +hi! link vimContinue GruvboxFg3 + +" }}} +" Clojure: {{{ + +hi! link clojureKeyword GruvboxBlue +hi! link clojureCond GruvboxOrange +hi! link clojureSpecial GruvboxOrange +hi! link clojureDefine GruvboxOrange + +hi! link clojureFunc GruvboxYellow +hi! link clojureRepeat GruvboxYellow +hi! link clojureCharacter GruvboxAqua +hi! link clojureStringEscape GruvboxAqua +hi! link clojureException GruvboxRed + +hi! link clojureRegexp GruvboxAqua +hi! link clojureRegexpEscape GruvboxAqua +call s:HL('clojureRegexpCharClass', s:fg3, s:none, s:bold) +hi! link clojureRegexpMod clojureRegexpCharClass +hi! link clojureRegexpQuantifier clojureRegexpCharClass + +hi! link clojureParen GruvboxFg3 +hi! link clojureAnonArg GruvboxYellow +hi! link clojureVariable GruvboxBlue +hi! link clojureMacro GruvboxOrange + +hi! link clojureMeta GruvboxYellow +hi! link clojureDeref GruvboxYellow +hi! link clojureQuote GruvboxYellow +hi! link clojureUnquote GruvboxYellow + +" }}} +" C: {{{ + +hi! link cOperator GruvboxPurple +hi! link cStructure GruvboxOrange + +" }}} +" Python: {{{ + +hi! link pythonBuiltin GruvboxOrange +hi! link pythonBuiltinObj GruvboxOrange +hi! link pythonBuiltinFunc GruvboxOrange +hi! link pythonFunction GruvboxAqua +hi! link pythonDecorator GruvboxRed +hi! link pythonInclude GruvboxBlue +hi! link pythonImport GruvboxBlue +hi! link pythonRun GruvboxBlue +hi! link pythonCoding GruvboxBlue +hi! link pythonOperator GruvboxRed +hi! link pythonException GruvboxRed +hi! link pythonExceptions GruvboxPurple +hi! link pythonBoolean GruvboxPurple +hi! link pythonDot GruvboxFg3 +hi! link pythonConditional GruvboxRed +hi! link pythonRepeat GruvboxRed +hi! link pythonDottedName GruvboxGreenBold + +" }}} +" CSS: {{{ + +hi! link cssBraces GruvboxBlue +hi! link cssFunctionName GruvboxYellow +hi! link cssIdentifier GruvboxOrange +hi! link cssClassName GruvboxGreen +hi! link cssColor GruvboxBlue +hi! link cssSelectorOp GruvboxBlue +hi! link cssSelectorOp2 GruvboxBlue +hi! link cssImportant GruvboxGreen +hi! link cssVendor GruvboxFg1 + +hi! link cssTextProp GruvboxAqua +hi! link cssAnimationProp GruvboxAqua +hi! link cssUIProp GruvboxYellow +hi! link cssTransformProp GruvboxAqua +hi! link cssTransitionProp GruvboxAqua +hi! link cssPrintProp GruvboxAqua +hi! link cssPositioningProp GruvboxYellow +hi! link cssBoxProp GruvboxAqua +hi! link cssFontDescriptorProp GruvboxAqua +hi! link cssFlexibleBoxProp GruvboxAqua +hi! link cssBorderOutlineProp GruvboxAqua +hi! link cssBackgroundProp GruvboxAqua +hi! link cssMarginProp GruvboxAqua +hi! link cssListProp GruvboxAqua +hi! link cssTableProp GruvboxAqua +hi! link cssFontProp GruvboxAqua +hi! link cssPaddingProp GruvboxAqua +hi! link cssDimensionProp GruvboxAqua +hi! link cssRenderProp GruvboxAqua +hi! link cssColorProp GruvboxAqua +hi! link cssGeneratedContentProp GruvboxAqua + +" }}} +" JavaScript: {{{ + +hi! link javaScriptBraces GruvboxFg1 +hi! link javaScriptFunction GruvboxAqua +hi! link javaScriptIdentifier GruvboxRed +hi! link javaScriptMember GruvboxBlue +hi! link javaScriptNumber GruvboxPurple +hi! link javaScriptNull GruvboxPurple +hi! link javaScriptParens GruvboxFg3 + +" }}} +" YAJS: {{{ + +hi! link javascriptImport GruvboxAqua +hi! link javascriptExport GruvboxAqua +hi! link javascriptClassKeyword GruvboxAqua +hi! link javascriptClassExtends GruvboxAqua +hi! link javascriptDefault GruvboxAqua + +hi! link javascriptClassName GruvboxYellow +hi! link javascriptClassSuperName GruvboxYellow +hi! link javascriptGlobal GruvboxYellow + +hi! link javascriptEndColons GruvboxFg1 +hi! link javascriptFuncArg GruvboxFg1 +hi! link javascriptGlobalMethod GruvboxFg1 +hi! link javascriptNodeGlobal GruvboxFg1 +hi! link javascriptBOMWindowProp GruvboxFg1 +hi! link javascriptArrayMethod GruvboxFg1 +hi! link javascriptArrayStaticMethod GruvboxFg1 +hi! link javascriptCacheMethod GruvboxFg1 +hi! link javascriptDateMethod GruvboxFg1 +hi! link javascriptMathStaticMethod GruvboxFg1 + +" hi! link javascriptProp GruvboxFg1 +hi! link javascriptURLUtilsProp GruvboxFg1 +hi! link javascriptBOMNavigatorProp GruvboxFg1 +hi! link javascriptDOMDocMethod GruvboxFg1 +hi! link javascriptDOMDocProp GruvboxFg1 +hi! link javascriptBOMLocationMethod GruvboxFg1 +hi! link javascriptBOMWindowMethod GruvboxFg1 +hi! link javascriptStringMethod GruvboxFg1 + +hi! link javascriptVariable GruvboxOrange +" hi! link javascriptVariable GruvboxRed +" hi! link javascriptIdentifier GruvboxOrange +" hi! link javascriptClassSuper GruvboxOrange +hi! link javascriptIdentifier GruvboxOrange +hi! link javascriptClassSuper GruvboxOrange + +" hi! link javascriptFuncKeyword GruvboxOrange +" hi! link javascriptAsyncFunc GruvboxOrange +hi! link javascriptFuncKeyword GruvboxAqua +hi! link javascriptAsyncFunc GruvboxAqua +hi! link javascriptClassStatic GruvboxOrange + +hi! link javascriptOperator GruvboxRed +hi! link javascriptForOperator GruvboxRed +hi! link javascriptYield GruvboxRed +hi! link javascriptExceptions GruvboxRed +hi! link javascriptMessage GruvboxRed + +hi! link javascriptTemplateSB GruvboxAqua +hi! link javascriptTemplateSubstitution GruvboxFg1 + +" hi! link javascriptLabel GruvboxBlue +" hi! link javascriptObjectLabel GruvboxBlue +" hi! link javascriptPropertyName GruvboxBlue +hi! link javascriptLabel GruvboxFg1 +hi! link javascriptObjectLabel GruvboxFg1 +hi! link javascriptPropertyName GruvboxFg1 + +hi! link javascriptLogicSymbols GruvboxFg1 +hi! link javascriptArrowFunc GruvboxYellow + +hi! link javascriptDocParamName GruvboxFg4 +hi! link javascriptDocTags GruvboxFg4 +hi! link javascriptDocNotation GruvboxFg4 +hi! link javascriptDocParamType GruvboxFg4 +hi! link javascriptDocNamedParamType GruvboxFg4 + +hi! link javascriptBrackets GruvboxFg1 +hi! link javascriptDOMElemAttrs GruvboxFg1 +hi! link javascriptDOMEventMethod GruvboxFg1 +hi! link javascriptDOMNodeMethod GruvboxFg1 +hi! link javascriptDOMStorageMethod GruvboxFg1 +hi! link javascriptHeadersMethod GruvboxFg1 + +hi! link javascriptAsyncFuncKeyword GruvboxRed +hi! link javascriptAwaitFuncKeyword GruvboxRed + +" }}} +" PanglossJS: {{{ + +hi! link jsClassKeyword GruvboxAqua +hi! link jsExtendsKeyword GruvboxAqua +hi! link jsExportDefault GruvboxAqua +hi! link jsTemplateBraces GruvboxAqua +hi! link jsGlobalNodeObjects GruvboxFg1 +hi! link jsGlobalObjects GruvboxFg1 +hi! link jsFunction GruvboxAqua +hi! link jsFuncParens GruvboxFg3 +hi! link jsParens GruvboxFg3 +hi! link jsNull GruvboxPurple +hi! link jsUndefined GruvboxPurple +hi! link jsClassDefinition GruvboxYellow + +" }}} +" TypeScript: {{{ + +hi! link typeScriptReserved GruvboxAqua +hi! link typeScriptLabel GruvboxAqua +hi! link typeScriptFuncKeyword GruvboxAqua +hi! link typeScriptIdentifier GruvboxOrange +hi! link typeScriptBraces GruvboxFg1 +hi! link typeScriptEndColons GruvboxFg1 +hi! link typeScriptDOMObjects GruvboxFg1 +hi! link typeScriptAjaxMethods GruvboxFg1 +hi! link typeScriptLogicSymbols GruvboxFg1 +hi! link typeScriptDocSeeTag Comment +hi! link typeScriptDocParam Comment +hi! link typeScriptDocTags vimCommentTitle +hi! link typeScriptGlobalObjects GruvboxFg1 +hi! link typeScriptParens GruvboxFg3 +hi! link typeScriptOpSymbols GruvboxFg3 +hi! link typeScriptHtmlElemProperties GruvboxFg1 +hi! link typeScriptNull GruvboxPurple +hi! link typeScriptInterpolationDelimiter GruvboxAqua + +" }}} +" PureScript: {{{ + +hi! link purescriptModuleKeyword GruvboxAqua +hi! link purescriptModuleName GruvboxFg1 +hi! link purescriptWhere GruvboxAqua +hi! link purescriptDelimiter GruvboxFg4 +hi! link purescriptType GruvboxFg1 +hi! link purescriptImportKeyword GruvboxAqua +hi! link purescriptHidingKeyword GruvboxAqua +hi! link purescriptAsKeyword GruvboxAqua +hi! link purescriptStructure GruvboxAqua +hi! link purescriptOperator GruvboxBlue + +hi! link purescriptTypeVar GruvboxFg1 +hi! link purescriptConstructor GruvboxFg1 +hi! link purescriptFunction GruvboxFg1 +hi! link purescriptConditional GruvboxOrange +hi! link purescriptBacktick GruvboxOrange + +" }}} +" CoffeeScript: {{{ + +hi! link coffeeExtendedOp GruvboxFg3 +hi! link coffeeSpecialOp GruvboxFg3 +hi! link coffeeCurly GruvboxOrange +hi! link coffeeParen GruvboxFg3 +hi! link coffeeBracket GruvboxOrange + +" }}} +" Ruby: {{{ + +hi! link rubyStringDelimiter GruvboxGreen +hi! link rubyInterpolationDelimiter GruvboxAqua + +" }}} +" ObjectiveC: {{{ + +hi! link objcTypeModifier GruvboxRed +hi! link objcDirective GruvboxBlue + +" }}} +" Go: {{{ + +hi! link goDirective GruvboxAqua +hi! link goConstants GruvboxPurple +hi! link goDeclaration GruvboxRed +hi! link goDeclType GruvboxBlue +hi! link goBuiltins GruvboxOrange + +" }}} +" Lua: {{{ + +hi! link luaIn GruvboxRed +hi! link luaFunction GruvboxAqua +hi! link luaTable GruvboxOrange + +" }}} +" MoonScript: {{{ + +hi! link moonSpecialOp GruvboxFg3 +hi! link moonExtendedOp GruvboxFg3 +hi! link moonFunction GruvboxFg3 +hi! link moonObject GruvboxYellow + +" }}} +" Java: {{{ + +hi! link javaAnnotation GruvboxBlue +hi! link javaDocTags GruvboxAqua +hi! link javaCommentTitle vimCommentTitle +hi! link javaParen GruvboxFg3 +hi! link javaParen1 GruvboxFg3 +hi! link javaParen2 GruvboxFg3 +hi! link javaParen3 GruvboxFg3 +hi! link javaParen4 GruvboxFg3 +hi! link javaParen5 GruvboxFg3 +hi! link javaOperator GruvboxOrange + +hi! link javaVarArg GruvboxGreen + +" }}} +" Elixir: {{{ + +hi! link elixirDocString Comment + +hi! link elixirStringDelimiter GruvboxGreen +hi! link elixirInterpolationDelimiter GruvboxAqua + +hi! link elixirModuleDeclaration GruvboxYellow + +" }}} +" Scala: {{{ + +" NB: scala vim syntax file is kinda horrible +hi! link scalaNameDefinition GruvboxFg1 +hi! link scalaCaseFollowing GruvboxFg1 +hi! link scalaCapitalWord GruvboxFg1 +hi! link scalaTypeExtension GruvboxFg1 + +hi! link scalaKeyword GruvboxRed +hi! link scalaKeywordModifier GruvboxRed + +hi! link scalaSpecial GruvboxAqua +hi! link scalaOperator GruvboxFg1 + +hi! link scalaTypeDeclaration GruvboxYellow +hi! link scalaTypeTypePostDeclaration GruvboxYellow + +hi! link scalaInstanceDeclaration GruvboxFg1 +hi! link scalaInterpolation GruvboxAqua + +" }}} +" Markdown: {{{ + +call s:HL('markdownItalic', s:fg3, s:none, s:italic) + +hi! link markdownH1 GruvboxGreenBold +hi! link markdownH2 GruvboxGreenBold +hi! link markdownH3 GruvboxYellowBold +hi! link markdownH4 GruvboxYellowBold +hi! link markdownH5 GruvboxYellow +hi! link markdownH6 GruvboxYellow + +hi! link markdownCode GruvboxAqua +hi! link markdownCodeBlock GruvboxAqua +hi! link markdownCodeDelimiter GruvboxAqua + +hi! link markdownBlockquote GruvboxGray +hi! link markdownListMarker GruvboxGray +hi! link markdownOrderedListMarker GruvboxGray +hi! link markdownRule GruvboxGray +hi! link markdownHeadingRule GruvboxGray + +hi! link markdownUrlDelimiter GruvboxFg3 +hi! link markdownLinkDelimiter GruvboxFg3 +hi! link markdownLinkTextDelimiter GruvboxFg3 + +hi! link markdownHeadingDelimiter GruvboxOrange +hi! link markdownUrl GruvboxPurple +hi! link markdownUrlTitleDelimiter GruvboxGreen + +call s:HL('markdownLinkText', s:gray, s:none, s:underline) +hi! link markdownIdDeclaration markdownLinkText + +" }}} +" Haskell: {{{ + +" hi! link haskellType GruvboxYellow +" hi! link haskellOperators GruvboxOrange +" hi! link haskellConditional GruvboxAqua +" hi! link haskellLet GruvboxOrange +" +hi! link haskellType GruvboxFg1 +hi! link haskellIdentifier GruvboxFg1 +hi! link haskellSeparator GruvboxFg1 +hi! link haskellDelimiter GruvboxFg4 +hi! link haskellOperators GruvboxBlue +" +hi! link haskellBacktick GruvboxOrange +hi! link haskellStatement GruvboxOrange +hi! link haskellConditional GruvboxOrange + +hi! link haskellLet GruvboxAqua +hi! link haskellDefault GruvboxAqua +hi! link haskellWhere GruvboxAqua +hi! link haskellBottom GruvboxAqua +hi! link haskellBlockKeywords GruvboxAqua +hi! link haskellImportKeywords GruvboxAqua +hi! link haskellDeclKeyword GruvboxAqua +hi! link haskellDeriving GruvboxAqua +hi! link haskellAssocType GruvboxAqua + +hi! link haskellNumber GruvboxPurple +hi! link haskellPragma GruvboxPurple + +hi! link haskellString GruvboxGreen +hi! link haskellChar GruvboxGreen + +" }}} +" Json: {{{ + +hi! link jsonKeyword GruvboxGreen +hi! link jsonQuote GruvboxGreen +hi! link jsonBraces GruvboxFg1 +hi! link jsonString GruvboxFg1 + +" }}} + + +" Functions ------------------------------------------------------------------- +" Search Highlighting Cursor {{{ + +function! GruvboxHlsShowCursor() + call s:HL('Cursor', s:bg0, s:hls_cursor) +endfunction + +function! GruvboxHlsHideCursor() + call s:HL('Cursor', s:none, s:none, s:inverse) +endfunction + +" }}} + +" vim: set sw=2 ts=2 sts=2 et tw=80 ft=vim fdm=marker: diff --git a/.config/nvim.bak/init.vim b/.config/nvim.bak/init.vim new file mode 100644 index 0000000..7bb71b7 --- /dev/null +++ b/.config/nvim.bak/init.vim @@ -0,0 +1,120 @@ +" Basic setup stuff +let mapleader=" " +set number relativenumber +filetype plugin on +syntax on +set wildmode=longest,list,full +set mouse=a +set colorcolumn=80 +set autoindent noexpandtab tabstop=4 shiftwidth=4 + +" Quick Save +map w :w + +" Spell check +map o :setlocal spell! spelllang=en_us + +" Open a terminal +map t :vsplit term://zsh + +" Change Line break to 120 +map l :set colorcolumn=120 +" Change Line break to 80 +map L :set colorcolumn=80 + +" Quick Netrw +map x :Ex + +" Keyboard shortcuts for harpoon + +map q :lua require("harpoon").ui:toggle_quick_menu(require("harpoon"):list()) +map a :lua require("harpoon"):list():append() +map n :lua require("harpoon"):list():next() +map p :lua require("harpoon"):list():prev() + +" Telescope Keyboard shortcuts +map ts :Telescope find_files + +" Removes spaces at the end of lines when saving +autocmd BufWritePre * %s/\s\+$//e + +" Center Cursor when entering insert mode +autocmd InsertEnter * norm zz + +" Fixing indenting visual block +vmap < >gv + +" Makes splitting default to the right and to the bottom +set splitbelow splitright + +" Remaps moving keys for splitting +map h +map j +map k +map l + +" Plugins +call plug#begin('~/.local/share/nvim/plugged') +Plug 'junegunn/goyo.vim' " Nice for reading Documents +Plug 'neoclide/coc.nvim', {'branch': 'release'} " Code Completion +Plug 'tpope/vim-commentary' " Makes commenting multiple lines easier +Plug 'NLKNguyen/papercolor-theme' +Plug 'nvim-lua/plenary.nvim' +Plug 'nvim-telescope/telescope.nvim', { 'tag': '0.1.x' } +Plug 'ThePrimeagen/harpoon', { 'branch': 'harpoon2' } +Plug 'neovim/nvim-lspconfig' +Plug 'mfussenegger/nvim-dap' +Plug 'rcarriga/nvim-dap-ui' +call plug#end() + +"Plug 'ms-jpq/coq_nvim', {'branch': 'coq'} +"Plug 'ms-jpq/coq.artifacts', {'branch': 'artifacts'} + +let g:coc_global_extensions = [ + \ 'coc-html', + \ 'coc-java', + \ 'coc-tsserver', + \ 'coc-css', + \ 'coc-clangd', + \ 'coc-go', + \ 'coc-pairs', + \ 'coc-python', + \ 'coc-flutter' + \ ] + +lua vim.g.coq_settings = {auto_start = 'shut-up',} + +lua require("dap_lldb") + +" nvim-dap keybinds +map db :lua require("dap").toggle_breakpoint() +map dc :lua require("dap").continue() +map dso :lua require("dap").step_over() +map ds :lua require("dap").step_into() +map dr :lua require("dapui").open({ reset = true }) +map dt :lua require("dapui").toggle() + +" Goyo plugin makes text more readable when writing prose: +map f :Goyo \| set linebreak + +" Commentary plugin +map c :Commentary \| set linebreak + +" runs gofmt when closing a go file. +autocmd VimLeave *.go !gofmt -w % + +" required for harpoon to run +:lua require("harpoon"):setup() + +" This handles gofmt on save +" https://www.getman.io/posts/programming-go-in-neovim/ +lua require("lsp_config") +autocmd BufWritePre *.go lua vim.lsp.buf.formatting() +autocmd BufWritePre *.go lua goimports(1000) + +set t_Co=256 + +set background=light " for the light version of the theme + +colorscheme PaperColor diff --git a/.config/nvim.bak/lua/dap_lldb.lua b/.config/nvim.bak/lua/dap_lldb.lua new file mode 100644 index 0000000..40861d0 --- /dev/null +++ b/.config/nvim.bak/lua/dap_lldb.lua @@ -0,0 +1,25 @@ +local dap = require'dap' + +require("dapui").setup() + +dap.adapters.lldb = { + type = 'executable', + -- absolute path is important here, otherwise the argument in the `runInTerminal` request will default to $CWD/lldb-vscode + command = '/usr/bin/lldb-vscode', + name = "lldb" +} +dap.configurations.c = { + { + name = "Launch", + type = "lldb", + request = "launch", + program = function() + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') + end, + cwd = '${workspaceFolder}', + stopOnEntry = false, + args = {}, + runInTerminal = true, + }, +} + diff --git a/.config/nvim.bak/lua/lsp_config.lua b/.config/nvim.bak/lua/lsp_config.lua new file mode 100644 index 0000000..be7e018 --- /dev/null +++ b/.config/nvim.bak/lua/lsp_config.lua @@ -0,0 +1,100 @@ +local nvim_lsp = require('lspconfig') + +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true + +local on_attach = function(client, bufnr) + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + local opts = { noremap=true, silent=true } + buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'ga', 'lua vim.lsp.buf.code_action()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) + buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) + buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) + buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + + -- Set some keybinds conditional on server capabilities + if client.resolved_capabilities.document_formatting then + buf_set_keymap("n", "ff", "lua vim.lsp.buf.formatting()", opts) + elseif client.resolved_capabilities.document_range_formatting then + buf_set_keymap("n", "ff", "lua vim.lsp.buf.range_formatting()", opts) + end + + -- Set autocommands conditional on server_capabilities + if client.resolved_capabilities.document_highlight then + vim.api.nvim_exec([[ + hi LspReferenceRead cterm=bold ctermbg=DarkMagenta guibg=LightYellow + hi LspReferenceText cterm=bold ctermbg=DarkMagenta guibg=LightYellow + hi LspReferenceWrite cterm=bold ctermbg=DarkMagenta guibg=LightYellow + augroup lsp_document_highlight + autocmd! * + autocmd CursorHold lua vim.lsp.buf.document_highlight() + autocmd CursorMoved lua vim.lsp.buf.clear_references() + augroup END + ]], false) + end +end + +nvim_lsp.gopls.setup{ + cmd = {'gopls'}, + -- for postfix snippets and analyzers + capabilities = capabilities, + settings = { + gopls = { + experimentalPostfixCompletions = true, + analyses = { + unusedparams = true, + shadow = true, + }, + staticcheck = true, + }, + }, + on_attach = on_attach, +} + + function goimports(timeoutms) + local context = { source = { organizeImports = true } } + vim.validate { context = { context, "t", true } } + + local params = vim.lsp.util.make_range_params() + params.context = context + + -- See the implementation of the textDocument/codeAction callback + -- (lua/vim/lsp/handler.lua) for how to do this properly. + local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, timeout_ms) + if not result or next(result) == nil then return end + local actions = result[1].result + if not actions then return end + local action = actions[1] + + -- textDocument/codeAction can return either Command[] or CodeAction[]. If it + -- is a CodeAction, it can have either an edit, a command or both. Edits + -- should be executed first. + if action.edit or type(action.command) == "table" then + if action.edit then + vim.lsp.util.apply_workspace_edit(action.edit) + end + if type(action.command) == "table" then + vim.lsp.buf.execute_command(action.command) + end + else + vim.lsp.buf.execute_command(action) + end + end + +--vim.lsp.set_log_level("debug") \ No newline at end of file diff --git a/.config/nvim/.netrwhist b/.config/nvim/.netrwhist deleted file mode 100644 index f1f9805..0000000 --- a/.config/nvim/.netrwhist +++ /dev/null @@ -1,11 +0,0 @@ -let g:netrw_dirhistmax =10 -let g:netrw_dirhistcnt =9 -let g:netrw_dirhist_9='/Users/jmm/Documents/git/ticalcprograms/FibFinder/src' -let g:netrw_dirhist_8='/Users/jmm/Documents/git/ticalcprograms/FibFinder' -let g:netrw_dirhist_7='/Users/jmm/Documents/git/ticalcprograms/FizzBuzz/src' -let g:netrw_dirhist_6='/opt/CEdev/examples/hello_world/src' -let g:netrw_dirhist_5='/opt/CEdev/examples/hello_world' -let g:netrw_dirhist_4='/home/jmm/.config/gzdoom' -let g:netrw_dirhist_3='/home/jmm/.local/share/xsessions' -let g:netrw_dirhist_2='/home/jmm/.config/ncmpcpp' -let g:netrw_dirhist_1='/home/jmm/st/.git' diff --git a/.config/nvim/after/plugin/harpoon.lua b/.config/nvim/after/plugin/harpoon.lua new file mode 100644 index 0000000..08b092a --- /dev/null +++ b/.config/nvim/after/plugin/harpoon.lua @@ -0,0 +1,41 @@ +local harpoon = require("harpoon") + +-- REQUIRED +harpoon:setup() +-- REQUIRED + +vim.keymap.set("n", "a", function() harpoon:list():append() end) +--vim.keymap.set("n", "q", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end) + +vim.keymap.set("n", "", function() harpoon:list():select(1) end) +vim.keymap.set("n", "", function() harpoon:list():select(2) end) +vim.keymap.set("n", "", function() harpoon:list():select(3) end) +vim.keymap.set("n", "", function() harpoon:list():select(4) end) + +-- Toggle previous & next buffers stored within Harpoon list +vim.keymap.set("n", "", function() harpoon:list():prev() end) +vim.keymap.set("n", "", function() harpoon:list():next() end) + +local harpoon = require('harpoon') +harpoon:setup({}) + +-- basic telescope configuration +local conf = require("telescope.config").values +local function toggle_telescope(harpoon_files) + local file_paths = {} + for _, item in ipairs(harpoon_files.items) do + table.insert(file_paths, item.value) + end + + require("telescope.pickers").new({}, { + prompt_title = "Harpoon", + finder = require("telescope.finders").new_table({ + results = file_paths, + }), + previewer = conf.file_previewer({}), + sorter = conf.generic_sorter({}), + }):find() +end + +vim.keymap.set("n", "", function() toggle_telescope(harpoon:list()) end, + { desc = "Open harpoon window" }) diff --git a/.config/nvim/after/plugin/lsp.lua b/.config/nvim/after/plugin/lsp.lua new file mode 100644 index 0000000..0960abc --- /dev/null +++ b/.config/nvim/after/plugin/lsp.lua @@ -0,0 +1,20 @@ +local lsp = require('lsp-zero') + +local cmp = require('cmp') +local cmp_action = require('lsp-zero').cmp_action() + +cmp.setup({ + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.complete(), + [''] = cmp_action.luasnip_jump_forward(), + [''] = cmp_action.luasnip_jump_backward(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + }) +}) + +require('lspconfig').clangd.setup({}) diff --git a/.config/nvim/after/plugin/telescope.lua b/.config/nvim/after/plugin/telescope.lua new file mode 100644 index 0000000..87c9ea6 --- /dev/null +++ b/.config/nvim/after/plugin/telescope.lua @@ -0,0 +1,6 @@ +local builtin = require('telescope.builtin') +vim.keymap.set('n', 'ff', builtin.find_files, {}) +vim.keymap.set('n', 'fp', builtin.git_files, {}) +vim.keymap.set('n', 'ps', function() + builtin.grep_string({ search = vim.fn.input("Grep > ") }) +end) diff --git a/.config/nvim/after/plugin/treesitter.lua b/.config/nvim/after/plugin/treesitter.lua new file mode 100644 index 0000000..b90bdcd --- /dev/null +++ b/.config/nvim/after/plugin/treesitter.lua @@ -0,0 +1,21 @@ +require'nvim-treesitter.configs'.setup { + -- A list of parser names, or "all" (the five listed parsers should always be installed) + ensure_installed = { "c", "lua", "vim", "vimdoc", "query" }, + + -- Install parsers synchronously (only applied to `ensure_installed`) + sync_install = false, + + -- Automatically install missing parsers when entering buffer + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = true, + + highlight = { + enable = true, + + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = false, + }, +} diff --git a/.config/nvim/colors/gruvbox.vim b/.config/nvim/colors/gruvbox.vim deleted file mode 100644 index 66246fb..0000000 --- a/.config/nvim/colors/gruvbox.vim +++ /dev/null @@ -1,1418 +0,0 @@ -" ----------------------------------------------------------------------------- -" File: gruvbox.vim -" Description: Retro groove color scheme for Vim -" Author: morhetz -" Source: https://github.com/morhetz/gruvbox -" Last Modified: 12 Aug 2017 -" ----------------------------------------------------------------------------- - -" Supporting code ------------------------------------------------------------- -" Initialisation: {{{ - -if version > 580 - hi clear - if exists("syntax_on") - syntax reset - endif -endif - -let g:colors_name='gruvbox' - -if !(has('termguicolors') && &termguicolors) && !has('gui_running') && &t_Co != 256 - finish -endif - -" }}} -" Global Settings: {{{ - -if !exists('g:gruvbox_bold') - let g:gruvbox_bold=1 -endif -if !exists('g:gruvbox_italic') - if has('gui_running') || $TERM_ITALICS == 'true' - let g:gruvbox_italic=1 - else - let g:gruvbox_italic=0 - endif -endif -if !exists('g:gruvbox_undercurl') - let g:gruvbox_undercurl=1 -endif -if !exists('g:gruvbox_underline') - let g:gruvbox_underline=1 -endif -if !exists('g:gruvbox_inverse') - let g:gruvbox_inverse=1 -endif - -if !exists('g:gruvbox_guisp_fallback') || index(['fg', 'bg'], g:gruvbox_guisp_fallback) == -1 - let g:gruvbox_guisp_fallback='NONE' -endif - -if !exists('g:gruvbox_improved_strings') - let g:gruvbox_improved_strings=0 -endif - -if !exists('g:gruvbox_improved_warnings') - let g:gruvbox_improved_warnings=0 -endif - -if !exists('g:gruvbox_termcolors') - let g:gruvbox_termcolors=256 -endif - -if !exists('g:gruvbox_invert_indent_guides') - let g:gruvbox_invert_indent_guides=0 -endif - -if exists('g:gruvbox_contrast') - echo 'g:gruvbox_contrast is deprecated; use g:gruvbox_contrast_light and g:gruvbox_contrast_dark instead' -endif - -if !exists('g:gruvbox_contrast_dark') - let g:gruvbox_contrast_dark='medium' -endif - -if !exists('g:gruvbox_contrast_light') - let g:gruvbox_contrast_light='medium' -endif - -let s:is_dark=(&background == 'dark') - -" }}} -" Palette: {{{ - -" setup palette dictionary -let s:gb = {} - -" fill it with absolute colors -let s:gb.dark0_hard = ['#1d2021', 234] " 29-32-33 -let s:gb.dark0 = ['#282828', 235] " 40-40-40 -let s:gb.dark0_soft = ['#32302f', 236] " 50-48-47 -let s:gb.dark1 = ['#3c3836', 237] " 60-56-54 -let s:gb.dark2 = ['#504945', 239] " 80-73-69 -let s:gb.dark3 = ['#665c54', 241] " 102-92-84 -let s:gb.dark4 = ['#7c6f64', 243] " 124-111-100 -let s:gb.dark4_256 = ['#7c6f64', 243] " 124-111-100 - -let s:gb.gray_245 = ['#928374', 245] " 146-131-116 -let s:gb.gray_244 = ['#928374', 244] " 146-131-116 - -let s:gb.light0_hard = ['#f9f5d7', 230] " 249-245-215 -let s:gb.light0 = ['#fbf1c7', 229] " 253-244-193 -let s:gb.light0_soft = ['#f2e5bc', 228] " 242-229-188 -let s:gb.light1 = ['#ebdbb2', 223] " 235-219-178 -let s:gb.light2 = ['#d5c4a1', 250] " 213-196-161 -let s:gb.light3 = ['#bdae93', 248] " 189-174-147 -let s:gb.light4 = ['#a89984', 246] " 168-153-132 -let s:gb.light4_256 = ['#a89984', 246] " 168-153-132 - -let s:gb.bright_red = ['#fb4934', 167] " 251-73-52 -let s:gb.bright_green = ['#b8bb26', 142] " 184-187-38 -let s:gb.bright_yellow = ['#fabd2f', 214] " 250-189-47 -let s:gb.bright_blue = ['#83a598', 109] " 131-165-152 -let s:gb.bright_purple = ['#d3869b', 175] " 211-134-155 -let s:gb.bright_aqua = ['#8ec07c', 108] " 142-192-124 -let s:gb.bright_orange = ['#fe8019', 208] " 254-128-25 - -let s:gb.neutral_red = ['#cc241d', 124] " 204-36-29 -let s:gb.neutral_green = ['#98971a', 106] " 152-151-26 -let s:gb.neutral_yellow = ['#d79921', 172] " 215-153-33 -let s:gb.neutral_blue = ['#458588', 66] " 69-133-136 -let s:gb.neutral_purple = ['#b16286', 132] " 177-98-134 -let s:gb.neutral_aqua = ['#689d6a', 72] " 104-157-106 -let s:gb.neutral_orange = ['#d65d0e', 166] " 214-93-14 - -let s:gb.faded_red = ['#9d0006', 88] " 157-0-6 -let s:gb.faded_green = ['#79740e', 100] " 121-116-14 -let s:gb.faded_yellow = ['#b57614', 136] " 181-118-20 -let s:gb.faded_blue = ['#076678', 24] " 7-102-120 -let s:gb.faded_purple = ['#8f3f71', 96] " 143-63-113 -let s:gb.faded_aqua = ['#427b58', 66] " 66-123-88 -let s:gb.faded_orange = ['#af3a03', 130] " 175-58-3 - -" }}} -" Setup Emphasis: {{{ - -let s:bold = 'bold,' -if g:gruvbox_bold == 0 - let s:bold = '' -endif - -let s:italic = 'italic,' -if g:gruvbox_italic == 0 - let s:italic = '' -endif - -let s:underline = 'underline,' -if g:gruvbox_underline == 0 - let s:underline = '' -endif - -let s:undercurl = 'undercurl,' -if g:gruvbox_undercurl == 0 - let s:undercurl = '' -endif - -let s:inverse = 'inverse,' -if g:gruvbox_inverse == 0 - let s:inverse = '' -endif - -" }}} -" Setup Colors: {{{ - -let s:vim_bg = ['bg', 'bg'] -let s:vim_fg = ['fg', 'fg'] -let s:none = ['NONE', 'NONE'] - -" determine relative colors -if s:is_dark - let s:bg0 = s:gb.dark0 - if g:gruvbox_contrast_dark == 'soft' - let s:bg0 = s:gb.dark0_soft - elseif g:gruvbox_contrast_dark == 'hard' - let s:bg0 = s:gb.dark0_hard - endif - - let s:bg1 = s:gb.dark1 - let s:bg2 = s:gb.dark2 - let s:bg3 = s:gb.dark3 - let s:bg4 = s:gb.dark4 - - let s:gray = s:gb.gray_245 - - let s:fg0 = s:gb.light0 - let s:fg1 = s:gb.light1 - let s:fg2 = s:gb.light2 - let s:fg3 = s:gb.light3 - let s:fg4 = s:gb.light4 - - let s:fg4_256 = s:gb.light4_256 - - let s:red = s:gb.bright_red - let s:green = s:gb.bright_green - let s:yellow = s:gb.bright_yellow - let s:blue = s:gb.bright_blue - let s:purple = s:gb.bright_purple - let s:aqua = s:gb.bright_aqua - let s:orange = s:gb.bright_orange -else - let s:bg0 = s:gb.light0 - if g:gruvbox_contrast_light == 'soft' - let s:bg0 = s:gb.light0_soft - elseif g:gruvbox_contrast_light == 'hard' - let s:bg0 = s:gb.light0_hard - endif - - let s:bg1 = s:gb.light1 - let s:bg2 = s:gb.light2 - let s:bg3 = s:gb.light3 - let s:bg4 = s:gb.light4 - - let s:gray = s:gb.gray_244 - - let s:fg0 = s:gb.dark0 - let s:fg1 = s:gb.dark1 - let s:fg2 = s:gb.dark2 - let s:fg3 = s:gb.dark3 - let s:fg4 = s:gb.dark4 - - let s:fg4_256 = s:gb.dark4_256 - - let s:red = s:gb.faded_red - let s:green = s:gb.faded_green - let s:yellow = s:gb.faded_yellow - let s:blue = s:gb.faded_blue - let s:purple = s:gb.faded_purple - let s:aqua = s:gb.faded_aqua - let s:orange = s:gb.faded_orange -endif - -" reset to 16 colors fallback -if g:gruvbox_termcolors == 16 - let s:bg0[1] = 0 - let s:fg4[1] = 7 - let s:gray[1] = 8 - let s:red[1] = 9 - let s:green[1] = 10 - let s:yellow[1] = 11 - let s:blue[1] = 12 - let s:purple[1] = 13 - let s:aqua[1] = 14 - let s:fg1[1] = 15 -endif - -" save current relative colors back to palette dictionary -let s:gb.bg0 = s:bg0 -let s:gb.bg1 = s:bg1 -let s:gb.bg2 = s:bg2 -let s:gb.bg3 = s:bg3 -let s:gb.bg4 = s:bg4 - -let s:gb.gray = s:gray - -let s:gb.fg0 = s:fg0 -let s:gb.fg1 = s:fg1 -let s:gb.fg2 = s:fg2 -let s:gb.fg3 = s:fg3 -let s:gb.fg4 = s:fg4 - -let s:gb.fg4_256 = s:fg4_256 - -let s:gb.red = s:red -let s:gb.green = s:green -let s:gb.yellow = s:yellow -let s:gb.blue = s:blue -let s:gb.purple = s:purple -let s:gb.aqua = s:aqua -let s:gb.orange = s:orange - -" }}} -" Setup Terminal Colors For Neovim: {{{ - -if has('nvim') - let g:terminal_color_0 = s:bg0[0] - let g:terminal_color_8 = s:gray[0] - - let g:terminal_color_1 = s:gb.neutral_red[0] - let g:terminal_color_9 = s:red[0] - - let g:terminal_color_2 = s:gb.neutral_green[0] - let g:terminal_color_10 = s:green[0] - - let g:terminal_color_3 = s:gb.neutral_yellow[0] - let g:terminal_color_11 = s:yellow[0] - - let g:terminal_color_4 = s:gb.neutral_blue[0] - let g:terminal_color_12 = s:blue[0] - - let g:terminal_color_5 = s:gb.neutral_purple[0] - let g:terminal_color_13 = s:purple[0] - - let g:terminal_color_6 = s:gb.neutral_aqua[0] - let g:terminal_color_14 = s:aqua[0] - - let g:terminal_color_7 = s:fg4[0] - let g:terminal_color_15 = s:fg1[0] -endif - -" }}} -" Overload Setting: {{{ - -let s:hls_cursor = s:orange -if exists('g:gruvbox_hls_cursor') - let s:hls_cursor = get(s:gb, g:gruvbox_hls_cursor) -endif - -let s:number_column = s:none -if exists('g:gruvbox_number_column') - let s:number_column = get(s:gb, g:gruvbox_number_column) -endif - -let s:sign_column = s:bg1 - -if exists('g:gitgutter_override_sign_column_highlight') && - \ g:gitgutter_override_sign_column_highlight == 1 - let s:sign_column = s:number_column -else - let g:gitgutter_override_sign_column_highlight = 0 - - if exists('g:gruvbox_sign_column') - let s:sign_column = get(s:gb, g:gruvbox_sign_column) - endif -endif - -let s:color_column = s:bg1 -if exists('g:gruvbox_color_column') - let s:color_column = get(s:gb, g:gruvbox_color_column) -endif - -let s:vert_split = s:bg0 -if exists('g:gruvbox_vert_split') - let s:vert_split = get(s:gb, g:gruvbox_vert_split) -endif - -let s:invert_signs = '' -if exists('g:gruvbox_invert_signs') - if g:gruvbox_invert_signs == 1 - let s:invert_signs = s:inverse - endif -endif - -let s:invert_selection = s:inverse -if exists('g:gruvbox_invert_selection') - if g:gruvbox_invert_selection == 0 - let s:invert_selection = '' - endif -endif - -let s:invert_tabline = '' -if exists('g:gruvbox_invert_tabline') - if g:gruvbox_invert_tabline == 1 - let s:invert_tabline = s:inverse - endif -endif - -let s:italicize_comments = s:italic -if exists('g:gruvbox_italicize_comments') - if g:gruvbox_italicize_comments == 0 - let s:italicize_comments = '' - endif -endif - -let s:italicize_strings = '' -if exists('g:gruvbox_italicize_strings') - if g:gruvbox_italicize_strings == 1 - let s:italicize_strings = s:italic - endif -endif - -" }}} -" Highlighting Function: {{{ - -function! s:HL(group, fg, ...) - " Arguments: group, guifg, guibg, gui, guisp - - " foreground - let fg = a:fg - - " background - if a:0 >= 1 - let bg = a:1 - else - let bg = s:none - endif - - " emphasis - if a:0 >= 2 && strlen(a:2) - let emstr = a:2 - else - let emstr = 'NONE,' - endif - - " special fallback - if a:0 >= 3 - if g:gruvbox_guisp_fallback != 'NONE' - let fg = a:3 - endif - - " bg fallback mode should invert higlighting - if g:gruvbox_guisp_fallback == 'bg' - let emstr .= 'inverse,' - endif - endif - - let histring = [ 'hi', a:group, - \ 'guifg=' . fg[0], 'ctermfg=' . fg[1], - \ 'guibg=' . bg[0], 'ctermbg=' . bg[1], - \ 'gui=' . emstr[:-2], 'cterm=' . emstr[:-2] - \ ] - - " special - if a:0 >= 3 - call add(histring, 'guisp=' . a:3[0]) - endif - - execute join(histring, ' ') -endfunction - -" }}} -" Gruvbox Hi Groups: {{{ - -" memoize common hi groups -call s:HL('GruvboxFg0', s:fg0) -call s:HL('GruvboxFg1', s:fg1) -call s:HL('GruvboxFg2', s:fg2) -call s:HL('GruvboxFg3', s:fg3) -call s:HL('GruvboxFg4', s:fg4) -call s:HL('GruvboxGray', s:gray) -call s:HL('GruvboxBg0', s:bg0) -call s:HL('GruvboxBg1', s:bg1) -call s:HL('GruvboxBg2', s:bg2) -call s:HL('GruvboxBg3', s:bg3) -call s:HL('GruvboxBg4', s:bg4) - -call s:HL('GruvboxRed', s:red) -call s:HL('GruvboxRedBold', s:red, s:none, s:bold) -call s:HL('GruvboxGreen', s:green) -call s:HL('GruvboxGreenBold', s:green, s:none, s:bold) -call s:HL('GruvboxYellow', s:yellow) -call s:HL('GruvboxYellowBold', s:yellow, s:none, s:bold) -call s:HL('GruvboxBlue', s:blue) -call s:HL('GruvboxBlueBold', s:blue, s:none, s:bold) -call s:HL('GruvboxPurple', s:purple) -call s:HL('GruvboxPurpleBold', s:purple, s:none, s:bold) -call s:HL('GruvboxAqua', s:aqua) -call s:HL('GruvboxAquaBold', s:aqua, s:none, s:bold) -call s:HL('GruvboxOrange', s:orange) -call s:HL('GruvboxOrangeBold', s:orange, s:none, s:bold) - -call s:HL('GruvboxRedSign', s:red, s:sign_column, s:invert_signs) -call s:HL('GruvboxGreenSign', s:green, s:sign_column, s:invert_signs) -call s:HL('GruvboxYellowSign', s:yellow, s:sign_column, s:invert_signs) -call s:HL('GruvboxBlueSign', s:blue, s:sign_column, s:invert_signs) -call s:HL('GruvboxPurpleSign', s:purple, s:sign_column, s:invert_signs) -call s:HL('GruvboxAquaSign', s:aqua, s:sign_column, s:invert_signs) -call s:HL('GruvboxOrangeSign', s:orange, s:sign_column, s:invert_signs) - -" }}} - -" Vanilla colorscheme --------------------------------------------------------- -" General UI: {{{ - -" Normal text -call s:HL('Normal', s:fg1, s:bg0) - -" Correct background (see issue #7): -" --- Problem with changing between dark and light on 256 color terminal -" --- https://github.com/morhetz/gruvbox/issues/7 -if s:is_dark - set background=dark -else - set background=light -endif - -if version >= 700 - " Screen line that the cursor is - call s:HL('CursorLine', s:none, s:bg1) - " Screen column that the cursor is - hi! link CursorColumn CursorLine - - " Tab pages line filler - call s:HL('TabLineFill', s:bg4, s:bg1, s:invert_tabline) - " Active tab page label - call s:HL('TabLineSel', s:green, s:bg1, s:invert_tabline) - " Not active tab page label - hi! link TabLine TabLineFill - - " Match paired bracket under the cursor - call s:HL('MatchParen', s:none, s:bg3, s:bold) -endif - -if version >= 703 - " Highlighted screen columns - call s:HL('ColorColumn', s:none, s:color_column) - - " Concealed element: \lambda → λ - call s:HL('Conceal', s:blue, s:none) - - " Line number of CursorLine - call s:HL('CursorLineNr', s:yellow, s:bg1) -endif - -hi! link NonText GruvboxBg2 -hi! link SpecialKey GruvboxBg2 - -call s:HL('Visual', s:none, s:bg3, s:invert_selection) -hi! link VisualNOS Visual - -call s:HL('Search', s:yellow, s:bg0, s:inverse) -call s:HL('IncSearch', s:hls_cursor, s:bg0, s:inverse) - -call s:HL('Underlined', s:blue, s:none, s:underline) - -call s:HL('StatusLine', s:bg2, s:fg1, s:inverse) -call s:HL('StatusLineNC', s:bg1, s:fg4, s:inverse) - -" The column separating vertically split windows -call s:HL('VertSplit', s:bg3, s:vert_split) - -" Current match in wildmenu completion -call s:HL('WildMenu', s:blue, s:bg2, s:bold) - -" Directory names, special names in listing -hi! link Directory GruvboxGreenBold - -" Titles for output from :set all, :autocmd, etc. -hi! link Title GruvboxGreenBold - -" Error messages on the command line -call s:HL('ErrorMsg', s:bg0, s:red, s:bold) -" More prompt: -- More -- -hi! link MoreMsg GruvboxYellowBold -" Current mode message: -- INSERT -- -hi! link ModeMsg GruvboxYellowBold -" 'Press enter' prompt and yes/no questions -hi! link Question GruvboxOrangeBold -" Warning messages -hi! link WarningMsg GruvboxRedBold - -" }}} -" Gutter: {{{ - -" Line number for :number and :# commands -call s:HL('LineNr', s:bg4, s:number_column) - -" Column where signs are displayed -call s:HL('SignColumn', s:none, s:sign_column) - -" Line used for closed folds -call s:HL('Folded', s:gray, s:bg1, s:italic) -" Column where folds are displayed -call s:HL('FoldColumn', s:gray, s:bg1) - -" }}} -" Cursor: {{{ - -" Character under cursor -call s:HL('Cursor', s:none, s:none, s:inverse) -" Visual mode cursor, selection -hi! link vCursor Cursor -" Input moder cursor -hi! link iCursor Cursor -" Language mapping cursor -hi! link lCursor Cursor - -" }}} -" Syntax Highlighting: {{{ - -if g:gruvbox_improved_strings == 0 - hi! link Special GruvboxOrange -else - call s:HL('Special', s:orange, s:bg1, s:italicize_strings) -endif - -call s:HL('Comment', s:gray, s:none, s:italicize_comments) -call s:HL('Todo', s:vim_fg, s:vim_bg, s:bold . s:italic) -call s:HL('Error', s:red, s:vim_bg, s:bold . s:inverse) - -" Generic statement -hi! link Statement GruvboxRed -" if, then, else, endif, swicth, etc. -hi! link Conditional GruvboxRed -" for, do, while, etc. -hi! link Repeat GruvboxRed -" case, default, etc. -hi! link Label GruvboxRed -" try, catch, throw -hi! link Exception GruvboxRed -" sizeof, "+", "*", etc. -hi! link Operator Normal -" Any other keyword -hi! link Keyword GruvboxRed - -" Variable name -hi! link Identifier GruvboxBlue -" Function name -hi! link Function GruvboxGreenBold - -" Generic preprocessor -hi! link PreProc GruvboxAqua -" Preprocessor #include -hi! link Include GruvboxAqua -" Preprocessor #define -hi! link Define GruvboxAqua -" Same as Define -hi! link Macro GruvboxAqua -" Preprocessor #if, #else, #endif, etc. -hi! link PreCondit GruvboxAqua - -" Generic constant -hi! link Constant GruvboxPurple -" Character constant: 'c', '/n' -hi! link Character GruvboxPurple -" String constant: "this is a string" -if g:gruvbox_improved_strings == 0 - call s:HL('String', s:green, s:none, s:italicize_strings) -else - call s:HL('String', s:fg1, s:bg1, s:italicize_strings) -endif -" Boolean constant: TRUE, false -hi! link Boolean GruvboxPurple -" Number constant: 234, 0xff -hi! link Number GruvboxPurple -" Floating point constant: 2.3e10 -hi! link Float GruvboxPurple - -" Generic type -hi! link Type GruvboxYellow -" static, register, volatile, etc -hi! link StorageClass GruvboxOrange -" struct, union, enum, etc. -hi! link Structure GruvboxAqua -" typedef -hi! link Typedef GruvboxYellow - -" }}} -" Completion Menu: {{{ - -if version >= 700 - " Popup menu: normal item - call s:HL('Pmenu', s:fg1, s:bg2) - " Popup menu: selected item - call s:HL('PmenuSel', s:bg2, s:blue, s:bold) - " Popup menu: scrollbar - call s:HL('PmenuSbar', s:none, s:bg2) - " Popup menu: scrollbar thumb - call s:HL('PmenuThumb', s:none, s:bg4) -endif - -" }}} -" Diffs: {{{ - -call s:HL('DiffDelete', s:red, s:bg0, s:inverse) -call s:HL('DiffAdd', s:green, s:bg0, s:inverse) -"call s:HL('DiffChange', s:bg0, s:blue) -"call s:HL('DiffText', s:bg0, s:yellow) - -" Alternative setting -call s:HL('DiffChange', s:aqua, s:bg0, s:inverse) -call s:HL('DiffText', s:yellow, s:bg0, s:inverse) - -" }}} -" Spelling: {{{ - -if has("spell") - " Not capitalised word, or compile warnings - if g:gruvbox_improved_warnings == 0 - call s:HL('SpellCap', s:none, s:none, s:undercurl, s:red) - else - call s:HL('SpellCap', s:green, s:none, s:bold . s:italic) - endif - " Not recognized word - call s:HL('SpellBad', s:none, s:none, s:undercurl, s:blue) - " Wrong spelling for selected region - call s:HL('SpellLocal', s:none, s:none, s:undercurl, s:aqua) - " Rare word - call s:HL('SpellRare', s:none, s:none, s:undercurl, s:purple) -endif - -" }}} - -" Plugin specific ------------------------------------------------------------- -" EasyMotion: {{{ - -hi! link EasyMotionTarget Search -hi! link EasyMotionShade Comment - -" }}} -" Sneak: {{{ - -hi! link Sneak Search -hi! link SneakLabel Search - -" }}} -" Indent Guides: {{{ - -if !exists('g:indent_guides_auto_colors') - let g:indent_guides_auto_colors = 0 -endif - -if g:indent_guides_auto_colors == 0 - if g:gruvbox_invert_indent_guides == 0 - call s:HL('IndentGuidesOdd', s:vim_bg, s:bg2) - call s:HL('IndentGuidesEven', s:vim_bg, s:bg1) - else - call s:HL('IndentGuidesOdd', s:vim_bg, s:bg2, s:inverse) - call s:HL('IndentGuidesEven', s:vim_bg, s:bg3, s:inverse) - endif -endif - -" }}} -" IndentLine: {{{ - -if !exists('g:indentLine_color_term') - let g:indentLine_color_term = s:bg2[1] -endif -if !exists('g:indentLine_color_gui') - let g:indentLine_color_gui = s:bg2[0] -endif - -" }}} -" Rainbow Parentheses: {{{ - -if !exists('g:rbpt_colorpairs') - let g:rbpt_colorpairs = - \ [ - \ ['blue', '#458588'], ['magenta', '#b16286'], - \ ['red', '#cc241d'], ['166', '#d65d0e'] - \ ] -endif - -let g:rainbow_guifgs = [ '#d65d0e', '#cc241d', '#b16286', '#458588' ] -let g:rainbow_ctermfgs = [ '166', 'red', 'magenta', 'blue' ] - -if !exists('g:rainbow_conf') - let g:rainbow_conf = {} -endif -if !has_key(g:rainbow_conf, 'guifgs') - let g:rainbow_conf['guifgs'] = g:rainbow_guifgs -endif -if !has_key(g:rainbow_conf, 'ctermfgs') - let g:rainbow_conf['ctermfgs'] = g:rainbow_ctermfgs -endif - -let g:niji_dark_colours = g:rbpt_colorpairs -let g:niji_light_colours = g:rbpt_colorpairs - -"}}} -" GitGutter: {{{ - -hi! link GitGutterAdd GruvboxGreenSign -hi! link GitGutterChange GruvboxAquaSign -hi! link GitGutterDelete GruvboxRedSign -hi! link GitGutterChangeDelete GruvboxAquaSign - -" }}} -" GitCommit: "{{{ - -hi! link gitcommitSelectedFile GruvboxGreen -hi! link gitcommitDiscardedFile GruvboxRed - -" }}} -" Signify: {{{ - -hi! link SignifySignAdd GruvboxGreenSign -hi! link SignifySignChange GruvboxAquaSign -hi! link SignifySignDelete GruvboxRedSign - -" }}} -" Syntastic: {{{ - -call s:HL('SyntasticError', s:none, s:none, s:undercurl, s:red) -call s:HL('SyntasticWarning', s:none, s:none, s:undercurl, s:yellow) - -hi! link SyntasticErrorSign GruvboxRedSign -hi! link SyntasticWarningSign GruvboxYellowSign - -" }}} -" Signature: {{{ -hi! link SignatureMarkText GruvboxBlueSign -hi! link SignatureMarkerText GruvboxPurpleSign - -" }}} -" ShowMarks: {{{ - -hi! link ShowMarksHLl GruvboxBlueSign -hi! link ShowMarksHLu GruvboxBlueSign -hi! link ShowMarksHLo GruvboxBlueSign -hi! link ShowMarksHLm GruvboxBlueSign - -" }}} -" CtrlP: {{{ - -hi! link CtrlPMatch GruvboxYellow -hi! link CtrlPNoEntries GruvboxRed -hi! link CtrlPPrtBase GruvboxBg2 -hi! link CtrlPPrtCursor GruvboxBlue -hi! link CtrlPLinePre GruvboxBg2 - -call s:HL('CtrlPMode1', s:blue, s:bg2, s:bold) -call s:HL('CtrlPMode2', s:bg0, s:blue, s:bold) -call s:HL('CtrlPStats', s:fg4, s:bg2, s:bold) - -" }}} -" Startify: {{{ - -hi! link StartifyBracket GruvboxFg3 -hi! link StartifyFile GruvboxFg1 -hi! link StartifyNumber GruvboxBlue -hi! link StartifyPath GruvboxGray -hi! link StartifySlash GruvboxGray -hi! link StartifySection GruvboxYellow -hi! link StartifySpecial GruvboxBg2 -hi! link StartifyHeader GruvboxOrange -hi! link StartifyFooter GruvboxBg2 - -" }}} -" Vimshell: {{{ - -let g:vimshell_escape_colors = [ - \ s:bg4[0], s:red[0], s:green[0], s:yellow[0], - \ s:blue[0], s:purple[0], s:aqua[0], s:fg4[0], - \ s:bg0[0], s:red[0], s:green[0], s:orange[0], - \ s:blue[0], s:purple[0], s:aqua[0], s:fg0[0] - \ ] - -" }}} -" BufTabLine: {{{ - -call s:HL('BufTabLineCurrent', s:bg0, s:fg4) -call s:HL('BufTabLineActive', s:fg4, s:bg2) -call s:HL('BufTabLineHidden', s:bg4, s:bg1) -call s:HL('BufTabLineFill', s:bg0, s:bg0) - -" }}} -" Asynchronous Lint Engine: {{{ - -call s:HL('ALEError', s:none, s:none, s:undercurl, s:red) -call s:HL('ALEWarning', s:none, s:none, s:undercurl, s:yellow) -call s:HL('ALEInfo', s:none, s:none, s:undercurl, s:blue) - -hi! link ALEErrorSign GruvboxRedSign -hi! link ALEWarningSign GruvboxYellowSign -hi! link ALEInfoSign GruvboxBlueSign - -" }}} -" Dirvish: {{{ - -hi! link DirvishPathTail GruvboxAqua -hi! link DirvishArg GruvboxYellow - -" }}} -" Netrw: {{{ - -hi! link netrwDir GruvboxAqua -hi! link netrwClassify GruvboxAqua -hi! link netrwLink GruvboxGray -hi! link netrwSymLink GruvboxFg1 -hi! link netrwExe GruvboxYellow -hi! link netrwComment GruvboxGray -hi! link netrwList GruvboxBlue -hi! link netrwHelpCmd GruvboxAqua -hi! link netrwCmdSep GruvboxFg3 -hi! link netrwVersion GruvboxGreen - -" }}} -" NERDTree: {{{ - -hi! link NERDTreeDir GruvboxAqua -hi! link NERDTreeDirSlash GruvboxAqua - -hi! link NERDTreeOpenable GruvboxOrange -hi! link NERDTreeClosable GruvboxOrange - -hi! link NERDTreeFile GruvboxFg1 -hi! link NERDTreeExecFile GruvboxYellow - -hi! link NERDTreeUp GruvboxGray -hi! link NERDTreeCWD GruvboxGreen -hi! link NERDTreeHelp GruvboxFg1 - -hi! link NERDTreeToggleOn GruvboxGreen -hi! link NERDTreeToggleOff GruvboxRed - -" }}} -" Vim Multiple Cursors: {{{ - -call s:HL('multiple_cursors_cursor', s:none, s:none, s:inverse) -call s:HL('multiple_cursors_visual', s:none, s:bg2) - -" }}} -" coc.nvim: {{{ - -hi! link CocErrorSign GruvboxRedSign -hi! link CocWarningSign GruvboxOrangeSign -hi! link CocInfoSign GruvboxYellowSign -hi! link CocHintSign GruvboxBlueSign -hi! link CocErrorFloat GruvboxRed -hi! link CocWarningFloat GruvboxOrange -hi! link CocInfoFloat GruvboxYellow -hi! link CocHintFloat GruvboxBlue -hi! link CocDiagnosticsError GruvboxRed -hi! link CocDiagnosticsWarning GruvboxOrange -hi! link CocDiagnosticsInfo GruvboxYellow -hi! link CocDiagnosticsHint GruvboxBlue - -hi! link CocSelectedText GruvboxRed -hi! link CocCodeLens GruvboxGray - -call s:HL('CocErrorHighlight', s:none, s:none, s:undercurl, s:red) -call s:HL('CocWarningHighlight', s:none, s:none, s:undercurl, s:orange) -call s:HL('CocInfoHighlight', s:none, s:none, s:undercurl, s:yellow) -call s:HL('CocHintHighlight', s:none, s:none, s:undercurl, s:blue) - -" }}} - -" Filetype specific ----------------------------------------------------------- -" Diff: {{{ - -hi! link diffAdded GruvboxGreen -hi! link diffRemoved GruvboxRed -hi! link diffChanged GruvboxAqua - -hi! link diffFile GruvboxOrange -hi! link diffNewFile GruvboxYellow - -hi! link diffLine GruvboxBlue - -" }}} -" Html: {{{ - -hi! link htmlTag GruvboxBlue -hi! link htmlEndTag GruvboxBlue - -hi! link htmlTagName GruvboxAquaBold -hi! link htmlArg GruvboxAqua - -hi! link htmlScriptTag GruvboxPurple -hi! link htmlTagN GruvboxFg1 -hi! link htmlSpecialTagName GruvboxAquaBold - -call s:HL('htmlLink', s:fg4, s:none, s:underline) - -hi! link htmlSpecialChar GruvboxOrange - -call s:HL('htmlBold', s:vim_fg, s:vim_bg, s:bold) -call s:HL('htmlBoldUnderline', s:vim_fg, s:vim_bg, s:bold . s:underline) -call s:HL('htmlBoldItalic', s:vim_fg, s:vim_bg, s:bold . s:italic) -call s:HL('htmlBoldUnderlineItalic', s:vim_fg, s:vim_bg, s:bold . s:underline . s:italic) - -call s:HL('htmlUnderline', s:vim_fg, s:vim_bg, s:underline) -call s:HL('htmlUnderlineItalic', s:vim_fg, s:vim_bg, s:underline . s:italic) -call s:HL('htmlItalic', s:vim_fg, s:vim_bg, s:italic) - -" }}} -" Xml: {{{ - -hi! link xmlTag GruvboxBlue -hi! link xmlEndTag GruvboxBlue -hi! link xmlTagName GruvboxBlue -hi! link xmlEqual GruvboxBlue -hi! link docbkKeyword GruvboxAquaBold - -hi! link xmlDocTypeDecl GruvboxGray -hi! link xmlDocTypeKeyword GruvboxPurple -hi! link xmlCdataStart GruvboxGray -hi! link xmlCdataCdata GruvboxPurple -hi! link dtdFunction GruvboxGray -hi! link dtdTagName GruvboxPurple - -hi! link xmlAttrib GruvboxAqua -hi! link xmlProcessingDelim GruvboxGray -hi! link dtdParamEntityPunct GruvboxGray -hi! link dtdParamEntityDPunct GruvboxGray -hi! link xmlAttribPunct GruvboxGray - -hi! link xmlEntity GruvboxOrange -hi! link xmlEntityPunct GruvboxOrange -" }}} -" Vim: {{{ - -call s:HL('vimCommentTitle', s:fg4_256, s:none, s:bold . s:italicize_comments) - -hi! link vimNotation GruvboxOrange -hi! link vimBracket GruvboxOrange -hi! link vimMapModKey GruvboxOrange -hi! link vimFuncSID GruvboxFg3 -hi! link vimSetSep GruvboxFg3 -hi! link vimSep GruvboxFg3 -hi! link vimContinue GruvboxFg3 - -" }}} -" Clojure: {{{ - -hi! link clojureKeyword GruvboxBlue -hi! link clojureCond GruvboxOrange -hi! link clojureSpecial GruvboxOrange -hi! link clojureDefine GruvboxOrange - -hi! link clojureFunc GruvboxYellow -hi! link clojureRepeat GruvboxYellow -hi! link clojureCharacter GruvboxAqua -hi! link clojureStringEscape GruvboxAqua -hi! link clojureException GruvboxRed - -hi! link clojureRegexp GruvboxAqua -hi! link clojureRegexpEscape GruvboxAqua -call s:HL('clojureRegexpCharClass', s:fg3, s:none, s:bold) -hi! link clojureRegexpMod clojureRegexpCharClass -hi! link clojureRegexpQuantifier clojureRegexpCharClass - -hi! link clojureParen GruvboxFg3 -hi! link clojureAnonArg GruvboxYellow -hi! link clojureVariable GruvboxBlue -hi! link clojureMacro GruvboxOrange - -hi! link clojureMeta GruvboxYellow -hi! link clojureDeref GruvboxYellow -hi! link clojureQuote GruvboxYellow -hi! link clojureUnquote GruvboxYellow - -" }}} -" C: {{{ - -hi! link cOperator GruvboxPurple -hi! link cStructure GruvboxOrange - -" }}} -" Python: {{{ - -hi! link pythonBuiltin GruvboxOrange -hi! link pythonBuiltinObj GruvboxOrange -hi! link pythonBuiltinFunc GruvboxOrange -hi! link pythonFunction GruvboxAqua -hi! link pythonDecorator GruvboxRed -hi! link pythonInclude GruvboxBlue -hi! link pythonImport GruvboxBlue -hi! link pythonRun GruvboxBlue -hi! link pythonCoding GruvboxBlue -hi! link pythonOperator GruvboxRed -hi! link pythonException GruvboxRed -hi! link pythonExceptions GruvboxPurple -hi! link pythonBoolean GruvboxPurple -hi! link pythonDot GruvboxFg3 -hi! link pythonConditional GruvboxRed -hi! link pythonRepeat GruvboxRed -hi! link pythonDottedName GruvboxGreenBold - -" }}} -" CSS: {{{ - -hi! link cssBraces GruvboxBlue -hi! link cssFunctionName GruvboxYellow -hi! link cssIdentifier GruvboxOrange -hi! link cssClassName GruvboxGreen -hi! link cssColor GruvboxBlue -hi! link cssSelectorOp GruvboxBlue -hi! link cssSelectorOp2 GruvboxBlue -hi! link cssImportant GruvboxGreen -hi! link cssVendor GruvboxFg1 - -hi! link cssTextProp GruvboxAqua -hi! link cssAnimationProp GruvboxAqua -hi! link cssUIProp GruvboxYellow -hi! link cssTransformProp GruvboxAqua -hi! link cssTransitionProp GruvboxAqua -hi! link cssPrintProp GruvboxAqua -hi! link cssPositioningProp GruvboxYellow -hi! link cssBoxProp GruvboxAqua -hi! link cssFontDescriptorProp GruvboxAqua -hi! link cssFlexibleBoxProp GruvboxAqua -hi! link cssBorderOutlineProp GruvboxAqua -hi! link cssBackgroundProp GruvboxAqua -hi! link cssMarginProp GruvboxAqua -hi! link cssListProp GruvboxAqua -hi! link cssTableProp GruvboxAqua -hi! link cssFontProp GruvboxAqua -hi! link cssPaddingProp GruvboxAqua -hi! link cssDimensionProp GruvboxAqua -hi! link cssRenderProp GruvboxAqua -hi! link cssColorProp GruvboxAqua -hi! link cssGeneratedContentProp GruvboxAqua - -" }}} -" JavaScript: {{{ - -hi! link javaScriptBraces GruvboxFg1 -hi! link javaScriptFunction GruvboxAqua -hi! link javaScriptIdentifier GruvboxRed -hi! link javaScriptMember GruvboxBlue -hi! link javaScriptNumber GruvboxPurple -hi! link javaScriptNull GruvboxPurple -hi! link javaScriptParens GruvboxFg3 - -" }}} -" YAJS: {{{ - -hi! link javascriptImport GruvboxAqua -hi! link javascriptExport GruvboxAqua -hi! link javascriptClassKeyword GruvboxAqua -hi! link javascriptClassExtends GruvboxAqua -hi! link javascriptDefault GruvboxAqua - -hi! link javascriptClassName GruvboxYellow -hi! link javascriptClassSuperName GruvboxYellow -hi! link javascriptGlobal GruvboxYellow - -hi! link javascriptEndColons GruvboxFg1 -hi! link javascriptFuncArg GruvboxFg1 -hi! link javascriptGlobalMethod GruvboxFg1 -hi! link javascriptNodeGlobal GruvboxFg1 -hi! link javascriptBOMWindowProp GruvboxFg1 -hi! link javascriptArrayMethod GruvboxFg1 -hi! link javascriptArrayStaticMethod GruvboxFg1 -hi! link javascriptCacheMethod GruvboxFg1 -hi! link javascriptDateMethod GruvboxFg1 -hi! link javascriptMathStaticMethod GruvboxFg1 - -" hi! link javascriptProp GruvboxFg1 -hi! link javascriptURLUtilsProp GruvboxFg1 -hi! link javascriptBOMNavigatorProp GruvboxFg1 -hi! link javascriptDOMDocMethod GruvboxFg1 -hi! link javascriptDOMDocProp GruvboxFg1 -hi! link javascriptBOMLocationMethod GruvboxFg1 -hi! link javascriptBOMWindowMethod GruvboxFg1 -hi! link javascriptStringMethod GruvboxFg1 - -hi! link javascriptVariable GruvboxOrange -" hi! link javascriptVariable GruvboxRed -" hi! link javascriptIdentifier GruvboxOrange -" hi! link javascriptClassSuper GruvboxOrange -hi! link javascriptIdentifier GruvboxOrange -hi! link javascriptClassSuper GruvboxOrange - -" hi! link javascriptFuncKeyword GruvboxOrange -" hi! link javascriptAsyncFunc GruvboxOrange -hi! link javascriptFuncKeyword GruvboxAqua -hi! link javascriptAsyncFunc GruvboxAqua -hi! link javascriptClassStatic GruvboxOrange - -hi! link javascriptOperator GruvboxRed -hi! link javascriptForOperator GruvboxRed -hi! link javascriptYield GruvboxRed -hi! link javascriptExceptions GruvboxRed -hi! link javascriptMessage GruvboxRed - -hi! link javascriptTemplateSB GruvboxAqua -hi! link javascriptTemplateSubstitution GruvboxFg1 - -" hi! link javascriptLabel GruvboxBlue -" hi! link javascriptObjectLabel GruvboxBlue -" hi! link javascriptPropertyName GruvboxBlue -hi! link javascriptLabel GruvboxFg1 -hi! link javascriptObjectLabel GruvboxFg1 -hi! link javascriptPropertyName GruvboxFg1 - -hi! link javascriptLogicSymbols GruvboxFg1 -hi! link javascriptArrowFunc GruvboxYellow - -hi! link javascriptDocParamName GruvboxFg4 -hi! link javascriptDocTags GruvboxFg4 -hi! link javascriptDocNotation GruvboxFg4 -hi! link javascriptDocParamType GruvboxFg4 -hi! link javascriptDocNamedParamType GruvboxFg4 - -hi! link javascriptBrackets GruvboxFg1 -hi! link javascriptDOMElemAttrs GruvboxFg1 -hi! link javascriptDOMEventMethod GruvboxFg1 -hi! link javascriptDOMNodeMethod GruvboxFg1 -hi! link javascriptDOMStorageMethod GruvboxFg1 -hi! link javascriptHeadersMethod GruvboxFg1 - -hi! link javascriptAsyncFuncKeyword GruvboxRed -hi! link javascriptAwaitFuncKeyword GruvboxRed - -" }}} -" PanglossJS: {{{ - -hi! link jsClassKeyword GruvboxAqua -hi! link jsExtendsKeyword GruvboxAqua -hi! link jsExportDefault GruvboxAqua -hi! link jsTemplateBraces GruvboxAqua -hi! link jsGlobalNodeObjects GruvboxFg1 -hi! link jsGlobalObjects GruvboxFg1 -hi! link jsFunction GruvboxAqua -hi! link jsFuncParens GruvboxFg3 -hi! link jsParens GruvboxFg3 -hi! link jsNull GruvboxPurple -hi! link jsUndefined GruvboxPurple -hi! link jsClassDefinition GruvboxYellow - -" }}} -" TypeScript: {{{ - -hi! link typeScriptReserved GruvboxAqua -hi! link typeScriptLabel GruvboxAqua -hi! link typeScriptFuncKeyword GruvboxAqua -hi! link typeScriptIdentifier GruvboxOrange -hi! link typeScriptBraces GruvboxFg1 -hi! link typeScriptEndColons GruvboxFg1 -hi! link typeScriptDOMObjects GruvboxFg1 -hi! link typeScriptAjaxMethods GruvboxFg1 -hi! link typeScriptLogicSymbols GruvboxFg1 -hi! link typeScriptDocSeeTag Comment -hi! link typeScriptDocParam Comment -hi! link typeScriptDocTags vimCommentTitle -hi! link typeScriptGlobalObjects GruvboxFg1 -hi! link typeScriptParens GruvboxFg3 -hi! link typeScriptOpSymbols GruvboxFg3 -hi! link typeScriptHtmlElemProperties GruvboxFg1 -hi! link typeScriptNull GruvboxPurple -hi! link typeScriptInterpolationDelimiter GruvboxAqua - -" }}} -" PureScript: {{{ - -hi! link purescriptModuleKeyword GruvboxAqua -hi! link purescriptModuleName GruvboxFg1 -hi! link purescriptWhere GruvboxAqua -hi! link purescriptDelimiter GruvboxFg4 -hi! link purescriptType GruvboxFg1 -hi! link purescriptImportKeyword GruvboxAqua -hi! link purescriptHidingKeyword GruvboxAqua -hi! link purescriptAsKeyword GruvboxAqua -hi! link purescriptStructure GruvboxAqua -hi! link purescriptOperator GruvboxBlue - -hi! link purescriptTypeVar GruvboxFg1 -hi! link purescriptConstructor GruvboxFg1 -hi! link purescriptFunction GruvboxFg1 -hi! link purescriptConditional GruvboxOrange -hi! link purescriptBacktick GruvboxOrange - -" }}} -" CoffeeScript: {{{ - -hi! link coffeeExtendedOp GruvboxFg3 -hi! link coffeeSpecialOp GruvboxFg3 -hi! link coffeeCurly GruvboxOrange -hi! link coffeeParen GruvboxFg3 -hi! link coffeeBracket GruvboxOrange - -" }}} -" Ruby: {{{ - -hi! link rubyStringDelimiter GruvboxGreen -hi! link rubyInterpolationDelimiter GruvboxAqua - -" }}} -" ObjectiveC: {{{ - -hi! link objcTypeModifier GruvboxRed -hi! link objcDirective GruvboxBlue - -" }}} -" Go: {{{ - -hi! link goDirective GruvboxAqua -hi! link goConstants GruvboxPurple -hi! link goDeclaration GruvboxRed -hi! link goDeclType GruvboxBlue -hi! link goBuiltins GruvboxOrange - -" }}} -" Lua: {{{ - -hi! link luaIn GruvboxRed -hi! link luaFunction GruvboxAqua -hi! link luaTable GruvboxOrange - -" }}} -" MoonScript: {{{ - -hi! link moonSpecialOp GruvboxFg3 -hi! link moonExtendedOp GruvboxFg3 -hi! link moonFunction GruvboxFg3 -hi! link moonObject GruvboxYellow - -" }}} -" Java: {{{ - -hi! link javaAnnotation GruvboxBlue -hi! link javaDocTags GruvboxAqua -hi! link javaCommentTitle vimCommentTitle -hi! link javaParen GruvboxFg3 -hi! link javaParen1 GruvboxFg3 -hi! link javaParen2 GruvboxFg3 -hi! link javaParen3 GruvboxFg3 -hi! link javaParen4 GruvboxFg3 -hi! link javaParen5 GruvboxFg3 -hi! link javaOperator GruvboxOrange - -hi! link javaVarArg GruvboxGreen - -" }}} -" Elixir: {{{ - -hi! link elixirDocString Comment - -hi! link elixirStringDelimiter GruvboxGreen -hi! link elixirInterpolationDelimiter GruvboxAqua - -hi! link elixirModuleDeclaration GruvboxYellow - -" }}} -" Scala: {{{ - -" NB: scala vim syntax file is kinda horrible -hi! link scalaNameDefinition GruvboxFg1 -hi! link scalaCaseFollowing GruvboxFg1 -hi! link scalaCapitalWord GruvboxFg1 -hi! link scalaTypeExtension GruvboxFg1 - -hi! link scalaKeyword GruvboxRed -hi! link scalaKeywordModifier GruvboxRed - -hi! link scalaSpecial GruvboxAqua -hi! link scalaOperator GruvboxFg1 - -hi! link scalaTypeDeclaration GruvboxYellow -hi! link scalaTypeTypePostDeclaration GruvboxYellow - -hi! link scalaInstanceDeclaration GruvboxFg1 -hi! link scalaInterpolation GruvboxAqua - -" }}} -" Markdown: {{{ - -call s:HL('markdownItalic', s:fg3, s:none, s:italic) - -hi! link markdownH1 GruvboxGreenBold -hi! link markdownH2 GruvboxGreenBold -hi! link markdownH3 GruvboxYellowBold -hi! link markdownH4 GruvboxYellowBold -hi! link markdownH5 GruvboxYellow -hi! link markdownH6 GruvboxYellow - -hi! link markdownCode GruvboxAqua -hi! link markdownCodeBlock GruvboxAqua -hi! link markdownCodeDelimiter GruvboxAqua - -hi! link markdownBlockquote GruvboxGray -hi! link markdownListMarker GruvboxGray -hi! link markdownOrderedListMarker GruvboxGray -hi! link markdownRule GruvboxGray -hi! link markdownHeadingRule GruvboxGray - -hi! link markdownUrlDelimiter GruvboxFg3 -hi! link markdownLinkDelimiter GruvboxFg3 -hi! link markdownLinkTextDelimiter GruvboxFg3 - -hi! link markdownHeadingDelimiter GruvboxOrange -hi! link markdownUrl GruvboxPurple -hi! link markdownUrlTitleDelimiter GruvboxGreen - -call s:HL('markdownLinkText', s:gray, s:none, s:underline) -hi! link markdownIdDeclaration markdownLinkText - -" }}} -" Haskell: {{{ - -" hi! link haskellType GruvboxYellow -" hi! link haskellOperators GruvboxOrange -" hi! link haskellConditional GruvboxAqua -" hi! link haskellLet GruvboxOrange -" -hi! link haskellType GruvboxFg1 -hi! link haskellIdentifier GruvboxFg1 -hi! link haskellSeparator GruvboxFg1 -hi! link haskellDelimiter GruvboxFg4 -hi! link haskellOperators GruvboxBlue -" -hi! link haskellBacktick GruvboxOrange -hi! link haskellStatement GruvboxOrange -hi! link haskellConditional GruvboxOrange - -hi! link haskellLet GruvboxAqua -hi! link haskellDefault GruvboxAqua -hi! link haskellWhere GruvboxAqua -hi! link haskellBottom GruvboxAqua -hi! link haskellBlockKeywords GruvboxAqua -hi! link haskellImportKeywords GruvboxAqua -hi! link haskellDeclKeyword GruvboxAqua -hi! link haskellDeriving GruvboxAqua -hi! link haskellAssocType GruvboxAqua - -hi! link haskellNumber GruvboxPurple -hi! link haskellPragma GruvboxPurple - -hi! link haskellString GruvboxGreen -hi! link haskellChar GruvboxGreen - -" }}} -" Json: {{{ - -hi! link jsonKeyword GruvboxGreen -hi! link jsonQuote GruvboxGreen -hi! link jsonBraces GruvboxFg1 -hi! link jsonString GruvboxFg1 - -" }}} - - -" Functions ------------------------------------------------------------------- -" Search Highlighting Cursor {{{ - -function! GruvboxHlsShowCursor() - call s:HL('Cursor', s:bg0, s:hls_cursor) -endfunction - -function! GruvboxHlsHideCursor() - call s:HL('Cursor', s:none, s:none, s:inverse) -endfunction - -" }}} - -" vim: set sw=2 ts=2 sts=2 et tw=80 ft=vim fdm=marker: diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..9c8ca87 --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1 @@ +require("jacob") diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim deleted file mode 100644 index 7bb71b7..0000000 --- a/.config/nvim/init.vim +++ /dev/null @@ -1,120 +0,0 @@ -" Basic setup stuff -let mapleader=" " -set number relativenumber -filetype plugin on -syntax on -set wildmode=longest,list,full -set mouse=a -set colorcolumn=80 -set autoindent noexpandtab tabstop=4 shiftwidth=4 - -" Quick Save -map w :w - -" Spell check -map o :setlocal spell! spelllang=en_us - -" Open a terminal -map t :vsplit term://zsh - -" Change Line break to 120 -map l :set colorcolumn=120 -" Change Line break to 80 -map L :set colorcolumn=80 - -" Quick Netrw -map x :Ex - -" Keyboard shortcuts for harpoon - -map q :lua require("harpoon").ui:toggle_quick_menu(require("harpoon"):list()) -map a :lua require("harpoon"):list():append() -map n :lua require("harpoon"):list():next() -map p :lua require("harpoon"):list():prev() - -" Telescope Keyboard shortcuts -map ts :Telescope find_files - -" Removes spaces at the end of lines when saving -autocmd BufWritePre * %s/\s\+$//e - -" Center Cursor when entering insert mode -autocmd InsertEnter * norm zz - -" Fixing indenting visual block -vmap < >gv - -" Makes splitting default to the right and to the bottom -set splitbelow splitright - -" Remaps moving keys for splitting -map h -map j -map k -map l - -" Plugins -call plug#begin('~/.local/share/nvim/plugged') -Plug 'junegunn/goyo.vim' " Nice for reading Documents -Plug 'neoclide/coc.nvim', {'branch': 'release'} " Code Completion -Plug 'tpope/vim-commentary' " Makes commenting multiple lines easier -Plug 'NLKNguyen/papercolor-theme' -Plug 'nvim-lua/plenary.nvim' -Plug 'nvim-telescope/telescope.nvim', { 'tag': '0.1.x' } -Plug 'ThePrimeagen/harpoon', { 'branch': 'harpoon2' } -Plug 'neovim/nvim-lspconfig' -Plug 'mfussenegger/nvim-dap' -Plug 'rcarriga/nvim-dap-ui' -call plug#end() - -"Plug 'ms-jpq/coq_nvim', {'branch': 'coq'} -"Plug 'ms-jpq/coq.artifacts', {'branch': 'artifacts'} - -let g:coc_global_extensions = [ - \ 'coc-html', - \ 'coc-java', - \ 'coc-tsserver', - \ 'coc-css', - \ 'coc-clangd', - \ 'coc-go', - \ 'coc-pairs', - \ 'coc-python', - \ 'coc-flutter' - \ ] - -lua vim.g.coq_settings = {auto_start = 'shut-up',} - -lua require("dap_lldb") - -" nvim-dap keybinds -map db :lua require("dap").toggle_breakpoint() -map dc :lua require("dap").continue() -map dso :lua require("dap").step_over() -map ds :lua require("dap").step_into() -map dr :lua require("dapui").open({ reset = true }) -map dt :lua require("dapui").toggle() - -" Goyo plugin makes text more readable when writing prose: -map f :Goyo \| set linebreak - -" Commentary plugin -map c :Commentary \| set linebreak - -" runs gofmt when closing a go file. -autocmd VimLeave *.go !gofmt -w % - -" required for harpoon to run -:lua require("harpoon"):setup() - -" This handles gofmt on save -" https://www.getman.io/posts/programming-go-in-neovim/ -lua require("lsp_config") -autocmd BufWritePre *.go lua vim.lsp.buf.formatting() -autocmd BufWritePre *.go lua goimports(1000) - -set t_Co=256 - -set background=light " for the light version of the theme - -colorscheme PaperColor diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..12d569f --- /dev/null +++ b/.config/nvim/lazy-lock.json @@ -0,0 +1,14 @@ +{ + "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, + "harpoon": { "branch": "harpoon2", "commit": "a38be6e0dd4c6db66997deab71fc4453ace97f9c" }, + "lazy.nvim": { "branch": "main", "commit": "d37a76b87137c777f3d778ed03729d7f332a85f0" }, + "lsp-zero.nvim": { "branch": "v3.x", "commit": "2b5e9a39b3bf60bfb0cc7c35d5f2e879d4cd72ea" }, + "nvim-cmp": { "branch": "main", "commit": "97dc716fc914c46577a4f254035ebef1aa72558a" }, + "nvim-lspconfig": { "branch": "master", "commit": "6e5c78ebc9936ca74add66bda22c566f951b6ee5" }, + "nvim-treesitter": { "branch": "master", "commit": "7f3179315959bd762abd0f8dbe0361db805fb2d4" }, + "plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" }, + "telescope.nvim": { "branch": "master", "commit": "6312868392331c9c0f22725041f1ec2bef57c751" }, + "tokyonight.nvim": { "branch": "main", "commit": "f4b415bfbce390866a83277db42cf6aa94230728" }, + "undotree": { "branch": "master", "commit": "aa93a7e5890dbbebbc064cd22260721a6db1a196" } +} \ No newline at end of file diff --git a/.config/nvim/lua/dap_lldb.lua b/.config/nvim/lua/dap_lldb.lua deleted file mode 100644 index 40861d0..0000000 --- a/.config/nvim/lua/dap_lldb.lua +++ /dev/null @@ -1,25 +0,0 @@ -local dap = require'dap' - -require("dapui").setup() - -dap.adapters.lldb = { - type = 'executable', - -- absolute path is important here, otherwise the argument in the `runInTerminal` request will default to $CWD/lldb-vscode - command = '/usr/bin/lldb-vscode', - name = "lldb" -} -dap.configurations.c = { - { - name = "Launch", - type = "lldb", - request = "launch", - program = function() - return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') - end, - cwd = '${workspaceFolder}', - stopOnEntry = false, - args = {}, - runInTerminal = true, - }, -} - diff --git a/.config/nvim/lua/jacob/init.lua b/.config/nvim/lua/jacob/init.lua new file mode 100644 index 0000000..db8a563 --- /dev/null +++ b/.config/nvim/lua/jacob/init.lua @@ -0,0 +1,3 @@ +require("jacob.remaps") +require("jacob.plugins") +require("jacob.set") diff --git a/.config/nvim/lua/jacob/plugins.lua b/.config/nvim/lua/jacob/plugins.lua new file mode 100644 index 0000000..83675c0 --- /dev/null +++ b/.config/nvim/lua/jacob/plugins.lua @@ -0,0 +1,58 @@ +-- Lazy.nvim plugin manager +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + + +require("lazy").setup({ + { + 'nvim-telescope/telescope.nvim', tag = '0.1.6', + dependencies = { 'nvim-lua/plenary.nvim' } + }, + { + "ThePrimeagen/harpoon", + branch = "harpoon2", + dependencies = { "nvim-lua/plenary.nvim" } + }, + --{ + -- "NLKNguyen/papercolor-theme", + -- config = function() + -- vim.cmd('set t_Co=256') + -- vim.cmd('set background=light') + -- vim.cmd('colorscheme PaperColor') + -- end + --}, + { + 'folke/tokyonight.nvim', + priority = 1000, + init = function() + -- Like many other themes, this one has different styles, and you could load + -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. + vim.cmd.colorscheme 'tokyonight-day' + end, + }, + { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + }, + { + "mbbill/undotree", + config = function() + vim.keymap.set("n", "u", vim.cmd.UndotreeToggle) + end + }, + {'VonHeikemen/lsp-zero.nvim', branch = 'v3.x'}, + {'neovim/nvim-lspconfig'}, + {'hrsh7th/cmp-nvim-lsp'}, + {'hrsh7th/nvim-cmp'}, + {'L3MON4D3/LuaSnip'}, +}) diff --git a/.config/nvim/lua/jacob/remaps.lua b/.config/nvim/lua/jacob/remaps.lua new file mode 100644 index 0000000..02f1709 --- /dev/null +++ b/.config/nvim/lua/jacob/remaps.lua @@ -0,0 +1,42 @@ +vim.g.mapleader = " " + +-- Netrw Directory Listing +vim.keymap.set("n", "pv", vim.cmd.Ex) + +-- Quick Save +vim.keymap.set("n", "w", vim.cmd.w) + +vim.keymap.set("v", "J", ":m '>+1gv=gv") +vim.keymap.set("v", "K", ":m '<-2gv=gv") + +vim.keymap.set("n", "J", "mzJ`z") +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "n", "nzzzv") +vim.keymap.set("n", "N", "Nzzzv") + +-- greatest remap ever +vim.keymap.set("x", "p", [["_dP]]) + +-- next greatest remap ever : asbjornHaland +vim.keymap.set({"n", "v"}, "y", [["+y]]) +vim.keymap.set("n", "Y", [["+Y]]) + +vim.keymap.set({"n", "v"}, "d", [["_d]]) + +vim.keymap.set("n", "Q", "") +vim.keymap.set("n", "", "silent !tmux neww tmux-sessionizer") +vim.keymap.set("n", "f", vim.lsp.buf.format) + +vim.keymap.set("n", "", "cnextzz") +vim.keymap.set("n", "", "cprevzz") +vim.keymap.set("n", "k", "lnextzz") +vim.keymap.set("n", "j", "lprevzz") + +vim.keymap.set("n", "s", [[:%s/\<\>//gI]]) +vim.keymap.set("n", "x", "!chmod +x %", { silent = true }) + +vim.keymap.set("n", "", function() + vim.cmd("so") +end) + diff --git a/.config/nvim/lua/jacob/set.lua b/.config/nvim/lua/jacob/set.lua new file mode 100644 index 0000000..a71211e --- /dev/null +++ b/.config/nvim/lua/jacob/set.lua @@ -0,0 +1,32 @@ +vim.opt.nu = true +vim.opt.relativenumber = true + +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 +vim.opt.expandtab = true + +vim.opt.smartindent = true + +vim.opt.wrap = false + +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir" +vim.opt.undofile = true + +vim.opt.hlsearch = false +vim.opt.incsearch = true + +vim.opt.scrolloff = 8 +vim.opt.signcolumn = "yes" +vim.opt.isfname:append("@-@") + +vim.opt.updatetime = 50 + +vim.opt.colorcolumn = "80" + +vim.opt.mouse = 'a' + +vim.opt.list = true +vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } diff --git a/.config/nvim/lua/lsp_config.lua b/.config/nvim/lua/lsp_config.lua deleted file mode 100644 index be7e018..0000000 --- a/.config/nvim/lua/lsp_config.lua +++ /dev/null @@ -1,100 +0,0 @@ -local nvim_lsp = require('lspconfig') - -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities.textDocument.completion.completionItem.snippetSupport = true - -local on_attach = function(client, bufnr) - local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end - local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end - - buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings. - local opts = { noremap=true, silent=true } - buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - buf_set_keymap('n', 'ga', 'lua vim.lsp.buf.code_action()', opts) - buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) - buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) - buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) - buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) - buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) - buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) - buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) - buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) - buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) - - -- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_formatting then - buf_set_keymap("n", "ff", "lua vim.lsp.buf.formatting()", opts) - elseif client.resolved_capabilities.document_range_formatting then - buf_set_keymap("n", "ff", "lua vim.lsp.buf.range_formatting()", opts) - end - - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - vim.api.nvim_exec([[ - hi LspReferenceRead cterm=bold ctermbg=DarkMagenta guibg=LightYellow - hi LspReferenceText cterm=bold ctermbg=DarkMagenta guibg=LightYellow - hi LspReferenceWrite cterm=bold ctermbg=DarkMagenta guibg=LightYellow - augroup lsp_document_highlight - autocmd! * - autocmd CursorHold lua vim.lsp.buf.document_highlight() - autocmd CursorMoved lua vim.lsp.buf.clear_references() - augroup END - ]], false) - end -end - -nvim_lsp.gopls.setup{ - cmd = {'gopls'}, - -- for postfix snippets and analyzers - capabilities = capabilities, - settings = { - gopls = { - experimentalPostfixCompletions = true, - analyses = { - unusedparams = true, - shadow = true, - }, - staticcheck = true, - }, - }, - on_attach = on_attach, -} - - function goimports(timeoutms) - local context = { source = { organizeImports = true } } - vim.validate { context = { context, "t", true } } - - local params = vim.lsp.util.make_range_params() - params.context = context - - -- See the implementation of the textDocument/codeAction callback - -- (lua/vim/lsp/handler.lua) for how to do this properly. - local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, timeout_ms) - if not result or next(result) == nil then return end - local actions = result[1].result - if not actions then return end - local action = actions[1] - - -- textDocument/codeAction can return either Command[] or CodeAction[]. If it - -- is a CodeAction, it can have either an edit, a command or both. Edits - -- should be executed first. - if action.edit or type(action.command) == "table" then - if action.edit then - vim.lsp.util.apply_workspace_edit(action.edit) - end - if type(action.command) == "table" then - vim.lsp.buf.execute_command(action.command) - end - else - vim.lsp.buf.execute_command(action) - end - end - ---vim.lsp.set_log_level("debug") \ No newline at end of file -- cgit v1.2.3