From 7025c0d2e0dee08652cb3db7e65691ca3539338f Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Fri, 1 Jul 2022 23:55:13 -0500 Subject: feat(nvim): refactor bufferline and remove unused configs --- nvim/.config/nvim/lua/tobyvin/options.lua | 6 ++ nvim/.config/nvim/lua/tobyvin/plugins.lua | 9 +- .../.config/nvim/lua/tobyvin/plugins/bufdelete.lua | 37 +------ .../nvim/lua/tobyvin/plugins/bufferline.lua | 70 +++++++------ .../nvim/lua/tobyvin/plugins/colorbuddy.lua | 56 ----------- nvim/.config/nvim/lua/tobyvin/plugins/diffview.lua | 7 ++ .../nvim/lua/tobyvin/plugins/gruvbox-baby.lua | 10 -- .../.config/nvim/lua/tobyvin/plugins/lspconfig.lua | 8 +- nvim/.config/nvim/lua/tobyvin/plugins/neo-tree.lua | 73 -------------- nvim/.config/nvim/lua/tobyvin/plugins/neogit.lua | 1 + nvim/.config/nvim/lua/tobyvin/plugins/null-ls.lua | 7 ++ .../.config/nvim/lua/tobyvin/plugins/nvim-tree.lua | 111 --------------------- .../.config/nvim/lua/tobyvin/plugins/telescope.lua | 1 + nvim/.config/nvim/lua/tobyvin/utils.lua | 39 ++++++++ 14 files changed, 113 insertions(+), 322 deletions(-) delete mode 100644 nvim/.config/nvim/lua/tobyvin/plugins/colorbuddy.lua create mode 100644 nvim/.config/nvim/lua/tobyvin/plugins/diffview.lua delete mode 100644 nvim/.config/nvim/lua/tobyvin/plugins/gruvbox-baby.lua delete mode 100644 nvim/.config/nvim/lua/tobyvin/plugins/neo-tree.lua delete mode 100644 nvim/.config/nvim/lua/tobyvin/plugins/nvim-tree.lua diff --git a/nvim/.config/nvim/lua/tobyvin/options.lua b/nvim/.config/nvim/lua/tobyvin/options.lua index f1bff16..558d61b 100644 --- a/nvim/.config/nvim/lua/tobyvin/options.lua +++ b/nvim/.config/nvim/lua/tobyvin/options.lua @@ -1,8 +1,14 @@ +local utils = require("tobyvin.utils") local M = {} M.setup = function() vim.g.mapleader = " " + vim.fn.sign_define("DiagnosticSignError", utils.diagnostic_signs.error) + vim.fn.sign_define("DiagnosticSignWarn", utils.diagnostic_signs.warn) + vim.fn.sign_define("DiagnosticSignInfo", utils.diagnostic_signs.info) + vim.fn.sign_define("DiagnosticSignHint", utils.diagnostic_signs.hint) + vim.opt.termguicolors = true vim.opt.laststatus = 3 vim.opt.undofile = true diff --git a/nvim/.config/nvim/lua/tobyvin/plugins.lua b/nvim/.config/nvim/lua/tobyvin/plugins.lua index 18b6354..137cb0b 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins.lua @@ -188,6 +188,7 @@ M.plugins = function(use) use({ "TimUntersberger/neogit", + requires = { "sindrets/diffview.nvim" }, config = [[require("tobyvin.plugins.neogit").setup()]], }) @@ -209,6 +210,7 @@ M.plugins = function(use) use({ "sindrets/diffview.nvim", requires = "nvim-lua/plenary.nvim", + config = [[require("tobyvin.plugins.diffview")]], }) use({ @@ -254,12 +256,7 @@ M.plugins = function(use) use({ "akinsho/nvim-bufferline.lua", requires = "kyazdani42/nvim-web-devicons", - config = [[require("tobyvin.plugins.bufferline")]], - }) - use({ - "goolord/alpha-nvim", - requires = { "kyazdani42/nvim-web-devicons" }, - config = [[require("alpha").setup(require("alpha.themes.theta").config)]], + config = [[require("tobyvin.plugins.bufferline").setup()]], }) use("SmiteshP/nvim-gps") diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/bufdelete.lua b/nvim/.config/nvim/lua/tobyvin/plugins/bufdelete.lua index 1a1fe0a..6e65fcc 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/bufdelete.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/bufdelete.lua @@ -1,19 +1,6 @@ local utils = require("tobyvin.utils") local M = {} -M.get_listed_buffers = function() - local buffers = {} - local len = 0 - for buffer = 1, vim.fn.bufnr("$") do - if vim.fn.buflisted(buffer) == 1 then - len = len + 1 - buffers[len] = buffer - end - end - - return buffers -end - M.setup = function() local status_ok, bufdelete = pcall(require, "bufdelete") if not status_ok then @@ -22,28 +9,8 @@ M.setup = function() end local nmap = utils.create_map_group("n", "") - nmap("c", bufdelete.bufdelete, { desc = "Close buffer" }) - - local alpha_ok, alpha = pcall(require, "alpha") - if alpha_ok then - local augroup = vim.api.nvim_create_augroup("BufDeleteAlpha", { clear = true }) - - vim.api.nvim_create_autocmd("User", { - pattern = "BDeletePre", - group = augroup, - callback = function(event) - local buffers = M.get_listed_buffers() - for _, bufnr in ipairs(buffers) do - local name = vim.api.nvim_buf_get_name(bufnr) - local ft = vim.api.nvim_buf_get_option(bufnr, "filetype") - if bufnr ~= event.buf and name ~= "" and ft ~= "Alpha" then - return - end - alpha.start() - end - end, - }) - end + -- nmap("c", bufdelete.bufdelete, { desc = "Close buffer" }) + nmap("c", function() vim.cmd("Bdelete") end, { desc = "Close buffer" }) end return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/bufferline.lua b/nvim/.config/nvim/lua/tobyvin/plugins/bufferline.lua index 1ec906b..dac5a2c 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/bufferline.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/bufferline.lua @@ -1,33 +1,43 @@ -local status_ok, bufferline = pcall(require, "bufferline") -if not status_ok then - return +local utils = require("tobyvin.utils") +local M = {} + +M.diagnostic_signs = function(name) + name = name:gsub("warning", "warn") + return utils.diagnostic_signs[name] +end + +M.diagnostics_indicator = function(count, level, errors, ctx) + local s = " " + for e, n in pairs(errors) do + local sign = utils.diagnostic_signs[e:gsub("warning", "warn")].text + s = s .. (#s > 1 and " " or "") .. sign .. n + end + return s end -local diagnostics_signs = { - ["error"] = "", - warning = "", - default = "", -} +M.setup = function() + local status_ok, bufferline = pcall(require, "bufferline") + if not status_ok then + vim.notify("failed to load module 'bufferline'", "error") + return + end + + bufferline.setup({ + options = { + close_command = utils.close_buffer, + right_mouse_command = "buffer %d", + always_show_bufferline = false, + diagnostics = "nvim_lsp", + diagnostics_indicator = M.diagnostics_indicator, + -- show_tab_indicators = true, + show_close_icon = false, + left_trunc_marker = "<", + right_trunc_marker = ">", + }, + }) + + local nmap = utils.create_map_group("n", "b", "Buffers") + nmap("g", bufferline.pick_buffer, { desc = "Pick Buffer" }) +end -require("bufferline").setup({ - options = { - indicator_icon = " ", - buffer_close_icon = "", - modified_icon = "●", - close_icon = "", - close_command = "Bdelete! %d", - right_mouse_command = "Bdelete! %d", - always_show_bufferline = false, - diagnostics = "nvim_lsp", - diagnostics_indicator = function(count, level, diagnostics_dict, context) - local s = " " - for e, n in pairs(diagnostics_dict) do - local sym = diagnostics_signs[e] or diagnostics_signs.default - s = s .. (#s > 1 and " " or "") .. sym .. " " .. n - end - return s - end, - show_tab_indicators = true, - show_close_icon = false, - }, -}) +return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/colorbuddy.lua b/nvim/.config/nvim/lua/tobyvin/plugins/colorbuddy.lua deleted file mode 100644 index 6cadfb2..0000000 --- a/nvim/.config/nvim/lua/tobyvin/plugins/colorbuddy.lua +++ /dev/null @@ -1,56 +0,0 @@ -local M = {} - -M.setup = function() - local status_ok, colorbuddy = pcall(require, "colorbuddy") - if not status_ok then - vim.notify("Failed to load module 'colorbuddy'", "error") - return - end - - vim.opt.termguicolors = true - - colorbuddy.colorscheme("gruvbuddy") - - local c = require("colorbuddy.color").colors - local Group = require("colorbuddy.group").Group - local g = require("colorbuddy.group").groups - local s = require("colorbuddy.style").styles - - Group.new("GoTestSuccess", c.green, nil, s.bold) - Group.new("GoTestFail", c.red, nil, s.bold) - - -- Group.new('Keyword', c.purple, nil, nil) - - Group.new("TSPunctBracket", c.orange:light():light()) - - Group.new("StatuslineError1", c.red:light():light(), g.Statusline) - Group.new("StatuslineError2", c.red:light(), g.Statusline) - Group.new("StatuslineError3", c.red, g.Statusline) - Group.new("StatuslineError3", c.red:dark(), g.Statusline) - Group.new("StatuslineError3", c.red:dark():dark(), g.Statusline) - - Group.new("pythonTSType", c.red) - Group.new("goTSType", g.Type.fg:dark(), nil, g.Type) - - Group.new("typescriptTSConstructor", g.pythonTSType) - Group.new("typescriptTSProperty", c.blue) - - -- vim.cmd [[highlight WinSeparator guifg=#4e545c guibg=None]] - Group.new("WinSeparator", nil, nil) - - -- I don't think I like highlights for text - -- Group.new("LspReferenceText", nil, c.gray0:light(), s.bold) - -- Group.new("LspReferenceWrite", nil, c.gray0:light()) - - -- Group.new("TSKeyword", c.purple, nil, s.underline, c.blue) - -- Group.new("LuaFunctionCall", c.green, nil, s.underline + s.nocombine, g.TSKeyword.guisp) - - -- Hello - Group.new("TSTitle", c.blue) -end - -M.colors = function() - return require("colorbuddy.color").colors -end - -return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/diffview.lua b/nvim/.config/nvim/lua/tobyvin/plugins/diffview.lua new file mode 100644 index 0000000..394d8eb --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/plugins/diffview.lua @@ -0,0 +1,7 @@ +local M = {} + +M.setup = function () + require("diffview").setup() +end + +return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/gruvbox-baby.lua b/nvim/.config/nvim/lua/tobyvin/plugins/gruvbox-baby.lua deleted file mode 100644 index e243e3b..0000000 --- a/nvim/.config/nvim/lua/tobyvin/plugins/gruvbox-baby.lua +++ /dev/null @@ -1,10 +0,0 @@ -local M = {} - -M.setup = function() - vim.opt.background = "dark" - vim.g.gruvbox_baby_telescope_theme = 1 - vim.g.gruvbox_baby_transparent_mode = 1 - vim.cmd([[colorscheme gruvbox-baby]]) -end - -return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua b/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua index e6eb5e1..161dc87 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua @@ -30,19 +30,25 @@ M.setup = function() lspconfig.ltex.setup(lsp.config()) lspconfig.texlab.setup(lsp.config({ + init_options = { documentFormatting = true }, settings = { texlab = { build = { + args = {"-pdf", "-interaction=nonstopmode", "-synctex=1", "-auxdir=../aux", "-outdir=../", "-emulate-aux-dir", "%f"}, onSave = true, }, chktex = { onEdit = true, onOpenAndSave = true, }, + latexindent = { + modifyLineBreaks = true, + }, + auxDirectory = "../aux", }, }, on_attach = function(client, bufnr) - vim.b.tex_flavor = "latex" + vim.g.tex_flavor = "latex" lsp.on_attach(client, bufnr) end, })) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/neo-tree.lua b/nvim/.config/nvim/lua/tobyvin/plugins/neo-tree.lua deleted file mode 100644 index 37512d9..0000000 --- a/nvim/.config/nvim/lua/tobyvin/plugins/neo-tree.lua +++ /dev/null @@ -1,73 +0,0 @@ -local status_ok, neo_tree = pcall(require, "neo-tree") -if not status_ok then - return -end - -vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]]) - -vim.fn.sign_define("DiagnosticSignError", { text = " ", texthl = "DiagnosticSignError" }) -vim.fn.sign_define("DiagnosticSignWarn", { text = " ", texthl = "DiagnosticSignWarn" }) -vim.fn.sign_define("DiagnosticSignInfo", { text = " ", texthl = "DiagnosticSignInfo" }) -vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" }) - -neo_tree.setup({ - close_if_last_window = true, - window = { - mappings = { - [""] = "none", - ["<2-LeftMouse>"] = "none", - [""] = "none", - ["S"] = "none", - ["s"] = "none", - ["t"] = "none", - ["C"] = "none", - ["a"] = "none", - ["A"] = "none", - ["d"] = "none", - ["r"] = "none", - ["y"] = "none", - ["x"] = "none", - ["p"] = "none", - ["c"] = "none", - ["m"] = "none", - ["q"] = "none", - ["R"] = "none", - }, - }, - filesystem = { - filtered_items = { - hide_dotfiles = false, - }, - use_libuv_file_watcher = true, - window = { - mappings = { - [""] = "none", - ["."] = "none", - ["H"] = "none", - ["/"] = "none", - ["f"] = "none", - [""] = "none", - }, - }, - }, - buffers = { - mappings = { - ["bd"] = "none", - [""] = "none", - ["."] = "none", - }, - }, - git_status = { - window = { - mappings = { - ["A"] = "none", - ["gu"] = "none", - ["ga"] = "none", - ["gr"] = "none", - ["gc"] = "none", - ["gp"] = "none", - ["gg"] = "none", - }, - }, - }, -}) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/neogit.lua b/nvim/.config/nvim/lua/tobyvin/plugins/neogit.lua index 0b5424a..762999e 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/neogit.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/neogit.lua @@ -14,6 +14,7 @@ M.setup = function() integrations = { diffview = true, }, + -- kind = "replace", }) local nmap = utils.create_map_group("n", "g", "git") diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/null-ls.lua b/nvim/.config/nvim/lua/tobyvin/plugins/null-ls.lua index efcd723..b188abf 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/null-ls.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/null-ls.lua @@ -1,3 +1,4 @@ +local lsp = require("tobyvin.lsp") local M = {} M.setup = function() @@ -22,6 +23,7 @@ M.setup = function() diagnostics.markdownlint, -- diagnostics.luacheck, diagnostics.shellcheck, + diagnostics.checkmake, -- Formatting formatting.prettier, @@ -31,6 +33,11 @@ M.setup = function() formatting.stylua, formatting.shfmt, }, + on_attach = lsp.on_attach + -- on_attach = function(client, bufnr) + -- client.server_capabilities.documentFormattingProvider = client.supports_method("textDocument/formatting") + -- lsp.on_attach(client, bufnr) + -- end, }) end diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/nvim-tree.lua b/nvim/.config/nvim/lua/tobyvin/plugins/nvim-tree.lua deleted file mode 100644 index 8b4bf89..0000000 --- a/nvim/.config/nvim/lua/tobyvin/plugins/nvim-tree.lua +++ /dev/null @@ -1,111 +0,0 @@ -local status_ok, nvim_tree = pcall(require, "nvim-tree") -if not status_ok then - return -end - -local config_status_ok, nvim_tree_config = pcall(require, "nvim-tree.config") -if not config_status_ok then - return -end - -local tree_cb = nvim_tree_config.nvim_tree_callback - -vim.g.nvim_tree_respect_buf_cwd = 1 -vim.g.nvim_tree_icons = { - default = "", - symlink = "", - git = { - unstaged = "", - staged = "S", - unmerged = "", - renamed = "➜", - deleted = "", - untracked = "U", - ignored = "◌", - }, - folder = { - default = "", - open = "", - empty = "", - empty_open = "", - symlink = "", - }, -} - -nvim_tree.setup({ - disable_netrw = true, - hijack_netrw = true, - open_on_setup = false, - ignore_ft_on_setup = { - "startify", - "dashboard", - "alpha", - }, - auto_close = true, - open_on_tab = false, - hijack_cursor = false, - update_cwd = true, - update_to_buf_dir = { - enable = true, - auto_open = true, - }, - diagnostics = { - enable = true, - icons = { - hint = "", - info = "", - warning = "", - error = "", - }, - }, - update_focused_file = { - enable = true, - update_cwd = true, - ignore_list = {}, - }, - system_open = { - cmd = nil, - args = {}, - }, - filters = { - dotfiles = false, - custom = {}, - }, - git = { - enable = true, - ignore = true, - timeout = 500, - }, - view = { - width = 30, - height = 30, - hide_root_folder = false, - side = "left", - auto_resize = true, - mappings = { - custom_only = false, - list = { - { key = { "l", "", "o" }, cb = tree_cb("edit") }, - { key = "h", cb = tree_cb("close_node") }, - { key = "v", cb = tree_cb("vsplit") }, - }, - }, - number = false, - relativenumber = false, - }, - trash = { - cmd = "trash", - require_confirm = true, - }, - quit_on_open = 0, - git_hl = 1, - disable_window_picker = 0, - root_folder_modifier = ":t", - show_icons = { - git = 1, - folders = 1, - files = 1, - folder_arrows = 1, - tree_width = 30, - }, -}) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua b/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua index c64a6b9..665ecbd 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua @@ -17,6 +17,7 @@ M.setup = function() [""] = "which_key", }, }, + file_ignore_patterns = { "^.git/" }, vimgrep_arguments = { "rg", "--color=never", diff --git a/nvim/.config/nvim/lua/tobyvin/utils.lua b/nvim/.config/nvim/lua/tobyvin/utils.lua index e171dc1..2cdc1e0 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils.lua @@ -1,5 +1,28 @@ local M = {} +M.diagnostic_signs = { + error = { text = " ", texthl = "DiagnosticSignError" }, + warn = { text = " ", texthl = "DiagnosticSignWarn" }, + info = { text = " ", texthl = "DiagnosticSignInfo" }, + hint = { text = "", texthl = "DiagnosticSignHint" }, +} + +setmetatable(M.diagnostic_signs, { + __index = function() + return M.diagnostic_signs.info + end, +}) + +M.close_buffer = function(bufnr) + bufnr = bufnr or 0 + local status_ok, bufdelete = pcall(require, "bufdelete") + if status_ok then + bufdelete.bufdelete(bufnr, true) + else + vim.cmd("bdelete " .. bufnr) + end +end + M.create_map_group = function(mode, prefix, name, g_opts) g_opts = g_opts or {} @@ -55,6 +78,22 @@ M.popup = function(file_path) vim.api.nvim_buf_set_option(0, "modifiable", false) end +--- count existing buffers +---@param filter function predicate used to filter counted buffers +---@return table +M.count_bufs_by_type = function(filter) + local count = { normal = 0, acwrite = 0, help = 0, nofile = 0, nowrite = 0, quickfix = 0, terminal = 0, prompt = 0 } + local buftypes = vim.api.nvim_list_bufs() + for _, bufname in pairs(buftypes) do + if filter == nil or filter(bufname) then + local buftype = vim.api.nvim_buf_get_option(bufname, "buftype") + buftype = buftype ~= "" and buftype or "normal" + count[buftype] = count[buftype] + 1 + end + end + return count +end + M.file_exists = function(file) local ok, err, code = os.rename(file, file) if not ok and code == 13 then -- cgit v1.2.3-70-g09d2