From c925eb89a00d589b2562a59ae5f58f967317b9c1 Mon Sep 17 00:00:00 2001 From: bhagwan Date: Thu, 15 Jul 2021 08:52:41 -0700 Subject: [PATCH] added preview_opts, fixed win_border opt, fixed crash when no devicons are installed --- README.md | 1 + lua/fzf-lua/config.lua | 25 +++++++++++++++---------- lua/fzf-lua/core.lua | 17 ++++++++++------- lua/fzf-lua/init.lua | 1 + 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 70d4010..933f4b7 100644 --- a/README.md +++ b/README.md @@ -143,6 +143,7 @@ require'fzf-lua'.setup { preview_cmd = '', -- 'head -n $FZF_PREVIEW_LINES', preview_border = 'border', -- border|noborder preview_wrap = 'nowrap', -- wrap|nowrap + preview_opts = 'nohidden', -- hidden|nohidden preview_vertical = 'down:45%', -- up|down:size preview_horizontal = 'right:60%', -- right|left:size preview_layout = 'flex', -- horizontal|vertical|flex diff --git a/lua/fzf-lua/config.lua b/lua/fzf-lua/config.lua index 396e235..364665a 100644 --- a/lua/fzf-lua/config.lua +++ b/lua/fzf-lua/config.lua @@ -6,6 +6,8 @@ vim.env.FZF_DEFAULT_OPTS = '' local M = {} +M._has_devicons = pcall(require, "nvim-web-devicons") + M.win_height = 0.85 M.win_width = 0.80 M.win_row = 0.30 @@ -16,6 +18,7 @@ M.fzf_layout = 'reverse' M.preview_cmd = nil -- auto detect head|bat M.preview_border = 'border' M.preview_wrap = 'nowrap' +M.preview_opts = 'nohidden' M.preview_vertical = 'down:45%' M.preview_horizontal = 'right:60%' M.preview_layout = 'flex' @@ -26,7 +29,7 @@ M.bat_opts = "--italic-text=always --style=numbers,changes --color al M.files = { prompt = '> ', cmd = nil, -- default: auto detect find|fd - file_icons = true and pcall(require, "nvim-web-devicons"), + file_icons = true and M._has_devicons, color_icons = true, git_icons = true, git_diff_cmd = "git diff --name-status --relative HEAD", @@ -48,7 +51,7 @@ M.grep = { prompt = 'Rg> ', input_prompt = 'Grep For> ', cmd = nil, -- default: auto detect rg|grep - file_icons = true and pcall(require, "nvim-web-devicons"), + file_icons = true and M._has_devicons, color_icons = true, git_icons = true, git_diff_cmd = M.files.git_diff_cmd, @@ -66,7 +69,7 @@ M.grep = { M.oldfiles = { prompt = 'History> ', - file_icons = true and pcall(require, "nvim-web-devicons"), + file_icons = true and M._has_devicons, color_icons = true, git_icons = false, git_diff_cmd = M.files.git_diff_cmd, @@ -83,7 +86,7 @@ M.oldfiles = { M.quickfix = { prompt = 'Quickfix> ', separator = '▏', - file_icons = true and pcall(require, "nvim-web-devicons"), + file_icons = true and M._has_devicons, color_icons = true, git_icons = false, git_diff_cmd = M.files.git_diff_cmd, @@ -100,7 +103,7 @@ M.quickfix = { M.loclist = { prompt = 'Locations> ', separator = '▏', - file_icons = true and pcall(require, "nvim-web-devicons"), + file_icons = true and M._has_devicons, color_icons = true, git_icons = false, git_diff_cmd = M.files.git_diff_cmd, @@ -117,7 +120,7 @@ M.loclist = { M.git = { prompt = 'GitFiles> ', cmd = "git ls-files --exclude-standard", - file_icons = true and pcall(require, "nvim-web-devicons"), + file_icons = true and M._has_devicons, color_icons = true, git_icons = true, actions = M.files.actions, @@ -125,7 +128,7 @@ M.git = { M.buffers = { prompt = 'Buffers> ', - file_icons = true and pcall(require, "nvim-web-devicons"), + file_icons = true and M._has_devicons, color_icons = true, sort_lastused = true, show_all_buffers = true, @@ -249,7 +252,7 @@ M.winopts = function(opts) opts = M.getopts(opts, M, { "win_height", "win_width", - "win_row", "win_col", "border", + "win_row", "win_col", "win_border", "window_on_create", }) @@ -267,8 +270,10 @@ M.winopts = function(opts) end M.preview_window = function() - local preview_veritcal = string.format('%s:%s:%s', M.preview_border, M.preview_wrap, M.preview_vertical) - local preview_horizontal = string.format('%s:%s:%s', M.preview_border, M.preview_wrap, M.preview_horizontal) + local preview_veritcal = string.format('%s:%s:%s:%s', + M.preview_opts, M.preview_border, M.preview_wrap, M.preview_vertical) + local preview_horizontal = string.format('%s:%s:%s:%s', + M.preview_opts, M.preview_border, M.preview_wrap, M.preview_horizontal) if M.preview_layout == "vertical" then return preview_veritcal elseif M.preview_layout == "flex" then diff --git a/lua/fzf-lua/core.lua b/lua/fzf-lua/core.lua index fb1c7f2..a20d937 100644 --- a/lua/fzf-lua/core.lua +++ b/lua/fzf-lua/core.lua @@ -6,12 +6,19 @@ local actions = require "fzf-lua.actions" local M = {} +-- invisible unicode char as icon|git separator +-- this way we can split our string by space +nbsp = "\u{00a0}" + M.get_devicon = function(file, ext) - local icon = nil - if #file > 0 and pcall(require, "nvim-web-devicons") then + local icon = nbsp + if not file or #file == 0 then return icon end + if config._has_devicons then icon = require'nvim-web-devicons'.get_icon(file, ext) + else + icon = utils._if(icon == nil, '', icon) end - return utils._if(icon == nil, '', icon) + return icon end M.preview_cmd = function(opts, cfg) @@ -65,10 +72,6 @@ M.build_fzf_cli = function(opts) return cli end --- invisible unicode char as icon|git separator --- this way we can split our string by space -local nbsp = "\u{00a0}" - local get_diff_files = function() local diff_files = {} local status = vim.fn.systemlist(config.files.git_diff_cmd) diff --git a/lua/fzf-lua/init.lua b/lua/fzf-lua/init.lua index fe543b3..606a9a0 100644 --- a/lua/fzf-lua/init.lua +++ b/lua/fzf-lua/init.lua @@ -57,6 +57,7 @@ function M.setup(opts) preview_cmd = "string", preview_border = "string", preview_wrap = "string", + preview_opts = "string", preview_vertical = "string", preview_horizontal = "string", preview_layout = "string",