Skip to content

Instantly share code, notes, and snippets.

@dylnmc
Created September 10, 2019 18:30
Show Gist options
  • Save dylnmc/3576be85504ede39c623b24d983f4c63 to your computer and use it in GitHub Desktop.
Save dylnmc/3576be85504ede39c623b24d983f4c63 to your computer and use it in GitHub Desktop.
" v!autocmd (:
augroup Vimrc " (:
autocmd!
" vim shenanigans
autocmd WinEnter,BufWinEnter $HOME/simplevimrc.vim call <sid>setupVimFile()
autocmd BufWinLeave $HOME/simplevimrc.vim call <sid>cleanupVimFile()
autocmd BufRead,TextChanged,FileChangedShellPost,FileReadPost,FilterReadPost,ShellFilterPost $HOME/simplevimrc.vim call <sid>computeFirstFolds()
augroup end " :)
function! s:setupVimFile() " (:
call <sid>cleanupVimFile()
call matchadd('Conceal', '^\s*"\s.*\s*('.':\zs.*', -1)
call matchadd('vimCommentTitle', '^"\s*v!\zs[^(]\{-}\ze\s*('.':')
setlocal foldtext=VimFoldText()
endfunction " :)
function! s:cleanupVimFile() " (:
for l:match in getmatches()
call matchdelete(l:match.id)
endfor
endfunction " :)
" icons (:
"
let s:vim_icon = [
\' ..',
\' .::::.',
\' ___________ :;;;;:`____________',
\' \_________/ ?????L \__________/',
\' |.....| ????????> :.......''',
\' |:::::| $$$$$$"`.:::::::'' ,',
\' ,|:::::| $$$$"`.:::::::'' .OOS.',
\' ,7D|;;;;;| $$"`.;;;;;;;'' .OOO888S.',
\'.GDDD|;;;;;| ?`.;;;;;;;'' .OO8DDDDDNNS.',
\' ''DDO|IIIII| .7IIIII7'' .DDDDDDDDNNNF`',
\' ''D|IIIIII7IIIII7'' .DDDDDDDDNNNF`',
\' |EEEEEEEEEE7'' .DDDDDDDNNNNF`',
\' |EEEEEEEEZ'' .DDDDDDDDNNNF`',
\' |888888Z'' .DDDDDDDDNNNF`',
\' |8888Z'' ,DDDDDDDNNNNF`',
\' |88Z'' "DNNNNNNN"',
\' ''"'' "MMMM"',
\' ""',
\]
" :)
function! s:computeFirstFolds() " (:
lvimgrep /"\s\+v!/j %
let b:fdt_nums = map(getloclist(0), { _,row -> row.lnum })
endfunction " :)
function! VimFoldText() " (:
let l:lpadding = &fdc
redir l:signs
execute 'silent sign place buffer='.bufnr('%')
redir end
let l:lpadding += l:signs[0:2] ==# 'id=' ? 2 : 0
if exists('+relativenumber') && &relativenumber
let l:nums = [&numberwidth, strlen(v:foldstart - line('w0')), strlen(line('w$') - v:foldstart), strlen(v:foldstart)]
if &number
call add(l:nums, strlen(line('$')) + 1)
endif
let l:lpadding += max(l:nums)
elseif &number
let l:lpadding += max([&numberwidth, strlen(line('$')) + 1])
endif
let l:sline = getline(v:foldstart)
if index(get(b:, 'fdt_nums', []), v:foldstart) !=# -1
let l:sline .= s:vim_icon[index(b:fdt_nums, v:foldstart)]
endif
" if l:sline =~# '^"\%(\sv!.\{-}('..':\|\s\+('..':\)'
" let l:sline = substitute(substitute(l:sline[4:], '\%(('..':.\{-}\)\@<!-', ' ', 'g'), '('..':', '', '')
" endif
if l:sline =~# '^"\%(\sv!.\{-}('..':\|\s\+('..':\)'
let l:sline = l:sline[4:]
endif
" expand tabs
let l:start = substitute(l:sline, '\t', repeat(' ', &tabstop), 'g')
let l:len = v:foldend - v:foldstart
if l:len > 1
let l:info = ' (' . (v:foldend - v:foldstart) . ')'
else
let l:info = ''
endif
let l:infolen = strlen(substitute(l:info, '.', 'x', 'g'))
let l:width = winwidth(0) - l:lpadding - l:infolen
let l:text = strpart(l:start , 0, l:width)
return l:text . repeat(' ', l:width - strlen(substitute(l:text, ".", "x", "g"))) . l:info
endfunction " :)
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" :)
" v! (:
" vim: fdm=marker fdl=0 fmr=\(\:,\:\) cole=2 cocu=c:
" :)
@dylnmc
Copy link
Author

dylnmc commented Sep 10, 2019

save as ~/simplevimrc.vim. then: vim ~/simplevimrc.vim +so\ % +e

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment