xref: /vim-8.2.3635/runtime/syntax/tmux.vim (revision 2286304c)
1" Language: tmux(1) configuration file
2" Version: 3.2a (git-44ada9cd)
3" URL: https://github.com/ericpruitt/tmux.vim/
4" Maintainer: Eric Pruitt <[email protected]>
5" License: 2-Clause BSD (http://opensource.org/licenses/BSD-2-Clause)
6
7if exists("b:current_syntax")
8    finish
9endif
10
11" Explicitly change compatibility options to Vim's defaults because this file
12" uses line continuations.
13let s:original_cpo = &cpo
14set cpo&vim
15
16let b:current_syntax = "tmux"
17syntax iskeyword @,48-57,_,192-255,-
18syntax case match
19
20syn keyword tmuxAction  none any current other
21syn keyword tmuxBoolean off on
22
23syn keyword tmuxTodo FIXME NOTE TODO XXX contained
24
25syn match tmuxColour            /\<colour[0-9]\+/      display
26syn match tmuxKey               /\(C-\|M-\|\^\)\+\S\+/ display
27syn match tmuxNumber            /\<\d\+\>/             display
28syn match tmuxFlags             /\s-\a\+/              display
29syn match tmuxVariable          /\w\+=/                display
30syn match tmuxVariableExpansion /\${\=\w\+}\=/         display
31syn match tmuxControl           /%\(if\|elif\|else\|endif\)/
32
33syn region tmuxComment start=/#/ skip=/\\\@<!\\$/ end=/$/ contains=tmuxTodo,@Spell
34
35syn region tmuxString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=tmuxFormatString,@Spell
36syn region tmuxString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end='$' contains=tmuxFormatString,@Spell
37
38" TODO: Figure out how escaping works inside of #(...) and #{...} blocks.
39syn region tmuxFormatString start=/#[#DFhHIPSTW]/ end=// contained keepend
40syn region tmuxFormatString start=/#{/ skip=/#{.\{-}}/ end=/}/ keepend
41syn region tmuxFormatString start=/#(/ skip=/#(.\{-})/ end=/)/ contained keepend
42
43hi def link tmuxFormatString      Identifier
44hi def link tmuxAction            Boolean
45hi def link tmuxBoolean           Boolean
46hi def link tmuxCommands          Keyword
47hi def link tmuxControl           Keyword
48hi def link tmuxComment           Comment
49hi def link tmuxKey               Special
50hi def link tmuxNumber            Number
51hi def link tmuxFlags             Identifier
52hi def link tmuxOptions           Function
53hi def link tmuxString            String
54hi def link tmuxTodo              Todo
55hi def link tmuxVariable          Identifier
56hi def link tmuxVariableExpansion Identifier
57
58" Make the foreground of colourXXX keywords match the color they represent
59" when g:tmux_syntax_colors is unset or set to a non-zero value.
60" Darker colors have their background set to white.
61if get(g:, "tmux_syntax_colors", 1)
62    for s:i in range(0, 255)
63        let s:bg = (!s:i || s:i == 16 || (s:i > 231 && s:i < 235)) ? 15 : "none"
64        exec "syn match tmuxColour" . s:i . " /\\<colour" . s:i . "\\>/ display"
65\         " | highlight tmuxColour" . s:i . " ctermfg=" . s:i . " ctermbg=" . s:bg
66    endfor
67endif
68
69syn keyword tmuxOptions
70\ backspace buffer-limit command-alias copy-command default-terminal editor
71\ escape-time exit-empty activity-action assume-paste-time base-index
72\ bell-action default-command default-shell default-size destroy-unattached
73\ detach-on-destroy display-panes-active-colour display-panes-colour
74\ display-panes-time display-time exit-unattached extended-keys focus-events
75\ history-file history-limit key-table lock-after-time lock-command
76\ message-command-style message-limit message-style aggressive-resize
77\ allow-rename alternate-screen automatic-rename automatic-rename-format
78\ clock-mode-colour clock-mode-style copy-mode-current-match-style
79\ copy-mode-mark-style copy-mode-match-style main-pane-height
80\ main-pane-width mode-keys mode-style monitor-activity monitor-bell
81\ monitor-silence mouse other-pane-height other-pane-width
82\ pane-active-border-style pane-base-index pane-border-format
83\ pane-border-lines pane-border-status pane-border-style pane-colours prefix
84\ prefix2 prompt-history-limit remain-on-exit renumber-windows repeat-time
85\ set-clipboard set-titles set-titles-string silence-action status status-bg
86\ status-fg status-format status-interval status-justify status-keys
87\ status-left status-left-length status-left-style status-position
88\ status-right status-right-length status-right-style status-style
89\ synchronize-panes terminal-features terminal-overrides update-environment
90\ user-keys visual-activity visual-bell visual-silence window-active-style
91\ window-size window-status-activity-style window-status-bell-style
92\ window-status-current-format window-status-current-style
93\ window-status-format window-status-last-style window-status-separator
94\ window-status-style window-style word-separators wrap-search
95
96syn keyword tmuxCommands
97\ attach attach-session bind bind-key break-pane breakp capture-pane
98\ capturep choose-buffer choose-client choose-tree clear-history clearhist
99\ clock-mode command-prompt confirm confirm-before copy-mode customize-mode
100\ detach detach-client display display-menu display-message display-panes
101\ display-popup displayp find-window findw if if-shell join-pane joinp
102\ kill-pane kill-server kill-session kill-window killp has has-session killw
103\ link-window linkw list-buffers list-clients list-commands list-keys
104\ list-panes list-sessions list-windows load-buffer loadb lock lock-client
105\ lock-server lock-session lockc last-pane lastp locks ls last last-window
106\ lsb delete-buffer deleteb lsc lscm lsk lsp lsw menu move-pane move-window
107\ clear-prompt-history clearphist movep movew new new-session new-window
108\ neww next next-layout next-window nextl paste-buffer pasteb pipe-pane
109\ pipep popup prev previous-layout previous-window prevl refresh
110\ refresh-client rename rename-session rename-window renamew resize-pane
111\ resize-window resizep resizew respawn-pane respawn-window respawnp
112\ respawnw rotate-window rotatew run run-shell save-buffer saveb
113\ select-layout select-pane select-window selectl selectp selectw send
114\ send-keys send-prefix set set-buffer set-environment set-hook set-option
115\ set-window-option setb setenv setw show show-buffer show-environment
116\ show-hooks show-messages show-options show-prompt-history
117\ show-window-options showb showenv showmsgs showphist showw source
118\ source-file split-window splitw start start-server suspend-client suspendc
119\ swap-pane swap-window swapp swapw switch-client switchc unbind unbind-key
120\ unlink-window unlinkw wait wait-for
121
122let &cpo = s:original_cpo
123unlet! s:original_cpo s:bg s:i
124