summaryrefslogtreecommitdiffstats
path: root/syntax/swayconfig.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/swayconfig.vim')
-rw-r--r--syntax/swayconfig.vim285
1 files changed, 285 insertions, 0 deletions
diff --git a/syntax/swayconfig.vim b/syntax/swayconfig.vim
new file mode 100644
index 00000000..96259665
--- /dev/null
+++ b/syntax/swayconfig.vim
@@ -0,0 +1,285 @@
+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 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
+
+" 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
+
+