blob: c95cb879adcf51d5914f85278e7cad9db237c1da [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)
Josef Litošb1ffc522024-05-24 17:31:36 +02005" Version: 1.2.4
6" Last Change: 2024-05-24
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šdd83b632024-04-15 19:38:04 +020030" String in simpler (matchable end) and more robust (includes `extend` keyword) forms
31syn cluster i3ConfigStrIn contains=i3ConfigShCommand,i3ConfigShDelim,i3ConfigShOper,i3ConfigShParam,@i3ConfigNumVar,i3ConfigExecAction
32syn match i3ConfigString /\(["']\)[^\\"')\]}]*\1/ contained contains=@i3ConfigStrIn
33syn region i3ConfigString start=/"[^\\"')\]}]*[\\')\]}]/ skip=/\\\@<=\("\|$\)/ end=/"\|$/ contained contains=@i3ConfigStrIn keepend extend
34syn region i3ConfigString start=/'[^\\"')\]}]*[\\")\]}]/ skip=/\\\@<=$/ end=/'\|$/ contained contains=@i3ConfigStrIn keepend extend
Josef Litoš02774f92023-09-27 18:57:24 +020035syn match i3ConfigColor /#[0-9A-Fa-f]\{3,8}/ contained
36syn match i3ConfigNumber /[0-9A-Za-z_$-]\@<!-\?\d\+\w\@!/ contained
Josef Litošdd83b632024-04-15 19:38:04 +020037" Grouping of common usages
38syn cluster i3ConfigStrVar contains=i3ConfigString,i3ConfigVariable
39syn cluster i3ConfigNumVar contains=i3ConfigNumber,i3ConfigVariable
40syn cluster i3ConfigColVar contains=i3ConfigColor,i3ConfigVariable
41syn cluster i3ConfigIdent contains=i3ConfigString,i3ConfigNumber,i3ConfigVariable
42syn cluster i3ConfigValue contains=@i3ConfigIdent,i3ConfigBoolean
Josef Litošf5356bf2023-09-12 20:20:25 +020043
44" 4.1 Include directive
Josef Litošdd83b632024-04-15 19:38:04 +020045syn match i3ConfigIncludeCommand /`[^`]*`/ contained contains=@i3ConfigSh
46syn region i3ConfigParamLine matchgroup=i3ConfigKeyword start=/include / end=/$/ contained contains=@i3ConfigStrVar,i3ConfigIncludeCommand,i3ConfigShOper keepend
Josef Litošf5356bf2023-09-12 20:20:25 +020047
48" 4.2 Comments
Josef Litoš679f5ab2024-05-13 22:03:42 +020049syn match i3ConfigComment /#.*$/ contained contains=i3ConfigTodo
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000050
Josef Litošf5356bf2023-09-12 20:20:25 +020051" 4.3 Fonts
Josef Litošdd83b632024-04-15 19:38:04 +020052syn match i3ConfigFontSize / \d\+\(px\)\?$/ contained
Josef Litošf5356bf2023-09-12 20:20:25 +020053syn match i3ConfigColonOperator /:/ contained
Josef Litošdd83b632024-04-15 19:38:04 +020054syn match i3ConfigFontNamespace /pango:/ contained contains=i3ConfigColonOperator
55syn region i3ConfigParamLine matchgroup=i3ConfigKeyword start=/font / skip=/\\$/ end=/$/ contained contains=i3ConfigFontNamespace,i3ConfigFontSize,i3ConfigSeparator keepend containedin=i3ConfigBarBlock
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000056
Josef Litošf5356bf2023-09-12 20:20:25 +020057" 4.4-4.5 Keyboard/Mouse bindings
Josef Litošdd83b632024-04-15 19:38:04 +020058syn match i3ConfigBindArgument /--\(release\|border\|whole-window\|exclude-titlebar\) / contained nextgroup=i3ConfigBindArgument,i3ConfigBindCombo
Josef Litoš62145db2023-09-11 20:12:48 +020059syn match i3ConfigBindModifier /+/ contained
Josef Litoš02774f92023-09-27 18:57:24 +020060syn keyword i3ConfigBindModkey Ctrl Shift Mod1 Mod2 Mod3 Mod4 Mod5 contained
Josef Litošdd83b632024-04-15 19:38:04 +020061syn match i3ConfigBindCombo /[$0-9A-Za-z_+]\+/ contained contains=i3ConfigBindModifier,i3ConfigVariable,i3ConfigBindModkey nextgroup=i3ConfigBind
62syn cluster i3ConfigBinder contains=i3ConfigCriteria,@i3ConfigCommand,i3ConfigSeparator
63syn region i3ConfigBind start=/\zs/ skip=/\\$/ end=/$/ contained contains=@i3ConfigBinder keepend
64syn keyword i3ConfigBindKeyword bindsym bindcode contained skipwhite nextgroup=i3ConfigBindArgument,i3ConfigBindCombo
Josef Litoš62145db2023-09-11 20:12:48 +020065
Josef Litošf5356bf2023-09-12 20:20:25 +020066" 4.6 Binding modes
Josef Litoš679f5ab2024-05-13 22:03:42 +020067syn region i3ConfigModeBlock matchgroup=i3ConfigKeyword start=/mode\ze\( --pango_markup\)\? \([^'" {]\+\|'[^']\+'\|".\+"\)\s\+{$/ end=/^}\zs$/ contained contains=i3ConfigShParam,@i3ConfigStrVar,i3ConfigBindKeyword,i3ConfigComment,i3ConfigParen fold keepend extend
Josef Litoš62145db2023-09-11 20:12:48 +020068
Josef Litošf5356bf2023-09-12 20:20:25 +020069" 4.7 Floating modifier
Josef Litošb1ffc522024-05-24 17:31:36 +020070syn match i3ConfigKeyword /floating_modifier [$A-Z][0-9A-Za-z]*$/ contained contains=i3ConfigVariable,i3ConfigBindModkey
Josef Litošf5356bf2023-09-12 20:20:25 +020071
72" 4.8 Floating window size
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000073syn keyword i3ConfigSizeSpecial x contained
Josef Litošdd83b632024-04-15 19:38:04 +020074syn match i3ConfigSize /-\?\d\+ x -\?\d\+/ contained contains=i3ConfigSizeSpecial,i3ConfigNumber
75syn keyword i3ConfigKeyword floating_maximum_size floating_minimum_size contained skipwhite nextgroup=i3ConfigSize
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000076
Josef Litošf5356bf2023-09-12 20:20:25 +020077" 4.9 Orientation
78syn keyword i3ConfigOrientationOpts vertical horizontal auto contained
Josef Litošdd83b632024-04-15 19:38:04 +020079syn keyword i3ConfigKeyword default_orientation contained skipwhite nextgroup=i3ConfigOrientationOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000080
Josef Litošf5356bf2023-09-12 20:20:25 +020081" 4.10 Layout mode
82syn keyword i3ConfigWorkspaceLayoutOpts default stacking tabbed contained
Josef Litošdd83b632024-04-15 19:38:04 +020083syn keyword i3ConfigKeyword workspace_layout contained skipwhite nextgroup=i3ConfigWorkspaceLayoutOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000084
Josef Litošf5356bf2023-09-12 20:20:25 +020085" 4.11 Title alignment
86syn keyword i3ConfigTitleAlignOpts left center right contained
Josef Litošdd83b632024-04-15 19:38:04 +020087syn keyword i3ConfigKeyword title_align contained skipwhite nextgroup=i3ConfigTitleAlignOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000088
Josef Litošdd83b632024-04-15 19:38:04 +020089" 4.12 Border size
90syn keyword i3ConfigBorderOpts none normal pixel contained skipwhite nextgroup=@i3ConfigNumVar
91syn keyword i3ConfigKeyword default_floating_border default_border contained skipwhite nextgroup=i3ConfigBorderOpts
Josef Litoš62145db2023-09-11 20:12:48 +020092
Josef Litošf5356bf2023-09-12 20:20:25 +020093" 4.13 Hide edge borders
94syn keyword i3ConfigEdgeOpts none vertical horizontal both smart smart_no_gaps contained
Josef Litošdd83b632024-04-15 19:38:04 +020095syn keyword i3ConfigKeyword hide_edge_borders contained skipwhite nextgroup=i3ConfigEdgeOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000096
Josef Litošf5356bf2023-09-12 20:20:25 +020097" 4.14 Smart Borders
98syn keyword i3ConfigSmartBorderOpts no_gaps contained
Josef Litošdd83b632024-04-15 19:38:04 +020099syn keyword i3ConfigKeyword smart_borders contained skipwhite nextgroup=i3ConfigSmartBorderOpts,i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000100
Josef Litošf5356bf2023-09-12 20:20:25 +0200101" 4.15 Arbitrary commands
Josef Litošdd83b632024-04-15 19:38:04 +0200102syn keyword i3ConfigKeyword for_window contained skipwhite nextgroup=i3ConfigCriteria
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000103
Josef Litošf5356bf2023-09-12 20:20:25 +0200104" 4.16 No opening focus
Josef Litošdd83b632024-04-15 19:38:04 +0200105syn keyword i3ConfigKeyword no_focus contained skipwhite nextgroup=i3ConfigCondition
Josef Litošf5356bf2023-09-12 20:20:25 +0200106
107" 4.17 Variables
Josef Litoš02774f92023-09-27 18:57:24 +0200108syn match i3ConfigVariable /\$[0-9A-Za-z_:|[\]-]\+/
Josef Litošdd83b632024-04-15 19:38:04 +0200109syn region i3ConfigSet start=/\$/ skip=/\\$/ end=/$/ contained contains=@i3ConfigSh,@i3ConfigValue,i3ConfigColor,i3ConfigBindModkey keepend
110syn keyword i3ConfigKeyword set contained skipwhite nextgroup=i3ConfigSet
Josef Litošf5356bf2023-09-12 20:20:25 +0200111
112" 4.18 X resources
Josef Litošdd83b632024-04-15 19:38:04 +0200113syn region i3ConfigParamLine matchgroup=i3ConfigKeyword start=/set_from_resource\ze \$/ end=/$/ contained contains=@i3ConfigColVar,i3ConfigDotOperator
Josef Litošf5356bf2023-09-12 20:20:25 +0200114
115" 4.19 Assign clients to workspaces
Josef Litoš02774f92023-09-27 18:57:24 +0200116syn match i3ConfigAssignSpecial /→\|number/ contained
Josef Litošdd83b632024-04-15 19:38:04 +0200117syn region i3ConfigKeyword start=/assign / end=/$/ contained contains=i3ConfigAssignSpecial,i3ConfigCondition,@i3ConfigIdent keepend
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000118
Josef Litošf5356bf2023-09-12 20:20:25 +0200119" 4.20 Executing shell commands
Josef Litošdd83b632024-04-15 19:38:04 +0200120syn region i3ConfigShCommand matchgroup=i3ConfigShDelim start=/\$(/ end=/)/ contained contains=i3ConfigExecAction,i3ConfigShCommand,i3ConfigShDelim,i3ConfigShOper,i3ConfigShParam,i3ConfigString,i3ConfigNumber,i3ConfigVariable extend
Josef Litoš62145db2023-09-11 20:12:48 +0200121syn match i3ConfigShDelim /[[\]{}();`]\+/ contained
122syn match i3ConfigShOper /[<>&|+=~^*!.?]\+/ contained
Josef Litošdd83b632024-04-15 19:38:04 +0200123syn match i3ConfigShParam /\<-[A-Za-z-][0-9A-Za-z_-]*\>/ contained
124syn cluster i3ConfigSh contains=@i3ConfigIdent,i3ConfigShOper,i3ConfigShDelim,i3ConfigShParam,i3ConfigShCommand
Josef Litoš679f5ab2024-05-13 22:03:42 +0200125syn region i3ConfigExec start=/ \ze[^{]/ skip=/\\$/ end=/$/ contained contains=i3ConfigExecAction,@i3ConfigSh keepend
126syn keyword i3ConfigKeyword exec_always exec contained nextgroup=i3ConfigExec
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000127
Josef Litošf5356bf2023-09-12 20:20:25 +0200128" 4.21 Workspaces per output
Josef Litošdd83b632024-04-15 19:38:04 +0200129syn match i3ConfigOutputIdent /[^'",; ]\+/ contained contains=@i3ConfigIdent,i3ConfigColonOperator skipwhite nextgroup=i3ConfigOutputIdent
130syn region i3ConfigOutputIdent start=/['"]/ end=/\ze/ contained contains=@i3ConfigIdent skipwhite nextgroup=i3ConfigOutputIdent
131syn keyword i3ConfigOutput output contained skipwhite nextgroup=i3ConfigOutputIdent
132syn match i3ConfigWorkspaceIdent /[^'",; ]\+/ contained contains=@i3ConfigIdent skipwhite nextgroup=i3ConfigGaps,i3ConfigOutput
133syn region i3ConfigWorkspaceIdent start=/['"]/ end=/\ze/ contained contains=@i3ConfigIdent skipwhite nextgroup=i3ConfigGaps,i3ConfigOutput
134syn keyword i3ConfigKeyword workspace contained skipwhite nextgroup=i3ConfigWorkspaceIdent
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000135
Josef Litošf5356bf2023-09-12 20:20:25 +0200136" 4.22 Changing colors
Josef Litošdd83b632024-04-15 19:38:04 +0200137syn keyword i3ConfigClientOpts focused focused_inactive focused_tab_title unfocused urgent placeholder background contained skipwhite nextgroup=i3ConfigColorSeq
138syn match i3ConfigDotOperator /\./ contained nextgroup=i3ConfigClientOpts
139syn keyword i3ConfigKeyword client contained nextgroup=i3ConfigDotOperator
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000140
Josef Litošf5356bf2023-09-12 20:20:25 +0200141" 4.23 Interprocess communication
Josef Litošdd83b632024-04-15 19:38:04 +0200142syn region i3ConfigParamLine matchgroup=i3ConfigKeyword start=/ipc-socket / end=/$/ contained contains=i3ConfigNumber,i3ConfigShOper
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000143
Josef Litošf5356bf2023-09-12 20:20:25 +0200144" 4.24 Focus follows mouse
Josef Litošdd83b632024-04-15 19:38:04 +0200145syn keyword i3ConfigFocusFollowsMouseOpts always contained
146syn keyword i3ConfigKeyword focus_follows_mouse contained skipwhite nextgroup=i3ConfigBoolean,i3ConfigFocusFollowsMouseOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000147
Josef Litošf5356bf2023-09-12 20:20:25 +0200148" 4.25 Mouse warping
149syn keyword i3ConfigMouseWarpingOpts output container none contained
Josef Litošdd83b632024-04-15 19:38:04 +0200150syn keyword i3ConfigKeyword mouse_warping contained skipwhite nextgroup=i3ConfigMouseWarpingOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000151
Josef Litošf5356bf2023-09-12 20:20:25 +0200152" 4.26 Popups while fullscreen
153syn keyword i3ConfigPopupFullscreenOpts smart ignore leave_fullscreen contained
Josef Litošdd83b632024-04-15 19:38:04 +0200154syn keyword i3ConfigKeyword popup_during_fullscreen contained skipwhite nextgroup=i3ConfigPopupFullscreenOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000155
Josef Litošf5356bf2023-09-12 20:20:25 +0200156" 4.27 Focus wrapping
157syn keyword i3ConfigFocusWrappingOpts force workspace contained
Josef Litošdd83b632024-04-15 19:38:04 +0200158syn keyword i3ConfigKeyword focus_wrapping contained skipwhite nextgroup=i3ConfigBoolean,i3ConfigFocusWrappingOpts
Josef Litoš62145db2023-09-11 20:12:48 +0200159
Josef Litošf5356bf2023-09-12 20:20:25 +0200160" 4.28 Forcing Xinerama
Josef Litošf5356bf2023-09-12 20:20:25 +0200161" 4.29 Automatic workspace back-and-forth
Josef Litošdd83b632024-04-15 19:38:04 +0200162" 4.32 Show marks in title
163syn keyword i3ConfigKeyword force_xinerama workspace_auto_back_and_forth show_marks contained skipwhite nextgroup=i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000164
Josef Litošf5356bf2023-09-12 20:20:25 +0200165" 4.30 Delay urgency hint
Josef Litošdd83b632024-04-15 19:38:04 +0200166syn match i3ConfigTimeUnit / \d\+\( ms\)\?$/ contained contains=i3ConfigNumber
167syn keyword i3ConfigKeyword force_display_urgency_hint contained nextgroup=i3ConfigTimeUnit
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000168
Josef Litošf5356bf2023-09-12 20:20:25 +0200169" 4.31 Focus on window activation
170syn keyword i3ConfigFocusOnActivationOpts smart urgent focus none contained
Josef Litošdd83b632024-04-15 19:38:04 +0200171syn keyword i3ConfigKeyword focus_on_window_activation contained skipwhite nextgroup=i3ConfigFocusOnActivationOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000172
Josef Litošf5356bf2023-09-12 20:20:25 +0200173" 4.34 Tiling drag
Josef Litošdd83b632024-04-15 19:38:04 +0200174syn keyword i3ConfigTilingDragOpts modifier titlebar contained skipwhite nextgroup=i3ConfigTilingDragOpts
175syn keyword i3ConfigKeyword tiling_drag contained skipwhite nextgroup=i3ConfigTilingDragOpts,i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000176
Josef Litošdd83b632024-04-15 19:38:04 +0200177" 4.35 Gaps (+6.24)
178syn keyword i3ConfigGapsWhich inner outer horizontal vertical left right top bottom contained skipwhite nextgroup=i3ConfigGapsWhere,@i3ConfigNumVar
179syn keyword i3ConfigGapsWhere current all contained skipwhite nextgroup=i3ConfigGapsOper
180syn keyword i3ConfigGapsOper set plus minus toggle contained skipwhite nextgroup=@i3ConfigNumVar
181syn match i3ConfigGaps /gaps/ contained contains=i3ConfigCommand skipwhite nextgroup=i3ConfigGapsWhich
182syn keyword i3ConfigCommand gaps contained skipwhite nextgroup=i3ConfigGapsWhich
183
184syn keyword i3ConfigSmartGapOpts inverse_outer toggle contained
185syn keyword i3ConfigKeyword smart_gaps contained skipwhite nextgroup=i3ConfigSmartGapOpts,i3ConfigBoolean
Josef Litoš62145db2023-09-11 20:12:48 +0200186
Josef Litošf5356bf2023-09-12 20:20:25 +0200187" 5 Configuring bar
Josef Litošdd83b632024-04-15 19:38:04 +0200188syn keyword i3ConfigBarOpts modifier contained skipwhite nextgroup=i3ConfigBindCombo,i3ConfigBarOptVals
189syn keyword i3ConfigBarOpts i3bar_command status_command workspace_command contained skipwhite nextgroup=@i3ConfigSh
190syn keyword i3ConfigBarOpts 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 skipwhite nextgroup=i3ConfigBarOptVals,@i3ConfigValue,i3ConfigShOper
Josef Litoš02774f92023-09-27 18:57:24 +0200191syn keyword i3ConfigBarOptVals dock hide invisible show none top bottom primary nonprimary contained
Josef Litoš679f5ab2024-05-13 22:03:42 +0200192syn region i3ConfigBarBlock matchgroup=i3ConfigKeyword start=/bar\ze {$/ end=/^\s*}\zs$/ contained contains=i3ConfigBarOpts,i3ConfigComment,i3ConfigParen,i3ConfigBindKeyword,i3ConfigColorsBlock fold keepend extend
Josef Litošf5356bf2023-09-12 20:20:25 +0200193
194" 5.16 Color block
Josef Litošdd83b632024-04-15 19:38:04 +0200195syn match i3ConfigColorSeq /#[0-9A-Fa-f]\{3,8}\|\$[0-9A-Za-z_:|[\]-]\+/ contained contains=@i3ConfigColVar skipwhite nextgroup=i3ConfigColorSeq
196syn keyword i3ConfigColorsOpts background statusline separator contained skipwhite nextgroup=@i3ConfigColVar
197syn match i3ConfigColorsOpts /focused_\(background\|statusline\|separator\)\|\(focused\|active\|inactive\|urgent\)_workspace\|binding_mode/ contained skipwhite nextgroup=i3ConfigColorSeq
198syn region i3ConfigColorsBlock matchgroup=i3ConfigKeyword start=/^\s\+colors \ze{$/ end=/^\s\+}\zs$/ contained contains=i3ConfigColorsOpts,i3ConfigComment,i3ConfigParen fold keepend extend
Josef Litošf5356bf2023-09-12 20:20:25 +0200199
Josef Litoš02774f92023-09-27 18:57:24 +0200200" 6.0 Command criteria
201syn keyword i3ConfigConditionProp class instance window_role window_type machine id title urgent workspace con_mark con_id floating_from tiling_from contained
202syn keyword i3ConfigConditionSpecial __focused__ all floating tiling contained
Josef Litošdd83b632024-04-15 19:38:04 +0200203syn region i3ConfigCondition matchgroup=i3ConfigShDelim start=/\[/ end=/\]/ contained contains=i3ConfigConditionProp,i3ConfigShOper,i3ConfigConditionSpecial,@i3ConfigIdent keepend extend
204syn region i3ConfigCriteria start=/\[/ skip=/\\$/ end=/\(;\|$\)/ contained contains=i3ConfigCondition,@i3ConfigCommand,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200205
206" 6.1 Actions through shell
207syn match i3ConfigExecActionKeyword /i3-msg/ contained
Josef Litošdd83b632024-04-15 19:38:04 +0200208syn cluster i3ConfigExecActionVal contains=i3ConfigExecActionKeyword,i3ConfigCriteria,i3ConfigAction,i3ConfigActionKeyword,i3ConfigOption,@i3ConfigNumVar
209syn region i3ConfigExecAction start=/[a-z3-]\+msg "/ skip=/ "\|\\$/ end=/"\|$/ contained contains=i3ConfigExecActionKeyword,@i3ConfigExecActionVal keepend extend
210syn region i3ConfigExecAction start=/[a-z3-]\+msg '/ skip=/ '\|\\$/ end=/'\|$/ contained contains=i3ConfigExecActionKeyword,@i3ConfigExecActionVal keepend extend
211syn region i3ConfigExecAction start=/[a-z3-]\+msg ['"-]\@!/ skip=/\\$/ end=/[&|;})'"]\@=\|$/ contained contains=i3ConfigExecActionKeyword,@i3ConfigExecActionVal keepend extend
Josef Litošf5356bf2023-09-12 20:20:25 +0200212" 6.1 Executing applications (4.20)
Josef Litošdd83b632024-04-15 19:38:04 +0200213syn region i3ConfigAction matchgroup=i3ConfigCommand start=/exec / skip=/\\$/ end=/\ze[,;]\|$/ contained contains=i3ConfigExecAction,@i3ConfigSh keepend
Josef Litošf5356bf2023-09-12 20:20:25 +0200214
215" 6.3 Manipulating layout
Josef Litošf5356bf2023-09-12 20:20:25 +0200216syn keyword i3ConfigLayoutOpts default tabbed stacking splitv splith toggle split all contained
Josef Litošdd83b632024-04-15 19:38:04 +0200217syn region i3ConfigAction matchgroup=i3ConfigCommand start=/layout / skip=/\\$/ end=/\ze[,;]\|$/ contained contains=i3ConfigLayoutOpts keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200218
219" 6.4 Focusing containers
Josef Litošdd83b632024-04-15 19:38:04 +0200220syn keyword i3ConfigFocusOpts left right up down parent child next prev sibling floating tiling mode_toggle contained
221syn keyword i3ConfigOutputDir left right down up current primary nonprimary next prev contained skipwhite
222syn keyword i3ConfigFocusOutput output contained skipwhite nextgroup=i3ConfigOutputIdent,i3ConfigOutputDir
223syn keyword i3ConfigActionKeyword focus contained skipwhite nextgroup=i3ConfigFocusOpts,i3ConfigFocusOutput
Josef Litoš679f5ab2024-05-13 22:03:42 +0200224syn keyword i3ConfigKeyword focus skipwhite contained nextgroup=i3ConfigFocusOutput
Josef Litošf5356bf2023-09-12 20:20:25 +0200225
226" 6.8 Focusing workspaces (4.21)
Josef Litošdd83b632024-04-15 19:38:04 +0200227syn keyword i3ConfigWorkspaceDir prev next back_and_forth contained
228syn keyword i3ConfigWorkspaceDir number contained skipwhite nextgroup=i3ConfigWorkspaceIdent
229syn keyword i3ConfigActionKeyword workspace contained skipwhite nextgroup=i3ConfigWorkspaceDir,i3ConfigWorkspaceIdent
Josef Litošf5356bf2023-09-12 20:20:25 +0200230
Josef Litoš02774f92023-09-27 18:57:24 +0200231" 6.8.2 Renaming workspaces
Josef Litošdd83b632024-04-15 19:38:04 +0200232syn region i3ConfigWorkspaceFromTo start=/workspace\( .*\)\? to/ end=/\ze[,;]\|$/ contained contains=i3ConfigMoveType,@i3ConfigWorkspaceIdent keepend transparent
233syn keyword i3ConfigActionKeyword rename contained skipwhite nextgroup=i3ConfigWorkspaceFromTo
Josef Litoš02774f92023-09-27 18:57:24 +0200234
235" 6.5,6.9-6.11 Moving containers
Josef Litošdd83b632024-04-15 19:38:04 +0200236syn match i3ConfigUnit /-\?\d\+\( px\| ppt\)\?/ contained contains=i3ConfigNumber skipwhite nextgroup=i3ConfigUnit,i3ConfigResizeExtra
237syn keyword i3ConfigMoveDir left right down up position contained skipwhite nextgroup=i3ConfigUnit
238syn match i3ConfigMoveDir /position \(mouse\|center\)/ contained
239syn keyword i3ConfigMoveDir absolute contained skipwhite nextgroup=i3ConfigMoveDir
240syn keyword i3ConfigMoveDir absolute contained
241
242syn keyword i3ConfigMoveType mark contained skipwhite nextgroup=i3ConfigOutputIdent
243syn keyword i3ConfigMoveType scratchpad contained
244syn keyword i3ConfigMoveType output contained skipwhite nextgroup=i3ConfigOutputIdent,i3ConfigOutputDir
245syn keyword i3ConfigMoveType workspace contained skipwhite nextgroup=i3ConfigMoveType,i3ConfigWorkspaceIdent,i3ConfigWorkspaceDir
246syn keyword i3ConfigMoveType window container contained skipwhite nextgroup=i3ConfigMoveType
247syn keyword i3ConfigMoveTo to contained
248syn match i3ConfigMoveType /to/ contained contains=i3ConfigMoveTo skipwhite nextgroup=i3ConfigMoveType
249syn match i3ConfigActionKeyword /move\( --no-auto-back-and-forth\)\?/ contained contains=i3ConfigShParam skipwhite nextgroup=i3ConfigMoveType,i3ConfigMoveDir
Josef Litošf5356bf2023-09-12 20:20:25 +0200250
251" 6.12 Resizing containers/windows
Josef Litošdd83b632024-04-15 19:38:04 +0200252syn keyword i3ConfigResizeExtra or height contained skipwhite nextgroup=i3ConfigUnit
253syn keyword i3ConfigResizeDir up down left right width height contained skipwhite nextgroup=i3ConfigUnit
254syn keyword i3ConfigResizeType grow shrink contained skipwhite nextgroup=i3ConfigResizeDir
255syn keyword i3ConfigResizeType set contained skipwhite nextgroup=i3ConfigResizeDir,i3ConfigUnit
256syn keyword i3ConfigActionKeyword resize contained skipwhite nextgroup=i3ConfigResizeType
Josef Litošf5356bf2023-09-12 20:20:25 +0200257
258" 6.14 VIM-like marks
Josef Litošdd83b632024-04-15 19:38:04 +0200259syn match i3ConfigMarkOpt /--\(add\|replace\)\( --toggle\)\?/ contained contains=i3ConfigShParam skipwhite nextgroup=i3ConfigOutputIdent
260syn keyword i3ConfigActionKeyword mark contained skipwhite nextgroup=i3ConfigMarkOpt,i3ConfigOutputIdent
Josef Litošf5356bf2023-09-12 20:20:25 +0200261
Josef Litošdd83b632024-04-15 19:38:04 +0200262" Commands usable for direct config calls - for enforcing start of line for Commands
Josef Litoš679f5ab2024-05-13 22:03:42 +0200263syn match i3ConfigTopLevelDirective /^\s*/ nextgroup=i3ConfigComment,i3ConfigKeyword,i3ConfigCommand,i3ConfigBindKeyword,i3ConfigParamLine,i3ConfigModeBlock,i3ConfigBarBlock,i3ConfigError
Josef Litošf5356bf2023-09-12 20:20:25 +0200264
265" Commands useable in keybinds
Josef Litošdd83b632024-04-15 19:38:04 +0200266syn keyword i3ConfigActionKeyword mode append_layout kill open fullscreen sticky split floating swap unmark title_window_icon title_format border restart reload exit scratchpad nop bar contained skipwhite nextgroup=i3ConfigOption,@i3ConfigValue
267syn 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 skipwhite nextgroup=i3ConfigOption,@i3ConfigValue
268" Commands usable at runtime (outside loading config)
269syn cluster i3ConfigCommand contains=i3ConfigCommand,i3ConfigAction,i3ConfigActionKeyword,@i3ConfigValue,i3ConfigColor
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000270
271" Define the highlighting.
Bram Moolenaar2ecbe532022-07-29 21:36:21 +0100272hi def link i3ConfigError Error
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000273hi def link i3ConfigTodo Todo
Josef Litošf5356bf2023-09-12 20:20:25 +0200274hi def link i3ConfigKeyword Keyword
275hi def link i3ConfigCommand Statement
Josef Litoš02774f92023-09-27 18:57:24 +0200276hi def link i3ConfigParamLine i3ConfigString
Josef Litoš62145db2023-09-11 20:12:48 +0200277hi def link i3ConfigOperator Operator
Josef Litošf5356bf2023-09-12 20:20:25 +0200278hi def link i3ConfigSeparator i3ConfigOperator
Josef Litoš62145db2023-09-11 20:12:48 +0200279hi def link i3ConfigParen Delimiter
Josef Litoš62145db2023-09-11 20:12:48 +0200280hi def link i3ConfigBoolean Boolean
Josef Litošf5356bf2023-09-12 20:20:25 +0200281hi def link i3ConfigString String
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000282hi def link i3ConfigColor Constant
Josef Litošf5356bf2023-09-12 20:20:25 +0200283hi def link i3ConfigNumber Number
Josef Litošf5356bf2023-09-12 20:20:25 +0200284hi def link i3ConfigComment Comment
Josef Litošf5356bf2023-09-12 20:20:25 +0200285hi def link i3ConfigColonOperator i3ConfigOperator
286hi def link i3ConfigFontNamespace i3ConfigOption
287hi def link i3ConfigFontSize i3ConfigNumber
Josef Litošf5356bf2023-09-12 20:20:25 +0200288hi def link i3ConfigBindArgument i3ConfigShParam
289hi def link i3ConfigBindModifier i3ConfigOperator
Josef Litoš62145db2023-09-11 20:12:48 +0200290hi def link i3ConfigBindModkey Special
291hi def link i3ConfigBindCombo SpecialChar
Josef Litošdd83b632024-04-15 19:38:04 +0200292hi def link i3ConfigBindKeyword i3ConfigKeyword
Josef Litoš62145db2023-09-11 20:12:48 +0200293hi def link i3ConfigSizeSpecial i3ConfigOperator
Josef Litošf5356bf2023-09-12 20:20:25 +0200294hi def link i3ConfigOrientationOpts i3ConfigOption
295hi def link i3ConfigWorkspaceLayoutOpts i3ConfigOption
296hi def link i3ConfigTitleAlignOpts i3ConfigOption
297hi def link i3ConfigBorderOpts i3ConfigOption
298hi def link i3ConfigEdgeOpts i3ConfigOption
299hi def link i3ConfigSmartBorderOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200300hi def link i3ConfigVariable Variable
Josef Litoš62145db2023-09-11 20:12:48 +0200301hi def link i3ConfigAssignSpecial i3ConfigOption
Josef Litoš62145db2023-09-11 20:12:48 +0200302hi def link i3ConfigShParam PreProc
303hi def link i3ConfigShDelim Delimiter
304hi def link i3ConfigShOper Operator
Josef Litoš62145db2023-09-11 20:12:48 +0200305hi def link i3ConfigShCommand Normal
Josef Litošdd83b632024-04-15 19:38:04 +0200306hi def link i3ConfigOutputIdent i3ConfigParamLine
307hi def link i3ConfigOutput i3ConfigMoveType
308hi def link i3ConfigWorkspaceIdent i3ConfigParamLine
Josef Litošf5356bf2023-09-12 20:20:25 +0200309hi def link i3ConfigDotOperator i3ConfigOperator
310hi def link i3ConfigClientOpts i3ConfigOption
Josef Litošdd83b632024-04-15 19:38:04 +0200311hi def link i3ConfigFocusFollowsMouseOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200312hi def link i3ConfigMouseWarpingOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200313hi def link i3ConfigPopupFullscreenOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200314hi def link i3ConfigFocusWrappingOpts i3ConfigOption
Josef Litoš62145db2023-09-11 20:12:48 +0200315hi def link i3ConfigTimeUnit i3ConfigNumber
Josef Litošf5356bf2023-09-12 20:20:25 +0200316hi def link i3ConfigFocusOnActivationOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200317hi def link i3ConfigTilingDragOpts i3ConfigOption
Josef Litošdd83b632024-04-15 19:38:04 +0200318hi def link i3ConfigGapsWhich i3ConfigOption
319hi def link i3ConfigGapsWhere i3ConfigOption
320hi def link i3ConfigGapsOper i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200321hi def link i3ConfigSmartGapOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200322hi def link i3ConfigBarModifier i3ConfigKeyword
323hi def link i3ConfigBarOpts i3ConfigKeyword
Josef Litoš02774f92023-09-27 18:57:24 +0200324hi def link i3ConfigBarOptVals i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200325hi def link i3ConfigColorsOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200326hi def link i3ConfigConditionProp i3ConfigShParam
Josef Litoš02774f92023-09-27 18:57:24 +0200327hi def link i3ConfigConditionSpecial Constant
Josef Litošf5356bf2023-09-12 20:20:25 +0200328hi def link i3ConfigExecActionKeyword i3ConfigShCommand
329hi def link i3ConfigExecAction i3ConfigString
Josef Litošf5356bf2023-09-12 20:20:25 +0200330hi def link i3ConfigLayoutOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200331hi def link i3ConfigFocusOpts i3ConfigOption
Josef Litošdd83b632024-04-15 19:38:04 +0200332hi def link i3ConfigOutputDir i3ConfigOption
333hi def link i3ConfigFocusOutput i3ConfigOutput
334hi def link i3ConfigWorkspaceDir i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200335hi def link i3ConfigMoveDir i3ConfigOption
Josef Litoš02774f92023-09-27 18:57:24 +0200336hi def link i3ConfigMoveType Constant
Josef Litošdd83b632024-04-15 19:38:04 +0200337hi def link i3ConfigMoveTo i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200338hi def link i3ConfigUnit i3ConfigNumber
Josef Litošdd83b632024-04-15 19:38:04 +0200339hi def link i3ConfigResizeExtra i3ConfigOption
340hi def link i3ConfigResizeDir i3ConfigOption
341hi def link i3ConfigResizeType i3ConfigOption
Josef Litoš02774f92023-09-27 18:57:24 +0200342hi def link i3ConfigMark i3ConfigCommand
Josef Litošf5356bf2023-09-12 20:20:25 +0200343hi def link i3ConfigActionKeyword i3ConfigCommand
344hi def link i3ConfigOption Type
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000345
Josef Litoš02774f92023-09-27 18:57:24 +0200346let b:current_syntax = "i3config"