Я использую vim для редактирования исходного кода Informix 4GL, который имеет такой синтаксис:
FUNCTION FOR ... ... END FOR END FUNCTION
Я хочу сложить функции с помощью ZA ZM и т.д.
Это работает
:set foldmarker=FUNCTION,END\ FUNCTION :set foldmethod=marker
Однако ключевые слова также могут быть в нижнем регистре, и я в идеале хотел бы также сложить MAIN.END MAIN, поэтому маркеры не могут этого сделать.
Я старался
:syn region myFun start="FUNCTION" end="END FUNCTION" transparent fold :set foldmethod=syntax
но это не имело никакого эффекта. У меня уже есть файл синтаксиса, который делает цветную подсветку и :syn
показал, что myFun
включен в определения синтаксиса.
Как я могу настроить независимое от регистра свертывание синтаксиса FUNCTION ...КОНЕЦ ФУНКЦИИ и ОСНОВНЫЕ.КОНЕЦ ГЛАВНАЯ?
Обновление: я пробовал http://www.vim.org/scripts/script.php?script_id=2287, но у него есть некоторые проблемы:
- Это складывается на уровне детализации, я не хочу (
IF
,FOR
,WHILE
, ...) - Предполагается, что операторы
END
начинаются с новой строки (поэтому,IF a<b call c() END IF
сбрасывается в EOF) - Он считает, что
SELECT * FROM table \n FOR UPDATE
является началом инструкцииFOR
Поэтому я хотел бы сначала попытаться создать что-то более простое.