too many things

This commit is contained in:
fbachus
2025-09-02 03:32:47 +02:00
parent c26d3a64b0
commit f19e8a00c7
81 changed files with 2724 additions and 1549 deletions

View File

@@ -1,22 +1,8 @@
local wk = require("which-key")
require("aerial").setup({
lazy_load = true,
backends = { "treesitter", "lsp", "markdown", "man" },
layout = {
-- max_width = {40, 0.2} means "the lesser of 40 columns or 20% of total"
max_width = { 40, 0.2 },
width = nil,
min_width = 10,
default_direction = "prefer_right",
-- Determines where the aerial window will be opened
-- edge - open aerial at the far right/left of the editor
-- window - open aerial to the right/left of the current window
placement = "edge",
resize_to_content = true,
},
wk.add({
{ "{", "<cmd>AerialPrev<CR>", desc = "Jump to prev Symbol" },
{ "}", "<cmd>AerialNext<CR>", desc = "Jump to prev Symbol" },
{ "<leader>a", "<cmd>AerialToggle!<CR>", desc = "Toggle Outline" },
}),
})
--local wk = require("which-key")
--require("aerial").setup({
-- wk.add({
-- { "{", "<cmd>AerialPrev<CR>", desc = "Jump to prev Symbol" },
-- { "}", "<cmd>AerialNext<CR>", desc = "Jump to prev Symbol" },
-- { "<leader>a", "<cmd>AerialToggle!<CR>", desc = "Toggle Outline" },
-- }),
--})

View File

@@ -1,24 +1,23 @@
local opts = { noremap = true, silent = true }
vim.keymap.set("n", "<C-c>", "<cmd>PickColor<cr>", opts)
vim.keymap.set("i", "<C-c>", "<cmd>PickColorInsert<cr>", opts)
-- vim.keymap.set("n", "your_keymap", "<cmd>ConvertHEXandRGB<cr>", opts)
-- vim.keymap.set("n", "your_keymap", "<cmd>ConvertHEXandHSL<cr>", opts)
require("color-picker").setup({ -- for changing icons & mappings
-- ["icons"] = { "ﱢ", "" },
-- ["icons"] = { "ﮊ", "" },
-- ["icons"] = { "", "ﰕ" },
-- ["icons"] = { "", "" },
-- ["icons"] = { "", "" },
["icons"] = { "", "" },
["border"] = "rounded", -- none | single | double | rounded | solid | shadow
["keymap"] = { -- mapping example:
["U"] = "<Plug>ColorPickerSlider5Decrease",
["O"] = "<Plug>ColorPickerSlider5Increase",
},
["background_highlight_group"] = "Normal", -- default
["border_highlight_group"] = "FloatBorder", -- default ["text_highlight_group"] = "Normal", --default })
})
vim.cmd([[hi FloatBorder guibg=NONE]]) -- if you don't want weird border background colors around the popup.
-- local opts = { noremap = true, silent = true }
--
-- vim.keymap.set("n", "<C-c>", "<cmd>PickColor<cr>", opts)
-- vim.keymap.set("i", "<C-c>", "<cmd>PickColorInsert<cr>", opts)
--
-- -- vim.keymap.set("n", "your_keymap", "<cmd>ConvertHEXandRGB<cr>", opts)
-- -- vim.keymap.set("n", "your_keymap", "<cmd>ConvertHEXandHSL<cr>", opts)
--
-- require("color-picker").setup({ -- for changing icons & mappings
-- ["icons"] = { "ﱢ", "" },
-- -- ["icons"] = { "ﮊ", "" },
-- -- ["icons"] = { "", "ﰕ" },
-- -- ["icons"] = { "", "" },
-- -- ["icons"] = { "", "" },
-- ["border"] = "rounded", -- none | single | double | rounded | solid | shadow
-- ["keymap"] = { -- mapping example:
-- ["U"] = "<Plug>ColorPickerSlider5Decrease",
-- ["O"] = "<Plug>ColorPickerSlider5Increase",
-- },
-- ["background_highlight_group"] = "Normal", -- default
-- ["border_highlight_group"] = "FloatBorder", -- default ["text_highlight_group"] = "Normal", --default })
-- })
-- vim.cmd([[hi FloatBorder guibg=NONE]]) -- if you don't want weird border background colors around the popup.

View File

@@ -1,28 +0,0 @@
require("conform").setup({
vim.api.nvim_create_autocmd({ "BufWritePre", "InsertLeave" }, {
pattern = "*",
callback = function(args)
require("conform").format({ bufnr = args.buf })
end,
}),
formatters_by_ft = {
lua = { "stylua" },
rust = { "rustfmt", lsp_format = "fallback" },
-- Conform will run multiple formatters sequentially
python = { "ruff", "autopep8" },
gdscript = { "gdtoolkit" },
bash = { "shellharden" },
javascript = { "prettier" },
typescript = { "prettier" },
markdown = { "prettier" },
css = { "prettier" },
html = { "prettier" },
json = { "prettier" },
yaml = { "prettier" },
},
format_on_save = {
timeout_ms = 700,
lsp_format = "fallback",
},
log_level = vim.log.levels.DEBUG,
})

View File

@@ -0,0 +1,12 @@
require("coq_3p").setup()({
{ src = "nvimlua", short_name = "nLUA", conf_only = true },
{ src = "bc", short_name = "MATH", precision = 6 }, -- scientific calculator
{
src = "repl",
sh = "fish",
shell = { p = "perl", n = "node", g = "git", ... },
max_lines = 20,
deadline = 500,
unsafe = { "rm", "poweroff", "mv", "cp", "systemctl", "sudo", ... },
},
})

View File

@@ -1,52 +0,0 @@
local crates = require("crates")
local opts = { silent = true }
vim.keymap.set("n", "<leader>ct", crates.toggle, opts)
vim.keymap.set("n", "<leader>cr", crates.reload, opts)
vim.keymap.set("n", "<leader>cv", crates.show_versions_popup, opts)
vim.keymap.set("n", "<leader>cf", crates.show_features_popup, opts)
vim.keymap.set("n", "<leader>cd", crates.show_dependencies_popup, opts)
vim.keymap.set("n", "<leader>cu", crates.update_crate, opts)
vim.keymap.set("v", "<leader>cu", crates.update_crates, opts)
vim.keymap.set("n", "<leader>ca", crates.update_all_crates, opts)
vim.keymap.set("n", "<leader>cU", crates.upgrade_crate, opts)
vim.keymap.set("v", "<leader>cU", crates.upgrade_crates, opts)
vim.keymap.set("n", "<leader>cA", crates.upgrade_all_crates, opts)
vim.keymap.set("n", "<leader>cx", crates.expand_plain_crate_to_inline_table, opts)
vim.keymap.set("n", "<leader>cX", crates.extract_crate_into_table, opts)
vim.keymap.set("n", "<leader>cH", crates.open_homepage, opts)
vim.keymap.set("n", "<leader>cR", crates.open_repository, opts)
vim.keymap.set("n", "<leader>cD", crates.open_documentation, opts)
vim.keymap.set("n", "<leader>cC", crates.open_crates_io, opts)
local wk = require("which-key")
wk.add({
{
mode = { "n" },
{ "<leader>c", group = "crates" },
{ "<leader>cA", desc = "Upgrade all crates" },
{ "<leader>cC", desc = "Open crates.io" },
{ "<leader>cD", desc = "Open documentation" },
{ "<leader>cH", desc = "Open homepage" },
{ "<leader>cR", desc = "Open repository" },
{ "<leader>cU", desc = "Upgrade crate" },
{ "<leader>cX", desc = "Extract crate into table" },
{ "<leader>ca", desc = "Update all crates" },
{ "<leader>cd", desc = "Show dependencies popup" },
{ "<leader>cf", desc = "Show features popup" },
{ "<leader>cr", desc = "Reload" },
{ "<leader>ct", desc = "Toggle" },
{ "<leader>cu", desc = "Update crate" },
{ "<leader>cv", desc = "Show versions popup" },
{ "<leader>cx", desc = "Expand plain crate to inline table" },
},
{
mode = { "v" },
{ "<leader>cu", desc = "Update crates" },
{ "<leader>cU", desc = "Upgrade crates" },
},
})

View File

@@ -0,0 +1,4 @@
vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead", "BufEnter" }, {
pattern = { "*.r", "*.R" },
command = "set ts=2 sw=2 noet",
})

View File

@@ -1,39 +0,0 @@
require('gitsigns').setup {
signs = {
add = { text = '' },
change = { text = '' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = true, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
follow_files = true
},
attach_to_untracked = true,
current_line_blame = true, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
delay = 150,
ignore_whitespace = false,
virt_text_priority = 100,
},
current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>',
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000, -- Disable if file is longer than this (in lines)
preview_config = {
-- Options passed to nvim_open_win
border = 'single',
style = 'minimal',
relative = 'cursor',
row = 0,
col = 1
},
}

View File

@@ -0,0 +1,22 @@
-- this file exists so that neovim listens for server automatically
-- when running in godot folder
--
-- paths to check for project.godot file
local paths_to_check = { "/", "/../" }
local is_godot_project = false
local godot_project_path = ""
local cwd = vim.fn.getcwd()
-- iterate over paths and check
for key, value in pairs(paths_to_check) do
if vim.uv.fs_stat(cwd .. value .. "project.godot") then
is_godot_project = true
godot_project_path = cwd .. value
break
end
end
-- check if server is already running in godot project path
local is_server_running = vim.uv.fs_stat(godot_project_path .. "/server.pipe")
-- start server, if not already running
if is_godot_project and not is_server_running then vim.fn.serverstart(godot_project_path .. "/server.pipe") end

View File

@@ -1,37 +1,15 @@
require("plug_init.vim_init")
require("plug_init.lazy_path")
require("lazy").setup("plugins")
--require("onedarkpro").setup({
-- filetypes = {
-- all = true }, options = {
-- transparency = true
-- }
--})
--require("onedarkpro").load()
require("everforest").load()
require("plug_init.which_key_init")
require("plug_init.lualine_init")
require("plug_init.aerial_init")
require("plug_init.wilder_init")
require("plug_init.telescope_init")
require("plug_init.smart-open_init")
require("plug_init.gitsigns")
require("plug_init.mini_init")
require("plug_init.nvim_possession_init")
require("plug_init.treesitter_init")
require("plug_init.conform_init")
require("plug_init.crates_init")
require("plug_init.color-picker_init")
require("plug_init.ft_autocmds")
require("plug_init.lsp_init")
--require("plug_init.noice_init")
require("plugins.lsp_config")
require("plugins.coq_nvim")
require("plugins.trouble")
require("colorizer").setup({
"css",
"scss",
"javascript",
html = {
mode = "foreground",
},
})
--require("plug_init.which_key_init")
require("plug_init.wilder_init")
require("plug_init.mini_init")
require("everforest").load()
require("plug_init.godot_editor")
--require("plug_init.color-picker_init")
--require("plug_init.neovide_conf")

View File

@@ -1,12 +1,12 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)

View File

@@ -1,64 +1,70 @@
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
-- integrated by default now?
-- vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
-- vim.keymap.set('n', "]d", vim.diagnostic.goto_next)
-- vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
--vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
--vim.keymap.set('n', '<leader>K', vim.lsp.buf.hover, opts)
--
--vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts)
--vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts)
-- vim.api.nvim_create_autocmd("LspAttach", {
-- group = vim.api.nvim_create_augroup("UserLspConfig", {}),
-- callback = function(ev)
-- -- Enable completion triggered by <c-x><c-o>
-- vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
-- vim.keymap.set("n", "[d", vim.diagnostic.goto_prev)
-- vim.keymap.set("n", "]d", vim.diagnostic.goto_next)
-- vim.keymap.set("n", "<leader>le", vim.diagnostic.open_float)
-- vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
-- vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
-- vim.keymap.set("n", "<leader>K", vim.lsp.buf.hover, opts)
-- vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts)
-- vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts)
-- vim.keymap.set("n", "<leader>f", function() vim.lsp.buf.format({ async = true }) end, opts)
-- end,
-- })
-- vim.keymap.set("n", "<leader>rr", vim.lsp.buf.rename, opts)
-- vim.keymap.set("n", "<leader>le", vim.diagnostic.open_float)
-- vim.keymap.set("n", "<leader>i", function()
-- require("conform").format({ async = true })
-- -- vim.lsp.buf.format { async = true } -- fallback if without conform
-- end, opts)
end,
})
-- put this in lsp_config
-- require("mason").setup({})
require("lspconfig").rust_analyzer.setup({
settings = {
["rust-analyzer"] = {
imports = {
granularity = {
group = "module",
},
prefix = "self",
},
cargo = {
buildScripts = {
enable = true,
},
},
procMacro = {
enable = true,
},
},
},
})
require("mason").setup({})
require("mason-lspconfig").setup({
-- Replace the language servers listed here
-- with the ones you want to install
ensure_installed = { "rust_analyzer", "ruff", "quick_lint_js", "html", "cssls", "lua_ls", "vimls" },
})
-- require("lint").linters_by_ft = {
-- cpp = { "cpplint" },
-- gdscript = { "gdtoolkit" },
-- gitcommit = { "commitlint" },
-- lua = { "ast-grep" },
-- fish = { "fish_lsp" },
-- markdown = {},
-- sql = { "sqruff" },
-- python = { "ruff" },
-- r = { "r-languageserver" },
-- javascript = { "eslint" },
-- typescript = { "eslint" },
-- }
--
-- require("lint").config = function()
-- local lint = require("lint")
-- vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
-- callback = function() lint.try_lint() end,
-- })
-- end
require("lint").linters_by_ft = {
cpp = { "cpplint" },
gdscript = { "gdtoolkit" },
gitcommit = { "commitlint" },
markdown = {},
python = { "ruff" },
}
require("lint").config = function()
local lint = require("lint")
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
callback = function()
lint.try_lint()
end,
})
end
-- virtual text (not doing anything?)
-- vim.lsp.handlers["textDocument/publishDiagnostic"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
-- virtual_text = true,
-- })
-- local on_attach = function(client, bufnr)
-- --- Only Neovim 0.7
-- if client.resolved_capabilities.code_lens then
-- local codelens = vim.api.nvim_create_augroup(
-- 'LSPCodeLens',
-- { clear = true }
-- )
-- vim.api.nvim_create_autocmd({ 'BufEnter' }, {
-- group = codelens,
-- callback = function()
-- vim.lsp.codelens.refresh()
-- end,
-- buffer = bufnr,
-- once = true,
-- })
-- vim.api.nvim_create_autocmd({ 'BufWritePost', 'CursorHold' }, {
-- group = codelens,
-- callback = function()
-- vim.lsp.codelens.refresh()
-- end,
-- buffer = bufnr,
-- })
-- end
-- end

View File

@@ -1,96 +0,0 @@
require('lualine').setup {
options = {
icons_enabled = true,
theme = 'everforest',
component_separators = { left = '', right = '' },
--component_separators = { left = '', right = '' },
section_separators = { left = '', right = '' },
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = false,
globalstatus = true,
refresh = {
statusline = 200,
tabline = 200,
winbar = 20000,
},
symbols = {
modified = '', -- Text to show when the buffer is modified
alternate_file = '#', -- Text to show to identify the alternate file
directory = '', -- Text to show when the buffer is a directory
},
},
sections = {
lualine_a = { 'mode' },
lualine_b = { 'branch', 'diff', 'diagnostics' },
lualine_c = {
-- {
-- require("noice").api.status.mode.get,
-- cond = require("noice").api.status.mode.has,
-- color = { fg = "#ff9e64" },
-- },
-- {
-- require("noice").api.status.search.get,
-- cond = require("noice").api.status.search.has,
-- color = { fg = "#ff9e64" },
-- },
'pwd',
'filename',
},
lualine_x = {
{
require("noice").api.status.command.get,
cond = require("noice").api.status.command.has,
color = { fg = "#ff9e64" },
},
{
require("noice").api.statusline.mode.get,
cond = require("noice").api.statusline.mode.has,
color = { fg = "#ff9e64" },
},
{
require("noice").api.status.search.get,
cond = require("noice").api.status.search.has,
color = { fg = "#ff9e64" },
},
'filesize',
'filetype',
'require"lsp-status".status()'
},
lualine_y = { 'searchcount', 'progress' },
lualine_z = { 'selectioncount', 'location' },
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { 'filename' },
lualine_d = {},
lualine_x = { 'filesize', 'filetype' },
lualine_y = { 'location' },
lualine_z = {},
},
tabline = {
lualine_a = {
{
'tabs',
mode = 2,
path = 1,
max_length = 320,
tab_max_length = 40,
use_mode_colors = true,
},
},
lualine_b = {},
lualine_c = {},
lualine_d = {},
lualine_x = {},
lualine_y = { { 'datetime', style = "%H:%M" } },
lualine_z = {},
},
winbar = {},
inactive_winbar = {},
extensions = {}
}

View File

@@ -1,14 +1,35 @@
require("mini.surround").setup({}) --surround strings with objects in one go (parens etc.)
require("mini.pairs").setup({}) --put down parens etc in pairs
require("mini.ai").setup({}) --selection with textobjects, such as "indside quotes, parens etc"
require("mini.bracketed").setup({}) -- move to textobjects with brackets
require("mini.jump2d").setup({}) -- jump to any point with Enter+ 2 letters in 2d matrix
require("mini.files").setup({}) -- floating file manager in vim editor style
require("mini.comment").setup({}) -- block comments etc
-- require("mini.pairs").setup() --put down parens etc in pairs
require("mini.ai").setup() --selection with textobjects, such as "indside quotes, parens etc"
require("mini.bracketed").setup() -- move to textobjects with brackets
--require("mini.jump2d").setup() -- jump to any point with Enter+ 2 letters in 2d matrix
require("mini.files").setup() -- floating file manager in vim editor style
require("mini.comment").setup() -- block comments etc
-- require("mini.jump").setup() -- extend f F t T to work over multiple lines and be repeated
-- sugar ↓↓↓↓↓↓
require("mini.indentscope").setup({}) -- show indent scope
require("mini.indentscope").setup() -- show indent scope
require("mini.cursorword").setup() -- highlight identical words
-- complicated ↓↓↓↓↓↓
require("mini.operators").setup()
-- potentially interesting
--require("mini.align").setup({}) -- split lines in multiple sections, align these to rules, look into it more
--require("mini.git").setup({}) -- git shortcuts, but collisions with gitsigns
--require("mini.hipatterns").setup({}) -- highlight keywords and colors
-- not working by default
vim.o.timeoutlen = 500
require("mini.surround").setup()
-- mappings = {
-- add = 'sa', -- Add surrounding in Normal and Visual modes
-- delete = 'sd', -- Delete surrounding
-- find = 'sf', -- Find surrounding (to the right)
-- find_left = 'sF', -- Find surrounding (to the left)
-- highlight = 'sh', -- Highlight surrounding
-- replace = 'sr', -- Replace surrounding
-- update_n_lines = 'sn', -- Update `n_lines`
--
-- suffix_last = 'l', -- Suffix to search with "prev" method
-- suffix_next = 'n', -- Suffix to search with "next" method
-- },

View File

@@ -0,0 +1,12 @@
vim.g.neovide_refresh_rate = 60
vim.g.neovide_refresh_rate_idle = 5
vim.g.neovide_no_idle = false
vim.g.neovide_cursor_trail_size = 0.5
vim.g.neovide_cursor_animation_length = 0.05
vim.g.neovide_cursor_unfocused_outline_width = 0.1
vim.g.neovide_cursor_vfx_mode = "railgun" -- pixiedust, railgun, ripple, sonicboom, torpedo, wireframe
vim.g.neovide_cursor_vfx_particle_speed = 40.0
vim.g.neovide_cursor_vfx_particle_phase = 1.5 -- mass of particles, only railgun
vim.g.neovide_cursor_vfx_particle_curl = 1.0 -- rotation of particles, only railgun
vim.g.neovide_cursor_vfx_particle_lifetime = 1.0
vim.g.neovide_cursor_vfx_particle_density = 10

View File

@@ -1,41 +0,0 @@
require("noice").setup({
{
cmdline = {
enabled = true, -- enables the Noice cmdline UI
view = "cmdline", -- view for rendering the cmdline. Change to `cmdline` to get a classic cmdline at the bottom
opts = {}, -- global options for the cmdline. See section on views
---@type table<string, CmdlineFormat>
format = {
-- conceal: (default=true) This will hide the text in the cmdline that matches the pattern.
-- view: (default is cmdline view)
-- opts: any options passed to the view
-- icon_hl_group: optional hl_group for the icon
-- title: set to anything or empty string to hide
cmdline = { pattern = "^:", icon = "", lang = "vim" },
search_down = { kind = "search", pattern = "^/", icon = " ", lang = "regex" },
search_up = { kind = "search", pattern = "^%?", icon = " ", lang = "regex" },
filter = { pattern = "^:%s*!", icon = "$", lang = "bash" },
lua = { pattern = { "^:%s*lua%s+", "^:%s*lua%s*=%s*", "^:%s*=%s*" }, icon = "", lang = "lua" },
help = { pattern = "^:%s*he?l?p?%s+", icon = "" },
input = { view = "cmdline_input", icon = "󰥻 " }, -- Used by input()
-- lua = false, -- to disable a format, set to `false`
},
},
},
-- lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
-- override = {
-- ["vim.lsp.util.convert_input_to_markdown_lines"] = true,
-- ["vim.lsp.util.stylize_markdown"] = true,
-- ["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
-- },
-- },
-- you can enable a preset for easier configuration
--presets = {
--bottom_search = cmdline, -- use a classic bottom cmdline for search
--command_palette = true, -- position the cmdline and popupmenu together
--long_message_to_split = true, -- long messages will be sent to a split
--inc_rename = false, -- enables an input dialog for inc-rename.nvim
--lsp_doc_border = false, -- add a border to hover docs and signature help
--},
})

View File

@@ -1,21 +0,0 @@
local possession = require("nvim-possession")
local wk = require("which-key")
require("nvim-possession").setup({
autoload = true, -- default false
autosave = true,
autoswitch = {
enable = true
},
lazy = true,
sessions = {
sessions_path = "/home/felix/.cache/nvim/sessions/"
},
wk.add({
{ "<leader>s", group="Sessions" },
{ "<leader>sl", function() possession.list() end, desc="List sesssions" },
{ "<leader>sn", function() possession.new() end, desc="Create new session" },
{ "<leader>su", function() possession.update() end, desc="Update Session" },
{ "<leader>sd", function() possession.delete() end, desc="Delete Session" },
}),
})

View File

@@ -1,9 +0,0 @@
local wk = require("which-key")
require("telescope").load_extension("smart_open")
require("smart-open").setup({
lazy = false,
wk.add({
{ "<leader><leader>", "<cmd>Telescope smart_open<cr>", desc="Smart open" },
})
})

View File

@@ -1,21 +0,0 @@
require('telescope').setup({
defaults = {
sorting_strategy = 'descending',
scroll_strategy = 'limit',
scroll_speed = 7,
layout_strategy = 'vertical',
layout_config = {
prompt_position = 'top',
preview_cutoff = 0,
horizontal = {
height = 0.9,
},
vertical = {
prompt_position = 'top',
height = 0.9,
width = 0.8,
mirror = true,
},
},
},
})

View File

@@ -1,15 +0,0 @@
require('treesitter-context').setup{
enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
max_lines = 4, -- How many lines the window should span. Values <= 0 mean no limit.
min_window_height = 35, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
line_numbers = true,
lazy = true,
multiline_threshold = 4, -- Maximum number of lines to show for a single context
trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
mode = 'topline', -- Line used to calculate context. Choices: 'cursor', 'topline'.
-- Separator between context and content. Should be a single character string, like '-'.
-- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
separator = '',
zindex = 20, -- The Z-index of the context window
on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching
}

View File

@@ -1,21 +0,0 @@
require("nvim-treesitter.configs").setup {
sync_install = false,
auto_install = true,
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
indent = {
enable = true,
},
ensure_installed = {
"html",
"javascript",
"lua",
"php",
"python",
"rust",
"typescript",
"vim",
},
}

View File

@@ -1,31 +1,33 @@
vim.opt.compatible = false
vim.opt.showmatch = true
vim.opt.hlsearch = true
vim.opt.incsearch = false
vim.opt.tabstop = 4
vim.opt.softtabstop = -1 -- use shiftwidth value
vim.opt.expandtab = false -- tabs not spaces
vim.opt.shiftwidth = 4
vim.opt.autoindent = true
vim.opt.relativenumber = true
vim.opt.number = true
vim.opt.wildmode = "longest,list"
vim.opt.cursorline = true
vim.opt.ttyfast = true
vim.opt.scrolloff = 5
vim.opt.wrap = false
vim.opt.mouse = ""
vim.opt.termguicolors = true -- enable truecolor
vim.opt.undofile = true
vim.opt.undodir = os.getenv("HOME") .. "/.local/share/nvim/undodir"
vim.opt.updatetime = 30
vim.opt.colorcolumn = "79"
vim.opt.cmdheight = 0 -- remove the last interface line under statusline
vim.opt.showmode = false -- stop noice from showing mode, lualine will show mode anyway
vim.o.compatible = false
vim.o.showmatch = true
vim.o.hlsearch = true
vim.o.smartcase = true
vim.o.incsearch = false
vim.o.tabstop = 4
vim.o.softtabstop = -1 -- use shiftwidth value
-- vim.o.expandtab = false -- tabs not spaces -- leaving it out for auto?
vim.o.shiftwidth = 4
vim.o.autoindent = true
vim.o.relativenumber = true
vim.o.number = true
vim.o.wildmode = "longest,list"
vim.o.cursorline = true
vim.o.listchars = "tab: >,lead:·,trail:-,nbsp:+,multispace:•"
vim.o.ttyfast = true
vim.o.scrolloff = 5
vim.o.wrap = false
vim.o.mouse = ""
vim.o.termguicolors = true -- enable truecolor
vim.o.undofile = true
vim.o.undodir = os.getenv("HOME") .. "/.local/share/nvim/undodir"
vim.o.updatetime = 30
vim.o.colorcolumn = "79"
vim.o.cmdheight = 0 -- remove the last interface line under statusline
vim.o.showmode = false -- stop noice from showing mode, lualine will show mode anyway
---
vim.g.netrw_preview = 1
vim.g.netrw_liststyle = 3
vim.g.netrw_winsize = 25
vim.g.netrw_winsize = 20
--
--These will:
--
@@ -51,3 +53,5 @@ vim.keymap.set("n", "<leader>Y", '"+Y')
-- open side panel explorer
--vim.keymap.set("n", "<leader>e", ":Lexplore<CR>") -- now via whichkey
--
--highlights

View File

@@ -1,25 +1,31 @@
local wk = require("which-key")
--local wk = require("which-key")
wk.add({
{ "<leader>c", group = "crates" },
{ "<leader>cA", desc = "Upgrade all crates" },
{ "<leader>cC", desc = "Open crates.io" },
{ "<leader>cD", desc = "Open documentation" },
{ "<leader>cH", desc = "Open homepage" },
{ "<leader>cR", desc = "Open repository" },
{ "<leader>cU", desc = "Upgrade crate" },
{ "<leader>cX", desc = "Extract crate into table" },
{ "<leader>ca", desc = "Update all crates" },
{ "<leader>cd", desc = "Show dependencies popup" },
{ "<leader>cf", desc = "Show features popup" },
{ "<leader>cr", desc = "Reload" },
{ "<leader>ct", desc = "Toggle" },
{ "<leader>cu", desc = "Update crate" },
{ "<leader>cv", desc = "Show versions popup" },
{ "<leader>cx", desc = "Expand plain crate to inline table" },
{ "<leader>cA", function() require("crates").upgrade_all_crates() end, desc = "Upgrade all crates" },
{ "<leader>cC", function() require("crates").open_creates_io() end, desc = "Open crates.io" },
{ "<leader>cD", function() require("crates").open_documentation() end, desc = "Open documentation" },
{ "<leader>cH", function() require("crates").open_homepage() end, desc = "Open homepage" },
{ "<leader>cR", function() require("crates").open_repository() end, desc = "Open repository" },
{ "<leader>cU", function() require("crates").upgrade_crate() end, desc = "Upgrade crate" },
{ "<leader>cX", function() require("crates").extract_crate_into_table() end, desc = "Extract crate into table" },
{ "<leader>ca", function() require("crates").update_all_crates() end, desc = "Update all crates" },
{ "<leader>cd", function() require("crates").show_dependencies_popup() end, desc = "Show dependencies popup" },
{ "<leader>cf", function() require("crates").show_features_popup() end, desc = "Show features popup" },
{ "<leader>cr", function() require("crates").reload() end, desc = "Reload" },
{ "<leader>ct", function() require("crates").toggle() end, desc = "Toggle" },
{ "<leader>cu", function() require("crates").update_crate() end, desc = "Update crate" },
{ "<leader>cv", function() require("crates").show_versions_popup() end, desc = "Show versions popup" },
{
"<leader>cx",
function() require("crates").expand_plain_crate_to_inline_table() end,
desc = "Expand plain crate to inline table",
},
{ "<leader>lp", "<cmd>Lazy profile<cr>", desc = "show Lazy profiler" },
--{ "<leader>e", "<cmd>Lexplore<cr>", desc = "Files Sidebar" },
{ "<leader>e", "<cmd>lua MiniFiles.open()<cr>", desc = "Files w/ Mini" },
{ "<leader>E", "<cmd>Lexplore<cr>", desc = "Files Sidebar" },
{ "<leader>f", group = "Telescope" },
{ "<leader>fb", "<cmd>Telescope buffers<cr>", desc = "Find Buffer" },
{ "<leader>fd", "<cmd>Telescope lsp_document_symbols<cr>", desc = "Find LSP Symbols" },
@@ -28,41 +34,76 @@ wk.add({
{ "<leader>fr", "<cmd>Telescope oldfiles<cr>", desc = "Open Recent File", remap = true },
{ "<leader>fs", "<cmd>Telescope live_grep<cr>", desc = "Live Grep" },
{ "<leader>fw", "<cmd>Telescope grep_string<cr>", desc = "Find string under cursor" },
{
"<leader><leader>",
function() require("telescope").extensions.smart_open.smart_open() end,
mode = "n",
silent = true,
desc = "Smart open",
},
{ "<leader>g", group = "Gitsigns" },
{ "<leader>gB", "<cmd>Gitsigns blame<cr>", desc = "Toggle Blame Sidebar" },
{ "<leader>gb", "<cmd>Gitsigns blameline<cr>", desc = "Show Blame Inline" },
{ "<leader>gb", "<cmd>Gitsigns blame_line<cr>", desc = "Show Blame Inline" },
{ "<leader>gd", "<cmd>Gitsigns toggle_deleted<cr>", desc = "Toggle deleted lines" },
{ "<leader>gh", group = "hunks" },
{ "<leader>ghl", "<cmd>Gitsigns setloclist<cr>", desc = "List file Changes" },
{ "<leader>ghn", "<cmd>Gitsigns nav_hunk<cr>", desc = "Nav Hunk" },
{ "<leader>gr", group = "reset" },
{ "<leader>grb", "<cmd>Gitsigns reset_buffer<cr>", desc = "Reset Buffer" },
{ "<leader>grh", "<cmd>Gitsigns reset_hunk<cr>", desc = "Reset Hunk" },
{ "<leader>gd", "<cmd>Gitsigns toggle_deleted<cr>", desc = "Toggle deleted lines" },
{ "<leader>gs", group = "stage" },
{ "<leader>gsb", "<cmd>Gitsigns stage_buffer<cr>", desc = "Stage Buffer" },
{ "<leader>gsh", "<cmd>Gitsigns stage_hunk<cr>", desc = "Stage Hunk" },
{ "<leader>gu", "<cmd>Gitsigns undo_stage_hunk<cr>", desc = "Undo Stage Hunk" },
-- lsp and debugging
{
"<leader>i",
function()
require("conform").format({ async = true })
end,
desc = "Auto format file with linter(?), also on F3",
function() require("conform").format({ async = true }) end,
desc = "Auto format file with formatter",
},
{
"F3",
function() require("conform").format({ async = true }) end,
mode = "ni",
desc = "Auto format file with formatter",
},
{ "<leader>le", vim.diagnostic.open_float, desc = "Open diagnostic float" },
{ "<leader>K", desc = "Show definition" },
-- { "<Leader>d", group = "Debugging" },
-- {
-- { mode = "n" },
-- { "<Leader>dn", require("dap").new, desc = "Start Debugger" },
-- { "<Leader>db", require("dap").toggle_breakpoint, desc = "Toggle breakpoint" },
-- { "<Leader>dc", require("dap").continue, desc = "Continue" },
-- },
-- trouble plugin
{ "<leader>xx", "<cmd>Trouble diagnostics toggle<cr>", desc = "Diagnostics (Trouble)" },
{ "<leader>xX", "<cmd>Trouble diagnostics toggle filter.buf=0<cr>", desc = "Buffer Diagnostics (Trouble)" },
{ "<leader>xs", "<cmd>Trouble symbols toggle focus=false<cr>", desc = "Symbols (Trouble)" },
{
"<leader>xl",
"<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
desc = "LSP Definitions / references / ... (Trouble)",
},
{ "<leader>xL", "<cmd>Trouble loclist toggle<cr>", desc = "Location List (Trouble)" },
{ "<leader>xQ", "<cmd>Trouble qflist toggle<cr>", desc = "Quickfix List (Trouble)" },
-- QOL shortcuts
{ "<leader>n", "<cmd>nohl<cr>", desc = "Stop highlighting search results" },
{ "<leader>m", "<cmd>NoiceDismiss<cr>", desc = "Dismiss notifications" },
{ "<leader>M", "<cmd>Markview toggle<cr>", desc = "Markview toggle source view" },
{ "<leader>r", group = "Rename" },
{ "<leader>rr", vim.lsp.buf.rename, opts, desc = "Rename Variable" },
{ "<leader>s", group = "Sessions" },
{ "<leader>sd", desc = "Delete Session" },
{ "<leader>sl", desc = "Load Session" },
{ "<leader>sn", desc = "New Session" },
{ "<leader>su", desc = "Update Session" },
{ "<leader>sl", function() require("nvim-possession").list() end, desc = "List sesssions" },
{ "<leader>sn", function() require("nvim-possession").new() end, desc = "Create new session" },
{ "<leader>su", function() require("nvim-possession").update() end, desc = "Update Session" },
{ "<leader>sd", function() require("nvim-possession").delete() end, desc = "Delete Session" },
{ "<leader>t", group = "tabs" },
{ "<leader>ta", "<cmd>tabnew<cr>", desc = "Add new Tab" },
@@ -83,9 +124,100 @@ wk.add({
{ "<leader>ww", "<cmd>WhichKey<cr>", desc = "Show keybindings" },
{ "<leader>y", desc = "Copy to system clipboard" },
{ "<leader>Y", desc = "Copy line to system clipboard" },
-- mini.nvim additions
{ "va", group = "select around" }, --{{{1 mini.ai
{ "va(", desc = "() parens" },
{ "va)", desc = "() parens" },
{ "va[", desc = "[] brackets" },
{ "va]", desc = "[] brackets" },
{ "va{", desc = "{} braces" },
{ "va}", desc = "{} braces" },
{ "va<", desc = "<> braces" },
{ "va>", desc = "<> braces" },
{ 'va"', desc = '""' },
{ "va'", desc = "''" },
{ "val", desc = "last selection" },
{ "vi", group = "select inside" },
{ "vi(", desc = "() parens" },
{ "vi)", desc = "() parens" },
{ "vi[", desc = "[] brackets" },
{ "vi]", desc = "[] brackets" },
{ "vi{", desc = "{} braces" },
{ "vi}", desc = "{} braces" },
{ "vi<", desc = "<> braces" },
{ "vi>", desc = "<> braces" },
{ 'vi"', desc = '""' },
{ "vi'", desc = "''" },
{ "vil", desc = "last selection" },
--}}}
{ "[", group = "move to prev" }, --{{{2 "brackets"
{ "[B", desc = "First Buffer" },
{ "[b", desc = "Prev Buffer" },
{ "[X", desc = "First Conflict" },
{ "[x", desc = "Prev Conflict" },
{ "[I", desc = "First Indent" },
{ "[i", desc = "Prev Indent" },
{ "[I", desc = "First Indent" },
{ "[i", desc = "Prev Indent" },
{ "[W", desc = "First Window in Tab" },
{ "[w", desc = "Prev Window in Tab" },
{ "[F", desc = "First File" },
{ "[f", desc = "Prev File" },
{ "[O", desc = "First Oldfile" },
{ "[o", desc = "Prev Oldfile" },
{ "[Q", desc = "First Quickfix" },
{ "[q", desc = "Prev Quickfix" },
{ "[Y", desc = "First Yank selection replacing latest put region" },
{ "[y", desc = "Prev Yank selection replacing latest put region" },
{ "]", group = "move next" },
{ "]B", desc = "Last Buffer" },
{ "]b", desc = "Next Buffer" },
{ "]X", desc = "Last Conflict" },
{ "]x", desc = "Next Conflict" },
{ "]I", desc = "Last Indent" },
{ "]i", desc = "Next Indent" },
{ "]I", desc = "Last Indent" },
{ "]i", desc = "Next Indent" },
{ "]W", desc = "Last Window in Tab" },
{ "]w", desc = "Next Window in Tab" },
{ "]F", desc = "Last File" },
{ "]f", desc = "Next File" },
{ "]O", desc = "Last Oldfile" },
{ "]o", desc = "Next Oldfile" },
{ "]Q", desc = "Last Quickfix" },
{ "]q", desc = "Next Quickfix" },
{ "]Y", desc = "Last Yank selection replacing latest put region" },
{ "]y", desc = "Next Yank selection replacing latest put region" },
--}}}
{ "gcc", desc = "Comment Line" },
{
mode = { "v" },
{ "gc", group = "Comment" },
{ "g=", desc = "evaluate expression" },
{ "gm", desc = "duplicate" },
{ "gr", desc = "replace with register" },
{ "gs", desc = "sort" },
{ "gx", desc = "exchange region" },
},
})
wk.add({
-- These somehow have no effect whatsoever
-- { "c", group = "change" },
-- { "c[", group = "back" },
-- { "c]", group = "forward" },
-- { "cg", group = "jump" },
--
-- { "d", group = "delete" },
-- { "d[", group = "back" },
-- { "d]", group = "forward" },
-- { "dg", group = "jump" },
{ "K", desc = "Show definition" },
{ "[", group = "jump backward" },
{ "[c", desc = "Previous diff change" },
@@ -101,3 +233,16 @@ wk.add({
{ "gi", desc = "show implementations" },
{ "gr", desc = "list all references to symbol under cursor" },
})
function whichkeyUndotree()
wk.add({
{ "j", desc = "jump to next undo node" },
{ "gj", desc = "jump to the parent node of the node under the cursor" },
{ "k", desc = "jump to previous undo node" },
{ "J", desc = "jump to next undo node and undo to this state" },
{ "K", desc = "jump to previous undo node and undo to this state" },
{ "q", desc = "quit undotree" },
{ "p", desc = "jump into undetree diff window" },
{ "<cr>", desc = "undo to this state" },
})
end

View File

@@ -1,107 +0,0 @@
local wk = require("which-key")
local mappings = {
f = {
name = "Telescope", --optional group name
b = { "<cmd>Telescope buffers<cr>", "Find Buffer" },
f = { "<cmd>Telescope find_files<cr>", "Find File" },
s = { "<cmd>Telescope live_grep<cr>", "Live Grep" },
h = { "<cmd>Telescope help_tags<cr>", "Find Help" },
r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File", noremap = false },
w = { "<cmd>Telescope grep_string<cr>", "Find string under cursor" },
d = { "<cmd>Telescope lsp_document_symbols<cr>", "Find LSP Symbols" },
-- does not work as of now: --i = { "<cmd>AdvancedGitSearch<cr>", "Git Search" },
--n = { "New File" }, --just a label, don't create any mapping
--e = "Edit File", --same as above
},
t = {
name = "tabs",
n = { "<cmd>tabnext<cr>", "Next Tab" },
p = { "<cmd>tabprevious<cr>", "Previous Tab" },
f = { "<cmd>tabfirst<cr>", "First Tab" },
l = { "<cmd>tablast<cr>", "Last Tab" },
a = { "<cmd>tabnew<cr>", "Add new Tab" },
c = { "<cmd>tabclose<cr>", "Close Tab" },
m = {
name = "Move Tab",
f = { "<cmd>tabmove 0<cr>", "Move Tab to First" },
l = { "<cmd>tabmove $<cr>", "Move Tab to Last" },
i = { ":tabmove ", "Input position to move Tab to" },
}
},
K = { "Show definition" },
u = { "Toggle undo-tree" },
i = { "Auto format file with linter(?), also on F3" },
r = {
name = "Rename",
r = { "Rename Variable" }
},
l = {
e = { "Open diagnostic float" }
},
w = {
name = "Workspaces + Whichkey",
a = { "Add workspace folder" },
r = { "Remove workspace folder" },
w = { "<cmd>WhichKey<cr>", "Show keybindings" },
},
s = {
name = "Sessions",
n = { "New Session" },
u = { "Update Session" },
d = { "Delete Session" },
l = { "Load Session" },
},
g = {
name = "Gitsigns",
b = { "<cmd>Gitsigns blameline<cr>", "Show Blame Inline" },
B = { "<cmd>Gitsigns blame<cr>", "Toggle Blame Sidebar" },
s = {
name = "stage",
h = { "<cmd>Gitsigns stage_hunk<cr>", "Stage Hunk"},
b = { "<cmd>Gitsigns stage_buffer<cr>", "Stage Buffer"},
},
h = {
name = "hunks",
l = { "<cmd>Gitsigns setloclist<cr>", "List file Changes" },
n = { "<cmd>Gitsigns nav_hunk<cr>", "Nav Hunk"},
},
r = {
name = "reset",
h = { "<cmd>Gitsigns reset_hunk<cr>", "Reset Hunk"},
b = { "<cmd>Gitsigns reset_buffer<cr>", "Reset Buffer"},
},
u = { "<cmd>Gitsigns undo_stage_hunk<cr>", "Undo Stage Hunk"},
},
n = { "<cmd>nohl<cr>", "Stop highlighting search results" },
}
local opts = {
mode = "n",
prefix = '<leader>'
}
wk.register({ mappings, opts, prefix = "<leader>" })
local mappings_leaderless = {
K = { "Show definition" },
g = {
name = "lsp functions",
d = { "go to definition" },
D = { "go to declaration" },
i = { "show implementations" },
r = { "list all references to symbol under cursor" },
},
["["] = {
name = "jump backward",
d = "Previous Diagnostic",
c = "Previous diff change",
h = { "<cmd>Gitsigns prev_hunk<cr><cr>", "Previous changed git block" },
},
["]"] = {
name = "jump forward",
d = "Next Diagnostic",
c = "Next diff change",
h = { "<cmd>Gitsigns next_hunk<cr><cr>", "Next changed git block" },
},
}
wk.register({ mappings_leaderless, opts })

View File

@@ -1,30 +1,14 @@
---
local wilder = require('wilder')
local gradient = {
'#f4468f', '#fd4a85', '#ff507a', '#ff566f', '#ff5e63',
'#ff6658', '#ff704e', '#ff7a45', '#ff843d', '#ff9036',
'#f89b31', '#efa72f', '#e6b32e', '#dcbe30', '#d2c934',
'#c8d43a', '#bfde43', '#b6e84e', '#aff05b'
}
wilder.setup({modes = {':', '/', '?'} })
wilder.set_option('pipeline', {
wilder.branch(
wilder.cmdline_pipeline({
fuzzy = 1,
}),
wilder.search_pipeline()
),
})
for i, fg in ipairs(gradient) do
gradient[i] = wilder.make_hl('WilderGradient' .. i, 'Pmenu', {{a = 1}, {a = 1}, {foreground = fg}})
end
local wilder = require("wilder")
wilder.set_option('renderer', wilder.wildmenu_renderer({
highlights = {
gradient = gradient, -- must be set
-- selected_gradient key can be set to apply gradient highlighting for the selected candidate.
},
highlighter = wilder.highlighter_with_gradient({
wilder.basic_highlighter(), -- or wilder.lua_fzy_highlighter(),
}),
}))
wilder.set_option(
"renderer",
wilder.wildmenu_renderer({
-- highlights = {
-- gradient = gradient, -- must be set
-- -- selected_gradient key can be set to apply gradient highlighting for the selected candidate.
-- },
highlighter = wilder.highlighter_with_gradient({
wilder.basic_highlighter(), -- or wilder.lua_fzy_highlighter(),
}),
})
)

View File

@@ -1,29 +0,0 @@
return {
"neovim/nvim-lspconfig", -- REQUIRED: for native Neovim LSP integration
lazy = false, -- REQUIRED: tell lazy.nvim to start this plugin at startup
dependencies = {
-- main one
{ "ms-jpq/coq_nvim", branch = "coq" },
-- 9000+ Snippets
{ "ms-jpq/coq.artifacts", branch = "artifacts" },
-- lua & third party sources -- See https://github.com/ms-jpq/coq.thirdparty
-- Need to **configure separately**
{ 'ms-jpq/coq.thirdparty', branch = "3p" }
-- - shell repl
-- - nvim lua api
-- - scientific calculator
-- - comment banner
-- - etc
},
init = function()
vim.g.coq_settings = {
auto_start = true, -- if you want to start COQ at startup
-- Your COQ settings here
}
end,
config = function()
-- Your LSP settings here
end,
}

View File

@@ -1,8 +0,0 @@
return {
'saecki/crates.nvim',
event = { "BufRead Cargo.toml" },
verylazy = true,
config = function()
require('crates').setup()
end,
}

View File

@@ -0,0 +1,84 @@
return {
{
"mfussenegger/nvim-dap",
lazy = true,
keys = {
{
"<leader>db",
function() require("dap").toggle_breakpoint() end,
desc = "Toggle Breakpoint",
},
{
"<leader>dc",
function() require("dap").continue() end,
desc = "Continue",
},
{
"<leader>dC",
function() require("dap").run_to_cursor() end,
desc = "Run to Cursor",
},
{
"<leader>dT",
function() require("dap").terminate() end,
desc = "Terminate",
},
},
},
{
"rcarriga/nvim-dap-ui",
config = true,
lazy = true,
keys = {
{
"<leader>du",
function() require("dapui").toggle({}) end,
desc = "Dap UI",
},
},
dependencies = {
"jay-babu/mason-nvim-dap.nvim",
"leoluz/nvim-dap-go",
"mfussenegger/nvim-dap-python",
"nvim-neotest/nvim-nio",
"theHamsta/nvim-dap-virtual-text",
},
},
-- debugging virtual text to show output
-- {
-- "theHamsta/nvim-dap-virtual-text",
-- event = "VeryLazy",
-- config = true,
-- dependencies = {
-- "mfussenegger/nvim-dap",
-- },
-- },
-- debugging languages
{
{
-- Automatically sets up LSP, so lsp.lua doesn't include rust.
-- Makes debugging work seamlessly.
"mrcjkb/rustaceanvim",
version = "^5", -- Recommended by module.
lazy = true,
ft = "rust",
dependencies = {
"mfussenegger/nvim-dap",
},
},
},
{
"mfussenegger/nvim-dap-python",
lazy = true,
ft = "python",
config = function()
local python = vim.fn.expand("~/.local/share/nvim/mason/packages/debugpy/venv/bin/python")
require("dap-python").setup(python)
end,
-- Consider the mappings at
-- https://github.com/mfussenegger/nvim-dap-python?tab=readme-ov-file#mappings
dependencies = {
"mfussenegger/nvim-dap",
},
},
}

View File

@@ -1,41 +1,256 @@
return {
-- LSP Support
-- {
-- 'VonHeikemen/lsp-zero.nvim',
-- branch = "v3.x",
-- lazy = true,
-- config = false,
-- },
{
"mason-org/mason.nvim",
lazy = false,
--cmd = { "Mason", "MasonInstall", "MasonUninstall", "MasonUpdate", "MasonUninstallAll", "MasonLog" },
opts = {},
},
{
"nvim-treesitter/nvim-treesitter",
lazy = false,
build = ":TSUpdate",
event = { "BufRead" },
opts = {
sync_install = false,
auto_install = true,
highlight = {
enable = true,
-- disable for files bigger than 500KB
disable = function(lang, buf)
local max_filesize = 500 * 1024 -- 500 KB
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
if ok and stats and stats.size > max_filesize then return true end
end,
additional_vim_regex_highlighting = false,
},
indent = {
enable = true,
},
ensure_installed = {
"html",
"javascript",
"gdscript",
"lua",
"php",
"python",
"rust",
"typescript",
"vim",
},
},
},
{
"mason-org/mason-lspconfig.nvim",
lazy = false,
opts = {
ensure_installed = {
"rust_analyzer",
"ruff",
--"quick_lint_js",
--"eslint",
"html",
"cssls",
"gdscript",
"sqls",
"hyprls",
"lua_ls",
"ast-grep",
-- "pylyzer",
"vimls",
"ts_ls",
},
automatic_enable = { true, rust_analyzer = false },
},
config = function()
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
-- Enable completion triggered by <c-x><c-o>
vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev)
vim.keymap.set("n", "]d", vim.diagnostic.goto_next)
vim.keymap.set("n", "<leader>le", vim.diagnostic.open_float)
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
vim.keymap.set("n", "<leader>K", vim.lsp.buf.hover, opts)
vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts)
vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set("n", "<leader>f", function() vim.lsp.buf.format({ async = true }) end, opts)
end,
})
end,
},
{
"neovim/nvim-lspconfig",
-- dependencies = {
-- {"hrsh7th/cmp-nvim-lsp"},
-- },
lazy = true,
},
{
"williamboman/mason.nvim",
lazy = true,
},
{
"williamboman/mason-lspconfig.nvim",
lazy = true,
lazy = false, -- REQUIRED: tell lazy.nvim to start this plugin at startup
dependencies = {
-- main one
{ "ms-jpq/coq_nvim", branch = "coq", lazy = false },
-- 9000+ Snippets
{ "ms-jpq/coq.artifacts", branch = "artifacts", lazy = false },
-- lua & third party sources -- See https://github.com/ms-jpq/coq.thirdparty
-- Need to **configure separately**
--{ "ms-jpq/coq.thirdparty", branch = "3p", lazy = false },
-- - shell repl
-- - nvim lua api
-- - scientific calculator
-- - comment banner
-- - etc
},
init = function()
vim.g.coq_settings = {
auto_start = true, -- if you want to start COQ at startup
-- Your COQ settings here
display = { statusline = { helo = false } }, -- disable greeting notification
}
end,
config = function()
vim.lsp.config(
"rust_analyzer",
coq.lsp_ensure_capabilities({
settings = {
["rust-analyzer"] = {
imports = {
granularity = {
group = "module",
},
prefix = "self",
},
cargo = {
buildScripts = {
enable = true,
},
},
procMacro = {
enable = true,
},
},
},
})
)
vim.lsp.config("gdscript", coq.lsp_ensure_capabilities({}))
--vim.lsp.enable({ "lua_ls" })
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
-- Enable completion triggered by <c-x><c-o>
vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev)
vim.keymap.set("n", "]d", vim.diagnostic.goto_next)
vim.keymap.set("n", "<leader>le", vim.diagnostic.open_float)
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
vim.keymap.set("n", "<leader>K", vim.lsp.buf.hover, opts)
vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts)
vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set("n", "<leader>f", function() vim.lsp.buf.format({ async = true }) end, opts)
end,
})
end,
},
{
"mfussenegger/nvim-lint",
lazy = false,
event = { "BufWritePre", "InsertLeave" },
lazy = true,
opts = {
linters_by_ft = {
cpp = { "cpplint" },
gdscript = { "gdlint" },
gitcommit = { "commitlint" },
lua = { "ast-grep" },
fish = { "fish_lsp" },
markdown = {},
sql = { "sqruff" },
python = { "ruff" },
r = { "r-languageserver" },
javascript = { "eslint" },
typescript = { "eslint" },
},
},
config = function()
local lint = require("lint")
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
callback = function() lint.try_lint() end,
})
end,
},
-- supposedly faster formatter
{
"stevearc/conform.nvim",
opts = {},
lazy = true,
event = { "BufWritePre" },
--keys = { "<leader>i", "F3" },
opts = {
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
pattern = "*",
callback = function(args) require("conform").format({ bufnr = args.buf }) end,
}),
formatters_by_ft = {
lua = { "stylua" },
rust = { "rustfmt", lsp_format = "fallback" },
-- Conform will run multiple formatters sequentially
python = { "ruff", "autopep8", lsp_format = "fallback" },
gdscript = { "gdformat" },
bash = { "shellharden" },
javascript = { "biome" },
typescript = { "biome" },
markdown = { "prettier" },
r = { "air" }, -- how to make air use tabs not spaces
css = { "ast-grep" },
html = { "ast-grep" },
-- sql = { "sqruff" },
json = { "biome" },
yaml = { "biome" },
vue = { "biome" },
},
format_on_save = {
timeout_ms = 700,
lsp_format = "fallback",
},
log_level = vim.log.levels.WARNING,
function()
require("conform").formatters.prettier = {
inherit = true,
command = "prettier",
prepend_args = { "--tab-width", "4" },
}
require("conform").formatters.biome = {
command = "biome format",
prepend_args = "--indent-width=4 --use-editorconfig=true",
}
require("lua").formatters.stylua = {
prepend = "--column-width=80",
}
end,
},
},
{ "nvim-treesitter/nvim-treesitter-textobjects", lazy = true, event = "BufRead" },
{
"nvim-treesitter/nvim-treesitter-context",
lazy = true,
event = "BufRead",
opts = {
enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
max_lines = 4, -- How many lines the window should span. Values <= 0 mean no limit.
min_window_height = 35, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
line_numbers = true,
lazy = true,
multiline_threshold = 4, -- Maximum number of lines to show for a single context
trim_scope = "outer", -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
mode = "topline", -- Line used to calculate context. Choices: 'cursor', 'topline'.
-- Separator between context and content. Should be a single character string, like '-'.
-- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
separator = "",
zindex = 20, -- The Z-index of the context window
on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching
},
},
{
"jubnzv/virtual-types.nvim",
lazy = false,
},
-- Autocompletion
-- {
-- "hrsh7th/nvim-cmp",
-- dependencies = {
-- {"L3MON4D3/LuaSnip"}
-- },
-- lazy = true,
-- },
}

View File

@@ -0,0 +1,180 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
lazy = false,
opts = {
options = {
icons_enabled = true,
theme = "everforest",
component_separators = { left = "", right = "" },
--component_separators = { left = '', right = '' },
section_separators = { left = "", right = "" },
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = false,
globalstatus = true,
refresh = {
statusline = 200,
tabline = 200,
winbar = 500,
events = {
"WinEnter",
"BufEnter",
"BufWritePost",
"SessionLoadPost",
"FileChangedShellPost",
"VimResized",
"Filetype",
"CursorMoved",
"CursorMovedI",
"ModeChanged",
},
},
symbols = {
--modified = " ●", -- Text to show when the buffer is modified
alternate_file = "#", -- Text to show to identify the alternate file
directory = "", -- Text to show when the buffer is a directory
modified = "[+]", -- Text to show when the file is modified.
readonly = "[-]", -- Text to show when the file is non-modifiable or readonly.
unnamed = "[No Name]", -- Text to show for unnamed buffers.
newfile = "[New]", -- Text to show for newly created file before first write
},
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch", "diff", "diagnostics" },
lualine_c = {
-- {
-- require("noice").api.status.mode.get,
-- cond = require("noice").api.status.mode.has,
-- color = { fg = "#ff9e64" },
-- },
-- {
-- require("noice").api.status.search.get,
-- cond = require("noice").api.status.search.has,
-- color = { fg = "#ff9e64" },
-- },
"pwd",
-- { "filename", path = 3 },
},
lualine_x = {
{
require("noice").api.status.command.get,
cond = require("noice").api.status.command.has,
color = { fg = "#ff9e64" },
},
{
require("noice").api.statusline.mode.get,
cond = require("noice").api.statusline.mode.has,
color = { fg = "#ff9e64" },
},
{
require("noice").api.status.search.get,
cond = require("noice").api.status.search.has,
color = { fg = "#ff9e64" },
},
"filesize",
{
"fileformat",
symbols = {
unix = "LF",
dos = "CRLF",
},
},
"filetype",
'require"lsp-status".status()',
},
lualine_y = { "searchcount", "progress" },
lualine_z = { "selectioncount", "location" },
},
inactive_sections = {},
tabline = {
lualine_a = {
{
"tabs",
mode = 2,
path = 1,
max_length = 320,
tab_max_length = 40,
use_mode_colors = true,
},
},
lualine_b = {},
lualine_c = {},
lualine_d = {},
lualine_x = {
{
function()
if require("nvim-possession").status then
return require("nvim-possession").status()
else
end
end,
cond = function() return require("nvim-possession").status() ~= nil end,
},
},
lualine_y = { { "datetime", style = "%H:%M" } },
lualine_z = {},
},
winbar = {
lualine_a = {},
-- 0: Just the filename
-- 1: Relative path
-- 2: Absolute path
-- 3: Absolute path, with tilde as the home directory
-- 4: Filename and parent dir, with tilde as the home directory
lualine_b = { separator = nil, { "bufnr" }, { "filename", path = 3 } },
lualine_c = {
{
"diagnostics",
-- Table of diagnostic sources, available sources are:
-- 'nvim_lsp', 'nvim_diagnostic', 'nvim_workspace_diagnostic', 'coc', 'ale', 'vim_lsp'.
-- or a function that returns a table as such:
-- { error=error_cnt, warn=warn_cnt, info=info_cnt, hint=hint_cnt }
sources = { "nvim_diagnostic", "coc" },
-- Displays diagnostics for the defined severity types
sections = { "error", "warn" },
-- sections = { "error", "warn", "info", "hint" },
diagnostics_color = {
-- Same values as the general color option can be used here.
error = "DiagnosticError", -- Changes diagnostics' error color.
warn = "DiagnosticWarn", -- Changes diagnostics' warn color.
-- info = "DiagnosticInfo", -- Changes diagnostics' info color.
-- hint = "DiagnosticHint", -- Changes diagnostics' hint color.
},
symbols = { error = "E", warn = "W", info = "I", hint = "H" },
colored = true, -- Displays diagnostics status in color if set to true.
update_in_insert = false, -- Update diagnostics in insert mode.
always_visible = false, -- Show diagnostics even if there are none.
},
},
lualine_x = {
--[["filesize", "filetype"]]
},
lualine_y = {},
lualine_z = {},
},
inactive_winbar = {
lualine_a = {},
lualine_b = {},
lualine_c = {
"bufnr",
{
"filename",
path = 4,
},
},
lualine_x = {},
lualine_y = {},
lualine_z = {},
},
extensions = {},
},
}

View File

@@ -1,9 +1,19 @@
return {
{ "gennaro-tedesco/nvim-possession",
dependencies = {
"ibhagwan/fzf-lua",
},
lazy = true,
config = true,
},
{
"gennaro-tedesco/nvim-possession",
lazy = true,
keys = { "<Leader>s" },
config = true,
opts = {
autoload = false, -- default false
autosave = true,
autoswitch = {
enable = true,
},
sessions = {
sessions_path = "/home/felix/.cache/nvim/sessions/",
},
},
},
{ "ibhagwan/fzf-lua", lazy = true },
}

View File

@@ -2,57 +2,193 @@ return {
-- not deps
--{ "xiyaowong/transparent.nvim" },
-- { "olimorris/onedarkpro.nvim" },
{ "neanias/everforest-nvim" },
{ "ibhagwan/fzf-lua", lazy = true },
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", lazy = true },
{ "nvim-treesitter/nvim-treesitter-context", lazy = true },
{
"nvim-telescope/telescope.nvim",
tag = "0.1.2",
dependencies = {
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
"neanias/everforest-nvim",
lazy = false,
priority = 1000,
name = "everforest",
opts = {
on_highlights = function(hl, palette)
hl.MiniCursorword = { underdotted = true }
hl.MiniCursorwordCurrent = {} -- just needs to be mentioned to override color theme default and clone MiniCursorword
end,
},
},
{
"alex-popov-tech/store.nvim",
dependencies = {
"OXY2DEV/markview.nvim", -- optional, for pretty readme preview / help window
},
cmd = "Store",
opts = {
width = 1000,
height = 500,
},
lazy = true,
},
{
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
lazy = false,
},
{ "stevearc/aerial.nvim" },
{
"folke/noice.nvim",
event = "VeryLazy",
opts = {},
dependencies = {
"MunifTanjim/nui.nvim",
--OPTIONAL:
-- `nvim-notify` is only needed, if you want to use the notification view.
-- If not available, we use `mini` as the fallback
"rcarriga/nvim-notify",
lazy = true,
opts = {
-- cmdline = {
-- view = "cmdline",
-- },
routes = {
{
filter = {
event = "msg_show",
kind = "",
find = "written",
},
opts = { skip = true },
},
},
},
dependencies = {},
},
{ "MunifTanjim/nui.nvim", lazy = true }, -- dep of noice.nvim
{ "rcarriga/nvim-notify", lazy = true }, -- dep of noice.nvim
{
"echasnovski/mini.nvim",
lazy = true,
version = false,
},
{
"danielfalk/smart-open.nvim",
branch = "0.2.x",
lazy = true,
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"kkharji/sqlite.lua",
-- Only required if using match_algorithm fzf
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
-- Optional. If installed, native fzy will be used when match_algorithm is fzy
{ "nvim-telescope/telescope-fzy-native.nvim" },
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
"nvim-tree/nvim-web-devicons", -- optional, but recommended
},
cmd = "Neotree",
lazy = true, -- neo-tree will lazily load itself
},
{
"gelguy/wilder.nvim",
lazy = true,
event = { "CmdlineEnter" },
opts = {
modes = { ":", "/", "?" },
},
},
{ "gelguy/wilder.nvim", lazy = true },
{ "norcalli/nvim-colorizer.lua", verylazy = true },
{ "ziontee113/color-picker.nvim", verylazy = true },
{ "lewis6991/gitsigns.nvim", verylazy = true },
-- optional
{ "nvim-treesitter/nvim-treesitter-textobjects", lazy = true },
{ "OXY2DEV/markview.nvim", lazy = true, ft = "Markdown", cmd = "Markview", event = { "BufRead *.md" } },
{
"norcalli/nvim-colorizer.lua",
lazy = true,
event = { "BufRead" },
opts = {
"*",
css = { rgb_fn = true, hsl_fn = true },
scss = { rgb_fn = true, hsl_fn = true },
"javascript",
"html",
},
mode = "background",
},
{
"ziontee113/color-picker.nvim",
lazy = true,
keys = {
{ "<C-c>", mode = { "n" }, "<cmd>PickColorInsert<cr>", desc = "open color widget" },
{ "<C-c>", mode = { "i" }, "<cmd>PickColor<cr>", desc = "open color widget" },
},
cmd = { "PickColor", "PickColorInsert" },
opts = {
["icons"] = { "", "" },
-- ["icons"] = { "ﮊ", "" },
-- ["icons"] = { "", "ﰕ" },
-- ["icons"] = { "", "" },
-- ["icons"] = { "", "" },
["border"] = "rounded", -- none | single | double | rounded | solid | shadow
["keymap"] = { -- mapping example:
["U"] = "<Plug>ColorPickerSlider5Decrease",
["O"] = "<Plug>ColorPickerSlider5Increase",
},
["background_highlight_group"] = "Normal", -- default
["border_highlight_group"] = "FloatBorder", -- default ["text_highlight_group"] = "Normal", --default })
vim.cmd([[hi FloatBorder guibg=NONE]]), -- if you don't want weird border background colors around the popup.
},
-- },
-- config = {
-- vim.cmd([[hi FloatBorder guibg=NONE]]), -- if you don't want weird border background colors around the popup.
-- },
},
{
"jiaoshijie/undotree",
dependencies = "nvim-lua/plenary.nvim",
config = true,
keys = {
{ "<leader>u", function() require("undotree").toggle() end, desc = "toggle undotree" },
},
},
{
"saecki/crates.nvim",
lazy = true,
event = { "BufReadPost Cargo.toml" },
opts = {},
-- config = function() require("crates").setup() end,
},
{
"folke/trouble.nvim",
opts = {},
cmd = "Trouble",
lazy = true,
keys = { "<leader>x" },
},
{
"lewis6991/gitsigns.nvim",
lazy = false,
opts = {
signs = {
add = { text = "" },
change = { text = "" },
delete = { text = "_" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
},
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = true, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
follow_files = true,
},
attach_to_untracked = true,
current_line_blame = true, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
delay = 150,
ignore_whitespace = false,
virt_text_priority = 0,
},
current_line_blame_formatter = "<author>, <author_time:%Y-%m-%d> - <summary>",
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000, -- Disable if file is longer than this (in lines)
preview_config = {
-- Options passed to nvim_open_win
border = "single",
style = "minimal",
relative = "cursor",
row = 0,
col = 1,
},
},
},
{
"nvzone/typr",
dependencies = "nvzone/volt",
opts = {},
lazy = true,
cmd = { "Typr", "TyprStats" },
},
}

View File

@@ -0,0 +1,77 @@
return {
{
"nvim-telescope/telescope.nvim",
tag = "0.1.2",
lazy = true,
keys = {
{ "<leader><leader>", mode = { "n" }, "<cmd>Telescope smart_open<cr>", desc = "smart_open" },
{ "<leader>ff", mode = { "n" }, "<cmd>Telescope find_files<cr>", desc = "Find File" },
{ "<leader>fh", mode = { "n" }, "<cmd>Telescope help_tags<cr>", desc = "Find Help" },
{ "<leader>fs", mode = { "n" }, "<cmd>Telescope live_grep<cr>", desc = "Live Grep" },
},
cmd = { "Telescope" },
opts = {
defaults = {
sorting_strategy = "descending",
scroll_strategy = "limit",
scroll_speed = 7,
layout_strategy = "vertical",
layout_config = {
prompt_position = "top",
preview_cutoff = 0,
horizontal = {
height = 0.9,
},
vertical = {
prompt_position = "top",
height = 0.9,
width = 0.8,
mirror = true,
},
},
},
extensions = {
smart_open = {
match_algorithm = "fzy",
disable_devicons = false,
},
fzy_native = {},
},
pickers = {
buffers = {
mappings = {
n = {
["<leader>ww"] = "which_key",
["dd"] = function() require("telescope.actions").delete_buffer() end,
},
i = {
["<c-h>"] = "which_key",
["<c-x>"] = function() require("telescope.actions").delete_buffer() end,
},
},
},
},
},
},
{
"danielfalk/smart-open.nvim",
branch = "0.3.x",
lazy = true,
-- keys = { "<leader><leader>", "<cmd>Telescope smart_open<cr>", desc = "smart open" },
config = {
function() require("telescope").load_extension("smart_open") end,
},
},
{ "nvim-lua/plenary.nvim", lazy = true },
{ "MunifTanjim/nui.nvim", lazy = true },
-- Only required if using match_algorithm fzf
-- { "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
-- faster and better matching than fzf
{
"nvim-telescope/telescope-fzy-native.nvim",
config = {
function() require("telescope").load_extension("fzy_native") end,
},
},
{ "kkharji/sqlite.lua", lazy = true },
}

View File

@@ -1,37 +0,0 @@
return {
"folke/trouble.nvim",
opts = {},
cmd = "Trouble",
keys = {
{
"<leader>xx",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Diagnostics (Trouble)",
},
{
"<leader>xX",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)",
},
{
"<leader>cs",
"<cmd>Trouble symbols toggle focus=false<cr>",
desc = "Symbols (Trouble)",
},
{
"<leader>cl",
"<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
desc = "LSP Definitions / references / ... (Trouble)",
},
{
"<leader>xL",
"<cmd>Trouble loclist toggle<cr>",
desc = "Location List (Trouble)",
},
{
"<leader>xQ",
"<cmd>Trouble qflist toggle<cr>",
desc = "Quickfix List (Trouble)",
},
},
}

View File

@@ -1,8 +0,0 @@
return {
"jiaoshijie/undotree",
dependencies = "nvim-lua/plenary.nvim",
config = true,
keys = { -- load the plugin only when using it's keybinding:
{ "<leader>u", "<cmd>lua require('undotree').toggle()<cr>" },
},
}

View File

@@ -1,9 +0,0 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 50
end,
opts = {},
}

View File

@@ -0,0 +1,262 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 50
end,
opts = {
spec = {
{ "<leader>c", group = "crates" },
{ "<leader>cA", function() require("crates").upgrade_all_crates() end, desc = "Upgrade all crates" },
{ "<leader>cC", function() require("crates").open_creates_io() end, desc = "Open crates.io" },
{ "<leader>cD", function() require("crates").open_documentation() end, desc = "Open documentation" },
{ "<leader>cH", function() require("crates").open_homepage() end, desc = "Open homepage" },
{ "<leader>cR", function() require("crates").open_repository() end, desc = "Open repository" },
{ "<leader>cU", function() require("crates").upgrade_crate() end, desc = "Upgrade crate" },
{
"<leader>cX",
function() require("crates").extract_crate_into_table() end,
desc = "Extract crate into table",
},
{ "<leader>ca", function() require("crates").update_all_crates() end, desc = "Update all crates" },
{
"<leader>cd",
function() require("crates").show_dependencies_popup() end,
desc = "Show dependencies popup",
},
{ "<leader>cf", function() require("crates").show_features_popup() end, desc = "Show features popup" },
{ "<leader>cr", function() require("crates").reload() end, desc = "Reload" },
{ "<leader>ct", function() require("crates").toggle() end, desc = "Toggle" },
{ "<leader>cu", function() require("crates").update_crate() end, desc = "Update crate" },
{ "<leader>cv", function() require("crates").show_versions_popup() end, desc = "Show versions popup" },
{
"<leader>cx",
function() require("crates").expand_plain_crate_to_inline_table() end,
desc = "Expand plain crate to inline table",
},
{ "<leader>lp", "<cmd>Lazy profile<cr>", desc = "show Lazy profiler" },
{ "<leader>e", "<cmd>lua MiniFiles.open()<cr>", desc = "Files w/ Mini" },
{ "<leader>E", "<cmd>Lexplore<cr>", desc = "Files Sidebar" },
{ "<leader>f", group = "Telescope" },
{ "<leader>fb", "<cmd>Telescope buffers<cr>", desc = "Find Buffer" },
{ "<leader>fd", "<cmd>Telescope lsp_document_symbols<cr>", desc = "Find LSP Symbols" },
{ "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "Find File" },
{ "<leader>fh", "<cmd>Telescope help_tags<cr>", desc = "Find Help" },
{ "<leader>fr", "<cmd>Telescope oldfiles<cr>", desc = "Open Recent File", remap = true },
{ "<leader>fs", "<cmd>Telescope live_grep<cr>", desc = "Live Grep" },
{ "<leader>fw", "<cmd>Telescope grep_string<cr>", desc = "Find string under cursor" },
{
"<leader><leader>",
function() require("telescope").extensions.smart_open.smart_open() end,
mode = "n",
silent = true,
desc = "Smart open",
},
{ "<leader>g", group = "Gitsigns" },
{ "<leader>gB", "<cmd>Gitsigns blame<cr>", desc = "Toggle Blame Sidebar" },
{ "<leader>gb", "<cmd>Gitsigns blame_line<cr>", desc = "Show Blame Inline" },
{ "<leader>gd", "<cmd>Gitsigns toggle_deleted<cr>", desc = "Toggle deleted lines" },
{ "<leader>gh", group = "hunks" },
{ "<leader>ghl", "<cmd>Gitsigns setloclist<cr>", desc = "List file Changes" },
{ "<leader>ghn", "<cmd>Gitsigns nav_hunk<cr>", desc = "Nav Hunk" },
{ "<leader>gr", group = "reset" },
{ "<leader>grb", "<cmd>Gitsigns reset_buffer<cr>", desc = "Reset Buffer" },
{ "<leader>grh", "<cmd>Gitsigns reset_hunk<cr>", desc = "Reset Hunk" },
{ "<leader>gs", group = "stage" },
{ "<leader>gsb", "<cmd>Gitsigns stage_buffer<cr>", desc = "Stage Buffer" },
{ "<leader>gsh", "<cmd>Gitsigns stage_hunk<cr>", desc = "Stage Hunk" },
{ "<leader>gu", "<cmd>Gitsigns undo_stage_hunk<cr>", desc = "Undo Stage Hunk" },
-- lsp and debugging
{
"<leader>i",
function() require("conform").format({ async = true }) end,
desc = "Auto format file with linter(?), also on F3",
},
{
"F3",
function() require("conform").format({ async = true }) end,
mode = "ni",
desc = "Auto format file with formatter",
},
{ "<leader>le", vim.diagnostic.open_float, desc = "Open diagnostic float" },
{ "<leader>K", desc = "Show definition" },
-- { "<Leader>d", group = "Debugging" },
-- {
-- { mode = "n" },
-- { "<Leader>dn", require("dap").new, desc = "Start Debugger" },
-- { "<Leader>db", require("dap").toggle_breakpoint, desc = "Toggle breakpoint" },
-- { "<Leader>dc", require("dap").continue, desc = "Continue" },
-- },
-- trouble plugin
{ "<leader>xx", "<cmd>Trouble diagnostics toggle<cr>", desc = "Diagnostics (Trouble)" },
{
"<leader>xX",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)",
},
{ "<leader>xs", "<cmd>Trouble symbols toggle focus=false<cr>", desc = "Symbols (Trouble)" },
{
"<leader>xl",
"<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
desc = "LSP Definitions / references / ... (Trouble)",
},
{ "<leader>xL", "<cmd>Trouble loclist toggle<cr>", desc = "Location List (Trouble)" },
{ "<leader>xQ", "<cmd>Trouble qflist toggle<cr>", desc = "Quickfix List (Trouble)" },
-- QOL shortcuts
{ "<leader>n", "<cmd>nohl<cr>", desc = "Stop highlighting search results" },
{ "<leader>m", "<cmd>NoiceDismiss<cr>", desc = "Dismiss notifications" },
{ "<leader>M", "<cmd>Markview toggle<cr>", desc = "Markview toggle source view" },
{ "<leader>r", group = "Rename" },
{ "<leader>rr", vim.lsp.buf.rename, opts, desc = "Rename Variable" },
{ "<leader>s", group = "Sessions" },
{ "<leader>sl", function() require("nvim-possession").list() end, desc = "List sesssions" },
{ "<leader>sn", function() require("nvim-possession").new() end, desc = "Create new session" },
{ "<leader>su", function() require("nvim-possession").update() end, desc = "Update Session" },
{ "<leader>sd", function() require("nvim-possession").delete() end, desc = "Delete Session" },
{ "<leader>t", group = "tabs" },
{ "<leader>ta", "<cmd>tabnew<cr>", desc = "Add new Tab" },
{ "<leader>tc", "<cmd>tabclose<cr>", desc = "Close Tab" },
{ "<leader>tf", "<cmd>tabfirst<cr>", desc = "First Tab" },
{ "<leader>tl", "<cmd>tablast<cr>", desc = "Last Tab" },
{ "<leader>tm", group = "Move Tab" },
{ "<leader>tmf", "<cmd>tabmove 0<cr>", desc = "Move Tab to First" },
{ "<leader>tmi", ":tabmove ", desc = "Input position to move Tab to" },
{ "<leader>tml", "<cmd>tabmove $<cr>", desc = "Move Tab to Last" },
{ "<leader>tn", "<cmd>tabnext<cr>", desc = "Next Tab" },
{ "<leader>tp", "<cmd>tabprevious<cr>", desc = "Previous Tab" },
{ "<leader>u", desc = "Toggle undo-tree" },
{ "<leader>w", group = "Workspaces + Whichkey" },
{ "<leader>wa", desc = "Add workspace folder" },
{ "<leader>wr", desc = "Remove workspace folder" },
{ "<leader>ww", "<cmd>WhichKey<cr>", desc = "Show keybindings" },
{ "<leader>y", desc = "Copy to system clipboard" },
{ "<leader>Y", desc = "Copy line to system clipboard" },
-- mini.nvim additions
{ "va", group = "select around" }, --{{{1 mini.ai
{ "va(", desc = "() parens" },
{ "va)", desc = "() parens" },
{ "va[", desc = "[] brackets" },
{ "va]", desc = "[] brackets" },
{ "va{", desc = "{} braces" },
{ "va}", desc = "{} braces" },
{ "va<", desc = "<> braces" },
{ "va>", desc = "<> braces" },
{ 'va"', desc = '""' },
{ "va'", desc = "''" },
{ "val", desc = "last selection" },
{ "vi", group = "select inside" },
{ "vi(", desc = "() parens" },
{ "vi)", desc = "() parens" },
{ "vi[", desc = "[] brackets" },
{ "vi]", desc = "[] brackets" },
{ "vi{", desc = "{} braces" },
{ "vi}", desc = "{} braces" },
{ "vi<", desc = "<> braces" },
{ "vi>", desc = "<> braces" },
{ 'vi"', desc = '""' },
{ "vi'", desc = "''" },
{ "vil", desc = "last selection" },
--}}}
{ "[", group = "move to prev" }, --{{{2 "brackets"
{ "[B", desc = "First Buffer" },
{ "[b", desc = "Prev Buffer" },
{ "[X", desc = "First Conflict" },
{ "[x", desc = "Prev Conflict" },
{ "[I", desc = "First Indent" },
{ "[i", desc = "Prev Indent" },
{ "[I", desc = "First Indent" },
{ "[i", desc = "Prev Indent" },
{ "[W", desc = "First Window in Tab" },
{ "[w", desc = "Prev Window in Tab" },
{ "[F", desc = "First File" },
{ "[f", desc = "Prev File" },
{ "[O", desc = "First Oldfile" },
{ "[o", desc = "Prev Oldfile" },
{ "[Q", desc = "First Quickfix" },
{ "[q", desc = "Prev Quickfix" },
{ "[Y", desc = "First Yank selection replacing latest put region" },
{ "[y", desc = "Prev Yank selection replacing latest put region" },
{ "]", group = "move next" },
{ "]B", desc = "Last Buffer" },
{ "]b", desc = "Next Buffer" },
{ "]X", desc = "Last Conflict" },
{ "]x", desc = "Next Conflict" },
{ "]I", desc = "Last Indent" },
{ "]i", desc = "Next Indent" },
{ "]I", desc = "Last Indent" },
{ "]i", desc = "Next Indent" },
{ "]W", desc = "Last Window in Tab" },
{ "]w", desc = "Next Window in Tab" },
{ "]F", desc = "Last File" },
{ "]f", desc = "Next File" },
{ "]O", desc = "Last Oldfile" },
{ "]o", desc = "Next Oldfile" },
{ "]Q", desc = "Last Quickfix" },
{ "]q", desc = "Next Quickfix" },
{ "]Y", desc = "Last Yank selection replacing latest put region" },
{ "]y", desc = "Next Yank selection replacing latest put region" },
--}}}
{ "gcc", desc = "Comment Line" },
{
mode = { "v" },
{ "gc", group = "Comment" },
{ "g=", desc = "evaluate expression" },
{ "gm", desc = "duplicate" },
{ "gr", desc = "replace with register" },
{ "gs", desc = "sort" },
{ "gx", desc = "exchange region" },
},
-- These somehow have no effect whatsoever
-- { "c", group = "change" },
-- { "c[", group = "back" },
-- { "c]", group = "forward" },
-- { "cg", group = "jump" },
--
-- { "d", group = "delete" },
-- { "d[", group = "back" },
-- { "d]", group = "forward" },
-- { "dg", group = "jump" },
{ "K", desc = "Show definition" },
{ "[", group = "jump backward" },
{ "[c", desc = "Previous diff change" },
{ "[d", desc = "Previous Diagnostic" },
{ "[h", "<cmd>Gitsigns prev_hunk<cr><cr>", desc = "Previous changed git block" },
{ "]", group = "jump forward" },
{ "]c", desc = "Next diff change" },
{ "]d", desc = "Next Diagnostic" },
{ "]h", "<cmd>Gitsigns next_hunk<cr><cr>", desc = "Next changed git block" },
{ "g", group = "lsp functions" },
{ "gD", desc = "go to declaration" },
{ "gd", desc = "go to definition" },
{ "gi", desc = "show implementations" },
{ "gr", desc = "list all references to symbol under cursor" },
--undotree
{ "j", desc = "jump to next undo node" },
{ "gj", desc = "jump to the parent node of the node under the cursor" },
{ "k", desc = "jump to previous undo node" },
{ "J", desc = "jump to next undo node and undo to this state" },
{ "K", desc = "jump to previous undo node and undo to this state" },
{ "q", desc = "quit undotree" },
{ "p", desc = "jump into undetree diff window" },
{ "<cr>", desc = "undo to this state" },
},
},
}