blob: d4512525f91a6697bc44bd4717ee3f7b76d0cf7c [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š02774f92023-09-27 18:57:24 +02005" Version: 1.0.0
Ivan Grimaldi59943292023-11-11 13:09:26 +01006" Last Change: 2023-11-11
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
Josef Litoš02774f92023-09-27 18:57:24 +0200103syn match i3ConfigSet /^set \$.*$/ contains=i3ConfigSetKeyword,i3ConfigVariable,i3ConfigColor,i3ConfigString,i3ConfigNumber,i3ConfigShCommand,i3ConfigShDelim,i3ConfigShParam,i3ConfigShOper,i3ConfigBindModkey
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
140syn keyword i3ConfigFocusFollowsMouseOpts always contained
Josef Litoš02774f92023-09-27 18:57:24 +0200141syn match i3ConfigKeyword /^focus_follows_mouse \(yes\|no\|always\)$/ contains=i3ConfigBoolean,i3ConfigFocusFollowsMouseOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000142
Josef Litošf5356bf2023-09-12 20:20:25 +0200143" 4.25 Mouse warping
144syn keyword i3ConfigMouseWarpingOpts output container none contained
Josef Litoš02774f92023-09-27 18:57:24 +0200145syn match i3ConfigKeyword /^mouse_warping \w*$/ contains=i3ConfigMouseWarpingOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000146
Josef Litošf5356bf2023-09-12 20:20:25 +0200147" 4.26 Popups while fullscreen
148syn keyword i3ConfigPopupFullscreenOpts smart ignore leave_fullscreen contained
Josef Litoš02774f92023-09-27 18:57:24 +0200149syn match i3ConfigKeyword /^popup_during_fullscreen \w*$/ contains=i3ConfigPopupFullscreenOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000150
Josef Litošf5356bf2023-09-12 20:20:25 +0200151" 4.27 Focus wrapping
152syn keyword i3ConfigFocusWrappingOpts force workspace contained
Josef Litoš02774f92023-09-27 18:57:24 +0200153syn match i3ConfigKeyword /^focus_wrapping \(yes\|no\|force\|workspace\)$/ contains=i3ConfigBoolean,i3ConfigFocusWrappingOpts
Josef Litoš62145db2023-09-11 20:12:48 +0200154
Josef Litošf5356bf2023-09-12 20:20:25 +0200155" 4.28 Forcing Xinerama
Josef Litoš02774f92023-09-27 18:57:24 +0200156syn match i3ConfigKeyword /^force_xinerama \(yes\|no\)$/ contains=i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000157
Josef Litošf5356bf2023-09-12 20:20:25 +0200158" 4.29 Automatic workspace back-and-forth
Josef Litoš02774f92023-09-27 18:57:24 +0200159syn match i3ConfigKeyword /^workspace_auto_back_and_forth \(yes\|no\)$/ contains=i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000160
Josef Litošf5356bf2023-09-12 20:20:25 +0200161" 4.30 Delay urgency hint
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000162syn keyword i3ConfigTimeUnit ms contained
Josef Litoš02774f92023-09-27 18:57:24 +0200163syn match i3ConfigKeyword /^force_display_urgency_hint \d\+\( ms\)\?$/ contains=i3ConfigNumber,i3ConfigTimeUnit
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000164
Josef Litošf5356bf2023-09-12 20:20:25 +0200165" 4.31 Focus on window activation
166syn keyword i3ConfigFocusOnActivationOpts smart urgent focus none contained
Josef Litoš02774f92023-09-27 18:57:24 +0200167syn match i3ConfigKeyword /^focus_on_window_activation \w*$/ contains=i3ConfigFocusOnActivationOpts
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000168
Josef Litošf5356bf2023-09-12 20:20:25 +0200169" 4.32 Show marks in title
170syn match i3ConfigShowMarks /^show_marks \(yes\|no\)$/ contains=i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000171
Josef Litošf5356bf2023-09-12 20:20:25 +0200172" 4.34 Tiling drag
173syn keyword i3ConfigTilingDragOpts modifier titlebar contained
Josef Litoš02774f92023-09-27 18:57:24 +0200174syn match i3ConfigKeyword /^tiling_drag\( off\|\( modifier\| titlebar\)\{1,2\}\)$/ contains=i3ConfigTilingDragOpts,i3ConfigBoolean
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000175
Josef Litošf5356bf2023-09-12 20:20:25 +0200176" 4.35 Gaps
177syn 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 +0200178syn region i3ConfigGaps start=/gaps/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigGapsOpts,i3ConfigNumber,i3ConfigVariable,i3ConfigSeparator keepend
179syn match i3ConfigGapsLine /^gaps .*$/ contains=i3ConfigGaps
Josef Litošf5356bf2023-09-12 20:20:25 +0200180syn keyword i3ConfigSmartGapOpts inverse_outer contained
Josef Litoš02774f92023-09-27 18:57:24 +0200181syn match i3ConfigKeyword /^smart_gaps \(on\|off\|inverse_outer\)$/ contains=i3ConfigSmartGapOpts,i3ConfigBoolean
Josef Litoš62145db2023-09-11 20:12:48 +0200182
Josef Litošf5356bf2023-09-12 20:20:25 +0200183" 5 Configuring bar
Josef Litoš02774f92023-09-27 18:57:24 +0200184syn match i3ConfigBarModifier /^\s\+modifier \S\+$/ contained contains=i3ConfigBindModifier,i3ConfigVariable,i3ConfigBindModkey,i3ConfigBarOptVals
Ivan Grimaldi59943292023-11-11 13:09:26 +0100185syn 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 +0200186syn keyword i3ConfigBarOptVals dock hide invisible show none top bottom primary nonprimary contained
187syn 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 +0200188
189" 5.16 Color block
Josef Litoš02774f92023-09-27 18:57:24 +0200190syn keyword i3ConfigColorsKeyword colors contained
Josef Litošf5356bf2023-09-12 20:20:25 +0200191syn match i3ConfigColorsOpts /\(focused_\)\?\(background\|statusline\|separator\)\|\(focused\|active\|inactive\|urgent\)_workspace\|binding_mode/ contained
Josef Litoš02774f92023-09-27 18:57:24 +0200192syn 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 +0200193
Josef Litoš02774f92023-09-27 18:57:24 +0200194" 6.0 Command criteria
195syn keyword i3ConfigConditionProp class instance window_role window_type machine id title urgent workspace con_mark con_id floating_from tiling_from contained
196syn keyword i3ConfigConditionSpecial __focused__ all floating tiling contained
197syn region i3ConfigCondition start=/\[/ end=/\]/ contained contains=i3ConfigShDelim,i3ConfigConditionProp,i3ConfigShOper,i3ConfigConditionSpecial,i3ConfigNumber,i3ConfigString keepend extend
198syn 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 +0200199
200" 6.1 Actions through shell
201syn match i3ConfigExecActionKeyword /i3-msg/ contained
Josef Litoš02774f92023-09-27 18:57:24 +0200202syn 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
204syn 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 +0200205" 6.1 Executing applications (4.20)
Josef Litoš02774f92023-09-27 18:57:24 +0200206syn 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 +0200207
208" 6.3 Manipulating layout
209syn keyword i3ConfigLayoutKeyword layout contained
210syn keyword i3ConfigLayoutOpts default tabbed stacking splitv splith toggle split all contained
Josef Litoš02774f92023-09-27 18:57:24 +0200211syn region i3ConfigAction start=/layout/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigLayoutKeyword,i3ConfigLayoutOpts,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200212
213" 6.4 Focusing containers
214syn keyword i3ConfigFocusKeyword focus contained
Ivan Grimaldi59943292023-11-11 13:09:26 +0100215syn 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 +0200216syn keyword i3ConfigFocusOutputOpts left right down up current primary nonprimary next prev contained
Josef Litoš02774f92023-09-27 18:57:24 +0200217syn region i3ConfigFocusOutput start=/ output / skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigWorkspaceOutput,i3ConfigFocusOutputOpts,i3ConfigString,i3ConfigNumber,i3ConfigSeparator keepend
Josef Litošf5356bf2023-09-12 20:20:25 +0200218syn match i3ConfigFocusOutputLine /^focus output .*$/ contains=i3ConfigFocusKeyword,i3ConfigFocusOutput
Josef Litoš02774f92023-09-27 18:57:24 +0200219syn region i3ConfigAction start=/focus/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigFocusKeyword,i3ConfigFocusOpts,i3ConfigFocusOutput,i3ConfigString,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200220
221" 6.8 Focusing workspaces (4.21)
Josef Litoš02774f92023-09-27 18:57:24 +0200222syn 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 +0200223
Josef Litoš02774f92023-09-27 18:57:24 +0200224" 6.8.2 Renaming workspaces
225syn keyword i3ConfigRenameKeyword rename contained
226syn region i3ConfigAction start=/rename workspace/ end=/[,;]\|$/ contained contains=i3ConfigRenameKeyword,i3ConfigMoveDir,i3ConfigMoveType,i3ConfigNumber,i3ConfigVariable,i3ConfigString keepend transparent
227
228" 6.5,6.9-6.11 Moving containers
Josef Litošf5356bf2023-09-12 20:20:25 +0200229syn keyword i3ConfigMoveKeyword move contained
Josef Litoš02774f92023-09-27 18:57:24 +0200230syn keyword i3ConfigMoveDir left right down up position absolute center to current contained
Josef Litošf5356bf2023-09-12 20:20:25 +0200231syn keyword i3ConfigMoveType window container workspace output mark mouse scratchpad contained
232syn match i3ConfigUnit / px\| ppt/ contained
Josef Litoš02774f92023-09-27 18:57:24 +0200233syn 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 +0200234
235" 6.12 Resizing containers/windows
236syn keyword i3ConfigResizeKeyword resize contained
237syn keyword i3ConfigResizeOpts grow shrink up down left right set width height or contained
Josef Litoš02774f92023-09-27 18:57:24 +0200238syn region i3ConfigAction start=/resize/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigResizeKeyword,i3ConfigResizeOpts,i3ConfigNumber,i3ConfigUnit,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200239
240" 6.14 VIM-like marks
Josef Litoš02774f92023-09-27 18:57:24 +0200241syn match i3ConfigMark /mark\( --\(add\|replace\)\( --toggle\)\?\)\?/ contained contains=i3ConfigShParam
242syn region i3ConfigAction start=/\<mark/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigMark,i3ConfigNumber,i3ConfigString,i3ConfigSeparator keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200243
244" 6.24 Changing gaps (4.35)
Josef Litoš02774f92023-09-27 18:57:24 +0200245syn region i3ConfigAction start=/gaps/ skip=/\\$/ end=/[,;]\|$/ contained contains=i3ConfigGaps keepend transparent
Josef Litošf5356bf2023-09-12 20:20:25 +0200246
247" Commands useable in keybinds
Josef Litoš02774f92023-09-27 18:57:24 +0200248syn 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
249syn 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 +0000250
251" Define the highlighting.
Bram Moolenaar2ecbe532022-07-29 21:36:21 +0100252hi def link i3ConfigError Error
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000253hi def link i3ConfigTodo Todo
Josef Litošf5356bf2023-09-12 20:20:25 +0200254hi def link i3ConfigKeyword Keyword
255hi def link i3ConfigCommand Statement
Josef Litoš02774f92023-09-27 18:57:24 +0200256hi def link i3ConfigParamLine i3ConfigString
Josef Litoš62145db2023-09-11 20:12:48 +0200257hi def link i3ConfigOperator Operator
Josef Litošf5356bf2023-09-12 20:20:25 +0200258hi def link i3ConfigSeparator i3ConfigOperator
Josef Litoš62145db2023-09-11 20:12:48 +0200259hi def link i3ConfigParen Delimiter
Josef Litoš62145db2023-09-11 20:12:48 +0200260hi def link i3ConfigBoolean Boolean
Josef Litošf5356bf2023-09-12 20:20:25 +0200261hi def link i3ConfigString String
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000262hi def link i3ConfigColor Constant
Josef Litošf5356bf2023-09-12 20:20:25 +0200263hi def link i3ConfigNumber Number
Josef Litoš62145db2023-09-11 20:12:48 +0200264hi def link i3ConfigIncludeKeyword i3ConfigKeyword
Josef Litošf5356bf2023-09-12 20:20:25 +0200265hi def link i3ConfigComment Comment
266hi def link i3ConfigFontKeyword i3ConfigKeyword
267hi def link i3ConfigColonOperator i3ConfigOperator
268hi def link i3ConfigFontNamespace i3ConfigOption
269hi def link i3ConfigFontSize i3ConfigNumber
270hi def link i3ConfigFont i3ConfigString
Josef Litoš62145db2023-09-11 20:12:48 +0200271hi def link i3ConfigBindKeyword i3ConfigKeyword
Josef Litošf5356bf2023-09-12 20:20:25 +0200272hi def link i3ConfigBindArgument i3ConfigShParam
273hi def link i3ConfigBindModifier i3ConfigOperator
Josef Litoš62145db2023-09-11 20:12:48 +0200274hi def link i3ConfigBindModkey Special
275hi def link i3ConfigBindCombo SpecialChar
Josef Litoš62145db2023-09-11 20:12:48 +0200276hi def link i3ConfigSizeSpecial i3ConfigOperator
Josef Litošf5356bf2023-09-12 20:20:25 +0200277hi def link i3ConfigOrientationOpts i3ConfigOption
278hi def link i3ConfigWorkspaceLayoutOpts i3ConfigOption
279hi def link i3ConfigTitleAlignOpts i3ConfigOption
280hi def link i3ConfigBorderOpts i3ConfigOption
281hi def link i3ConfigEdgeOpts i3ConfigOption
282hi def link i3ConfigSmartBorderOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200283hi def link i3ConfigVariable Variable
284hi def link i3ConfigSetKeyword i3ConfigKeyword
285hi def link i3ConfigResourceKeyword i3ConfigKeyword
Josef Litoš62145db2023-09-11 20:12:48 +0200286hi def link i3ConfigAssignKeyword i3ConfigKeyword
287hi def link i3ConfigAssignSpecial i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200288hi def link i3ConfigExecKeyword i3ConfigCommand
289hi def link i3ConfigExecAlwaysKeyword i3ConfigKeyword
Josef Litoš62145db2023-09-11 20:12:48 +0200290hi def link i3ConfigShParam PreProc
291hi def link i3ConfigShDelim Delimiter
292hi def link i3ConfigShOper Operator
293hi def link i3ConfigShCmdDelim i3ConfigShDelim
294hi def link i3ConfigShCommand Normal
Josef Litoš62145db2023-09-11 20:12:48 +0200295hi def link i3ConfigWorkspaceKeyword i3ConfigCommand
Josef Litoš02774f92023-09-27 18:57:24 +0200296hi def link i3ConfigWorkspaceOutput i3ConfigMoveType
Josef Litošf5356bf2023-09-12 20:20:25 +0200297hi def link i3ConfigWorkspaceDir i3ConfigOption
298hi def link i3ConfigDotOperator i3ConfigOperator
299hi def link i3ConfigClientOpts i3ConfigOption
300hi def link i3ConfigIpcKeyword i3ConfigKeyword
Josef Litošf5356bf2023-09-12 20:20:25 +0200301hi def link i3ConfigFocusFollowsMouseOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200302hi def link i3ConfigMouseWarpingOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200303hi def link i3ConfigPopupFullscreenOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200304hi def link i3ConfigFocusWrappingOpts i3ConfigOption
Josef Litoš62145db2023-09-11 20:12:48 +0200305hi def link i3ConfigTimeUnit i3ConfigNumber
Josef Litošf5356bf2023-09-12 20:20:25 +0200306hi def link i3ConfigFocusOnActivationOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200307hi def link i3ConfigShowMarks i3ConfigCommand
308hi def link i3ConfigTilingDragOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200309hi def link i3ConfigGapsOpts i3ConfigOption
310hi def link i3ConfigGaps i3ConfigCommand
311hi def link i3ConfigSmartGapOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200312hi def link i3ConfigBarModifier i3ConfigKeyword
313hi def link i3ConfigBarOpts i3ConfigKeyword
Josef Litoš02774f92023-09-27 18:57:24 +0200314hi def link i3ConfigBarOptVals i3ConfigOption
315hi def link i3ConfigColorsKeyword i3ConfigKeyword
Josef Litošf5356bf2023-09-12 20:20:25 +0200316hi def link i3ConfigColorsOpts i3ConfigOption
Josef Litošf5356bf2023-09-12 20:20:25 +0200317hi def link i3ConfigConditionProp i3ConfigShParam
Josef Litoš02774f92023-09-27 18:57:24 +0200318hi def link i3ConfigConditionSpecial Constant
Josef Litošf5356bf2023-09-12 20:20:25 +0200319hi def link i3ConfigExecActionKeyword i3ConfigShCommand
320hi def link i3ConfigExecAction i3ConfigString
321hi def link i3ConfigLayoutKeyword i3ConfigCommand
322hi def link i3ConfigLayoutOpts i3ConfigOption
323hi def link i3ConfigFocusKeyword i3ConfigCommand
324hi def link i3ConfigFocusOpts i3ConfigOption
325hi def link i3ConfigFocusOutputOpts i3ConfigOption
Josef Litoš02774f92023-09-27 18:57:24 +0200326hi def link i3ConfigRenameKeyword i3ConfigCommand
Josef Litošf5356bf2023-09-12 20:20:25 +0200327hi def link i3ConfigMoveKeyword i3ConfigCommand
328hi def link i3ConfigMoveDir i3ConfigOption
Josef Litoš02774f92023-09-27 18:57:24 +0200329hi def link i3ConfigMoveType Constant
Josef Litošf5356bf2023-09-12 20:20:25 +0200330hi def link i3ConfigUnit i3ConfigNumber
331hi def link i3ConfigResizeKeyword i3ConfigCommand
332hi def link i3ConfigResizeOpts i3ConfigOption
Josef Litoš02774f92023-09-27 18:57:24 +0200333hi def link i3ConfigMark i3ConfigCommand
Josef Litošf5356bf2023-09-12 20:20:25 +0200334hi def link i3ConfigActionKeyword i3ConfigCommand
335hi def link i3ConfigOption Type
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000336
Josef Litoš02774f92023-09-27 18:57:24 +0200337let b:current_syntax = "i3config"