neovim

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

dax.vim (7479B)


      1 " Vim syntax file
      2 " Language:     Data Analysis Expressions (DAX)
      3 " Maintainer:   Anarion Dunedain <anarion80@gmail.com>
      4 " Last Change:
      5 "   2025 Mar 28  First version
      6 
      7 " quit when a syntax file was already loaded
      8 if exists("b:current_syntax")
      9        finish
     10 endif
     11 let s:keepcpo = &cpo
     12 set cpo&vim
     13 
     14 " There are DAX functions with dot in the name (like VARX.S)
     15 setlocal iskeyword+=.
     16 " DAX is case insensitive
     17 syn case ignore
     18 
     19 " DAX statements
     20 syn keyword daxStatement DEFINE EVALUATE MEASURE RETURN VAR
     21 syn match daxStatement "ORDER\ BY"
     22 syn match daxStatement "START\ AT"
     23 
     24 " TODO
     25 syn keyword daxTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
     26 
     27 " DAX functions
     28 syn keyword daxFunction
     29  \ ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH
     30  \ ADDCOLUMNS ADDMISSINGITEMS ALL ALLCROSSFILTERED ALLEXCEPT ALLNOBLANKROW ALLSELECTED
     31  \ AMORDEGRC AMORLINC AND APPROXIMATEDISTINCTCOUNT ASIN ASINH ATAN
     32  \ ATANH AVERAGE AVERAGEA AVERAGEX BETA.DIST BETA.INV BITAND
     33  \ BITLSHIFT BITOR BITRSHIFT BITXOR BLANK CALCULATE CALCULATETABLE
     34  \ CALENDAR CALENDARAUTO CEILING CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT
     35  \ CLOSINGBALANCEMONTH CLOSINGBALANCEQUARTER CLOSINGBALANCEYEAR COALESCE COLUMNSTATISTICS COMBIN COMBINA
     36  \ COMBINEVALUES CONCATENATE CONCATENATEX CONFIDENCE.NORM CONFIDENCE.T CONTAINSROW
     37  \ CONTAINSSTRING CONTAINSSTRINGEXACT CONVERT COS COSH COT COTH
     38  \ COUNT COUNTA COUNTAX COUNTBLANK COUNTROWS COUNTX COUPDAYBS
     39  \ COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD CROSSFILTER CROSSJOIN
     40  \ CUMIPMT CUMPRINC CURRENCY CURRENTGROUP CUSTOMDATA DATATABLE DATE
     41  \ DATEADD DATEDIFF DATESBETWEEN DATESINPERIOD DATESMTD DATESQTD DATESYTD
     42  \ DATEVALUE DAY DB DDB DEGREES DETAILROWS DISC
     43  \ DISTINCT column DISTINCT table DISTINCTCOUNT DISTINCTCOUNTNOBLANK DIVIDE DOLLARDE DOLLARFR
     44  \ DURATION EARLIER EARLIEST EDATE EFFECT ENDOFMONTH ENDOFQUARTER
     45  \ ENDOFYEAR EOMONTH ERROR EVALUATEANDLOG EVEN EXACT EXCEPT
     46  \ EXP EXPON.DIST FACT FALSE FILTER FILTERS FIND
     47  \ FIRST FIRSTDATE FIXED FLOOR FORMAT FV GCD
     48  \ GENERATE GENERATEALL GENERATESERIES GEOMEAN GEOMEANX GROUPBY HASONEFILTER
     49  \ HASONEVALUE HOUR IF IF.EAGER IFERROR IGNORE INDEX
     50  \ INFO.ALTERNATEOFDEFINITIONS INFO.ANNOTATIONS INFO.ATTRIBUTEHIERARCHIES INFO.ATTRIBUTEHIERARCHYSTORAGES INFO.CALCDEPENDENCY INFO.CALCULATIONGROUPS INFO.CALCULATIONITEMS
     51  \ INFO.CATALOGS INFO.CHANGEDPROPERTIES INFO.COLUMNPARTITIONSTORAGES INFO.COLUMNPERMISSIONS INFO.COLUMNS INFO.COLUMNSTORAGES INFO.CSDLMETADATA
     52  \ INFO.CULTURES INFO.DATACOVERAGEDEFINITIONS INFO.DATASOURCES INFO.DELTATABLEMETADATASTORAGES INFO.DEPENDENCIES INFO.DETAILROWSDEFINITIONS INFO.DICTIONARYSTORAGES
     53  \ INFO.EXCLUDEDARTIFACTS INFO.EXPRESSIONS INFO.EXTENDEDPROPERTIES INFO.FORMATSTRINGDEFINITIONS INFO.FUNCTIONS INFO.GENERALSEGMENTMAPSEGMENTMETADATASTORAGES INFO.GROUPBYCOLUMNS
     54  \ INFO.HIERARCHIES INFO.HIERARCHYSTORAGES INFO.KPIS INFO.LEVELS INFO.LINGUISTICMETADATA INFO.MEASURES INFO.MODEL
     55  \ INFO.OBJECTTRANSLATIONS INFO.PARQUETFILESTORAGES INFO.PARTITIONS INFO.PARTITIONSTORAGES INFO.PERSPECTIVECOLUMNS INFO.PERSPECTIVEHIERARCHIES INFO.PERSPECTIVEMEASURES
     56  \ INFO.PERSPECTIVES INFO.PERSPECTIVETABLES INFO.PROPERTIES INFO.QUERYGROUPS INFO.REFRESHPOLICIES INFO.RELATEDCOLUMNDETAILS INFO.RELATIONSHIPINDEXSTORAGES
     57  \ INFO.RELATIONSHIPS INFO.RELATIONSHIPSTORAGES INFO.ROLEMEMBERSHIPS INFO.ROLES INFO.SEGMENTMAPSTORAGES INFO.SEGMENTSTORAGES INFO.STORAGEFILES
     58  \ INFO.STORAGEFOLDERS INFO.STORAGETABLECOLUMNS INFO.STORAGETABLECOLUMNSEGMENTS INFO.STORAGETABLES INFO.TABLEPERMISSIONS INFO.TABLES INFO.TABLESTORAGES
     59  \ INFO.VARIATIONS INFO.VIEW.COLUMNS INFO.VIEW.MEASURES INFO.VIEW.RELATIONSHIPS INFO.VIEW.TABLES INT INTERSECT
     60  \ INTRATE IPMT ISAFTER ISBLANK ISCROSSFILTERED ISEMPTY ISERROR
     61  \ ISEVEN ISFILTERED ISINSCOPE ISLOGICAL ISNONTEXT ISNUMBER ISO.CEILING
     62  \ ISODD ISONORAFTER ISPMT ISSELECTEDMEASURE ISSUBTOTAL ISTEXT KEEPFILTERS
     63  \ LAST LASTDATE LCM LEFT LEN LINEST LINESTX
     64  \ LN LOG LOG10 LOOKUPVALUE LOWER MATCHBY MAX
     65  \ MAXA MAXX MDURATION MEDIAN MEDIANX MID MIN
     66  \ MINA MINUTE MINX MOD MONTH MOVINGAVERAGE MROUND
     67  \ NATURALINNERJOIN NATURALLEFTOUTERJOIN NETWORKDAYS NEXT NEXTDAY NEXTMONTH NEXTQUARTER
     68  \ NEXTYEAR NOMINAL NONVISUAL NORM.DIST NORM.INV NORM.S.DIST NORM.S.INV
     69  \ NOT NOW NPER ODD ODDFPRICE ODDFYIELD ODDLPRICE
     70  \ ODDLYIELD OFFSET OPENINGBALANCEMONTH OPENINGBALANCEQUARTER OPENINGBALANCEYEAR OR ORDERBY
     71  \ PARALLELPERIOD PARTITIONBY PATH PATHCONTAINS PATHITEM PATHITEMREVERSE PATHLENGTH
     72  \ PDURATION PERCENTILE.EXC PERCENTILE.INC PERCENTILEX.EXC PERCENTILEX.INC PERMUT PI
     73  \ PMT POISSON.DIST POWER PPMT PREVIOUS PREVIOUSDAY PREVIOUSMONTH
     74  \ PREVIOUSQUARTER PREVIOUSYEAR PRICE PRICEDISC PRICEMAT PRODUCT PRODUCTX
     75  \ PV QUARTER QUOTIENT RADIANS RAND RANDBETWEEN RANGE
     76  \ RANK RANK.EQ RANKX RATE RECEIVED RELATED RELATEDTABLE
     77  \ REMOVEFILTERS REPLACE REPT RIGHT ROLLUP ROLLUPADDISSUBTOTAL ROLLUPGROUP
     78  \ ROLLUPISSUBTOTAL ROUND ROUNDDOWN ROUNDUP ROW ROWNUMBER RRI
     79  \ RUNNINGSUM SAMEPERIODLASTYEAR SAMPLE SEARCH SECOND SELECTCOLUMNS SELECTEDMEASURE
     80  \ SELECTEDMEASUREFORMATSTRING SELECTEDMEASURENAME SELECTEDVALUE SIGN SIN SINH SLN
     81  \ SQRT SQRTPI STARTOFMONTH STARTOFQUARTER STARTOFYEAR STDEV.P STDEV.S
     82  \ STDEVX.P STDEVX.S SUBSTITUTE SUBSTITUTEWITHINDEX SUM SUMMARIZE SUMMARIZECOLUMNS
     83  \ SUMX SWITCH SYD T.DIST T.DIST.2T T.DIST.RT T.INV
     84  \ T.INV.2t TAN TANH TBILLEQ TBILLPRICE TBILLYIELD TIME
     85  \ TIMEVALUE TOCSV TODAY TOJSON TOPN TOTALMTD TOTALQTD
     86  \ TOTALYTD TREATAS TRIM TRUE TRUNC Table Constructor UNICHAR
     87  \ UNICODE UNION UPPER USERCULTURE USERELATIONSHIP USERNAME USEROBJECTID
     88  \ USERPRINCIPALNAME UTCNOW UTCTODAY VALUE VALUES VAR.P VAR.S
     89  \ VARX.P VARX.S VDB WEEKDAY WEEKNUM WINDOW XIRR
     90  \ XNPV YEAR YEARFRAC YIELD YIELDDISC YIELDMAT
     91 
     92 " CONTAINS is a vim syntax keyword and can't be a defined keyword
     93 syn match daxFunction "CONTAINS"
     94 
     95 " Numbers
     96 " integer number, or floating point number without a dot.
     97 syn match daxNumber "\<\d\+\>"
     98 " floating point number, with dot
     99 syn match daxNumber "\<\d\+\.\d*\>"
    100 
    101 syn match daxFloat "[-+]\=\<\d\+[eE][\-+]\=\d\+"
    102 syn match daxFloat "[-+]\=\<\d\+\.\d*\([eE][\-+]\=\d\+\)\="
    103 syn match daxFloat "[-+]\=\<\.\d\+\([eE][\-+]\=\d\+\)\="
    104 
    105 " String and Character constants
    106 syn region daxString start=+"+  end=+"+
    107 
    108 " DAX Table and Column names
    109 syn region daxTable start=+'+ms=s+1  end=+'+me=e-1
    110 syn region daxColumn matchgroup=daxParen start=/\[/ end=/\]/
    111 
    112 " Operators
    113 syn match daxOperator "+"
    114 syn match daxOperator "-"
    115 syn match daxOperator "*"
    116 syn match daxOperator "/"
    117 syn match daxOperator "\^"
    118 syn match daxOperator "\ NOT(\s\|\\)"
    119 syn match daxOperator "\ IN\ "
    120 syn match daxOperator "&&"
    121 syn match daxOperator "&"
    122 syn match daxOperator "\\|\\|"
    123 syn match daxOperator "[<>]=\="
    124 syn match daxOperator "<>"
    125 syn match daxOperator "="
    126 syn match daxOperator ">"
    127 syn match daxOperator "<"
    128 
    129 " Comments
    130 syn region daxComment start="\(^\|\s\)\//"   end="$" contains=daxTodo
    131 syn region daxComment start="/\*"  end="\*/" contains=daxTodo
    132 
    133 " Define highlighting
    134 hi def link daxComment          Comment
    135 hi def link daxNumber           Number
    136 hi def link daxFloat            Float
    137 hi def link daxString           String
    138 hi def link daxStatement        Keyword
    139 hi def link daxOperator         Operator
    140 hi def link daxFunction         Function
    141 hi def link daxTable            Number
    142 hi def link daxColumn           Statement
    143 hi def link daxParen            Delimiter
    144 hi def link daxTodo             Todo
    145 
    146 let b:current_syntax = "dax"
    147 
    148 let &cpo = s:keepcpo
    149 unlet! s:keepcpo
    150 
    151 " vim: ts=8