patch 9.1.1268: filetype: dax files are not recognized

Problem:  filetype: dax files are not recognized
Solution: detect "*.dax" as dax filetype, include dax filetype and
          syntax plugin (Anarion Dunedain)

Data Analysis Expressions (DAX) is a formula expression language used in
Analysis Services, Power BI, and Power Pivot in Excel. DAX formulas
include functions, operators, and values to perform advanced
calculations and queries on data in related tables and columns in
tabular data models.

DAX language overview:
- https://learn.microsoft.com/en-us/dax/dax-overview

closes: #17035

Signed-off-by: Anarion Dunedain <anarion80@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS
index 1c0861b..f233b39 100644
--- a/.github/MAINTAINERS
+++ b/.github/MAINTAINERS
@@ -149,6 +149,7 @@
 runtime/ftplugin/cucumber.vim		@tpope
 runtime/ftplugin/cuda.vim		@ribru17
 runtime/ftplugin/dart.vim	@ribru17
+runtime/ftplugin/dax.vim		@anarion80
 runtime/ftplugin/deb822sources.vim	@jamessan
 runtime/ftplugin/debchangelog.vim	@jamessan
 runtime/ftplugin/debcontrol.vim		@jamessan
@@ -457,6 +458,7 @@
 runtime/syntax/d.vim			@JesseKPhillips
 runtime/syntax/dart.vim			@pr3d4t0r
 runtime/syntax/datascript.vim		@dpelle
+runtime/syntax/dax.vim			@anarion80
 runtime/syntax/deb822sources.vim	@jamessan
 runtime/syntax/debchangelog.vim		@jamessan
 runtime/syntax/debcontrol.vim		@jamessan
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 4e386e9..e767305 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -561,6 +561,9 @@
 " Cue
 au BufNewFile,BufRead *.cue			setf cue
 
+" DAX
+au BufNewFile,BufRead *.dax			setf dax
+
 " Debian devscripts
 au BufNewFile,BufRead devscripts.conf,.devscripts	setf sh
 
diff --git a/runtime/ftplugin/dax.vim b/runtime/ftplugin/dax.vim
new file mode 100644
index 0000000..e5783f0
--- /dev/null
+++ b/runtime/ftplugin/dax.vim
@@ -0,0 +1,16 @@
+" Vim filetype plugin
+" Language: Data Analysis Expressions (DAX)
+" Maintainer: Anarion Dunedain <anarion80@gmail.com>
+" Last Change: 2025 Apr 2
+
+if exists('b:did_ftplugin')
+  finish
+endif
+
+let b:did_ftplugin = 1
+
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+
+setlocal commentstring=//\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/syntax/dax.vim b/runtime/syntax/dax.vim
new file mode 100644
index 0000000..12e54ee
--- /dev/null
+++ b/runtime/syntax/dax.vim
@@ -0,0 +1,151 @@
+" 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
diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim
index 531c500..6a9b2b0 100644
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -213,6 +213,7 @@
     dafny: ['file.dfy'],
     dart: ['file.dart', 'file.drt'],
     datascript: ['file.ds'],
+    dax: ['file.dax'],
     dcd: ['file.dcd'],
     deb822sources: ['/etc/apt/sources.list.d/file.sources', 'any/etc/apt/sources.list.d/file.sources'],
     debchangelog: ['changelog.Debian', 'changelog.dch', 'NEWS.Debian', 'NEWS.dch', '/debian/changelog'],
diff --git a/src/version.c b/src/version.c
index 47104ef..192fd0f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1268,
+/**/
     1267,
 /**/
     1266,