Author: jisom
Date: Fri Jan  6 20:17:18 2006
New Revision: 10946

Added:
   trunk/editor/indent_pir.vim
   trunk/editor/pir.vim.in
Removed:
   trunk/editor/imc.vim.in
   trunk/editor/indent_imc.vim
Modified:
   trunk/editor/filetype_parrot.vim
   trunk/editor/ops2vim.pl
Log:
updated the pir.vim syntax files

Modified: trunk/editor/filetype_parrot.vim
==============================================================================
--- trunk/editor/filetype_parrot.vim    (original)
+++ trunk/editor/filetype_parrot.vim    Fri Jan  6 20:17:18 2006
@@ -1,3 +1,3 @@
 au BufNewFile,BufRead *.pmc set ft=pmc
 au BufNewFile,BufRead *.pasm set ft=pasm
-au BufNewFile,BufRead *.imc,*.imcc,*.pir set ft=imc
+au BufNewFile,BufRead *.imc,*.imcc,*.pir set ft=pir

Added: trunk/editor/indent_pir.vim
==============================================================================
--- (empty file)
+++ trunk/editor/indent_pir.vim Fri Jan  6 20:17:18 2006
@@ -0,0 +1,75 @@
+" Description: imcc indenter
+" Author:      Andrew Rodland <[EMAIL PROTECTED]>
+" Last Change: 2004 Aug 3
+
+" As usual, we want to be alone
+if exists("b:did_indent")
+       finish
+endif
+let b:did_indent=1
+
+setlocal indentexpr=PIRIndent()
+setlocal indentkeys=o,O,*<Return>,<bs>,:,=.end,0#
+
+fun! InPOD(lnum)
+       return synIDattr(synID(a:lnum, 1, 1), "name") =~? '^myPod$\|^pod[A-Z]'
+endfun
+
+fun! PIRIndent()
+       let thisline = getline(v:lnum)
+
+       let POD_START = '^=[a-z]'
+
+       if thisline =~? POD_START
+               return 0
+       endif
+
+       
+       if InPOD(v:lnum)
+               return -1
+       endif
+
+       let LABEL_OR_COMMENT = '^\s*\k\+:\s*$\|^#'
+       if thisline =~? LABEL_OR_COMMENT
+               return 0
+       endif
+
+       let lnum=v:lnum
+       while lnum > 0
+               let lnum = prevnonblank(lnum-1)
+               let prevline = getline(lnum)
+               
+               if prevline !~? LABEL_OR_COMMENT
+                       if !InPOD(lnum)
+                               break
+                       endif
+               endif
+       endwhile
+
+       if lnum < 1
+               return 0
+       endif
+
+       let ind = indent(lnum)
+       
+       let SUB = '^\s*\.pcc_sub\s\+\|^\s*\.sub\s\+'
+       let RETURNBLOCK = '\s*\.pcc_begin_return\s*$'
+       let END = '^\s*\.end\s*$\|^\s*\.pcc_end_return\s*$'
+
+       if prevline =~? SUB
+               let ind = ind + &sw
+       endif
+
+       if prevline =~? RETURNBLOCK
+               let ind = ind + &sw
+       endif
+
+       if thisline =~? END
+               let ind = ind - &sw
+       endif
+
+       return ind
+
+endfun
+
+

Modified: trunk/editor/ops2vim.pl
==============================================================================
--- trunk/editor/ops2vim.pl     (original)
+++ trunk/editor/ops2vim.pl     Fri Jan  6 20:17:18 2006
@@ -1,6 +1,6 @@
 #! perl -w
 
-my $cline = my $prefix = 'syn keyword imcOp';
+my $cline = my $prefix = 'syn keyword pirOp';
 
 my %seen;
 

Added: trunk/editor/pir.vim.in
==============================================================================
--- (empty file)
+++ trunk/editor/pir.vim.in     Fri Jan  6 20:17:18 2006
@@ -0,0 +1,101 @@
+" Vim syntax file
+" Language:    Parrot IMCC
+" Maintainer:  Luke Palmer <[EMAIL PROTECTED]>
+" Modified: Joshua Isom
+" Last Change: Jan 6 2006
+
+" For installation please read:
+" :he filetypes
+" :he syntax
+"
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+"
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+syntax clear
+
+syn include @Pod syntax/pod.vim
+syn region pirPod start="^=[a-z]" end="^=cut" keepend [EMAIL PROTECTED]
+
+syn keyword pirType int float num string pmc
+syn match   pirPMC  
/\.\(Compiler\|Continuation\|Coroutine\|CSub\|NCI\|Eval\|Sub\|Scratchpad\)/
+syn match   pirPMC  
/\.\(BigInt\|Boolean\|Complex\|Float\|Integer\|PMC\|String\|Hash\)/
+syn match   pirPMC  
/\.\(Fixed\|Resizable\)\(Boolean\|Float\|Integer\|PMC\|String\)Array/
+syn match   pirPMC  
/\.\(IntList\|Iterator\|Key\|ManagedStruct\|UnManagedStruct\|Pointer\)/
+syn match   pirPMC  /\.\(FloatVal\|Multi\|S\|String\)\?Array/
+syn match   pirPMC  
/\.Perl\(Array\|Env\|Hash\|Int\|Num\|Scalar\|String\|Undef\)/
+syn match   pirPMC  
/\.Parrot\(Class\|Interpreter\|IO\|Library\|Object\|Thread\)/
+
+syn keyword pirOp   goto if unless global addr
+
+syn match pirDirective  /\.\(sub\|end\|pcc_sub\|macro\|endm\|emit\|eom\)/
+syn match pirDirective  /\.\(local\|sym\|const\|lex\|global\|globalconst\)/
+syn match pirDirective  /\.\(namespace\|endnamespace\)/
+syn match pirDirective  /\.\(param\|arg\|return\|yield\)/
+syn match pirDirective  /\.\(pragma\|HLL\|HLL_map\|include\)/
+syn match pirDirective  
/\.\(pcc_begin\|pcc_call\|pcc_end\|invocant\|meth_call\|nci_call\)/
+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  /:\(flat\|slurpy\|optional\|opt_flag\)/
+
+" Macro invocation
+syn match pirDirective  /\.\I\i*(/he=e-1
+
+
+" pirWord before pirRegister
+" FIXME :: in identifiers and labels
+syn match pirWord           /[A-Za-z_][A-Za-z0-9_]*/
+syn match pirComment        /#.*/
+syn match pirLabel          /[A-Za-z0-9_]\+:/he=e-1
+syn match pirRegister       /[INPS]\([12][0-9]\|3[01]\|[0-9]\)/
+syn match pirDollarRegister /\$[INPS][0-9]\+/
+
+syn match pirNumber         
/[+-]\?[0-9]\+\(\.[0-9]*\([Ee][+-]\?[0-9]\+\)\?\)\?/
+syn match pirNumber         /0[xX][0-9a-fA-F]\+/
+syn match pirNumber         /0[oO][0-7]\+/
+syn match pirNumber         /0[bB][01]\+/
+
+syn region pirString start=/"/ skip=/\\"/ end=/"/ contains=pirStringSpecial
+syn region pirString start=/<<"\z(\I\i*\)"/ end=/^\z1$/ 
contains=pirStringSpecial
+syn region pirString start=/<<'\z(\I\i*\)'/ end=/^\z1$/
+syn region pirString start=/'/ end=/'/
+syn match  pirStringSpecial 
"\\\([abtnvfre\\"]\|\o\{1,3\}\|x{\x\{1,8\}}\|x\x\{1,2\}\|u\x\{4\}\|U\x\{8\}\|c[A-Z]\)"
 contained
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_pasm_syntax_inits")
+  if version < 508
+    let did_pasm_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink pirPod             Comment
+  HiLink pirWord            Normal
+  HiLink pirComment         Comment
+  HiLink pirLabel           Label
+  HiLink pirRegister        Identifier
+  HiLink pirDollarRegister  Identifier
+  HiLink pirType            Type
+  HiLink pirPMC             Type
+  HiLink pirString          String
+  HiLink pirStringSpecial   Special
+  HiLink pirNumber          Number
+  HiLink pirDirective       Macro
+  HiLink pirOp              Conditional
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "pir"
+
+" Ops -- dynamically generated from ops2vim.pl

Reply via email to