From 97a0d6f17390ab7a4c9861a4dc5121fb9be940a7 Mon Sep 17 00:00:00 2001 From: servostar Date: Tue, 2 Jan 2024 23:44:49 +0100 Subject: [PATCH] added Nvimtree back in --- lua/core/options.lua | 2 +- lua/plugins/aerial.lua | 49 ++------- lua/plugins/cmp.lua | 86 ++++++++++++++++ lua/plugins/cokeline.lua | 56 +++------- lua/plugins/lspconfig.lua | 177 ++++++++++++++++++++++++++++++++ lua/plugins/lualine.lua | 12 +-- lua/plugins/mini.lua | 10 ++ lua/plugins/nvim-scrollview.lua | 4 +- lua/plugins/nvim-tree.lua | 41 ++++++++ lua/plugins/nvim-ufo.lua | 4 +- lua/plugins/telescope.lua | 12 ++- lua/plugins/tokyonight.lua | 4 +- lua/plugins/trouble.lua | 4 +- 13 files changed, 363 insertions(+), 98 deletions(-) create mode 100644 lua/plugins/cmp.lua create mode 100644 lua/plugins/lspconfig.lua create mode 100644 lua/plugins/mini.lua create mode 100644 lua/plugins/nvim-tree.lua diff --git a/lua/core/options.lua b/lua/core/options.lua index e855e72..d97d0b0 100644 --- a/lua/core/options.lua +++ b/lua/core/options.lua @@ -17,7 +17,7 @@ opt.laststatus = 3 -- global statusline opt.list = true -- Show some invisible characters (tabs... opt.mouse = "a" -- Enable mouse mode opt.number = true -- Print line number -opt.pumblend = 10 -- Popup blend +opt.pumblend = 0 -- Popup blend opt.pumheight = 10 -- Maximum number of entries in a popup opt.relativenumber = false -- Relative line numbers opt.scrolloff = 4 -- Lines of context diff --git a/lua/plugins/aerial.lua b/lua/plugins/aerial.lua index e81bb8b..e020877 100644 --- a/lua/plugins/aerial.lua +++ b/lua/plugins/aerial.lua @@ -1,42 +1,15 @@ return { - { - "stevearc/aerial.nvim", - opts = { - backends = { - "treesitter", - "lsp", - "markdown", - "man", - }, - layout = { - default_direction = "prefer_right", - placement = "edge", - resize_to_content = true, - preserve_equality = true, - }, - -- Disable aerial on files with this many lines - disable_max_lines = 10000, - -- Disable aerial on files this size or larger (in bytes) - disable_max_size = 2000000, -- Default 2MB - filter_kind = false, - highlight_on_hover = true, - nerd_font = "auto", - update_events = "TextChanged,InsertLeave", - show_guides = true, - autojump = true, - guides = { - -- When the child item has a sibling below it - mid_item = "│ ", - -- When the child item is the last in the list - last_item = "└ ", - -- When there are nested child guides to the right - nested_top = "│ ", - -- Raw indentation - whitespace = " ", - }, - lsp = { - diagnostics_trigger_update = true, - update_when_errors = true, + "stevearc/aerial.nvim", + opts = { + attach_mode = "global", + backends = { "lsp", "treesitter", "markdown", "man" }, + show_guides = false, + layout = { + resize_to_content = false, + win_opts = { + winhl = "Normal:NormalFloat,FloatBorder:NormalFloat,SignColumn:SignColumnSB", + signcolumn = "yes", + statuscolumn = " ", }, } } diff --git a/lua/plugins/cmp.lua b/lua/plugins/cmp.lua new file mode 100644 index 0000000..5789a27 --- /dev/null +++ b/lua/plugins/cmp.lua @@ -0,0 +1,86 @@ +return { + { + "hrsh7th/nvim-cmp", + opts = function() + vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true }) + local cmp = require("cmp") + local defaults = require("cmp.config.default")() + return { + window = { + completion = { + border = "rounded", + scrollbar = false, + winhighlight = "Normal:CmpPmenu,FloatBorder:CmpPmenu,Search:None" + }, + documentation = { + border = "rounded", + scrollbar = false, + winhighlight = "Normal:CmpPmenu,FloatBorder:CmpPmenu,Search:None" + }, + }, + completion = { + completeopt = "menu,menuone,noinsert", + }, + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), + [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + [""] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + [""] = function(fallback) + cmp.abort() + fallback() + end, + }), + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = 'nvim_lsp_signature_help' }, + { name = "luasnip" }, + { name = "path" }, + }, { + { name = "buffer" }, + }), + formatting = { + fields = { + "kind", + "abbr", + "menu" + }, + format = function(_, item) + item.menu = item.kind + local icons = require("lazyvim.config").icons.kinds + if icons[item.kind] then + item.kind = icons[item.kind] + end + return item + end, + }, + experimental = { + ghost_text = { + hl_group = "CmpGhostText", + } + }, + sorting = defaults.sorting, + } + end, + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-path", + "hrsh7th/cmp-nvim-lsp-signature-help", + "saadparwaiz1/cmp_luasnip", + } + } +} diff --git a/lua/plugins/cokeline.lua b/lua/plugins/cokeline.lua index 9d4b5ef..691ba3e 100644 --- a/lua/plugins/cokeline.lua +++ b/lua/plugins/cokeline.lua @@ -16,7 +16,7 @@ return { if buffer.is_focused then return "Normal" end - return "ColorColumn" + return "TabLine" end, fg = function(buffer) if buffer.is_focused then @@ -32,19 +32,12 @@ return { { text = function(buffer) if buffer.is_focused then - return "▎" + return "" end return " " end, fg = "Normal" }, - { - text = function(buffer) return buffer.devicon.icon end, - fg = function(buffer) return buffer.devicon.color end, - }, - { - text = function(buffer) return ' ' .. buffer.filename .. ' ' end, - }, { text = function(buffer) if buffer.is_modified then @@ -52,10 +45,17 @@ return { elseif buffer.is_readonly then return ' ' else - return '' + return ' ' end end }, + { + text = function(buffer) return buffer.devicon.icon end, + fg = function(buffer) return buffer.devicon.color end, + }, + { + text = function(buffer) return ' ' .. buffer.filename .. ' ' end, + }, { text = '󰅖', on_click = function(_, _, _, _, buffer) @@ -75,49 +75,25 @@ return { end, bg = function(tabpage) if tabpage.is_active then - return "TabLineSel" + return "NormalNC" end - return "ColorColumn" + return "TabLine" end, fg = function(tabpage) if tabpage.is_active then - return "TabLine" + return "NormalNC" end - return "Normal" + return "TabLine" end, bold = true }, - { - text = function(tabpage) - if tabpage.is_active then - return "󰅖 " - end - return "" - end, - on_click = function(_, _, _, _, tabpage) - tabpage:close() - end, - bg = function(tabpage) - if tabpage.is_active then - return "TabLineSel" - end - return "ColorColumn" - end, - fg = function(tabpage) - if tabpage.is_active then - return "TabLine" - end - return "Normal" - end, - bold = true - }, - } + }, }, sidebar = { filetype = { "NvimTree", "neo-tree", "SidebarNvim" }, components = { { - text = "Explorer", + text = "", bg = "ColorColumn" } }, diff --git a/lua/plugins/lspconfig.lua b/lua/plugins/lspconfig.lua new file mode 100644 index 0000000..015af98 --- /dev/null +++ b/lua/plugins/lspconfig.lua @@ -0,0 +1,177 @@ +return { + { + "neovim/nvim-lspconfig", + dependencies = { + "williamboman/mason.nvim", + "williamboman/mason-lspconfig.nvim" + }, + ---@class PluginLspOpts + opts = { + -- options for vim.diagnostic.config() + diagnostics = { + underline = true, + update_in_insert = true, + virtual_text = { + spacing = 4, + source = "if_many", + prefix = "●", + -- this will set set the prefix to a function that returns the diagnostics icon based on the severity + -- this only works on a recent 0.10.0 build. Will be set to "●" when not supported + -- prefix = "icons", + }, + severity_sort = true, + float = { + border = "rounded" + } + }, + -- Enable this to enable the builtin LSP inlay hints on Neovim >= 0.10.0 + -- Be aware that you also will need to properly configure your LSP server to + -- provide the inlay hints. + inlay_hints = { + enabled = false, + }, + -- add any global capabilities here + capabilities = {}, + -- options for vim.lsp.buf.format + -- `bufnr` and `filter` is handled by the LazyVim formatter, + -- but can be also overridden when specified + format = { + formatting_options = nil, + timeout_ms = nil, + }, + servers = { + lua_ls = { + mason = false + }, + rust_analyzer = { + mason = false + }, + }, + setup = { + } + }, + ---@param opts PluginLspOpts + config = function(_, opts) + local Util = require("lazyvim.util") + if Util.has("neoconf.nvim") then + local plugin = require("lazy.core.config").spec.plugins["neoconf.nvim"] + require("neoconf").setup(require("lazy.core.plugin").values(plugin, "opts", false)) + end + + -- setup autoformat + Util.format.register(Util.lsp.formatter()) + + -- deprectaed options + if opts.autoformat ~= nil then + vim.g.autoformat = opts.autoformat + Util.deprecate("nvim-lspconfig.opts.autoformat", "vim.g.autoformat") + end + + -- setup keymaps + Util.lsp.on_attach(function(client, buffer) + require("lazyvim.plugins.lsp.keymaps").on_attach(client, buffer) + end) + + local register_capability = vim.lsp.handlers["client/registerCapability"] + + vim.lsp.handlers["client/registerCapability"] = function(err, res, ctx) + local ret = register_capability(err, res, ctx) + local client_id = ctx.client_id + ---@type lsp.Client + local client = vim.lsp.get_client_by_id(client_id) + local buffer = vim.api.nvim_get_current_buf() + require("lazyvim.plugins.lsp.keymaps").on_attach(client, buffer) + return ret + end + + -- diagnostics + for name, icon in pairs(require("lazyvim.config").icons.diagnostics) do + name = "DiagnosticSign" .. name + vim.fn.sign_define(name, { text = icon, texthl = name, numhl = "" }) + end + + local inlay_hint = vim.lsp.buf.inlay_hint or vim.lsp.inlay_hint + + if opts.inlay_hints.enabled and inlay_hint then + Util.lsp.on_attach(function(client, buffer) + if client.supports_method("textDocument/inlayHint") then + inlay_hint(buffer, true) + end + end) + end + + if type(opts.diagnostics.virtual_text) == "table" and opts.diagnostics.virtual_text.prefix == "icons" then + opts.diagnostics.virtual_text.prefix = vim.fn.has("nvim-0.10.0") == 0 and "●" + or function(diagnostic) + local icons = require("lazyvim.config").icons.diagnostics + for d, icon in pairs(icons) do + if diagnostic.severity == vim.diagnostic.severity[d:upper()] then + return icon + end + end + end + end + + vim.diagnostic.config(vim.deepcopy(opts.diagnostics)) + + local servers = opts.servers + local has_cmp, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") + local capabilities = vim.tbl_deep_extend( + "force", + {}, + vim.lsp.protocol.make_client_capabilities(), + has_cmp and cmp_nvim_lsp.default_capabilities() or {}, + opts.capabilities or {} + ) + + local function setup(server) + local server_opts = vim.tbl_deep_extend("force", { + capabilities = vim.deepcopy(capabilities), + }, servers[server] or {}) + + if opts.setup[server] then + if opts.setup[server](server, server_opts) then + return + end + elseif opts.setup["*"] then + if opts.setup["*"](server, server_opts) then + return + end + end + require("lspconfig")[server].setup(server_opts) + end + + -- get all the servers that are available through mason-lspconfig + local have_mason, mlsp = pcall(require, "mason-lspconfig") + local all_mslp_servers = {} + if have_mason then + all_mslp_servers = vim.tbl_keys(require("mason-lspconfig.mappings.server").lspconfig_to_package) + end + + local ensure_installed = {} ---@type string[] + for server, server_opts in pairs(servers) do + if server_opts then + server_opts = server_opts == true and {} or server_opts + -- run manual setup if mason=false or if this is a server that cannot be installed with mason-lspconfig + if server_opts.mason == false or not vim.tbl_contains(all_mslp_servers, server) then + setup(server) + else + ensure_installed[#ensure_installed + 1] = server + end + end + end + + if have_mason then + mlsp.setup({ ensure_installed = ensure_installed, handlers = { setup } }) + end + + if Util.lsp.get_config("denols") and Util.lsp.get_config("tsserver") then + local is_deno = require("lspconfig.util").root_pattern("deno.json", "deno.jsonc") + Util.lsp.disable("tsserver", is_deno) + Util.lsp.disable("denols", function(root_dir) + return not is_deno(root_dir) + end) + end + end, + } +} diff --git a/lua/plugins/lualine.lua b/lua/plugins/lualine.lua index 0500bb5..b503a67 100644 --- a/lua/plugins/lualine.lua +++ b/lua/plugins/lualine.lua @@ -5,7 +5,7 @@ return { "nvim-lualine/lualine.nvim", opts = { options = { - theme = 'tokyonight', + theme = 'auto', icons_enabled = true, globalstatus = true, section_separators = { left = '', right = '' }, @@ -15,16 +15,6 @@ return { 'help', 'startify', 'dashboard', - 'packer', - 'neogitstatus', - -- 'NvimTree', - 'Trouble', - 'alpha', - 'lir', - 'Outline', - 'neo-tree', - 'spectre_panel', - 'toggleterm', 'qf', }, winbar = { diff --git a/lua/plugins/mini.lua b/lua/plugins/mini.lua new file mode 100644 index 0000000..7b11147 --- /dev/null +++ b/lua/plugins/mini.lua @@ -0,0 +1,10 @@ +return { + { + 'echasnovski/mini.nvim', + version = '*', + config = function() + require("mini.pairs").setup() + require("mini.clue").setup() + end + }, +} diff --git a/lua/plugins/nvim-scrollview.lua b/lua/plugins/nvim-scrollview.lua index 79ac62d..a13cd36 100644 --- a/lua/plugins/nvim-scrollview.lua +++ b/lua/plugins/nvim-scrollview.lua @@ -3,7 +3,9 @@ return { "dstein64/nvim-scrollview", opts = { excluded_filetypes = { - 'dashboard' + 'dashboard', + 'neo-tree', + 'aerial' }, signs_on_startup = { 'conflicts', diff --git a/lua/plugins/nvim-tree.lua b/lua/plugins/nvim-tree.lua new file mode 100644 index 0000000..9cad46d --- /dev/null +++ b/lua/plugins/nvim-tree.lua @@ -0,0 +1,41 @@ +return { + { + "nvim-tree/nvim-tree.lua", + opts = { + hijack_cursor = true, + sync_root_with_cwd = true, + renderer = { + indent_markers = { + enable = false + }, + icons = { + show = { + file = true, + folder = true, + folder_arrow = true, + git = true, + }, + } + }, + diagnostics = { + enable = true, + show_on_dirs = false, + }, + actions = { + change_dir = { + enable = false, + restrict_above_cwd = true, + }, + open_file = { + resize_window = false, + window_picker = { + chars = "aoeui", + }, + }, + remove_file = { + close_window = false, + }, + }, + } + } +} diff --git a/lua/plugins/nvim-ufo.lua b/lua/plugins/nvim-ufo.lua index da4e99a..469c7ce 100644 --- a/lua/plugins/nvim-ufo.lua +++ b/lua/plugins/nvim-ufo.lua @@ -17,8 +17,8 @@ return { }, }, -- register treesitter as source for scopes - provider_selector = function(bufnr, filetype, buftype) - return {'treesitter', 'indent'} + provider_selector = function(_, _, _) + return { 'treesitter', 'indent' } end } } diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua index 7f6b1a6..4958c8b 100644 --- a/lua/plugins/telescope.lua +++ b/lua/plugins/telescope.lua @@ -8,6 +8,16 @@ return { sorting_strategy = "ascending", winblend = 0, }, + extensions = { + aerial = { + -- Display symbols as .. + show_nesting = { + ["_"] = false, -- This key will be the default + json = true, -- You can set the option for specific filetypes + yaml = true, + }, + }, + }, }, dependencies = { "sharkdp/fd", @@ -15,4 +25,4 @@ return { 'nvim-tree/nvim-web-devicons' }, }, -} \ No newline at end of file +} diff --git a/lua/plugins/tokyonight.lua b/lua/plugins/tokyonight.lua index 6d79c71..d88fced 100644 --- a/lua/plugins/tokyonight.lua +++ b/lua/plugins/tokyonight.lua @@ -1,7 +1,7 @@ return { { "folke/tokyonight.nvim", - lazy = false, + lazy = true, priority = 1000, opts = { style = "night", @@ -10,7 +10,7 @@ return { sidebars = "dark", floats = "normal", }, - sidebars = { "qf", "help", "neo-tree", "aerial" }, + sidebars = { "qf", "trouble", "neo-tree", "aerial", "help" }, }, }, -- Configure LazyVim to load tokyonight diff --git a/lua/plugins/trouble.lua b/lua/plugins/trouble.lua index 5a25a61..1a0ebad 100644 --- a/lua/plugins/trouble.lua +++ b/lua/plugins/trouble.lua @@ -2,8 +2,8 @@ return { { "folke/trouble.nvim", opts = { - use_diagnostic_signs = true + use_diagnostic_signs = true, + indent_lines = false, }, } } -