Author: bernhard
Date: Sun May 20 02:14:30 2007
New Revision: 18594

Modified:
   trunk/editor/pir.vim.in

Log:
#43000: [PATCH] syntax folding for vim
Add directives for folding in vim

Courtesy of Kay-Uwe Hüll <kiwi  at dyndns.org>


Modified: trunk/editor/pir.vim.in
==============================================================================
--- trunk/editor/pir.vim.in     (original)
+++ trunk/editor/pir.vim.in     Sun May 20 02:14:30 2007
@@ -34,7 +34,9 @@
 
 syn keyword pirOp   goto if unless global addr
 
-syn match pirDirective  /\.\(sub\|endm\|pcc_sub\|macro\|end\|emit\|eom\)/
+syn match pirDirectiveSub    /\.\(sub\|end\s*$\)/
+syn match pirDirectiveMacro  /\.\(macro\|endm\)/
+syn match pirDirective  /\.\(pcc_sub\|emit\|eom\)/
 syn match pirDirective  /\.\(local\|sym\|const\|lex\|global\|globalconst\)/
 syn match pirDirective  /\.\(endnamespace\|namespace\)/
 syn match pirDirective  /\.\(param\|arg\|return\|yield\)/
@@ -43,7 +45,7 @@
 syn match pirDirective  /\.\(pcc_begin_return\|pcc_end_return\)/
 syn match pirDirective  /\.\(pcc_begin_yield\|pcc_end_yield\)/
 
-syn match pirDirective  
/:\(main\|method\|load\|anon\|multi\|immediate\|outer\|lex\)/
+syn match pirDirective  
/:\(main\|method\|load\|init\|anon\|multi\|immediate\|outer\|lex\|vtable\)/
 syn match pirDirective  /:\(flat\|slurpy\|optional\|opt_flag\|named\)/
 
 " Macro invocation
@@ -92,6 +94,8 @@
   HiLink pirStringSpecial   Special
   HiLink pirNumber          Number
   HiLink pirDirective       Macro
+  HiLink pirDirectiveSub    Macro
+  HiLink pirDirectiveMacro  Macro
   HiLink pirOp              Conditional
 
   delcommand HiLink
@@ -99,4 +103,11 @@
 
 let b:current_syntax = "pir"
 
+" Folding rules
+syn region foldManual  start=/^\s*#.*{{{/ end=/^\s*#.*}}}/ contains=ALL 
keepend fold
+syn region foldMakro   start=/\.macro/ end=/\.endm/ 
contains=ALLBUT,pirDirectiveMacro keepend fold
+syn region foldSub     start=/\.sub/ end=/\.end/ 
contains=ALLBUT,pirDirectiveSub,pirDirectiveMacro keepend fold
+syn region foldIf      start=/^\s*if.*goto\s*\z(\I\i*\)\s*$/ 
end=/^\s*\z1:\s*$/ contains=ALLBUT,pirDirectiveSub,pirDirectiveMacro keepend 
fold
+syn region foldUnless  start=/^\s*unless.*goto\s*\z(\I\i*\)\s*$/ 
end=/^\s*\z1:\s*$/ contains=ALLBUT,pirDirectiveSub,pirDirectiveMacro keepend 
fold
+
 " Ops -- dynamically generated from ops2vim.pl

Reply via email to