From 079b177b51c3289bb038d4857a6f702ba2300c52 Mon Sep 17 00:00:00 2001 From: KnoP-01 Date: Thu, 23 Mar 2023 11:38:45 +0100 Subject: [PATCH] initial release --- README.md | 81 ++++++++++++++++ ftdetect/kawasaki_as.vim | 17 ++++ ftplugin/kawasaki_as.vim | 76 +++++++++++++++ indent/kawasaki_as.vim | 116 +++++++++++++++++++++++ syntax/kawasaki_as.vim | 195 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 485 insertions(+) create mode 100644 ftdetect/kawasaki_as.vim create mode 100644 ftplugin/kawasaki_as.vim create mode 100644 indent/kawasaki_as.vim create mode 100644 syntax/kawasaki_as.vim diff --git a/README.md b/README.md index c4c9456..36e1084 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,83 @@ +``` + _ _______ + /.\\ / ___ \_________ _ + ___ ___ \_/ \ | / \ ____ \/ | _____ + / \ / \ \ \ | | O | _________/\_| / | o\ + | _ | | \ _| \--\ | \___/ / _/ _/ / + | | | | \ \ | o | \ \ /\ /.\ / | | + | |_| | _\ \ /--/ \ \\ \ \/\ \_// | | + | _ | | \ | / / \ \\ \ \ \ / | + |_| |_| \___/ _/ / \ _ \ \-\ | o\_ + / \ / | /.\ | |o| /_____\ + for Vim9 | o |_ _____/ \_/ | /-/ | | + by Knosowski \_/__|__ |____ ______/ / / |_____| + |___ ___\ | \_____ | / | + | \__ | \___________/ | o \__ + |______| | | \______\ + industrial robot programming | | | | + |___________| |_____| +``` # kawasaki-as-for-vim + Vim plugins (syntax, indent and more) for Kawasaki AS language + +## Introduction: + +Kawasaki AS for [Vim][10] (7.4 or later) is a collection of Vim scripts to help +programming [Kawasaki industrial robots][9]. + +It provides +* syntax highlighting, +* indenting, +* support for commentary [vimscript #3695][7] + + +## Installation: + +### Installation with [vim-plug][14]: ~ + +Put this in your .vimrc: > + + call plug#begin('~/.vim/plugged') + Plug 'KnoP-01/kawasaki-as-for-vim' + call plug#end() + +For the first installation run: > + + :PlugInstall + +Update every once in a while with: > + + :PlugUpdate + +### Manual installation: ~ + +Extract the most recent [release][1] and copy the folders +`/doc`, `/ftdetect`, `/ftplugin`, `/indent` and `/syntax` +into your `~/.vim/` or `%USERPROFILE%\vimfiles\` directory. +Overwrite kawasaki\_as.\* files from older installation. + +Put the following in your .vimrc: > + + syntax on " syntax and filetype on in that order + filetype plugin indent on " syntax and filetype on in that order + +## Self promotion + +If you like this plugin please Star it. If you don't but you think it could be +useful if this or that would be different, don't hesitate to email me or even +better open an [issue][5]. With a little luck and good timing you may find me +on ircs://irc.libera.chat:6697/#vim as KnoP in case you have any questions. + +[1]: https://github.com/KnoP-01/kawasaki-as-for-vim/releases/latest + + + +[5]: https://github.com/KnoP-01/kawasaki-as-for-vim/issues +[7]: https://github.com/tpope/vim-commentary + +[9]: https://kawasakirobotics.com/products-robots/ +[10]: https://www.vim.org/ + + +[14]: https://github.com/junegunn/vim-plug diff --git a/ftdetect/kawasaki_as.vim b/ftdetect/kawasaki_as.vim new file mode 100644 index 0000000..f7cf00d --- /dev/null +++ b/ftdetect/kawasaki_as.vim @@ -0,0 +1,17 @@ +" Vim file type detection file +" Language: Kawasaki AS-language +" Maintainer: Patrick Meiser-Knosowski +" Version: 1.0.0 +" Last Change: 23. Mar 2023 +" + +let s:keepcpo = &cpo +set cpo&vim + +" no augroup! see :h ftdetect +au! BufNewFile,BufRead *.as,*.pg setf kawasaki_as + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:sw=2 sts=2 et diff --git a/ftplugin/kawasaki_as.vim b/ftplugin/kawasaki_as.vim new file mode 100644 index 0000000..81a5258 --- /dev/null +++ b/ftplugin/kawasaki_as.vim @@ -0,0 +1,76 @@ +" Vim file type plugin +" Language: Kawasaki AS-language +" Maintainer: Patrick Meiser-Knosowski +" Version: 1.0.0 +" Last Change: 21. Mar 2023 +" + +" Init {{{ + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:keepcpo = &cpo +set cpo&vim + +" }}} init + +" Vim Settings {{{ + +" default on; no option +setlocal commentstring=;%s +setlocal comments=:\; +let b:undo_ftplugin = "setlocal com< cms<" + +" auto insert comment char when i_, o or O on a comment line +if get(g:,'asAutoComment',1) + setlocal formatoptions+=r + setlocal formatoptions+=o + let b:undo_ftplugin = b:undo_ftplugin." fo<" +endif + +" format comments +if get(g:,'asFormatComments',1) + if &textwidth ==# 0 + " 78 Chars + setlocal textwidth=78 + let b:undo_ftplugin = b:undo_ftplugin." tw<" + endif + setlocal formatoptions-=t + setlocal formatoptions+=l + setlocal formatoptions+=j + if stridx(b:undo_ftplugin, " fo<")==(-1) + let b:undo_ftplugin = b:undo_ftplugin." fo<" + endif +endif " format comments + +" }}} Vim Settings + +" Move Around and Function Text Object key mappings {{{ + +if get(g:,'asMoveAroundKeyMap',1) + nnoremap ]] : call search('^\.' , 'sw') + onoremap ]] :exe "normal! v" call search('\(\ze\n\.\\|\%$\)', 'eW') + xnoremap ]] :exe "normal! gv"call search('\(^\.\\|\%$\)' , 'sW') + nnoremap [[ : call search('^\.' , 'bsw') + onoremap [[ : call search('^\.' , 'bW') + xnoremap [[ :exe "normal! gv"call search('^\.' , 'bsW') + nnoremap ][ : call search('.*\(\n\.\\|\%$\)' , 'sw') + onoremap ][ :exe "normal! v" call search('\(\n\.\\|\%$\)' , 'sW') + xnoremap ][ :exe "normal! gv"call search('\(\n\.\\|\%$\)' , 'sW') + nnoremap [] : call search('^\.\n\w\+:\n\n' , 'besw') + onoremap [] :exe "normal! V" call search('^\.\n\w\+:\n\n' , 'besW') + xnoremap [] :exe "normal! gv"call search('^\.\n\w\+:\n\n' , 'besW') +endif + +" }}} Move Around and Function Text Object key mappings + +" Finish {{{ +let &cpo = s:keepcpo +unlet s:keepcpo +" }}} Finish + +" vim:sw=2 sts=2 et fdm=marker diff --git a/indent/kawasaki_as.vim b/indent/kawasaki_as.vim new file mode 100644 index 0000000..08c23e8 --- /dev/null +++ b/indent/kawasaki_as.vim @@ -0,0 +1,116 @@ +" Vim indent file +" Language: Kawasaki AS-language +" Maintainer: Patrick Meiser-Knosowski +" Version: 1.0.0 +" Last Change: 23. Mar 2023 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal nolisp +setlocal nocindent +setlocal nosmartindent +setlocal autoindent +setlocal indentexpr=GetAsIndent() +setlocal indentkeys=!^F,o,O,=~end,0=~else,0=~value,0=~any +let b:undo_indent = "setlocal lisp< cindent< smartindent< autoindent< indentexpr< indentkeys<" + +if get(g:,'asSpaceIndent',1) + " Use spaces, not tabs, for indention, 2 is enough. + " More or even tabs would waste valuable space on the teach pendant. + setlocal softtabstop=2 + setlocal shiftwidth=2 + setlocal expandtab + setlocal shiftround + let b:undo_indent = b:undo_indent." softtabstop< shiftwidth< expandtab< shiftround<" +endif + +" Only define the function once. +if exists("*GetAsIndent") + finish +endif + +let s:keepcpo = &cpo +set cpo&vim + +function GetAsIndent() abort + + let currentLine = getline(v:lnum) + if currentLine =~? '^;' && !get(g:, 'asCommentIndent', 1) + " If current line has a ; in column 1 and is no fold, keep zero indent. + " This may be usefull if code is commented out at the first column. + return 0 + endif + + " Find a non-blank line above the current line. + let preNoneBlankLineNum = s:AsPreNoneBlank(v:lnum - 1) + if preNoneBlankLineNum == 0 + " At the start of the file use zero indent. + return 0 + endif + + let preNoneBlankLine = getline(preNoneBlankLineNum) + let ind = indent(preNoneBlankLineNum) + + " Define add 'shiftwidth' pattern + let addShiftwidthPattern = '\c\v^\s*(' + if get(g:, 'asIndentBetweenDef', 1) + let addShiftwidthPattern ..= '\.program>' + let addShiftwidthPattern ..= '|' + endif + let addShiftwidthPattern ..= 'if>|while>|for>' + let addShiftwidthPattern ..= '|else>' + let addShiftwidthPattern ..= '|value>|any>' + let addShiftwidthPattern ..= ')' + + " Define Subtract 'shiftwidth' pattern + let subtractShiftwidthPattern = '\c\v^\s*(' + if get(g:, 'asIndentBetweenDef', 1) + let subtractShiftwidthPattern ..= '\.end>' + let subtractShiftwidthPattern ..= '|' + endif + let subtractShiftwidthPattern ..= 'end>' + let subtractShiftwidthPattern ..= '|else(if)?>' + let subtractShiftwidthPattern ..= '|value>|any>>' + let subtractShiftwidthPattern ..= ')' + + " Add shiftwidth + if preNoneBlankLine =~? addShiftwidthPattern + let ind += &sw + endif + + " Subtract shiftwidth + if currentLine =~? subtractShiftwidthPattern + let ind = ind - &sw + endif + + " First value after a case gets the indent of the case. + if currentLine =~? '\c\v^\s*value>' + \&& preNoneBlankLine =~? '\c\v^\s*case>' + let ind = ind + &sw + endif + + return ind +endfunction + +" This function works almost like prevnonblank() but handles +" comments like blank lines +function s:AsPreNoneBlank(lnum) abort + + let nPreNoneBlank = prevnonblank(a:lnum) + + while nPreNoneBlank > 0 && getline(nPreNoneBlank) =~? '^\s*;' + " Previouse none blank line a comment. Look further aback. + let nPreNoneBlank = prevnonblank(nPreNoneBlank - 1) + endwhile + + return nPreNoneBlank +endfunction + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:sw=2 sts=2 et diff --git a/syntax/kawasaki_as.vim b/syntax/kawasaki_as.vim new file mode 100644 index 0000000..9276cb6 --- /dev/null +++ b/syntax/kawasaki_as.vim @@ -0,0 +1,195 @@ +" Vim syntax file +" Language: Kawasaki AS-language +" Maintainer: Patrick Meiser-Knosowski +" Version: 1.0.0 +" Last Change: 23. Mar 2023 +" +" Note to self: +" for testing perfomance +" open a 1000 lines file. +" :syntime on +" G +" hold down CTRL-U until reaching top +" :syntime report + +" Init {{{ +if exists("b:current_syntax") + finish +endif + +let s:keepcpo = &cpo +set cpo&vim + +" if colorscheme is tortus(less)? asGroupName defaults to 1 +if get(g:, 'colors_name', " ") =~ '\=]/ +highlight default link asCompOperator Operator +" }}} Operator + +" Delimiter {{{ +syn match asDelimiter /[#$&:\[\](),\\]/ +highlight default link asDelimiter Delimiter +" }}} Delimiter + +" Constant values {{{ +" Boolean +syn keyword asBoolean NULL +syn keyword asBoolean FALSE OFF ON TRUE +highlight default link asBoolean Boolean +" Binary integer +syn match asBinaryInt /^b[01]\+'/ +highlight default link asBinaryInt Number +" Hexadecimal integer +syn match asHexInt /^h[0-9a-fA-F]\+'/ +highlight default link asHexInt Number +" Integer +syn match asInteger /\W\@1<=[+-]\?\d\+/ contains=asArithOperator +highlight default link asInteger Number +" Float +syn match asFloat /\v\W@1<=[+-]?\d+\.?\d*%(\s*[eE][+-]?\d+)?/ +highlight default link asFloat Float +" String +syn region asString start=/"/ end=/"/ oneline contains=@Spell +highlight default link asString String +" }}} Constant values + +" Predefined Structure {{{ +syn keyword asStructure ADC +syn keyword asStructure CNTADC +syn keyword asStructure COLCALOFF COLCALON COLCOLDOFF COLCOLDON COLINIT COLMVOFF COLMVON COLR COLRJ COLRJOFF COLRJON COLROFF COLRON COLSTATE COLT COLTJ COLTJOFF COLTJON COLTOFF COLTON +syn keyword asStructure CVC1MOVE CVC2MOVE CVCOOPJT CVDELAY CVENCSGN CVFLS2 CVFMAX CVFNONPITCH CVFPH2 CVGAIN CVHMOVE CVLAPPRO CVLDEPART CVLMOVE CVMAXSPD CVPITCH CVPOS CVPOS2 CVRESET CVSCALE CVSET CVSIMU CVSMAX CVSPEED CVSWITCH CVWAIT CVXYSIGN +syn keyword asStructure DAOFFSET OUTDA +syn keyword asStructure PMODEND PMODLIMIT PMODPRINTDATA PMODSTART PMODTXYZ PMODXYZ PMOD_LINSP PMOD_ROTSP +syn keyword asStructure SETCCVSLOPE SETCOLTHID SETLCVSLOPE SETOUTDA SIGAPPRO SIGDEPART SIGPOINT +syn keyword asStructure TCP_ACCEPT TCP_CLOSE TCP_CONNECT TCP_END_LISTEN TCP_ISLINK TCP_LISTEN TCP_RECV TCP_SEND TCP_STATUS +syn keyword asStructure TRQNM +syn keyword asStructure UDP_RECVFROM UDP_SENDTO +syn keyword asStructure ZCNTUP +syn keyword asStructure CBS_TOOLCHG CBS_AUXTOOL1 CBS_BASE +highlight default link asStructure Structure +" }}} Predefined Structure and Enum + +" Statements, keywords et al {{{ +" keywords +syn keyword asStatement ABORT ABOVE ABS.SPEED ABS ABSDRIVE ACCEL ACCEPT ACCURACY AFTER.WAIT.TMR ALIGN ALLERESET ALLROB_SPSET ALONE ALWAYS ASC ATAN2 AVE_TRANS +syn keyword asStatement AUTOSTART.PC AUTOSTART2.PC AUTOSTART3.PC AUTOSTART4.PC AUTOSTART5.PC AUTOSTART6.PC AUTOSTART7.PC AUTOSTART8.PC +syn keyword asStatement BASE BATCHK BELOW BITS BITS32 BREAK BSPEED BY +syn keyword asStatement CALL CBSMON_EXTDISABLE CBSMON_EXTENABLE CBSMON_SETDEVICE CCENTER CHECK.HOLD CHSUM CLAMP CLOSE CLOSEI CLOSES CM/MIN CM/S COM CONF_VARIABLE CONTINUE COOP.DRIVE.EX1 COOP.DRIVE.EX2 COOPSTATUS COPY COS CP CS CSHIFT CURLIM CURLIMM CURLIMP CVRESETSIG_DELAY CYCLE.STOP +syn keyword asStatement DECEL DECMPCOLR DECMPCOLRJ DECOMPOSE DEFSIG DEG/MIN DEG/S DELAY DELETE DEST DEST_CIRINT DEXT DIRECTORY DISP.EXESTEP DISPIO_01 DISTANCE DIVIDE.TPKEY_S DLYSIG DRAW DRIVE DWRIST DX DY DZ +syn keyword asStatement EDIT ENA_TOOLSHAPE ENC_TEMP ENCCHK_EMG ENCCHK_PON ENV_DATA ENV2_DATA ENVCHKRATE ERESET ERR_ALLROBSTOP ERRLOG ERROR ERRSTART.PC EXECUTE EXTCALL +syn keyword asStatement EXISTCHAR EXISTDATA EXISTINTEGER EXISTJOINT EXISTLOCALCHAR EXISTLOCALINTEGER EXISTLOCALJOINT EXISTLOCALREAL EXISTLOCALTRANS EXISTPGM EXISTREAL EXISTTRANS +syn keyword asStatement FB_PORT_ASSIGN FB_RESET_ABCC FB_S_CCL FB_SET_WORD FB_SIG_ORDER FFRESET FFSET FFSET_STATUS FINE FLOWRATE FRAME FREE +syn keyword asStatement GETENCTEMP GETLLMIT GETULIMIT GUNOFF GUNOFFTIMER GUNON GUNONTIMER +syn keyword asStatement HALT HELP/DO HELP/F HELP/MC HELP/M HELP/PPC HELP/P HELP/SW HELP HERE HOLD HOLD.STEP HOME HSENSE HSENSESET HSETCLAMP +syn keyword asStatement ID IFAKEY IFPDISP IFPLABEL IFPTITLE IFPWOVERWRITE IFPWPRINT IGNORE INPUT INRANGE INS_POWER INSERT_NO_CONFIRM INSTR INT INTERP_FTOOL INTFCHK INVALID.TPKEY_S IO IPEAKCLR IPEAKLOG IQARM +syn keyword asStatement JUMP +syn keyword asStatement KILL +syn keyword asStatement L3ACCURACY L3ARMSLOWMODE L3ARMSLOWRATE L3ARMSLOWSET L3JNT L3LINKSLOWMODE L3LINKSLOWRATE L3LINKSLOWSET L3SPEED L3TOOL L3TRN +syn keyword asStatement LANGUAGE LEFTY LEN LIST LLIMIT LOAD/F LOAD/Q LOAD LOCK LSTRACE +syn keyword asStatement MASTER MAXINDEX MAXVAL MC MESSAGES MHERE MININDEX MINVAL MM/MIN MM/S MNTINFOGET MOD MON_SPEED MON_TWAIT MSPEED MSPEED2 MSTEP MVWAIT +syn keyword asStatement NCHOFF NCHON NEXT NLOAD NO_SJISCONV NOEXIST_SET_L NOEXIST_SET_R NOEXIST_SET_S +syn keyword asStatement ONE ONI OPEINFO OPEINFOCLR OPEN OPENI OPENS OPLOG OUTDA OUTPUT OX.PREOUT OXZERO +syn keyword asStatement PALMODE PAUSE PCABORT PCCONTINUE PCEND PCENDMSG_MASK PCEXECUTE PCKILL PCSCAN PCSTATUS PCSTEP PI PLCAIN PLCAOUT PNL_CYCST PNL_ERESET PNL_MPOWER POWER PREFETCH.SIGINS PRIME PRINT PRIORITY PROG.DATE PROMPT PULSE +syn keyword asStatement POINT/10 POINT/11 POINT/12 POINT/13 POINT/14 POINT/15 POINT/16 POINT/17 POINT/18 POINT/7 POINT/8 POINT/9 POINT/A POINT/EXT POINT/OAT POINT/O POINT/T POINT/X POINT/Y POINT/Z POINT +syn keyword asStatement QTOOL +syn keyword asStatement RANDOM REC REC_ACCEPT REFFLTRESET REFFLTSET REFFLTSET_STATUS RELAX RELAXI RELAXS RENAME REP_ONCE REP_ONCE.RPS_LAST REPEAT REPEAT RESET RESTRACE RETURN RETURNE RGSO RIGHTY ROBNET_TCHMASTER ROBNETID ROBNETROBOT ROBNETSIG ROUND RPS RSIGCORRECT RSIGPOINT RSIGRANGE RUN RUNMASK RX RY RZ +syn keyword asStatement S_HERE +syn keyword asStatement SAVE/ALLLOG SAVE/A SAVE/ELOG SAVE/FULL SAVE/L SAVE/OLOG SAVE/OPLOG SAVE/P SAVE/ROB SAVE/R SAVE/STG SAVE/SYS SAVE/S SAVE +syn keyword asStatement SC2RECEIVE SC2SEND SCALL SCASE SCNT SCNTRESET SCPROTOCOL SCREEN SCSETSIO +syn keyword asStatement SET_MAXTOOLSHAPENUM SET_TOOLSHAPE SET2HOME SETENCTEMP_THRES SETHOME SETOUTDA SETPICK SETPLACE SETTIME SETTRACE +syn keyword asStatement SFLK SFLP SHIFT SHUTDOWN +syn keyword asStatement SIG SIG2 SIGMON_TEACH SIGNAL SIGRSTCONF +syn keyword asStatement SIN SINGULAR SJUMP SLAVE SLOAD SLOW SLOW_REPEAT SLOW_START SOUT SPEED SQRT STABLE STAT_ON_KYBD STATUS STEP STG_CHCOMBI STG_SAMPLING STG_START STG_STOP STIM STOP STP_ONCE STPNEXT +syn keyword asStatement STRGCLR STRGSET STRGSETIO STRGSTART STRGSTOP STRTOPOS STRTOVAL +syn keyword asStatement SVALUE SWAIT SYSDATA SYSINIT SYSINIT/SW SYSINIT/U +syn keyword asStatement TASK TASKNO TDRAW TEACH_LOCK TILL TIME TIMER TOOL TOOLSHAPE TOUCH.ENA TOUCHST.ENA TPKEY_A TPKEY_S TPLIGHT TPSPEED.RESET TRACE TRADD TRANS TRIGGER TRSUB TWAIT TYPE +syn keyword asStatement ULIMIT UNTIL +syn keyword asStatement USB_COPY USB_FDEL USB_FDIR USB_LOAD USB_MKDIR USB_RENAME USB_SAVE/A USB_SAVE/ALLLOG USB_SAVE/ELOG USB_SAVE/FULL USB_SAVE/L USB_SAVE/OPLOG USB_SAVE/P USB_SAVE/R USB_SAVE/ROB USB_SAVE/S USB_SAVE/STG USB_SAVE/SYS USB_SAVE +syn keyword asStatement USE_ISO8859_5 UTIMER UWRIST +syn keyword asStatement VAL VALUE +syn keyword asStatement WAIT WAITREL_AUTO WEIGHT WHERE WHICHTASK WS.ZERO WS_COMPOFF +syn keyword asStatement XD XFER XP XQ XS XY +syn keyword asStatement ZALLPGKILL ZAREASLOWMODE ZAREASLOWRATE ZAREASLOWSET ZINTFTOOLMDL ZINTFXLINK2BRAD ZINTFXLINK2RAD ZINTFXLINKRAD ZL3LINK2BOX ZPOWER ZRMTSET ZRMTSET2 ZSIGMAP ZSIGMAP_CLEAR ZSIGSPEC ZSOFT_EXCHANGE ZSOFT_EXCHANGE_AUTO ZZERO + +highlight default link asStatement Statement +" Conditional +syn keyword asConditional IF THEN ELSE ELSEIF END CASE OF VALUE ANY +highlight default link asConditional Conditional +" Repeat +syn keyword asRepeat FOR TO WHILE DO +highlight default link asRepeat Repeat +" Label +syn keyword asLabel GOTO +syn match asLabel /^\s*\w\+:\ze\s*\%(;.*\)\?$/ +highlight default link asLabel Label +" }}} Statements, keywords et al + +" special keywords for movement commands {{{ +syn keyword asMovement BRAKE C2MOVE C2MOVE CVJMOVE CVL3LMOVE CVMLJMOVE CVMLL3LMOVE FJMOVE FLMOVE HMOVE JMOVE L3C1MOVE L3C2MOVE L3LMOVE LMOVE MLC1MOVE MLC2MOVE MLJMOVE MLLMOVE MLZL3LMOVE MRC1MOVE MRC2MOVE MRLMOVE XMOVE +syn keyword asMovement HOME +syn keyword asMovement JAPPRO JDEPART LAPPRO LDEPART +if g:asGroupName + highlight default link asMovement Movement +else + highlight default link asMovement Special +endif +" }}} special keywords for movement commands + +" BuildInFunction {{{ +syn keyword asFunction CHR DATE DECODE ENCODE ERROR ERRORS LEFT MID RIGHT SPACE TIME TIME_MS REPLACE STR_ID STR_ID2 SYSDATA ERRLOG +highlight default link asFunction Function +" }}} BuildInFunction + +" Finish {{{ +let &cpo = s:keepcpo +unlet s:keepcpo + +let b:current_syntax = "kawasaki_as" +" }}} Finish + +" vim:sw=2 sts=2 et fdm=marker +