Saya menggunakan vim untuk mengedit kode sumber Informix 4GL yang memiliki sintaks semacam ini:
FUNGSI UNTUK ... ... SELESAI UNTUK AKHIR FUNGSI
Saya ingin melipat fungsi menggunakan za zM dll
Ini bekerja
: set foldmarker = FUNCTION, END \ FUNCTION : atur foldmethod = marker
Namun kata kunci juga bisa dalam huruf kecil dan idealnya saya juga ingin melipat MAIN..END MAIN, jadi spidol tidak dapat melakukan ini.
Saya mencoba
: syn region myFun start = "FUNCTION" end = "END FUNCTION" lipatan transparan : set foldmethod = sintaks
tapi itu tidak berpengaruh. Saya sudah memiliki file sintaks yang menyoroti warna dan :synmenunjukkan myFuntermasuk dalam definisi sintaks.
Bagaimana cara mengonfigurasi lipatan sintaksis kasus-independen FUNCTION ... END FUNCTION dan MAIN..END MAIN?
Pembaruan: Saya telah mencoba http://www.vim.org/scripts/script.php?script_id=2287 tetapi ada beberapa masalah:
- Lipatan pada tingkat detail saya tidak ingin (
IF,FOR,WHILE, ...) - Ini mengasumsikan
ENDpernyataan dimulai pada baris baru (jadiIF a<b call c() END IFlipat ke EOF) - Itu dianggap
SELECT * FROM table \n FOR UPDATEsebagai awal dari sebuahFORpernyataan
Jadi saya ingin mencoba membuat sesuatu yang lebih sederhana terlebih dahulu.
set foldmethod=indent?