diff options
author | kylo252 <[email protected]> | 2022-02-12 09:17:34 +0100 |
---|---|---|
committer | kylo252 <[email protected]> | 2022-02-12 09:17:34 +0100 |
commit | ff9d883f64b75cb36f3164aae9d36a372f8b46d7 (patch) | |
tree | 27f496c5d814fde1bb5950f5580ed476f7fa02d1 /lua/lvim/core | |
parent | 2fa176f23fb8dffbafbac6a1f5e34c1f9c79c3f7 (diff) | |
parent | 564798b83e40e622fb5c1b6f3803b80f42d092ec (diff) |
Merge branch 'rolling'
Diffstat (limited to 'lua/lvim/core')
-rw-r--r-- | lua/lvim/core/bufferline.lua | 121 | ||||
-rw-r--r-- | lua/lvim/core/info.lua | 34 | ||||
-rw-r--r-- | lua/lvim/core/lualine/components.lua | 4 | ||||
-rw-r--r-- | lua/lvim/core/nvimtree.lua | 28 | ||||
-rw-r--r-- | lua/lvim/core/which-key.lua | 20 |
5 files changed, 151 insertions, 56 deletions
diff --git a/lua/lvim/core/bufferline.lua b/lua/lvim/core/bufferline.lua index 4f7493d6..06de3ac4 100644 --- a/lua/lvim/core/bufferline.lua +++ b/lua/lvim/core/bufferline.lua @@ -1,5 +1,38 @@ local M = {} +local function is_ft(b, ft) + return vim.bo[b].filetype == ft +end + +local function diagnostics_indicator(_, _, diagnostics) + local result = {} + local symbols = { error = "", warning = "", info = "" } + for name, count in pairs(diagnostics) do + if symbols[name] and count > 0 then + table.insert(result, symbols[name] .. count) + end + end + result = table.concat(result, " ") + return #result > 0 and result or "" +end + +local function custom_filter(buf, buf_nums) + local logs = vim.tbl_filter(function(b) + return is_ft(b, "log") + end, buf_nums) + if vim.tbl_isempty(logs) then + return true + end + local tab_num = vim.fn.tabpagenr() + local last_tab = vim.fn.tabpagenr "$" + local is_log = is_ft(buf, "log") + if last_tab == 1 then + return true + end + -- only show log buffers in secondary tabs + return (tab_num == last_tab and is_log) or (tab_num ~= last_tab and not is_log) +end + M.config = function() lvim.builtin.bufferline = { active = true, @@ -7,11 +40,99 @@ M.config = function() keymap = { normal_mode = {}, }, + highlights = { + background = { + gui = "italic", + }, + buffer_selected = { + gui = "bold", + }, + }, + options = { + numbers = "none", -- can be "none" | "ordinal" | "buffer_id" | "both" | function + close_command = "bdelete! %d", -- can be a string | function, see "Mouse actions" + right_mouse_command = "vert sbuffer %d", -- can be a string | function, see "Mouse actions" + left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions" + middle_mouse_command = nil, -- can be a string | function, see "Mouse actions" + -- NOTE: this plugin is designed with this icon in mind, + -- and so changing this is NOT recommended, this is intended + -- as an escape hatch for people who cannot bear it for whatever reason + indicator_icon = "▎", + buffer_close_icon = "", + modified_icon = "●", + close_icon = "", + left_trunc_marker = "", + right_trunc_marker = "", + --- name_formatter can be used to change the buffer's label in the bufferline. + --- Please note some names can/will break the + --- bufferline so use this at your discretion knowing that it has + --- some limitations that will *NOT* be fixed. + name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr" + -- remove extension from markdown files for example + if buf.name:match "%.md" then + return vim.fn.fnamemodify(buf.name, ":t:r") + end + end, + max_name_length = 18, + max_prefix_length = 15, -- prefix used when a buffer is de-duplicated + tab_size = 18, + diagnostics = "nvim_lsp", + diagnostics_update_in_insert = false, + diagnostics_indicator = diagnostics_indicator, + -- NOTE: this will be called a lot so don't do any heavy processing here + custom_filter = custom_filter, + offsets = { + { + filetype = "undotree", + text = "Undotree", + highlight = "PanelHeading", + padding = 1, + }, + { + filetype = "NvimTree", + text = "Explorer", + highlight = "PanelHeading", + padding = 1, + }, + { + filetype = "DiffviewFiles", + text = "Diff View", + highlight = "PanelHeading", + padding = 1, + }, + { + filetype = "flutterToolsOutline", + text = "Flutter Outline", + highlight = "PanelHeading", + }, + { + filetype = "packer", + text = "Packer", + highlight = "PanelHeading", + padding = 1, + }, + }, + show_buffer_icons = true, -- disable filetype icons for buffers + show_buffer_close_icons = true, + show_close_icon = false, + show_tab_indicators = true, + persist_buffer_sort = true, -- whether or not custom sorted buffers should persist + -- can also be a table containing 2 custom separators + -- [focused and unfocused]. eg: { '|', '|' } + separator_style = "thin", + enforce_regular_tabs = false, + always_show_bufferline = false, + sort_by = "id", + }, } end M.setup = function() require("lvim.keymappings").load(lvim.builtin.bufferline.keymap) + require("bufferline").setup { + options = lvim.builtin.bufferline.options, + highlights = lvim.builtin.bufferline.highlights, + } if lvim.builtin.bufferline.on_config_done then lvim.builtin.bufferline.on_config_done() diff --git a/lua/lvim/core/info.lua b/lua/lvim/core/info.lua index da295b95..34a5a7dd 100644 --- a/lua/lvim/core/info.lua +++ b/lua/lvim/core/info.lua @@ -161,22 +161,24 @@ function M.toggle_popup(ft) local content_provider = function(popup) local content = {} - for _, section in ipairs { - M.banner, - { "" }, - { "" }, - header, - { "" }, - lsp_info, - { "" }, - override_info, - { "" }, - formatters_info, - { "" }, - linters_info, - { "" }, - code_actions_info, - } do + for _, section in + ipairs { + M.banner, + { "" }, + { "" }, + header, + { "" }, + lsp_info, + { "" }, + override_info, + { "" }, + formatters_info, + { "" }, + linters_info, + { "" }, + code_actions_info, + } + do vim.list_extend(content, section) end diff --git a/lua/lvim/core/lualine/components.lua b/lua/lvim/core/lualine/components.lua index b1387afa..b97f946e 100644 --- a/lua/lvim/core/lualine/components.lua +++ b/lua/lvim/core/lualine/components.lua @@ -35,7 +35,7 @@ return { diff = { "diff", source = diff_source, - symbols = { added = " ", modified = "柳", removed = " " }, + symbols = { added = " ", modified = " ", removed = " " }, diff_color = { added = { fg = colors.green }, modified = { fg = colors.yellow }, @@ -74,7 +74,7 @@ return { function() local b = vim.api.nvim_get_current_buf() if next(vim.treesitter.highlighter.active[b]) then - return " " + return "" end return "" end, diff --git a/lua/lvim/core/nvimtree.lua b/lua/lvim/core/nvimtree.lua index 287791b8..17b8f36a 100644 --- a/lua/lvim/core/nvimtree.lua +++ b/lua/lvim/core/nvimtree.lua @@ -136,34 +136,6 @@ function M.setup() } end - local function on_open() - if package.loaded["bufferline.state"] and lvim.builtin.nvimtree.setup.view.side == "left" then - require("bufferline.state").set_offset(lvim.builtin.nvimtree.setup.view.width + 1, "") - end - end - - local function on_close() - local bufnr = vim.api.nvim_get_current_buf() - local ft = vim.api.nvim_buf_get_option(bufnr, "filetype") - if ft == "NvimTree" and package.loaded["bufferline.state"] then - require("bufferline.state").set_offset(0) - end - end - - local tree_view = require "nvim-tree.view" - local default_open = tree_view.open - local default_close = tree_view.close - - tree_view.open = function() - on_open() - default_open() - end - - tree_view.close = function() - on_close() - default_close() - end - if lvim.builtin.nvimtree.on_config_done then lvim.builtin.nvimtree.on_config_done(nvim_tree_config) end diff --git a/lua/lvim/core/which-key.lua b/lua/lvim/core/which-key.lua index 8691a9a6..194cb314 100644 --- a/lua/lvim/core/which-key.lua +++ b/lua/lvim/core/which-key.lua @@ -67,30 +67,30 @@ M.config = function() ["w"] = { "<cmd>w!<CR>", "Save" }, ["q"] = { "<cmd>q!<CR>", "Quit" }, ["/"] = { "<cmd>lua require('Comment.api').toggle_current_linewise()<CR>", "Comment" }, - ["c"] = { "<cmd>BufferClose!<CR>", "Close Buffer" }, + ["c"] = { "<cmd>bdelete!<CR>", "Close Buffer" }, ["f"] = { require("lvim.core.telescope.custom-finders").find_project_files, "Find File" }, ["h"] = { "<cmd>nohlsearch<CR>", "No Highlight" }, b = { name = "Buffers", - j = { "<cmd>BufferPick<cr>", "Jump" }, + j = { "<cmd>BufferLinePick<cr>", "Jump" }, f = { "<cmd>Telescope buffers<cr>", "Find" }, - b = { "<cmd>b#<cr>", "Previous" }, - w = { "<cmd>BufferWipeout<cr>", "Wipeout" }, + b = { "<cmd>BufferLineCyclePrev<cr>", "Previous" }, + -- w = { "<cmd>BufferWipeout<cr>", "Wipeout" }, -- TODO: implement this for bufferline e = { - "<cmd>BufferCloseAllButCurrent<cr>", - "Close all but current", + "<cmd>BufferLinePickClose<cr>", + "Pick which buffer to close", }, - h = { "<cmd>BufferCloseBuffersLeft<cr>", "Close all to the left" }, + h = { "<cmd>BufferLineCloseLeft<cr>", "Close all to the left" }, l = { - "<cmd>BufferCloseBuffersRight<cr>", + "<cmd>BufferLineCloseRight<cr>", "Close all to the right", }, D = { - "<cmd>BufferOrderByDirectory<cr>", + "<cmd>BufferLineSortByDirectory<cr>", "Sort by directory", }, L = { - "<cmd>BufferOrderByLanguage<cr>", + "<cmd>BufferLineSortByExtension<cr>", "Sort by language", }, }, |