255 lines
12 KiB
VimL
255 lines
12 KiB
VimL
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'i3') != -1
|
|
finish
|
|
endif
|
|
|
|
" Vim syntax file
|
|
" Language: i3 config file
|
|
" Maintainer: Mohamed Boughaba <mohamed dot bgb at gmail dot com>
|
|
" Version: 0.3
|
|
" Last Change: 2017-10-27 23:59
|
|
|
|
" References:
|
|
" http://i3wm.org/docs/userguide.html#configuring
|
|
" http://vimdoc.sourceforge.net/htmldoc/syntax.html
|
|
"
|
|
"
|
|
" For version 5.x: Clear all syntax items
|
|
" For version 6.x: Quit when a syntax file was already loaded
|
|
if version < 600
|
|
syn clear
|
|
elsei exists("b:current_syntax")
|
|
fini
|
|
en
|
|
|
|
scriptencoding utf-8
|
|
|
|
" Error
|
|
syn match Error /.*/
|
|
|
|
" Todo
|
|
syn keyword Todo TODO FIXME XXX contained
|
|
|
|
" Comment
|
|
" Comments are started with a # and can only be used at the beginning of a line
|
|
syn match Comment /^\s*#.*$/ contains=Todo
|
|
|
|
" Font
|
|
" A FreeType font description is composed by:
|
|
" a font family, a style, a weight, a variant, a stretch and a size.
|
|
syn match FontSeparator /,/ contained
|
|
syn match FontSeparator /:/ contained
|
|
syn keyword FontKeyword font contained
|
|
syn match FontNamespace /\w\+:/ contained contains=FontSeparator
|
|
syn match FontContent /-\?\w\+\(-\+\|\s\+\|,\)/ contained contains=FontNamespace,FontSeparator,FontKeyword
|
|
syn match FontSize /\s\=\d\+\(px\)\?\s\?$/ contained
|
|
syn match Font /^\s*font\s\+.*$/ contains=FontContent,FontSeparator,FontSize,FontNamespace
|
|
"syn match Font /^\s*font\s\+.*\(\\\_.*\)\?$/ contains=FontContent,FontSeparator,FontSize,FontNamespace
|
|
"syn match Font /^\s*font\s\+.*\(\\\_.*\)\?[^\\]\+$/ contains=FontContent,FontSeparator,FontSize,FontNamespace
|
|
"syn match Font /^\s*font\s\+\(\(.*\\\_.*\)\|\(.*[^\\]\+$\)\)/ contains=FontContent,FontSeparator,FontSize,FontNamespace
|
|
|
|
" variables
|
|
syn match String /\(['"]\)\(.\{-}\)\1/ contained
|
|
syn match Color /#\w\{6}/ contained
|
|
syn match VariableModifier /+/ contained
|
|
syn match VariableAndModifier /+\w\+/ contained contains=VariableModifier
|
|
syn match Variable /\$\w\+\(\(-\w\+\)\+\)\?\(\s\|+\)\?/ contains=VariableModifier,VariableAndModifier
|
|
syn keyword InitializeKeyword set contained
|
|
syn match Initialize /^\s*set\s\+.*$/ contains=Variable,InitializeKeyword,Color,String
|
|
|
|
" Gaps
|
|
syn keyword GapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle contained
|
|
syn match GapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(\d\+\|\$.*\)\)$/ contains=GapStyleKeyword,number,Variable
|
|
syn keyword SmartGapKeyword on inverse_outer contained
|
|
syn match SmartGap /^\s*smart_gaps\s\+\(on\|inverse_outer\)\s\?$/ contains=SmartGapKeyword
|
|
syn keyword SmartBorderKeyword on no_gaps contained
|
|
syn match SmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\)\s\?$/ contains=SmartBorderKeyword
|
|
|
|
" Keyboard bindings
|
|
syn keyword Action toggle fullscreen restart key import kill shrink grow contained
|
|
syn keyword Action focus move split layout resize restore reload mute unmute exit contained
|
|
syn match Modifier /\w\++\w\+\(\(+\w\+\)\+\)\?/ contained contains=VariableModifier
|
|
syn match Number /\s\d\+/ contained
|
|
syn keyword BindKeyword bindsym bindcode exec gaps contained
|
|
syn match BindArgument /--\w\+\(\(-\w\+\)\+\)\?\s/ contained
|
|
syn match Bind /^\s*\(bindsym\|bindcode\)\s\+.*$/ contains=Variable,BindKeyword,VariableAndModifier,BindArgument,Number,Modifier,Action,String,GapStyleKeyword
|
|
|
|
" Floating
|
|
syn keyword SizeSpecial x contained
|
|
syn match NegativeSize /-/ contained
|
|
syn match Size /-\?\d\+\s\?x\s\?-\?\d\+/ contained contains=SizeSpecial,Number,NegativeSize
|
|
syn match Floating /^\s*floating_modifier\s\+\$\w\+\d\?/ contains=Variable
|
|
syn match Floating /^\s*floating_\(maximum\|minimum\)_size\s\+-\?\d\+\s\?x\s\?-\?\d\+/ contains=Size
|
|
|
|
" Orientation
|
|
syn keyword OrientationKeyword vertical horizontal auto contained
|
|
syn match Orientation /^\s*default_orientation\s\+\(vertical\|horizontal\|auto\)\s\?$/ contains=OrientationKeyword
|
|
|
|
" Layout
|
|
syn keyword LayoutKeyword default stacking tabbed contained
|
|
syn match Layout /^\s*workspace_layout\s\+\(default\|stacking\|tabbed\)\s\?$/ contains=LayoutKeyword
|
|
|
|
" Border style
|
|
syn keyword BorderStyleKeyword none normal pixel contained
|
|
syn match BorderStyle /^\s*\(new_window\|new_float\|default_border\|default_floating_border\)\s\+\(none\|\(normal\|pixel\)\(\s\+\d\+\)\?\)\s\?$/ contains=BorderStyleKeyword,number
|
|
|
|
" Hide borders and edges
|
|
syn keyword EdgeKeyword none vertical horizontal both smart smart_no_gaps contained
|
|
syn match Edge /^\s*hide_edge_borders\s\+\(none\|vertical\|horizontal\|both\|smart\|smart_no_gaps\)\s\?$/ contains=EdgeKeyword
|
|
|
|
" Arbitrary commands for specific windows (for_window)
|
|
syn keyword CommandKeyword for_window contained
|
|
syn region WindowStringSpecial start=+"+ skip=+\\"+ end=+"+ contained contains=String
|
|
syn region WindowCommandSpecial start="\[" end="\]" contained contains=WindowStringSpacial,String
|
|
syn match ArbitraryCommand /^\s*for_window\s\+.*$/ contains=WindowCommandSpecial,CommandKeyword,BorderStyleKeyword,LayoutKeyword,OrientationKeyword,Size,Number
|
|
|
|
" Disable focus open opening
|
|
syn keyword NoFocusKeyword no_focus contained
|
|
syn match DisableFocus /^\s*no_focus\s\+.*$/ contains=WindowCommandSpecial,NoFocusKeyword
|
|
|
|
" Move client to specific workspace automatically
|
|
syn keyword AssignKeyword assign contained
|
|
syn match AssignSpecial /→/ contained
|
|
syn match Assign /^\s*assign\s\+.*$/ contains=AssignKeyword,WindowCommandSpecial,AssignSpecial
|
|
|
|
" X resources
|
|
syn keyword ResourceKeyword set_from_resource contained
|
|
syn match Resource /^\s*set_from_resource\s\+.*$/ contains=ResourceKeyword,WindowCommandSpecial,Color,Variable
|
|
|
|
" Auto start applications
|
|
syn keyword ExecKeyword exec exec_always contained
|
|
syn match NoStartupId /--no-startup-id/ contained " We are not using BindArgument as only no-startup-id is supported here
|
|
syn match Exec /^\s*exec\(_always\)\?\s\+.*$/ contains=ExecKeyword,NoStartupId,String
|
|
|
|
" Automatically putting workspaces on specific screens
|
|
syn keyword WorkspaceKeyword workspace contained
|
|
syn keyword Output output contained
|
|
syn match Workspace /^\s*workspace\s\+.*$/ contains=WorkspaceKeyword,Number,String,Output
|
|
|
|
" Changing colors
|
|
syn keyword ClientColorKeyword client focused focused_inactive unfocused urgent placeholder background contained
|
|
syn match ClientColor /^\s*client.\w\+\s\+.*$/ contains=ClientColorKeyword,Color,Variable
|
|
|
|
" Interprocess communication
|
|
syn match InterprocessKeyword /ipc-socket/ contained
|
|
syn match Interprocess /^\s*ipc-socket\s\+.*$/ contains=InterprocessKeyword
|
|
|
|
" Mouse warping
|
|
syn keyword MouseWarpingKeyword mouse_warping contained
|
|
syn keyword MouseWarpingType output none contained
|
|
syn match MouseWarping /^\s*mouse_warping\s\+\(output\|none\)\s\?$/ contains=MouseWarpingKeyword,MouseWarpingType
|
|
|
|
" Focus follows mouse
|
|
syn keyword FocusFollowsMouseKeyword focus_follows_mouse contained
|
|
syn keyword FocusFollowsMouseType yes no contained
|
|
syn match FocusFollowsMouse /^\s*focus_follows_mouse\s\+\(yes\|no\)\s\?$/ contains=FocusFollowsMouseKeyword,FocusFollowsMouseType
|
|
|
|
" Popups during fullscreen mode
|
|
syn keyword PopupOnFullscreenKeyword popup_during_fullscreen contained
|
|
syn keyword PopuponFullscreenType smart ignore leave_fullscreen contained
|
|
syn match PopupOnFullscreen /^\s*popup_during_fullscreen\s\+\w\+\s\?$/ contains=PopupOnFullscreenKeyword,PopupOnFullscreenType
|
|
|
|
" Focus wrapping
|
|
syn keyword FocusWrappingKeyword force_focus_wrapping focus_wrapping contained
|
|
syn keyword FocusWrappingType yes no contained
|
|
syn match FocusWrapping /^\s*\(force_\)\?focus_wrapping\s\+\(yes\|no\)\s\?$/ contains=FocusWrappingType,FocusWrappingKeyword
|
|
|
|
" Forcing Xinerama
|
|
syn keyword ForceXineramaKeyword force_xinerama contained
|
|
syn match ForceXinerama /^\s*force_xinerama\s\+\(yes\|no\)\s\?$/ contains=FocusWrappingType,ForceXineramaKeyword
|
|
|
|
" Automatic back-and-forth when switching to the current workspace
|
|
syn keyword AutomaticSwitchKeyword workspace_auto_back_and_forth contained
|
|
syn match AutomaticSwitch /^\s*workspace_auto_back_and_forth\s\+\(yes\|no\)\s\?$/ contains=FocusWrappingType,AutomaticSwitchKeyword
|
|
|
|
" Delay urgency hint
|
|
syn keyword TimeUnit ms contained
|
|
syn keyword DelayUrgencyKeyword force_display_urgency_hint contained
|
|
syn match DelayUrgency /^\s*force_display_urgency_hint\s\+\d\+\s\+ms\s\?$/ contains=FocusWrappingType,DelayUrgencyKeyword,Number,TimeUnit
|
|
|
|
" Focus on window activation
|
|
syn keyword FocusOnActivationKeyword focus_on_window_activation contained
|
|
syn keyword FocusOnActivationType smart urgent focus none contained
|
|
syn match FocusOnActivation /^\s*focus_on_window_activation\s\+\(smart\|urgent\|focus\|none\)\s\?$/ contains=FocusOnActivationKeyword,FocusOnActivationType
|
|
|
|
" Automatic back-and-forth when switching to the current workspace
|
|
syn keyword DrawingMarksKeyword show_marks contained
|
|
syn match DrawingMarks /^\s*show_marks\s\+\(yes\|no\)\s\?$/ contains=FocusWrappingType,DrawingMarksKeyword
|
|
|
|
" Group mode/bar
|
|
syn keyword BlockKeyword mode bar colors i3bar_command status_command position exec mode hidden_state modifier id position output background statusline tray_output tray_padding separator separator_symbol workspace_buttons strip_workspace_numbers binding_mode_indicator focused_workspace active_workspace inactive_workspace urgent_workspace binding_mode contained
|
|
syn region Block start=+.*s\?{$+ end=+^}$+ contains=BlockKeyword,String,Bind,Comment,Font,FocusWrappingType,Color,Variable transparent keepend extend
|
|
|
|
" Line continuation
|
|
syn region LineCont start=/^.*\\$/ end=/^.*$/ contains=BlockKeyword,String,Bind,Comment,Font,FocusWrappingType,Color,Variable transparent keepend extend
|
|
|
|
" Define the highlighting.
|
|
hi! def link Error Error
|
|
hi! def link Todo Todo
|
|
hi! def link Comment Comment
|
|
hi! def link FontContent Type
|
|
hi! def link FocusOnActivationType Type
|
|
hi! def link PopupOnFullscreenType Type
|
|
hi! def link OrientationKeyword Type
|
|
hi! def link MouseWarpingType Type
|
|
hi! def link FocusFollowsMouseType Type
|
|
hi! def link GapStyleKeyword Type
|
|
hi! def link SmartGapKeyword Type
|
|
hi! def link SmartBorderKeyword Type
|
|
hi! def link LayoutKeyword Type
|
|
hi! def link BorderStyleKeyword Type
|
|
hi! def link EdgeKeyword Type
|
|
hi! def link Action Type
|
|
hi! def link Command Type
|
|
hi! def link Output Type
|
|
hi! def link WindowCommandSpecial Type
|
|
hi! def link FocusWrappingType Type
|
|
hi! def link FontSize Constant
|
|
hi! def link Color Constant
|
|
hi! def link Number Constant
|
|
hi! def link VariableAndModifier Constant
|
|
hi! def link TimeUnit Constant
|
|
hi! def link Modifier Constant
|
|
hi! def link String Constant
|
|
hi! def link NegativeSize Constant
|
|
hi! def link FontSeparator Special
|
|
hi! def link VariableModifier Special
|
|
hi! def link SizeSpecial Special
|
|
hi! def link WindowSpecial Special
|
|
hi! def link AssignSpecial Special
|
|
hi! def link FontNamespace PreProc
|
|
hi! def link BindArgument PreProc
|
|
hi! def link NoStartupId PreProc
|
|
hi! def link FontKeyword Identifier
|
|
hi! def link BindKeyword Identifier
|
|
hi! def link Orientation Identifier
|
|
hi! def link GapStyle Identifier
|
|
hi! def link SmartGap Identifier
|
|
hi! def link SmartBorder Identifier
|
|
hi! def link Layout Identifier
|
|
hi! def link BorderStyle Identifier
|
|
hi! def link Edge Identifier
|
|
hi! def link Floating Identifier
|
|
hi! def link CommandKeyword Identifier
|
|
hi! def link NoFocusKeyword Identifier
|
|
hi! def link InitializeKeyword Identifier
|
|
hi! def link AssignKeyword Identifier
|
|
hi! def link ResourceKeyword Identifier
|
|
hi! def link ExecKeyword Identifier
|
|
hi! def link WorkspaceKeyword Identifier
|
|
hi! def link ClientColorKeyword Identifier
|
|
hi! def link InterprocessKeyword Identifier
|
|
hi! def link MouseWarpingKeyword Identifier
|
|
hi! def link FocusFollowsMouseKeyword Identifier
|
|
hi! def link PopupOnFullscreenKeyword Identifier
|
|
hi! def link FocusWrappingKeyword Identifier
|
|
hi! def link ForceXineramaKeyword Identifier
|
|
hi! def link AutomaticSwitchKeyword Identifier
|
|
hi! def link DelayUrgencyKeyword Identifier
|
|
hi! def link FocusOnActivationKeyword Identifier
|
|
hi! def link DrawingMarksKeyword Identifier
|
|
hi! def link BlockKeyword Identifier
|
|
hi! def link Variable Statement
|
|
hi! def link ArbitraryCommand Type
|
|
|
|
let b:current_syntax = "i3config"
|