1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337
|
" Vim syntax file
" Language: Power Query M
" Maintainer: Anarion Dunedain <anarion80@gmail.com>
" Last Change:
" 2025 Apr 03 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 Power Query functions with dot or hash in the name
setlocal iskeyword+=.
setlocal iskeyword+=#
setlocal foldmethod=syntax
setlocal foldtext=getline(v:foldstart)
" DAX is case sensitive
syn case match
" Any Power Query identifier
syn match pqIdentifier "\<[a-zA-Z0-9$_#]*\>"
" Fold on parenthesis
syn region pqParenthesisFold start="(" end=")" transparent fold
" Power Query keywords
syn keyword pqKeyword section sections shared
syn region pqKeyword start="\<let\>\c" end="\<in\>\c\%(\_s*$\)"me=s-2 transparent fold keepend containedin=ALLBUT,pqString,pqComment
" Power Query types
syn keyword pqType null logical number time date datetime datetimezone duration text binary type list record table function anynonnull none
" Power Query conditionals
syn keyword pqConditional if then else each
" Power Query constants
syn keyword pqConstant
\ Number.E Number.Epsilon Number.NaN
\ Number.NegativeInfinity Number.PI Number.PositiveInfinity
" TODO
syn keyword pqTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
" Numbers
" integer number, or floating point number without a dot.
syn match pqNumber "\<\d\+\>"
" floating point number, with dot
syn match pqNumber "\<\d\+\.\d*\>"
syn match pqFloat "[-+]\=\<\d\+[eE][\-+]\=\d\+"
syn match pqFloat "[-+]\=\<\d\+\.\d*\([eE][\-+]\=\d\+\)\="
syn match pqFloat "[-+]\=\<\.\d\+\([eE][\-+]\=\d\+\)\="
" String and Character constants
syn region pqString start=+"+ end=+"+
" Power Query Record
syn region pqRecord matchgroup=pqParen start=/\[/ end=/\]/ contains=ALLBUT,pqIdentifier
" Power Query List
syn region pqList matchgroup=pqParen start=/{/ end=/}/ contains=ALLBUT,pqIdentifier
" Operators
syn match pqOperator "+"
syn match pqOperator "-"
syn match pqOperator "*"
syn match pqOperator "/"
syn match pqOperator "\<\(NOT\|AND\|OR\|AS\|IS\|META\)\>\c"
syn match pqOperator "??"
syn match pqOperator "&&"
syn match pqOperator "&"
syn match pqOperator "[<>]=\="
syn match pqOperator "<>"
syn match pqOperator "="
syn match pqOperator ">"
syn match pqOperator "<"
" Comments
syn region pqComment start="\(^\|\s\)\//" end="$" contains=pqTodo
syn region pqComment start="/\*" end="\*/" contains=pqTodo
" Power Query functions
syn keyword pqFunction
\ #binary #date #datetime #datetimezone #duration #table #time
\ Access.Database AccessControlEntry.ConditionToIdentities Action.WithErrorContext
\ ActiveDirectory.Domains AdoDotNet.DataSource AdoDotNet.Query AdobeAnalytics.Cubes
\ AnalysisServices.Database AnalysisServices.Databases AzureStorage.BlobContents
\ AzureStorage.Blobs AzureStorage.DataLake AzureStorage.DataLakeContents
\ AzureStorage.Tables Binary.ApproximateLength Binary.Buffer
\ Binary.Combine Binary.Compress Binary.Decompress
\ Binary.From Binary.FromList Binary.FromText
\ Binary.InferContentType Binary.Length Binary.Range
\ Binary.Split Binary.ToList Binary.ToText
\ Binary.View Binary.ViewError Binary.ViewFunction
\ BinaryFormat.7BitEncodedSignedInteger BinaryFormat.7BitEncodedUnsignedInteger BinaryFormat.Binary
\ BinaryFormat.Byte BinaryFormat.ByteOrder BinaryFormat.Choice
\ BinaryFormat.Decimal BinaryFormat.Double BinaryFormat.Group
\ BinaryFormat.Length BinaryFormat.List BinaryFormat.Null
\ BinaryFormat.Record BinaryFormat.SignedInteger16 BinaryFormat.SignedInteger32
\ BinaryFormat.SignedInteger64 BinaryFormat.Single BinaryFormat.Text
\ BinaryFormat.Transform BinaryFormat.UnsignedInteger16 BinaryFormat.UnsignedInteger32
\ BinaryFormat.UnsignedInteger64 Byte.From Byte.Type Cdm.Contents
\ Character.FromNumber Character.ToNumber Combiner.CombineTextByDelimiter
\ Combiner.CombineTextByEachDelimiter Combiner.CombineTextByLengths Combiner.CombineTextByPositions
\ Combiner.CombineTextByRanges Comparer.Equals Comparer.FromCulture
\ Comparer.Ordinal Comparer.OrdinalIgnoreCase Csv.Document
\ Cube.AddAndExpandDimensionColumn Cube.AddMeasureColumn Cube.ApplyParameter
\ Cube.AttributeMemberId Cube.AttributeMemberProperty Cube.CollapseAndRemoveColumns
\ Cube.Dimensions Cube.DisplayFolders Cube.MeasureProperties
\ Cube.MeasureProperty Cube.Measures Cube.Parameters
\ Cube.Properties Cube.PropertyKey Cube.ReplaceDimensions
\ Cube.Transform Currency.From Currency.Type DB2.Database
\ Date.AddDays Date.AddMonths Date.AddQuarters
\ Date.AddWeeks Date.AddYears Date.Day
\ Date.DayOfWeek Date.DayOfWeekName Date.DayOfYear
\ Date.DaysInMonth Date.EndOfDay Date.EndOfMonth
\ Date.EndOfQuarter Date.EndOfWeek Date.EndOfYear
\ Date.From Date.FromText Date.IsInCurrentDay
\ Date.IsInCurrentMonth Date.IsInCurrentQuarter Date.IsInCurrentWeek
\ Date.IsInCurrentYear Date.IsInNextDay Date.IsInNextMonth
\ Date.IsInNextNDays Date.IsInNextNMonths Date.IsInNextNQuarters
\ Date.IsInNextNWeeks Date.IsInNextNYears Date.IsInNextQuarter
\ Date.IsInNextWeek Date.IsInNextYear Date.IsInPreviousDay
\ Date.IsInPreviousMonth Date.IsInPreviousNDays Date.IsInPreviousNMonths
\ Date.IsInPreviousNQuarters Date.IsInPreviousNWeeks Date.IsInPreviousNYears
\ Date.IsInPreviousQuarter Date.IsInPreviousWeek Date.IsInPreviousYear
\ Date.IsInYearToDate Date.IsLeapYear Date.Month
\ Date.MonthName Date.QuarterOfYear Date.StartOfDay
\ Date.StartOfMonth Date.StartOfQuarter Date.StartOfWeek
\ Date.StartOfYear Date.ToRecord Date.ToText
\ Date.WeekOfMonth Date.WeekOfYear Date.Year
\ DateTime.AddZone DateTime.Date DateTime.FixedLocalNow
\ DateTime.From DateTime.FromFileTime DateTime.FromText
\ DateTime.IsInCurrentHour DateTime.IsInCurrentMinute DateTime.IsInCurrentSecond
\ DateTime.IsInNextHour DateTime.IsInNextMinute DateTime.IsInNextNHours
\ DateTime.IsInNextNMinutes DateTime.IsInNextNSeconds DateTime.IsInNextSecond
\ DateTime.IsInPreviousHour DateTime.IsInPreviousMinute DateTime.IsInPreviousNHours
\ DateTime.IsInPreviousNMinutes DateTime.IsInPreviousNSeconds DateTime.IsInPreviousSecond
\ DateTime.LocalNow DateTime.Time DateTime.ToRecord
\ DateTime.ToText DateTimeZone.FixedLocalNow DateTimeZone.FixedUtcNow
\ DateTimeZone.From DateTimeZone.FromFileTime DateTimeZone.FromText
\ DateTimeZone.LocalNow DateTimeZone.RemoveZone DateTimeZone.SwitchZone
\ DateTimeZone.ToLocal DateTimeZone.ToRecord DateTimeZone.ToText
\ DateTimeZone.ToUtc DateTimeZone.UtcNow DateTimeZone.ZoneHours
\ DateTimeZone.ZoneMinutes Decimal.From Decimal.Type DeltaLake.Metadata
\ DeltaLake.Table Diagnostics.ActivityId Diagnostics.CorrelationId
\ Diagnostics.Trace DirectQueryCapabilities.From Double.From Double.Type
\ Duration.Days Duration.From Duration.FromText
\ Duration.Hours Duration.Minutes Duration.Seconds
\ Duration.ToRecord Duration.ToText Duration.TotalDays
\ Duration.TotalHours Duration.TotalMinutes Duration.TotalSeconds
\ Embedded.Value Error.Record Essbase.Cubes
\ Excel.CurrentWorkbook Excel.ShapeTable Excel.Workbook
\ Exchange.Contents Expression.Constant Expression.Evaluate
\ Expression.Identifier File.Contents Folder.Contents
\ Folder.Files Function.From Function.Invoke
\ Function.InvokeAfter Function.InvokeWithErrorContext Function.IsDataSource
\ Function.ScalarVector Geography.FromWellKnownText Geography.ToWellKnownText
\ GeographyPoint.From Geometry.FromWellKnownText Geometry.ToWellKnownText
\ GeometryPoint.From GoogleAnalytics.Accounts Graph.Nodes
\ Guid.From Guid.Type HdInsight.Containers HdInsight.Contents
\ HdInsight.Files Hdfs.Contents Hdfs.Files
\ Html.Table Identity.From Identity.IsMemberOf
\ IdentityProvider.Default Informix.Database Int16.From Int16.Type
\ Int32.From Int32.Type Int64.From Int64.Type Int8.From Int8.Type
\ ItemExpression.From ItemExpression.Item Json.Document
\ Json.FromValue Json.FromValue Lines.FromBinary
\ Lines.FromText Lines.ToBinary Lines.ToText
\ List.Accumulate List.AllTrue List.Alternate
\ List.AnyTrue List.Average List.Buffer
\ List.Combine List.ConformToPageReader List.Contains
\ List.ContainsAll List.ContainsAny List.Count
\ List.Covariance List.DateTimeZones List.DateTimes
\ List.Dates List.Difference List.Distinct
\ List.Durations List.FindText List.First
\ List.FirstN List.Generate List.InsertRange
\ List.Intersect List.IsDistinct List.IsEmpty
\ List.Last List.LastN List.MatchesAll
\ List.MatchesAny List.Max List.MaxN
\ List.Median List.Min List.MinN
\ List.Mode List.Modes List.NonNullCount
\ List.Numbers List.Percentile List.PositionOf
\ List.PositionOfAny List.Positions List.Product
\ List.Random List.Range List.RemoveFirstN
\ List.RemoveItems List.RemoveLastN List.RemoveMatchingItems
\ List.RemoveNulls List.RemoveRange List.Repeat
\ List.ReplaceMatchingItems List.ReplaceRange List.ReplaceValue
\ List.Reverse List.Select List.Single
\ List.SingleOrDefault List.Skip List.Sort
\ List.Split List.StandardDeviation List.Sum
\ List.Times List.Transform List.TransformMany
\ List.Union List.Zip Logical.From
\ Logical.FromText Logical.ToText Module.Versions
\ MySQL.Database Number.Abs Number.Acos
\ Number.Asin Number.Atan Number.Atan2
\ Number.BitwiseAnd Number.BitwiseNot Number.BitwiseOr
\ Number.BitwiseShiftLeft Number.BitwiseShiftRight Number.BitwiseXor
\ Number.Combinations Number.Cos Number.Cosh
\ Number.Exp Number.Factorial Number.From
\ Number.FromText Number.IntegerDivide Number.IsEven
\ Number.IsNaN Number.IsOdd Number.Ln
\ Number.Log Number.Log10 Number.Mod
\ Number.Permutations Number.Power Number.Random
\ Number.RandomBetween Number.Round Number.RoundAwayFromZero
\ Number.RoundDown Number.RoundTowardZero Number.RoundUp
\ Number.Sign Number.Sin Number.Sinh
\ Number.Sqrt Number.Tan Number.Tanh
\ Number.ToText Number.Type OData.Feed Odbc.DataSource
\ Odbc.InferOptions Odbc.Query OleDb.DataSource
\ OleDb.Query Oracle.Database Pdf.Tables
\ Percentage.From Percentage.Type PostgreSQL.Database Progress.DataSourceProgress
\ RData.FromBinary Record.AddField Record.Combine
\ Record.Field Record.FieldCount Record.FieldNames
\ Record.FieldOrDefault Record.FieldValues Record.FromList
\ Record.FromTable Record.HasFields Record.RemoveFields
\ Record.RenameFields Record.ReorderFields Record.SelectFields
\ Record.ToList Record.ToTable Record.TransformFields Record.Type
\ Replacer.ReplaceText Replacer.ReplaceValue RowExpression.Column
\ RowExpression.From RowExpression.Row Salesforce.Data
\ Salesforce.Reports SapBusinessWarehouse.Cubes SapHana.Database
\ SharePoint.Contents SharePoint.Files SharePoint.Tables
\ Single.From Single.Type Soda.Feed Splitter.SplitByNothing
\ Splitter.SplitTextByAnyDelimiter Splitter.SplitTextByCharacterTransition Splitter.SplitTextByDelimiter
\ Splitter.SplitTextByEachDelimiter Splitter.SplitTextByLengths Splitter.SplitTextByPositions
\ Splitter.SplitTextByRanges Splitter.SplitTextByRepeatedLengths Splitter.SplitTextByWhitespace
\ Sql.Database Sql.Databases SqlExpression.SchemaFrom
\ SqlExpression.ToExpression Sybase.Database Table.AddColumn
\ Table.AddFuzzyClusterColumn Table.AddIndexColumn Table.AddJoinColumn
\ Table.AddKey Table.AddRankColumn Table.AggregateTableColumn
\ Table.AlternateRows Table.ApproximateRowCount Table.Buffer
\ Table.Column Table.ColumnCount Table.ColumnNames
\ Table.ColumnsOfType Table.Combine Table.CombineColumns
\ Table.CombineColumnsToRecord Table.ConformToPageReader Table.Contains
\ Table.ContainsAll Table.ContainsAny Table.DemoteHeaders
\ Table.Distinct Table.DuplicateColumn Table.ExpandListColumn
\ Table.ExpandRecordColumn Table.ExpandTableColumn Table.FillDown
\ Table.FillUp Table.FilterWithDataTable Table.FindText
\ Table.First Table.FirstN Table.FirstValue
\ Table.FromColumns Table.FromList Table.FromPartitions
\ Table.FromRecords Table.FromRows Table.FromValue
\ Table.FuzzyGroup Table.FuzzyJoin Table.FuzzyNestedJoin
\ Table.Group Table.HasColumns Table.InsertRows
\ Table.IsDistinct Table.IsEmpty Table.Join
\ Table.Keys Table.Last Table.LastN
\ Table.MatchesAllRows Table.MatchesAnyRows Table.Max
\ Table.MaxN Table.Min Table.MinN
\ Table.NestedJoin Table.Partition Table.PartitionValues
\ Table.PartitionValues Table.Pivot Table.PositionOf
\ Table.PositionOfAny Table.PrefixColumns Table.Profile
\ Table.PromoteHeaders Table.Range Table.RemoveColumns
\ Table.RemoveFirstN Table.RemoveLastN Table.RemoveMatchingRows
\ Table.RemoveRows Table.RemoveRowsWithErrors Table.RenameColumns
\ Table.ReorderColumns Table.Repeat Table.ReplaceErrorValues
\ Table.ReplaceKeys Table.ReplaceMatchingRows Table.ReplaceRelationshipIdentity
\ Table.ReplaceRows Table.ReplaceValue Table.ReverseRows
\ Table.RowCount Table.Schema Table.SelectColumns
\ Table.SelectRows Table.SelectRowsWithErrors Table.SingleRow
\ Table.Skip Table.Sort Table.Split
\ Table.SplitAt Table.SplitColumn Table.StopFolding
\ Table.ToColumns Table.ToList Table.ToRecords
\ Table.ToRows Table.TransformColumnNames Table.TransformColumnTypes
\ Table.TransformColumns Table.TransformRows Table.Transpose
\ Table.Unpivot Table.UnpivotOtherColumns Table.View
\ Table.ViewError Table.ViewFunction Table.WithErrorContext
\ Tables.GetRelationships Teradata.Database Text.AfterDelimiter
\ Text.At Text.BeforeDelimiter Text.BetweenDelimiters
\ Text.Clean Text.Combine Text.Contains
\ Text.End Text.EndsWith Text.From
\ Text.FromBinary Text.InferNumberType Text.Insert
\ Text.Length Text.Lower Text.Middle
\ Text.NewGuid Text.PadEnd Text.PadStart
\ Text.PositionOf Text.PositionOfAny Text.Proper
\ Text.Range Text.Remove Text.RemoveRange
\ Text.Repeat Text.Replace Text.ReplaceRange
\ Text.Reverse Text.Select Text.Split
\ Text.SplitAny Text.Start Text.StartsWith
\ Text.ToBinary Text.ToList Text.Trim
\ Text.TrimEnd Text.TrimStart Text.Upper
\ Time.EndOfHour Time.From Time.FromText
\ Time.Hour Time.Minute Time.Second
\ Time.StartOfHour Time.ToRecord Time.ToText
\ Type.AddTableKey Type.ClosedRecord Type.Facets
\ Type.ForFunction Type.ForRecord Type.FunctionParameters
\ Type.FunctionRequiredParameters Type.FunctionReturn Type.Is
\ Type.IsNullable Type.IsOpenRecord Type.ListItem
\ Type.NonNullable Type.OpenRecord Type.RecordFields
\ Type.ReplaceFacets Type.ReplaceTableKeys Type.TableColumn
\ Type.TableKeys Type.TableRow Type.TableSchema
\ Type.Union Uri.BuildQueryString Uri.Combine
\ Uri.EscapeDataString Uri.Parts Value.Add
\ Value.Alternates Value.As Value.Compare
\ Value.Divide Value.Equals Value.Expression
\ Value.Firewall Value.FromText Value.Is
\ Value.Lineage Value.Metadata Value.Multiply
\ Value.NativeQuery Value.NullableEquals Value.Optimize
\ Value.RemoveMetadata Value.ReplaceMetadata Value.ReplaceType
\ Value.Subtract Value.Traits Value.Type
\ Value.VersionIdentity Value.Versions Value.ViewError
\ Value.ViewFunction Variable.Value Web.BrowserContents
\ Web.Contents Web.Headers Web.Page
\ WebAction.Request Xml.Document Xml.Tables
" Fold on let/in
" syn region pqLetFold start="\<let\>\c" end="\<in\>\c" transparent fold
" Define highlighting
hi def link pqComment Comment
hi def link pqNumber Number
hi def link pqFloat Float
hi def link pqString String
hi def link pqKeyword Keyword
hi def link pqOperator Operator
hi def link pqFunction Delimiter
hi def link pqTable Number
hi def link pqRecord Statement
hi def link pqList Delimiter
hi def link pqParen Delimiter
hi def link pqTodo Todo
hi def link pqConditional Conditional
hi def link pqNull Const
hi def link pqType Type
hi def link pqIdentifier Number
hi def link pqConstant Constant
hi def link pqLetFold Constant
let b:current_syntax = "pq"
let &cpo = s:keepcpo
unlet! s:keepcpo
" vim: ts=8
|