From 1b37f7d7f1554f4ef4cd185c1181d54d9956b1db Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Sun, 6 Oct 2024 12:06:27 +0800 Subject: Update --- vim/init/basic.vim | 6 ++++++ vim/init/config.vim | 38 +++++++++++++++++++++++++++++++++++--- vim/init/keymaps.vim | 3 ++- 3 files changed, 43 insertions(+), 4 deletions(-) (limited to 'vim/init') diff --git a/vim/init/basic.vim b/vim/init/basic.vim index 79ed3fd..6553a6c 100644 --- a/vim/init/basic.vim +++ b/vim/init/basic.vim @@ -86,6 +86,12 @@ set display=lastline set lazyredraw set whichwrap=b,s +" linebreak, ref: https://stackoverflow.com/questions/1204149/smart-wrap-in-vim +set breakindent +" ident by an additional 2 characters on wrapped lines, when line >= 40 characters, put 'showbreak' at start of line +set breakindentopt=shift:4,min:40,sbr +set showbreak=>> + " Tab set showtabline=2 diff --git a/vim/init/config.vim b/vim/init/config.vim index 4676942..5c53728 100644 --- a/vim/init/config.vim +++ b/vim/init/config.vim @@ -215,6 +215,34 @@ augroup InitFileTypes return heading.." "..fills.." "..lines endfunc + " }}} + " Javascript {{{ + + 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() + endfunc + + function! JsdocLevel() + let jsdoc = matchstr(getline(v:lnum), '^\zs\s*\/\*\*\ze') + if !empty(jsdoc) + let foldlevel = len(matchstr(jsdoc, '^\zs\s*\ze')) + 1 + return '>'.foldlevel + else + " Contents + return "=" + endif + endfunc + + function! JSdocFoldText() + return "JSDOC: ".matchstr(getline(v:foldstart + 1), '^[\* ]*\zs.*\ze') + endfunc + " }}} " HTML {{{ @@ -235,8 +263,11 @@ augroup InitFileTypes startinsert endif endfunc - autocmd FileType html,markdown nnoremap cl :call ChangeAttr("class") - autocmd FileType html,markdown nnoremap id :call ChangeAttr("id") + 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 set formatprg=prettier " Reload preview server autocmd BufWrite *.html,*.js,*.css call ReloadServer() @@ -279,4 +310,5 @@ augroup InitFileTypes augroup END -" }}} +let g:ale_lint_on_save = 1 +let g:ale_fix_on_save = 1 diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index 2d58fe9..07be9b3 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim @@ -476,6 +476,7 @@ let g:quitVimWhenPressingCtrlC = 1 function! ToggleQuit() let g:quitVimWhenPressingCtrlC = !g:quitVimWhenPressingCtrlC let message = g:quitVimWhenPressingCtrlC ? "Unlock" : "Lock" + nnoremap ZZ echo message endfunction nnoremap \q :call ToggleQuit() @@ -502,7 +503,7 @@ function! CloseBufferSafely() tabclose else " Switch to proper buffer - let next_buf = get(t:bufs, bufnr('#')) ? bufnr('#') : filter(t:bufs, 'v:val != '..bufnr)[-1] + let next_buf = filter(t:bufs, 'v:val != '..bufnr)[-1] exe "b "..next_buf " exe "buffer ".g:lastbuffer call filter(t:bufs, 'v:val != '..bufnr) -- cgit v1.2.3-70-g09d2