From 685fb71d8953189e36375b822c8d8e1293736128 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Fri, 10 May 2024 17:43:42 +0900 Subject: [PATCH] [vim] Use native --tmux option instead of fzf-tmux when possible --- README-VIM.md | 9 +++++---- doc/fzf.txt | 9 +++++---- plugin/fzf.vim | 20 +++++++++++--------- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/README-VIM.md b/README-VIM.md index 6751d25..e727dd1 100644 --- a/README-VIM.md +++ b/README-VIM.md @@ -294,7 +294,7 @@ The following table summarizes the available options. | `options` | string/list | Options to fzf | | `dir` | string | Working directory | | `up`/`down`/`left`/`right` | number/string | (Layout) Window position and size (e.g. `20`, `50%`) | -| `tmux` | string | (Layout) fzf-tmux options (e.g. `-p90%,60%`) | +| `tmux` | string | (Layout) `--tmux` options (e.g. `90%,70%`) | | `window` (Vim 8 / Neovim) | string | (Layout) Command to open fzf window (e.g. `vertical aboveleft 30new`) | | `window` (Vim 8 / Neovim) | dict | (Layout) Popup window settings (e.g. `{'width': 0.9, 'height': 0.6}`) | @@ -457,12 +457,13 @@ let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } } ``` Alternatively, you can make fzf open in a tmux popup window (requires tmux 3.2 -or above) by putting fzf-tmux options in `tmux` key. +or above) by putting `--tmux` option value in `tmux` key. ```vim -" See `man fzf-tmux` for available options +" See `--tmux` option in `man fzf` for available options +" [center|top|bottom|left|right][,SIZE[%]][,SIZE[%]] if exists('$TMUX') - let g:fzf_layout = { 'tmux': '-p90%,60%' } + let g:fzf_layout = { 'tmux': '90%,70%' } else let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } } endif diff --git a/doc/fzf.txt b/doc/fzf.txt index cf8c6af..f946184 100644 --- a/doc/fzf.txt +++ b/doc/fzf.txt @@ -311,7 +311,7 @@ The following table summarizes the available options. `options` | string/list | Options to fzf `dir` | string | Working directory `up` / `down` / `left` / `right` | number/string | (Layout) Window position and size (e.g. `20` , `50%` ) - `tmux` | string | (Layout) fzf-tmux options (e.g. `-p90%,60%` ) + `tmux` | string | (Layout) `--tmux` options (e.g. `90%,70%` ) `window` (Vim 8 / Neovim) | string | (Layout) Command to open fzf window (e.g. `vertical aboveleft 30new` ) `window` (Vim 8 / Neovim) | dict | (Layout) Popup window settings (e.g. `{'width': 0.9, 'height': 0.6}` ) ---------------------------+---------------+---------------------------------------------------------------------- @@ -469,11 +469,12 @@ in Neovim. let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } } < Alternatively, you can make fzf open in a tmux popup window (requires tmux 3.2 -or above) by putting fzf-tmux options in `tmux` key. +or above) by putting `--tmux` options in `tmux` key. > - " See `man fzf-tmux` for available options + " See `--tmux` option in `man fzf` for available options + " [center|top|bottom|left|right][,SIZE[%]][,SIZE[%]] if exists('$TMUX') - let g:fzf_layout = { 'tmux': '-p90%,60%' } + let g:fzf_layout = { 'tmux': '90%,70%' } else let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } } endif diff --git a/plugin/fzf.vim b/plugin/fzf.vim index 51ed138..eee5e9c 100644 --- a/plugin/fzf.vim +++ b/plugin/fzf.vim @@ -573,19 +573,21 @@ function! s:fzf_tmux(dict) 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 + let size = o . ',' . a:dict[o] break endif endfor endif - return printf('LINES=%d COLUMNS=%d %s %s %s --', - \ &lines, &columns, fzf#shellescape(s:fzf_tmux), size, (has_key(a:dict, 'source') ? '' : '-')) + + " Legacy fzf-tmux options + if size =~ '-' + return printf('LINES=%d COLUMNS=%d %s %s %s --', + \ &lines, &columns, fzf#shellescape(s:fzf_tmux), size, (has_key(a:dict, 'source') ? '' : '-')) + end + + " Using native --tmux option + let in = (has_key(a:dict, 'source') ? '' : ' < /dev/tty') + return printf('%s --tmux %s%s', fzf#shellescape(fzf#exec()), size, in) endfunction function! s:splittable(dict)