Use IDs instead of indexes to identify windows and panes (#110)

...because indexes can change while IDs are constant and unique.
fix-tmux-next-3dot4
Eugene Yunak 3 years ago committed by GitHub
parent fff2f1a686
commit 1dec7164ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -96,7 +96,7 @@ function! VimuxTogglePane()
call _VimuxTmux("join-pane -d -s ".g:VimuxRunnerIndex." -p "._VimuxOption("g:VimuxHeight", 20)) call _VimuxTmux("join-pane -d -s ".g:VimuxRunnerIndex." -p "._VimuxOption("g:VimuxHeight", 20))
let g:VimuxRunnerType = "pane" let g:VimuxRunnerType = "pane"
elseif _VimuxRunnerType() == "pane" elseif _VimuxRunnerType() == "pane"
let g:VimuxRunnerIndex=substitute(_VimuxTmux("break-pane -d -t ".g:VimuxRunnerIndex." -P -F '#{window_index}'"), "\n", "", "") let g:VimuxRunnerIndex=substitute(_VimuxTmux("break-pane -d -t ".g:VimuxRunnerIndex." -P -F '#{window_id}'"), "\n", "", "")
let g:VimuxRunnerType = "window" let g:VimuxRunnerType = "window"
endif endif
endif endif
@ -156,26 +156,27 @@ endfunction
function! _VimuxTmuxIndex() function! _VimuxTmuxIndex()
if _VimuxRunnerType() == "pane" if _VimuxRunnerType() == "pane"
return _VimuxTmuxPaneIndex() return _VimuxTmuxPaneId()
else else
return _VimuxTmuxWindowIndex() return _VimuxTmuxWindowId()
end end
endfunction endfunction
function! _VimuxTmuxPaneIndex() function! _VimuxTmuxPaneId()
return _VimuxTmuxProperty("#I.#P") return _VimuxTmuxProperty("#{pane_id}")
endfunction endfunction
function! _VimuxTmuxWindowIndex() function! _VimuxTmuxWindowId()
return _VimuxTmuxProperty("#I") return _VimuxTmuxProperty("#{window_id}")
endfunction endfunction
function! _VimuxNearestIndex() function! _VimuxNearestIndex()
let views = split(_VimuxTmux("list-"._VimuxRunnerType()."s"), "\n") let t = _VimuxRunnerType()
let views = split(_VimuxTmux("list-".t."s -F '#{".t."_active}:#{".t."_id}'"), "\n")
for view in views for view in views
if match(view, "(active)") == -1 if match(view, "1:") == -1
return split(view, ":")[0] return split(view, ":")[1]
endif endif
endfor endfor
@ -199,5 +200,6 @@ function! _VimuxTmuxProperty(property)
endfunction endfunction
function! _VimuxHasRunner(index) function! _VimuxHasRunner(index)
return match(_VimuxTmux("list-"._VimuxRunnerType()."s -a"), a:index.":") let t = _VimuxRunnerType()
return match(_VimuxTmux("list-".t."s -F '#{".t."_id}'"), a:index)
endfunction endfunction

Loading…
Cancel
Save