From 053af9a1c8db1c0cc9236da305d07bf382f8e7ab Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Wed, 12 Oct 2016 23:09:21 +0900 Subject: [PATCH] [fzf-tmux/vim/nvim] Do not split small window Close #699 --- bin/fzf-tmux | 5 +++-- plugin/fzf.vim | 34 ++++++++++++++++++---------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/bin/fzf-tmux b/bin/fzf-tmux index ff923f0..1c17921 100755 --- a/bin/fzf-tmux +++ b/bin/fzf-tmux @@ -17,6 +17,7 @@ swap="" close="" term="" [[ -n "$LINES" ]] && lines=$LINES || lines=$(tput lines) +[[ -n "$COLUMNS" ]] && columns=$COLUMNS || columns=$(tput cols) help() { >&2 echo 'usage: fzf-tmux [-u|-d [HEIGHT[%]]] [-l|-r [WIDTH[%]]] [--] [FZF OPTIONS] @@ -83,7 +84,7 @@ while [[ $# -gt 0 ]]; do else if [[ -n "$swap" ]]; then if [[ "$arg" =~ ^.l ]]; then - [[ -n "$COLUMNS" ]] && max=$COLUMNS || max=$(tput cols) + max=$columns else max=$lines fi @@ -108,7 +109,7 @@ while [[ $# -gt 0 ]]; do [[ -n "$skip" ]] && args+=("$arg") done -if [[ -z "$TMUX" ]] || [[ "$lines" -le 15 ]]; then +if [[ -z "$TMUX" ]] || [[ "$opt" =~ ^-h ]] && [[ "$columns" -le 40 ]] || [[ ! "$opt" =~ ^-h ]] && [[ "$lines" -le 15 ]]; then "$fzf" "${args[@]}" exit $? fi diff --git a/plugin/fzf.vim b/plugin/fzf.vim index 2eb98d4..42dbcda 100644 --- a/plugin/fzf.vim +++ b/plugin/fzf.vim @@ -289,7 +289,8 @@ function! s:fzf_tmux(dict) endfunction function! s:splittable(dict) - return s:present(a:dict, 'up', 'down', 'left', 'right') + return s:present(a:dict, 'up', 'down') && &lines > 15 || + \ s:present(a:dict, 'left', 'right') && &columns > 40 endfunction function! s:pushd(dict) @@ -405,24 +406,25 @@ function! s:split(dict) \ 'right': ['vertical botright', 'vertical resize', &columns] } let ppos = s:getpos() try - for [dir, triple] in items(directions) - let val = get(a:dict, dir, '') - if !empty(val) - let [cmd, resz, max] = triple - if (dir == 'up' || dir == 'down') && val[0] == '~' - let sz = s:calc_size(max, val, a:dict) - else - let sz = s:calc_size(max, val, {}) - endif - execute cmd sz.'new' - execute resz sz - return [ppos, {}] - endif - endfor if s:present(a:dict, 'window') execute a:dict.window - else + elseif !s:splittable(a:dict) execute (tabpagenr()-1).'tabnew' + else + for [dir, triple] in items(directions) + let val = get(a:dict, dir, '') + if !empty(val) + let [cmd, resz, max] = triple + if (dir == 'up' || dir == 'down') && val[0] == '~' + let sz = s:calc_size(max, val, a:dict) + else + let sz = s:calc_size(max, val, {}) + endif + execute cmd sz.'new' + execute resz sz + return [ppos, {}] + endif + endfor endif return [ppos, { '&l:wfw': &l:wfw, '&l:wfh': &l:wfh }] finally