summaryrefslogtreecommitdiff
path: root/lua/lvim/core
diff options
context:
space:
mode:
authorkylo252 <[email protected]>2022-02-12 09:17:34 +0100
committerkylo252 <[email protected]>2022-02-12 09:17:34 +0100
commitff9d883f64b75cb36f3164aae9d36a372f8b46d7 (patch)
tree27f496c5d814fde1bb5950f5580ed476f7fa02d1 /lua/lvim/core
parent2fa176f23fb8dffbafbac6a1f5e34c1f9c79c3f7 (diff)
parent564798b83e40e622fb5c1b6f3803b80f42d092ec (diff)
Merge branch 'rolling'
Diffstat (limited to 'lua/lvim/core')
-rw-r--r--lua/lvim/core/bufferline.lua121
-rw-r--r--lua/lvim/core/info.lua34
-rw-r--r--lua/lvim/core/lualine/components.lua4
-rw-r--r--lua/lvim/core/nvimtree.lua28
-rw-r--r--lua/lvim/core/which-key.lua20
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",
},
},