Skip to content

Commit 1cf402c

Browse files
committed
maintain foldlevel as much as possible (#66)
1 parent ed2ebdb commit 1cf402c

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

autoload/clang_format.vim

+15
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,10 @@ function! clang_format#replace(line1, line2) abort
225225
let screen_save = line('w0')
226226
let sel_save = &l:selection
227227
let &l:selection = 'inclusive'
228+
let fold_save = 0
229+
if &foldenable
230+
let fold_save = foldlevel(line('.'))
231+
endif
228232
let [save_g_reg, save_g_regtype] = [getreg('g'), getregtype('g')]
229233
let [save_unnamed_reg, save_unnamed_regtype] = [getreg(v:register), getregtype(v:register)]
230234

@@ -242,6 +246,17 @@ function! clang_format#replace(line1, line2) abort
242246
let &l:selection = sel_save
243247
call setpos('.', pos_save)
244248
call s:restore_screen_pos(screen_save)
249+
if fold_save > 0
250+
let level = foldlevel(line('.'))
251+
while fold_save > level
252+
foldopen
253+
let l = foldlevel(line('.'))
254+
if l == level
255+
break
256+
endif
257+
let level = l
258+
endwhile
259+
endif
245260
endtry
246261
endfunction
247262
" }}}

0 commit comments

Comments
 (0)