blob: 996b8f596c1d6c0dca4e8c0db335cbd25bbb196a [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 Moolenaarb59ae592022-11-23 23:46:31 +00005" Version: 0.1.6
6" Reference version (jamespeapen/swayconfig.vim): 0.11.6
Bram Moolenaare1f3fd12022-08-15 18:51:32 +01007" Last Change: 2022 Aug 08
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 Moolenaar2ecbe532022-07-29 21:36:21 +010061" set display outputs
62syn match swayConfigOutput /^\s*output\s\+.*$/ contains=i3ConfigOutput
63
64" set display focus
65syn keyword swayConfigFocusKeyword focus contained
66syn keyword swayConfigFocusType output contained
67syn match swayConfigFocus /^\s*focus\soutput\s.*$/ contains=swayConfigFocusKeyword,swayConfigFocusType
68
Bram Moolenaarb59ae592022-11-23 23:46:31 +000069" focus follows mouse
70syn clear i3ConfigFocusFollowsMouseType
71syn clear i3ConfigFocusFollowsMouse
72
73syn keyword swayConfigFocusFollowsMouseType yes no always contained
74syn match swayConfigFocusFollowsMouse /^\s*focus_follows_mouse\s\+\(yes\|no\|always\)\s\?$/ contains=i3ConfigFocusFollowsMouseKeyword,swayConfigFocusFollowsMouseType
75
76
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010077" xwayland
78syn keyword swayConfigXwaylandKeyword xwayland contained
79syn match swayConfigXwaylandModifier /^\s*xwayland\s\+\(enable\|disable\|force\)\s\?$/ contains=swayConfigXwaylandKeyword
80
Bram Moolenaarb59ae592022-11-23 23:46:31 +000081" Group mode/bar
82syn clear i3ConfigBlock
83syn region swayConfigBlock start=+.*s\?{$+ end=+^}$+ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigInitializeKeyword,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable,swayConfigInputKeyword,i3ConfigOutput transparent keepend extend
84
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010085"hi def link swayConfigError Error
86hi def link i3ConfigFloating Error
87hi def link swayConfigFloating Type
88hi def link swayConfigFloatingMouseAction Type
89hi def link swayConfigFocusKeyword Type
90hi def link swayConfigSmartBorderKeyword Type
Bram Moolenaarb59ae592022-11-23 23:46:31 +000091hi def link swayConfigInputKeyword Type
92hi def link swayConfigFocusFollowsMouseType Type
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010093hi def link swayConfigBindGestureCommand Identifier
94hi def link swayConfigBindGestureDirection Constant
95hi def link swayConfigBindGesturePinchDirection Constant
96hi def link swayConfigBindKeyword Identifier
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010097hi def link swayConfigClientColorKeyword Identifier
98hi def link swayConfigFloatingKeyword Identifier
99hi def link swayConfigFloatingModifier Identifier
100hi def link swayConfigFocusType Identifier
101hi def link swayConfigSmartBorder Identifier
102hi def link swayConfigXwaylandKeyword Identifier
103hi def link swayConfigXwaylandModifier Type
104hi def link swayConfigBindGesture PreProc
105
106let b:current_syntax = "swayconfig"