blob: 2a43b3d9e5ff5cea86e86d269958a3bb4369c171 [file] [log] [blame]
Bram Moolenaar0e6adf82021-12-16 14:41:10 +00001" Vim syntax file
2" Language: i3 config file
Josef Litoš02774f92023-09-27 18:57:24 +02003" Original Author: Josef Litos (JosefLitos/i3config.vim)
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00004" Maintainer: Quentin Hibon (github user hiqua)
James Eapena39af022023-12-29 11:50:33 -05005" Version: 1.0.2
6" Last Change: 2023-12-28
Bram Moolenaar0e6adf82021-12-16 14:41:10 +00007
8" References:
9" http://i3wm.org/docs/userguide.html#configuring
10" http://vimdoc.sourceforge.net/htmldoc/syntax.html
11"
12"
13" Quit when a syntax file was already loaded
14if exists("b:current_syntax")
15 finish
16endif
17
18scriptencoding utf-8
19
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010020" Error
Josef Litoš62145db2023-09-11 20:12:48 +020021syn match i3ConfigError /.\+/
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010022
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000023" Todo
24syn keyword i3ConfigTodo TODO FIXME XXX contained
25
Josef Litošf5356bf2023-09-12 20:20:25 +020026" Helper type definitions
Josef Litoš02774f92023-09-27 18:57:24 +020027syn match i3ConfigSeparator /[,;\\]/ contained
Josef Litošf5356bf2023-09-12 20:20:25 +020028syn match i3ConfigParen /[{}]/ contained
29syn keyword i3ConfigBoolean yes no enabled disabled on off true false contained
Josef Litoš02774f92023-09-27 18:57:24 +020030syn region i3ConfigString start=/\W\@<="/ skip=/\\\("\|$\)/ end=/"\|$/ contained contains=i3ConfigShCommand,i3ConfigShDelim,i3ConfigShOper,i3ConfigShParam,i3ConfigNumber,i3ConfigVariable,i3ConfigExecAction keepend extend
31syn region i3ConfigString start=/\W\@<='/ skip=/\\$/ end=/'\|$/ contained contains=i3ConfigShCommand,i3ConfigShDelim,i3ConfigShOper,i3ConfigShParam,i3ConfigNumber,i3ConfigVariable,i3ConfigExecAction keepend extend
32syn match i3ConfigColor /#[0-9A-Fa-f]\{3,8}/ contained
33syn match i3ConfigNumber /[0-9A-Za-z_$-]\@<!-\?\d\+\w\@!/ contained
Josef Litošf5356bf2023-09-12 20:20:25 +020034
35" 4.1 Include directive
36syn keyword i3ConfigIncludeKeyword include contained
Josef Litoš02774f92023-09-27 18:57:24 +020037syn match i3ConfigIncludeCommand /`[^`]*`/ contained contains=i3ConfigShDelim,i3ConfigShParam,i3ConfigShOper,i3ConfigShCommand,i3ConfigString
38syn match i3ConfigParamLine /^include .*$/ contains=i3ConfigIncludeKeyword,i3ConfigString,i3ConfigVariable,i3ConfigIncludeCommand,i3ConfigShOper
Josef Litošf5356bf2023-09-12 20:20:25 +020039
40" 4.2 Comments
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000041syn match i3ConfigComment /^\s*#.*$/ contains=i3ConfigTodo
42
Josef Litošf5356bf2023-09-12 20:20:25 +020043" 4.3 Fonts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000044syn keyword i3ConfigFontKeyword font contained
Josef Litošf5356bf2023-09-12 20:20:25 +020045syn match i3ConfigColonOperator /:/ contained
46syn match i3ConfigFontNamespace /\w\+:/ contained contains=i3ConfigColonOperator
Josef Litoš02774f92023-09-27 18:57:24 +020047syn match i3ConfigFontSize / \d\+\(px\)\?\s\?$/ contained
Josef Litošf5356bf2023-09-12 20:20:25 +020048syn region i3ConfigFont start=/^\s*font / skip=/\\$/ end=/$/ contains=i3ConfigFontKeyword,i3ConfigFontNamespace,i3ConfigFontSize,i3ConfigSeparator keepend
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000049
Josef Litošf5356bf2023-09-12 20:20:25 +020050" 4.4-4.5 Keyboard/Mouse bindings
Josef Litoš62145db2023-09-11 20:12:48 +020051syn keyword i3ConfigBindKeyword bindsym bindcode contained
52syn match i3ConfigBindArgument /--\(release\|border\|whole-window\|exclude-titlebar\)/ contained
53syn match i3ConfigBindModifier /+/ contained
Josef Litoš02774f92023-09-27 18:57:24 +020054syn keyword i3ConfigBindModkey Ctrl Shift Mod1 Mod2 Mod3 Mod4 Mod5 contained
55syn match i3ConfigBindCombo /[$0-9A-Za-z_+]\+ / contained contains=i3ConfigBindModifier,i3ConfigVariable,i3ConfigBindModkey
56syn match i3ConfigBindComboLine /bind\(sym\|code\)\( --[a-z-]\+\)* [$0-9A-Za-z_+]\+ / contained contains=i3ConfigBindKeyword,i3ConfigBindArgument,i3ConfigBindCombo
Josef Litošf5356bf2023-09-12 20:20:25 +020057syn region i3ConfigBind start=/^\s*bind\(sym\|code\) / skip=/\\$/ end=/$/ contains=i3ConfigBindComboLine,i3ConfigCriteria,i3ConfigAction,i3ConfigSeparator,i3ConfigActionKeyword,i3ConfigOption,i3ConfigString,i3ConfigNumber,i3ConfigVariable,i3ConfigBoolean keepend
Josef Litoš62145db2023-09-11 20:12:48 +020058
Josef Litošf5356bf2023-09-12 20:20:25 +020059" 4.6 Binding modes
60syn region i3ConfigKeyword start=/^mode\( --pango_markup\)\? \([^'" {]\+\|'[^']\+'\|".\+"\)\s\+{$/ end=/^\s*}$/ contains=i3ConfigShParam,i3ConfigString,i3ConfigBind,i3ConfigComment,i3ConfigNumber,i3ConfigParen,i3ConfigVariable fold keepend extend
Josef Litoš62145db2023-09-11 20:12:48 +020061
Josef Litošf5356bf2023-09-12 20:20:25 +020062" 4.7 Floating modifier
Josef Litoš02774f92023-09-27 18:57:24 +020063syn match i3ConfigKeyword /^floating_modifier [$0-9A-Za-z]*$/ contains=i3ConfigVariable,i3ConfigBindModkey
Josef Litošf5356bf2023-09-12 20:20:25 +020064
65" 4.8 Floating window size
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000066syn keyword i3ConfigSizeSpecial x contained
Josef Litoš62145db2023-09-11 20:12:48 +020067syn match i3ConfigSize / -\?\d\+ x -\?\d\+/ contained contains=i3ConfigSizeSpecial,i3ConfigNumber
Josef Litošf5356bf2023-09-12 20:20:25 +020068syn match i3ConfigKeyword /^floating_\(maximum\|minimum\)_size .*$/ contains=i3ConfigSize
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000069
Josef Litošf5356bf2023-09-12 20:20:25 +020070" 4.9 Orientation
71syn keyword i3ConfigOrientationOpts vertical horizontal auto contained
72syn match i3ConfigKeyword /^default_orientation \w*$/ contains=i3ConfigOrientationOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000073
Josef Litošf5356bf2023-09-12 20:20:25 +020074" 4.10 Layout mode
75syn keyword i3ConfigWorkspaceLayoutOpts default stacking tabbed contained
76syn match i3ConfigKeyword /^workspace_layout \w*$/ contains=i3ConfigWorkspaceLayoutOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000077
Josef Litošf5356bf2023-09-12 20:20:25 +020078" 4.11 Title alignment
79syn keyword i3ConfigTitleAlignOpts left center right contained
80syn match i3ConfigKeyword /^title_align .*$/ contains=i3ConfigTitleAlignOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000081
Josef Litošf5356bf2023-09-12 20:20:25 +020082" 4.12 Border style
83syn keyword i3ConfigBorderOpts none normal pixel contained
84syn match i3ConfigKeyword /^default\(_floating\)\?_border .*$/ contains=i3ConfigBorderOpts,i3ConfigNumber,i3ConfigVariable
Josef Litoš62145db2023-09-11 20:12:48 +020085
Josef Litošf5356bf2023-09-12 20:20:25 +020086" 4.13 Hide edge borders
87syn keyword i3ConfigEdgeOpts none vertical horizontal both smart smart_no_gaps contained
Josef Litoš02774f92023-09-27 18:57:24 +020088syn match i3ConfigKeyword /^hide_edge_borders \w*$/ contains=i3ConfigEdgeOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000089
Josef Litošf5356bf2023-09-12 20:20:25 +020090" 4.14 Smart Borders
91syn keyword i3ConfigSmartBorderOpts no_gaps contained
92syn match i3ConfigKeyword /^smart_borders \(on\|off\|no_gaps\)$/ contains=i3ConfigSmartBorderOpts,i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000093
Josef Litošf5356bf2023-09-12 20:20:25 +020094" 4.15 Arbitrary commands
Josef Litoš02774f92023-09-27 18:57:24 +020095syn region i3ConfigKeyword start=/^for_window / end=/$/ contains=i3ConfigForWindowKeyword,i3ConfigCriteria keepend
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000096
Josef Litošf5356bf2023-09-12 20:20:25 +020097" 4.16 No opening focus
98syn match i3ConfigKeyword /^no_focus .*$/ contains=i3ConfigCondition
99
100" 4.17 Variables
Josef Litoš02774f92023-09-27 18:57:24 +0200101syn match i3ConfigVariable /\$[0-9A-Za-z_:|[\]-]\+/
Josef Litošf5356bf2023-09-12 20:20:25 +0200102syn keyword i3ConfigSetKeyword set contained
julio-b53929702024-04-13 16:10:10 +0000103syn region i3ConfigSet start=/^set\s\+\$/ skip=/\\$/ end=/$/ contains=i3ConfigSetKeyword,i3ConfigVariable,i3ConfigColor,i3ConfigString,i3ConfigNumber,i3ConfigShCommand,i3ConfigShDelim,i3ConfigShParam,i3ConfigShOper,i3ConfigBindModkey keepend
Josef Litošf5356bf2023-09-12 20:20:25 +0200104
105" 4.18 X resources
106syn keyword i3ConfigResourceKeyword set_from_resource contained
Josef Litoš02774f92023-09-27 18:57:24 +0200107syn match i3ConfigParamLine /^set_from_resource\s\+.*$/ contains=i3ConfigResourceKeyword,i3ConfigCondition,i3ConfigColor,i3ConfigVariable,i3ConfigString,i3ConfigNumber
Josef Litošf5356bf2023-09-12 20:20:25 +0200108
109" 4.19 Assign clients to workspaces
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000110syn keyword i3ConfigAssignKeyword assign contained
Josef Litoš02774f92023-09-27 18:57:24 +0200111syn match i3ConfigAssignSpecial /→\|number/ contained
Josef Litošf5356bf2023-09-12 20:20:25 +0200112syn match i3ConfigAssign /^assign .*$/ contains=i3ConfigAssignKeyword,i3ConfigAssignSpecial,i3ConfigCondition,i3ConfigVariable,i3ConfigString,i3ConfigNumber
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000113
Josef Litošf5356bf2023-09-12 20:20:25 +0200114" 4.20 Executing shell commands
Josef Litoš62145db2023-09-11 20:12:48 +0200115syn keyword i3ConfigExecKeyword exec contained
116syn keyword i3ConfigExecAlwaysKeyword exec_always contained
Josef Litošf5356bf2023-09-12 20:20:25 +0200117syn match i3ConfigShCmdDelim /\$(/ contained
Josef Litoš02774f92023-09-27 18:57:24 +0200118syn region i3ConfigShCommand start=/\$(/ end=/)/ contained contains=i3ConfigShCmdDelim,i3ConfigExecAction,i3ConfigShCommand,i3ConfigShDelim,i3ConfigShOper,i3ConfigShParam,i3ConfigString,i3ConfigNumber,i3ConfigVariable keepend extend
Josef Litoš62145db2023-09-11 20:12:48 +0200119syn match i3ConfigShDelim /[[\]{}();`]\+/ contained
120syn match i3ConfigShOper /[<>&|+=~^*!.?]\+/ contained
Josef Litoš02774f92023-09-27 18:57:24 +0200121syn match i3ConfigShParam /\<-[0-9A-Za-z_-]\+\>/ contained containedin=i3ConfigVar
Josef Litošf5356bf2023-09-12 20:20:25 +0200122syn region i3ConfigExec start=/^\s*exec\(_always\)\?\( --no-startup-id\)\? [^{]/ skip=/\\$/ end=/$/ contains=i3ConfigExecKeyword,i3ConfigExecAlwaysKeyword,i3ConfigShCommand,i3ConfigShDelim,i3ConfigShOper,i3ConfigShParam,i3ConfigNumber,i3ConfigString,i3ConfigVariable,i3ConfigExecAction keepend
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000123
Josef Litošf5356bf2023-09-12 20:20:25 +0200124" 4.21 Workspaces per output
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000125syn keyword i3ConfigWorkspaceKeyword workspace contained
Josef Litošf5356bf2023-09-12 20:20:25 +0200126syn keyword i3ConfigWorkspaceOutput output contained
Josef Litoš02774f92023-09-27 18:57:24 +0200127syn keyword i3ConfigWorkspaceDir prev next back_and_forth number contained
Josef Litošf5356bf2023-09-12 20:20:25 +0200128syn region i3ConfigWorkspaceLine start=/^workspace / skip=/\\$/ end=/$/ contains=i3ConfigWorkspaceKeyword,i3ConfigNumber,i3ConfigString,i3ConfigGaps,i3ConfigWorkspaceOutput,i3ConfigVariable,i3ConfigBoolean,i3ConfigSeparator keepend
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000129
Josef Litošf5356bf2023-09-12 20:20:25 +0200130" 4.22 Changing colors
131syn match i3ConfigDotOperator /\./ contained
132syn keyword i3ConfigClientOpts focused focused_inactive unfocused urgent placeholder background contained
133syn match i3ConfigKeyword /^client\..*$/ contains=i3ConfigDotOperator,i3ConfigClientOpts,i3ConfigColor,i3ConfigVariable
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000134
Josef Litošf5356bf2023-09-12 20:20:25 +0200135" 4.23 Interprocess communication
136syn match i3ConfigIpcKeyword /ipc-socket/ contained
Josef Litoš02774f92023-09-27 18:57:24 +0200137syn match i3ConfigParamLine /^ipc-socket .*$/ contains=i3ConfigIpcKeyword
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000138
Josef Litošf5356bf2023-09-12 20:20:25 +0200139" 4.24 Focus follows mouse
James Eapena39af022023-12-29 11:50:33 -0500140syn match i3ConfigKeyword /^focus_follows_mouse \(yes\|no\)$/ contains=i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000141
Josef Litošf5356bf2023-09-12 20:20:25 +0200142" 4.25 Mouse warping
143syn keyword i3ConfigMouseWarpingOpts output container none contained
Josef Litoš02774f92023-09-27 18:57:24 +0200144syn match i3ConfigKeyword /^mouse_warping \w*$/ contains=i3ConfigMouseWarpingOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000145
Josef Litošf5356bf2023-09-12 20:20:25 +0200146" 4.26 Popups while fullscreen
147syn keyword i3ConfigPopupFullscreenOpts smart ignore leave_fullscreen contained
Josef Litoš02774f92023-09-27 18:57:24 +0200148syn match i3ConfigKeyword /^popup_during_fullscreen \w*$/ contains=i3ConfigPopupFullscreenOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000149
Josef Litošf5356bf2023-09-12 20:20:25 +0200150" 4.27 Focus wrapping
151syn keyword i3ConfigFocusWrappingOpts force workspace contained
Josef Litoš02774f92023-09-27 18:57:24 +0200152syn match i3ConfigKeyword /^focus_wrapping \(yes\|no\|force\|workspace\)$/ contains=i3ConfigBoolean,i3ConfigFocusWrappingOpts
Josef Litoš62145db2023-09-11 20:12:48 +0200153
Josef Litošf5356bf2023-09-12 20:20:25 +0200154" 4.28 Forcing Xinerama
Josef Litoš02774f92023-09-27 18:57:24 +0200155syn match i3ConfigKeyword /^force_xinerama \(yes\|no\)$/ contains=i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000156
Josef Litošf5356bf2023-09-12 20:20:25 +0200157" 4.29 Automatic workspace back-and-forth
Josef Litoš02774f92023-09-27 18:57:24 +0200158syn match i3ConfigKeyword /^workspace_auto_back_and_forth \(yes\|no\)$/ contains=i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000159
Josef Litošf5356bf2023-09-12 20:20:25 +0200160" 4.30 Delay urgency hint
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000161syn keyword i3ConfigTimeUnit ms contained
Josef Litoš02774f92023-09-27 18:57:24 +0200162syn match i3ConfigKeyword /^force_display_urgency_hint \d\+\( ms\)\?$/ contains=i3ConfigNumber,i3ConfigTimeUnit
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000163
Josef Litošf5356bf2023-09-12 20:20:25 +0200164" 4.31 Focus on window activation
165syn keyword i3ConfigFocusOnActivationOpts smart urgent focus none contained
Josef Litoš02774f92023-09-27 18:57:24 +0200166syn match i3ConfigKeyword /^focus_on_window_activation \w*$/ contains=i3ConfigFocusOnActivationOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000167
Josef Litošf5356bf2023-09-12 20:20:25 +0200168" 4.32 Show marks in title
169syn match i3ConfigShowMarks /^show_marks \(yes\|no\)$/ contains=i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000170
Josef Litošf5356bf2023-09-12 20:20:25 +0200171" 4.34 Tiling drag
172syn keyword i3ConfigTilingDragOpts modifier titlebar contained
Josef Litoš02774f92023-09-27 18:57:24 +0200173syn match i3ConfigKeyword /^tiling_drag\( off\|\( modifier\| titlebar\)\{1,2\}\)$/ contains=i3ConfigTilingDragOpts,i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000174
Josef Litošf5356bf2023-09-12 20:20:25 +0200175" 4.35 Gaps
176syn keyword i3ConfigGapsOpts inner outer horizontal vertical left right top bottom current all set plus minus toggle contained
Josef Litoš02774f92023-09-27 18:57:24 +0200177syn region i3ConfigGaps start=/gaps/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigGapsOpts,i3ConfigNumber,i3ConfigVariable,i3ConfigSeparator keepend
178syn match i3ConfigGapsLine /^gaps .*$/ contains=i3ConfigGaps
Josef Litošf5356bf2023-09-12 20:20:25 +0200179syn keyword i3ConfigSmartGapOpts inverse_outer contained
Josef Litoš02774f92023-09-27 18:57:24 +0200180syn match i3ConfigKeyword /^smart_gaps \(on\|off\|inverse_outer\)$/ contains=i3ConfigSmartGapOpts,i3ConfigBoolean
Josef Litoš62145db2023-09-11 20:12:48 +0200181
Josef Litošf5356bf2023-09-12 20:20:25 +0200182" 5 Configuring bar
Josef Litoš02774f92023-09-27 18:57:24 +0200183syn match i3ConfigBarModifier /^\s\+modifier \S\+$/ contained contains=i3ConfigBindModifier,i3ConfigVariable,i3ConfigBindModkey,i3ConfigBarOptVals
Ivan Grimaldi59943292023-11-11 13:09:26 +0100184syn keyword i3ConfigBarOpts bar i3bar_command status_command workspace_command mode hidden_state id position output tray_output tray_padding separator_symbol workspace_buttons workspace_min_width strip_workspace_numbers strip_workspace_name binding_mode_indicator padding contained
Josef Litoš02774f92023-09-27 18:57:24 +0200185syn keyword i3ConfigBarOptVals dock hide invisible show none top bottom primary nonprimary contained
186syn region i3ConfigBarBlock start=/^bar {$/ end=/^}$/ contains=i3ConfigBarOpts,i3ConfigBarOptVals,i3ConfigBarModifier,i3ConfigBind,i3ConfigString,i3ConfigComment,i3ConfigFont,i3ConfigBoolean,i3ConfigNumber,i3ConfigParen,i3ConfigColor,i3ConfigVariable,i3ConfigColorsBlock,i3ConfigShOper,i3ConfigShCommand fold keepend extend
Josef Litošf5356bf2023-09-12 20:20:25 +0200187
188" 5.16 Color block
Josef Litoš02774f92023-09-27 18:57:24 +0200189syn keyword i3ConfigColorsKeyword colors contained
Josef Litošf5356bf2023-09-12 20:20:25 +0200190syn match i3ConfigColorsOpts /\(focused_\)\?\(background\|statusline\|separator\)\|\(focused\|active\|inactive\|urgent\)_workspace\|binding_mode/ contained
Josef Litoš02774f92023-09-27 18:57:24 +0200191syn region i3ConfigColorsBlock start=/^\s\+colors {$/ end=/^\s\+}$/ contained contains=i3ConfigColorsKeyword,i3ConfigColorsOpts,i3ConfigColor,i3ConfigVariable,i3ConfigComment,i3ConfigParen fold keepend extend
Josef Litošf5356bf2023-09-12 20:20:25 +0200192
Josef Litoš02774f92023-09-27 18:57:24 +0200193" 6.0 Command criteria
194syn keyword i3ConfigConditionProp class instance window_role window_type machine id title urgent workspace con_mark con_id floating_from tiling_from contained
195syn keyword i3ConfigConditionSpecial __focused__ all floating tiling contained
196syn region i3ConfigCondition start=/\[/ end=/\]/ contained contains=i3ConfigShDelim,i3ConfigConditionProp,i3ConfigShOper,i3ConfigConditionSpecial,i3ConfigNumber,i3ConfigString keepend extend
197syn region i3ConfigCriteria start=/\[/ skip=/\\$/ end=/\(;\|$\)/ contained contains=i3ConfigCondition,i3ConfigAction,i3ConfigActionKeyword,i3ConfigOption,i3ConfigBoolean,i3ConfigNumber,i3ConfigVariable,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200198
199" 6.1 Actions through shell
200syn match i3ConfigExecActionKeyword /i3-msg/ contained
Josef Litoš02774f92023-09-27 18:57:24 +0200201syn region i3ConfigExecAction start=/[a-z3-]\+msg "/ skip=/ "\|\\$/ end=/"\|$/ contained contains=i3ConfigExecActionKeyword,i3ConfigShCommand,i3ConfigNumber,i3ConfigShOper,i3ConfigCriteria,i3ConfigAction,i3ConfigActionKeyword,i3ConfigOption,i3ConfigVariable keepend extend
202syn region i3ConfigExecAction start=/[a-z3-]\+msg '/ skip=/ '\|\\$/ end=/'\|$/ contained contains=i3ConfigExecActionKeyword,i3ConfigShCommand,i3ConfigNumber,i3ConfigShOper,i3ConfigCriteria,i3ConfigAction,i3ConfigActionKeyword,i3ConfigOption,i3ConfigVariable keepend extend
203syn region i3ConfigExecAction start=/[a-z3-]\+msg ['"-]\@!/ skip=/\\$/ end=/[&|;})'"]\@=\|$/ contained contains=i3ConfigExecActionKeyword,i3ConfigShCommand,i3ConfigNumber,i3ConfigShOper,i3ConfigCriteria,i3ConfigAction,i3ConfigActionKeyword,i3ConfigOption,i3ConfigVariable keepend extend
Josef Litošf5356bf2023-09-12 20:20:25 +0200204" 6.1 Executing applications (4.20)
Josef Litoš02774f92023-09-27 18:57:24 +0200205syn region i3ConfigAction start=/exec/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigExecKeyword,i3ConfigExecAction,i3ConfigShCommand,i3ConfigShDelim,i3ConfigShOper,i3ConfigShParam,i3ConfigNumber,i3ConfigString,i3ConfigVariable,i3ConfigSeparator keepend
Josef Litošf5356bf2023-09-12 20:20:25 +0200206
207" 6.3 Manipulating layout
208syn keyword i3ConfigLayoutKeyword layout contained
209syn keyword i3ConfigLayoutOpts default tabbed stacking splitv splith toggle split all contained
Josef Litoš02774f92023-09-27 18:57:24 +0200210syn region i3ConfigAction start=/layout/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigLayoutKeyword,i3ConfigLayoutOpts,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200211
212" 6.4 Focusing containers
213syn keyword i3ConfigFocusKeyword focus contained
Ivan Grimaldi59943292023-11-11 13:09:26 +0100214syn keyword i3ConfigFocusOpts left right up down workspace parent child next prev sibling floating tiling mode_toggle contained
Josef Litošf5356bf2023-09-12 20:20:25 +0200215syn keyword i3ConfigFocusOutputOpts left right down up current primary nonprimary next prev contained
Josef Litoš02774f92023-09-27 18:57:24 +0200216syn region i3ConfigFocusOutput start=/ output / skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigWorkspaceOutput,i3ConfigFocusOutputOpts,i3ConfigString,i3ConfigNumber,i3ConfigSeparator keepend
Josef Litošf5356bf2023-09-12 20:20:25 +0200217syn match i3ConfigFocusOutputLine /^focus output .*$/ contains=i3ConfigFocusKeyword,i3ConfigFocusOutput
Josef Litoš02774f92023-09-27 18:57:24 +0200218syn region i3ConfigAction start=/focus/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigFocusKeyword,i3ConfigFocusOpts,i3ConfigFocusOutput,i3ConfigString,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200219
220" 6.8 Focusing workspaces (4.21)
Josef Litoš02774f92023-09-27 18:57:24 +0200221syn region i3ConfigAction start=/workspace / skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigWorkspaceKeyword,i3ConfigWorkspaceDir,i3ConfigNumber,i3ConfigString,i3ConfigGaps,i3ConfigWorkspaceOutput,i3ConfigVariable,i3ConfigBoolean,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200222
Josef Litoš02774f92023-09-27 18:57:24 +0200223" 6.8.2 Renaming workspaces
224syn keyword i3ConfigRenameKeyword rename contained
225syn region i3ConfigAction start=/rename workspace/ end=/[,;]\|$/ contained contains=i3ConfigRenameKeyword,i3ConfigMoveDir,i3ConfigMoveType,i3ConfigNumber,i3ConfigVariable,i3ConfigString keepend transparent
226
227" 6.5,6.9-6.11 Moving containers
Josef Litošf5356bf2023-09-12 20:20:25 +0200228syn keyword i3ConfigMoveKeyword move contained
Josef Litoš02774f92023-09-27 18:57:24 +0200229syn keyword i3ConfigMoveDir left right down up position absolute center to current contained
Josef Litošf5356bf2023-09-12 20:20:25 +0200230syn keyword i3ConfigMoveType window container workspace output mark mouse scratchpad contained
231syn match i3ConfigUnit / px\| ppt/ contained
Josef Litoš02774f92023-09-27 18:57:24 +0200232syn region i3ConfigAction start=/move/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigMoveKeyword,i3ConfigMoveDir,i3ConfigMoveType,i3ConfigWorkspaceDir,i3ConfigUnit,i3ConfigNumber,i3ConfigVariable,i3ConfigString,i3ConfigSeparator,i3ConfigShParam keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200233
234" 6.12 Resizing containers/windows
235syn keyword i3ConfigResizeKeyword resize contained
236syn keyword i3ConfigResizeOpts grow shrink up down left right set width height or contained
Josef Litoš02774f92023-09-27 18:57:24 +0200237syn region i3ConfigAction start=/resize/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigResizeKeyword,i3ConfigResizeOpts,i3ConfigNumber,i3ConfigUnit,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200238
239" 6.14 VIM-like marks
Josef Litoš02774f92023-09-27 18:57:24 +0200240syn match i3ConfigMark /mark\( --\(add\|replace\)\( --toggle\)\?\)\?/ contained contains=i3ConfigShParam
241syn region i3ConfigAction start=/\<mark/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigMark,i3ConfigNumber,i3ConfigString,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200242
243" 6.24 Changing gaps (4.35)
Josef Litoš02774f92023-09-27 18:57:24 +0200244syn region i3ConfigAction start=/gaps/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigGaps keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200245
246" Commands useable in keybinds
Josef Litoš02774f92023-09-27 18:57:24 +0200247syn keyword i3ConfigActionKeyword mode append_layout kill open fullscreen sticky split floating swap unmark show_marks title_window_icon title_format border restart reload exit scratchpad nop bar contained
248syn keyword i3ConfigOption default enable disable toggle key restore current horizontal vertical auto none normal pixel show container with id con_id padding hidden_state hide dock invisible contained
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000249
250" Define the highlighting.
Bram Moolenaar2ecbe532022-07-29 21:36:21 +0100251hi def link i3ConfigError Error
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000252hi def link i3ConfigTodo Todo
Josef Litošf5356bf2023-09-12 20:20:25 +0200253hi def link i3ConfigKeyword Keyword
254hi def link i3ConfigCommand Statement
Josef Litoš02774f92023-09-27 18:57:24 +0200255hi def link i3ConfigParamLine i3ConfigString
Josef Litoš62145db2023-09-11 20:12:48 +0200256hi def link i3ConfigOperator Operator
Josef Litošf5356bf2023-09-12 20:20:25 +0200257hi def link i3ConfigSeparator i3ConfigOperator
Josef Litoš62145db2023-09-11 20:12:48 +0200258hi def link i3ConfigParen Delimiter
Josef Litoš62145db2023-09-11 20:12:48 +0200259hi def link i3ConfigBoolean Boolean
Josef Litošf5356bf2023-09-12 20:20:25 +0200260hi def link i3ConfigString String
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000261hi def link i3ConfigColor Constant
Josef Litošf5356bf2023-09-12 20:20:25 +0200262hi def link i3ConfigNumber Number
Josef Litoš62145db2023-09-11 20:12:48 +0200263hi def link i3ConfigIncludeKeyword i3ConfigKeyword
Josef Litošf5356bf2023-09-12 20:20:25 +0200264hi def link i3ConfigComment Comment
265hi def link i3ConfigFontKeyword i3ConfigKeyword
266hi def link i3ConfigColonOperator i3ConfigOperator
267hi def link i3ConfigFontNamespace i3ConfigOption
268hi def link i3ConfigFontSize i3ConfigNumber
269hi def link i3ConfigFont i3ConfigString
Josef Litoš62145db2023-09-11 20:12:48 +0200270hi def link i3ConfigBindKeyword i3ConfigKeyword
Josef Litošf5356bf2023-09-12 20:20:25 +0200271hi def link i3ConfigBindArgument i3ConfigShParam
272hi def link i3ConfigBindModifier i3ConfigOperator
Josef Litoš62145db2023-09-11 20:12:48 +0200273hi def link i3ConfigBindModkey Special
274hi def link i3ConfigBindCombo SpecialChar
Josef Litoš62145db2023-09-11 20:12:48 +0200275hi def link i3ConfigSizeSpecial i3ConfigOperator
Josef Litošf5356bf2023-09-12 20:20:25 +0200276hi def link i3ConfigOrientationOpts i3ConfigOption
277hi def link i3ConfigWorkspaceLayoutOpts i3ConfigOption
278hi def link i3ConfigTitleAlignOpts i3ConfigOption
279hi def link i3ConfigBorderOpts i3ConfigOption
280hi def link i3ConfigEdgeOpts i3ConfigOption
281hi def link i3ConfigSmartBorderOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200282hi def link i3ConfigVariable Variable
283hi def link i3ConfigSetKeyword i3ConfigKeyword
284hi def link i3ConfigResourceKeyword i3ConfigKeyword
Josef Litoš62145db2023-09-11 20:12:48 +0200285hi def link i3ConfigAssignKeyword i3ConfigKeyword
286hi def link i3ConfigAssignSpecial i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200287hi def link i3ConfigExecKeyword i3ConfigCommand
288hi def link i3ConfigExecAlwaysKeyword i3ConfigKeyword
Josef Litoš62145db2023-09-11 20:12:48 +0200289hi def link i3ConfigShParam PreProc
290hi def link i3ConfigShDelim Delimiter
291hi def link i3ConfigShOper Operator
292hi def link i3ConfigShCmdDelim i3ConfigShDelim
293hi def link i3ConfigShCommand Normal
Josef Litoš62145db2023-09-11 20:12:48 +0200294hi def link i3ConfigWorkspaceKeyword i3ConfigCommand
Josef Litoš02774f92023-09-27 18:57:24 +0200295hi def link i3ConfigWorkspaceOutput i3ConfigMoveType
Josef Litošf5356bf2023-09-12 20:20:25 +0200296hi def link i3ConfigWorkspaceDir i3ConfigOption
297hi def link i3ConfigDotOperator i3ConfigOperator
298hi def link i3ConfigClientOpts i3ConfigOption
299hi def link i3ConfigIpcKeyword i3ConfigKeyword
Josef Litošf5356bf2023-09-12 20:20:25 +0200300hi def link i3ConfigMouseWarpingOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200301hi def link i3ConfigPopupFullscreenOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200302hi def link i3ConfigFocusWrappingOpts i3ConfigOption
Josef Litoš62145db2023-09-11 20:12:48 +0200303hi def link i3ConfigTimeUnit i3ConfigNumber
Josef Litošf5356bf2023-09-12 20:20:25 +0200304hi def link i3ConfigFocusOnActivationOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200305hi def link i3ConfigShowMarks i3ConfigCommand
306hi def link i3ConfigTilingDragOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200307hi def link i3ConfigGapsOpts i3ConfigOption
308hi def link i3ConfigGaps i3ConfigCommand
309hi def link i3ConfigSmartGapOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200310hi def link i3ConfigBarModifier i3ConfigKeyword
311hi def link i3ConfigBarOpts i3ConfigKeyword
Josef Litoš02774f92023-09-27 18:57:24 +0200312hi def link i3ConfigBarOptVals i3ConfigOption
313hi def link i3ConfigColorsKeyword i3ConfigKeyword
Josef Litošf5356bf2023-09-12 20:20:25 +0200314hi def link i3ConfigColorsOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200315hi def link i3ConfigConditionProp i3ConfigShParam
Josef Litoš02774f92023-09-27 18:57:24 +0200316hi def link i3ConfigConditionSpecial Constant
Josef Litošf5356bf2023-09-12 20:20:25 +0200317hi def link i3ConfigExecActionKeyword i3ConfigShCommand
318hi def link i3ConfigExecAction i3ConfigString
319hi def link i3ConfigLayoutKeyword i3ConfigCommand
320hi def link i3ConfigLayoutOpts i3ConfigOption
321hi def link i3ConfigFocusKeyword i3ConfigCommand
322hi def link i3ConfigFocusOpts i3ConfigOption
323hi def link i3ConfigFocusOutputOpts i3ConfigOption
Josef Litoš02774f92023-09-27 18:57:24 +0200324hi def link i3ConfigRenameKeyword i3ConfigCommand
Josef Litošf5356bf2023-09-12 20:20:25 +0200325hi def link i3ConfigMoveKeyword i3ConfigCommand
326hi def link i3ConfigMoveDir i3ConfigOption
Josef Litoš02774f92023-09-27 18:57:24 +0200327hi def link i3ConfigMoveType Constant
Josef Litošf5356bf2023-09-12 20:20:25 +0200328hi def link i3ConfigUnit i3ConfigNumber
329hi def link i3ConfigResizeKeyword i3ConfigCommand
330hi def link i3ConfigResizeOpts i3ConfigOption
Josef Litoš02774f92023-09-27 18:57:24 +0200331hi def link i3ConfigMark i3ConfigCommand
Josef Litošf5356bf2023-09-12 20:20:25 +0200332hi def link i3ConfigActionKeyword i3ConfigCommand
333hi def link i3ConfigOption Type
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000334
Josef Litoš02774f92023-09-27 18:57:24 +0200335let b:current_syntax = "i3config"