diff options
| author | Hsieh Chin Fan <pham@topo.tw> | 2024-07-31 11:49:46 +0800 |
|---|---|---|
| committer | Hsieh Chin Fan <pham@topo.tw> | 2024-07-31 13:47:57 +0800 |
| commit | e94b17515037564d993209f7917329e8f9a42727 (patch) | |
| tree | d629aa93c0fefc0ab8abee658cc7037492379e76 /vim/init | |
| parent | 0cf71e0018a5c11dd2cd2183e3f0632ec4ce01df (diff) | |
Update
Diffstat (limited to 'vim/init')
| -rw-r--r-- | vim/init/basic.vim | 2 | ||||
| -rw-r--r-- | vim/init/keymaps.vim | 35 |
2 files changed, 33 insertions, 4 deletions
diff --git a/vim/init/basic.vim b/vim/init/basic.vim index 58277b9..17a97da 100644 --- a/vim/init/basic.vim +++ b/vim/init/basic.vim | |||
| @@ -23,7 +23,7 @@ augroup tabinfo | |||
| 23 | autocmd BufDelete * call RemoveBufFromTabs() | 23 | autocmd BufDelete * call RemoveBufFromTabs() |
| 24 | 24 | ||
| 25 | function! AddBufToTab() | 25 | function! AddBufToTab() |
| 26 | if !has_key(t:, 'bufs') | let t:['bufs'] = [] | endif | 26 | if !has_key(t:, 'bufs') | let t:bufs = [] | endif |
| 27 | call add(t:bufs, bufnr()) | call sort(t:bufs) | call uniq(t:bufs) | 27 | call add(t:bufs, bufnr()) | call sort(t:bufs) | call uniq(t:bufs) |
| 28 | endfunc | 28 | endfunc |
| 29 | function! RemoveBufFromTabs() | 29 | function! RemoveBufFromTabs() |
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index 4df45ad..ce6cf84 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim | |||
| @@ -196,7 +196,6 @@ function! DeleteMark(mark) | |||
| 196 | endfunc | 196 | endfunc |
| 197 | nnoremap dm :call DeleteMark(getchar())<CR> | 197 | nnoremap dm :call DeleteMark(getchar())<CR> |
| 198 | 198 | ||
| 199 | |||
| 200 | " Usage: z' to fold lines not near marks, use v:count to set offset | 199 | " Usage: z' to fold lines not near marks, use v:count to set offset |
| 201 | " For example: 15z' | 200 | " For example: 15z' |
| 202 | autocmd BufEnter * let b:fold_for_marks = 0 | 201 | autocmd BufEnter * let b:fold_for_marks = 0 |
| @@ -205,8 +204,8 @@ function! ToggleFoldForMarks(offset) | |||
| 205 | if !b:fold_for_marks || a:offset | 204 | if !b:fold_for_marks || a:offset |
| 206 | " If toggling from other foldmethod, save view! | 205 | " If toggling from other foldmethod, save view! |
| 207 | if !b:fold_for_marks | 206 | if !b:fold_for_marks |
| 208 | mkview | 207 | mkview |
| 209 | setlocal foldmethod=manual | 208 | setlocal foldmethod=manual |
| 210 | endif | 209 | endif |
| 211 | 210 | ||
| 212 | " Then clear all folds | 211 | " Then clear all folds |
| @@ -242,6 +241,7 @@ function! ToggleFoldForMarks(offset) | |||
| 242 | let b:fold_for_marks = 1 | 241 | let b:fold_for_marks = 1 |
| 243 | echo "Folds for Marks" | 242 | echo "Folds for Marks" |
| 244 | else | 243 | else |
| 244 | " Reset everything | ||
| 245 | loadview | 245 | loadview |
| 246 | let b:fold_for_marks = 0 | 246 | let b:fold_for_marks = 0 |
| 247 | echo "Reset Folds" | 247 | echo "Reset Folds" |
| @@ -249,6 +249,35 @@ function! ToggleFoldForMarks(offset) | |||
| 249 | endfunction | 249 | endfunction |
| 250 | nnoremap <expr> z' ":\<C-u>call ToggleFoldForMarks("..v:count..")\<CR>" | 250 | nnoremap <expr> z' ":\<C-u>call ToggleFoldForMarks("..v:count..")\<CR>" |
| 251 | 251 | ||
| 252 | function! ChangeUnfold(downward, count) | ||
| 253 | " Only do this if foldmethod is manual or count is given | ||
| 254 | if &foldmethod != 'manual' || !a:count | return | endif | ||
| 255 | |||
| 256 | " Move to fold upward/downward | ||
| 257 | if downward | ||
| 258 | norm! zj | ||
| 259 | else | ||
| 260 | norm! zk | ||
| 261 | endif | ||
| 262 | let foldstart = foldclosed('.') | ||
| 263 | let foldend = foldclosedend('.') | ||
| 264 | |||
| 265 | " Change folding area | ||
| 266 | norm! zd | ||
| 267 | let move = (a:count ? a:count : 1) | ||
| 268 | if downward | ||
| 269 | let foldstart += move | ||
| 270 | else | ||
| 271 | let foldend -= move | ||
| 272 | endif | ||
| 273 | exe foldstart..","..foldend.."fold" | ||
| 274 | |||
| 275 | " Get back to origin cursor position | ||
| 276 | norm! '' | ||
| 277 | endfunc | ||
| 278 | nnoremap <expr> z> ":\<C-u>call ChangeUnfold(1,"..v:count..")\<CR>" | ||
| 279 | nnoremap <expr> z< ":\<C-u>call ChangeUnfold(0,"..v:count..")\<CR>" | ||
| 280 | |||
| 252 | "}}} | 281 | "}}} |
| 253 | " EDIT {{{ | 282 | " EDIT {{{ |
| 254 | 283 | ||