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