blob: 6b36210252efe9bcacfaab11d1e9e50048db1861 [file] [log] [blame]
Bram Moolenaar2ecbe532022-07-29 21:36:21 +01001" Vim syntax file
2" Language: sway window manager config
3" Original Author: James Eapen <james.eapen@vai.org>
4" Maintainer: James Eapen <james.eapen@vai.org>
Bram Moolenaar10e8ff92023-06-10 21:40:39 +01005" Version: 0.2.1
6" Reference version (jamespeapen/swayconfig.vim): 0.12.1
7" Last Change: 2023 Mar 20
Bram Moolenaar2ecbe532022-07-29 21:36:21 +01008
9" References:
10" http://i3wm.org/docs/userguide.html#configuring
11" https://github.com/swaywm/sway/blob/b69d637f7a34e239e48a4267ae94a5e7087b5834/sway/sway.5.scd
12" http://vimdoc.sourceforge.net/htmldoc/syntax.html
13"
14"
15" Quit when a syntax file was already loaded
16if exists("b:current_syntax")
17 finish
18endif
19
20runtime! syntax/i3config.vim
21
22scriptencoding utf-8
23
24" Error
25"syn match swayConfigError /.*/
26
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010027" binding
28syn keyword swayConfigBindKeyword bindswitch bindgesture contained
29syn match swayConfigBind /^\s*\(bindswitch\)\s\+.*$/ contains=i3ConfigVariable,i3ConfigBindKeyword,swayConfigBindKeyword,i3ConfigVariableAndModifier,i3ConfigNumber,i3ConfigUnit,i3ConfigUnitOr,i3ConfigBindArgument,i3ConfigModifier,i3ConfigAction,i3ConfigString,i3ConfigGapStyleKeyword,i3ConfigBorderStyleKeyword
30
31" bindgestures
32syn keyword swayConfigBindGestureCommand swipe pinch hold contained
33syn keyword swayConfigBindGestureDirection up down left right next prev contained
34syn keyword swayConfigBindGesturePinchDirection inward outward clockwise counterclockwise contained
35syn match swayConfigBindGestureHold /^\s*\(bindgesture\)\s\+hold\(:[1-5]\)\?\s\+.*$/ contains=swayConfigBindKeyword,swayConfigBindGestureCommand,swayConfigBindGestureDirection,i3ConfigWorkspaceKeyword,i3ConfigAction
Bram Moolenaare1f3fd12022-08-15 18:51:32 +010036syn match swayConfigBindGestureSwipe /^\s*\(bindgesture\)\s\+swipe\(:[3-5]\)\?:\(up\|down\|left\|right\)\s\+.*$/ contains=swayConfigBindKeyword,swayConfigBindGestureCommand,swayConfigBindGestureDirection,i3ConfigWorkspaceKeyword,i3ConfigAction
37syn match swayConfigBindGesturePinch /^\s*\(bindgesture\)\s\+pinch\(:[2-5]\)\?:\(up\|down\|left\|right\|inward\|outward\|clockwise\|counterclockwise\)\(+\(up\|down\|left\|right\|inward\|outward\|clockwise\|counterclockwise\)\)\?.*$/ contains=swayConfigBindKeyword,swayConfigBindGestureCommand,swayConfigBindGestureDirection,swayConfigBindGesturePinchDirection,i3ConfigWorkspaceKeyword,i3ConfigAction
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010038
39" floating
40syn keyword swayConfigFloatingKeyword floating contained
41syn match swayConfigFloating /^\s*floating\s\+\(enable\|disable\|toggle\)\s*$/ contains=swayConfigFloatingKeyword
42
43syn clear i3ConfigFloatingModifier
44syn keyword swayConfigFloatingModifier floating_modifier contained
Bram Moolenaarb59ae592022-11-23 23:46:31 +000045syn match swayConfigFloatingMouseAction /^\s\?.*floating_modifier\s\S\+\s\?\(normal\|inverted\|none\)\?$/ contains=swayConfigFloatingModifier,i3ConfigVariable
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010046
47" Gaps
48syn clear i3ConfigSmartBorderKeyword
49syn clear i3ConfigSmartBorder
50syn keyword swayConfigSmartBorderKeyword on no_gaps off contained
51syn match swayConfigSmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\|off\)\s\?$/ contains=swayConfigSmartBorderKeyword
52
53" Changing colors
54syn keyword swayConfigClientColorKeyword focused_tab_title contained
55syn match swayConfigClientColor /^\s*client.\w\+\s\+.*$/ contains=i3ConfigClientColorKeyword,i3ConfigColor,i3ConfigVariable,i3ConfigClientColorKeyword,swayConfigClientColorKeyword
56
Bram Moolenaarb59ae592022-11-23 23:46:31 +000057" Input config
58syn keyword swayConfigInputKeyword input contained
59syn match swayConfigInput /^\s*input\s\+.*$/ contains=swayConfigInputKeyword
60
Bram Moolenaar10e8ff92023-06-10 21:40:39 +010061" Seat config
62syn keyword swayConfigSeatKeyword seat contained
63syn match swayConfigSeat /^\s*seat\s\+.*$/ contains=swayConfigSeatKeyword
64
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010065" set display outputs
66syn match swayConfigOutput /^\s*output\s\+.*$/ contains=i3ConfigOutput
67
68" set display focus
69syn keyword swayConfigFocusKeyword focus contained
70syn keyword swayConfigFocusType output contained
71syn match swayConfigFocus /^\s*focus\soutput\s.*$/ contains=swayConfigFocusKeyword,swayConfigFocusType
72
Bram Moolenaar10e8ff92023-06-10 21:40:39 +010073" mouse warping
74syn keyword swayConfigMouseWarpingType container contained
75syn match swayConfigMouseWarping /^\s*mouse_warping\s\+\(output\|container\|none\)\s\?$/ contains=i3ConfigMouseWarpingKeyword,i3ConfigMouseWarpingType,swayConfigMouseWarpingType
76
Bram Moolenaarb59ae592022-11-23 23:46:31 +000077" focus follows mouse
78syn clear i3ConfigFocusFollowsMouseType
79syn clear i3ConfigFocusFollowsMouse
80
81syn keyword swayConfigFocusFollowsMouseType yes no always contained
82syn match swayConfigFocusFollowsMouse /^\s*focus_follows_mouse\s\+\(yes\|no\|always\)\s\?$/ contains=i3ConfigFocusFollowsMouseKeyword,swayConfigFocusFollowsMouseType
83
84
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010085" xwayland
86syn keyword swayConfigXwaylandKeyword xwayland contained
87syn match swayConfigXwaylandModifier /^\s*xwayland\s\+\(enable\|disable\|force\)\s\?$/ contains=swayConfigXwaylandKeyword
88
Bram Moolenaarb59ae592022-11-23 23:46:31 +000089" Group mode/bar
90syn clear i3ConfigBlock
Bram Moolenaar10e8ff92023-06-10 21:40:39 +010091syn region swayConfigBlock start=+.*s\?{$+ end=+^}$+ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigInitializeKeyword,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable,swayConfigInputKeyword,swayConfigSeatKeyword,i3ConfigOutput transparent keepend extend
Bram Moolenaarb59ae592022-11-23 23:46:31 +000092
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010093"hi def link swayConfigError Error
94hi def link i3ConfigFloating Error
95hi def link swayConfigFloating Type
96hi def link swayConfigFloatingMouseAction Type
97hi def link swayConfigFocusKeyword Type
98hi def link swayConfigSmartBorderKeyword Type
Bram Moolenaarb59ae592022-11-23 23:46:31 +000099hi def link swayConfigInputKeyword Type
Bram Moolenaar10e8ff92023-06-10 21:40:39 +0100100hi def link swayConfigSeatKeyword Type
101hi def link swayConfigMouseWarpingType Type
Bram Moolenaarb59ae592022-11-23 23:46:31 +0000102hi def link swayConfigFocusFollowsMouseType Type
Bram Moolenaar2ecbe532022-07-29 21:36:21 +0100103hi def link swayConfigBindGestureCommand Identifier
104hi def link swayConfigBindGestureDirection Constant
105hi def link swayConfigBindGesturePinchDirection Constant
106hi def link swayConfigBindKeyword Identifier
Bram Moolenaar2ecbe532022-07-29 21:36:21 +0100107hi def link swayConfigClientColorKeyword Identifier
108hi def link swayConfigFloatingKeyword Identifier
109hi def link swayConfigFloatingModifier Identifier
110hi def link swayConfigFocusType Identifier
111hi def link swayConfigSmartBorder Identifier
112hi def link swayConfigXwaylandKeyword Identifier
113hi def link swayConfigXwaylandModifier Type
114hi def link swayConfigBindGesture PreProc
115
116let b:current_syntax = "swayconfig"