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 :syn
menunjukkan myFun
termasuk 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
END
pernyataan dimulai pada baris baru (jadiIF a<b call c() END IF
lipat ke EOF) - Itu dianggap
SELECT * FROM table \n FOR UPDATE
sebagai awal dari sebuahFOR
pernyataan
Jadi saya ingin mencoba membuat sesuatu yang lebih sederhana terlebih dahulu.
set foldmethod=indent
?