From f3ea7c8003c7a65de29c2f4e0e1bf0d592dd0ad8 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sun, 28 Jan 2024 16:05:38 +0200 Subject: [.vimrc] Reworked entire vimrc --- .vim/miniplugins/code_terminal.vim | 85 -------------------------- .vim/miniplugins/spell_check_mode.vim | 33 ---------- .vim/miniplugins/statusline.vim | 111 ---------------------------------- .vim/miniplugins/tabline.vim | 91 ---------------------------- 4 files changed, 320 deletions(-) delete mode 100644 .vim/miniplugins/code_terminal.vim delete mode 100644 .vim/miniplugins/spell_check_mode.vim delete mode 100644 .vim/miniplugins/statusline.vim delete mode 100644 .vim/miniplugins/tabline.vim (limited to '.vim/miniplugins') diff --git a/.vim/miniplugins/code_terminal.vim b/.vim/miniplugins/code_terminal.vim deleted file mode 100644 index 4ddc1ae..0000000 --- a/.vim/miniplugins/code_terminal.vim +++ /dev/null @@ -1,85 +0,0 @@ -" Program in which build actions are executed. If no value, build commands are executes as bash commands. -" This is only really useful in languages with interpreters -let g:codeenvs = { -\ 'scheme' : 'racket', -\ 'lisp' : 'rlwrap sbcl --noinform', -\ } - -" The following two dictionaries support certain substitutions: -" %F - location of current file (relative path) -" %D - directory of current file (full path) - -" Building the current file only -let g:codebuildsingle = { -\ 'scheme' : '(enter! "%F")', -\ 'cpp' : "g++ -g -pedantic '%F' && ./a.out", -\ 'yacc' : 'bison -t -d %F', -\ 'lex' : 'flex %F', -\ 'haskell' : 'runhaskell "%F"', -\ 'lisp' : '(load "%F")', -\ } -" Building all files in the directory (and subdirectories) of the current file -let g:codebuildproject = { -\ 'cpp' : "g++ -g -pedantic '%D/'**/*.cpp && ./a.out" -\ } - -noremap :call CodeTerminal(g:codebuildsingle) -noremap :call CodeTerminal(g:codebuildproject) -inoremap :call CodeTerminal(g:codebuildsingle) -inoremap :call CodeTerminal(g:codebuildproject) -" We assume that the last accessed window is the one with the source code, otherwise it gets complicated -tnoremap :call CodeTerminal(g:codebuildsingle) -tnoremap :call CodeTerminal(g:codebuildproject) - -au TabNew * call CTCreateTabVars() - -function! CTCreateTabVars() - let t:codetermbufnr = -1 - let t:codetermft = "" - let t:codetermhadenv = 0 -endfunction -call CTCreateTabVars() - -function! OpenCodeTerminal() - if !bufexists(t:codetermbufnr) - term - " Latest buffer is the terminal buffer we just opened - let t:codetermbufnr = bufnr("$") - " We go back to the file from which this was called - wincmd p - let t:codetermft = "" - let t:codetermhadenv = 0 - endif - - if &filetype != t:codetermft - if t:codetermhadenv - " This is kinda bad, since certain environments might not close with this only - call term_sendkeys(t:codetermbufnr, "\") - " The sleep is kinda bad, but it fixes the next term_sendkeys not working properly - sleep 500m - endif - - let t:codetermft = &filetype - if has_key(g:codeenvs, &filetype) - call term_sendkeys(t:codetermbufnr, g:codeenvs[&filetype] . "\") - let t:codetermhadenv = 1 - else - let t:codetermhadenv = 0 - endif - endif -endfunction - -function! CodeTerminal(builddict) - call OpenCodeTerminal() - - if has_key(a:builddict, &filetype) - let buildcomm = a:builddict[&filetype] . "\" - let buildcomm = substitute(buildcomm, "%F", @%, "") - let buildcomm = substitute(buildcomm, "%D", expand('%:p:h'), "") - call term_sendkeys(t:codetermbufnr, buildcomm) - echo "[CodeTerminal] Sent build command!" - else - call term_sendkeys(t:codetermbufnr, "\\") - echo "[CodeTerminal] No value in build dictionary!" - endif -endfunction diff --git a/.vim/miniplugins/spell_check_mode.vim b/.vim/miniplugins/spell_check_mode.vim deleted file mode 100644 index cfdd46a..0000000 --- a/.vim/miniplugins/spell_check_mode.vim +++ /dev/null @@ -1,33 +0,0 @@ -" When you press F6 it will toggle a "spell check mode", -" spell is activated and the colour scheme is changed -nmap :call SpellCheckModeToggle() - -function! SpellCheckModeToggle() - if g:colors_name == 'gruvbox' - set spell - colorscheme darkblue - else - set nospell - colorscheme gruvbox - endif -endfunction - -" Scrolling (shows history) in terminal (except in lazygit) -" Scroll up to activate it, and press a to deactivate it -" Slightly modified version of: https://github.com/vim/vim/issues/2490#issuecomment-393973253 -tmap :call EnterNormalMode() - -function! ExitNormalMode() - unmap - call feedkeys("a") -endfunction - -function! EnterNormalMode() - if @% == '!lazygit' - tunmap - elseif &buftype == 'terminal' && mode('') == 't' - call feedkeys("\N") - call feedkeys("\") - map :call ExitNormalMode() - endif -endfunction diff --git a/.vim/miniplugins/statusline.vim b/.vim/miniplugins/statusline.vim deleted file mode 100644 index 78a771d..0000000 --- a/.vim/miniplugins/statusline.vim +++ /dev/null @@ -1,111 +0,0 @@ -" Needed settings -set laststatus=2 -set timeoutlen=1000 ttimeoutlen=50 -set noshowmode - -" Logic - -let leftcap = '' -let rightcap = '' -let leftmcap = '' -let rightmcap = '' - -let g:activesl = '' -let g:inactivesl = '' - -" Colors {{{ - autocmd ColorScheme * call SLCreateHighlightGroups() - - function! SLCreateHighlightGroups() - hi SLMode ctermfg=1 ctermbg=0 - hi SLModeC ctermfg=1 ctermbg=0 - - hi SLRowCol ctermfg=238 ctermbg=244 - hi SLRowColC ctermfg=244 ctermbg=239 - endfunction - call SLCreateHighlightGroups() -" }}} - -" Mode {{{ - " Values are, in order, for: normal (default), insert, replace, visual modes - " [ctermfg, ctermbg] - let s:modecolors = [ - \ ['236', '117'], - \ ['236', '119'], - \ ['236', '203'], - \ ['236', '216'], - \] - - let g:modestring = '' - - function! SLModeSetter() - let cm = mode() - let ind = 0 - - if cm == 'i' - let ind = 1 - elseif cm == 'R' - let ind = 2 - let cm = 'r' - elseif cm == 'v' - let ind = 3 - endif - - call hlset([#{name: 'SLMode', ctermfg: s:modecolors[l:ind][0], ctermbg: s:modecolors[l:ind][1]}]) - call hlset([#{name: 'SLModeC', ctermfg: s:modecolors[l:ind][1], ctermbg: '239'}]) - let g:modestring = l:cm - - return '' - endfunction - - let g:activesl ..= '%#StatusLine#%{SLModeSetter()}%#SLModeC#%{leftcap}%#SLMode#%{modestring}%#SLModeC#%{rightcap}%<' - " \______leftcap______/\________mode_______/\______rightcap_____/ - let g:inactivesl ..= '%#StatusLineNC# %<' -" }}} - -" Filename {{{ - let g:_filename = ' %f %{rightmcap}' - let g:activesl ..= '%#StatusLine#'..g:_filename - let g:inactivesl ..= '%#StatusLineNC#'..g:_filename -" }}} - -" File stat {{{ - function! SLReadonly() - return (&ft !~? 'vimfiler' && &readonly) ? ' ' : '' - endfunction - - function! SLModified() - return (&ft =~ 'vimfiler') ? '' : (&modified ? '' : (&modifiable ? '' : '')) - endfunction - - let g:_filestat = ' %{SLReadonly()}%{SLModified()} ' - let g:activesl ..= g:_filestat - let g:inactivesl ..= g:_filestat -" }}} - -" Middle separator {{{ - let g:activesl ..= '%=' - let g:inactivesl ..= '%=' -" }}} - -" Filetype {{{ - let g:_filetype = '%{leftmcap} %{WebDevIconsGetFileTypeSymbol()} %{&ft} ' - let g:activesl ..= g:_filetype - let g:inactivesl ..= g:_filetype -" }}} - -" Line and column count {{{ - let g:_linecol = '%#SLRowColC#%{leftcap}%#SLRowCol#%l:%c%#SLRowColC#%{rightcap}' - let g:activesl ..= g:_linecol - let g:inactivesl ..= g:_linecol -" }}} - -" Statusline setting {{{ - set statusline= - - augroup SLModeAU - au! - au WinEnter,BufEnter * setlocal statusline=%!g:activesl - au WinLeave,BufLeave * setlocal statusline=%!g:inactivesl - augroup end -" }}} diff --git a/.vim/miniplugins/tabline.vim b/.vim/miniplugins/tabline.vim deleted file mode 100644 index bb6fe57..0000000 --- a/.vim/miniplugins/tabline.vim +++ /dev/null @@ -1,91 +0,0 @@ -let tabcap = '' -let tabmiddlecap = '' - -set tabline=%!TablineGenerator() - -" Tab data/helper functions {{{ - function! TabFilename(n) - let buflist = tabpagebuflist(a:n) - let winnr = tabpagewinnr(a:n) - let _ = (expand('#'..buflist[winnr - 1]..':t') !=# '') ? expand('#'..buflist[winnr - 1]..':t') : '[No Name]' - - " Limit the width of tabs, so they don't go out of the screen - let tabNameLengthMax = &columns/(((tabpagenr('$') > 0) ? tabpagenr('$') : 0) + 5) - - return WebDevIconsGetFileTypeSymbol(_) .. ' ' .. _[0:tabNameLengthMax] - endfunction - - function! TabReadonly(n) - let winnr = tabpagewinnr(a:n) - return gettabwinvar(a:n, winnr, '&readonly') ? ' ' : '' - endfunction - - function! TabModified(n) - let winnr = tabpagewinnr(a:n) - return gettabwinvar(a:n, winnr, '&modified') ? ' ' : (gettabwinvar(a:n, winnr, '&modifiable') ? '' : ' ') - endfunction -" }}} - -" Colors {{{ - autocmd ColorScheme * call TLCreateHighlightGroups() - - " Colorscheme clears highlights https://vi.stackexchange.com/a/3356 - function! TLCreateHighlightGroups() - hi TLTab ctermfg=252 ctermbg=242 - hi TLTabSel ctermfg=252 ctermbg=235 - hi TLRest ctermfg=248 ctermbg=238 - - let s:hi_tltab = hlget('TLTab')[0] - let s:hi_tltabsel = hlget('TLTabSel')[0] - let s:hi_tlrest = hlget('TLRest')[0] - call hlset([#{name: 'TLTabSelLC', ctermfg: s:hi_tltab['ctermbg'], ctermbg: s:hi_tltabsel['ctermbg'] }, - \ #{name: 'TLTabSelRC', ctermfg: s:hi_tltabsel['ctermbg'], ctermbg: s:hi_tltab['ctermbg'] }, - \ #{name: 'TLTabSelRCF', ctermfg: s:hi_tltabsel['ctermbg'], ctermbg: s:hi_tlrest['ctermbg'] }, - \ #{name: 'TLTabRCF', ctermfg: s:hi_tltab['ctermbg'], ctermbg: s:hi_tlrest['ctermbg'] }]) - endfunction - call TLCreateHighlightGroups() -" }}} - -function! TablineGenerator() - let s = '' - - " For each tab i - for i in range(1, tabpagenr('$')) - " Sets the tab page number, so that mouse clicks work - let s ..= '%' .. i .. 'T' - - let innerText = '%{TabFilename(' .. i .. ')}%{TabReadonly(' .. i .. ')}%{TabModified(' .. i .. ')} ' - - " If tab is the selected one - if i == tabpagenr() - " If tab isn't the left most - if i > 1 - let s ..= '%#TLTabSelLC#%{tabcap}' - endif - - let s ..= '%#TLTabSel# ' .. l:innerText - - " If tab is the last one, right cap bg color has to be different - let s ..= (i == tabpagenr('$') ? '%#TLTabSelRCF#' : '%#TLTabSelRC#') .. '%{tabcap}' - - else - let s ..= '%#TLTab#' - " If tab isn't to the right of selected and isn't the left most - if (i-1 != tabpagenr()) && (i > 1) - let s ..= '%{tabmiddlecap}' - endif - - let s ..= ' ' .. l:innerText - - " Last tab has to have a tabcap - if i == tabpagenr('$') - let s ..= '%#TLTabRCF#%{tabcap}' - endif - endif - endfor - - " After last tab, fill with TLRest - let s ..= '%#TLRest#%T' - - return s -endfunction -- cgit v1.2.3