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