diff options
-rw-r--r-- | README.md | 1 | ||||
-rwxr-xr-x | build | 1 | ||||
-rw-r--r-- | ftdetect/polyglot.vim | 10 | ||||
-rw-r--r-- | ftplugin/i3.vim | 5 | ||||
-rw-r--r-- | syntax/i3.vim | 134 |
5 files changed, 151 insertions, 0 deletions
@@ -60,6 +60,7 @@ If you need full functionality of any plugin, please use it directly with your p - [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, ftplugin, ftdetect) - [haxe](https://github.com/yaymukund/vim-haxe) (syntax, ftdetect) - [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin) +- [i3](https://github.com/PotatoesMaster/i3-vim-syntax) (syntax, ftplugin, ftdetect) - [jasmine](https://github.com/glanotte/vim-jasmine) (syntax, ftdetect) - [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, compiler, ftdetect, ftplugin, extras) - [json](https://github.com/elzr/vim-json) (syntax, indent, ftplugin, ftdetect) @@ -133,6 +133,7 @@ PACKS=" haskell:neovimhaskell/haskell-vim haxe:yaymukund/vim-haxe html5:othree/html5.vim + i3:PotatoesMaster/i3-vim-syntax jasmine:glanotte/vim-jasmine javascript:pangloss/vim-javascript:_JAVASCRIPT json:elzr/vim-json diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index ea6e0fbc..428c14db 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -346,6 +346,16 @@ autocmd BufNewFile,BufRead *.hx setf haxe endif +" ftdetect/i3.vim +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'i3') == -1 + +augroup i3_ftdetect + au! + au BufRead,BufNewFile *i3/config set ft=i3 +augroup END + +endif + " ftdetect/jasmine.vim if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jasmine') == -1 diff --git a/ftplugin/i3.vim b/ftplugin/i3.vim new file mode 100644 index 00000000..6470f448 --- /dev/null +++ b/ftplugin/i3.vim @@ -0,0 +1,5 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'i3') == -1 + +setlocal commentstring=#\ %s + +endif diff --git a/syntax/i3.vim b/syntax/i3.vim new file mode 100644 index 00000000..437313b2 --- /dev/null +++ b/syntax/i3.vim @@ -0,0 +1,134 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'i3') == -1 + +" Vim syntax file +" Language: i3-wm config file +" Maintainer: Emanuel Guével +" Latest Revision: 16 October 2012 + +if exists("b:current_syntax") + finish +endif + +" Symbols +syn match i3Operators "+\|→" +syn match i3ChainDelimiter ";" + +syn match i3Var "\$\w\+" + +" Key modifiers +syn keyword i3KeyModifier Shift Control Ctrl Mod1 Mod2 Mod3 Mod4 Mod5 Mode_switch + +" Strings +syn region i3SimpleString keepend start='[^ \t]' end='$\|;' contained contains=i3ChainDelimiter,i3Var +syn match i3QuotedString '"[^"]\+"' contained +syn cluster i3String contains=i3SimpleString,i3QuotedString + +" Config commands +syn keyword i3ConfigCommand bind bindcode bindsym assign new_window popup_during_fullscreen font floating_modifier default_orientation workspace_layout for_window focus_follows_mouse bar position colors output tray_output workspace_buttons workspace_auto_back_and_forth binding_mode_indicator debuglog floating_minimum_size floating_maximum_size force_focus_wrapping force_xinerama force_display_urgency_hint hidden_state modifier new_float shmlog socket_path verbose mouse_warping strip_workspace_numbers focus_on_window_activation no_focus +syn match i3IpcSocket "ipc[-_]socket" nextgroup=@i3String skipwhite + +" Command keywords +syn keyword i3Command exit reload restart kill fullscreen global layout border focus move open split append_layout mark unmark resize grow shrink show nop rename title_format sticky +syn keyword i3Param 1pixel default stacked tabbed normal none tiling stacking floating enable disable up down horizontal vertical auto up down left right parent child px or ppt leave_fullscreen toggle mode_toggle scratchpad width height top bottom client hide primary yes all active window container to absolute center on off x ms h v smart ignore pixel splith splitv output true +syn match i3DashedParam '--\(release\|border\|whole-window\|toggle\)' skipwhite +syn match i3NoStartupId '--no-startup-id' contained +syn keyword i3WsSpecialParam next prev next_on_output prev_on_output back_and_forth current number +syn keyword i3BordersSpecialParam none vertical horizontal both +syn keyword i3ModeParam dock hide invisible skipwhite + +" these are not keywords but we add them for consistency +syn keyword i3PseudoParam no false inactive + +" Exec commands +syn region i3ExecCommand keepend start='[^ \t]' end='$\|;' contained contains=i3ChainDelimiter,i3Var,i3NoStartupId +syn match i3QuotedExecCommand '"[^"]\+"' contained +syn keyword i3ExecKeyword exec exec_always i3bar_command nextgroup=i3QuotedExecCommand,i3ExecCommand skipwhite + +" Status command +syn match i3StatusCommand ".*$" contained +syn keyword i3StatusCommandKeyword status_command nextgroup=i3StatusCommand skipwhite + +" Font statement +syn keyword i3FontStatement font nextgroup=@i3String skipwhite + +" Separator symbol +syn keyword i3SeparatorSymbol separator_symbol nextgroup=@i3String skipwhite + +" Set statement +syn match i3SetVar "\$\w\+" contained nextgroup=@i3String skipwhite +syn keyword i3SetKeyword set nextgroup=i3SetVar skipwhite + +" Workspaces +syn keyword i3WsKeyword workspace nextgroup=i3WsSpecialParam,@i3String skipwhite + +" Hide edge borders +syn keyword i3BordersConfigCommand hide_edge_borders nextgroup=i3BordersSpecialParam skipwhite + +" Mode +syn keyword i3ModeKeyword mode nextgroup=i3ModeParam,@i3String skipwhite + +" Comments +syn keyword i3Todo contained TODO FIXME XXX NOTE +syn match i3Comment "^\s*#.*$" contains=i3Todo + +" Error (at end of line) +syn match i3Error ".*$" contained + +" Hex color code +syn match i3ColorLast "#[0-9a-fA-F]\{6\}" contained nextgroup=i3Error skipwhite +syn match i3Color2nd "#[0-9a-fA-F]\{6\}" contained nextgroup=i3ColorLast skipwhite +syn match i3Color1st "#[0-9a-fA-F]\{6\}" contained nextgroup=i3Color2nd skipwhite + +syn match i3ColorDef1 "client\.background\|statusline\|background\|separator\|statusline" nextgroup=i3ColorLast skipwhite +syn match i3ColorDef3 "client\.\(focused_inactive\|focused\|unfocused\|urgent\)\|inactive_workspace\|urgent_workspace\|focused_workspace\|active_workspace" nextgroup=i3Color1st skipwhite + +highlight link i3ChainDelimiter Operator +highlight link i3Operators Operator + +highlight link i3ExecCommand Special +highlight link i3QuotedExecCommand Special +highlight link i3StatusCommand Special + +highlight link i3Param Constant +highlight link i3PseudoParam Constant +highlight link i3DashedParam Constant +highlight link i3NoStartupId Constant +highlight link i3Color1st Constant +highlight link i3Color2nd Constant +highlight link i3ColorLast Constant +highlight link i3WsSpecialParam Constant +highlight link i3BordersSpecialParam Constant +highlight link i3ModeParam Constant + +highlight link i3Var Identifier +highlight link i3SetVar Identifier + +highlight link i3KeyModifier Function + +highlight link i3SimpleString String +highlight link i3QuotedString String +highlight link i3WsName String +highlight link i3QuotedWsName String +highlight link i3SetValue String +highlight link i3Font String + +highlight link i3ExecKeyword Keyword +highlight link i3Command Keyword +highlight link i3WsKeyword Keyword + +highlight link i3ColorDef1 Define +highlight link i3ColorDef3 Define +highlight link i3ConfigCommand Define +highlight link i3IpcSocket Define +highlight link i3SetKeyword Define +highlight link i3ModeKeyword Define +highlight link i3FontStatement Define +highlight link i3SeparatorSymbol Define +highlight link i3StatusCommandKeyword Define +highlight link i3BordersConfigCommand Define + +highlight link i3Todo Todo +highlight link i3Comment Comment +highlight link i3Error Error + +endif |