diff options
Diffstat (limited to 'syntax/swayconfig.vim')
-rw-r--r-- | syntax/swayconfig.vim | 285 |
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 + + |