forked from aniani/vim
		
	
		
			
	
	
		
			152 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			152 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim syntax file | ||
|  | " Language:     Data Analysis Expressions (DAX) | ||
|  | " Maintainer:   Anarion Dunedain <anarion80@gmail.com> | ||
|  | " Last Change: | ||
|  | "   2025 Mar 28  First version | ||
|  | 
 | ||
|  | " quit when a syntax file was already loaded | ||
|  | if exists("b:current_syntax") | ||
|  |         finish | ||
|  | endif | ||
|  | let s:keepcpo = &cpo | ||
|  | set cpo&vim | ||
|  | 
 | ||
|  | " There are DAX functions with dot in the name (like VARX.S) | ||
|  | setlocal iskeyword+=. | ||
|  | " DAX is case insensitive | ||
|  | syn case ignore | ||
|  | 
 | ||
|  | " DAX statements | ||
|  | syn keyword daxStatement DEFINE EVALUATE MEASURE RETURN VAR | ||
|  | syn match daxStatement "ORDER\ BY" | ||
|  | syn match daxStatement "START\ AT" | ||
|  | 
 | ||
|  | " TODO | ||
|  | syn keyword daxTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained | ||
|  | 
 | ||
|  | " DAX functions | ||
|  | syn keyword daxFunction | ||
|  |   \ ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH | ||
|  |   \ ADDCOLUMNS ADDMISSINGITEMS ALL ALLCROSSFILTERED ALLEXCEPT ALLNOBLANKROW ALLSELECTED | ||
|  |   \ AMORDEGRC AMORLINC AND APPROXIMATEDISTINCTCOUNT ASIN ASINH ATAN | ||
|  |   \ ATANH AVERAGE AVERAGEA AVERAGEX BETA.DIST BETA.INV BITAND | ||
|  |   \ BITLSHIFT BITOR BITRSHIFT BITXOR BLANK CALCULATE CALCULATETABLE | ||
|  |   \ CALENDAR CALENDARAUTO CEILING CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT | ||
|  |   \ CLOSINGBALANCEMONTH CLOSINGBALANCEQUARTER CLOSINGBALANCEYEAR COALESCE COLUMNSTATISTICS COMBIN COMBINA | ||
|  |   \ COMBINEVALUES CONCATENATE CONCATENATEX CONFIDENCE.NORM CONFIDENCE.T CONTAINSROW | ||
|  |   \ CONTAINSSTRING CONTAINSSTRINGEXACT CONVERT COS COSH COT COTH | ||
|  |   \ COUNT COUNTA COUNTAX COUNTBLANK COUNTROWS COUNTX COUPDAYBS | ||
|  |   \ COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD CROSSFILTER CROSSJOIN | ||
|  |   \ CUMIPMT CUMPRINC CURRENCY CURRENTGROUP CUSTOMDATA DATATABLE DATE | ||
|  |   \ DATEADD DATEDIFF DATESBETWEEN DATESINPERIOD DATESMTD DATESQTD DATESYTD | ||
|  |   \ DATEVALUE DAY DB DDB DEGREES DETAILROWS DISC | ||
|  |   \ DISTINCT column DISTINCT table DISTINCTCOUNT DISTINCTCOUNTNOBLANK DIVIDE DOLLARDE DOLLARFR | ||
|  |   \ DURATION EARLIER EARLIEST EDATE EFFECT ENDOFMONTH ENDOFQUARTER | ||
|  |   \ ENDOFYEAR EOMONTH ERROR EVALUATEANDLOG EVEN EXACT EXCEPT | ||
|  |   \ EXP EXPON.DIST FACT FALSE FILTER FILTERS FIND | ||
|  |   \ FIRST FIRSTDATE FIXED FLOOR FORMAT FV GCD | ||
|  |   \ GENERATE GENERATEALL GENERATESERIES GEOMEAN GEOMEANX GROUPBY HASONEFILTER | ||
|  |   \ HASONEVALUE HOUR IF IF.EAGER IFERROR IGNORE INDEX | ||
|  |   \ INFO.ALTERNATEOFDEFINITIONS INFO.ANNOTATIONS INFO.ATTRIBUTEHIERARCHIES INFO.ATTRIBUTEHIERARCHYSTORAGES INFO.CALCDEPENDENCY INFO.CALCULATIONGROUPS INFO.CALCULATIONITEMS | ||
|  |   \ INFO.CATALOGS INFO.CHANGEDPROPERTIES INFO.COLUMNPARTITIONSTORAGES INFO.COLUMNPERMISSIONS INFO.COLUMNS INFO.COLUMNSTORAGES INFO.CSDLMETADATA | ||
|  |   \ INFO.CULTURES INFO.DATACOVERAGEDEFINITIONS INFO.DATASOURCES INFO.DELTATABLEMETADATASTORAGES INFO.DEPENDENCIES INFO.DETAILROWSDEFINITIONS INFO.DICTIONARYSTORAGES | ||
|  |   \ INFO.EXCLUDEDARTIFACTS INFO.EXPRESSIONS INFO.EXTENDEDPROPERTIES INFO.FORMATSTRINGDEFINITIONS INFO.FUNCTIONS INFO.GENERALSEGMENTMAPSEGMENTMETADATASTORAGES INFO.GROUPBYCOLUMNS | ||
|  |   \ INFO.HIERARCHIES INFO.HIERARCHYSTORAGES INFO.KPIS INFO.LEVELS INFO.LINGUISTICMETADATA INFO.MEASURES INFO.MODEL | ||
|  |   \ INFO.OBJECTTRANSLATIONS INFO.PARQUETFILESTORAGES INFO.PARTITIONS INFO.PARTITIONSTORAGES INFO.PERSPECTIVECOLUMNS INFO.PERSPECTIVEHIERARCHIES INFO.PERSPECTIVEMEASURES | ||
|  |   \ INFO.PERSPECTIVES INFO.PERSPECTIVETABLES INFO.PROPERTIES INFO.QUERYGROUPS INFO.REFRESHPOLICIES INFO.RELATEDCOLUMNDETAILS INFO.RELATIONSHIPINDEXSTORAGES | ||
|  |   \ INFO.RELATIONSHIPS INFO.RELATIONSHIPSTORAGES INFO.ROLEMEMBERSHIPS INFO.ROLES INFO.SEGMENTMAPSTORAGES INFO.SEGMENTSTORAGES INFO.STORAGEFILES | ||
|  |   \ INFO.STORAGEFOLDERS INFO.STORAGETABLECOLUMNS INFO.STORAGETABLECOLUMNSEGMENTS INFO.STORAGETABLES INFO.TABLEPERMISSIONS INFO.TABLES INFO.TABLESTORAGES | ||
|  |   \ INFO.VARIATIONS INFO.VIEW.COLUMNS INFO.VIEW.MEASURES INFO.VIEW.RELATIONSHIPS INFO.VIEW.TABLES INT INTERSECT | ||
|  |   \ INTRATE IPMT ISAFTER ISBLANK ISCROSSFILTERED ISEMPTY ISERROR | ||
|  |   \ ISEVEN ISFILTERED ISINSCOPE ISLOGICAL ISNONTEXT ISNUMBER ISO.CEILING | ||
|  |   \ ISODD ISONORAFTER ISPMT ISSELECTEDMEASURE ISSUBTOTAL ISTEXT KEEPFILTERS | ||
|  |   \ LAST LASTDATE LCM LEFT LEN LINEST LINESTX | ||
|  |   \ LN LOG LOG10 LOOKUPVALUE LOWER MATCHBY MAX | ||
|  |   \ MAXA MAXX MDURATION MEDIAN MEDIANX MID MIN | ||
|  |   \ MINA MINUTE MINX MOD MONTH MOVINGAVERAGE MROUND | ||
|  |   \ NATURALINNERJOIN NATURALLEFTOUTERJOIN NETWORKDAYS NEXT NEXTDAY NEXTMONTH NEXTQUARTER | ||
|  |   \ NEXTYEAR NOMINAL NONVISUAL NORM.DIST NORM.INV NORM.S.DIST NORM.S.INV | ||
|  |   \ NOT NOW NPER ODD ODDFPRICE ODDFYIELD ODDLPRICE | ||
|  |   \ ODDLYIELD OFFSET OPENINGBALANCEMONTH OPENINGBALANCEQUARTER OPENINGBALANCEYEAR OR ORDERBY | ||
|  |   \ PARALLELPERIOD PARTITIONBY PATH PATHCONTAINS PATHITEM PATHITEMREVERSE PATHLENGTH | ||
|  |   \ PDURATION PERCENTILE.EXC PERCENTILE.INC PERCENTILEX.EXC PERCENTILEX.INC PERMUT PI | ||
|  |   \ PMT POISSON.DIST POWER PPMT PREVIOUS PREVIOUSDAY PREVIOUSMONTH | ||
|  |   \ PREVIOUSQUARTER PREVIOUSYEAR PRICE PRICEDISC PRICEMAT PRODUCT PRODUCTX | ||
|  |   \ PV QUARTER QUOTIENT RADIANS RAND RANDBETWEEN RANGE | ||
|  |   \ RANK RANK.EQ RANKX RATE RECEIVED RELATED RELATEDTABLE | ||
|  |   \ REMOVEFILTERS REPLACE REPT RIGHT ROLLUP ROLLUPADDISSUBTOTAL ROLLUPGROUP | ||
|  |   \ ROLLUPISSUBTOTAL ROUND ROUNDDOWN ROUNDUP ROW ROWNUMBER RRI | ||
|  |   \ RUNNINGSUM SAMEPERIODLASTYEAR SAMPLE SEARCH SECOND SELECTCOLUMNS SELECTEDMEASURE | ||
|  |   \ SELECTEDMEASUREFORMATSTRING SELECTEDMEASURENAME SELECTEDVALUE SIGN SIN SINH SLN | ||
|  |   \ SQRT SQRTPI STARTOFMONTH STARTOFQUARTER STARTOFYEAR STDEV.P STDEV.S | ||
|  |   \ STDEVX.P STDEVX.S SUBSTITUTE SUBSTITUTEWITHINDEX SUM SUMMARIZE SUMMARIZECOLUMNS | ||
|  |   \ SUMX SWITCH SYD T.DIST T.DIST.2T T.DIST.RT T.INV | ||
|  |   \ T.INV.2t TAN TANH TBILLEQ TBILLPRICE TBILLYIELD TIME | ||
|  |   \ TIMEVALUE TOCSV TODAY TOJSON TOPN TOTALMTD TOTALQTD | ||
|  |   \ TOTALYTD TREATAS TRIM TRUE TRUNC Table Constructor UNICHAR | ||
|  |   \ UNICODE UNION UPPER USERCULTURE USERELATIONSHIP USERNAME USEROBJECTID | ||
|  |   \ USERPRINCIPALNAME UTCNOW UTCTODAY VALUE VALUES VAR.P VAR.S | ||
|  |   \ VARX.P VARX.S VDB WEEKDAY WEEKNUM WINDOW XIRR | ||
|  |   \ XNPV YEAR YEARFRAC YIELD YIELDDISC YIELDMAT | ||
|  | 
 | ||
|  | " CONTAINS is a vim syntax keyword and can't be a defined keyword | ||
|  | syn match daxFunction "CONTAINS" | ||
|  | 
 | ||
|  | " Numbers | ||
|  | " integer number, or floating point number without a dot. | ||
|  | syn match daxNumber "\<\d\+\>" | ||
|  | " floating point number, with dot | ||
|  | syn match daxNumber "\<\d\+\.\d*\>" | ||
|  | 
 | ||
|  | syn match daxFloat "[-+]\=\<\d\+[eE][\-+]\=\d\+" | ||
|  | syn match daxFloat "[-+]\=\<\d\+\.\d*\([eE][\-+]\=\d\+\)\=" | ||
|  | syn match daxFloat "[-+]\=\<\.\d\+\([eE][\-+]\=\d\+\)\=" | ||
|  | 
 | ||
|  | " String and Character constants | ||
|  | syn region daxString start=+"+  end=+"+ | ||
|  | 
 | ||
|  | " DAX Table and Column names | ||
|  | syn region daxTable start=+'+ms=s+1  end=+'+me=e-1 | ||
|  | syn region daxColumn matchgroup=daxParen start=/\[/ end=/\]/ | ||
|  | 
 | ||
|  | " Operators | ||
|  | syn match daxOperator "+" | ||
|  | syn match daxOperator "-" | ||
|  | syn match daxOperator "*" | ||
|  | syn match daxOperator "/" | ||
|  | syn match daxOperator "\^" | ||
|  | syn match daxOperator "\ NOT(\s\|\\)" | ||
|  | syn match daxOperator "\ IN\ " | ||
|  | syn match daxOperator "&&" | ||
|  | syn match daxOperator "&" | ||
|  | syn match daxOperator "\\|\\|" | ||
|  | syn match daxOperator "[<>]=\=" | ||
|  | syn match daxOperator "<>" | ||
|  | syn match daxOperator "=" | ||
|  | syn match daxOperator ">" | ||
|  | syn match daxOperator "<" | ||
|  | 
 | ||
|  | " Comments | ||
|  | syn region daxComment start="\(^\|\s\)\//"   end="$" contains=daxTodo | ||
|  | syn region daxComment start="/\*"  end="\*/" contains=daxTodo | ||
|  | 
 | ||
|  | " Define highlighting | ||
|  | hi def link daxComment          Comment | ||
|  | hi def link daxNumber           Number | ||
|  | hi def link daxFloat            Float | ||
|  | hi def link daxString           String | ||
|  | hi def link daxStatement        Keyword | ||
|  | hi def link daxOperator         Operator | ||
|  | hi def link daxFunction         Function | ||
|  | hi def link daxTable            Number | ||
|  | hi def link daxColumn           Statement | ||
|  | hi def link daxParen            Delimiter | ||
|  | hi def link daxTodo             Todo | ||
|  | 
 | ||
|  | let b:current_syntax = "dax" | ||
|  | 
 | ||
|  | let &cpo = s:keepcpo | ||
|  | unlet! s:keepcpo | ||
|  | 
 | ||
|  | " vim: ts=8 |