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