Вим открывает мои складки на пасте. как это предотвратить? - PullRequest
2 голосов
/ 13 октября 2010

Что-то странное происходит в моем фортран-фолде.Это пример файла

module foo
contains
subroutine hello()

end subroutine hello
subroutine hello()

end subroutine

subroutine hello()

end subroutine
end module foo

subroutine hello()

end subroutine
subroutine hello()

end subroutine
subroutine hello()

end subroutine

, и это vimrc

syntax on
au! BufRead,BufNewFile *.f90 setfiletype fortran
set foldmethod=syntax
let fortran_fold=1

. Раздражает следующее.Если я обрежу (dd) и вставлю (P) сложенную подпрограмму вне модуля / концевого блока модуля, только что вставленная складка остается закрытой.Если я вставлю в блок модуля / конечного модуля, вместо этого будет вставлена ​​вновь вставленная сложенная область.Можете ли вы воспроизвести проблему (vim 7.2 здесь) и знаете ли вы какие-нибудь обходные пути / исправления?

1 Ответ

2 голосов
/ 15 января 2011

Я думаю, что это не конкретная проблема с фортран-модулем, а общая проблема.

Существует vimtip , который обеспечивает решение для случайного открытия сгибов при редактировании файла.Хитрость заключается в том, чтобы установить foldmethod на manual, когда начинается редактирование:

autocmd InsertEnter * if !exists('w:last_fdm') | let w:last_fdm=&foldmethod | setlocal foldmethod=manual | endif

Когда вы закончите редактирование (или выйдите из окна), сбросьте foldmethod к его первоначальному значению:

autocmd InsertLeave,WinLeave * if exists('w:last_fdm') | let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...