summaryrefslogtreecommitdiff
path: root/plugin/fzf.vim
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2020-04-05 18:14:05 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2020-04-05 18:16:36 +0900
commit71e573d082ee4f0ee3935517d34e0556d81435d7 (patch)
treeefadd8083e12dcb8a5a35223d9ca3e7884aff604 /plugin/fzf.vim
parent334a4fa15920b08f7be2432398e620587cc6f079 (diff)
downloadfzf-71e573d082ee4f0ee3935517d34e0556d81435d7.tar.gz
[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
Diffstat (limited to 'plugin/fzf.vim')
-rw-r--r--plugin/fzf.vim49
1 files changed, 18 insertions, 31 deletions
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