From 3f1e56299d0d571057c047631caae7c34a0ff1e0 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Wed, 9 Mar 2022 09:28:28 -0800 Subject: add vim-fugitive and disable color theme for vimdiff usage --- lib/common.nix | 3 + lib/vimrc | 318 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 163 insertions(+), 158 deletions(-) diff --git a/lib/common.nix b/lib/common.nix index a87ebb5..aafb1dc 100644 --- a/lib/common.nix +++ b/lib/common.nix @@ -115,6 +115,8 @@ in pull.rebase = "true"; commit.template = "${./git-commit-template}"; commit.verbose = "true"; + mergetool.fugitive.cmd = ''vim -f -c "Gvdiffsplit!" "$MERGED"''; + merge.tool = "fugitive"; sendemail = { #smtpuser = "ben@bsima.me"; #smtpserverport = 587; @@ -229,6 +231,7 @@ in plugins = with pkgs.vimPlugins; [ editorconfig-vim vim-sensible + vim-fugitive vim-colorschemes vim-sexp-mappings-for-regular-people # vim-ripgrep # not in nixpkgs :( diff --git a/lib/vimrc b/lib/vimrc index 1565d6b..7aabb36 100644 --- a/lib/vimrc +++ b/lib/vimrc @@ -114,167 +114,169 @@ call plug#begin('~/.vim/plugged') Plug 'wfxr/minimap.vim' call plug#end() -let g:colors_name = 'bs_monochrome' - -let s:white = ['White', 15] -let s:black = ['#0e1111', 16] -let s:dblack = ['#111111', 1] -let s:bgray = ['#181818', 233] -let s:lgray = ['LightGray', 255] -let s:cgray = ['#737373', 243] -let s:dgray = ['DarkGray', 248] -let s:sblue = ['LightBlue', 67] -let s:yellow = ['LightYellow', 226] -let s:red = ['LightRed', 160] -let s:green = ['LightGreen', 28] -let s:purple = ['LightMagenta', 13] +colorscheme monokai-phoenix +" disable my color scheme, it doesn't work with vimdiff +"let g:colors_name = 'bs_monochrome' " -let s:default_fg = s:lgray -let s:default_bg = s:black - -let s:italic = 'italic' -let s:bold = 'bold' -let s:underline = 'underline' -let s:none = 'NONE' - -let s:default_lst = [] -let s:default_str = '' - -if !exists("g:monochrome_italic_comments") - let g:monochrome_italic_comments = 0 -endif -let s:comment_attr = g:monochrome_italic_comments ? s:italic : s:none +"let s:white = ['White', 15] +"let s:black = ['#0e1111', 16] +"let s:dblack = ['#111111', 1] +"let s:bgray = ['#181818', 233] +"let s:lgray = ['LightGray', 255] +"let s:cgray = ['#737373', 243] +"let s:dgray = ['DarkGray', 248] +"let s:sblue = ['LightBlue', 67] +"let s:yellow = ['LightYellow', 226] +"let s:red = ['LightRed', 160] +"let s:green = ['LightGreen', 28] +"let s:purple = ['LightMagenta', 13] +"" +"let s:default_fg = s:lgray +"let s:default_bg = s:black " -" A function for setting colors, if I want it... -function! s:hi(...) - let group = a:1 - let fg = get(a:, 2, s:default_fg) - let bg = get(a:, 3, s:default_bg) - let attr = get(a:, 4, s:default_str) - - let cmd = ['hi', group] - - if fg != s:default_lst - call add(cmd, 'guifg='.fg[0]) - call add(cmd, 'ctermfg='.fg[1]) - endif - - if bg != s:default_lst && bg != s:default_bg - call add(cmd, 'guibg='.bg[0]) - call add(cmd, 'ctermbg='.bg[1]) - endif - - if attr != s:default_str - call add(cmd, 'gui='.attr) - call add(cmd, 'cterm='.attr) - endif - - exec join(cmd, ' ') -endfunction - -call s:hi('Normal') -highlight clear Cursor -highlight clear CursorLine " clear the underline nonsense -call s:hi('Cursor', s:black, s:sblue) -call s:hi('lCursor', s:black, s:sblue) -call s:hi('CursorLine', s:black, s:sblue, s:none) -call s:hi('CursorLineNr', s:white, s:sblue, s:bold) -call s:hi('CursorColumn', s:black, s:sblue, s:none) -call s:hi('ColorColumn', s:lgray, s:dblack, s:none) -call s:hi('Search', s:black, s:purple) -call s:hi('Visual', s:black, s:green) -call s:hi('ErrorMsg', s:white, s:red) -call s:hi('StatusLine', s:black, s:purple) -call s:hi('StatusLineNC', s:black, s:purple) -call s:hi('VertSplit', s:black, s:purple) +"let s:italic = 'italic' +"let s:bold = 'bold' +"let s:underline = 'underline' +"let s:none = 'NONE' " -"" Tildes at the bottom of a buffer, etc. -call s:hi('NonText', s:dgray) - -" Folding. -call s:hi('FoldColumn', s:dgray) -call s:hi('Folded') - -" Line numbers gutter. -call s:hi('LineNr', s:dgray) - -" Small arrow used for tabs. -call s:hi('SpecialKey', s:sblue, s:default_bg, s:bold) - -" File browsers. -call s:hi('Directory', s:white, s:default_bg, s:bold) - -" Help. -call s:hi('helpSpecial') -call s:hi('helpHyperTextJump', s:sblue, s:default_bg, s:underline) -call s:hi('helpNote') - -" Popup menu. -call s:hi('Pmenu', s:white, s:sblue) -call s:hi('PmenuSel', s:sblue, s:white) - -" Notes. -call s:hi('Todo', s:black, s:yellow, s:bold) - -" Signs. -call s:hi('SignColumn') - -" --- Languages --------------------------------------------------------------- -call s:hi('Statement', s:white, s:default_bg, s:bold) -call s:hi('PreProc', s:white, s:default_bg, s:bold) -call s:hi('String', s:sblue) -call s:hi('Comment', s:cgray, s:default_bg, s:comment_attr) -call s:hi('Constant') -call s:hi('Type', s:white, s:default_bg, s:bold) -call s:hi('Function', s:white) -call s:hi('Identifier') -call s:hi('Special') -call s:hi('MatchParen', s:black, s:lgray) -call s:hi('vimOption') -call s:hi('vimGroup') -call s:hi('vimHiClear') -call s:hi('vimHiGroup') -call s:hi('vimHiAttrib') -call s:hi('vimHiGui') -call s:hi('vimHiGuiFgBg') -call s:hi('vimHiCTerm') -call s:hi('vimHiCTermFgBg') -call s:hi('vimSynType') -hi link vimCommentTitle Comment -call s:hi('pythonEscape', s:sblue) -call s:hi('javaScriptFunction', s:white, s:default_bg, s:bold) -call s:hi('perlSharpBang', s:cgray) -call s:hi('perlStringStartEnd', s:sblue) -call s:hi('perlStringEscape', s:sblue) -call s:hi('perlMatchStartEnd', s:sblue) -call s:hi('elixirAlias', s:default_fg, s:default_bg, s:none) -call s:hi('elixirDelimiter', s:sblue) -call s:hi('elixirSelf', s:default_fg, s:default_bg, s:none) -" For ||, ->, etc. -call s:hi('elixirOperator') -" Module attributes like @doc or @type. -hi link elixirVariable Statement -" While rendered as comments in other languages, docstrings are strings, -" experimental. -hi link elixirDocString String -hi link elixirDocTest String -hi link elixirStringDelimiter String -call s:hi('rubyConstant') -call s:hi('rubySharpBang', s:cgray) -call s:hi('rubyStringDelimiter', s:sblue) -call s:hi('rubyStringEscape', s:sblue) -call s:hi('rubyRegexpEscape', s:sblue) -call s:hi('rubyRegexpAnchor', s:sblue) -call s:hi('rubyRegexpSpecial', s:sblue) - -" --- Diffs -------------------------------------------------------------------- -call s:hi('diffFile', s:cgray) -call s:hi('diffNewFile', s:cgray) -call s:hi('diffIndexLine', s:cgray) -call s:hi('diffLine', s:cgray) -call s:hi('diffSubname', s:cgray) -call s:hi('diffAdded', s:white, s:green) -call s:hi('diffRemoved', s:white, s:red) +"let s:default_lst = [] +"let s:default_str = '' +" +"if !exists("g:monochrome_italic_comments") +" let g:monochrome_italic_comments = 0 +"endif +"let s:comment_attr = g:monochrome_italic_comments ? s:italic : s:none +"" +"" A function for setting colors, if I want it... +"function! s:hi(...) +" let group = a:1 +" let fg = get(a:, 2, s:default_fg) +" let bg = get(a:, 3, s:default_bg) +" let attr = get(a:, 4, s:default_str) +" +" let cmd = ['hi', group] +" +" if fg != s:default_lst +" call add(cmd, 'guifg='.fg[0]) +" call add(cmd, 'ctermfg='.fg[1]) +" endif +" +" if bg != s:default_lst && bg != s:default_bg +" call add(cmd, 'guibg='.bg[0]) +" call add(cmd, 'ctermbg='.bg[1]) +" endif +" +" if attr != s:default_str +" call add(cmd, 'gui='.attr) +" call add(cmd, 'cterm='.attr) +" endif +" +" exec join(cmd, ' ') +"endfunction +" +"call s:hi('Normal') +"highlight clear Cursor +"highlight clear CursorLine " clear the underline nonsense +"call s:hi('Cursor', s:black, s:sblue) +"call s:hi('lCursor', s:black, s:sblue) +"call s:hi('CursorLine', s:black, s:sblue, s:none) +"call s:hi('CursorLineNr', s:white, s:sblue, s:bold) +"call s:hi('CursorColumn', s:black, s:sblue, s:none) +"call s:hi('ColorColumn', s:lgray, s:dblack, s:none) +"call s:hi('Search', s:black, s:purple) +"call s:hi('Visual', s:black, s:green) +"call s:hi('ErrorMsg', s:white, s:red) +"call s:hi('StatusLine', s:black, s:purple) +"call s:hi('StatusLineNC', s:black, s:purple) +"call s:hi('VertSplit', s:black, s:purple) +"" +""" Tildes at the bottom of a buffer, etc. +"call s:hi('NonText', s:dgray) +" +"" Folding. +"call s:hi('FoldColumn', s:dgray) +"call s:hi('Folded') +" +"" Line numbers gutter. +"call s:hi('LineNr', s:dgray) +" +"" Small arrow used for tabs. +"call s:hi('SpecialKey', s:sblue, s:default_bg, s:bold) +" +"" File browsers. +"call s:hi('Directory', s:white, s:default_bg, s:bold) +" +"" Help. +"call s:hi('helpSpecial') +"call s:hi('helpHyperTextJump', s:sblue, s:default_bg, s:underline) +"call s:hi('helpNote') +" +"" Popup menu. +"call s:hi('Pmenu', s:white, s:sblue) +"call s:hi('PmenuSel', s:sblue, s:white) +" +"" Notes. +"call s:hi('Todo', s:black, s:yellow, s:bold) +" +"" Signs. +"call s:hi('SignColumn') +" +"" --- Languages --------------------------------------------------------------- +"call s:hi('Statement', s:white, s:default_bg, s:bold) +"call s:hi('PreProc', s:white, s:default_bg, s:bold) +"call s:hi('String', s:sblue) +"call s:hi('Comment', s:cgray, s:default_bg, s:comment_attr) +"call s:hi('Constant') +"call s:hi('Type', s:white, s:default_bg, s:bold) +"call s:hi('Function', s:white) +"call s:hi('Identifier') +"call s:hi('Special') +"call s:hi('MatchParen', s:black, s:lgray) +"call s:hi('vimOption') +"call s:hi('vimGroup') +"call s:hi('vimHiClear') +"call s:hi('vimHiGroup') +"call s:hi('vimHiAttrib') +"call s:hi('vimHiGui') +"call s:hi('vimHiGuiFgBg') +"call s:hi('vimHiCTerm') +"call s:hi('vimHiCTermFgBg') +"call s:hi('vimSynType') +"hi link vimCommentTitle Comment +"call s:hi('pythonEscape', s:sblue) +"call s:hi('javaScriptFunction', s:white, s:default_bg, s:bold) +"call s:hi('perlSharpBang', s:cgray) +"call s:hi('perlStringStartEnd', s:sblue) +"call s:hi('perlStringEscape', s:sblue) +"call s:hi('perlMatchStartEnd', s:sblue) +"call s:hi('elixirAlias', s:default_fg, s:default_bg, s:none) +"call s:hi('elixirDelimiter', s:sblue) +"call s:hi('elixirSelf', s:default_fg, s:default_bg, s:none) +"" For ||, ->, etc. +"call s:hi('elixirOperator') +"" Module attributes like @doc or @type. +"hi link elixirVariable Statement +"" While rendered as comments in other languages, docstrings are strings, +"" experimental. +"hi link elixirDocString String +"hi link elixirDocTest String +"hi link elixirStringDelimiter String +"call s:hi('rubyConstant') +"call s:hi('rubySharpBang', s:cgray) +"call s:hi('rubyStringDelimiter', s:sblue) +"call s:hi('rubyStringEscape', s:sblue) +"call s:hi('rubyRegexpEscape', s:sblue) +"call s:hi('rubyRegexpAnchor', s:sblue) +"call s:hi('rubyRegexpSpecial', s:sblue) +" +"" --- Diffs -------------------------------------------------------------------- +"call s:hi('diffFile', s:cgray) +"call s:hi('diffNewFile', s:cgray) +"call s:hi('diffIndexLine', s:cgray) +"call s:hi('diffLine', s:cgray) +"call s:hi('diffSubname', s:cgray) +"call s:hi('diffAdded', s:white, s:green) +"call s:hi('diffRemoved', s:white, s:red) " load ~/.vimrc.local last for local overrides if filereadable('~/.vimrc.local') -- cgit v1.2.3