From 71e573d082ee4f0ee3935517d34e0556d81435d7 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 5 Apr 2020 18:14:05 +0900 Subject: [vim] Add 'tmux' layout option to use fzf-tmux e.g. if exists('$TMUX') let g:fzf_layout = { 'tmux': '-p90%,60%' } else let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } } endif --- plugin/fzf.vim | 49 ++++++++++++++++++------------------------------- 1 file changed, 18 insertions(+), 31 deletions(-) (limited to 'plugin') diff --git a/plugin/fzf.vim b/plugin/fzf.vim index 83734aee..a84dcab7 100644 --- a/plugin/fzf.vim +++ b/plugin/fzf.vim @@ -116,7 +116,7 @@ function! s:fzf_tempname() endfunction let s:default_layout = { 'down': '~40%' } -let s:layout_keys = ['window', 'up', 'down', 'left', 'right'] +let s:layout_keys = ['window', 'tmux', 'up', 'down', 'left', 'right'] let s:fzf_go = s:base_dir.'/bin/fzf' let s:fzf_tmux = s:base_dir.'/bin/fzf-tmux' @@ -191,21 +191,6 @@ function! s:escape(path) return s:is_win ? escape(path, '$') : path endfunction -" Upgrade legacy options -function! s:upgrade(dict) - let copy = copy(a:dict) - if has_key(copy, 'tmux') - let copy.down = remove(copy, 'tmux') - endif - if has_key(copy, 'tmux_height') - let copy.down = remove(copy, 'tmux_height') - endif - if has_key(copy, 'tmux_width') - let copy.right = remove(copy, 'tmux_width') - endif - return copy -endfunction - function! s:error(msg) echohl ErrorMsg echom a:msg @@ -384,7 +369,7 @@ function! fzf#run(...) abort try let [shell, shellslash, shellcmdflag, shellxquote] = s:use_sh() - let dict = exists('a:1') ? s:upgrade(a:1) : {} + let dict = exists('a:1') ? copy(a:1) : {} let temps = { 'result': s:fzf_tempname() } let optstr = s:evaluate_opts(get(dict, 'options', '')) try @@ -416,7 +401,7 @@ try let prefix = '' endif - let prefer_tmux = get(g:, 'fzf_prefer_tmux', 0) + let prefer_tmux = get(g:, 'fzf_prefer_tmux', 0) || has_key(dict, 'tmux') let use_height = has_key(dict, 'down') && !has('gui_running') && \ !(has('nvim') || s:is_win || has('win32unix') || s:present(dict, 'up', 'left', 'right', 'window')) && \ executable('tput') && filereadable('/dev/tty') @@ -424,7 +409,7 @@ try let has_nvim_term = has('nvim-0.2.1') || has('nvim') && !s:is_win let use_term = has_nvim_term || \ has_vim8_term && !has('win32unix') && (has('gui_running') || s:is_win || !use_height && s:present(dict, 'down', 'up', 'left', 'right', 'window')) - let use_tmux = (!use_height && !use_term || prefer_tmux) && !has('win32unix') && s:tmux_enabled() && s:splittable(dict) + let use_tmux = (has_key(dict, 'tmux') || (!use_height && !use_term || prefer_tmux) && !has('win32unix') && s:splittable(dict)) && s:tmux_enabled() if prefer_tmux && use_tmux let use_height = 0 let use_term = 0 @@ -460,19 +445,21 @@ function! s:present(dict, ...) endfunction function! s:fzf_tmux(dict) - let size = '' - for o in ['up', 'down', 'left', 'right'] - if s:present(a:dict, o) - let spec = a:dict[o] - if (o == 'up' || o == 'down') && spec[0] == '~' - let size = '-'.o[0].s:calc_size(&lines, spec, a:dict) - else - " Legacy boolean option - let size = '-'.o[0].(spec == 1 ? '' : substitute(spec, '^\~', '', '')) + let size = get(a:dict, 'tmux', '') + if empty(size) + for o in ['up', 'down', 'left', 'right'] + if s:present(a:dict, o) + let spec = a:dict[o] + if (o == 'up' || o == 'down') && spec[0] == '~' + let size = '-'.o[0].s:calc_size(&lines, spec, a:dict) + else + " Legacy boolean option + let size = '-'.o[0].(spec == 1 ? '' : substitute(spec, '^\~', '', '')) + endif + break endif - break - endif - endfor + endfor + endif return printf('LINES=%d COLUMNS=%d %s %s %s --', \ &lines, &columns, fzf#shellescape(s:fzf_tmux), size, (has_key(a:dict, 'source') ? '' : '-')) endfunction -- cgit v1.2.3