Compare commits
No commits in common. "lazy" and "main" have entirely different histories.
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1 @@
|
|||||||
config/spell
|
config/spell
|
||||||
lazy-lock.json
|
|
||||||
|
453
config/colors/hybrid.vim
Normal file
453
config/colors/hybrid.vim
Normal file
@ -0,0 +1,453 @@
|
|||||||
|
" File: hybrid.vim
|
||||||
|
" Maintainer: Andrew Wong (w0ng)
|
||||||
|
" URL: https://github.com/w0ng/vim-hybrid
|
||||||
|
" Modified: 27 Jan 2013 07:33 AM AEST
|
||||||
|
" License: MIT
|
||||||
|
|
||||||
|
" Description:"{{{
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
" The default RGB colour palette is taken from Tomorrow-Night.vim:
|
||||||
|
" https://github.com/chriskempson/vim-tomorrow-theme
|
||||||
|
"
|
||||||
|
" The reduced RGB colour palette is taken from Codecademy's online editor:
|
||||||
|
" https://www.codecademy.com/learn
|
||||||
|
"
|
||||||
|
" The syntax highlighting scheme is taken from jellybeans.vim:
|
||||||
|
" https://github.com/nanotech/jellybeans.vim
|
||||||
|
"
|
||||||
|
" The is code taken from solarized.vim:
|
||||||
|
" https://github.com/altercation/vim-colors-solarized
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
" Requirements And Recommendations:"{{{
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
" Requirements
|
||||||
|
" - gVim 7.3+ on Linux, Mac and Windows.
|
||||||
|
" - Vim 7.3+ on Linux and Mac, using a terminal that supports 256 colours.
|
||||||
|
"
|
||||||
|
" Due to the limited 256 palette, colours in Vim and gVim will still be slightly
|
||||||
|
" different.
|
||||||
|
"
|
||||||
|
" In order to have Vim use the same colours as gVim (the way this colour scheme
|
||||||
|
" is intended), it is recommended that you define the basic 16 colours in your
|
||||||
|
" terminal.
|
||||||
|
"
|
||||||
|
" For Linux users (rxvt-unicode, xterm):
|
||||||
|
"
|
||||||
|
" 1. Add the default palette to ~/.Xresources:
|
||||||
|
"
|
||||||
|
" https://gist.github.com/3278077
|
||||||
|
"
|
||||||
|
" or alternatively, add the reduced contrast palette to ~/.Xresources:
|
||||||
|
"
|
||||||
|
" https://gist.github.com/w0ng/16e33902508b4a0350ae
|
||||||
|
"
|
||||||
|
" 2. Add to ~/.vimrc:
|
||||||
|
"
|
||||||
|
" let g:hybrid_custom_term_colors = 1
|
||||||
|
" let g:hybrid_reduced_contrast = 1 " Remove this line if using the default palette.
|
||||||
|
" colorscheme hybrid
|
||||||
|
"
|
||||||
|
" For OSX users (iTerm):
|
||||||
|
"
|
||||||
|
" 1. Import the default colour preset into iTerm:
|
||||||
|
"
|
||||||
|
" https://raw.githubusercontent.com/w0ng/dotfiles/master/iterm2/hybrid.itermcolors
|
||||||
|
"
|
||||||
|
" or alternatively, import the reduced contrast color preset into iTerm:
|
||||||
|
"
|
||||||
|
" https://raw.githubusercontent.com/w0ng/dotfiles/master/iterm2/hybrid-reduced-contrast.itermcolors
|
||||||
|
"
|
||||||
|
" 2. Add to ~/.vimrc:
|
||||||
|
"
|
||||||
|
" let g:hybrid_custom_term_colors = 1
|
||||||
|
" let g:hybrid_reduced_contrast = 1 " Remove this line if using the default palette.
|
||||||
|
" colorscheme hybrid
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
" Initialisation:"{{{
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
hi clear
|
||||||
|
|
||||||
|
if exists("syntax_on")
|
||||||
|
syntax reset
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:style = &background
|
||||||
|
|
||||||
|
let g:colors_name = "hybrid"
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
" GUI And Cterm Palettes:"{{{
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
let s:palette = {'gui' : {} , 'cterm' : {}}
|
||||||
|
|
||||||
|
if exists("g:hybrid_reduced_contrast") && g:hybrid_reduced_contrast == 1
|
||||||
|
let s:gui_background = "#232c31"
|
||||||
|
let s:gui_selection = "#425059"
|
||||||
|
let s:gui_line = "#2d3c46"
|
||||||
|
let s:gui_comment = "#6c7a80"
|
||||||
|
else
|
||||||
|
let s:gui_background = "#1d1f21"
|
||||||
|
let s:gui_selection = "#373b41"
|
||||||
|
let s:gui_line = "#282a2e"
|
||||||
|
let s:gui_comment = "#707880"
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:palette.gui.background = { 'dark' : s:gui_background , 'light' : "#e4e4e4" }
|
||||||
|
let s:palette.gui.foreground = { 'dark' : "#c5c8c6" , 'light' : "#000000" }
|
||||||
|
let s:palette.gui.selection = { 'dark' : s:gui_selection , 'light' : "#bcbcbc" }
|
||||||
|
let s:palette.gui.line = { 'dark' : s:gui_line , 'light' : "#d0d0d0" }
|
||||||
|
let s:palette.gui.comment = { 'dark' : s:gui_comment , 'light' : "#5f5f5f" }
|
||||||
|
let s:palette.gui.red = { 'dark' : "#cc6666" , 'light' : "#5f0000" }
|
||||||
|
let s:palette.gui.orange = { 'dark' : "#de935f" , 'light' : "#875f00" }
|
||||||
|
let s:palette.gui.yellow = { 'dark' : "#f0c674" , 'light' : "#5f5f00" }
|
||||||
|
let s:palette.gui.green = { 'dark' : "#b5bd68" , 'light' : "#005f00" }
|
||||||
|
let s:palette.gui.aqua = { 'dark' : "#8abeb7" , 'light' : "#005f5f" }
|
||||||
|
let s:palette.gui.blue = { 'dark' : "#81a2be" , 'light' : "#00005f" }
|
||||||
|
let s:palette.gui.purple = { 'dark' : "#b294bb" , 'light' : "#5f005f" }
|
||||||
|
let s:palette.gui.window = { 'dark' : "#303030" , 'light' : "#9e9e9e" }
|
||||||
|
let s:palette.gui.darkcolumn = { 'dark' : "#1c1c1c" , 'light' : "#808080" }
|
||||||
|
let s:palette.gui.addbg = { 'dark' : "#5F875F" , 'light' : "#d7ffd7" }
|
||||||
|
let s:palette.gui.addfg = { 'dark' : "#d7ffaf" , 'light' : "#005f00" }
|
||||||
|
let s:palette.gui.changebg = { 'dark' : "#5F5F87" , 'light' : "#d7d7ff" }
|
||||||
|
let s:palette.gui.changefg = { 'dark' : "#d7d7ff" , 'light' : "#5f005f" }
|
||||||
|
let s:palette.gui.delbg = { 'dark' : "#cc6666" , 'light' : "#ffd7d7" }
|
||||||
|
let s:palette.gui.darkblue = { 'dark' : "#00005f" , 'light' : "#d7ffd7" }
|
||||||
|
let s:palette.gui.darkcyan = { 'dark' : "#005f5f" , 'light' : "#005f00" }
|
||||||
|
let s:palette.gui.darkred = { 'dark' : "#5f0000" , 'light' : "#d7d7ff" }
|
||||||
|
let s:palette.gui.darkpurple = { 'dark' : "#5f005f" , 'light' : "#5f005f" }
|
||||||
|
|
||||||
|
if exists("g:hybrid_custom_term_colors") && g:hybrid_custom_term_colors == 1
|
||||||
|
let s:cterm_foreground = "15" " White
|
||||||
|
let s:cterm_selection = "8" " DarkGrey
|
||||||
|
let s:cterm_line = "0" " Black
|
||||||
|
let s:cterm_comment = "7" " LightGrey
|
||||||
|
let s:cterm_red = "9" " LightRed
|
||||||
|
let s:cterm_orange = "3" " DarkYellow
|
||||||
|
let s:cterm_yellow = "11" " LightYellow
|
||||||
|
let s:cterm_green = "10" " LightGreen
|
||||||
|
let s:cterm_aqua = "14" " LightCyan
|
||||||
|
let s:cterm_blue = "12" " LightBlue
|
||||||
|
let s:cterm_purple = "13" " LightMagenta
|
||||||
|
let s:cterm_delbg = "9" " LightRed
|
||||||
|
else
|
||||||
|
let s:cterm_foreground = "250"
|
||||||
|
let s:cterm_selection = "237"
|
||||||
|
let s:cterm_line = "235"
|
||||||
|
let s:cterm_comment = "243"
|
||||||
|
let s:cterm_red = "167"
|
||||||
|
let s:cterm_orange = "173"
|
||||||
|
let s:cterm_yellow = "221"
|
||||||
|
let s:cterm_green = "143"
|
||||||
|
let s:cterm_aqua = "109"
|
||||||
|
let s:cterm_blue = "110"
|
||||||
|
let s:cterm_purple = "139"
|
||||||
|
let s:cterm_delbg = "167"
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:palette.cterm.background = { 'dark' : "234" , 'light' : "254" }
|
||||||
|
let s:palette.cterm.foreground = { 'dark' : s:cterm_foreground , 'light' : "16" }
|
||||||
|
let s:palette.cterm.window = { 'dark' : "236" , 'light' : "247" }
|
||||||
|
let s:palette.cterm.selection = { 'dark' : s:cterm_selection , 'light' : "250" }
|
||||||
|
let s:palette.cterm.line = { 'dark' : s:cterm_line , 'light' : "252" }
|
||||||
|
let s:palette.cterm.comment = { 'dark' : s:cterm_comment , 'light' : "59" }
|
||||||
|
let s:palette.cterm.red = { 'dark' : s:cterm_red , 'light' : "52" }
|
||||||
|
let s:palette.cterm.orange = { 'dark' : s:cterm_orange , 'light' : "94" }
|
||||||
|
let s:palette.cterm.yellow = { 'dark' : s:cterm_yellow , 'light' : "58" }
|
||||||
|
let s:palette.cterm.green = { 'dark' : s:cterm_green , 'light' : "22" }
|
||||||
|
let s:palette.cterm.aqua = { 'dark' : s:cterm_aqua , 'light' : "23" }
|
||||||
|
let s:palette.cterm.blue = { 'dark' : s:cterm_blue , 'light' : "17" }
|
||||||
|
let s:palette.cterm.purple = { 'dark' : s:cterm_purple , 'light' : "53" }
|
||||||
|
let s:palette.cterm.darkcolumn = { 'dark' : "234" , 'light' : "244" }
|
||||||
|
let s:palette.cterm.addbg = { 'dark' : "65" , 'light' : "194" }
|
||||||
|
let s:palette.cterm.addfg = { 'dark' : "193" , 'light' : "22" }
|
||||||
|
let s:palette.cterm.changebg = { 'dark' : "60" , 'light' : "189" }
|
||||||
|
let s:palette.cterm.changefg = { 'dark' : "189" , 'light' : "53" }
|
||||||
|
let s:palette.cterm.delbg = { 'dark' : s:cterm_delbg , 'light' : "224" }
|
||||||
|
let s:palette.cterm.darkblue = { 'dark' : "17" , 'light' : "194" }
|
||||||
|
let s:palette.cterm.darkcyan = { 'dark' : "24" , 'light' : "22" }
|
||||||
|
let s:palette.cterm.darkred = { 'dark' : "52" , 'light' : "189" }
|
||||||
|
let s:palette.cterm.darkpurple = { 'dark' : "53" , 'light' : "53" }
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
" Formatting Options:"{{{
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
let s:none = "NONE"
|
||||||
|
let s:t_none = "NONE"
|
||||||
|
let s:n = "NONE"
|
||||||
|
let s:c = ",undercurl"
|
||||||
|
let s:r = ",reverse"
|
||||||
|
let s:s = ",standout"
|
||||||
|
let s:b = ",bold"
|
||||||
|
let s:u = ",underline"
|
||||||
|
let s:i = ",italic"
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
" Highlighting Primitives:"{{{
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
function! s:build_prim(hi_elem, field)
|
||||||
|
" Given a:hi_elem = bg, a:field = comment
|
||||||
|
let l:vname = "s:" . a:hi_elem . "_" . a:field " s:bg_comment
|
||||||
|
let l:gui_assign = "gui".a:hi_elem."=".s:palette.gui[a:field][s:style] " guibg=...
|
||||||
|
let l:cterm_assign = "cterm".a:hi_elem."=".s:palette.cterm[a:field][s:style] " ctermbg=...
|
||||||
|
exe "let " . l:vname . " = ' " . l:gui_assign . " " . l:cterm_assign . "'"
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:bg_none = ' guibg=NONE ctermbg=NONE'
|
||||||
|
call s:build_prim('bg', 'foreground')
|
||||||
|
call s:build_prim('bg', 'background')
|
||||||
|
call s:build_prim('bg', 'selection')
|
||||||
|
call s:build_prim('bg', 'line')
|
||||||
|
call s:build_prim('bg', 'comment')
|
||||||
|
call s:build_prim('bg', 'red')
|
||||||
|
call s:build_prim('bg', 'orange')
|
||||||
|
call s:build_prim('bg', 'yellow')
|
||||||
|
call s:build_prim('bg', 'green')
|
||||||
|
call s:build_prim('bg', 'aqua')
|
||||||
|
call s:build_prim('bg', 'blue')
|
||||||
|
call s:build_prim('bg', 'purple')
|
||||||
|
call s:build_prim('bg', 'window')
|
||||||
|
call s:build_prim('bg', 'darkcolumn')
|
||||||
|
call s:build_prim('bg', 'addbg')
|
||||||
|
call s:build_prim('bg', 'addfg')
|
||||||
|
call s:build_prim('bg', 'changebg')
|
||||||
|
call s:build_prim('bg', 'changefg')
|
||||||
|
call s:build_prim('bg', 'delbg')
|
||||||
|
call s:build_prim('bg', 'darkblue')
|
||||||
|
call s:build_prim('bg', 'darkcyan')
|
||||||
|
call s:build_prim('bg', 'darkred')
|
||||||
|
call s:build_prim('bg', 'darkpurple')
|
||||||
|
|
||||||
|
let s:fg_none = ' guifg=NONE ctermfg=NONE'
|
||||||
|
call s:build_prim('fg', 'foreground')
|
||||||
|
call s:build_prim('fg', 'background')
|
||||||
|
call s:build_prim('fg', 'selection')
|
||||||
|
call s:build_prim('fg', 'line')
|
||||||
|
call s:build_prim('fg', 'comment')
|
||||||
|
call s:build_prim('fg', 'red')
|
||||||
|
call s:build_prim('fg', 'orange')
|
||||||
|
call s:build_prim('fg', 'yellow')
|
||||||
|
call s:build_prim('fg', 'green')
|
||||||
|
call s:build_prim('fg', 'aqua')
|
||||||
|
call s:build_prim('fg', 'blue')
|
||||||
|
call s:build_prim('fg', 'purple')
|
||||||
|
call s:build_prim('fg', 'window')
|
||||||
|
call s:build_prim('fg', 'darkcolumn')
|
||||||
|
call s:build_prim('fg', 'addbg')
|
||||||
|
call s:build_prim('fg', 'addfg')
|
||||||
|
call s:build_prim('fg', 'changebg')
|
||||||
|
call s:build_prim('fg', 'changefg')
|
||||||
|
call s:build_prim('fg', 'darkblue')
|
||||||
|
call s:build_prim('fg', 'darkcyan')
|
||||||
|
call s:build_prim('fg', 'darkred')
|
||||||
|
call s:build_prim('fg', 'darkpurple')
|
||||||
|
|
||||||
|
exe "let s:fmt_none = ' gui=NONE". " cterm=NONE". " term=NONE" ."'"
|
||||||
|
exe "let s:fmt_bold = ' gui=NONE".s:b. " cterm=NONE".s:b. " term=NONE".s:b ."'"
|
||||||
|
exe "let s:fmt_bldi = ' gui=NONE".s:b. " cterm=NONE".s:b. " term=NONE".s:b ."'"
|
||||||
|
exe "let s:fmt_undr = ' gui=NONE".s:u. " cterm=NONE".s:u. " term=NONE".s:u ."'"
|
||||||
|
exe "let s:fmt_undb = ' gui=NONE".s:u.s:b. " cterm=NONE".s:u.s:b. " term=NONE".s:u.s:b."'"
|
||||||
|
exe "let s:fmt_undi = ' gui=NONE".s:u. " cterm=NONE".s:u. " term=NONE".s:u ."'"
|
||||||
|
exe "let s:fmt_curl = ' gui=NONE".s:c. " cterm=NONE".s:c. " term=NONE".s:c ."'"
|
||||||
|
exe "let s:fmt_ital = ' gui=NONE".s:i. " cterm=NONE".s:i. " term=NONE".s:i ."'"
|
||||||
|
exe "let s:fmt_stnd = ' gui=NONE".s:s. " cterm=NONE".s:s. " term=NONE".s:s ."'"
|
||||||
|
exe "let s:fmt_revr = ' gui=NONE".s:r. " cterm=NONE".s:r. " term=NONE".s:r ."'"
|
||||||
|
exe "let s:fmt_revb = ' gui=NONE".s:r.s:b. " cterm=NONE".s:r.s:b. " term=NONE".s:r.s:b."'"
|
||||||
|
|
||||||
|
exe "let s:sp_none = ' guisp=". s:none ."'"
|
||||||
|
exe "let s:sp_foreground = ' guisp=". s:palette.gui.foreground[s:style] ."'"
|
||||||
|
exe "let s:sp_background = ' guisp=". s:palette.gui.background[s:style] ."'"
|
||||||
|
exe "let s:sp_selection = ' guisp=". s:palette.gui.selection[s:style] ."'"
|
||||||
|
exe "let s:sp_line = ' guisp=". s:palette.gui.line[s:style] ."'"
|
||||||
|
exe "let s:sp_comment = ' guisp=". s:palette.gui.comment[s:style] ."'"
|
||||||
|
exe "let s:sp_red = ' guisp=". s:palette.gui.red[s:style] ."'"
|
||||||
|
exe "let s:sp_orange = ' guisp=". s:palette.gui.orange[s:style] ."'"
|
||||||
|
exe "let s:sp_yellow = ' guisp=". s:palette.gui.yellow[s:style] ."'"
|
||||||
|
exe "let s:sp_green = ' guisp=". s:palette.gui.green[s:style] ."'"
|
||||||
|
exe "let s:sp_aqua = ' guisp=". s:palette.gui.aqua[s:style] ."'"
|
||||||
|
exe "let s:sp_blue = ' guisp=". s:palette.gui.blue[s:style] ."'"
|
||||||
|
exe "let s:sp_purple = ' guisp=". s:palette.gui.purple[s:style] ."'"
|
||||||
|
exe "let s:sp_window = ' guisp=". s:palette.gui.window[s:style] ."'"
|
||||||
|
exe "let s:sp_addbg = ' guisp=". s:palette.gui.addbg[s:style] ."'"
|
||||||
|
exe "let s:sp_addfg = ' guisp=". s:palette.gui.addfg[s:style] ."'"
|
||||||
|
exe "let s:sp_changebg = ' guisp=". s:palette.gui.changebg[s:style] ."'"
|
||||||
|
exe "let s:sp_changefg = ' guisp=". s:palette.gui.changefg[s:style] ."'"
|
||||||
|
exe "let s:sp_darkblue = ' guisp=". s:palette.gui.darkblue[s:style] ."'"
|
||||||
|
exe "let s:sp_darkcyan = ' guisp=". s:palette.gui.darkcyan[s:style] ."'"
|
||||||
|
exe "let s:sp_darkred = ' guisp=". s:palette.gui.darkred[s:style] ."'"
|
||||||
|
exe "let s:sp_darkpurple = ' guisp=". s:palette.gui.darkpurple[s:style] ."'"
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
" Vim Highlighting: (see :help highlight-groups)"{{{
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
exe "hi! ColorColumn" .s:fg_none .s:bg_line .s:fmt_none
|
||||||
|
" Conceal"
|
||||||
|
" Cursor"
|
||||||
|
" CursorIM"
|
||||||
|
exe "hi! CursorColumn" .s:fg_none .s:bg_line .s:fmt_none
|
||||||
|
exe "hi! CursorLine" .s:fg_none .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! Directory" .s:fg_blue .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! DiffAdd" .s:fg_addfg .s:bg_addbg .s:fmt_none
|
||||||
|
exe "hi! DiffChange" .s:fg_changefg .s:bg_changebg .s:fmt_none
|
||||||
|
exe "hi! DiffDelete" .s:fg_background .s:bg_delbg .s:fmt_none
|
||||||
|
exe "hi! DiffText" .s:fg_background .s:bg_blue .s:fmt_none
|
||||||
|
exe "hi! ErrorMsg" .s:fg_background .s:bg_red .s:fmt_stnd
|
||||||
|
exe "hi! VertSplit" .s:fg_window .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! Folded" .s:fg_comment .s:bg_darkcolumn .s:fmt_none
|
||||||
|
exe "hi! FoldColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none
|
||||||
|
exe "hi! SignColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none
|
||||||
|
" Incsearch"
|
||||||
|
exe "hi! LineNr" .s:fg_comment .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! CursorLineNr" .s:fg_yellow .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! MatchParen" .s:fg_background .s:bg_changebg .s:fmt_none
|
||||||
|
exe "hi! ModeMsg" .s:fg_green .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! MoreMsg" .s:fg_green .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! NonText" .s:fg_selection .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! Pmenu" .s:fg_foreground .s:bg_selection .s:fmt_none
|
||||||
|
exe "hi! PmenuSel" .s:fg_foreground .s:bg_selection .s:fmt_revr
|
||||||
|
" PmenuSbar"
|
||||||
|
" PmenuThumb"
|
||||||
|
exe "hi! Question" .s:fg_green .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! Search" .s:fg_background .s:bg_yellow .s:fmt_none
|
||||||
|
exe "hi! SpecialKey" .s:fg_selection .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! SpellCap" .s:fg_blue .s:bg_darkblue .s:fmt_undr
|
||||||
|
exe "hi! SpellLocal" .s:fg_aqua .s:bg_darkcyan .s:fmt_undr
|
||||||
|
exe "hi! SpellBad" .s:fg_red .s:bg_darkred .s:fmt_undr
|
||||||
|
exe "hi! SpellRare" .s:fg_purple .s:bg_darkpurple .s:fmt_undr
|
||||||
|
exe "hi! StatusLine" .s:fg_comment .s:bg_background .s:fmt_revr
|
||||||
|
exe "hi! StatusLineNC" .s:fg_window .s:bg_comment .s:fmt_revr
|
||||||
|
exe "hi! TabLine" .s:fg_foreground .s:bg_darkcolumn .s:fmt_revr
|
||||||
|
" TabLineFill"
|
||||||
|
" TabLineSel"
|
||||||
|
exe "hi! Title" .s:fg_yellow .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! Visual" .s:fg_none .s:bg_selection .s:fmt_none
|
||||||
|
" VisualNos"
|
||||||
|
exe "hi! WarningMsg" .s:fg_red .s:bg_none .s:fmt_none
|
||||||
|
" FIXME LongLineWarning to use variables instead of hardcoding
|
||||||
|
hi LongLineWarning guifg=NONE guibg=#371F1C gui=underline ctermfg=NONE ctermbg=NONE cterm=underline
|
||||||
|
" WildMenu"
|
||||||
|
|
||||||
|
" Use defined custom background colour for terminal Vim.
|
||||||
|
if !has('gui_running') && exists("g:hybrid_custom_term_colors") && g:hybrid_custom_term_colors == 1
|
||||||
|
let s:bg_normal = s:bg_none
|
||||||
|
else
|
||||||
|
let s:bg_normal = s:bg_background
|
||||||
|
endif
|
||||||
|
exe "hi! Normal" .s:fg_foreground .s:bg_normal .s:fmt_none
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
" Generic Syntax Highlighting: (see :help group-name)"{{{
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
exe "hi! Comment" .s:fg_comment .s:bg_none .s:fmt_none
|
||||||
|
|
||||||
|
exe "hi! Constant" .s:fg_red .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! String" .s:fg_green .s:bg_none .s:fmt_none
|
||||||
|
" Character"
|
||||||
|
" Number"
|
||||||
|
" Boolean"
|
||||||
|
" Float"
|
||||||
|
|
||||||
|
exe "hi! Identifier" .s:fg_purple .s:bg_none .s:fmt_none
|
||||||
|
exe "hi! Function" .s:fg_yellow .s:bg_none .s:fmt_none
|
||||||
|
|
||||||
|
exe "hi! Statement" .s:fg_blue .s:bg_none .s:fmt_none
|
||||||
|
" Conditional"
|
||||||
|
" Repeat"
|
||||||
|
" Label"
|
||||||
|
exe "hi! Operator" .s:fg_aqua .s:bg_none .s:fmt_none
|
||||||
|
" Keyword"
|
||||||
|
" Exception"
|
||||||
|
|
||||||
|
exe "hi! PreProc" .s:fg_aqua .s:bg_none .s:fmt_none
|
||||||
|
" Include"
|
||||||
|
" Define"
|
||||||
|
" Macro"
|
||||||
|
" PreCondit"
|
||||||
|
|
||||||
|
exe "hi! Type" .s:fg_orange .s:bg_none .s:fmt_none
|
||||||
|
" StorageClass"
|
||||||
|
exe "hi! Structure" .s:fg_aqua .s:bg_none .s:fmt_none
|
||||||
|
" Typedef"
|
||||||
|
|
||||||
|
exe "hi! Special" .s:fg_green .s:bg_none .s:fmt_none
|
||||||
|
" SpecialChar"
|
||||||
|
" Tag"
|
||||||
|
" Delimiter"
|
||||||
|
" SpecialComment"
|
||||||
|
" Debug"
|
||||||
|
"
|
||||||
|
exe "hi! Underlined" .s:fg_blue .s:bg_none .s:fmt_none
|
||||||
|
|
||||||
|
exe "hi! Ignore" .s:fg_none .s:bg_none .s:fmt_none
|
||||||
|
|
||||||
|
exe "hi! Error" .s:fg_red .s:bg_darkred .s:fmt_undr
|
||||||
|
|
||||||
|
exe "hi! Todo" .s:fg_addfg .s:bg_none .s:fmt_none
|
||||||
|
|
||||||
|
" Quickfix window highlighting
|
||||||
|
exe "hi! qfLineNr" .s:fg_yellow .s:bg_none .s:fmt_none
|
||||||
|
" qfFileName"
|
||||||
|
" qfLineNr"
|
||||||
|
" qfError"
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
" Diff Syntax Highlighting:"{{{
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
" Diff
|
||||||
|
" diffOldFile
|
||||||
|
" diffNewFile
|
||||||
|
" diffFile
|
||||||
|
" diffOnly
|
||||||
|
" diffIdentical
|
||||||
|
" diffDiffer
|
||||||
|
" diffBDiffer
|
||||||
|
" diffIsA
|
||||||
|
" diffNoEOL
|
||||||
|
" diffCommon
|
||||||
|
hi! link diffRemoved Constant
|
||||||
|
" diffChanged
|
||||||
|
hi! link diffAdded Special
|
||||||
|
" diffLine
|
||||||
|
" diffSubname
|
||||||
|
" diffComment
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
"
|
||||||
|
" This is needed for some reason: {{{
|
||||||
|
|
||||||
|
let &background = s:style
|
||||||
|
|
||||||
|
" }}}
|
||||||
|
" Legal:"{{{
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
" Copyright (c) 2011 Ethan Schoonover
|
||||||
|
" Copyright (c) 2009-2012 NanoTech
|
||||||
|
" Copyright (c) 2012 w0ng
|
||||||
|
"
|
||||||
|
" 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.
|
||||||
|
|
||||||
|
" }}}
|
@ -1,8 +1,14 @@
|
|||||||
|
require('plugins')
|
||||||
|
require('keymap')
|
||||||
|
require('filetype')
|
||||||
|
-- require('autobuf')
|
||||||
|
|
||||||
|
|
||||||
-- prevent cursor override
|
-- prevent cursor override
|
||||||
vim.cmd('set guicursor=')
|
vim.cmd('set guicursor=')
|
||||||
vim.cmd('let g:do_filetype_lua=1')
|
vim.cmd('let g:do_filetype_lua=1')
|
||||||
|
|
||||||
-- basic settings
|
-- basic settings
|
||||||
|
-- vim.cmd('filetype plugin indent on')
|
||||||
vim.cmd('filetype plugin indent on')
|
vim.cmd('filetype plugin indent on')
|
||||||
vim.cmd('set ts=4 sts=4 sw=4 expandtab')
|
vim.cmd('set ts=4 sts=4 sw=4 expandtab')
|
||||||
|
|
||||||
@ -20,6 +26,15 @@ vim.opt.compatible = false
|
|||||||
vim.opt.smartcase = true
|
vim.opt.smartcase = true
|
||||||
vim.opt.hlsearch = true
|
vim.opt.hlsearch = true
|
||||||
|
|
||||||
|
-- colorscheme and syntax settings
|
||||||
|
vim.cmd([[
|
||||||
|
syntax enable
|
||||||
|
colorscheme hybrid
|
||||||
|
hi Normal ctermbg=NONE
|
||||||
|
hi SpellBad cterm=undercurl ctermbg=NONE ctermfg=NONE gui=undercurl guifg=NONE guibg=NONE guisp=Red
|
||||||
|
hi SpellCap cterm=undercurl ctermbg=NONE ctermfg=NONE gui=undercurl guifg=NONE guibg=NONE guisp=Blue
|
||||||
|
]])
|
||||||
|
|
||||||
-- defaults to transparent
|
-- defaults to transparent
|
||||||
Transparent = true
|
Transparent = true
|
||||||
|
|
||||||
@ -65,25 +80,3 @@ let g:vimtex_quickfix_ignore_filters = [
|
|||||||
\ 'Font Warning',
|
\ 'Font Warning',
|
||||||
\]
|
\]
|
||||||
]])
|
]])
|
||||||
|
|
||||||
-- sets autocommands for bufenters etc -> NOT DOING pattern should be faster?
|
|
||||||
-- calcurse -> markdown
|
|
||||||
-- vim.api.nvim_create_autocmd({"BufRead","BufNewFile"}, {
|
|
||||||
-- pattern = {"/tmp/calcurse*","~/.local/share/calcurse/notes/*"},
|
|
||||||
-- command = "set filetype=markdown",
|
|
||||||
-- })
|
|
||||||
|
|
||||||
-- sets fileypes for those that are not auto recognized
|
|
||||||
-- sway config
|
|
||||||
vim.filetype.add({
|
|
||||||
pattern = {
|
|
||||||
['.*/sway/.*'] = 'swayconfig',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- calcurse notes as markdown
|
|
||||||
vim.filetype.add({
|
|
||||||
pattern = {
|
|
||||||
['/tmp/calcurse.*;.*/calcurse/notes/.*'] = 'markdown',
|
|
||||||
},
|
|
||||||
})
|
|
12
config/lua/autobuf.lua
Normal file
12
config/lua/autobuf.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
-- sets autocommands for bufenters etc
|
||||||
|
|
||||||
|
-- recognize i3 files as such
|
||||||
|
vim.api.nvim_create_autocmd({"BufRead","BufNewFile"}, {
|
||||||
|
pattern = {"*/i3/*.conf"},
|
||||||
|
command = "set filetype=i3config",
|
||||||
|
})
|
||||||
|
-- calcurse -> markdown
|
||||||
|
vim.api.nvim_create_autocmd({"BufRead","BufNewFile"}, {
|
||||||
|
pattern = {"/tmp/calcurse*","~/.local/share/calcurse/notes/*"},
|
||||||
|
command = "set filetype=markdown",
|
||||||
|
})
|
325
config/lua/due_nvim.lua
Normal file
325
config/lua/due_nvim.lua
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
local M = {}
|
||||||
|
_VT_NS = vim.api.nvim_create_namespace("lsp_signature")
|
||||||
|
|
||||||
|
local prescript
|
||||||
|
local prescript_hi
|
||||||
|
local due_hi
|
||||||
|
local ft
|
||||||
|
local today
|
||||||
|
local today_hi
|
||||||
|
local overdue
|
||||||
|
local overdue_hi
|
||||||
|
local date_hi
|
||||||
|
local pattern_start
|
||||||
|
local pattern_end
|
||||||
|
|
||||||
|
local use_clock_time
|
||||||
|
local use_clock_today
|
||||||
|
local use_seconds
|
||||||
|
local default_due_time
|
||||||
|
|
||||||
|
local user_hour
|
||||||
|
local user_min
|
||||||
|
local user_sec
|
||||||
|
|
||||||
|
local date_pattern
|
||||||
|
local datetime_pattern
|
||||||
|
local datetime12_pattern
|
||||||
|
local fulldate_pattern
|
||||||
|
local fulldatetime_pattern
|
||||||
|
local fulldatetime12_pattern
|
||||||
|
|
||||||
|
local regex_hi
|
||||||
|
|
||||||
|
local update_rate
|
||||||
|
|
||||||
|
local function patternify(str)
|
||||||
|
return str:gsub("[%(%)%.%%%+%-%*%?%[%^%$%]]", "%%%1")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function regexify(str) return str:gsub("\\%^%$%.%*~%[%]&", "\\%1") end
|
||||||
|
|
||||||
|
local function make_pattern(pattern)
|
||||||
|
return patternify(pattern_start) .. pattern:gsub('%(', ''):gsub('%)', '') ..
|
||||||
|
patternify(pattern_end)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function make_pattern_match(pattern)
|
||||||
|
return patternify(pattern_start) .. pattern .. patternify(pattern_end)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function parseDue(due)
|
||||||
|
local year = 31556926
|
||||||
|
local month = 2629743
|
||||||
|
local week = 604800
|
||||||
|
local day = 86400
|
||||||
|
local hour = 3600
|
||||||
|
local minute = 60
|
||||||
|
local res = ''
|
||||||
|
local is_today = due < day
|
||||||
|
|
||||||
|
if due >= year then
|
||||||
|
res = res .. math.floor(due / year) .. 'y '
|
||||||
|
due = due % year
|
||||||
|
end
|
||||||
|
|
||||||
|
if due >= month then
|
||||||
|
res = res .. math.floor(due / month) .. 'm '
|
||||||
|
due = due % month
|
||||||
|
end
|
||||||
|
|
||||||
|
if due >= week then
|
||||||
|
res = res .. math.floor(due / week) .. 'w '
|
||||||
|
due = due % week
|
||||||
|
end
|
||||||
|
|
||||||
|
if use_clock_time or (is_today and use_clock_today) then
|
||||||
|
if due >= day then
|
||||||
|
res = res .. math.floor(due / day) .. 'd '
|
||||||
|
due = due % day
|
||||||
|
end
|
||||||
|
|
||||||
|
if due >= hour then
|
||||||
|
res = res .. math.floor(due / hour) .. 'h '
|
||||||
|
due = due % hour
|
||||||
|
end
|
||||||
|
|
||||||
|
if due >= minute then
|
||||||
|
res = res .. math.floor(due / minute) .. 'min '
|
||||||
|
due = due % minute
|
||||||
|
end
|
||||||
|
|
||||||
|
if use_seconds then res = res .. math.floor(due / 1) + 1 .. 's ' end
|
||||||
|
|
||||||
|
else
|
||||||
|
res = res .. math.floor(due / day) + 1 .. 'd '
|
||||||
|
end
|
||||||
|
|
||||||
|
return res
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.setup(c)
|
||||||
|
c = c or {}
|
||||||
|
use_clock_time = c.use_clock_time or false
|
||||||
|
use_clock_today = c.use_clock_time or false
|
||||||
|
if type(c.use_seconds) == 'boolean' then
|
||||||
|
use_seconds = c.use_seconds
|
||||||
|
else
|
||||||
|
use_seconds = c.use_clock_time or false
|
||||||
|
end
|
||||||
|
update_rate = c.update_rate or
|
||||||
|
(use_clock_time and (use_seconds and 1000 or 60000) or 0)
|
||||||
|
default_due_time = c.default_due_time or 'midnight'
|
||||||
|
prescript = c.prescript or 'due: '
|
||||||
|
prescript_hi = c.prescript_hi or 'Comment'
|
||||||
|
due_hi = c.due_hi or 'String'
|
||||||
|
ft = c.ft or '*.md'
|
||||||
|
today = c.today or 'TODAY'
|
||||||
|
today_hi = c.today_hi or 'Character'
|
||||||
|
overdue = c.overdue or 'OVERDUE'
|
||||||
|
overdue_hi = c.overdue_hi or 'Error'
|
||||||
|
date_hi = c.date_hi or 'Conceal'
|
||||||
|
week_hi = c.week_hi or 'Question'
|
||||||
|
pattern_start = c.pattern_start or '<'
|
||||||
|
pattern_end = c.pattern_end or '>'
|
||||||
|
date_pattern = c.date_pattern or '(%d%d)%-(%d%d)'
|
||||||
|
datetime_pattern = c.datetime_pattern or (date_pattern .. ' (%d+):(%d%d)')
|
||||||
|
datetime12_pattern = c.datetime12_pattern or (datetime_pattern .. ' (%a%a)')
|
||||||
|
fulldate_pattern = c.fulldate_pattern or ('(%d%d%d%d)%-' .. date_pattern)
|
||||||
|
fulldatetime_pattern = c.fulldatetime_pattern or
|
||||||
|
('(%d%d%d%d)%-' .. datetime_pattern)
|
||||||
|
fulldatetime12_pattern = c.fulldatetime12_pattern or
|
||||||
|
(fulldatetime_pattern .. ' (%a%a)')
|
||||||
|
regex_hi = c.regex_hi or
|
||||||
|
"\\d*-*\\d\\+-\\d\\+\\( \\d*:\\d*\\( \\a\\a\\)\\?\\)\\?"
|
||||||
|
|
||||||
|
if default_due_time == "midnight" then
|
||||||
|
user_hour = 23
|
||||||
|
user_min = 59
|
||||||
|
user_sec = 59
|
||||||
|
elseif default_due_time == "noon" then
|
||||||
|
user_hour = 12
|
||||||
|
user_min = 00
|
||||||
|
user_sec = 00
|
||||||
|
end
|
||||||
|
|
||||||
|
local regex_start = regexify(pattern_start)
|
||||||
|
local regex_end = regexify(pattern_end)
|
||||||
|
|
||||||
|
local regex_hi_full = '/' .. regex_start .. regex_hi .. regex_end .. '/'
|
||||||
|
|
||||||
|
vim.api.nvim_exec(string.format(
|
||||||
|
[[
|
||||||
|
augroup Due
|
||||||
|
autocmd!
|
||||||
|
autocmd BufEnter %s lua require("due_nvim").draw(0)
|
||||||
|
autocmd BufEnter %s lua require("due_nvim").async_update(0)
|
||||||
|
autocmd InsertLeave %s lua require("due_nvim").redraw(0)
|
||||||
|
autocmd TextChanged %s lua require("due_nvim").redraw(0)
|
||||||
|
autocmd TextChangedI %s lua require("due_nvim").redraw(0)
|
||||||
|
autocmd BufEnter %s syn match DueDate %s display containedin=mkdNonListItemBlock,mkdListItemLine,mkdBlockquote conceal
|
||||||
|
autocmd BufEnter %s hi def link DueDate %s
|
||||||
|
augroup END
|
||||||
|
]] , ft, ft, ft, ft, ft, ft, regex_hi_full, ft, date_hi),
|
||||||
|
false
|
||||||
|
)
|
||||||
|
-- old autcmd
|
||||||
|
--autocmd BufEnter %s syn match DueDate %s display containedin=mkdNonListItemBlock,mkdListItemLine,mkdBlockquote contained conceal
|
||||||
|
end
|
||||||
|
|
||||||
|
local function draw_due(due, buf, key)
|
||||||
|
local parsed
|
||||||
|
|
||||||
|
if due > 0 then
|
||||||
|
if not (use_clock_time or use_clock_today) and due < 86400 then
|
||||||
|
parsed = { today, today_hi }
|
||||||
|
elseif due < 86400 then
|
||||||
|
parsed = { parseDue(due), today_hi }
|
||||||
|
elseif due < 604800 then
|
||||||
|
parsed = { parseDue(due), due_hi }
|
||||||
|
else
|
||||||
|
parsed = { parseDue(due), week_hi }
|
||||||
|
end
|
||||||
|
else
|
||||||
|
parsed = { overdue, overdue_hi }
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_virtual_text(buf, _VT_NS, key - 1,
|
||||||
|
{ { prescript, prescript_hi }, parsed }, {})
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.draw(buf)
|
||||||
|
-- get current time
|
||||||
|
local now = os.time(os.date('*t'))
|
||||||
|
|
||||||
|
-- find which date pattern is being passed in by user
|
||||||
|
for key, value in pairs(vim.api.nvim_buf_get_lines(buf, 0, -1, {})) do
|
||||||
|
local fulldatetime12 = value:match(make_pattern(fulldatetime12_pattern))
|
||||||
|
if fulldatetime12 then
|
||||||
|
local year, month, day, hour, min, period =
|
||||||
|
fulldatetime12:match(make_pattern_match(fulldatetime12_pattern))
|
||||||
|
hour = tonumber(hour)
|
||||||
|
local is_pm = period:lower() == 'pm'
|
||||||
|
if is_pm and hour < 12 or not is_pm and hour == 12 then
|
||||||
|
hour = hour + 12
|
||||||
|
if hour == 24 then
|
||||||
|
hour = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
draw_due(os.time({
|
||||||
|
year = year,
|
||||||
|
month = month,
|
||||||
|
day = day,
|
||||||
|
hour = hour,
|
||||||
|
min = min,
|
||||||
|
sec = user_sec
|
||||||
|
}) - now, buf, key)
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
|
||||||
|
local fulldatetime = value:match(make_pattern(fulldatetime_pattern))
|
||||||
|
if fulldatetime then
|
||||||
|
local year, month, day, hour, min =
|
||||||
|
fulldatetime:match(make_pattern_match(fulldatetime_pattern))
|
||||||
|
draw_due(os.time({
|
||||||
|
year = year,
|
||||||
|
month = month,
|
||||||
|
day = day,
|
||||||
|
hour = hour,
|
||||||
|
min = min,
|
||||||
|
sec = user_sec
|
||||||
|
}) - now, buf, key)
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
|
||||||
|
local fulldate = value:match(make_pattern(fulldate_pattern))
|
||||||
|
if fulldate then
|
||||||
|
local year, month, day = fulldate:match(make_pattern_match(
|
||||||
|
fulldate_pattern))
|
||||||
|
draw_due(os.time({
|
||||||
|
year = year,
|
||||||
|
month = month,
|
||||||
|
day = day,
|
||||||
|
hour = user_hour,
|
||||||
|
min = user_min,
|
||||||
|
sec = user_sec
|
||||||
|
}) - now, buf, key)
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
|
||||||
|
local datetime12 = value:match(make_pattern(datetime12_pattern))
|
||||||
|
if datetime12 then
|
||||||
|
local month, day, hour, min, period =
|
||||||
|
datetime12:match(make_pattern_match(datetime12_pattern))
|
||||||
|
local year = os.date("%Y")
|
||||||
|
hour = tonumber(hour)
|
||||||
|
local is_pm = period:lower() == 'pm'
|
||||||
|
if is_pm and hour < 12 or not is_pm and hour == 12 then
|
||||||
|
hour = hour + 12
|
||||||
|
if hour == 24 then
|
||||||
|
hour = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
draw_due(os.time({
|
||||||
|
year = year,
|
||||||
|
month = month,
|
||||||
|
day = day,
|
||||||
|
hour = hour,
|
||||||
|
min = min,
|
||||||
|
sec = user_sec
|
||||||
|
}) - now, buf, key)
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
|
||||||
|
local datetime = value:match(make_pattern(datetime_pattern))
|
||||||
|
if datetime then
|
||||||
|
local month, day, hour, min = datetime:match(make_pattern_match(
|
||||||
|
datetime_pattern))
|
||||||
|
local year = os.date("%Y")
|
||||||
|
draw_due(os.time({
|
||||||
|
year = year,
|
||||||
|
month = month,
|
||||||
|
day = day,
|
||||||
|
hour = hour,
|
||||||
|
min = min,
|
||||||
|
sec = user_sec
|
||||||
|
}) - now, buf, key)
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
|
||||||
|
local date = value:match(make_pattern(date_pattern))
|
||||||
|
if date then
|
||||||
|
local month, day = date:match(make_pattern_match(date_pattern))
|
||||||
|
local year = os.date("%Y")
|
||||||
|
|
||||||
|
draw_due(os.time({
|
||||||
|
year = year,
|
||||||
|
month = month,
|
||||||
|
day = day,
|
||||||
|
hour = user_hour,
|
||||||
|
min = user_min,
|
||||||
|
sec = user_sec
|
||||||
|
}) - now, buf, key)
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
::continue::
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.clear(buf) vim.api.nvim_buf_clear_namespace(buf, _VT_NS, 0, -1) end
|
||||||
|
|
||||||
|
function M.redraw(buf)
|
||||||
|
M.clear(buf)
|
||||||
|
M.draw(buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.async_update(buf)
|
||||||
|
if update_rate <= 0 then return end
|
||||||
|
local timer = vim.loop.new_timer()
|
||||||
|
timer:start(update_rate, 0, vim.schedule_wrap(function()
|
||||||
|
M.redraw(buf)
|
||||||
|
M.async_update(buf)
|
||||||
|
end))
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
15
config/lua/filetype.lua
Normal file
15
config/lua/filetype.lua
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
-- sets fileypes for those that are not auto recognized
|
||||||
|
|
||||||
|
-- sway config
|
||||||
|
vim.filetype.add({
|
||||||
|
pattern = {
|
||||||
|
['.*/sway/.*'] = 'swayconfig',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- calcurse notes as markdown
|
||||||
|
vim.filetype.add({
|
||||||
|
pattern = {
|
||||||
|
['/tmp/calcurse.*;.*/calcurse/notes/.*'] = 'markdown',
|
||||||
|
},
|
||||||
|
})
|
52
config/lua/keymap.lua
Normal file
52
config/lua/keymap.lua
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
vim.g.mapleader = " "
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>b", ":lua ToggleTransparent()<CR>")
|
||||||
|
|
||||||
|
-- nvim-tree bindings
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>t", ":NvimTreeToggle<CR>")
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>a", ":lua SpellToggle()<CR>")
|
||||||
|
|
||||||
|
-- markdown preview
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>p", ":MarkdownPreviewToggle<CR>")
|
||||||
|
|
||||||
|
-- custom shell script to move windows
|
||||||
|
vim.cmd([[
|
||||||
|
function OpenMarkdownPreview (url)
|
||||||
|
execute "silent ! markdown-preview.sh " . a:url
|
||||||
|
endfunction
|
||||||
|
]])
|
||||||
|
|
||||||
|
vim.g.mkdp_browserfunc = 'OpenMarkdownPreview'
|
||||||
|
|
||||||
|
-- git actions
|
||||||
|
vim.keymap.set("n", "<leader>ga", ":Git add .<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>gm", ":Git commit<CR>")
|
||||||
|
|
||||||
|
-- fuzzy finder keybindings
|
||||||
|
local telescope = require('telescope.builtin')
|
||||||
|
vim.keymap.set('n','<leader>f', telescope.find_files, {})
|
||||||
|
vim.keymap.set('n','<leader>s', telescope.spell_suggest, {})
|
||||||
|
|
||||||
|
-- global copy/paste
|
||||||
|
vim.keymap.set('n', '<leader>yg', '"+y')
|
||||||
|
vim.keymap.set('n', '<leader>pg', '"+p')
|
||||||
|
|
||||||
|
-- toggle dotfiles visibility
|
||||||
|
vim.keymap.set("n", "<leader>d", ":lua require('nvim-tree.api').tree.toggle_hidden_filter()<CR>")
|
||||||
|
|
||||||
|
-- harpoon bindings
|
||||||
|
vim.keymap.set("n", "<leader>hs", ":Telescope harpoon marks<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>hh", ":lua require('harpoon.ui').toggle_quick_menu()<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>ha", ":lua require('harpoon.mark').add_file()<CR>")
|
||||||
|
--vim.keymap.set("n", "<leader>ha", harpoon.mark.add_file, {})
|
||||||
|
vim.keymap.set("n", "<leader>hn", ":lua require('harpoon.ui').nav_next()<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>hp", ":lua require('harpoon.ui').nav_prev()<CR>")
|
||||||
|
-- jumping to specific files
|
||||||
|
vim.keymap.set("n", "<leader>h1", ":lua require('harpoon.ui').nav_file(1)<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>h2", ":lua require('harpoon.ui').nav_file(2)<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>h3", ":lua require('harpoon.ui').nav_file(3)<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>h4", ":lua require('harpoon.ui').nav_file(4)<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>h5", ":lua require('harpoon.ui').nav_file(5)<CR>")
|
90
config/lua/lsp.lua
Normal file
90
config/lua/lsp.lua
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
-- language server setup
|
||||||
|
local lspconfig = require('lspconfig')
|
||||||
|
|
||||||
|
-- Go
|
||||||
|
lspconfig.gopls.setup{
|
||||||
|
cmd = {"gopls", "serve"},
|
||||||
|
filetypes = {"go", "gomod"},
|
||||||
|
settings = {
|
||||||
|
gopls = {
|
||||||
|
analyses = {
|
||||||
|
unusedparams = true,
|
||||||
|
},
|
||||||
|
staticcheck = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- C/C++
|
||||||
|
lspconfig.clangd.setup{}
|
||||||
|
|
||||||
|
-- Arduino (C)
|
||||||
|
lspconfig.arduino_language_server.setup{}
|
||||||
|
|
||||||
|
-- Lua
|
||||||
|
lspconfig.lua_ls.setup{
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
diagnostics = {globals = {'vim', 'opts'}},
|
||||||
|
},
|
||||||
|
telemetry = {
|
||||||
|
enable = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Rust
|
||||||
|
lspconfig.rust_analyzer.setup{}
|
||||||
|
|
||||||
|
-- Python
|
||||||
|
lspconfig.pylsp.setup{}
|
||||||
|
|
||||||
|
-- TypeScript
|
||||||
|
lspconfig.tsserver.setup{}
|
||||||
|
|
||||||
|
-- Fix virtual text going off screen
|
||||||
|
vim.diagnostic.config({
|
||||||
|
virtual_text = false,
|
||||||
|
signs = true,
|
||||||
|
underline = true,
|
||||||
|
update_in_insert = false,
|
||||||
|
severity_sort = false,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
callback = function(ev)
|
||||||
|
-- custom colors
|
||||||
|
vim.cmd('hi DiagnosticUnderlineError cterm=undercurl')
|
||||||
|
vim.cmd('hi DiagnosticUnderlineWarn cterm=undercurl')
|
||||||
|
vim.cmd('hi DiagnosticUnderlineInfo cterm=undercurl')
|
||||||
|
vim.cmd('hi DiagnosticUnderlineHint cterm=undercurl')
|
||||||
|
vim.cmd('hi DiagnosticUnderlineOk cterm=undercurl')
|
||||||
|
-- key mappings
|
||||||
|
local opts = { buffer = ev.buf,}
|
||||||
|
-- error viewing
|
||||||
|
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, opts)
|
||||||
|
vim.keymap.set('n', '<leader>[d', vim.diagnostic.goto_prev, opts)
|
||||||
|
vim.keymap.set('n', '<leader>]d', vim.diagnostic.goto_next, opts)
|
||||||
|
-- def viewing/rename
|
||||||
|
vim.keymap.set('n', '<leader>gD', vim.lsp.buf.declaration, opts)
|
||||||
|
vim.keymap.set('n', '<leader>gd', vim.lsp.buf.definition, opts)
|
||||||
|
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
|
||||||
|
vim.keymap.set('n', '<leader>H', vim.lsp.buf.hover, opts)
|
||||||
|
-- auto hover for error viewing
|
||||||
|
vim.api.nvim_create_autocmd("CursorHold", {
|
||||||
|
callback = function()
|
||||||
|
opts = {
|
||||||
|
buffer = ev.buf,
|
||||||
|
focusable = false,
|
||||||
|
border = 'rounded',
|
||||||
|
source = 'always',
|
||||||
|
prefix = ' ',
|
||||||
|
scope = 'cursor',
|
||||||
|
close_events = { "BufLeave","CursorMoved","InsertEnter","FocusLost" },
|
||||||
|
}
|
||||||
|
vim.diagnostic.open_float(nil, opts)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
50
config/lua/plugins.lua
Normal file
50
config/lua/plugins.lua
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
require('lsp')
|
||||||
|
require('transparent')
|
||||||
|
require('spellcheck')
|
||||||
|
|
||||||
|
-- nvim tree setup
|
||||||
|
require('nvim-tree').setup({
|
||||||
|
open_on_tab = false,
|
||||||
|
filters = {
|
||||||
|
dotfiles = true,
|
||||||
|
},
|
||||||
|
actions = {
|
||||||
|
open_file = {
|
||||||
|
quit_on_open = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
showHiddenFiles = false
|
||||||
|
|
||||||
|
local function open_nvim_tree(data)
|
||||||
|
|
||||||
|
-- buffer is a directory
|
||||||
|
local directory = vim.fn.isdirectory(data.file) == 1
|
||||||
|
|
||||||
|
local empty_file = data.file == ""
|
||||||
|
|
||||||
|
if not directory and not empty_file then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if directory then
|
||||||
|
vim.cmd.cd(data.file)
|
||||||
|
end
|
||||||
|
vim.cmd.enew()
|
||||||
|
vim.cmd.bw(data.buf)
|
||||||
|
-- change to directory and open
|
||||||
|
require("nvim-tree.api").tree.open()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- nvim-tree open at startup
|
||||||
|
vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree, })
|
||||||
|
|
||||||
|
-- fuzzy finder setup
|
||||||
|
require('telescope').setup({
|
||||||
|
defaults = {
|
||||||
|
layout_config = {
|
||||||
|
horizontal = { width = 0.8 }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
9
config/lua/spellcheck.lua
Normal file
9
config/lua/spellcheck.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
-- simple spell check toggle
|
||||||
|
|
||||||
|
function SpellToggle()
|
||||||
|
if vim.o.spell == nil or vim.o.spell then
|
||||||
|
vim.o.spell = false
|
||||||
|
else
|
||||||
|
vim.o.spell = true
|
||||||
|
end
|
||||||
|
end
|
10
config/lua/transparent.lua
Normal file
10
config/lua/transparent.lua
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
-- allows for toggling of background
|
||||||
|
function ToggleTransparent()
|
||||||
|
Transparent = not Transparent
|
||||||
|
if Transparent then
|
||||||
|
vim.cmd("hi Normal ctermbg=NONE")
|
||||||
|
else
|
||||||
|
-- 234 is hybrid dark bg color
|
||||||
|
vim.cmd("hi Normal ctermbg=234")
|
||||||
|
end
|
||||||
|
end
|
7
init.lua
7
init.lua
@ -1,7 +0,0 @@
|
|||||||
-- load options
|
|
||||||
require("config.options")
|
|
||||||
-- load keymappings
|
|
||||||
require("config.keymap")
|
|
||||||
|
|
||||||
-- load lazy.nvim to bootstrap plugins
|
|
||||||
require("config.lazy")
|
|
@ -1,199 +0,0 @@
|
|||||||
-- [[
|
|
||||||
-- This file is largely based on work done by Andrew Wong (w0ng)
|
|
||||||
-- Find the original file and additional credits at: https://github.com/w0ng/vim-hybrid
|
|
||||||
--
|
|
||||||
-- ]]
|
|
||||||
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
M.setup = function()
|
|
||||||
|
|
||||||
-- Clear existing highlights
|
|
||||||
vim.cmd("highlight clear")
|
|
||||||
|
|
||||||
-- Reset syntax if it exists
|
|
||||||
if vim.fn.exists("syntax_on") then
|
|
||||||
vim.cmd("syntax reset")
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.g.colors_name = "hybrid"
|
|
||||||
vim.o.background = "dark"
|
|
||||||
vim.o.termguicolors = true
|
|
||||||
|
|
||||||
local colors = {
|
|
||||||
-- Core colors with both GUI and cterm values
|
|
||||||
background = { gui = "#1d1f21", cterm = 234 },
|
|
||||||
foreground = { gui = "#c5c8c6", cterm = 250 },
|
|
||||||
selection = { gui = "#373b41", cterm = 237 },
|
|
||||||
line = { gui = "#282a2e", cterm = 235 },
|
|
||||||
comment = { gui = "#707880", cterm = 243 },
|
|
||||||
|
|
||||||
-- Syntax colors
|
|
||||||
red = { gui = "#cc6666", cterm = 167 },
|
|
||||||
orange = { gui = "#de935f", cterm = 173 },
|
|
||||||
yellow = { gui = "#f0c674", cterm = 221 },
|
|
||||||
green = { gui = "#50c904", cterm = 143 },
|
|
||||||
aqua = { gui = "#8abeb7", cterm = 109 },
|
|
||||||
-- aqua = { gui = "#81a2be", cterm = 109 },
|
|
||||||
blue = { gui = "#87afd7", cterm = 110 },
|
|
||||||
purple = { gui = "#b294bb", cterm = 139 },
|
|
||||||
|
|
||||||
-- UI colors
|
|
||||||
window = { gui = "#303030", cterm = 236 },
|
|
||||||
darkcolumn = { gui = "#1c1c1c", cterm = 234 },
|
|
||||||
|
|
||||||
-- Git/diff colors
|
|
||||||
add_bg = { gui = "#5F875F", cterm = 65 },
|
|
||||||
add_fg = { gui = "#d7ffaf", cterm = 193 },
|
|
||||||
change_bg = { gui = "#5F5F87", cterm = 60 },
|
|
||||||
change_fg = { gui = "#d7d7ff", cterm = 189 },
|
|
||||||
del_bg = { gui = "#cc6666", cterm = 167 },
|
|
||||||
|
|
||||||
-- Dark variants
|
|
||||||
dark_red = { gui = "#5f0000", cterm = 52 },
|
|
||||||
dark_blue = { gui = "#00005f", cterm = 17 },
|
|
||||||
dark_cyan = { gui = "#005f5f", cterm = 24 },
|
|
||||||
dark_purple = { gui = "#5f005f", cterm = 53 },
|
|
||||||
dark_yellow = { gui = "#b5bd68", cterm = 3 },
|
|
||||||
}
|
|
||||||
|
|
||||||
-- helper function to set highlights
|
|
||||||
local function hi(group, opts)
|
|
||||||
vim.api.nvim_set_hl(0, group, opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Editor UI
|
|
||||||
hi("Normal", { fg = colors.foreground.gui, bg = colors.background.gui, ctermfg = colors.foreground.cterm, ctermbg = colors.background.cterm })
|
|
||||||
hi("ColorColumn", { bg = colors.line.gui, ctermbg = colors.line.cterm })
|
|
||||||
hi("CursorColumn", { bg = colors.line.gui, ctermbg = colors.line.cterm })
|
|
||||||
hi("CursorLine", {})
|
|
||||||
hi("CursorLineNr", { fg = colors.yellow.gui, ctermfg = colors.yellow.cterm })
|
|
||||||
hi("Directory", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
hi("LineNr", { fg = colors.comment.gui, ctermfg = colors.comment.cterm })
|
|
||||||
hi("VertSplit", { fg = colors.window.gui, ctermfg = colors.window.cterm })
|
|
||||||
hi("Folded", { fg = colors.comment.gui, bg = colors.darkcolumn.gui, ctermfg = colors.comment.cterm, ctermbg = colors.darkcolumn.cterm })
|
|
||||||
hi("FoldColumn", { bg = colors.darkcolumn.gui, ctermbg = colors.darkcolumn.cterm })
|
|
||||||
hi("SignColumn", { bg = colors.darkcolumn.gui, ctermbg = colors.darkcolumn.cterm })
|
|
||||||
hi("MatchParen", { fg = colors.background.gui, bg = colors.change_bg.gui, ctermfg = colors.background.cterm, ctermbg = colors.change_bg.cterm })
|
|
||||||
hi("NonText", { fg = colors.selection.gui, ctermfg = colors.selection.cterm })
|
|
||||||
hi("SpecialKey", { fg = colors.selection.gui, ctermfg = colors.selection.cterm })
|
|
||||||
hi("Visual", { bg = colors.selection.gui, ctermbg = colors.selection.cterm })
|
|
||||||
hi("Search", { fg = colors.background.gui, bg = colors.yellow.gui, ctermfg = colors.background.cterm, ctermbg = colors.yellow.cterm })
|
|
||||||
hi("Title", { fg = colors.yellow.gui, ctermfg = colors.yellow.cterm })
|
|
||||||
|
|
||||||
-- Messages
|
|
||||||
hi("ModeMsg", { fg = colors.green.gui, ctermfg = colors.green.cterm })
|
|
||||||
hi("MoreMsg", { fg = colors.green.gui, ctermfg = colors.green.cterm })
|
|
||||||
hi("ErrorMsg", { fg = colors.background.gui, bg = colors.red.gui, ctermfg = colors.background.cterm, ctermbg = colors.red.cterm, standout = true })
|
|
||||||
hi("WarningMsg", { fg = colors.red.gui, ctermfg = colors.red.cterm })
|
|
||||||
hi("Question", { fg = colors.green.gui, ctermfg = colors.green.cterm })
|
|
||||||
|
|
||||||
-- Popup menu
|
|
||||||
hi("Pmenu", { fg = colors.foreground.gui, bg = colors.selection.gui, ctermfg = colors.foreground.cterm, ctermbg = colors.selection.cterm })
|
|
||||||
hi("PmenuSel", { fg = colors.foreground.gui, bg = colors.selection.gui, ctermfg = colors.foreground.cterm, ctermbg = colors.selection.cterm, reverse = true })
|
|
||||||
|
|
||||||
-- Status line
|
|
||||||
hi("StatusLine", { fg = colors.comment.gui, bg = colors.background.gui, ctermfg = colors.comment.cterm, ctermbg = colors.background.cterm, reverse = true })
|
|
||||||
hi("StatusLineNC", { fg = colors.window.gui, bg = colors.comment.gui, ctermfg = colors.window.cterm, ctermbg = colors.comment.cterm, reverse = true })
|
|
||||||
hi("TabLine", { fg = colors.foreground.gui, bg = colors.darkcolumn.gui, ctermfg = colors.foreground.cterm, ctermbg = colors.darkcolumn.cterm, reverse = true })
|
|
||||||
|
|
||||||
-- Diffs
|
|
||||||
hi("DiffAdd", { fg = colors.add_fg.gui, bg = colors.add_bg.gui, ctermfg = colors.add_fg.cterm, ctermbg = colors.add_bg.cterm })
|
|
||||||
hi("DiffChange", { fg = colors.change_fg.gui, bg = colors.change_bg.gui, ctermfg = colors.change_fg.cterm, ctermbg = colors.change_bg.cterm })
|
|
||||||
hi("DiffDelete", { fg = colors.background.gui, bg = colors.del_bg.gui, ctermfg = colors.background.cterm, ctermbg = colors.del_bg.cterm })
|
|
||||||
hi("DiffText", { fg = colors.background.gui, bg = colors.blue.gui, ctermfg = colors.background.cterm, ctermbg = colors.blue.cterm })
|
|
||||||
|
|
||||||
-- Spelling
|
|
||||||
hi("SpellCap", { sp = colors.blue.gui, ctermfg = colors.blue.cterm, undercurl = true })
|
|
||||||
hi("SpellLocal", { sp = colors.aqua.gui, ctermfg = colors.aqua.cterm, undercurl = true })
|
|
||||||
hi("SpellBad", { sp = colors.red.gui, ctermfg = colors.red.cterm, undercurl = true })
|
|
||||||
hi("SpellRare", { fg = colors.purple.gui, bg = colors.dark_purple.gui, ctermfg = colors.purple.cterm, ctermbg = colors.dark_purple.cterm, underline = true })
|
|
||||||
|
|
||||||
-- Syntax highlighting
|
|
||||||
hi("Comment", { fg = colors.comment.gui, ctermfg = colors.comment.cterm })
|
|
||||||
|
|
||||||
hi("Constant", { fg = colors.red.gui, ctermfg = colors.red.cterm })
|
|
||||||
hi("String", { fg = colors.green.gui, ctermfg = colors.green.cterm })
|
|
||||||
|
|
||||||
hi("Identifier", { fg = colors.purple.gui, ctermfg = colors.purple.cterm })
|
|
||||||
hi("Function", { fg = colors.yellow.gui, ctermfg = colors.yellow.cterm })
|
|
||||||
|
|
||||||
hi("Statement", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
hi("Operator", { fg = colors.aqua.gui, ctermfg = colors.aqua.cterm })
|
|
||||||
|
|
||||||
hi("PreProc", { fg = colors.aqua.gui, ctermfg = colors.aqua.cterm })
|
|
||||||
|
|
||||||
hi("Type", { fg = colors.orange.gui, ctermfg = colors.orange.cterm })
|
|
||||||
hi("Structure", { fg = colors.aqua.gui, ctermfg = colors.aqua.cterm })
|
|
||||||
|
|
||||||
hi("Special", { fg = colors.green.gui, ctermfg = colors.green.cterm })
|
|
||||||
hi("Underlined", { fg = colors.blue.gui, ctermfg = colors.blue.cterm, underline = true })
|
|
||||||
|
|
||||||
hi("Error", { fg = colors.red.gui, bg = colors.dark_red.gui, ctermfg = colors.red.cterm, ctermbg = colors.dark_red.cterm, underline = true })
|
|
||||||
hi("Todo", { fg = colors.add_fg.gui, ctermfg = colors.add_fg.cterm })
|
|
||||||
|
|
||||||
-- Quickfix
|
|
||||||
hi("qfLineNr", { fg = colors.yellow.gui, ctermfg = colors.yellow.cterm })
|
|
||||||
|
|
||||||
-- Tree-sitter highlight groups
|
|
||||||
hi("@variable", { fg = colors.foreground.gui, ctermfg = colors.foreground.cterm })
|
|
||||||
hi("@variable.builtin", { fg = colors.purple.gui, ctermfg = colors.purple.cterm })
|
|
||||||
hi("@variable.parameter", { fg = colors.foreground.gui, ctermfg = colors.foreground.cterm })
|
|
||||||
hi("@variable.member", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
|
|
||||||
hi("@constant", { fg = colors.yellow.gui, ctermfg = colors.yellow.cterm })
|
|
||||||
hi("@constant.builtin", { fg = colors.yellow.gui, ctermfg = colors.yellow.cterm })
|
|
||||||
hi("@constant.macro", { fg = colors.orange.gui, ctermfg = colors.orange.cterm })
|
|
||||||
|
|
||||||
hi("@string", { fg = colors.dark_yellow.gui, ctermfg = colors.green.cterm })
|
|
||||||
hi("@string.escape", { fg = colors.orange.gui, ctermfg = colors.orange.cterm })
|
|
||||||
hi("@string.regexp", { fg = colors.orange.gui, ctermfg = colors.orange.cterm })
|
|
||||||
|
|
||||||
hi("@character", { fg = colors.green.gui, ctermfg = colors.green.cterm })
|
|
||||||
hi("@number", { fg = colors.orange.gui, ctermfg = colors.orange.cterm })
|
|
||||||
hi("@boolean", { fg = colors.red.gui, ctermfg = colors.red.cterm })
|
|
||||||
--hi("@float", { fg = colors.red.gui, ctermfg = colors.red.cterm })
|
|
||||||
|
|
||||||
-- generally high priority
|
|
||||||
hi("@function", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
hi("@function.builtin", { fg = colors.purple.gui, ctermfg = colors.purple.cterm })
|
|
||||||
hi("@function.call", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
--hi("@function.macro", { fg = colors.purple.gui, ctermfg = colors.purple.cterm })
|
|
||||||
--hi("@function.method", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
hi("@method", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
hi("@method.call", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
|
|
||||||
hi("@constructor", { fg = colors.blue.gui, ctermfg = colors.blue.cterm, bold = true})
|
|
||||||
hi("@operator", { fg = colors.red.gui, ctermfg = colors.red.cterm })
|
|
||||||
|
|
||||||
hi("@keyword", { fg = colors.purple.gui, ctermfg = colors.purple.cterm })
|
|
||||||
hi("@keyword.function", { fg = colors.purple.gui, ctermfg = colors.purple.cterm })
|
|
||||||
hi("@keyword.operator", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
hi("@keyword.return", { fg = colors.purple.gui, ctermfg = colors.purple.cterm })
|
|
||||||
hi("@keyword.conditional", { fg = colors.purple.gui, ctermfg = colors.purple.cterm })
|
|
||||||
hi("@keyword.repeat", { fg = colors.purple.gui, ctermfg = colors.purple.cterm })
|
|
||||||
hi("@keyword.import", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
|
|
||||||
hi("@type", { fg = colors.orange.gui, ctermfg = colors.orange.cterm })
|
|
||||||
hi("@type.builtin", { fg = colors.orange.gui, ctermfg = colors.orange.cterm })
|
|
||||||
hi("@type.qualifier", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
|
|
||||||
hi("@property", { fg = colors.foreground.gui, ctermfg = colors.foreground.cterm })
|
|
||||||
-- hi("@field", { fg = colors.red.gui, ctermfg = colors.red.cterm })
|
|
||||||
|
|
||||||
hi("@punctuation.delimiter", { fg = colors.foreground.gui, ctermfg = colors.foreground.cterm })
|
|
||||||
hi("@punctuation.bracket", { fg = colors.foreground.gui, ctermfg = colors.foreground.cterm })
|
|
||||||
hi("@punctuation.special", { fg = colors.foreground.gui, ctermfg = colors.foreground.cterm })
|
|
||||||
|
|
||||||
hi("@comment", { fg = colors.comment.gui, ctermfg = colors.comment.cterm })
|
|
||||||
hi("@comment.documentation", { fg = colors.comment.gui, ctermfg = colors.comment.cterm })
|
|
||||||
|
|
||||||
hi("@tag", { fg = colors.blue.gui, ctermfg = colors.blue.cterm })
|
|
||||||
hi("@tag.attribute", { fg = colors.orange.gui, ctermfg = colors.orange.cterm })
|
|
||||||
hi("@tag.delimiter", { fg = colors.foreground.gui, ctermfg = colors.foreground.cterm })
|
|
||||||
-- Set up highlight links separately
|
|
||||||
vim.api.nvim_set_hl(0, "diffRemoved", { link = "Constant" })
|
|
||||||
vim.api.nvim_set_hl(0, "diffAdded", { link = "Special" })
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
@ -1,75 +0,0 @@
|
|||||||
vim.g.mapleader = " "
|
|
||||||
|
|
||||||
-- disable vim copying via windows cmd for system takeover
|
|
||||||
-- vim.keymap.set({"n","v","i"},"<C-c>",'<Nop>', { noremap = true })
|
|
||||||
|
|
||||||
-- allows for toggling of background
|
|
||||||
local function ToggleTransparent()
|
|
||||||
Transparent = not Transparent
|
|
||||||
if Transparent then
|
|
||||||
vim.cmd("hi Normal ctermbg=NONE")
|
|
||||||
else
|
|
||||||
-- 234 is hybrid dark bg color
|
|
||||||
vim.cmd("hi Normal ctermbg=234")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>b", ":lua ToggleTransparent()<CR>")
|
|
||||||
|
|
||||||
-- nvim-tree bindings
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>t", ":NvimTreeToggle<CR>")
|
|
||||||
|
|
||||||
-- simple spell check toggle
|
|
||||||
local function SpellToggle()
|
|
||||||
if vim.o.spell == nil or vim.o.spell then
|
|
||||||
vim.o.spell = false
|
|
||||||
else
|
|
||||||
vim.o.spell = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>a", ":lua SpellToggle()<CR>")
|
|
||||||
|
|
||||||
-- markdown preview
|
|
||||||
vim.keymap.set("n", "<leader>p", ":MarkdownPreviewToggle<CR>")
|
|
||||||
|
|
||||||
-- custom shell script to move windows
|
|
||||||
vim.cmd([[
|
|
||||||
function OpenMarkdownPreview (url)
|
|
||||||
execute "silent ! markdown-preview.sh " . a:url
|
|
||||||
endfunction
|
|
||||||
]])
|
|
||||||
|
|
||||||
vim.g.mkdp_browserfunc = 'OpenMarkdownPreview'
|
|
||||||
|
|
||||||
-- git actions
|
|
||||||
vim.keymap.set("n", "<leader>ga", ":Git add .<CR>")
|
|
||||||
vim.keymap.set("n", "<leader>gm", ":Git commit<CR>")
|
|
||||||
|
|
||||||
-- -- fuzzy finder keybindings
|
|
||||||
-- local telescope = require('telescope.builtin')
|
|
||||||
-- vim.keymap.set('n','<leader>f', telescope.find_files, {})
|
|
||||||
-- vim.keymap.set('n','<leader>s', telescope.spell_suggest, {})
|
|
||||||
|
|
||||||
-- global copy/paste
|
|
||||||
vim.keymap.set('n', '<leader>yg', '"+y')
|
|
||||||
vim.keymap.set('n', '<leader>pg', '"+p')
|
|
||||||
|
|
||||||
-- toggle dotfiles visibility
|
|
||||||
-- vim.keymap.set("n", "<leader>d", ":lua require('nvim-tree.api').tree.toggle_hidden_filter()<CR>")
|
|
||||||
|
|
||||||
-- TODO
|
|
||||||
-- -- harpoon bindings
|
|
||||||
-- vim.keymap.set("n", "<leader>hs", ":Telescope harpoon marks<CR>")
|
|
||||||
-- vim.keymap.set("n", "<leader>hh", ":lua require('harpoon.ui').toggle_quick_menu()<CR>")
|
|
||||||
-- vim.keymap.set("n", "<leader>ha", ":lua require('harpoon.mark').add_file()<CR>")
|
|
||||||
-- --vim.keymap.set("n", "<leader>ha", harpoon.mark.add_file, {})
|
|
||||||
-- vim.keymap.set("n", "<leader>hn", ":lua require('harpoon.ui').nav_next()<CR>")
|
|
||||||
-- vim.keymap.set("n", "<leader>hp", ":lua require('harpoon.ui').nav_prev()<CR>")
|
|
||||||
-- -- jumping to specific files
|
|
||||||
-- vim.keymap.set("n", "<leader>h1", ":lua require('harpoon.ui').nav_file(1)<CR>")
|
|
||||||
-- vim.keymap.set("n", "<leader>h2", ":lua require('harpoon.ui').nav_file(2)<CR>")
|
|
||||||
-- vim.keymap.set("n", "<leader>h3", ":lua require('harpoon.ui').nav_file(3)<CR>")
|
|
||||||
-- vim.keymap.set("n", "<leader>h4", ":lua require('harpoon.ui').nav_file(4)<CR>")
|
|
||||||
-- vim.keymap.set("n", "<leader>h5", ":lua require('harpoon.ui').nav_file(5)<CR>")
|
|
@ -1,44 +0,0 @@
|
|||||||
-- Bootstrap lazy.nvim
|
|
||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
|
||||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
|
||||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
|
||||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
|
||||||
if vim.v.shell_error ~= 0 then
|
|
||||||
vim.api.nvim_echo({
|
|
||||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
|
||||||
{ out, "WarningMsg" },
|
|
||||||
{ "\nPress any key to exit..." },
|
|
||||||
}, true, {})
|
|
||||||
vim.fn.getchar()
|
|
||||||
os.exit(1)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
vim.opt.rtp:prepend(lazypath)
|
|
||||||
|
|
||||||
-- Setup lazy.nvim
|
|
||||||
require("lazy").setup({
|
|
||||||
spec = {
|
|
||||||
-- Import your plugins from lua/plugins/
|
|
||||||
{ import = "plugins" },
|
|
||||||
},
|
|
||||||
defaults = {
|
|
||||||
lazy = false, -- should plugins be lazy-loaded?
|
|
||||||
version = false, -- always use the latest git commit
|
|
||||||
},
|
|
||||||
checker = { enabled = true }, -- automatically check for plugin updates
|
|
||||||
performance = {
|
|
||||||
rtp = {
|
|
||||||
-- disable some rtp plugins
|
|
||||||
disabled_plugins = {
|
|
||||||
"gzip",
|
|
||||||
"matchit",
|
|
||||||
"matchparen",
|
|
||||||
"netrwPlugin",
|
|
||||||
"tarPlugin",
|
|
||||||
"tohtml",
|
|
||||||
"tutor",
|
|
||||||
"zipPlugin",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
@ -1,11 +0,0 @@
|
|||||||
return {
|
|
||||||
{
|
|
||||||
dir = vim.fn.stdpath("config") .. "/lua/colors",
|
|
||||||
name = "hybrid-colorscheme",
|
|
||||||
lazy = false,
|
|
||||||
priority = 1000,
|
|
||||||
config = function()
|
|
||||||
require("colors.hybrid").setup()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
return {
|
|
||||||
{
|
|
||||||
"nvim-neo-tree/neo-tree.nvim",
|
|
||||||
branch = "v3.x",
|
|
||||||
depends = {
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
"MunifTanjim/nui.nvim",
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
},
|
|
||||||
lazy = false, -- neo-tree lazy loads itself
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"nvim-telescope/telescope.nvim",
|
|
||||||
branch = "0.1.x",
|
|
||||||
event = "VimEnter",
|
|
||||||
depends = { "nvim-lua/plenary.nvim"},
|
|
||||||
opts = {
|
|
||||||
defaults = {
|
|
||||||
layout_config = {
|
|
||||||
horizontal = { width = 0.8 }
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
keys = {
|
|
||||||
{ "<leader>f", "<cmd>Telescope find_files<cr>", desc = "Find files" },
|
|
||||||
{ "<leader>s", "<cmd>Telescope spell_suggest<cr>", desc = "Spelling suggestions" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,98 +0,0 @@
|
|||||||
-- language server setup
|
|
||||||
return {
|
|
||||||
{
|
|
||||||
"neovim/nvim-lspconfig",
|
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
|
||||||
dependencies = {
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
-- Go
|
|
||||||
vim.lsp.config["gopls"] = {
|
|
||||||
cmd = {"gopls", "serve"},
|
|
||||||
filetypes = {"go", "gomod"},
|
|
||||||
settings = {
|
|
||||||
gopls = {
|
|
||||||
analyses = {
|
|
||||||
unusedparams = true,
|
|
||||||
},
|
|
||||||
staticcheck = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
-- C/C++
|
|
||||||
vim.lsp.config["clangd"] = {}
|
|
||||||
|
|
||||||
-- Arduino (C)
|
|
||||||
vim.lsp.config["arduino_language_server"] = {}
|
|
||||||
|
|
||||||
-- Lua
|
|
||||||
vim.lsp.config["lua_ls"] = {
|
|
||||||
cmd = {"lua-language-server" },
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
|
||||||
diagnostics = {globals = {'vim', 'opts'}},
|
|
||||||
},
|
|
||||||
telemetry = {
|
|
||||||
enable = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Rust
|
|
||||||
vim.lsp.config["rust_analyzer"] = {}
|
|
||||||
|
|
||||||
-- Python
|
|
||||||
vim.lsp.config["pylsp"] = {}
|
|
||||||
|
|
||||||
-- TypeScript
|
|
||||||
vim.lsp.config["tsls"] = {}
|
|
||||||
|
|
||||||
-- Fix virtual text going off screen
|
|
||||||
vim.diagnostic.config({
|
|
||||||
virtual_text = false,
|
|
||||||
signs = true,
|
|
||||||
underline = true,
|
|
||||||
update_in_insert = false,
|
|
||||||
severity_sort = false,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- creating key mappings
|
|
||||||
vim.api.nvim_create_autocmd('LspAttach', {
|
|
||||||
callback = function(ev)
|
|
||||||
-- custom colors
|
|
||||||
vim.cmd('hi DiagnosticUnderlineError cterm=undercurl')
|
|
||||||
vim.cmd('hi DiagnosticUnderlineWarn cterm=undercurl')
|
|
||||||
vim.cmd('hi DiagnosticUnderlineInfo cterm=undercurl')
|
|
||||||
vim.cmd('hi DiagnosticUnderlineHint cterm=undercurl')
|
|
||||||
vim.cmd('hi DiagnosticUnderlineOk cterm=undercurl')
|
|
||||||
-- key mappings
|
|
||||||
local opts = { buffer = ev.buf,}
|
|
||||||
-- error viewing
|
|
||||||
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, opts)
|
|
||||||
vim.keymap.set('n', '<leader>[d', vim.diagnostic.goto_prev, opts)
|
|
||||||
vim.keymap.set('n', '<leader>]d', vim.diagnostic.goto_next, opts)
|
|
||||||
-- def viewing/rename
|
|
||||||
vim.keymap.set('n', '<leader>gD', vim.lsp.buf.declaration, opts)
|
|
||||||
vim.keymap.set('n', '<leader>gd', vim.lsp.buf.definition, opts)
|
|
||||||
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
|
|
||||||
vim.keymap.set('n', '<leader>H', vim.lsp.buf.hover, opts)
|
|
||||||
-- auto hover for error viewing
|
|
||||||
vim.api.nvim_create_autocmd("CursorHold", {
|
|
||||||
callback = function()
|
|
||||||
opts = {
|
|
||||||
buffer = ev.buf,
|
|
||||||
focusable = false,
|
|
||||||
border = 'rounded',
|
|
||||||
source = 'always',
|
|
||||||
prefix = ' ',
|
|
||||||
scope = 'cursor',
|
|
||||||
close_events = { "BufLeave","CursorMoved","InsertEnter","FocusLost" },
|
|
||||||
}
|
|
||||||
vim.diagnostic.open_float(nil, opts)
|
|
||||||
end
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user