From 5ec832c7c0620c7b6c44d6ff95e2351a669e3311 Mon Sep 17 00:00:00 2001 From: Daniel Lundin Date: Mon, 20 Feb 2017 08:20:48 +0100 Subject: [PATCH] Dark color scheme for st and vim --- .config/nvim/init.vim | 17 +- .config/redshift.conf | 2 +- .gitconfig | 2 +- .vim/colors/dln-jellybeans.vim | 570 --------------------------------- .vim/colors/dln-light.vim | 1 + .vim/colors/jellybeans.vim | 569 -------------------------------- .vimrc | 357 --------------------- bin/st | 2 +- bin/st.dark | Bin 0 -> 63368 bytes 9 files changed, 20 insertions(+), 1500 deletions(-) delete mode 100644 .vim/colors/dln-jellybeans.vim delete mode 100644 .vim/colors/jellybeans.vim delete mode 100644 .vimrc create mode 100755 bin/st.dark diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index d6b571b..0b7c85e 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -11,6 +11,9 @@ Plugin 'ctrlpvim/ctrlp.vim' Plugin 'ervandew/supertab' Plugin 'hashivim/vim-terraform' Plugin 'itchyny/lightline.vim' +Plugin 'joshdick/onedark.vim' +Plugin 'Matt-Deacalion/vim-systemd-syntax' +Plugin 'nanotech/jellybeans.vim' Plugin 'NLKNguyen/papercolor-theme' Plugin 'rust-lang/rust.vim' Plugin 'scrooloose/syntastic' @@ -345,5 +348,17 @@ let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 -color dln-light +let g:onedark_termcolors = 256 +let g:onedark_use_term_italics = 1 +let g:onedark_terminal_italics = 0 + +let g:jellybeans_use_term_italics = 1 +let g:jellybeans_overrides = { +\ 'background': { 'ctermbg': 'none', '256ctermbg': 'none' }, +\ 'Comment': { 'ctermfg': '25', 'cterm': 'italic' }, +\ 'LineNr': { 'ctermfg': '252', 'cterm': 'italic' }, +\} + +" color dln-light +color jellybeans diff --git a/.config/redshift.conf b/.config/redshift.conf index 7c480a4..7f02273 100644 --- a/.config/redshift.conf +++ b/.config/redshift.conf @@ -1,6 +1,6 @@ [redshift] temp-day=5800 -temp-night=4300 +temp-night=3700 brightness-day=0.99 brightness-night=0.7 location-provider=manual diff --git a/.gitconfig b/.gitconfig index dd91130..800aa36 100644 --- a/.gitconfig +++ b/.gitconfig @@ -1,6 +1,6 @@ [core] excludesfile = "~/.gitignore" -editor = vim +editor = nvim [user] name = Daniel Lundin diff --git a/.vim/colors/dln-jellybeans.vim b/.vim/colors/dln-jellybeans.vim deleted file mode 100644 index 18be1c3..0000000 --- a/.vim/colors/dln-jellybeans.vim +++ /dev/null @@ -1,570 +0,0 @@ -" Vim color file -" -" " __ _ _ _ " -" " \ \ ___| | |_ _| |__ ___ __ _ _ __ ___ " -" " \ \/ _ \ | | | | | _ \ / _ \/ _ | _ \/ __| " -" " /\_/ / __/ | | |_| | |_| | __/ |_| | | | \__ \ " -" " \___/ \___|_|_|\__ |____/ \___|\____|_| |_|___/ " -" " \___/ " -" -" "A colorful, dark color scheme for Vim." -" -" File: jellybeans.vim -" URL: github.com/nanotech/jellybeans.vim -" Scripts URL: vim.org/scripts/script.php?script_id=2555 -" Maintainer: NanoTech (nanotech.nanotechcorp.net) -" Version: 1.6~git -" Last Change: January 15th, 2012 -" License: MIT -" Contributors: Daniel Herbert (pocketninja) -" Henry So, Jr. -" David Liang -" Rich Healey (richo) -" Andrew Wong (w0ng) -" -" Copyright (c) 2009-2012 NanoTech -" -" Permission is hereby granted, free of charge, to any per‐ -" son obtaining a copy of this software and associated doc‐ -" umentation files (the “Software”), to deal in the Soft‐ -" ware without restriction, including without limitation -" the rights to use, copy, modify, merge, publish, distrib‐ -" ute, sublicense, and/or sell copies of the Software, and -" to permit persons to whom the Software is furnished to do -" so, subject to the following conditions: -" -" The above copyright notice and this permission notice -" shall be included in all copies or substantial portions -" of the Software. -" -" THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY -" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO -" THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICU‐ -" LAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CON‐ -" TRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON‐ -" NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -" THE SOFTWARE. - -set background=dark - -hi clear - -if exists("syntax_on") - syntax reset -endif - -let colors_name = "dln-jellybeans" - -if has("gui_running") || &t_Co == 88 || &t_Co == 256 - let s:low_color = 0 -else - let s:low_color = 1 -endif - -" Color approximation functions by Henry So, Jr. and David Liang {{{ -" Added to jellybeans.vim by Daniel Herbert - -" returns an approximate grey index for the given grey level -fun! s:grey_number(x) - if &t_Co == 88 - if a:x < 23 - return 0 - elseif a:x < 69 - return 1 - elseif a:x < 103 - return 2 - elseif a:x < 127 - return 3 - elseif a:x < 150 - return 4 - elseif a:x < 173 - return 5 - elseif a:x < 196 - return 6 - elseif a:x < 219 - return 7 - elseif a:x < 243 - return 8 - else - return 9 - endif - else - if a:x < 14 - return 0 - else - let l:n = (a:x - 8) / 10 - let l:m = (a:x - 8) % 10 - if l:m < 5 - return l:n - else - return l:n + 1 - endif - endif - endif -endfun - -" returns the actual grey level represented by the grey index -fun! s:grey_level(n) - if &t_Co == 88 - if a:n == 0 - return 0 - elseif a:n == 1 - return 46 - elseif a:n == 2 - return 92 - elseif a:n == 3 - return 115 - elseif a:n == 4 - return 139 - elseif a:n == 5 - return 162 - elseif a:n == 6 - return 185 - elseif a:n == 7 - return 208 - elseif a:n == 8 - return 231 - else - return 255 - endif - else - if a:n == 0 - return 0 - else - return 8 + (a:n * 10) - endif - endif -endfun - -" returns the palette index for the given grey index -fun! s:grey_color(n) - if &t_Co == 88 - if a:n == 0 - return 16 - elseif a:n == 9 - return 79 - else - return 79 + a:n - endif - else - if a:n == 0 - return 16 - elseif a:n == 25 - return 231 - else - return 231 + a:n - endif - endif -endfun - -" returns an approximate color index for the given color level -fun! s:rgb_number(x) - if &t_Co == 88 - if a:x < 69 - return 0 - elseif a:x < 172 - return 1 - elseif a:x < 230 - return 2 - else - return 3 - endif - else - if a:x < 75 - return 0 - else - let l:n = (a:x - 55) / 40 - let l:m = (a:x - 55) % 40 - if l:m < 20 - return l:n - else - return l:n + 1 - endif - endif - endif -endfun - -" returns the actual color level for the given color index -fun! s:rgb_level(n) - if &t_Co == 88 - if a:n == 0 - return 0 - elseif a:n == 1 - return 139 - elseif a:n == 2 - return 205 - else - return 255 - endif - else - if a:n == 0 - return 0 - else - return 55 + (a:n * 40) - endif - endif -endfun - -" returns the palette index for the given R/G/B color indices -fun! s:rgb_color(x, y, z) - if &t_Co == 88 - return 16 + (a:x * 16) + (a:y * 4) + a:z - else - return 16 + (a:x * 36) + (a:y * 6) + a:z - endif -endfun - -" returns the palette index to approximate the given R/G/B color levels -fun! s:color(r, g, b) - " get the closest grey - let l:gx = s:grey_number(a:r) - let l:gy = s:grey_number(a:g) - let l:gz = s:grey_number(a:b) - - " get the closest color - let l:x = s:rgb_number(a:r) - let l:y = s:rgb_number(a:g) - let l:z = s:rgb_number(a:b) - - if l:gx == l:gy && l:gy == l:gz - " there are two possibilities - let l:dgr = s:grey_level(l:gx) - a:r - let l:dgg = s:grey_level(l:gy) - a:g - let l:dgb = s:grey_level(l:gz) - a:b - let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb) - let l:dr = s:rgb_level(l:gx) - a:r - let l:dg = s:rgb_level(l:gy) - a:g - let l:db = s:rgb_level(l:gz) - a:b - let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db) - if l:dgrey < l:drgb - " use the grey - return s:grey_color(l:gx) - else - " use the color - return s:rgb_color(l:x, l:y, l:z) - endif - else - " only one possibility - return s:rgb_color(l:x, l:y, l:z) - endif -endfun - -" returns the palette index to approximate the 'rrggbb' hex string -fun! s:rgb(rgb) - let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0 - let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0 - let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0 - return s:color(l:r, l:g, l:b) -endfun - -" sets the highlighting for the given group -fun! s:X(group, fg, bg, attr, lcfg, lcbg) - if s:low_color - let l:fge = empty(a:lcfg) - let l:bge = empty(a:lcbg) - - if !l:fge && !l:bge - exec "hi ".a:group." ctermfg=".a:lcfg." ctermbg=".a:lcbg - elseif !l:fge && l:bge - exec "hi ".a:group." ctermfg=".a:lcfg." ctermbg=NONE" - elseif l:fge && !l:bge - exec "hi ".a:group." ctermfg=NONE ctermbg=".a:lcbg - endif - else - let l:fge = empty(a:fg) - let l:bge = empty(a:bg) - - if !l:fge && !l:bge - exec "hi ".a:group." guifg=#".a:fg." guibg=#".a:bg." ctermfg=".s:rgb(a:fg)." ctermbg=".s:rgb(a:bg) - elseif !l:fge && l:bge - exec "hi ".a:group." guifg=#".a:fg." guibg=NONE ctermfg=".s:rgb(a:fg)." ctermbg=NONE" - elseif l:fge && !l:bge - exec "hi ".a:group." guifg=NONE guibg=#".a:bg." ctermfg=NONE ctermbg=".s:rgb(a:bg) - endif - endif - - if a:attr == "" - exec "hi ".a:group." gui=none cterm=none" - else - " let l:noitalic = join(filter(split(a:attr, ","), "v:val !=? 'italic'"), ",") - let l:noitalic = a:attr - if empty(l:noitalic) - let l:noitalic = "none" - endif - exec "hi ".a:group." gui=".a:attr." cterm=".l:noitalic - endif -endfun -" }}} - -if !exists("g:jellybeans_background_color") - let g:jellybeans_background_color = "151515" -end - -call s:X("Normal","e8e8d3",g:jellybeans_background_color,"","White","") -set background=dark - -if !exists("g:jellybeans_use_lowcolor_black") || g:jellybeans_use_lowcolor_black - let s:termBlack = "Black" -else - let s:termBlack = "Grey" -endif - -if version >= 700 - call s:X("CursorLine","","222222","","",s:termBlack) - call s:X("CursorColumn","","1c1c1c","","",s:termBlack) - call s:X("MatchParen","ffffff","556779","bold","","DarkCyan") - - call s:X("TabLine","000000","b0b8c0","italic","",s:termBlack) - call s:X("TabLineFill","9098a0","","","",s:termBlack) - call s:X("TabLineSel","000000","f0f0f0","italic,bold",s:termBlack,"White") - - " Auto-completion - call s:X("Pmenu","ffffff","606060","","White",s:termBlack) - call s:X("PmenuSel","101010","eeeeee","",s:termBlack,"White") -endif - -call s:X("Visual","","404040","","",s:termBlack) -call s:X("Cursor",g:jellybeans_background_color,"b0d0f0","","","") - -call s:X("LineNr","444444",g:jellybeans_background_color,"italic",s:termBlack,"") -call s:X("CursorLineNr","ccc5c4","","none","White","") -call s:X("Comment","888888","","italic","Grey","") -call s:X("Todo","c7c7c7","","bold","White",s:termBlack) - -call s:X("StatusLine","000000","dddddd","italic","","White") -call s:X("StatusLineNC","ffffff","403c41","italic","White","Black") -call s:X("VertSplit","777777","403c41","",s:termBlack,s:termBlack) -call s:X("WildMenu","f0a0c0","302028","","Magenta","") - -call s:X("Folded","a0a8b0","384048","italic",s:termBlack,"") -call s:X("FoldColumn","535D66","1f1f1f","","",s:termBlack) -call s:X("SignColumn","777777","333333","","",s:termBlack) -call s:X("ColorColumn","","000000","","",s:termBlack) - -call s:X("Title","70b950","","bold","Green","") - -call s:X("Constant","cf6a4c","","","Red","") -call s:X("Special","799d6a","","","Green","") -call s:X("Delimiter","668799","","","Grey","") - -call s:X("String","99ad6a","","","Green","") -call s:X("StringDelimiter","556633","","","DarkGreen","") - -call s:X("Identifier","c6b6ee","","","LightCyan","") -call s:X("Structure","8fbfdc","","","LightCyan","") -call s:X("Function","fad07a","","","Yellow","") -call s:X("Statement","8197bf","","","DarkBlue","") -call s:X("PreProc","8fbfdc","","","LightBlue","") - -hi! link Operator Structure - -call s:X("Type","ffb964","","","Yellow","") -call s:X("NonText","606060",g:jellybeans_background_color,"",s:termBlack,"") - -call s:X("SpecialKey","444444","1c1c1c","",s:termBlack,"") - -call s:X("Search","f0a0c0","302028","underline","Magenta","") - -call s:X("Directory","dad085","","","Yellow","") -call s:X("ErrorMsg","","902020","","","DarkRed") -hi! link Error ErrorMsg -hi! link MoreMsg Special -call s:X("Question","65C254","","","Green","") - - -" Spell Checking - -call s:X("SpellBad","","902020","underline","","DarkRed") -call s:X("SpellCap","","0000df","underline","","Blue") -call s:X("SpellRare","","540063","underline","","DarkMagenta") -call s:X("SpellLocal","","2D7067","underline","","Green") - -" Diff - -hi! link diffRemoved Constant -hi! link diffAdded String - -" VimDiff - -call s:X("DiffAdd","D2EBBE","437019","","White","DarkGreen") -call s:X("DiffDelete","40000A","700009","","DarkRed","DarkRed") -call s:X("DiffChange","","2B5B77","","White","DarkBlue") -call s:X("DiffText","8fbfdc","000000","reverse","Yellow","") - -" PHP - -hi! link phpFunctions Function -call s:X("StorageClass","c59f6f","","","Red","") -hi! link phpSuperglobal Identifier -hi! link phpQuoteSingle StringDelimiter -hi! link phpQuoteDouble StringDelimiter -hi! link phpBoolean Constant -hi! link phpNull Constant -hi! link phpArrayPair Operator -hi! link phpOperator Normal -hi! link phpRelation Normal -hi! link phpVarSelector Identifier - -" Python - -hi! link pythonOperator Statement - -" Ruby - -hi! link rubySharpBang Comment -call s:X("rubyClass","447799","","","DarkBlue","") -call s:X("rubyIdentifier","c6b6fe","","","Cyan","") -hi! link rubyConstant Type -hi! link rubyFunction Function - -call s:X("rubyInstanceVariable","c6b6fe","","","Cyan","") -call s:X("rubySymbol","7697d6","","","Blue","") -hi! link rubyGlobalVariable rubyInstanceVariable -hi! link rubyModule rubyClass -call s:X("rubyControl","7597c6","","","Blue","") - -hi! link rubyString String -hi! link rubyStringDelimiter StringDelimiter -hi! link rubyInterpolationDelimiter Identifier - -call s:X("rubyRegexpDelimiter","540063","","","Magenta","") -call s:X("rubyRegexp","dd0093","","","DarkMagenta","") -call s:X("rubyRegexpSpecial","a40073","","","Magenta","") - -call s:X("rubyPredefinedIdentifier","de5577","","","Red","") - -" Erlang - -hi! link erlangAtom rubySymbol -hi! link erlangBIF rubyPredefinedIdentifier -hi! link erlangFunction rubyPredefinedIdentifier -hi! link erlangDirective Statement -hi! link erlangNode Identifier - -" JavaScript - -hi! link javaScriptValue Constant -hi! link javaScriptRegexpString rubyRegexp - -" CoffeeScript - -hi! link coffeeRegExp javaScriptRegexpString - -" Lua - -hi! link luaOperator Conditional - -" C - -hi! link cFormat Identifier -hi! link cOperator Constant - -" Objective-C/Cocoa - -hi! link objcClass Type -hi! link cocoaClass objcClass -hi! link objcSubclass objcClass -hi! link objcSuperclass objcClass -hi! link objcDirective rubyClass -hi! link objcStatement Constant -hi! link cocoaFunction Function -hi! link objcMethodName Identifier -hi! link objcMethodArg Normal -hi! link objcMessageName Identifier - -" Vimscript - -hi! link vimOper Normal - -" HTML - -hi! link htmlTag Statement -hi! link htmlEndTag htmlTag -hi! link htmlTagName htmlTag - -" XML - -hi! link xmlTag Statement -hi! link xmlEndTag xmlTag -hi! link xmlTagName xmlTag -hi! link xmlEqual xmlTag -hi! link xmlEntity Special -hi! link xmlEntityPunct xmlEntity -hi! link xmlDocTypeDecl PreProc -hi! link xmlDocTypeKeyword PreProc -hi! link xmlProcessingDelim xmlAttrib - -" Debugger.vim - -call s:X("DbgCurrent","DEEBFE","345FA8","","White","DarkBlue") -call s:X("DbgBreakPt","","4F0037","","","DarkMagenta") - -" vim-indent-guides - -if !exists("g:indent_guides_auto_colors") - let g:indent_guides_auto_colors = 0 -endif -call s:X("IndentGuidesOdd","","232323","","","") -call s:X("IndentGuidesEven","","1b1b1b","","","") - -" Plugins, etc. - -hi! link TagListFileName Directory -call s:X("PreciseJumpTarget","B9ED67","405026","","White","Green") - -if !exists("g:jellybeans_background_color_256") - let g:jellybeans_background_color_256=233 -end -" Manual overrides for 256-color terminals. Dark colors auto-map badly. -if !s:low_color - hi StatusLineNC ctermbg=235 - hi Folded ctermbg=236 - hi FoldColumn ctermbg=234 - hi SignColumn ctermbg=236 - hi CursorColumn ctermbg=234 - hi CursorLine ctermbg=235 - hi SpecialKey ctermbg=234 - exec "hi NonText ctermbg=".g:jellybeans_background_color_256 - exec "hi LineNr ctermbg=".g:jellybeans_background_color_256 - hi DiffText ctermfg=81 - exec "hi Normal ctermbg=".g:jellybeans_background_color_256 - hi DbgBreakPt ctermbg=53 - hi IndentGuidesOdd ctermbg=235 - hi IndentGuidesEven ctermbg=234 -endif - -if exists("g:jellybeans_overrides") - fun! s:load_colors(defs) - for [l:group, l:v] in items(a:defs) - call s:X(l:group, get(l:v, 'guifg', ''), get(l:v, 'guibg', ''), - \ get(l:v, 'attr', ''), - \ get(l:v, 'ctermfg', ''), get(l:v, 'ctermbg', '')) - if !s:low_color - for l:prop in ['ctermfg', 'ctermbg'] - let l:override_key = '256'.l:prop - if has_key(l:v, l:override_key) - exec "hi ".l:group." ".l:prop."=".l:v[l:override_key] - endif - endfor - endif - unlet l:group - unlet l:v - endfor - endfun - call s:load_colors(g:jellybeans_overrides) - delf s:load_colors -endif - -" delete functions {{{ -delf s:X -delf s:rgb -delf s:color -delf s:rgb_color -delf s:rgb_level -delf s:rgb_number -delf s:grey_color -delf s:grey_level -delf s:grey_number -" }}} diff --git a/.vim/colors/dln-light.vim b/.vim/colors/dln-light.vim index 4f372b0..3309624 100644 --- a/.vim/colors/dln-light.vim +++ b/.vim/colors/dln-light.vim @@ -1,4 +1,5 @@ " Vim color file +color s " Maintainer: Daniel Lundin " Last Change: Mon Oct 17 13:18:58 CEST 2016 diff --git a/.vim/colors/jellybeans.vim b/.vim/colors/jellybeans.vim deleted file mode 100644 index f9d5397..0000000 --- a/.vim/colors/jellybeans.vim +++ /dev/null @@ -1,569 +0,0 @@ -" Vim color file -" -" " __ _ _ _ " -" " \ \ ___| | |_ _| |__ ___ __ _ _ __ ___ " -" " \ \/ _ \ | | | | | _ \ / _ \/ _ | _ \/ __| " -" " /\_/ / __/ | | |_| | |_| | __/ |_| | | | \__ \ " -" " \___/ \___|_|_|\__ |____/ \___|\____|_| |_|___/ " -" " \___/ " -" -" "A colorful, dark color scheme for Vim." -" -" File: jellybeans.vim -" URL: github.com/nanotech/jellybeans.vim -" Scripts URL: vim.org/scripts/script.php?script_id=2555 -" Maintainer: NanoTech (nanotech.nanotechcorp.net) -" Version: 1.6~git -" Last Change: January 15th, 2012 -" License: MIT -" Contributors: Daniel Herbert (pocketninja) -" Henry So, Jr. -" David Liang -" Rich Healey (richo) -" Andrew Wong (w0ng) -" -" Copyright (c) 2009-2012 NanoTech -" -" Permission is hereby granted, free of charge, to any per‐ -" son obtaining a copy of this software and associated doc‐ -" umentation files (the “Software”), to deal in the Soft‐ -" ware without restriction, including without limitation -" the rights to use, copy, modify, merge, publish, distrib‐ -" ute, sublicense, and/or sell copies of the Software, and -" to permit persons to whom the Software is furnished to do -" so, subject to the following conditions: -" -" The above copyright notice and this permission notice -" shall be included in all copies or substantial portions -" of the Software. -" -" THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY -" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO -" THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICU‐ -" LAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CON‐ -" TRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON‐ -" NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -" THE SOFTWARE. - -set background=dark - -hi clear - -if exists("syntax_on") - syntax reset -endif - -let colors_name = "jellybeans" - -if has("gui_running") || &t_Co == 88 || &t_Co == 256 - let s:low_color = 0 -else - let s:low_color = 1 -endif - -" Color approximation functions by Henry So, Jr. and David Liang {{{ -" Added to jellybeans.vim by Daniel Herbert - -" returns an approximate grey index for the given grey level -fun! s:grey_number(x) - if &t_Co == 88 - if a:x < 23 - return 0 - elseif a:x < 69 - return 1 - elseif a:x < 103 - return 2 - elseif a:x < 127 - return 3 - elseif a:x < 150 - return 4 - elseif a:x < 173 - return 5 - elseif a:x < 196 - return 6 - elseif a:x < 219 - return 7 - elseif a:x < 243 - return 8 - else - return 9 - endif - else - if a:x < 14 - return 0 - else - let l:n = (a:x - 8) / 10 - let l:m = (a:x - 8) % 10 - if l:m < 5 - return l:n - else - return l:n + 1 - endif - endif - endif -endfun - -" returns the actual grey level represented by the grey index -fun! s:grey_level(n) - if &t_Co == 88 - if a:n == 0 - return 0 - elseif a:n == 1 - return 46 - elseif a:n == 2 - return 92 - elseif a:n == 3 - return 115 - elseif a:n == 4 - return 139 - elseif a:n == 5 - return 162 - elseif a:n == 6 - return 185 - elseif a:n == 7 - return 208 - elseif a:n == 8 - return 231 - else - return 255 - endif - else - if a:n == 0 - return 0 - else - return 8 + (a:n * 10) - endif - endif -endfun - -" returns the palette index for the given grey index -fun! s:grey_color(n) - if &t_Co == 88 - if a:n == 0 - return 16 - elseif a:n == 9 - return 79 - else - return 79 + a:n - endif - else - if a:n == 0 - return 16 - elseif a:n == 25 - return 231 - else - return 231 + a:n - endif - endif -endfun - -" returns an approximate color index for the given color level -fun! s:rgb_number(x) - if &t_Co == 88 - if a:x < 69 - return 0 - elseif a:x < 172 - return 1 - elseif a:x < 230 - return 2 - else - return 3 - endif - else - if a:x < 75 - return 0 - else - let l:n = (a:x - 55) / 40 - let l:m = (a:x - 55) % 40 - if l:m < 20 - return l:n - else - return l:n + 1 - endif - endif - endif -endfun - -" returns the actual color level for the given color index -fun! s:rgb_level(n) - if &t_Co == 88 - if a:n == 0 - return 0 - elseif a:n == 1 - return 139 - elseif a:n == 2 - return 205 - else - return 255 - endif - else - if a:n == 0 - return 0 - else - return 55 + (a:n * 40) - endif - endif -endfun - -" returns the palette index for the given R/G/B color indices -fun! s:rgb_color(x, y, z) - if &t_Co == 88 - return 16 + (a:x * 16) + (a:y * 4) + a:z - else - return 16 + (a:x * 36) + (a:y * 6) + a:z - endif -endfun - -" returns the palette index to approximate the given R/G/B color levels -fun! s:color(r, g, b) - " get the closest grey - let l:gx = s:grey_number(a:r) - let l:gy = s:grey_number(a:g) - let l:gz = s:grey_number(a:b) - - " get the closest color - let l:x = s:rgb_number(a:r) - let l:y = s:rgb_number(a:g) - let l:z = s:rgb_number(a:b) - - if l:gx == l:gy && l:gy == l:gz - " there are two possibilities - let l:dgr = s:grey_level(l:gx) - a:r - let l:dgg = s:grey_level(l:gy) - a:g - let l:dgb = s:grey_level(l:gz) - a:b - let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb) - let l:dr = s:rgb_level(l:gx) - a:r - let l:dg = s:rgb_level(l:gy) - a:g - let l:db = s:rgb_level(l:gz) - a:b - let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db) - if l:dgrey < l:drgb - " use the grey - return s:grey_color(l:gx) - else - " use the color - return s:rgb_color(l:x, l:y, l:z) - endif - else - " only one possibility - return s:rgb_color(l:x, l:y, l:z) - endif -endfun - -" returns the palette index to approximate the 'rrggbb' hex string -fun! s:rgb(rgb) - let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0 - let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0 - let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0 - return s:color(l:r, l:g, l:b) -endfun - -" sets the highlighting for the given group -fun! s:X(group, fg, bg, attr, lcfg, lcbg) - if s:low_color - let l:fge = empty(a:lcfg) - let l:bge = empty(a:lcbg) - - if !l:fge && !l:bge - exec "hi ".a:group." ctermfg=".a:lcfg." ctermbg=".a:lcbg - elseif !l:fge && l:bge - exec "hi ".a:group." ctermfg=".a:lcfg." ctermbg=NONE" - elseif l:fge && !l:bge - exec "hi ".a:group." ctermfg=NONE ctermbg=".a:lcbg - endif - else - let l:fge = empty(a:fg) - let l:bge = empty(a:bg) - - if !l:fge && !l:bge - exec "hi ".a:group." guifg=#".a:fg." guibg=#".a:bg." ctermfg=".s:rgb(a:fg)." ctermbg=".s:rgb(a:bg) - elseif !l:fge && l:bge - exec "hi ".a:group." guifg=#".a:fg." guibg=NONE ctermfg=".s:rgb(a:fg)." ctermbg=NONE" - elseif l:fge && !l:bge - exec "hi ".a:group." guifg=NONE guibg=#".a:bg." ctermfg=NONE ctermbg=".s:rgb(a:bg) - endif - endif - - if a:attr == "" - exec "hi ".a:group." gui=none cterm=none" - else - let l:noitalic = join(filter(split(a:attr, ","), "v:val !=? 'italic'"), ",") - if empty(l:noitalic) - let l:noitalic = "none" - endif - exec "hi ".a:group." gui=".a:attr." cterm=".l:noitalic - endif -endfun -" }}} - -if !exists("g:jellybeans_background_color") - let g:jellybeans_background_color = "151515" -end - -call s:X("Normal","e8e8d3",g:jellybeans_background_color,"","White","") -set background=dark - -if !exists("g:jellybeans_use_lowcolor_black") || g:jellybeans_use_lowcolor_black - let s:termBlack = "Black" -else - let s:termBlack = "Grey" -endif - -if version >= 700 - call s:X("CursorLine","","1c1c1c","","",s:termBlack) - call s:X("CursorColumn","","1c1c1c","","",s:termBlack) - call s:X("MatchParen","ffffff","556779","bold","","DarkCyan") - - call s:X("TabLine","000000","b0b8c0","italic","",s:termBlack) - call s:X("TabLineFill","9098a0","","","",s:termBlack) - call s:X("TabLineSel","000000","f0f0f0","italic,bold",s:termBlack,"White") - - " Auto-completion - call s:X("Pmenu","ffffff","606060","","White",s:termBlack) - call s:X("PmenuSel","101010","eeeeee","",s:termBlack,"White") -endif - -call s:X("Visual","","404040","","",s:termBlack) -call s:X("Cursor",g:jellybeans_background_color,"b0d0f0","","","") - -call s:X("LineNr","605958",g:jellybeans_background_color,"none",s:termBlack,"") -call s:X("CursorLineNr","ccc5c4","","none","White","") -call s:X("Comment","888888","","italic","Grey","") -call s:X("Todo","c7c7c7","","bold","White",s:termBlack) - -call s:X("StatusLine","000000","dddddd","italic","","White") -call s:X("StatusLineNC","ffffff","403c41","italic","White","Black") -call s:X("VertSplit","777777","403c41","",s:termBlack,s:termBlack) -call s:X("WildMenu","f0a0c0","302028","","Magenta","") - -call s:X("Folded","a0a8b0","384048","italic",s:termBlack,"") -call s:X("FoldColumn","535D66","1f1f1f","","",s:termBlack) -call s:X("SignColumn","777777","333333","","",s:termBlack) -call s:X("ColorColumn","","000000","","",s:termBlack) - -call s:X("Title","70b950","","bold","Green","") - -call s:X("Constant","cf6a4c","","","Red","") -call s:X("Special","799d6a","","","Green","") -call s:X("Delimiter","668799","","","Grey","") - -call s:X("String","99ad6a","","","Green","") -call s:X("StringDelimiter","556633","","","DarkGreen","") - -call s:X("Identifier","c6b6ee","","","LightCyan","") -call s:X("Structure","8fbfdc","","","LightCyan","") -call s:X("Function","fad07a","","","Yellow","") -call s:X("Statement","8197bf","","","DarkBlue","") -call s:X("PreProc","8fbfdc","","","LightBlue","") - -hi! link Operator Structure - -call s:X("Type","ffb964","","","Yellow","") -call s:X("NonText","606060",g:jellybeans_background_color,"",s:termBlack,"") - -call s:X("SpecialKey","444444","1c1c1c","",s:termBlack,"") - -call s:X("Search","f0a0c0","302028","underline","Magenta","") - -call s:X("Directory","dad085","","","Yellow","") -call s:X("ErrorMsg","","902020","","","DarkRed") -hi! link Error ErrorMsg -hi! link MoreMsg Special -call s:X("Question","65C254","","","Green","") - - -" Spell Checking - -call s:X("SpellBad","","902020","underline","","DarkRed") -call s:X("SpellCap","","0000df","underline","","Blue") -call s:X("SpellRare","","540063","underline","","DarkMagenta") -call s:X("SpellLocal","","2D7067","underline","","Green") - -" Diff - -hi! link diffRemoved Constant -hi! link diffAdded String - -" VimDiff - -call s:X("DiffAdd","D2EBBE","437019","","White","DarkGreen") -call s:X("DiffDelete","40000A","700009","","DarkRed","DarkRed") -call s:X("DiffChange","","2B5B77","","White","DarkBlue") -call s:X("DiffText","8fbfdc","000000","reverse","Yellow","") - -" PHP - -hi! link phpFunctions Function -call s:X("StorageClass","c59f6f","","","Red","") -hi! link phpSuperglobal Identifier -hi! link phpQuoteSingle StringDelimiter -hi! link phpQuoteDouble StringDelimiter -hi! link phpBoolean Constant -hi! link phpNull Constant -hi! link phpArrayPair Operator -hi! link phpOperator Normal -hi! link phpRelation Normal -hi! link phpVarSelector Identifier - -" Python - -hi! link pythonOperator Statement - -" Ruby - -hi! link rubySharpBang Comment -call s:X("rubyClass","447799","","","DarkBlue","") -call s:X("rubyIdentifier","c6b6fe","","","Cyan","") -hi! link rubyConstant Type -hi! link rubyFunction Function - -call s:X("rubyInstanceVariable","c6b6fe","","","Cyan","") -call s:X("rubySymbol","7697d6","","","Blue","") -hi! link rubyGlobalVariable rubyInstanceVariable -hi! link rubyModule rubyClass -call s:X("rubyControl","7597c6","","","Blue","") - -hi! link rubyString String -hi! link rubyStringDelimiter StringDelimiter -hi! link rubyInterpolationDelimiter Identifier - -call s:X("rubyRegexpDelimiter","540063","","","Magenta","") -call s:X("rubyRegexp","dd0093","","","DarkMagenta","") -call s:X("rubyRegexpSpecial","a40073","","","Magenta","") - -call s:X("rubyPredefinedIdentifier","de5577","","","Red","") - -" Erlang - -hi! link erlangAtom rubySymbol -hi! link erlangBIF rubyPredefinedIdentifier -hi! link erlangFunction rubyPredefinedIdentifier -hi! link erlangDirective Statement -hi! link erlangNode Identifier - -" JavaScript - -hi! link javaScriptValue Constant -hi! link javaScriptRegexpString rubyRegexp - -" CoffeeScript - -hi! link coffeeRegExp javaScriptRegexpString - -" Lua - -hi! link luaOperator Conditional - -" C - -hi! link cFormat Identifier -hi! link cOperator Constant - -" Objective-C/Cocoa - -hi! link objcClass Type -hi! link cocoaClass objcClass -hi! link objcSubclass objcClass -hi! link objcSuperclass objcClass -hi! link objcDirective rubyClass -hi! link objcStatement Constant -hi! link cocoaFunction Function -hi! link objcMethodName Identifier -hi! link objcMethodArg Normal -hi! link objcMessageName Identifier - -" Vimscript - -hi! link vimOper Normal - -" HTML - -hi! link htmlTag Statement -hi! link htmlEndTag htmlTag -hi! link htmlTagName htmlTag - -" XML - -hi! link xmlTag Statement -hi! link xmlEndTag xmlTag -hi! link xmlTagName xmlTag -hi! link xmlEqual xmlTag -hi! link xmlEntity Special -hi! link xmlEntityPunct xmlEntity -hi! link xmlDocTypeDecl PreProc -hi! link xmlDocTypeKeyword PreProc -hi! link xmlProcessingDelim xmlAttrib - -" Debugger.vim - -call s:X("DbgCurrent","DEEBFE","345FA8","","White","DarkBlue") -call s:X("DbgBreakPt","","4F0037","","","DarkMagenta") - -" vim-indent-guides - -if !exists("g:indent_guides_auto_colors") - let g:indent_guides_auto_colors = 0 -endif -call s:X("IndentGuidesOdd","","232323","","","") -call s:X("IndentGuidesEven","","1b1b1b","","","") - -" Plugins, etc. - -hi! link TagListFileName Directory -call s:X("PreciseJumpTarget","B9ED67","405026","","White","Green") - -if !exists("g:jellybeans_background_color_256") - let g:jellybeans_background_color_256=233 -end -" Manual overrides for 256-color terminals. Dark colors auto-map badly. -if !s:low_color - hi StatusLineNC ctermbg=235 - hi Folded ctermbg=236 - hi FoldColumn ctermbg=234 - hi SignColumn ctermbg=236 - hi CursorColumn ctermbg=234 - hi CursorLine ctermbg=234 - hi SpecialKey ctermbg=234 - exec "hi NonText ctermbg=".g:jellybeans_background_color_256 - exec "hi LineNr ctermbg=".g:jellybeans_background_color_256 - hi DiffText ctermfg=81 - exec "hi Normal ctermbg=".g:jellybeans_background_color_256 - hi DbgBreakPt ctermbg=53 - hi IndentGuidesOdd ctermbg=235 - hi IndentGuidesEven ctermbg=234 -endif - -if exists("g:jellybeans_overrides") - fun! s:load_colors(defs) - for [l:group, l:v] in items(a:defs) - call s:X(l:group, get(l:v, 'guifg', ''), get(l:v, 'guibg', ''), - \ get(l:v, 'attr', ''), - \ get(l:v, 'ctermfg', ''), get(l:v, 'ctermbg', '')) - if !s:low_color - for l:prop in ['ctermfg', 'ctermbg'] - let l:override_key = '256'.l:prop - if has_key(l:v, l:override_key) - exec "hi ".l:group." ".l:prop."=".l:v[l:override_key] - endif - endfor - endif - unlet l:group - unlet l:v - endfor - endfun - call s:load_colors(g:jellybeans_overrides) - delf s:load_colors -endif - -" delete functions {{{ -delf s:X -delf s:rgb -delf s:color -delf s:rgb_color -delf s:rgb_level -delf s:rgb_number -delf s:grey_color -delf s:grey_level -delf s:grey_number -" }}} diff --git a/.vimrc b/.vimrc deleted file mode 100644 index 28f2e9a..0000000 --- a/.vimrc +++ /dev/null @@ -1,357 +0,0 @@ -"" Vundle -set rtp+=~/.vim/bundle/Vundle.vim -call vundle#begin() - -" Plugins -Plugin 'VundleVim/Vundle.vim' -" Plugin 'bling/vim-airline' -Plugin 'chriskempson/base16-vim' -Plugin 'ctrlpvim/ctrlp.vim' -Plugin 'ervandew/supertab' -Plugin 'itchyny/lightline.vim' -Plugin 'NLKNguyen/papercolor-theme' -Plugin 'rust-lang/rust.vim' -Plugin 'scrooloose/syntastic' -Plugin 'tomtom/tcomment_vim' -Plugin 'Valloric/YouCompleteMe' - -call vundle#end() - -set timeoutlen=250 -set ttimeoutlen=200 - -filetype on " detect the type of file -filetype plugin indent on " load filetype plugins -syntax on - -set history=1000 " How many lines of history to remember -set viminfo='100,!,f1,\"100,:40,%,n~/.viminfo - -set isk+=_,$,@,%,#,- " none of these should be word dividers, so make them not be -set hidden -set tabstop=2 -set shiftwidth=2 -set smarttab -set expandtab -set softtabstop=2 -set autoindent -set copyindent -set smartindent " Don't mess with comments -set nojoinspaces - -set autochdir -set nocompatible -set ttyfast -set nofoldenable " disable folding - -" Wordwrap -" set formatoptions=l -" formatoptions: -" c - autowrap COMMENTS using textwidth -" r - insert comment leader (?) on -" o - insert comment leader on 'o' or 'O' -" q - gq formats comments (?) -" n - recon numbered lists -" v - wrap on blanks -" t - autowrap TEXT using textwidth -set fo=croqnvt - -set lbr -set backspace=eol,start,indent -"Backspace and cursor keys wrap to -set whichwrap+=<,>,h,l -set wrap - -"" GUI -set vb t_vb= -set novisualbell -set noerrorbells -set ruler -set number " line numbers -set numberwidth=6 -set lz " lazy redraw -set so=7 "scope -set sidescroll=1 -set scrolloff=10 -set mouse=a -set ttymouse=xterm -set switchbuf=usetab -set showtabline=1 -set selection=exclusive -set shortmess=atI -set wildmenu -set wildmode=list:longest -set wildignore=*.swp,*.bak,*.pyc,*.class -set splitbelow " Preview window - -"" Session -let g:session_autosave = 'no' - -"" Fancy status line. -set laststatus=2 - -"" Powerline -"set rtp+=/home/dln/.vim/bundle/powerline/powerline/bindings/vim - -"" tmux window title -autocmd BufEnter * let &titlestring = expand("%:t") -if &term == "screen" - set t_ts=k - set t_fs=\ -endif -if &term == "screen" || &term == "xterm" - set title -endif -set t_se=23 -set t_ZH= -set t_ZR= - -"" Markers / Signature -let g:SignatureMarkTextHL="Bookmark" - -"" Minibuffer -let g:miniBufExplModSelTarget = 1 -let g:miniBufExplorerMoreThanOne = 0 -let g:miniBufExplModSelTarget = 0 -let g:miniBufExplUseSingleClick = 1 -let g:miniBufExplMapWindowNavVim = 1 -let g:miniBufExplVSplit = 25 -let g:miniBufExplSplitBelow=1 - -"" X clipboard copy paste -map ,v :r!xclip -o - - -"" Searching -set showmatch -set incsearch -set ignorecase -set smartcase -set hlsearch - -"" Use ack for grepping -set grepprg=ag -let g:ackprg='ag -H --nocolor --nogroup' - -"" Bookmarks -let g:showmarks_enable=1 -let g:showmarks_include="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - -" Errormarker -let errormarker_errorgroup = "ErrorMsg" -let errormarker_warninggroup = "Todo" - -"" Highlighting -map ,H :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' - \ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" - \ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">" - -"" Hide some files -let g:explHideFiles='^\.,.*\.class$,.*\.swp$,.*\.pyc$,.*\.swo$,\.DS_Store$,/tmp/v\d\d*' -let g:explDetailedHelp=1 - -"" Backup -set backup -set backupdir=~/.vim/backup,~/.tmp,~/tmp,/var/tmp,/tmp" -set directory=~/.vim/backup,~/.tmp,~/tmp,/var/tmp,/tmp" -let myvar = strftime("%y%m%d-%H%M") -let myvar = "set backupext=_". myvar -execute myvar -au BufWritePre * let &backupext = substitute(expand("%:p"), "\/", "_", "g") - -"" CtrlP -let g:ctrlp_match_window = 'top' -" let g:ctrlp_custom_ignore = '\v[\/](.DS_Store|.sass-cache|.bundle|.git|.hg|.svn|node_modules|vendor|bower_components)$' -" let g:ctrlp_custom_ignore = '\v[\/]\.(DS_Storegit|hg|svn|optimized|compiled|node_modules|bower_components)$' - -set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.class,*/target/*,*/.git/*" -" let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$' -let g:ctrlp_custom_ignore = 'node_modules$\|.lock$\|.gitkeep$\|tmp/\|bower_components$\|dist$' - - -let g:ctrlp_working_path_mode = 'ra' - -map :CtrlPBuffer -map ,` :CtrlPBuffer -map ,; :CtrlPChange -map ,e :CtrlPRoot -map ,d :CtrlPCurWD -map ,f :CtrlPMRUFiles -map ,g :CtrlPLine -map ,q :CtrlPQuickfix -map ,/ :CtrlPLine -map ,m :CtrlPBookmarkDir -map , :CtrlPBookmarkDirAdd - -"" Key bindings -imap  -inoremap :wa -nnoremap :wa - - -" C-Left, C-right -map [1;5D -map [1;5C -nnoremap b -vnoremap b -nnoremap ghb -inoremap ghb -nnoremap w -vnoremap w -nnoremap ghw -inoremap ghw - -"" Comments -map :TComment -imap - -"" SCM Stuff -let g:SCMDiffCommand = "git" -let VCSCommandDeleteOnHide = 1 -let g:git_branch_status_nogit="" -let g:git_branch_status_around="[]" -let g:git_branch_status_text="" -let g:git_branch_status_head_current=1 - -"" Buffer navigation -map ` :b# - - -"" "Turn off search highlight -map :noh -nmap ,/ :let @/="" - -"" -"" File types -"" - -au BufNewFile,BufRead manifest setlocal ft=json -au BufNewFile,BufRead *.aurora set filetype=python -au BufNewFile,BufRead *.avdl setlocal ft=avro-idl -au BufNewFile,BufRead *.avpr setlocal ft=json -au BufNewFile,BufRead *.cql set syntax=cql -au BufNewFile,BufRead *.go setlocal ft=go -au BufNewFile,BufRead *.g setlocal ft=antlr -au BufNewFile,BufRead *.js set ft=javascript -au BufNewFile,BufRead *.json setfiletype json -au BufNewFile,BufRead *.pig set filetype=pig syntax=pig -au BufNewFile,BufRead *.template setfiletype json -au BufNewFile,BufRead *.thrift setlocal ft=thrift -au BufNewFile,BufRead *.upstart set filetype=upstart -au BufNewFile,BufRead *.upstart.conf set filetype=upstart -au BufNewFile,BufRead SCons* set filetype=python - -"" JavaScript, Json -let g:vim_json_syntax_conceal = 0 - -"" Scala -autocmd BufNewFile,BufAdd,BufRead build.sbt setlocal ft=scala -autocmd BufNewFile,BufAdd,BufRead *.scala setlocal ft=scala -autocmd FileType scala setlocal expandtab shiftwidth=2 tabstop=2 softtabstop=2 - -"" Rust -autocmd FileType rust setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4 - -"" Clojure -let g:paredit_mode=0 -let g:clj_highlight_builtins=1 " Highlight Clojure's builtins -let g:clj_paren_rainbow=1 " Rainbow parentheses'! - -"" Python -au FileType python - \ setlocal efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m | - \ setlocal makeprg=python\ % | - \ setlocal tabstop=4 softtabstop=4 shiftwidth=4 | - \ setlocal nosmartindent cinwords=if,elif,else,for,while,try,except,finally,def,class -autocmd BufWritePre *.py normal m`:%s/\s\+$//e `` -autocmd FileType python set omnifunc=pythoncomplete#Complete - -" pydoc integration -let g:pydoc_highlight = 0 -let python_highlight_all = 1 -let g:pcs_check_when_saving = 0 -let g:pymode_lint = 0 -let g:pymode_lint_checker = "pyflakes" - - -" YouCompleteMe -set completefunc=youcompleteme#Complete -set completeopt=preview,menuone - -" tags -set tags=./tags;/ - -" C++ - -" Add highlighting for function definition in C++ -function! EnhanceCppSyntax() - syn match cppFuncDef "::\~\?\zs\h\w*\ze([^)]*\()\s*\(const\)\?\)\?$" - hi def link cppFuncDef Special -endfunction -autocmd Syntax cpp call EnhanceCppSyntax() -autocmd FileType cpp setlocal expandtab shiftwidth=2 tabstop=2 softtabstop=2 - -" HTML -au FileType html - \ set makeprg=tidy\ -qe\ -access\ 3\ % | - \ set errorformat=line\ %l\ column\ %c\ \-\ %m -" let g:html_indent_tags .= '\|p' -" let g:html_indent_tags .= '\|li' - - -au FileType xml - \ set makeprg=tidy\ -qe\ -access\ 3\ % | - \ set errorformat=line\ %l\ column\ %c\ \-\ %m - -"" -"" Color theme -"" -if $TERM =~ '^xterm' - set t_Co=256 -elseif $TERM =~ '^screen' - set t_Co=256 " just guessing -elseif $TERM =~ '^rxvt' - set t_Co=256 -elseif $TERM =~ '^linux' - set t_Co=8 -else - set t_Co=16 -endif - -if &term =~ "xterm" || &term =~ "screen" || &term == "screen" - set t_Co=256 - if has("terminfo") - let &t_Sf=nr2char(27).'[3%p1%dm' - let &t_Sb=nr2char(27).'[4%p1%dm' - else - let &t_Sf=nr2char(27).'[3%dm' - let &t_Sb=nr2char(27).'[4%dm' - endif -endif - -" Show syntax highlight group in the status bar -map ,h :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' -\ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" -\ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">" - -set background=light -let g:PaperColor_Light_Override = { 'Background' : '#fefe00' } - -set statusline+=%#warningmsg# -set statusline+=%{SyntasticStatuslineFlag()} -set statusline+=%* - -let g:syntastic_always_populate_loc_list = 1 -let g:syntastic_auto_loc_list = 1 -let g:syntastic_check_on_open = 1 -let g:syntastic_check_on_wq = 0 - -set g:lightline = { - \ 'colorscheme': 'seoul256', - \ 'component': { - \ 'readonly': '%{&readonly?"":""}', - \ } - \ } - -color dln-light - diff --git a/bin/st b/bin/st index 5eb1e7b..fc2e3a1 100755 --- a/bin/st +++ b/bin/st @@ -5,7 +5,7 @@ case `hostname` in exec st.x86_64 -f "Roboto Mono:pixelsize=14" $@ ;; dredd) - exec st.x86_64 -f "Roboto Mono-15" $@ + exec st.dark -f "Roboto Mono-15" $@ ;; esac exec st.x86_64 $@ diff --git a/bin/st.dark b/bin/st.dark new file mode 100755 index 0000000000000000000000000000000000000000..6356eebd811d562e5538901474a28a422b7df78b GIT binary patch literal 63368 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