From 0cc4a179cfed5c2be516186dd134c6d208b7f2a9 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Fri, 25 Oct 2024 11:58:32 +0800 Subject: Update --- vim/init/basic.vim | 2 +- vim/init/config.vim | 45 +++++++++++++++++++++++++++++++++------------ 2 files changed, 34 insertions(+), 13 deletions(-) (limited to 'vim/init') diff --git a/vim/init/basic.vim b/vim/init/basic.vim index c4c62e7..4a49f39 100644 --- a/vim/init/basic.vim +++ b/vim/init/basic.vim @@ -119,7 +119,7 @@ set errorformat+=[%f:%l]\ ->\ %m,[%f:%l]:%m set splitright " Set signcolumn -set signcolumn="yes:3" +set signcolumn=yes:3 " Custom sign from help page :h sign sign define piet text=>> texthl=Search diff --git a/vim/init/config.vim b/vim/init/config.vim index 5c53728..ce81f8a 100644 --- a/vim/init/config.vim +++ b/vim/init/config.vim @@ -221,26 +221,47 @@ augroup InitFileTypes au FileType javascript call InitJavascriptFile() function! InitJavascriptFile() setlocal wrap sw=2 ts=2 - - setlocal foldexpr=JsdocLevel() foldmethod=expr - - let l:jsdocPrefix = "JSDOC: " - setlocal foldtext=JSdocFoldText() + setlocal foldexpr=JsdocLevel() foldmethod=expr foldtext=JSdocFoldText() endfunc function! JsdocLevel() - let jsdoc = matchstr(getline(v:lnum), '^\zs\s*\/\*\*\ze') + let line = getline(v:lnum) + let jsdoc = matchstr(line, '^\zs[ \/]*\/\*\*\ze') + let indent = len(matchstr(line, '^\zs\s*\ze')) / 2 + if !empty(jsdoc) - let foldlevel = len(matchstr(jsdoc, '^\zs\s*\ze')) + 1 + let foldlevel = indent + 1 return '>'.foldlevel else - " Contents - return "=" + let foldlevel = foldlevel(v:lnum - 1) + " let lastIndent = len(matchstr(getline(v:lnum - 1), '^\zs\s*\ze')) / 2 + " let pattern = matchstr(line, '^\s*\zs[})]\+;*\ze$') + " if !empty(line) && len(pattern) > 0 && indent + 1 == foldlevel && indent < lastIndent + " return "<".foldlevel + if empty(line) && empty(getline(v:lnum - 1)) + return "<".foldlevel + else + return "=" + endif endif endfunc function! JSdocFoldText() - return "JSDOC: ".matchstr(getline(v:foldstart + 1), '^[\* ]*\zs.*\ze') + let line = getline(v:foldstart) + let message = matchstr(line, '\*\s\zs.*\ze\s\*\+/$') + let lines = v:foldend - v:foldstart + + if empty(message) + let line = getline(v:foldstart + 1) + let message = "@ ".matchstr(line, '^[\* ]*\zs.*\ze') + endif + + let comment = matchstr(line, '^\s*\zs//\ze') + if !empty(comment) + let message = '/** '.message.' */' + endif + + return repeat(" ", v:foldlevel - 1).repeat(" ", 4 - len(lines)).lines." lines -- ".message endfunc " }}} @@ -265,8 +286,8 @@ augroup InitFileTypes endfunc autocmd FileType html,markdown,javascript nnoremap cl :call ChangeAttr("class") autocmd FileType html,markdown,javascript nnoremap id :call ChangeAttr("id") - autocmd FileType css,javascript nnoremap :let LINE=line("."):silent! %!npx standard --stdin --fix 2>/dev/null:exe LINE - autocmd FileType css,javascript nmap cdg:let LINE=line("."):%!stylelint --fix --stdin 2>/dev/null:exe LINE + autocmd FileType css,javascript nnoremap :let LINE=line("."):silent! %!standard --stdin --fix 2>/dev/null:exe LINE + autocmd FileType css,javascript nmap cdg:let LINE=line("."):%!stylelint -c scripts/stylelintrc.json --fix --stdin 2>/dev/null:exe LINE autocmd FileType css,javascript set formatprg=prettier " Reload preview server -- cgit v1.2.3-70-g09d2