view runtime/syntax/framescript.vim @ 35308:22c03485f222 v9.1.0456

patch 9.1.0456: Left shift is incorrect with vartabstop and shiftwidth=0 Commit: https://github.com/vim/vim/commit/88d4f255b7b7a19bb4f6489e0ad0956e47d51fed Author: Gary Johnson <garyjohn@spocom.com> Date: Sat Jun 1 20:51:33 2024 +0200 patch 9.1.0456: Left shift is incorrect with vartabstop and shiftwidth=0 Problem: Left shift is incorrect with vartabstop and shiftwidth=0 Solution: make tabstop_at() function aware of shift direction (Gary Johnson) The problem was that with 'vartabstop' set and 'shiftwidth' equal 0, left shifts using << were shifting the line to the wrong column. The tabstop to the right of the first character in the line was being used as the shift amount instead of the tabstop to the left of that first character. The reason was that the tabstop_at() function always returned the value of the tabstop to the right of the given column and was not accounting for the direction of the shift. The solution was to make tabstop_at() aware of the direction of the shift and to choose the tabtop accordingly. A test was added to check this behavior and make sure it doesn't regress. While at it, also fix a few indentation/alignment issues. fixes: #14864 closes: #14887 Signed-off-by: Gary Johnson <garyjohn@spocom.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sat, 01 Jun 2024 21:00:03 +0200
parents 1218c5353e2b
children
line wrap: on
line source

" Vim syntax file
" Language:             FrameScript v4.0
" Previous Maintainer:  Nikolai Weibull <now@bitwi.se>
" Latest Revision:      2007-02-22

if exists("b:current_syntax")
  finish
endif

let s:cpo_save = &cpo
set cpo&vim

syn match   framescriptOperator
      \ '[+*/%=-]\|[><]=\=\|#[&|]'

syn keyword framescriptTodo
      \ contained
      \ TODO FIXME XXX NOTE

syn cluster framescriptCommentGroup
      \ contains=
      \   framescriptTodo,
      \   @Spell

syn match   framescriptComment
      \ display
      \ contains=@framescriptCommentGroup
      \ '//.*$'

syn region  framescriptComment
      \ contains=@framescriptCommentGroup
      \ matchgroup=framescriptCommentStart
      \ start='/\*'
      \ end='\*/'

syn case ignore

syn match   framescriptInclude
      \ display
      \ contains=framescriptIncluded
      \ "^\s*<#Include\>\s*'"

syn region  framescriptIncluded
      \ contained
      \ display
      \ start=+'+
      \ skip=+\\\\\|\\'+
      \ end=+'+

syn match   framescriptNumbers
      \ display
      \ transparent
      \ contains=
      \   framescriptInteger,
      \   framescriptReal,
      \   framescriptMetric,
      \   framescriptCharacter
      \ '\<\d\|\.\d'

syn keyword framescriptBoolean
      \ True False

syn match   framescriptInteger
      \ contained
      \ display
      \ '\d\+\>'

syn match   framescriptInteger
      \ contained
      \ display
      \ '\x\+H\>'

syn match   framescriptInteger
      \ contained
      \ display
      \ '[01]\+B\>'

syn match   framescriptReal
      \ contained
      \ display
      \ '\d\+\.\d*\|\.\d\+\>'

syn match   framescriptMetric
      \ contained
      \ display
      \ '\%(\d\+\%(\.\d*\)\=\|\.\d\+\)\%(pts\|in\|"\|cm\|mm\|pica\)\>'

syn match   framescriptCharacter
      \ contained
      \ display
      \ '\d\+S\>'

syn region  framescriptString
      \ contains=framescriptStringSpecialChar,@Spell
      \ start=+'+
      \ skip=+\\\\\|\\'+
      \ end=+'+

syn match   framescriptStringSpecialChar
      \ contained
      \ display
      \ "\\[\\']"

syn keyword framescriptConstant
      \ BackSlash
      \ CharCR
      \ CharLF
      \ CharTAB
      \ ClientDir
      \ ClientName
      \ FslVersionMajor
      \ FslVersionMinor
      \ InstallName
      \ InstalledScriptList
      \ MainScript
      \ NULL
      \ ObjEndOffset
      \ ProductRevision
      \ Quote
      \ ThisScript

syn keyword framescriptOperator
      \ not
      \ and
      \ or

syn keyword framescriptSessionVariables
      \ ErrorCode
      \ ErrorMsg
      \ DeclareVarMode
      \ PlatformEncodingMode

syn keyword framescriptStructure
      \ Event
      \ EndEvent

syn keyword framescriptStatement
      \ Sub
      \ EndSub
      \ Run
      \ Function
      \ EndFunction
      \ Set
      \ Add
      \ Apply
      \ CallClient
      \ Close
      \ Copy
      \ Cut
      \ DialogBox
      \ Delete
      \ Demote
      \ Display
      \ DocCompare
      \ Export
      \ Find
      \ LeaveLoop
      \ LeaveScript
      \ LeaveSub
      \ LoopNext
      \ Merge
      \ MsgBox
      \ Paste
      \ PopClipboard
      \ PushClipboard
      \ Read
      \ Replace
      \ Return
      \ Sort
      \ Split

syn keyword framescriptStatement
      \ nextgroup=framescriptApplySubStatement skipwhite skipempty
      \ Apply

syn keyword framescriptApplySubStatement
      \ contained
      \ Pagelayout
      \ TextProperties

syn keyword framescriptStatement
      \ nextgroup=framescriptClearSubStatement skipwhite skipempty
      \ Clear

syn keyword framescriptClearSubStatement
      \ contained
      \ ChangeBars
      \ Text

syn keyword framescriptStatement
      \ nextgroup=framescriptCloseSubStatement skipwhite skipempty
      \ Close

syn keyword framescriptCloseSubStatement
      \ contained
      \ Book
      \ Document
      \ TextFile

syn keyword framescriptStatement
      \ nextgroup=framescriptExecSubStatement skipwhite skipempty
      \ Exec

syn keyword framescriptExecSubStatement
      \ contained
      \ Compile
      \ Script
      \ Wait

syn keyword framescriptStatement
      \ nextgroup=framescriptExecuteSubStatement skipwhite skipempty
      \ Execute

syn keyword framescriptExecuteSubStatement
      \ contained
      \ FrameCommand
      \ Hypertext
      \ StartUndoCheckPoint
      \ EndUndoCheckPoint
      \ ClearUndoHistory

syn keyword framescriptStatement
      \ nextgroup=framescriptGenerateSubStatement skipwhite skipempty
      \ Generate

syn keyword framescriptGenerateSubStatement
      \ contained
      \ Bookfile

syn keyword framescriptStatement
      \ nextgroup=framescriptGetSubStatement skipwhite skipempty
      \ Get

syn keyword framescriptGetSubStatement
      \ contained
      \ Member
      \ Object
      \ String
      \ TextList
      \ TextProperties

syn keyword framescriptStatement
      \ nextgroup=framescriptImportSubStatement skipwhite skipempty
      \ Import

syn keyword framescriptImportSubStatement
      \ contained
      \ File
      \ Formats
      \ ElementDefs

syn keyword framescriptStatement
      \ nextgroup=framescriptInstallSubStatement skipwhite skipempty
      \ Install
      \ Uninstall

syn keyword framescriptInstallSubStatement
      \ contained
      \ ChangeBars
      \ Text

syn keyword framescriptStatement
      \ nextgroup=framescriptNewSubStatement skipwhite skipempty
      \ New

syn keyword framescriptNewSubStatement
      \ contained
      \ AFrame
      \ Footnote
      \ Marker
      \ TiApiClient
      \ Variable
      \ XRef
      \ FormatChangeList
      \ FormatRule
      \ FmtRuleClause
      \ Arc
      \ Ellipse
      \ Flow
      \ Group
      \ Inset
      \ Line
      \ Math
      \ Polygon
      \ Polyline
      \ Rectangle
      \ RoundRect
      \ TextFrame
      \ Textline
      \ UnanchoredFrame
      \ Command
      \ Menu
      \ MenuItemSeparator
      \ Book
      \ CharacterFormat
      \ Color
      \ ConditionFormat
      \ ElementDef
      \ FormatChangeList
      \ MarkerType
      \ MasterPage
      \ ParagraphFormat
      \ PgfFmt
      \ ReferencePAge
      \ RulingFormat
      \ TableFormat
      \ VariableFormat
      \ XRefFormat
      \ BodyPage
      \ BookComponent
      \ Paragraph
      \ Element
      \ Attribute
      \ AttributeDef
      \ AttributeList
      \ AttributeDefList
      \ ElementLoc
      \ ElementRange
      \ Table
      \ TableRows
      \ TableCols
      \ Text
      \ Integer
      \ Real
      \ Metric
      \ String
      \ Object
      \ TextLoc
      \ TextRange
      \ IntList
      \ UIntList
      \ MetricList
      \ StringList
      \ PointList
      \ TabList
      \ PropertyList
      \ LibVar
      \ ScriptVar
      \ SubVar
      \ TextFile

syn keyword framescriptStatement
      \ nextgroup=framescriptOpenSubStatement skipwhite skipempty
      \ Open

syn keyword framescriptOpenSubStatement
      \ contained
      \ Document
      \ Book
      \ TextFile

syn keyword framescriptStatement
      \ nextgroup=framescriptPrintSubStatement skipwhite skipempty
      \ Print

syn keyword framescriptPrintSubStatement
      \ contained
      \ Document
      \ Book

syn keyword framescriptStatement
      \ nextgroup=framescriptQuitSubStatement skipwhite skipempty
      \ Quit

syn keyword framescriptQuitSubStatement
      \ contained
      \ Session

syn keyword framescriptStatement
      \ nextgroup=framescriptRemoveSubStatement skipwhite skipempty
      \ Remove

syn keyword framescriptRemoveSubStatement
      \ contained
      \ Attribute
      \ CommandObject

syn keyword framescriptStatement
      \ nextgroup=framescriptSaveSubStatement skipwhite skipempty
      \ Save

syn keyword framescriptSaveSubStatement
      \ contained
      \ Document
      \ Book

syn keyword framescriptStatement
      \ nextgroup=framescriptSelectSubStatement skipwhite skipempty
      \ Select

syn keyword framescriptSelectSubStatement
      \ contained
      \ TableCells

syn keyword framescriptStatement
      \ nextgroup=framescriptStraddleSubStatement skipwhite skipempty
      \ Straddle

syn keyword framescriptStraddleSubStatement
      \ contained
      \ TableCells

syn keyword framescriptStatement
      \ nextgroup=framescriptUpdateSubStatement skipwhite skipempty
      \ Update

syn keyword framescriptUpdateSubStatement
      \ contained
      \ ReDisplay
      \ Formatting
      \ Hyphenating
      \ ResetEquationsSettings
      \ ResetRefFrames
      \ RestartPgfNums
      \ TextInset
      \ Variables
      \ XRefs
      \ Book

syn keyword framescriptStatement
      \ nextgroup=framescriptWriteSubStatement skipwhite skipempty
      \ Write

syn keyword framescriptUpdateSubStatement
      \ contained
      \ Console
      \ Display

syn keyword framescriptRepeat
      \ Loop
      \ EndLoop

syn keyword framescriptConditional
      \ If
      \ ElseIf
      \ Else
      \ EndIf

syn keyword framescriptType
      \ Local
      \ GlobalVar

let b:framescript_minlines = exists("framescript_minlines")
                         \ ? framescript_minlines : 15
exec "syn sync ccomment framescriptComment minlines=" . b:framescript_minlines

hi def link framescriptTodo                 Todo
hi def link framescriptComment              Comment
hi def link framescriptCommentStart         framescriptComment
hi def link framescriptInclude              Include
hi def link framescriptIncluded             String
hi def link framescriptBoolean              Boolean
hi def link framescriptNumber               Number
hi def link framescriptInteger              framescriptNumber
hi def link framescriptReal                 framescriptNumber
hi def link framescriptMetric               framescriptNumber
hi def link framescriptCharacter            framescriptNumber
hi def link framescriptString               String
hi def link framescriptStringSpecialChar    SpecialChar
hi def link framescriptConstant             Constant
hi def link framescriptOperator             None
hi def link framescriptSessionVariables     PreProc
hi def link framescriptStructure            Structure
hi def link framescriptStatement            Statement
hi def link framescriptSubStatement         Type
hi def link framescriptApplySubStatement    framescriptSubStatement
hi def link framescriptClearSubStatement    framescriptSubStatement
hi def link framescriptCloseSubStatement    framescriptSubStatement
hi def link framescriptExecSubStatement     framescriptSubStatement
hi def link framescriptExecuteSubStatement  framescriptSubStatement
hi def link framescriptGenerateSubStatement framescriptSubStatement
hi def link framescriptGetSubStatement      framescriptSubStatement
hi def link framescriptImportSubStatement   framescriptSubStatement
hi def link framescriptInstallSubStatement  framescriptSubStatement
hi def link framescriptNewSubStatement      framescriptSubStatement
hi def link framescriptOpenSubStatement     framescriptSubStatement
hi def link framescriptPrintSubStatement    framescriptSubStatement
hi def link framescriptQuitSubStatement     framescriptSubStatement
hi def link framescriptRemoveSubStatement   framescriptSubStatement
hi def link framescriptSaveSubStatement     framescriptSubStatement
hi def link framescriptSelectSubStatement   framescriptSubStatement
hi def link framescriptStraddleSubStatement framescriptSubStatement
hi def link framescriptUpdateSubStatement   framescriptSubStatement
hi def link framescriptRepeat               Repeat
hi def link framescriptConditional          Conditional
hi def link framescriptType                 Type

let b:current_syntax = "framescript"

let &cpo = s:cpo_save
unlet s:cpo_save