mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
291 lines
18 KiB
VimL
291 lines
18 KiB
VimL
if polyglot#init#is_disabled(expand('<sfile>:p'), 'sway', 'syntax/swayconfig.vim')
|
|
finish
|
|
endif
|
|
|
|
" Vim syntax file
|
|
" Language: sway config file
|
|
" Original Author: Mohamed Boughaba <mohamed dot bgb at gmail dot com>
|
|
" Maintainer: James Eapen <jamespeapen at gmail dot com>
|
|
" Version: 1.0
|
|
" Last Change: 2020-10-07
|
|
|
|
" References:
|
|
" http://i3wm.org/docs/userguide.html#configuring
|
|
" http://vimdoc.sourceforge.net/htmldoc/syntax.html
|
|
"
|
|
"
|
|
" For version 5.x: Clear all syntax items
|
|
" For version 6.x: Quit when a syntax file was already loaded
|
|
if version < 600
|
|
syn clear
|
|
elsei exists("b:current_syntax")
|
|
fini
|
|
en
|
|
|
|
scriptencoding utf-8
|
|
|
|
" Error
|
|
syn match swayConfigError /.*/
|
|
|
|
" Todo
|
|
syn keyword swayConfigTodo TODO FIXME XXX contained
|
|
|
|
" Comment
|
|
" Comments are started with a # and can only be used at the beginning of a line
|
|
syn match swayConfigComment /^\s*#.*$/ contains=swayConfigTodo
|
|
|
|
" Font
|
|
" A FreeType font description is composed by:
|
|
" a font family, a style, a weight, a variant, a stretch and a size.
|
|
syn match swayConfigFontSeparator /,/ contained
|
|
syn match swayConfigFontSeparator /:/ contained
|
|
syn keyword swayConfigFontKeyword font contained
|
|
syn match swayConfigFontNamespace /\w\+:/ contained contains=swayConfigFontSeparator
|
|
syn match swayConfigFontContent /-\?\w\+\(-\+\|\s\+\|,\)/ contained contains=swayConfigFontNamespace,swayConfigFontSeparator,swayConfigFontKeyword
|
|
syn match swayConfigFontSize /\s\=\d\+\(px\)\?\s\?$/ contained
|
|
syn match swayConfigFont /^\s*font\s\+.*$/ contains=swayConfigFontContent,swayConfigFontSeparator,swayConfigFontSize,swayConfigFontNamespace
|
|
syn match swayConfigFont /^\s*font\s\+.*\(\\\_.*\)\?$/ contains=swayConfigFontContent,swayConfigFontSeparator,swayConfigFontSize,swayConfigFontNamespace
|
|
syn match swayConfigFont /^\s*font\s\+.*\(\\\_.*\)\?[^\\]\+$/ contains=swayConfigFontContent,swayConfigFontSeparator,swayConfigFontSize,swayConfigFontNamespace
|
|
syn match swayConfigFont /^\s*font\s\+\(\(.*\\\_.*\)\|\(.*[^\\]\+$\)\)/ contains=swayConfigFontContent,swayConfigFontSeparator,swayConfigFontSize,swayConfigFontNamespace
|
|
|
|
" variables
|
|
syn match swayConfigString /\(['"]\)\(.\{-}\)\1/ contained
|
|
syn match swayConfigColor /#\w\{6}/ contained
|
|
syn match swayConfigVariableModifier /+/ contained
|
|
syn match swayConfigVariableAndModifier /+\w\+/ contained contains=swayConfigVariableModifier
|
|
syn match swayConfigVariable /\$\w\+\(\(-\w\+\)\+\)\?\(\s\|+\)\?/ contains=swayConfigVariableModifier,swayConfigVariableAndModifier
|
|
syn keyword swayConfigInitializeKeyword set contained
|
|
syn match swayConfigInitialize /^\s*set\s\+.*$/ contains=swayConfigVariable,swayConfigInitializeKeyword,swayConfigColor,swayConfigString
|
|
|
|
" Gaps
|
|
syn keyword swayConfigGapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle up down contained
|
|
syn match swayConfigGapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(-\?\d\+\|\$.*\)\)$/ contains=swayConfigGapStyleKeyword,swayConfigNumber,swayConfigVariable
|
|
syn keyword swayConfigSmartGapKeyword on inverse_outer contained
|
|
syn match swayConfigSmartGap /^\s*smart_gaps\s\+\(on\|inverse_outer\)\s\?$/ contains=swayConfigSmartGapKeyword
|
|
syn keyword swayConfigSmartBorderKeyword on no_gaps contained
|
|
syn match swayConfigSmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\)\s\?$/ contains=swayConfigSmartBorderKeyword
|
|
|
|
" Keyboard bindings
|
|
syn keyword swayConfigAction toggle fullscreen restart key import kill shrink grow contained
|
|
syn keyword swayConfigAction focus move grow height width split layout resize restore reload mute unmute exit mode workspace container to output contained
|
|
syn match swayConfigModifier /\w\++\w\+\(\(+\w\+\)\+\)\?/ contained contains=swayConfigVariableModifier
|
|
syn match swayConfigNumber /\s\d\+/ contained
|
|
syn match swayConfigUnit /\sp\(pt\|x\)/ contained
|
|
syn match swayConfigUnitOr /\sor/ contained
|
|
syn keyword swayConfigBindKeyword bindsym bindcode exec gaps border contained
|
|
syn match swayConfigBindArgument /--\w\+\(\(-\w\+\)\+\)\?\s/ contained
|
|
syn match swayConfigBind /^\s*\(bindsym\|bindcode\)\s\+.*$/ contains=swayConfigVariable,swayConfigBindKeyword,swayConfigVariableAndModifier,swayConfigNumber,swayConfigUnit,swayConfigUnitOr,swayConfigBindArgument,swayConfigModifier,swayConfigAction,swayConfigString,swayConfigGapStyleKeyword,swayConfigBorderStyleKeyword
|
|
|
|
" Floating
|
|
syn keyword swayConfigFloatingModifier floating_modifier contained
|
|
syn match swayConfigFloatingMouseAction /^\s\?.*floating_modifier\s.*\(normal\|inverted\)$/ contains=swayConfigFloatingModifier,swayConfigVariable
|
|
|
|
syn keyword swayConfigSizeSpecial x contained
|
|
syn match swayConfigNegativeSize /-/ contained
|
|
syn match swayConfigSize /-\?\d\+\s\?x\s\?-\?\d\+/ contained contains=swayConfigSizeSpecial,swayConfigNumber,swayConfigNegativeSize
|
|
syn match swayConfigFloating /^\s*floating_\(maximum\|minimum\)_size\s\+-\?\d\+\s\?x\s\?-\?\d\+/ contains=swayConfigSize
|
|
|
|
" Orientation
|
|
syn keyword swayConfigOrientationKeyword vertical horizontal auto contained
|
|
syn match swayConfigOrientation /^\s*default_orientation\s\+\(vertical\|horizontal\|auto\)\s\?$/ contains=swayConfigOrientationKeyword
|
|
|
|
" Layout
|
|
syn keyword swayConfigLayoutKeyword default stacking tabbed contained
|
|
syn match swayConfigLayout /^\s*workspace_layout\s\+\(default\|stacking\|tabbed\)\s\?$/ contains=swayConfigLayoutKeyword
|
|
|
|
" Border style
|
|
syn keyword swayConfigBorderStyleKeyword none normal pixel contained
|
|
syn match swayConfigBorderStyle /^\s*\(new_window\|new_float\|default_border\|default_floating_border\)\s\+\(none\|\(normal\|pixel\)\(\s\+\d\+\)\?\(\s\+\$\w\+\(\(-\w\+\)\+\)\?\(\s\|+\)\?\)\?\)\s\?$/ contains=swayConfigBorderStyleKeyword,swayConfigNumber,swayConfigVariable
|
|
|
|
" Hide borders and edges
|
|
syn keyword swayConfigEdgeKeyword none vertical horizontal both smart smart_no_gaps contained
|
|
syn match swayConfigEdge /^\s*hide_edge_borders\s\+\(none\|vertical\|horizontal\|both\|smart\|smart_no_gaps\)\s\?$/ contains=swayConfigEdgeKeyword
|
|
|
|
" Arbitrary commands for specific windows (for_window)
|
|
syn keyword swayConfigCommandKeyword for_window contained
|
|
syn region swayConfigWindowStringSpecial start=+"+ skip=+\\"+ end=+"+ contained contains=swayConfigString
|
|
syn region swayConfigWindowCommandSpecial start="\[" end="\]" contained contains=swayConfigWindowStringSpacial,swayConfigString
|
|
syn match swayConfigArbitraryCommand /^\s*for_window\s\+.*$/ contains=swayConfigWindowCommandSpecial,swayConfigCommandKeyword,swayConfigBorderStyleKeyword,swayConfigLayoutKeyword,swayConfigOrientationKeyword,Size,swayConfigNumber
|
|
|
|
" Disable focus open opening
|
|
syn keyword swayConfigNoFocusKeyword no_focus contained
|
|
syn match swayConfigDisableFocus /^\s*no_focus\s\+.*$/ contains=swayConfigWindowCommandSpecial,swayConfigNoFocusKeyword
|
|
|
|
" Move client to specific workspace automatically
|
|
syn keyword swayConfigAssignKeyword assign contained
|
|
syn match swayConfigAssignSpecial /→/ contained
|
|
syn match swayConfigAssign /^\s*assign\s\+.*$/ contains=swayConfigAssignKeyword,swayConfigWindowCommandSpecial,swayConfigAssignSpecial
|
|
|
|
" X resources
|
|
syn keyword swayConfigResourceKeyword set_from_resource contained
|
|
syn match swayConfigResource /^\s*set_from_resource\s\+.*$/ contains=swayConfigResourceKeyword,swayConfigWindowCommandSpecial,swayConfigColor,swayConfigVariable
|
|
|
|
" Auto start applications
|
|
syn keyword swayConfigExecKeyword exec exec_always contained
|
|
syn match swayConfigNoStartupId /--no-startup-id/ contained " We are not using swayConfigBindArgument as only no-startup-id is supported here
|
|
syn match swayConfigExec /^\s*exec\(_always\)\?\s\+.*$/ contains=swayConfigExecKeyword,swayConfigNoStartupId,swayConfigString
|
|
|
|
" Automatically putting workspaces on specific screens
|
|
syn keyword swayConfigWorkspaceKeyword workspace contained
|
|
syn keyword swayConfigOutputKeyword output contained
|
|
syn match swayConfigWorkspace /^\s*workspace\s\+.*$/ contains=swayConfigWorkspaceKeyword,swayConfigNumber,swayConfigString,swayConfigOutputKeyword
|
|
|
|
" set display outputs
|
|
syn match swayConfigOutput /^\s*output\s\+.*$/ contains=swayConfigOutputKeyword
|
|
|
|
" set display focus
|
|
syn keyword swayConfigFocusKeyword focus contained
|
|
syn keyword swayConfigFocusType output contained
|
|
syn match swayConfigFocus /^\s*focus\soutput\s.*$/ contains=swayConfigFocusKeyword,swayConfigFocusType
|
|
|
|
" Changing colors
|
|
syn keyword swayConfigClientColorKeyword client focused focused_inactive unfocused urgent placeholder background contained
|
|
syn match swayConfigClientColor /^\s*client.\w\+\s\+.*$/ contains=swayConfigClientColorKeyword,swayConfigColor,swayConfigVariable
|
|
|
|
syn keyword swayConfigTitleAlignKeyword left center right contained
|
|
syn match swayConfigTitleAlign /^\s*title_align\s\+.*$/ contains=swayConfigTitleAlignKeyword
|
|
|
|
" Interprocess communication
|
|
syn match swayConfigInterprocessKeyword /ipc-socket/ contained
|
|
syn match swayConfigInterprocess /^\s*ipc-socket\s\+.*$/ contains=swayConfigInterprocessKeyword
|
|
|
|
" Mouse warping
|
|
syn keyword swayConfigMouseWarpingKeyword mouse_warping contained
|
|
syn keyword swayConfigMouseWarpingType output none contained
|
|
syn match swayConfigMouseWarping /^\s*mouse_warping\s\+\(output\|none\)\s\?$/ contains=swayConfigMouseWarpingKeyword,swayConfigMouseWarpingType
|
|
|
|
" Focus follows mouse
|
|
syn keyword swayConfigFocusFollowsMouseKeyword focus_follows_mouse contained
|
|
syn keyword swayConfigFocusFollowsMouseType yes no contained
|
|
syn match swayConfigFocusFollowsMouse /^\s*focus_follows_mouse\s\+\(yes\|no\)\s\?$/ contains=swayConfigFocusFollowsMouseKeyword,swayConfigFocusFollowsMouseType
|
|
|
|
" Popups during fullscreen mode
|
|
syn keyword swayConfigPopupOnFullscreenKeyword popup_during_fullscreen contained
|
|
syn keyword swayConfigPopuponFullscreenType smart ignore leave_fullscreen contained
|
|
syn match swayConfigPopupOnFullscreen /^\s*popup_during_fullscreen\s\+\w\+\s\?$/ contains=swayConfigPopupOnFullscreenKeyword,swayConfigPopupOnFullscreenType
|
|
|
|
" Focus wrapping
|
|
syn keyword swayConfigFocusWrappingKeyword force_focus_wrapping focus_wrapping contained
|
|
syn keyword swayConfigFocusWrappingType yes no contained
|
|
syn match swayConfigFocusWrapping /^\s*\(force_\)\?focus_wrapping\s\+\(yes\|no\)\s\?$/ contains=swayConfigFocusWrappingType,swayConfigFocusWrappingKeyword
|
|
|
|
" Forcing Xinerama
|
|
syn keyword swayConfigForceXineramaKeyword force_xinerama contained
|
|
syn match swayConfigForceXinerama /^\s*force_xinerama\s\+\(yes\|no\)\s\?$/ contains=swayConfigFocusWrappingType,swayConfigForceXineramaKeyword
|
|
|
|
" Automatic back-and-forth when switching to the current workspace
|
|
syn keyword swayConfigAutomaticSwitchKeyword workspace_auto_back_and_forth contained
|
|
syn match swayConfigAutomaticSwitch /^\s*workspace_auto_back_and_forth\s\+\(yes\|no\)\s\?$/ contains=swayConfigFocusWrappingType,swayConfigAutomaticSwitchKeyword
|
|
|
|
" Delay urgency hint
|
|
syn keyword swayConfigTimeUnit ms contained
|
|
syn keyword swayConfigDelayUrgencyKeyword force_display_urgency_hint contained
|
|
syn match swayConfigDelayUrgency /^\s*force_display_urgency_hint\s\+\d\+\s\+ms\s\?$/ contains=swayConfigFocusWrappingType,swayConfigDelayUrgencyKeyword,swayConfigNumber,swayConfigTimeUnit
|
|
|
|
" Focus on window activation
|
|
syn keyword swayConfigFocusOnActivationKeyword focus_on_window_activation contained
|
|
syn keyword swayConfigFocusOnActivationType smart urgent focus none contained
|
|
syn match swayConfigFocusOnActivation /^\s*focus_on_window_activation\s\+\(smart\|urgent\|focus\|none\)\s\?$/ contains=swayConfigFocusOnActivationKeyword,swayConfigFocusOnActivationType
|
|
|
|
" Automatic back-and-forth when switching to the current workspace
|
|
syn keyword swayConfigDrawingMarksKeyword show_marks contained
|
|
syn match swayConfigDrawingMarks /^\s*show_marks\s\+\(yes\|no\)\s\?$/ contains=swayConfigFocusWrappingType,swayConfigDrawingMarksKeyword
|
|
|
|
" Group mode/bar
|
|
syn keyword swayConfigBlockKeyword set input mode bar colors i3bar_command status_command position exec mode hidden_state modifier id position output background statusline tray_output tray_padding separator separator_symbol workspace_buttons strip_workspace_numbers binding_mode_indicator focused_workspace active_workspace inactive_workspace urgent_workspace binding_mode contained
|
|
syn region swayConfigBlock start=+.*s\?{$+ end=+^}$+ contains=swayConfigBlockKeyword,swayConfigString,swayConfigBind,swayConfigComment,swayConfigFont,swayConfigFocusWrappingType,swayConfigColor,swayConfigVariable transparent keepend extend
|
|
|
|
" Line continuation
|
|
syn region swayConfigLineCont start=/^.*\\$/ end=/^.*$/ contains=swayConfigBlockKeyword,swayConfigString,swayConfigBind,swayConfigComment,swayConfigFont,swayConfigFocusWrappingType,swayConfigColor,swayConfigVariable transparent keepend extend
|
|
|
|
" Includes with relative paths to config files
|
|
syn keyword swayConfigInclude include contained
|
|
syn match swayConfigFile /^include\s\(\~\?\/.*$\|\.\{0,2}\/.*$\)/ contains=swayConfigInclude
|
|
|
|
" xwayland
|
|
syn keyword swayConfigXwaylandKeyword xwayland contained
|
|
syn match swayConfigXwaylandModifier /^\s*xwayland\s\+\(enable\|disable\|force\)\s\?$/ contains=swayConfigXwaylandKeyword
|
|
|
|
" Define the highlighting.
|
|
let b:current_syntax = "swayconfig"
|
|
hi! def link swayConfigError Error
|
|
hi! def link swayConfigTodo Todo
|
|
hi! def link swayConfigComment Comment
|
|
hi! def link swayConfigFontContent Type
|
|
hi! def link swayConfigFocusOnActivationType Type
|
|
hi! def link swayConfigPopupOnFullscreenType Type
|
|
hi! def link swayConfigOrientationKeyword Type
|
|
hi! def link swayConfigMouseWarpingType Type
|
|
hi! def link swayConfigFocusFollowsMouseType Type
|
|
hi! def link swayConfigGapStyleKeyword Type
|
|
hi! def link swayConfigTitleAlignKeyword Type
|
|
hi! def link swayConfigSmartGapKeyword Type
|
|
hi! def link swayConfigSmartBorderKeyword Type
|
|
hi! def link swayConfigLayoutKeyword Type
|
|
hi! def link swayConfigBorderStyleKeyword Type
|
|
hi! def link swayConfigEdgeKeyword Type
|
|
hi! def link swayConfigAction Type
|
|
hi! def link swayConfigCommand Type
|
|
hi! def link swayConfigOutputKeyword Type
|
|
hi! def link swayConfigWindowCommandSpecial Type
|
|
hi! def link swayConfigFocusWrappingType Type
|
|
hi! def link swayConfigUnitOr Type
|
|
hi! def link swayConfigFontSize Constant
|
|
hi! def link swayConfigColor Constant
|
|
hi! def link swayConfigNumber Constant
|
|
hi! def link swayConfigUnit Constant
|
|
hi! def link swayConfigVariableAndModifier Constant
|
|
hi! def link swayConfigTimeUnit Constant
|
|
hi! def link swayConfigModifier Constant
|
|
hi! def link swayConfigString Constant
|
|
hi! def link swayConfigNegativeSize Constant
|
|
hi! def link swayConfigFontSeparator Special
|
|
hi! def link swayConfigVariableModifier Special
|
|
hi! def link swayConfigSizeSpecial Special
|
|
hi! def link swayConfigWindowSpecial Special
|
|
hi! def link swayConfigAssignSpecial Special
|
|
hi! def link swayConfigFontNamespace PreProc
|
|
hi! def link swayConfigBindArgument PreProc
|
|
hi! def link swayConfigNoStartupId PreProc
|
|
hi! def link swayConfigFontKeyword Identifier
|
|
hi! def link swayConfigBindKeyword Identifier
|
|
hi! def link swayConfigOrientation Identifier
|
|
hi! def link swayConfigGapStyle Identifier
|
|
hi! def link swayConfigTitleAlign Identifier
|
|
hi! def link swayConfigSmartGap Identifier
|
|
hi! def link swayConfigSmartBorder Identifier
|
|
hi! def link swayConfigLayout Identifier
|
|
hi! def link swayConfigBorderStyle Identifier
|
|
hi! def link swayConfigEdge Identifier
|
|
hi! def link swayConfigFloating Identifier
|
|
hi! def link swayConfigCommandKeyword Identifier
|
|
hi! def link swayConfigNoFocusKeyword Identifier
|
|
hi! def link swayConfigInitializeKeyword Identifier
|
|
hi! def link swayConfigAssignKeyword Identifier
|
|
hi! def link swayConfigResourceKeyword Identifier
|
|
hi! def link swayConfigExecKeyword Identifier
|
|
hi! def link swayConfigWorkspaceKeyword Identifier
|
|
hi! def link swayConfigClientColorKeyword Identifier
|
|
hi! def link swayConfigInterprocessKeyword Identifier
|
|
hi! def link swayConfigMouseWarpingKeyword Identifier
|
|
hi! def link swayConfigFocusFollowsMouseKeyword Identifier
|
|
hi! def link swayConfigPopupOnFullscreenKeyword Identifier
|
|
hi! def link swayConfigFocusWrappingKeyword Identifier
|
|
hi! def link swayConfigForceXineramaKeyword Identifier
|
|
hi! def link swayConfigAutomaticSwitchKeyword Identifier
|
|
hi! def link swayConfigDelayUrgencyKeyword Identifier
|
|
hi! def link swayConfigFocusOnActivationKeyword Identifier
|
|
hi! def link swayConfigDrawingMarksKeyword Identifier
|
|
hi! def link swayConfigBlockKeyword Identifier
|
|
hi! def link swayConfigVariable Statement
|
|
hi! def link swayConfigArbitraryCommand Type
|
|
hi! def link swayConfigInclude Identifier
|
|
hi! def link swayConfigFile Constant
|
|
hi! def link swayConfigFloatingModifier Identifier
|
|
hi! def link swayConfigFloatingMouseAction Type
|
|
hi! def link swayConfigFocusKeyword Type
|
|
hi! def link swayConfigFocusType Identifier
|
|
hi! def link swayConfigXwaylandKeyword Identifier
|
|
hi! def link swayConfigXwaylandModifier Type
|
|
|