1" Vim ABAP syntax file 2" Language: SAP - ABAP/R4 3" Revision: 1.0 4" Maintainer: Marius Piedallu van Wyk <marius@e.co.za> 5" Last Change: 2006 Apr 13 6 7" For version < 6.0: Clear all syntax items 8" For version >= 6.0: Quit when a syntax file was already loaded 9if version < 600 10 syntax clear 11elseif exists("b:current_syntax") 12 finish 13endif 14 15" Always ignore case 16syn case ignore 17 18" Symbol Operators 19syn match abapSymbolOperator "[+\-/=<>$]" 20syn match abapSymbolOperator "\*" 21syn match abapSymbolOperator "[<>]=" 22syn match abapSymbolOperator "<>" 23syn match abapSymbolOperator "\*\*" 24syn match abapSymbolOperator "[()]" 25syn match abapSymbolOperator "[:,\.]" 26 27" Literals 28syn region abapString matchgroup=abapString start="'" end="'" contains=abapStringEscape 29syn match abapStringEscape contained "''" 30 31syn match abapNumber "-\=\<\d\+\>" 32syn region abapHex matchgroup=abapHex start="X'" end="'" 33 34if version >= 600 35 setlocal iskeyword=-,48-57,_,A-Z,a-z 36else 37 set iskeyword=-,48-57,_,A-Z,a-z 38endif 39 40" ABAP statements 41syn keyword abapStatement ADD ADD-CORRESPONDING ASSIGN AT AUTHORITY-CHECK 42syn keyword abapStatement BACK BREAK-POINT 43syn keyword abapStatement CALL CASE CHECK CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY 44syn keyword abapStatement DATA DEFINE DELETE DESCRIBE DETAIL DIVIDE DIVIDE-CORRESPONDING DO 45syn keyword abapStatement EDITOR-CALL ELSE ELSEIF END-OF-DEFINITION END-OF-PAGE END-OF-SELECTION ENDAT ENDCASE ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDLOOP ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDWHILE EXEC EXPORT EXPORTING EXTRACT 46syn keyword abapStatement FETCH FIELD-GROUPS FIELD-SYMBOLS FIELDS FORM FORMAT FREE FUNCTION FUNCTION-POOL 47syn keyword abapStatement GENERATE GET 48syn keyword abapStatement HIDE 49syn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INPUT INSERT 50syn keyword abapStatement LEAVE LIKE LOAD LOCAL LOOP 51syn keyword abapStatement MESSAGE MODIFY MODULE MOVE MOVE-CORRESPONDING MULTIPLY MULTIPLY-CORRESPONDING 52syn keyword abapStatement NEW-LINE NEW-PAGE NEW-SECTION 53syn keyword abapStatement ON OVERLAY 54syn keyword abapStatement PACK PARAMETERS PERFORM POSITION PRINT-CONTROL PROGRAM PROVIDE PUT 55syn keyword abapStatement RAISE RANGES READ RECEIVE REFRESH REJECT REPLACE REPORT RESERVE RESTORE ROLLBACK RP-PROVIDE-FROM-LAST 56syn keyword abapStatement SCAN SCROLL SEARCH SELECT SELECT-OPTIONS SELECTION-SCREEN SET SHIFT SKIP SORT SPLIT START-OF-SELECTION STATICS STOP SUBMIT SUBTRACT SUBTRACT-CORRESPONDING SUM SUMMARY SUPPRESS SYNTAX-CHECK SYNTAX-TRACE 57syn keyword abapStatement TABLES TOP-OF-PAGE TRANSFER TRANSLATE TYPE TYPE-POOL TYPE-POOLS TYPES 58syn keyword abapStatement UNPACK UPDATE 59syn keyword abapStatement WHEN WHILE WINDOW WRITE 60 61" More statemets 62syn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY 63syn keyword abapStatement CASTING APPEND RAISING VALUE COLOR 64syn keyword abapStatement LINE-SIZE LINE-COUNT MESSAGE-ID 65syn keyword abapStatement CHANGING EXCEPTIONS DEFAULT CHECKBOX COMMENT 66syn keyword abapStatement ID NUMBER FOR DISPLAY-MODE TITLE OUTPUT 67 68" More multi-word statements 69syn match abapStatement "\(\W\|^\)\(WITH\W\+\(HEADER\W\+LINE\|FRAME\|KEY\)\|WITH\)\(\W\|$\)"ms=s+1,me=e-1 70syn match abapStatement "\(\W\|^\)NO\W\+STANDARD\W\+PAGE\W\+HEADING\(\W\|$\)"ms=s+1,me=e-1 71syn match abapStatement "\(\W\|^\)\(EXIT\W\+FROM\W\+STEP\W\+LOOP\|EXIT\)\(\W\|$\)"ms=s+1,me=e-1 72syn match abapStatement "\(\W\|^\)\(BEGIN\W\+OF\W\+\(BLOCK\|LINE\)\|BEGIN\W\+OF\)\(\W\|$\)"ms=s+1,me=e-1 73syn match abapStatement "\(\W\|^\)\(END\W\+OF\W\+\(BLOCK\|LINE\)\|END\W\+OF\)\(\W\|$\)"ms=s+1,me=e-1 74syn match abapStatement "\(\W\|^\)IS\W\+INITIAL\(\W\|$\)"ms=s+1,me=e-1 75syn match abapStatement "\(\W\|^\)NO\W\+INTERVALS\(\W\|$\)"ms=s+1,me=e-1 76syn match abapStatement "\(\W\|^\)SEPARATED\W\+BY\(\W\|$\)"ms=s+1,me=e-1 77syn match abapStatement "\(\W\|^\)\(USING\W\+\(EDIT\W\+MASK\)\|USING\)\(\W\|$\)"ms=s+1,me=e-1 78syn match abapStatement "\(\W\|^\)\(WHERE\W\+\(LINE\)\)\(\W\|$\)"ms=s+1,me=e-1 79syn match abapStatement "\(\W\|^\)RADIOBUTTON\W\+GROUP\(\W\|$\)"ms=s+1,me=e-1 80syn match abapStatement "\(\W\|^\)REF\W\+TO\(\W\|$\)"ms=s+1,me=e-1 81 82" Special ABAP specific tables: 83syn match abapSpecial "\(\W\|^\)\(sy\|\(p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)\(\W\|$\)"ms=s+1,me=e-1 84syn match abapSpecialTables "\(sy\|\(p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained 85syn match abapSpecial "\(\W\|^\)\w\+-\(\w\+-\w\+\|\w\+\)"ms=s+1 contains=abapSpecialTables 86 87" Pointer 88syn match abapSpecial "<\w\+>" 89 90" Abap constants: 91syn keyword abapSpecial TRUE FALSE NULL SPACE 92 93" Includes 94syn region abapInclude start="include" end="." contains=abapComment 95 96" Types 97syn keyword abapTypes c n i p f d t x 98 99" Atritmitic operators 100syn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan 101syn keyword abapOperator cosh sinh tanh exp log log10 sqrt 102 103" String operators 104syn keyword abapOperator strlen xstrlen charlen numofchar dbmaxlen 105 106" Table operators 107syn keyword abapOperator lines 108 109" Table operators (SELECT operators) 110syn keyword abapOperator INTO FROM WHERE GROUP BY HAVING ORDER BY SINGLE 111syn keyword abapOperator APPENDING CORRESPONDING FIELDS OF TABLE 112syn keyword abapOperator LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING 113syn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN 114 115" An error? Not strictly... but cannot think of reason this is intended. 116syn match abapError "\.\." 117 118" Comments 119syn region abapComment start="^\*" end="$" contains=abapTodo 120syn match abapComment "\".*" contains=abapTodo 121syn keyword abapTodo contained TODO NOTE 122 123" Define the default highlighting. 124" For version 5.7 and earlier: only when not done already 125" For version 5.8 and later: only when an item doesn't have highlighting yet 126if version >= 508 || !exists("did_abap_syntax_inits") 127 if version < 508 128 let did_abap_syntax_inits = 1 129 command -nargs=+ HiLink hi link <args> 130 else 131 command -nargs=+ HiLink hi def link <args> 132 endif 133 134 HiLink abapError Error 135 HiLink abapComment Comment 136 HiLink abapInclude Include 137 HiLink abapSpecial Special 138 HiLink abapSpecialTables PreProc 139 HiLink abapSymbolOperator abapOperator 140 HiLink abapOperator Operator 141 HiLink abapStatement Statement 142 HiLink abapString String 143 HiLink abapFloat Float 144 HiLink abapNumber Number 145 HiLink abapHex Number 146 147 delcommand HiLink 148endif 149 150let b:current_syntax = "abap" 151 152" vim: ts=8 sw=2 153 154