mirror of
https://github.com/vim/vim.git
synced 2025-07-04 23:07:33 -04:00
338 lines
16 KiB
VimL
338 lines
16 KiB
VimL
|
" 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
|