added Nvimtree back in

This commit is contained in:
Sven Vogel 2024-01-02 23:44:49 +01:00
parent 4d5a82ae22
commit 97a0d6f173
13 changed files with 363 additions and 98 deletions

View File

@ -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

View File

@ -1,42 +1,15 @@
return {
{
"stevearc/aerial.nvim",
opts = {
backends = {
"treesitter",
"lsp",
"markdown",
"man",
},
attach_mode = "global",
backends = { "lsp", "treesitter", "markdown", "man" },
show_guides = false,
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,
resize_to_content = false,
win_opts = {
winhl = "Normal:NormalFloat,FloatBorder:NormalFloat,SignColumn:SignColumnSB",
signcolumn = "yes",
statuscolumn = " ",
},
}
}

86
lua/plugins/cmp.lua Normal file
View File

@ -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({
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
["<S-CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
["<C-CR>"] = 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",
}
}
}

View File

@ -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"
}
},

177
lua/plugins/lspconfig.lua Normal file
View File

@ -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,
}
}

View File

@ -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 = {

10
lua/plugins/mini.lua Normal file
View File

@ -0,0 +1,10 @@
return {
{
'echasnovski/mini.nvim',
version = '*',
config = function()
require("mini.pairs").setup()
require("mini.clue").setup()
end
},
}

View File

@ -3,7 +3,9 @@ return {
"dstein64/nvim-scrollview",
opts = {
excluded_filetypes = {
'dashboard'
'dashboard',
'neo-tree',
'aerial'
},
signs_on_startup = {
'conflicts',

41
lua/plugins/nvim-tree.lua Normal file
View File

@ -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,
},
},
}
}
}

View File

@ -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
}
}

View File

@ -8,6 +8,16 @@ return {
sorting_strategy = "ascending",
winblend = 0,
},
extensions = {
aerial = {
-- Display symbols as <root>.<parent>.<symbol>
show_nesting = {
["_"] = false, -- This key will be the default
json = true, -- You can set the option for specific filetypes
yaml = true,
},
},
},
},
dependencies = {
"sharkdp/fd",

View File

@ -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

View File

@ -2,8 +2,8 @@ return {
{
"folke/trouble.nvim",
opts = {
use_diagnostic_signs = true
use_diagnostic_signs = true,
indent_lines = false,
},
}
}