Skip to content

Commit b13568e

Browse files
mvanderkampalerque
authored andcommitted
Support buffer-local variants of options
1 parent 748b54b commit b13568e

File tree

1 file changed

+36
-32
lines changed

1 file changed

+36
-32
lines changed

plugin/vimux.vim

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@ let g:VimuxRunnerType = get(g:, 'VimuxRunnerType', 'pane')
1515
let g:VimuxTmuxCommand = get(g:, 'VimuxTmuxCommand', 'tmux')
1616
let g:VimuxUseNearest = get(g:, 'VimuxUseNearest', v:true)
1717

18-
if !executable(g:VimuxTmuxCommand)
19-
echohl ErrorMsg | echomsg 'Failed to find executable '.g:VimuxTmuxCommand | echohl None
18+
function! s:VimuxOption(name) abort
19+
return get(b:, a:name, get(g:, a:name))
20+
endfunction
21+
22+
if !executable(s:VimuxOption('VimuxTmuxCommand'))
23+
echohl ErrorMsg | echomsg 'Failed to find executable '.s:VimuxOption('VimuxTmuxCommand') | echohl None
2024
finish
2125
endif
2226

@@ -60,7 +64,7 @@ function! VimuxRunCommand(command, ...)
6064
let l:autoreturn = a:1
6165
endif
6266

63-
let resetSequence = g:VimuxResetSequence
67+
let resetSequence = s:VimuxOption('VimuxResetSequence')
6468
let g:VimuxLastCommand = a:command
6569

6670
call VimuxSendKeys(resetSequence)
@@ -86,67 +90,67 @@ endfunction
8690
function! VimuxOpenRunner()
8791
let nearestIndex = s:VimuxNearestIndex()
8892

89-
if g:VimuxUseNearest ==# 1 && nearestIndex != -1
93+
if s:VimuxOption('VimuxUseNearest') ==# 1 && nearestIndex != -1
9094
let g:VimuxRunnerIndex = nearestIndex
9195
else
92-
let extraArguments = g:VimuxOpenExtraArgs
93-
if g:VimuxRunnerType ==# 'pane'
94-
let height = g:VimuxHeight
95-
let orientation = g:VimuxOrientation
96+
let extraArguments = s:VimuxOption('VimuxOpenExtraArgs')
97+
if s:VimuxOption('VimuxRunnerType') ==# 'pane'
98+
let height = s:VimuxOption('VimuxHeight')
99+
let orientation = s:VimuxOption('VimuxOrientation')
96100
call s:VimuxTmux('split-window -p '.height.' -'.orientation.' '.extraArguments)
97-
elseif g:VimuxRunnerType ==# 'window'
101+
elseif s:VimuxOption('VimuxRunnerType') ==# 'window'
98102
call s:VimuxTmux('new-window '.extraArguments)
99103
endif
100104

101105
let g:VimuxRunnerIndex = s:VimuxTmuxIndex()
102106
call s:VimuxSetRunnerName()
103-
call s:VimuxTmux('last-'.g:VimuxRunnerType)
107+
call s:VimuxTmux('last-'.s:VimuxOption('VimuxRunnerType'))
104108
endif
105109
endfunction
106110

107111
function! VimuxCloseRunner()
108112
if exists('g:VimuxRunnerIndex')
109-
call s:VimuxTmux('kill-'.g:VimuxRunnerType.' -t '.g:VimuxRunnerIndex)
113+
call s:VimuxTmux('kill-'.s:VimuxOption('VimuxRunnerType').' -t '.g:VimuxRunnerIndex)
110114
unlet g:VimuxRunnerIndex
111115
endif
112116
endfunction
113117

114118
function! VimuxTogglePane()
115119
if exists('g:VimuxRunnerIndex')
116-
if g:VimuxRunnerType ==# 'window'
117-
call s:VimuxTmux('join-pane -d -s '.g:VimuxRunnerIndex.' -p '.g:VimuxHeight)
118-
let g:VimuxRunnerType = 'pane'
119-
elseif g:VimuxRunnerType ==# 'pane'
120+
if s:VimuxOption('VimuxRunnerType') ==# 'window'
121+
call s:VimuxTmux('join-pane -d -s '.g:VimuxRunnerIndex.' -p '.s:VimuxOption('VimuxHeight'))
122+
let s:VimuxOption('VimuxRunnerType') = 'pane'
123+
elseif s:VimuxOption('VimuxRunnerType') ==# 'pane'
120124
let g:VimuxRunnerIndex=substitute(s:VimuxTmux('break-pane -d -t '.g:VimuxRunnerIndex." -P -F '#{window_id}'"), '\n', '', '')
121-
let g:VimuxRunnerType = 'window'
125+
let s:VimuxOption('VimuxRunnerType') = 'window'
122126
endif
123127
endif
124128
endfunction
125129

126130
function! VimuxZoomRunner()
127131
if exists('g:VimuxRunnerIndex')
128-
if g:VimuxRunnerType ==# 'pane'
132+
if s:VimuxOption('VimuxRunnerType') ==# 'pane'
129133
call s:VimuxTmux('resize-pane -Z -t '.g:VimuxRunnerIndex)
130-
elseif g:VimuxRunnerType ==# 'window'
134+
elseif s:VimuxOption('VimuxRunnerType') ==# 'window'
131135
call s:VimuxTmux('select-window -t '.g:VimuxRunnerIndex)
132136
endif
133137
endif
134138
endfunction
135139

136140
function! VimuxInspectRunner()
137-
call s:VimuxTmux('select-'.g:VimuxRunnerType.' -t '.g:VimuxRunnerIndex)
141+
call s:VimuxTmux('select-'.s:VimuxOption('VimuxRunnerType').' -t '.g:VimuxRunnerIndex)
138142
call s:VimuxTmux('copy-mode')
139143
endfunction
140144

141145
function! VimuxScrollUpInspect()
142146
call VimuxInspectRunner()
143-
call s:VimuxTmux('last-'.g:VimuxRunnerType)
147+
call s:VimuxTmux('last-'.s:VimuxOption('VimuxRunnerType'))
144148
call VimuxSendKeys('C-u')
145149
endfunction
146150

147151
function! VimuxScrollDownInspect()
148152
call VimuxInspectRunner()
149-
call s:VimuxTmux('last-'.g:VimuxRunnerType)
153+
call s:VimuxTmux('last-'.s:VimuxOption('VimuxRunnerType'))
150154
call VimuxSendKeys('C-d')
151155
endfunction
152156

@@ -168,23 +172,23 @@ endfunction
168172

169173
function! VimuxPromptCommand(...)
170174
let command = a:0 ==# 1 ? a:1 : ''
171-
let l:command = input(g:VimuxPromptString, command, 'shellcmd')
175+
let l:command = input(s:VimuxOption('VimuxPromptString'), command, 'shellcmd')
172176
call VimuxRunCommand(l:command)
173177
endfunction
174178

175179
function! s:VimuxTmux(arguments)
176-
if g:VimuxDebug
177-
echom g:VimuxTmuxCommand.' '.a:arguments
180+
if s:VimuxOption('VimuxDebug')
181+
echom s:VimuxOption('VimuxTmuxCommand').' '.a:arguments
178182
endif
179-
return system(g:VimuxTmuxCommand.' '.a:arguments)
183+
return system(s:VimuxOption('VimuxTmuxCommand').' '.a:arguments)
180184
endfunction
181185

182186
function! s:VimuxTmuxSession()
183187
return s:VimuxTmuxProperty('#S')
184188
endfunction
185189

186190
function! s:VimuxTmuxIndex()
187-
if g:VimuxRunnerType ==# 'pane'
191+
if s:VimuxOption('VimuxRunnerType') ==# 'pane'
188192
return s:VimuxTmuxPaneId()
189193
else
190194
return s:VimuxTmuxWindowId()
@@ -200,7 +204,7 @@ function! s:VimuxTmuxWindowId()
200204
endfunction
201205

202206
function! s:VimuxNearestIndex()
203-
let t = g:VimuxRunnerType
207+
let t = s:VimuxOption('VimuxRunnerType')
204208
let filter = s:VimuxGetTargetFilter()
205209
let views = split(s:VimuxTmux('list-'.t."s -F '#{".t.'_active}:#{'.t."_id}'".filter), '\n')
206210

@@ -214,11 +218,11 @@ function! s:VimuxNearestIndex()
214218
endfunction
215219

216220
function! s:VimuxGetTargetFilter()
217-
let targetName = g:VimuxRunnerName
221+
let targetName = s:VimuxOption('VimuxRunnerName')
218222
if targetName ==# ''
219223
return ''
220224
endif
221-
let t = g:VimuxRunnerType
225+
let t = s:VimuxOption('VimuxRunnerType')
222226
if t ==# 'window'
223227
return " -f '#{==:#{window_name},".targetName."}'"
224228
elseif t ==# 'pane'
@@ -227,11 +231,11 @@ function! s:VimuxGetTargetFilter()
227231
endfunction
228232

229233
function! s:VimuxSetRunnerName()
230-
let targetName = g:VimuxRunnerName
234+
let targetName = s:VimuxOption('VimuxRunnerName')
231235
if targetName ==# ''
232236
return
233237
endif
234-
let t = g:VimuxRunnerType
238+
let t = s:VimuxOption('VimuxRunnerType')
235239
if t ==# 'window'
236240
call s:VimuxTmux('rename-window '.targetName)
237241
elseif t ==# 'pane'
@@ -244,6 +248,6 @@ function! s:VimuxTmuxProperty(property)
244248
endfunction
245249

246250
function! s:VimuxHasRunner(index)
247-
let t = g:VimuxRunnerType
251+
let t = s:VimuxOption('VimuxRunnerType')
248252
return match(s:VimuxTmux('list-'.t."s -F '#{".t."_id}'"), a:index)
249253
endfunction

0 commit comments

Comments
 (0)