neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

abap.vim (9156B)


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