diff --git a/README-VIM.md b/README-VIM.md index 88a9308f..a42801db 100644 --- a/README-VIM.md +++ b/README-VIM.md @@ -204,7 +204,7 @@ following options are allowed: - `yoffset` [float default 0.5 range [0 ~ 1]] - `xoffset` [float default 0.5 range [0 ~ 1]] - `highlight` [string default `'Comment'`]: Highlight group for border - - `rounded` [boolean default `v:true`]: Use rounded border + - `border` [string default `rounded`]: Border style (`rounded` | `sharp` | `horizontal`) `fzf#wrap` ---------- @@ -300,7 +300,7 @@ The latest versions of Vim and Neovim include builtin terminal emulator " - xoffset [float default 0.0 range [0 ~ 1]] " - yoffset [float default 0.0 range [0 ~ 1]] " - highlight [string default 'Comment']: Highlight group for border -" - rounded [boolean default v:true]: Use rounded border +" - border [string default 'rounded']: Border style ('rounded' | 'sharp' | 'horizontal') let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } } ``` diff --git a/doc/fzf.txt b/doc/fzf.txt index 447a6be8..1a586919 100644 --- a/doc/fzf.txt +++ b/doc/fzf.txt @@ -223,7 +223,7 @@ following options are allowed: - `xoffset` [float default 0.0 range [0 ~ 1]] - `yoffset` [float default 0.0 range [0 ~ 1]] - `highlight` [string default `'Comment'`]: Highlight group for border - - `rounded` [boolean default `v:true`]: Use rounded border + - `border` [string default `rounded`]: Border style (`rounded` | `sharp` | `horizontal`) FZF#WRAP @@ -315,7 +315,7 @@ Starting fzf in a popup window~ " - xoffset [float default 0.5 range [0 ~ 1]] " - yoffset [float default 0.5 range [0 ~ 1]] " - highlight [string default 'Comment']: Highlight group for border - " - rounded [boolean default v:true]: Use rounded border + " - border [string default 'rounded']: Border style ('rounded' | 'sharp' | 'horizontal') let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } } < diff --git a/plugin/fzf.vim b/plugin/fzf.vim index 5c93f5aa..7e3046af 100644 --- a/plugin/fzf.vim +++ b/plugin/fzf.vim @@ -854,20 +854,33 @@ function! s:popup(opts) abort let row += !has('nvim') let col += !has('nvim') - " Border - let edges = get(a:opts, 'rounded', 1) ? ['╭', '╮', '╰', '╯'] : ['┌', '┐', '└', '┘'] - let bar = repeat('─', width - 2) - let top = edges[0] .. bar .. edges[1] - let mid = '│' .. repeat(' ', width - 2) .. '│' - let bot = edges[2] .. bar .. edges[3] - let border = [top] + repeat([mid], height - 2) + [bot] + " Border style + let style = get(a:opts, 'border', 'rounded') + if !has_key(a:opts, 'border') && !get(a:opts, 'rounded', 1) + let style = 'sharp' + endif + + if style == 'horizontal' + let hor = repeat('─', width) + let mid = repeat(' ', width) + let border = [hor] + repeat([mid], height - 2) + [hor] + let margin = 0 + else + let edges = style == 'sharp' ? ['┌', '┐', '└', '┘'] : ['╭', '╮', '╰', '╯'] + let bar = repeat('─', width - 2) + let top = edges[0] .. bar .. edges[1] + let mid = '│' .. repeat(' ', width - 2) .. '│' + let bot = edges[2] .. bar .. edges[3] + let border = [top] + repeat([mid], height - 2) + [bot] + let margin = 2 + endif let highlight = get(a:opts, 'highlight', 'Comment') let frame = s:create_popup(highlight, { \ 'row': row, 'col': col, 'width': width, 'height': height, 'border': border \ }) call s:create_popup('Normal', { - \ 'row': row + 1, 'col': col + 2, 'width': width - 4, 'height': height - 2 + \ 'row': row + 1, 'col': col + margin, 'width': width - margin * 2, 'height': height - 2 \ }) if has('nvim') execute 'autocmd BufWipeout bwipeout '..frame