1" Vim ABAP syntax file 2" Language: SAP - ABAP/R4 3" Revision: 2.1 4" Maintainer: Marius Piedallu van Wyk <[email protected]> 5" Last Change: 2013 Jun 13 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 (space delimited) 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\)\?\>" 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\>" 71syn match abapComplexStatement "\<\(UP\W\+\)\?TO\>" 72 73" hyphenated-word statements 74syn match abapComplexStatement "\<LINE-COUNT\>" 75syn match abapComplexStatement "\<ADD-CORRESPONDING\>" 76syn match abapComplexStatement "\<AUTHORITY-CHECK\>" 77syn match abapComplexStatement "\<BREAK-POINT\>" 78syn match abapComplexStatement "\<CLASS-DATA\>" 79syn match abapComplexStatement "\<CLASS-METHODS\>" 80syn match abapComplexStatement "\<CLASS-METHOD\>" 81syn match abapComplexStatement "\<DIVIDE-CORRESPONDING\>" 82syn match abapComplexStatement "\<EDITOR-CALL\>" 83syn match abapComplexStatement "\<END-OF-DEFINITION\>" 84syn match abapComplexStatement "\<END-OF-PAGE\>" 85syn match abapComplexStatement "\<END-OF-SELECTION\>" 86syn match abapComplexStatement "\<FIELD-GROUPS\>" 87syn match abapComplexStatement "\<FIELD-SYMBOLS\>" 88syn match abapComplexStatement "\<FUNCTION-POOL\>" 89syn match abapComplexStatement "\<IS\W\+\(NOT\W\+\)\?\(ASSIGNED\|BOUND\|INITIAL\|SUPPLIED\)\>" 90syn match abapComplexStatement "\<MOVE-CORRESPONDING\>" 91syn match abapComplexStatement "\<MULTIPLY-CORRESPONDING\>" 92syn match abapComplexStatement "\<NEW-LINE\>" 93syn match abapComplexStatement "\<NEW-PAGE\>" 94syn match abapComplexStatement "\<NEW-SECTION\>" 95syn match abapComplexStatement "\<PRINT-CONTROL\>" 96syn match abapComplexStatement "\<RP-PROVIDE-FROM-LAST\>" 97syn match abapComplexStatement "\<SELECT-OPTIONS\>" 98syn match abapComplexStatement "\<SELECTION-SCREEN\>" 99syn match abapComplexStatement "\<START-OF-SELECTION\>" 100syn match abapComplexStatement "\<SUBTRACT-CORRESPONDING\>" 101syn match abapComplexStatement "\<SYNTAX-CHECK\>" 102syn match abapComplexStatement "\<SYNTAX-TRACE\>" 103syn match abapComplexStatement "\<TOP-OF-PAGE\>" 104syn match abapComplexStatement "\<TYPE-POOL\>" 105syn match abapComplexStatement "\<TYPE-POOLS\>" 106syn match abapComplexStatement "\<LINE-SIZE\>" 107syn match abapComplexStatement "\<LINE-COUNT\>" 108syn match abapComplexStatement "\<MESSAGE-ID\>" 109syn match abapComplexStatement "\<DISPLAY-MODE\>" 110syn match abapComplexStatement "\<READ\(-ONLY\)\?\>" 111 112" ABAP statements 113syn keyword abapStatement ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT 114syn keyword abapStatement BACK 115syn keyword abapStatement CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY 116syn keyword abapStatement DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO 117syn 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 118syn keyword abapStatement FETCH FIELDS FORM FORMAT FREE FROM FUNCTION 119syn keyword abapStatement GENERATE GET 120syn keyword abapStatement HIDE 121syn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION 122syn keyword abapStatement LEAVE LIKE LINE LOAD LOCAL LOOP 123syn keyword abapStatement MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY 124syn keyword abapStatement ON OVERLAY OPTIONAL OTHERS 125syn keyword abapStatement PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT 126syn keyword abapStatement RAISE RANGES RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK 127syn keyword abapStatement SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS 128syn keyword abapStatement TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES 129syn keyword abapStatement UNASSIGN ULINE UNPACK UPDATE 130syn keyword abapStatement WHEN WHILE WINDOW WRITE 131 132" More statemets 133syn keyword abapStatement LINES 134syn keyword abapStatement INTO GROUP BY HAVING ORDER BY SINGLE 135syn keyword abapStatement APPENDING CORRESPONDING FIELDS OF TABLE 136syn keyword abapStatement LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER ROWS CONNECTING 137syn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY 138syn keyword abapStatement CASTING APPEND RAISING VALUE COLOR 139syn keyword abapStatement CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT 140syn keyword abapStatement ID NUMBER FOR TITLE OUTPUT 141 142" Special ABAP specific tables: 143syn match abapSpecialTables "\<\(sy\|\(hrp\|p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained 144syn match abapStructure "\<\w\+-[^\>]"me=e-2 contains=abapSpecialTables,abapStatement,abapComplexStatement 145syn match abapField "-\w\+"ms=s+1 146 147" Pointer 148syn match abapSpecial "<\w\+>" 149 150" Abap common constants: 151syn keyword abapSpecial TRUE FALSE NULL SPACE 152 153" Includes 154syn region abapInclude start="include" end="." contains=abapComment 155 156" Types 157syn keyword abapTypes c n i p f d t x string xstring decfloat16 decfloat34 158 159" Atritmitic operators 160syn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan 161syn keyword abapOperator cosh sinh tanh exp log log10 sqrt 162 163" String operators 164syn keyword abapStatement strlen xstrlen charlen numofchar dbmaxlen 165 166syn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN 167 168" An error? Not strictly... but cannot think of reason this is intended. 169syn match abapError "\.\." 170 171" Comments 172syn region abapComment start="^\*" end="$" contains=abapTodo 173syn match abapComment "\".*" contains=abapTodo 174syn keyword abapTodo contained TODO NOTE 175syn match abapTodo "\#EC\W\+\w\+" 176 177" Define the default highlighting. 178" For version 5.7 and earlier: only when not done already 179" For version 5.8 and later: only when an item doesn't have highlighting yet 180if version >= 508 || !exists("did_abap_syntax_inits") 181 if version < 508 182 let did_abap_syntax_inits = 1 183 command -nargs=+ HiLink hi link <args> 184 else 185 command -nargs=+ HiLink hi def link <args> 186 endif 187 188 HiLink abapError Error 189 HiLink abapComment Comment 190 HiLink abapInclude Include 191 HiLink abapStatement Statement 192 HiLink abapComplexStatement Statement 193 HiLink abapSpecial Special 194 HiLink abapNamespace Special 195 HiLink abapSpecialTables Special 196 HiLink abapSymbolOperator abapOperator 197 HiLink abapOperator Operator 198 HiLink abapCharString String 199 HiLink abapString String 200 HiLink abapFloat Float 201 HiLink abapTypes Type 202 HiLink abapSymbol Structure 203 HiLink abapStructure Structure 204 HiLink abapField Variable 205 HiLink abapNumber Number 206 HiLink abapHex Number 207 208 delcommand HiLink 209endif 210 211let b:current_syntax = "abap" 212 213" vim: ts=8 sw=2 214 215