migrate nvim config to 0.12.0: vim.pack, ui2, snacks -> mini, just general spring cleaning
This commit is contained in:
parent
d1178fbe59
commit
14b1a9b057
70 changed files with 1081 additions and 1483 deletions
|
|
@ -66,8 +66,12 @@ keybind = ctrl+shift+h=csi:11~
|
||||||
keybind = ctrl+shift+j=csi:12~
|
keybind = ctrl+shift+j=csi:12~
|
||||||
keybind = ctrl+shift+k=csi:13~
|
keybind = ctrl+shift+k=csi:13~
|
||||||
keybind = ctrl+shift+l=csi:14~
|
keybind = ctrl+shift+l=csi:14~
|
||||||
keybind = ctrl+1=csi:15~
|
|
||||||
keybind = ctrl+2=csi:19~
|
keybind = ctrl+1=csi:25~
|
||||||
keybind = ctrl+3=csi:21~
|
keybind = ctrl+2=csi:26~
|
||||||
keybind = ctrl+4=csi:23~
|
keybind = ctrl+3=csi:28~
|
||||||
keybind = ctrl+5=csi:24~
|
keybind = ctrl+4=csi:29~
|
||||||
|
keybind = ctrl+5=csi:31~
|
||||||
|
keybind = ctrl+6=csi:32~
|
||||||
|
keybind = ctrl+7=csi:33~
|
||||||
|
keybind = ctrl+8=csi:34~
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,13 @@
|
||||||
{
|
{
|
||||||
"diagnostics.globals": [
|
"diagnostics.globals": [
|
||||||
"vim"
|
"vim",
|
||||||
"Snacks"
|
"MiniExtra",
|
||||||
|
"MiniIcons",
|
||||||
|
"MiniNotify",
|
||||||
|
"MiniPick",
|
||||||
|
"MiniSessions",
|
||||||
|
"MiniSurround",
|
||||||
|
"MiniStart",
|
||||||
|
"MiniDiff"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,10 @@
|
||||||
vim.api.nvim_create_augroup("ColorsyncEvents", { clear = true })
|
vim.loader.enable() -- cache for faster startups
|
||||||
|
require('vim._core.ui2').enable({})
|
||||||
|
|
||||||
-- Load keymaps before loading any plugins
|
require("colorsync_integration")
|
||||||
require("keymaps")
|
require("keymaps")
|
||||||
|
require("vim_opt")
|
||||||
-- Change and personalize native vim settings
|
|
||||||
vim.opt = require("vim_opt")
|
|
||||||
|
|
||||||
-- Initialize Lazy package manager
|
|
||||||
require("lazy_init")
|
|
||||||
|
|
||||||
-- Initialize the sticky terminal window at the bottom
|
|
||||||
require("terminal")
|
require("terminal")
|
||||||
|
|
||||||
-- Initialize the custom window management functionality
|
|
||||||
require("window_management").setup()
|
require("window_management").setup()
|
||||||
|
|
||||||
-- Initializes custom commands and keybindings for handling code formatting
|
|
||||||
require("format_handler").setup()
|
|
||||||
|
|
||||||
-- Initialize the custom close handler for handling window closing events
|
|
||||||
require("close_handler").setup()
|
|
||||||
|
|
||||||
-- Set configs for servers and enable them in the Neovim LSP Client
|
|
||||||
require("lspsetup")
|
require("lspsetup")
|
||||||
|
|
||||||
-- Set configs for nvim-dap so we can debug
|
|
||||||
require("dapsetup")
|
|
||||||
|
|
||||||
-- Change built in settings related to diagnostics
|
|
||||||
require("diagnostics")
|
require("diagnostics")
|
||||||
|
|
||||||
--[[
|
|
||||||
-- Annoyances in Neovim environment:
|
|
||||||
-- 1. codelldb doesn't terminate C++ program after debugging. : Don't know how to fix, have asked for help.
|
|
||||||
-- 2. Sometimes very seldomly the cursor stops rendering, the only fix I found is to restart Neovim.
|
|
||||||
-- 3. Remove usage of dap-go, dap-python, and rustaceanvim. These are really just providing DAP/LSP configs which I prefer to have without plugin bloat. However, they require more to setup than your average conf.
|
|
||||||
--]]
|
|
||||||
|
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
{
|
|
||||||
"LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
|
|
||||||
"blink.cmp": { "branch": "main", "commit": "451168851e8e2466bc97ee3e026c3dcb9141ce07" },
|
|
||||||
"codediff.nvim": { "branch": "main", "commit": "93cd80c56f71af4671388c568a37d4c84c3ddefa" },
|
|
||||||
"colorful-menu.nvim": { "branch": "master", "commit": "b51a659459df8d078201aefc995db8175ed55e84" },
|
|
||||||
"demicolon.nvim": { "branch": "main", "commit": "a9ca137474b3a02e1d6ac48bfdb1985172e2ec9a" },
|
|
||||||
"fff.nvim": { "branch": "main", "commit": "dd56a3a8a8a5a85522badaf6485f28c8f7a7c840" },
|
|
||||||
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
|
||||||
"gitsigns.nvim": { "branch": "main", "commit": "7c4faa3540d0781a28588cafbd4dd187a28ac6e3" },
|
|
||||||
"goto-preview": { "branch": "main", "commit": "d2d6923c9b9e0e43f0b9b566f261a8b1ae016540" },
|
|
||||||
"incline.nvim": { "branch": "main", "commit": "8b54c59bcb23366645ae10edca6edfb9d3a0853e" },
|
|
||||||
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
|
||||||
"lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" },
|
|
||||||
"live-rename.nvim": { "branch": "main", "commit": "3a3cddf23b89a17992f9ca67afc5858077769462" },
|
|
||||||
"logger.nvim": { "branch": "main", "commit": "63dd10c9b9a159fd6cfe08435d9606384ff103c5" },
|
|
||||||
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
|
|
||||||
"lush.nvim": { "branch": "main", "commit": "9c60ec2279d62487d942ce095e49006af28eed6e" },
|
|
||||||
"markview.nvim": { "branch": "main", "commit": "1861f959599ae03cfd59f56222a542035b0cd947" },
|
|
||||||
"neogit": { "branch": "master", "commit": "d3890fc3cdf0859845a86b2be306bba01458df1a" },
|
|
||||||
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
|
|
||||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
|
||||||
"nvim-dap": { "branch": "master", "commit": "a9d8cb68ee7184111dc66156c4a2ebabfbe01bc5" },
|
|
||||||
"nvim-dap-go": { "branch": "main", "commit": "b4421153ead5d726603b02743ea40cf26a51ed5f" },
|
|
||||||
"nvim-dap-repl-highlights": { "branch": "master", "commit": "f31deba47fe3ee6ff8d2f13d9dbd06b2d1ae06b5" },
|
|
||||||
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
|
|
||||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
|
||||||
"nvim-lightbulb": { "branch": "master", "commit": "aa3a8b0f4305b25cfe368f6c9be9923a7c9d0805" },
|
|
||||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
|
||||||
"nvim-norrsken": { "branch": "master", "commit": "692c2a0f81905dc6fd3011361740d610dfa8052d" },
|
|
||||||
"nvim-surround": { "branch": "main", "commit": "61319d4bd1c5e336e197defa15bd104c51f0fb29" },
|
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
|
||||||
"nvim-treesitter-context": { "branch": "master", "commit": "adf4b6b0420b7be6c717ef0ac7993183d6c201b1" },
|
|
||||||
"nvim-treesitter-textobjects": { "branch": "main", "commit": "93d60a475f0b08a8eceb99255863977d3a25f310" },
|
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "d7462543c9e366c0d196c7f67a945eaaf5d99414" },
|
|
||||||
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
|
|
||||||
"persistent-breakpoints.nvim": { "branch": "main", "commit": "d1656221836207787b8a7969cc2dc72668c4742a" },
|
|
||||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
|
||||||
"rustaceanvim": { "branch": "master", "commit": "e9c5aaba16fead831379d5f44617547a90b913c7" },
|
|
||||||
"snacks.nvim": { "branch": "main", "commit": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e" },
|
|
||||||
"tiny-glimmer.nvim": { "branch": "main", "commit": "932e6c2cc4a43ce578f007db1f8f61ad6798f938" },
|
|
||||||
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "ba133b3e932416e4b9507095731a6d7276878fe8" },
|
|
||||||
"visual-whitespace.nvim": { "branch": "main", "commit": "49ff2b1c572ed7033a584381fa23aad2bf3bb258" }
|
|
||||||
}
|
|
||||||
|
|
@ -13,7 +13,7 @@ local function set_python_path(path)
|
||||||
client.config.settings = vim.tbl_deep_extend("force", client.config.settings,
|
client.config.settings = vim.tbl_deep_extend("force", client.config.settings,
|
||||||
{ python = { pythonPath = path } })
|
{ python = { pythonPath = path } })
|
||||||
end
|
end
|
||||||
client.notify("workspace/didChangeConfiguration", { settings = nil })
|
client:notify("workspace/didChangeConfiguration", { settings = nil })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ local function switch_source_header()
|
||||||
local bufnr = utils.validate_bufnr(0)
|
local bufnr = utils.validate_bufnr(0)
|
||||||
local clangd_client = vim.lsp.get_clients({ bufnr = bufnr, name = "clangd" })[1]
|
local clangd_client = vim.lsp.get_clients({ bufnr = bufnr, name = "clangd" })[1]
|
||||||
if clangd_client then
|
if clangd_client then
|
||||||
clangd_client.request(
|
clangd_client:request(
|
||||||
"textDocument/switchSourceHeader",
|
"textDocument/switchSourceHeader",
|
||||||
{ uri = vim.uri_from_bufnr(bufnr) },
|
{ uri = vim.uri_from_bufnr(bufnr) },
|
||||||
function(err, result)
|
function(err, result)
|
||||||
|
|
@ -13,13 +13,13 @@ local function switch_source_header()
|
||||||
error(tostring(err))
|
error(tostring(err))
|
||||||
end
|
end
|
||||||
if not result then
|
if not result then
|
||||||
print "Corresponding file cannot be determined"
|
vim.notify("Corresponding file cannot be determined", vim.log.levels.WARN)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
vim.api.nvim_command("drop " .. vim.uri_to_fname(result))
|
vim.api.nvim_command("drop " .. vim.uri_to_fname(result))
|
||||||
end, bufnr)
|
end, bufnr)
|
||||||
else
|
else
|
||||||
print "method textDocument/switchSourceHeader is not supported by any servers active on the current buffer"
|
vim.notify("textDocument/switchSourceHeader is not supported by any servers active on the current buffer", vim.log.levels.WARN)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -44,9 +44,9 @@ return {
|
||||||
"compile_flags.txt",
|
"compile_flags.txt",
|
||||||
"configure.ac",
|
"configure.ac",
|
||||||
},
|
},
|
||||||
on_attach = function()
|
on_attach = function(_, bufnr)
|
||||||
utils.set_keymap_list({
|
utils.set_keymap_list({
|
||||||
{ "<leader>h", switch_source_header, },
|
{ "<leader>h", switch_source_header, { buf = bufnr } },
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,10 @@ return {
|
||||||
|
|
||||||
local fname = vim.api.nvim_buf_get_name(bufnr)
|
local fname = vim.api.nvim_buf_get_name(bufnr)
|
||||||
root_file_patterns = insert_package_json(root_file_patterns, "eslintConfig", fname)
|
root_file_patterns = insert_package_json(root_file_patterns, "eslintConfig", fname)
|
||||||
on_dir(vim.fs.dirname(vim.fs.find(root_file_patterns, { path = fname, upward = true })[1]))
|
local root = vim.fs.find(root_file_patterns, { path = fname, upward = true })[1]
|
||||||
|
if root then
|
||||||
|
on_dir(vim.fs.dirname(root))
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
workspace_required = true,
|
workspace_required = true,
|
||||||
settings = {
|
settings = {
|
||||||
|
|
|
||||||
|
|
@ -30,16 +30,12 @@ return {
|
||||||
version = "LuaJIT"
|
version = "LuaJIT"
|
||||||
},
|
},
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
globals = { "vim", "Snacks" },
|
globals = { "vim" },
|
||||||
},
|
},
|
||||||
-- Make the server aware of Neovim runtime files
|
|
||||||
workspace = {
|
workspace = {
|
||||||
checkThirdParty = false,
|
checkThirdParty = false,
|
||||||
library = {
|
library = {
|
||||||
vim.env.VIMRUNTIME
|
vim.env.VIMRUNTIME
|
||||||
-- Depending on the usage, you might want to add additional paths here.
|
|
||||||
-- "${3rd}/luv/library"
|
|
||||||
-- "${3rd}/busted/library",
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
-- Helper function for the 'MigrateToSvelte5' LSP command.
|
|
||||||
-- This function will be called by the user command created in on_attach.
|
|
||||||
local function migrate_to_svelte_5_command(client)
|
|
||||||
client:exec_param({
|
|
||||||
command = "migrate_to_svelte_5",
|
|
||||||
arguments = { vim.uri_from_bufnr(vim.api.nvim_get_current_buf()) },
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
|
||||||
cmd = { "svelteserver", "--stdio" },
|
|
||||||
|
|
||||||
filetypes = { "svelte" },
|
|
||||||
|
|
||||||
root_markers = { "package.json", ".git/" },
|
|
||||||
on_attach = function(client, bufnr)
|
|
||||||
local fn = function() migrate_to_svelte_5_command(client) end
|
|
||||||
vim.api.nvim_buf_create_user_command(bufnr, "SvelteMigrateToSvelte5", fn, {
|
|
||||||
desc = "Svelte: Migrate Component to Svelte 5 Syntax (via LSP).",
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
@ -63,9 +63,12 @@ return {
|
||||||
-- ts_ls provides `source.*` code actions that apply to the whole file. These only appear in
|
-- ts_ls provides `source.*` code actions that apply to the whole file. These only appear in
|
||||||
-- `vim.lsp.buf.code_action()` if specified in `context.only`.
|
-- `vim.lsp.buf.code_action()` if specified in `context.only`.
|
||||||
vim.api.nvim_buf_create_user_command(bufnr, "LspTypescriptSourceAction", function()
|
vim.api.nvim_buf_create_user_command(bufnr, "LspTypescriptSourceAction", function()
|
||||||
|
local kinds = vim.tbl_get(client.server_capabilities, "codeActionProvider", "codeActionKinds")
|
||||||
|
if not kinds then return end
|
||||||
|
|
||||||
local source_actions = vim.tbl_filter(function(action)
|
local source_actions = vim.tbl_filter(function(action)
|
||||||
return vim.startswith(action, "source.")
|
return vim.startswith(action, "source.")
|
||||||
end, client.server_capabilities.codeActionProvider.codeActionKinds)
|
end, kinds)
|
||||||
|
|
||||||
vim.lsp.buf.code_action({
|
vim.lsp.buf.code_action({
|
||||||
context = {
|
context = {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
return {
|
return {
|
||||||
cmd = { "zls" },
|
cmd = { "zls" },
|
||||||
on_new_config = function(new_config, new_root_dir)
|
on_new_config = function(new_config, new_root_dir)
|
||||||
if vim.fn.filereadable(vim.fs.joinpath(new_root_dir, "zls.json")) ~= 0 then
|
if vim.fn.filereadable(vim.fs.joinpath(new_root_dir, "zls.json")) ~= 0 then
|
||||||
new_config.cmd = { "zls", "--config-path", "zls.json" }
|
new_config.cmd = { "zls", "--config-path", "zls.json" }
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
filetypes = { "zig", "zir" },
|
filetypes = { "zig", "zir" },
|
||||||
root_markers = {"zls.json", "build.zig", ".git"},
|
root_markers = { "zls.json", "build.zig", ".git" },
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
local utils = require("utils")
|
|
||||||
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
local callbacks = {}
|
|
||||||
local handle_count = 1
|
|
||||||
|
|
||||||
function M.setup()
|
|
||||||
utils.set_keymap_list({
|
|
||||||
{
|
|
||||||
"<Leader>q",
|
|
||||||
function()
|
|
||||||
for _, cb in ipairs(callbacks) do
|
|
||||||
if cb ~= nil then
|
|
||||||
cb()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.register_on_close_cb(cb)
|
|
||||||
assert(type(cb) == "function", "Callback must be a function")
|
|
||||||
|
|
||||||
local handle = handle_count
|
|
||||||
handle_count = handle_count + 1
|
|
||||||
table.insert(callbacks, cb)
|
|
||||||
|
|
||||||
return handle
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.remove_on_close_cb(cb_handle)
|
|
||||||
assert(type(cb_handle) == "number", "Callback handle must be a number")
|
|
||||||
assert(cb_handle > 0 and cb_handle <= #callbacks, "Invalid callback handle")
|
|
||||||
assert(callbacks[cb_handle] ~= nil, "Callback does not exist")
|
|
||||||
|
|
||||||
callbacks[cb_handle] = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
22
nvim/lua/colorsync_integration.lua
Normal file
22
nvim/lua/colorsync_integration.lua
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
local filepath = vim.fs.joinpath(os.getenv("HOME"), ".local/state/colorsync/current")
|
||||||
|
|
||||||
|
vim.api.nvim_create_augroup("ColorsyncEvents", { clear = true })
|
||||||
|
|
||||||
|
local handle = vim.uv.new_fs_event()
|
||||||
|
if not handle then
|
||||||
|
vim.notify("colorsync: failed to create fs event handle", vim.log.levels.ERROR)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
handle:start(filepath, {}, function(err)
|
||||||
|
if err then
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.notify("colorsync: error watching " .. filepath .. "\n" .. err, vim.log.levels.ERROR)
|
||||||
|
end)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.api.nvim_exec_autocmds("User", { pattern = "ColorsyncThemeChanged", modeline = false })
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
local utils = require("utils")
|
|
||||||
local dap = require("dap")
|
|
||||||
|
|
||||||
local dir_path = "dap"
|
|
||||||
utils.foreach(utils.get_file_names_in_dir(dir_path, "*.lua", true), function(adapter)
|
|
||||||
dap.adapters[adapter] = require(dir_path .. "/" .. adapter)
|
|
||||||
end)
|
|
||||||
|
|
||||||
vim.api.nvim_create_user_command("LaunchTemplate", function()
|
|
||||||
local template = {
|
|
||||||
'{',
|
|
||||||
' "version": "0.2.0",',
|
|
||||||
' "configurations": [',
|
|
||||||
' {',
|
|
||||||
' "type": "codelldb",',
|
|
||||||
' "request": "launch",',
|
|
||||||
' "name": "Launch",',
|
|
||||||
' "program": "${workspaceFolder}/build/binary",',
|
|
||||||
' "cwd": "${workspaceFolder}",',
|
|
||||||
' "args": [],',
|
|
||||||
' "stopOnEntry": false,',
|
|
||||||
' "environment": []',
|
|
||||||
' }',
|
|
||||||
' ]',
|
|
||||||
'}',
|
|
||||||
}
|
|
||||||
|
|
||||||
local bufnr = vim.api.nvim_get_current_buf()
|
|
||||||
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, template)
|
|
||||||
end, {})
|
|
||||||
|
|
||||||
-- Do not define default fallbacks until I have a better way of handling a default selected configuration.
|
|
||||||
-- I never want to be prompted for a configuration, we should have ae serialized active config which is always run unless changed.
|
|
||||||
-- -- Define configurations
|
|
||||||
-- dap.configurations.cpp = {
|
|
||||||
-- {
|
|
||||||
-- name = "Launch File",
|
|
||||||
-- type = "codelldb",
|
|
||||||
-- request = "launch",
|
|
||||||
-- program = function()
|
|
||||||
-- return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
|
||||||
-- end,
|
|
||||||
-- cwd = "${workspaceFolder}",
|
|
||||||
-- stopOnEntry = false,
|
|
||||||
-- args = {},
|
|
||||||
-- },
|
|
||||||
-- }
|
|
||||||
|
|
@ -1,14 +1,6 @@
|
||||||
local sev = vim.diagnostic.severity
|
local sev = vim.diagnostic.severity
|
||||||
vim.diagnostic.config({
|
vim.diagnostic.config({
|
||||||
-- underline = true,
|
|
||||||
-- This enables the diagnostics at end of line
|
|
||||||
-- virtual_text = {
|
|
||||||
-- prefix = "●",
|
|
||||||
-- },
|
|
||||||
-- Disable this whilst using tiny inline diagnostics
|
|
||||||
virtual_text = false,
|
virtual_text = false,
|
||||||
-- This enables the separate buffer diagnostics
|
|
||||||
-- virtual_lines = true,
|
|
||||||
update_in_insert = true,
|
update_in_insert = true,
|
||||||
signs = {
|
signs = {
|
||||||
text = {
|
text = {
|
||||||
|
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
local M = {}
|
|
||||||
M.format_on_save = true
|
|
||||||
|
|
||||||
function M.format(force)
|
|
||||||
local do_force = force or false
|
|
||||||
if M.format_on_save or do_force then
|
|
||||||
vim.lsp.buf.format()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.format_enable()
|
|
||||||
M.format_on_save = true
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.format_disable()
|
|
||||||
M.format_on_save = false
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.setup()
|
|
||||||
local user_commands = {
|
|
||||||
{ "FormatEnable", "lua require('format_handler').format_enable()" },
|
|
||||||
{ "FormatDisable", "lua require('format_handler').format_disable()" },
|
|
||||||
{ "Format", "lua require('format_handler').format(true)" },
|
|
||||||
}
|
|
||||||
for _, cmd in ipairs(user_commands) do
|
|
||||||
vim.api.nvim_command("command! " .. cmd[1] .. " " .. cmd[2])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
|
|
@ -7,7 +7,7 @@ g.maplocalleader = " "
|
||||||
local move_up = { "v:count || mode(1)[0:1] == \"no\" ? \"k\" : \"gk\"", { expr = true } }
|
local move_up = { "v:count || mode(1)[0:1] == \"no\" ? \"k\" : \"gk\"", { expr = true } }
|
||||||
local move_down = { "v:count || mode(1)[0:1] == \"no\" ? \"j\" : \"gj\"", { expr = true } }
|
local move_down = { "v:count || mode(1)[0:1] == \"no\" ? \"j\" : \"gj\"", { expr = true } }
|
||||||
|
|
||||||
utils.foreach({
|
for _, mode_mapping in ipairs({
|
||||||
{
|
{
|
||||||
"n",
|
"n",
|
||||||
{
|
{
|
||||||
|
|
@ -17,6 +17,7 @@ utils.foreach({
|
||||||
{ "grr", "<Nop>", },
|
{ "grr", "<Nop>", },
|
||||||
{ "gri", "<Nop>", },
|
{ "gri", "<Nop>", },
|
||||||
{ "gO", "<Nop>", },
|
{ "gO", "<Nop>", },
|
||||||
|
{ "grt", "<Nop>", },
|
||||||
-- Navigation
|
-- Navigation
|
||||||
{ "<C-Left>", "<C-w>h", },
|
{ "<C-Left>", "<C-w>h", },
|
||||||
{ "<C-Down>", "<C-w>j", },
|
{ "<C-Down>", "<C-w>j", },
|
||||||
|
|
@ -48,9 +49,6 @@ utils.foreach({
|
||||||
-- Maps to remove
|
-- Maps to remove
|
||||||
{ "<C-z>", "<Nop>", },
|
{ "<C-z>", "<Nop>", },
|
||||||
|
|
||||||
-- Marks are less frequently used than leaping, also, less relevant with arrow and fzf navigation.
|
|
||||||
-- Prioritize regular m for leaping, and <leader>m for setting marks.
|
|
||||||
-- { "<leader>m", "m", },
|
|
||||||
{ "[d", function()
|
{ "[d", function()
|
||||||
vim.diagnostic.jump({ count = -1, float = false })
|
vim.diagnostic.jump({ count = -1, float = false })
|
||||||
end },
|
end },
|
||||||
|
|
@ -66,16 +64,20 @@ utils.foreach({
|
||||||
vim.cmd.normal({ cmd })
|
vim.cmd.normal({ cmd })
|
||||||
end
|
end
|
||||||
end },
|
end },
|
||||||
{ "<C-t>", ":$tabnew %<CR>", { silent = true }, },
|
{ "<C-t>", ":$tabnew %<CR>", { silent = true }, },
|
||||||
-- These are mapped to C-1 through C-5 in ghostty, sending escape codes for F keys
|
{ "<F15>", ":1tabn<CR>", { silent = true }, },
|
||||||
{ "<F5>", ":1tabn<CR>", { silent = true }, },
|
{ "<F16>", ":2tabn<CR>", { silent = true }, },
|
||||||
{ "<F8>", ":2tabn<CR>", { silent = true }, },
|
{ "<F17>", ":3tabn<CR>", { silent = true }, },
|
||||||
{ "<F10>", ":3tabn<CR>", { silent = true }, },
|
{ "<F18>", ":4tabn<CR>", { silent = true }, },
|
||||||
{ "<F11>", ":4tabn<CR>", { silent = true }, },
|
{ "<F19>", ":5tabn<CR>", { silent = true }, },
|
||||||
{ "<F12>", ":5tabn<CR>", { silent = true }, },
|
{ "<F20>", ":6tabn<CR>", { silent = true }, },
|
||||||
|
{ "<F21>", ":7tabn<CR>", { silent = true }, },
|
||||||
|
{ "<F22>", ":8tabn<CR>", { silent = true }, },
|
||||||
|
|
||||||
{ "z/", '/\\%><C-r>=line("w0")-1<CR>l\\%<<C-r>=line("w$")+1<CR>l', { silent = false, desc = "Search in viewport" }, },
|
{ "z/", '/\\%><C-r>=line("w0")-1<CR>l\\%<<C-r>=line("w$")+1<CR>l', { silent = false, desc = "Search in viewport" }, },
|
||||||
{ "z?", '?\\%><C-r>=line("w0")-1<CR>l\\%<<C-r>=line("w$")+1<CR>l', { silent = false, desc = "Search in viewport" }, }
|
{ "z?", '?\\%><C-r>=line("w0")-1<CR>l\\%<<C-r>=line("w$")+1<CR>l', { silent = false, desc = "Search in viewport" }, },
|
||||||
|
|
||||||
|
{ "<leader>u", ":Undotree<CR>", { silent = true } },
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -88,9 +90,6 @@ utils.foreach({
|
||||||
{ "<tab>", ">gv", },
|
{ "<tab>", ">gv", },
|
||||||
{ "<S-tab>", "<gv", },
|
{ "<S-tab>", "<gv", },
|
||||||
|
|
||||||
-- Marks are less frequently used than leaping, also, less relevant with arrow and fzf navigation.
|
|
||||||
-- Prioritize regular m for leaping, and <leader>m for setting marks.
|
|
||||||
{ "<leader>m", "m", },
|
|
||||||
{ "/", "<C-\\><C-n>`</\\%V", },
|
{ "/", "<C-\\><C-n>`</\\%V", },
|
||||||
{ "?", "<C-\\><C-n>`>?\\%V", },
|
{ "?", "<C-\\><C-n>`>?\\%V", },
|
||||||
},
|
},
|
||||||
|
|
@ -111,8 +110,6 @@ utils.foreach({
|
||||||
{ "<C-q>", "<C-\\><C-N>", },
|
{ "<C-q>", "<C-\\><C-N>", },
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}, function(mode_mapping)
|
}) do
|
||||||
local mode = mode_mapping[1]
|
utils.set_keymap_list(mode_mapping[2], mode_mapping[1])
|
||||||
local mappings = mode_mapping[2]
|
end
|
||||||
utils.set_keymap_list(mappings, mode)
|
|
||||||
end)
|
|
||||||
|
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
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,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
vim.opt.rtp:prepend(lazypath)
|
|
||||||
|
|
||||||
-- Initialize plugins, add a plugin by creating a new file in the plugins dir
|
|
||||||
require("lazy").setup("plugs", {
|
|
||||||
git = {
|
|
||||||
timeout = 300
|
|
||||||
},
|
|
||||||
dev = {
|
|
||||||
path = "~/dev/git/",
|
|
||||||
fallback = true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
local inlay_hints_handler = require("inlay_hints_handler")
|
|
||||||
local format_handler = require("format_handler")
|
|
||||||
local utils = require("utils")
|
|
||||||
|
|
||||||
local lsp = vim.lsp.buf
|
|
||||||
local api = vim.api
|
|
||||||
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
function M.configure_generic_client(client, bufnr)
|
|
||||||
inlay_hints_handler.add_buffer(bufnr)
|
|
||||||
|
|
||||||
if client.server_capabilities.documentFormattingProvider then
|
|
||||||
api.nvim_buf_create_user_command(bufnr, "Format", lsp.format, { nargs = 0 })
|
|
||||||
api.nvim_create_autocmd("BufWritePre", {
|
|
||||||
buffer = bufnr,
|
|
||||||
callback = function()
|
|
||||||
format_handler.format()
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Built-in LSP completion.
|
|
||||||
-- Could switch to this if they just appeared automatically when typing, and didn't
|
|
||||||
-- only rely on showing when the servers completionCharacters are typed.
|
|
||||||
-- if client:supports_method("textDocument/completion") then
|
|
||||||
-- vim.lsp.completion.enable(true, client.id, bufnr, { autotrigger = true })
|
|
||||||
-- end
|
|
||||||
|
|
||||||
for mode, keys in pairs({
|
|
||||||
n = {
|
|
||||||
{ "K", function() lsp.hover() end, { buffer = bufnr } },
|
|
||||||
{ "<leader>a", function() lsp.code_action() end, { buffer = bufnr } },
|
|
||||||
},
|
|
||||||
i = {
|
|
||||||
{ "<C-s>", function() lsp.signature_help() end, { buffer = bufnr } },
|
|
||||||
},
|
|
||||||
}) do
|
|
||||||
utils.set_keymap_list(keys, mode)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
|
|
@ -1,14 +1,81 @@
|
||||||
local utils = require("utils")
|
local utils = require("utils")
|
||||||
local lsplib = require("lsplib")
|
local inlay_hints_handler = require("inlay_hints_handler")
|
||||||
|
|
||||||
|
local format_on_save = true
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("FormatEnable", function() format_on_save = true end, {})
|
||||||
|
vim.api.nvim_create_user_command("FormatDisable", function() format_on_save = false end, {})
|
||||||
|
vim.api.nvim_create_user_command("Format", function() vim.lsp.buf.format() end, {})
|
||||||
|
|
||||||
vim.lsp.config("*", {
|
vim.lsp.config("*", {
|
||||||
root_markers = { ".git" },
|
root_markers = { ".git" },
|
||||||
})
|
})
|
||||||
|
|
||||||
local servers = {}
|
local servers = {}
|
||||||
utils.foreach(utils.get_file_names_in_dir("../lsp", "*.lua", true), function(server_name)
|
local lsp_dir = vim.fs.joinpath(vim.fn.stdpath("config"), "lsp")
|
||||||
table.insert(servers, server_name)
|
for name, type in vim.fs.dir(lsp_dir) do
|
||||||
end)
|
if type == "file" and name:match("%.lua$") then
|
||||||
|
table.insert(servers, (name:gsub("%.lua$", "")))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local lsp_pick_ns = vim.api.nvim_create_namespace("lsp_pick")
|
||||||
|
local function lsp_pick(scope)
|
||||||
|
vim.lsp.buf[scope]({
|
||||||
|
on_list = function(options)
|
||||||
|
if #options.items == 1 then
|
||||||
|
local item = options.items[1]
|
||||||
|
vim.cmd("normal! m'")
|
||||||
|
vim.cmd.drop(item.filename)
|
||||||
|
if item.lnum <= vim.api.nvim_buf_line_count(0) then
|
||||||
|
vim.api.nvim_win_set_cursor(0, { item.lnum, (item.col or 1) - 1 })
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local cwd = (vim.uv.cwd() or "") .. "/"
|
||||||
|
local home = (vim.env.HOME or "") .. "/"
|
||||||
|
for _, item in ipairs(options.items) do
|
||||||
|
local icon, icon_hl = MiniIcons.get("file", item.filename)
|
||||||
|
local rel = item.filename
|
||||||
|
if rel:sub(1, #cwd) == cwd then
|
||||||
|
rel = rel:sub(#cwd + 1)
|
||||||
|
elseif rel:sub(1, #home) == home then
|
||||||
|
rel = "~/" .. rel:sub(#home + 1)
|
||||||
|
end
|
||||||
|
local prefix = string.format("%s:%d:%d:", rel, item.lnum, item.col or 0)
|
||||||
|
item.path = item.filename
|
||||||
|
item.icon_hl = icon_hl
|
||||||
|
item.icon_end = #icon
|
||||||
|
item.prefix_end = #icon + 1 + #prefix
|
||||||
|
item.text = string.format("%s %s %s", icon, prefix, vim.trim(item.text or ""))
|
||||||
|
end
|
||||||
|
MiniPick.start({
|
||||||
|
source = {
|
||||||
|
name = string.format("LSP (%s)", scope),
|
||||||
|
items = options.items,
|
||||||
|
show = function(buf_id, items_to_show, query)
|
||||||
|
MiniPick.default_show(buf_id, items_to_show, query)
|
||||||
|
vim.api.nvim_buf_clear_namespace(buf_id, lsp_pick_ns, 0, -1)
|
||||||
|
for i, item in ipairs(items_to_show) do
|
||||||
|
vim.api.nvim_buf_set_extmark(buf_id, lsp_pick_ns, i - 1, 0, {
|
||||||
|
end_col = item.icon_end,
|
||||||
|
hl_group = item.icon_hl,
|
||||||
|
priority = 200,
|
||||||
|
})
|
||||||
|
vim.api.nvim_buf_set_extmark(buf_id, lsp_pick_ns, i - 1, item.icon_end + 1, {
|
||||||
|
end_col = item.prefix_end,
|
||||||
|
hl_group = "Comment",
|
||||||
|
priority = 200,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
preview = MiniPick.default_preview,
|
||||||
|
choose = MiniPick.default_choose,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
vim.lsp.enable(servers)
|
vim.lsp.enable(servers)
|
||||||
vim.api.nvim_create_autocmd("LspAttach", {
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
|
@ -17,6 +84,33 @@ vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
local bufnr = args.buf
|
local bufnr = args.buf
|
||||||
assert(client, "LspAttach: client is nil")
|
assert(client, "LspAttach: client is nil")
|
||||||
|
|
||||||
lsplib.configure_generic_client(client, bufnr)
|
inlay_hints_handler.add_buffer(bufnr)
|
||||||
end
|
|
||||||
|
if client:supports_method("textDocument/formatting") then
|
||||||
|
vim.api.nvim_buf_create_user_command(bufnr, "Format", vim.lsp.buf.format, { nargs = 0 })
|
||||||
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||||
|
buffer = bufnr,
|
||||||
|
callback = function()
|
||||||
|
if format_on_save then vim.lsp.buf.format() end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
for mode, keys in pairs({
|
||||||
|
n = {
|
||||||
|
{ "K", function() vim.lsp.buf.hover() end, { buf = bufnr } },
|
||||||
|
{ "<leader>a", function() vim.lsp.buf.code_action() end, { buf = bufnr } },
|
||||||
|
{ "gd", function() lsp_pick("definition") end, { buf = bufnr } },
|
||||||
|
{ "gD", function() lsp_pick("declaration") end, { buf = bufnr } },
|
||||||
|
{ "gr", function() lsp_pick("references") end, { buf = bufnr, nowait = true } },
|
||||||
|
{ "gi", function() lsp_pick("implementation") end, { buf = bufnr } },
|
||||||
|
{ "gt", function() lsp_pick("type_definition") end, { buf = bufnr } },
|
||||||
|
},
|
||||||
|
i = {
|
||||||
|
{ "<C-s>", function() vim.lsp.buf.signature_help() end, { buf = bufnr } },
|
||||||
|
},
|
||||||
|
}) do
|
||||||
|
utils.set_keymap_list(keys, mode)
|
||||||
|
end
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
return {
|
|
||||||
"saghen/blink.cmp",
|
|
||||||
dependencies = {
|
|
||||||
{
|
|
||||||
"L3MON4D3/LuaSnip",
|
|
||||||
version = "v2.*",
|
|
||||||
dependencies = { "rafamadriz/friendly-snippets", },
|
|
||||||
config = function()
|
|
||||||
local ls = require("luasnip")
|
|
||||||
require("luasnip.loaders.from_vscode").lazy_load()
|
|
||||||
|
|
||||||
ls.filetype_extend("typescriptreact", { "html" })
|
|
||||||
ls.filetype_extend("javascriptreact", { "html" })
|
|
||||||
|
|
||||||
ls.config.set_config({
|
|
||||||
enable_autosnippets = false,
|
|
||||||
store_selection_keys = false,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
},
|
|
||||||
},
|
|
||||||
version = "1.*",
|
|
||||||
opts = {
|
|
||||||
keymap = { preset = "super-tab" },
|
|
||||||
|
|
||||||
appearance = {
|
|
||||||
nerd_font_variant = "mono"
|
|
||||||
},
|
|
||||||
|
|
||||||
-- (Default) Only show the documentation popup when manually triggered
|
|
||||||
completion = {
|
|
||||||
documentation = {
|
|
||||||
auto_show = false,
|
|
||||||
},
|
|
||||||
menu = {
|
|
||||||
draw = {
|
|
||||||
-- We don't need label_description now because label and label_description are already
|
|
||||||
-- combined together in label by colorful-menu.nvim.
|
|
||||||
columns = { { "kind_icon" }, { "label", gap = 1 } },
|
|
||||||
components = {
|
|
||||||
label = {
|
|
||||||
text = function(ctx)
|
|
||||||
return require("colorful-menu").blink_components_text(ctx)
|
|
||||||
end,
|
|
||||||
highlight = function(ctx)
|
|
||||||
return require("colorful-menu").blink_components_highlight(ctx)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
snippets = {
|
|
||||||
preset = "luasnip",
|
|
||||||
-- Disable snippet navigation while keeping expansion
|
|
||||||
active = function() return false end,
|
|
||||||
},
|
|
||||||
-- Default list of enabled providers defined so that you can extend it
|
|
||||||
-- elsewhere in your config, without redefining it, due to `opts_extend`
|
|
||||||
sources = {
|
|
||||||
default = { "lsp", "path", "snippets", "buffer", },
|
|
||||||
per_filetype = {
|
|
||||||
codecompanion = { "codecompanion", },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
|
|
||||||
-- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
|
|
||||||
-- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
|
|
||||||
--
|
|
||||||
-- See the fuzzy documentation for more information
|
|
||||||
fuzzy = { implementation = "prefer_rust_with_warning" }
|
|
||||||
},
|
|
||||||
opts_extend = { "sources.default" },
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
return {
|
|
||||||
"esmuellert/codediff.nvim",
|
|
||||||
dependencies = { "MunifTanjim/nui.nvim" },
|
|
||||||
cmd = "CodeDiff",
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
return {
|
|
||||||
"xzbdmw/colorful-menu.nvim",
|
|
||||||
opts = {},
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
return {
|
|
||||||
"mawkler/demicolon.nvim",
|
|
||||||
dependenies = {
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
"nvim-treesitter/nvim-treesitter-textobjects",
|
|
||||||
},
|
|
||||||
opts = {
|
|
||||||
keymaps = {
|
|
||||||
repeat_motions = "stateful",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
return {
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
event = "VeryLazy",
|
|
||||||
lazy = true,
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
return {
|
|
||||||
"dmtrKovalenko/fff.nvim",
|
|
||||||
build = "nix run .#release",
|
|
||||||
lazy = false,
|
|
||||||
keys = {
|
|
||||||
{
|
|
||||||
"<leader>f",
|
|
||||||
function() require("fff").find_files() end,
|
|
||||||
desc = "FFFind files",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
local close_handler = require("close_handler")
|
|
||||||
|
|
||||||
local close_cb_handle = 0
|
|
||||||
|
|
||||||
return {
|
|
||||||
"rmagatti/goto-preview",
|
|
||||||
dependencies = { "rmagatti/logger.nvim" },
|
|
||||||
event = "BufEnter",
|
|
||||||
config = true, -- necessary as per https://github.com/rmagatti/goto-preview/issues/88
|
|
||||||
opts = {
|
|
||||||
post_open_hook = function(_, _)
|
|
||||||
close_cb_handle = close_handler.register_on_close_cb(function()
|
|
||||||
require("goto-preview").close_all_win()
|
|
||||||
end)
|
|
||||||
end,
|
|
||||||
post_close_hook = function(_, _)
|
|
||||||
close_handler.remove_on_close_cb(close_cb_handle)
|
|
||||||
end,
|
|
||||||
border = { "↖", "─", "┐", "│", "┘", "─", "└", "│" },
|
|
||||||
focus_on_open = true,
|
|
||||||
stack_floating_preview_windows = false,
|
|
||||||
preview_window_title = { enable = true, position = "left" },
|
|
||||||
vim_ui_input = false,
|
|
||||||
},
|
|
||||||
keys = {
|
|
||||||
{ "gp", function() require("goto-preview").goto_preview_definition() end, },
|
|
||||||
{ "gy", function() require("goto-preview").goto_preview_type_definition() end, },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,115 +0,0 @@
|
||||||
local utils = require("utils")
|
|
||||||
|
|
||||||
return {
|
|
||||||
"b0o/incline.nvim",
|
|
||||||
dependencies = {
|
|
||||||
{
|
|
||||||
"lewis6991/gitsigns.nvim",
|
|
||||||
opts = {},
|
|
||||||
keys = {
|
|
||||||
{ "[g", function() require("gitsigns").nav_hunk("prev") end, },
|
|
||||||
{ "]g", function() require("gitsigns").nav_hunk("next") end, },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
local function setup_incline()
|
|
||||||
require("incline").setup({
|
|
||||||
window = {
|
|
||||||
padding = 0,
|
|
||||||
},
|
|
||||||
hide = {
|
|
||||||
cursorline = true,
|
|
||||||
},
|
|
||||||
render = function(props)
|
|
||||||
local fullpath = vim.api.nvim_buf_get_name(props.buf)
|
|
||||||
local filename = vim.fn.fnamemodify(fullpath, ":t")
|
|
||||||
if filename == "" then
|
|
||||||
filename = "[No Name]"
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_ft_icon()
|
|
||||||
local ft_icon, ft_color = require("nvim-web-devicons").get_icon_color(filename)
|
|
||||||
return { (ft_icon or "") .. " ", guifg = ft_color, guibg = "none" }
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_file_path()
|
|
||||||
local path_display = ""
|
|
||||||
if fullpath == "" then
|
|
||||||
path_display = filename
|
|
||||||
else
|
|
||||||
local parts = {}
|
|
||||||
for part in string.gmatch(vim.fn.fnamemodify(fullpath, ":.:h"), "[^/]+") do
|
|
||||||
table.insert(parts, part)
|
|
||||||
end
|
|
||||||
|
|
||||||
local ellipsis = "…"
|
|
||||||
local max_path_parts = 2
|
|
||||||
if #parts > max_path_parts then
|
|
||||||
local start_index = #parts - max_path_parts + 1
|
|
||||||
path_display = ellipsis .. "/" .. table.concat(parts, "/", start_index)
|
|
||||||
elseif #parts > 0 then
|
|
||||||
path_display = table.concat(parts, "/")
|
|
||||||
end
|
|
||||||
|
|
||||||
if path_display ~= "" then
|
|
||||||
path_display = path_display .. "/" .. filename
|
|
||||||
else
|
|
||||||
path_display = filename
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return { path_display .. " ┊", gui = vim.bo[props.buf].modified and "bold,italic" or "bold" }
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_git_diff()
|
|
||||||
local icons = { removed = "", changed = "", added = "" }
|
|
||||||
local signs = vim.b[props.buf].gitsigns_status_dict
|
|
||||||
local labels = {}
|
|
||||||
if signs == nil then
|
|
||||||
return labels
|
|
||||||
end
|
|
||||||
for name, icon in pairs(icons) do
|
|
||||||
if tonumber(signs[name]) and signs[name] > 0 then
|
|
||||||
table.insert(labels, { icon .. " " .. signs[name] .. " ", group = "Diff" .. name })
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if #labels > 0 then
|
|
||||||
table.insert(labels, { "┊ " })
|
|
||||||
end
|
|
||||||
return labels
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_diagnostic_label()
|
|
||||||
local icons = { error = "", warn = "", info = "", hint = "" }
|
|
||||||
local label = {}
|
|
||||||
|
|
||||||
for severity, icon in pairs(icons) do
|
|
||||||
local n = #vim.diagnostic.get(props.buf,
|
|
||||||
{ severity = vim.diagnostic.severity[string.upper(severity)] })
|
|
||||||
if n > 0 then
|
|
||||||
table.insert(label, { icon .. " " .. n .. " ", group = "DiagnosticSign" .. severity })
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if #label > 0 then
|
|
||||||
table.insert(label, { "┊ " })
|
|
||||||
end
|
|
||||||
return label
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
|
||||||
{ " " },
|
|
||||||
{ get_diagnostic_label() },
|
|
||||||
{ get_git_diff() },
|
|
||||||
{ get_ft_icon() },
|
|
||||||
{ get_file_path() },
|
|
||||||
{ " " }
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
utils.create_user_event_cb("ColorsyncThemeChanged", setup_incline, "ColorsyncEvents")
|
|
||||||
setup_incline()
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
return {
|
|
||||||
{
|
|
||||||
"folke/lazydev.nvim",
|
|
||||||
ft = "lua",
|
|
||||||
opts = {
|
|
||||||
library = {
|
|
||||||
-- See the configuration section for more details
|
|
||||||
-- Load luvit types when the `vim.uv` word is found
|
|
||||||
{ path = "${3rd}/luv/library", words = { "vim%.uv" } },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"saghen/blink.cmp",
|
|
||||||
opts = {
|
|
||||||
sources = {
|
|
||||||
-- add lazydev to your completion providers
|
|
||||||
default = { "lazydev", "lsp", "path", "snippets", "buffer" },
|
|
||||||
providers = {
|
|
||||||
lazydev = {
|
|
||||||
name = "LazyDev",
|
|
||||||
module = "lazydev.integrations.blink",
|
|
||||||
-- make lazydev completions top priority (see `:h blink.cmp`)
|
|
||||||
score_offset = 100,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
return {
|
|
||||||
"saecki/live-rename.nvim",
|
|
||||||
opts = {
|
|
||||||
-- Send a `textDocument/prepareRename` request to the server to
|
|
||||||
-- determine the word to be renamed, can be slow on some servers.
|
|
||||||
-- Otherwise fallback to using `<cword>`.
|
|
||||||
prepare_rename = true,
|
|
||||||
--- The timeout for the `textDocument/prepareRename` request and final
|
|
||||||
--- `textDocument/rename` request when submitting.
|
|
||||||
request_timeout = 1500,
|
|
||||||
-- Make an initial `textDocument/rename` request to gather other
|
|
||||||
-- occurences which are edited and use these ranges to preview.
|
|
||||||
-- If disabled only the word under the cursor will have a preview.
|
|
||||||
show_other_ocurrences = true,
|
|
||||||
-- Try to infer patterns from the initial `textDocument/rename` request
|
|
||||||
-- and use these to show hopefully better edit previews.
|
|
||||||
use_patterns = true,
|
|
||||||
-- The register which is used to temporarily record a macro into. This
|
|
||||||
-- macro can then be executed on other symbols using the `macrorepeat`
|
|
||||||
-- rename option.
|
|
||||||
scratch_register = "l",
|
|
||||||
keys = {
|
|
||||||
submit = {
|
|
||||||
{ "n", "<cr>" },
|
|
||||||
{ "v", "<cr>" },
|
|
||||||
{ "i", "<cr>" },
|
|
||||||
},
|
|
||||||
cancel = {
|
|
||||||
{ "n", "<esc>" },
|
|
||||||
{ "n", "q" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
hl = {
|
|
||||||
current = "CurSearch",
|
|
||||||
others = "Search",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
,
|
|
||||||
keys = {
|
|
||||||
{ "<leader>r", function()
|
|
||||||
require("live-rename").rename({ cursorpos = 0 })
|
|
||||||
end },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
local utils = require("utils")
|
|
||||||
|
|
||||||
local function resize_mode()
|
|
||||||
if require("window_management").is_in_resizing_mode() then
|
|
||||||
return "▲ Resizing ▼ "
|
|
||||||
else
|
|
||||||
return " "
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local tabs = {
|
|
||||||
"tabs",
|
|
||||||
use_mode_colors = true,
|
|
||||||
tabs_color = {
|
|
||||||
active = "lualine_b_command",
|
|
||||||
},
|
|
||||||
show_modified_status = false,
|
|
||||||
component_separators = {
|
|
||||||
left = "",
|
|
||||||
right = ""
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
"nvim-lualine/lualine.nvim",
|
|
||||||
dependencies = {
|
|
||||||
"nvim-tree/nvim-web-devicons"
|
|
||||||
},
|
|
||||||
event = "VeryLazy",
|
|
||||||
lazy = true,
|
|
||||||
config = function()
|
|
||||||
local function setup_lualine()
|
|
||||||
require("lualine").setup({
|
|
||||||
options = {
|
|
||||||
theme = require("norrsken.integrations.lualine"),
|
|
||||||
globalstatus = true,
|
|
||||||
section_separators = {
|
|
||||||
left = "",
|
|
||||||
right = "",
|
|
||||||
},
|
|
||||||
component_separators = {
|
|
||||||
left = "",
|
|
||||||
right = ""
|
|
||||||
},
|
|
||||||
icons_enabled = true,
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = { "mode" },
|
|
||||||
lualine_b = {
|
|
||||||
"branch",
|
|
||||||
{
|
|
||||||
"diagnostics",
|
|
||||||
sources = { "nvim_lsp" },
|
|
||||||
sections = { "error", "warn", "info", "hint" },
|
|
||||||
update_in_insert = false,
|
|
||||||
},
|
|
||||||
resize_mode,
|
|
||||||
},
|
|
||||||
lualine_c = { tabs },
|
|
||||||
lualine_x = { "encoding", "fileformat", "filetype" },
|
|
||||||
lualine_y = { "progress" },
|
|
||||||
lualine_z = { "location" }
|
|
||||||
},
|
|
||||||
inactive_sections = {
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_c = {},
|
|
||||||
lualine_x = {},
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {}
|
|
||||||
},
|
|
||||||
tabline = {},
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
utils.create_user_event_cb("ColorsyncThemeChanged", setup_lualine, "ColorsyncEvents")
|
|
||||||
setup_lualine()
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
return {
|
|
||||||
"OXY2DEV/markview.nvim",
|
|
||||||
lazy = false,
|
|
||||||
priority = 49,
|
|
||||||
dependencies = {
|
|
||||||
"saghen/blink.cmp"
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
return {
|
|
||||||
"NeogitOrg/neogit",
|
|
||||||
event = "VeryLazy",
|
|
||||||
lazy = true,
|
|
||||||
opts = {},
|
|
||||||
keys = {
|
|
||||||
{ "<leader>v", function() require("neogit").open() end }
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
return {
|
|
||||||
"folke/noice.nvim",
|
|
||||||
event = "VeryLazy",
|
|
||||||
lazy = true,
|
|
||||||
dependencies = {
|
|
||||||
{ "MunifTanjim/nui.nvim", lazy = true },
|
|
||||||
},
|
|
||||||
opts = {
|
|
||||||
lsp = {
|
|
||||||
override = {
|
|
||||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
|
||||||
["vim.lsp.util.stylize_markdown"] = true,
|
|
||||||
},
|
|
||||||
signature = {
|
|
||||||
auto_open = true,
|
|
||||||
opts = {
|
|
||||||
position = {
|
|
||||||
row = 2,
|
|
||||||
col = 0,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
presets = {
|
|
||||||
bottom_search = true, -- use a classic bottom cmdline for search
|
|
||||||
command_palette = false, -- position the cmdline and popupmenu together
|
|
||||||
long_message_to_split = true, -- long messages will be sent to a split
|
|
||||||
inc_rename = true, -- enables an input dialog for inc-rename.nvim
|
|
||||||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
|
||||||
},
|
|
||||||
notify = {
|
|
||||||
level = "warn",
|
|
||||||
},
|
|
||||||
views = {
|
|
||||||
cmdline_popup = {
|
|
||||||
border = {
|
|
||||||
style = "single",
|
|
||||||
padding = { 0, 0 },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
cmdline_popupmenu = {
|
|
||||||
border = {
|
|
||||||
style = "single",
|
|
||||||
padding = { 0, 0 },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
hover = {
|
|
||||||
border = {
|
|
||||||
style = "single",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
confirm = {
|
|
||||||
border = {
|
|
||||||
style = "single",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
popup = {
|
|
||||||
border = {
|
|
||||||
style = "single",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
return {
|
|
||||||
"LarssonMartin1998/nvim-norrsken",
|
|
||||||
priority = 1010,
|
|
||||||
opts = {
|
|
||||||
integrations = {
|
|
||||||
lualine = true,
|
|
||||||
blink = true,
|
|
||||||
noice = true,
|
|
||||||
incline = true,
|
|
||||||
neogit = true,
|
|
||||||
tiny_inline_diagnostics = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,130 +0,0 @@
|
||||||
local utils = require("utils")
|
|
||||||
local inlay_hints_handler = require("inlay_hints_handler")
|
|
||||||
|
|
||||||
local is_debug_mode_active = false
|
|
||||||
return {
|
|
||||||
"mfussenegger/nvim-dap",
|
|
||||||
dependencies = {
|
|
||||||
{
|
|
||||||
"rcarriga/nvim-dap-ui",
|
|
||||||
opts = {
|
|
||||||
controls = {
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
layouts = {
|
|
||||||
{
|
|
||||||
elements = {
|
|
||||||
{
|
|
||||||
id = "watches",
|
|
||||||
size = 0.5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id = "stacks",
|
|
||||||
size = 0.5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
position = "bottom",
|
|
||||||
size = 15
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
-- Special adapters
|
|
||||||
{ "leoluz/nvim-dap-go", opts = {} },
|
|
||||||
|
|
||||||
{ "nvim-neotest/nvim-nio", lazy = true },
|
|
||||||
{ "LiadOz/nvim-dap-repl-highlights", opts = {} },
|
|
||||||
{ "theHamsta/nvim-dap-virtual-text", opts = {} },
|
|
||||||
{ "Weissle/persistent-breakpoints.nvim", opts = { load_breakpoints_event = { "BufReadPost" } } },
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
local dap = require("dap")
|
|
||||||
|
|
||||||
local virtual_text = require("nvim-dap-virtual-text/virtual_text")
|
|
||||||
local breakpoint_api = require("persistent-breakpoints.api")
|
|
||||||
|
|
||||||
local stepping_keymaps = {
|
|
||||||
{ "<F10>", function() dap.step_over() end },
|
|
||||||
{ "<F11>", function() dap.step_into() end },
|
|
||||||
{ "<F12>", function() dap.step_out() end },
|
|
||||||
{
|
|
||||||
"<leader>dc",
|
|
||||||
function()
|
|
||||||
local columns = vim.o.columns
|
|
||||||
local lines = vim.o.lines
|
|
||||||
|
|
||||||
require("dapui").float_element("console", {
|
|
||||||
enter = true,
|
|
||||||
title = "output",
|
|
||||||
border = "rounded",
|
|
||||||
position = "center",
|
|
||||||
width = math.floor(columns * 0.8),
|
|
||||||
height = math.floor(lines * 0.6),
|
|
||||||
})
|
|
||||||
end
|
|
||||||
},
|
|
||||||
}
|
|
||||||
local dap_signs = {
|
|
||||||
{ "DapBreakpoint", { text = "🛑", texthl = "", linehl = "", numhl = "" } },
|
|
||||||
{ "DapBreakpointRejected", { text = "🔵", texthl = "", linehl = "", numhl = "" } },
|
|
||||||
{ "DapBreakpointCondition", { text = "🟥", texthl = "", linehl = "", numhl = "" } },
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, sign in ipairs(dap_signs) do
|
|
||||||
vim.fn.sign_define(unpack(sign))
|
|
||||||
end
|
|
||||||
|
|
||||||
local function enter_debug_mode()
|
|
||||||
if is_debug_mode_active then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
utils.set_keymap_list(stepping_keymaps)
|
|
||||||
is_debug_mode_active = true
|
|
||||||
|
|
||||||
inlay_hints_handler.disable()
|
|
||||||
require("dapui").open()
|
|
||||||
end
|
|
||||||
|
|
||||||
local function exit_debug_mode()
|
|
||||||
if not is_debug_mode_active then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
utils.del_keymap_list(stepping_keymaps)
|
|
||||||
is_debug_mode_active = false
|
|
||||||
|
|
||||||
inlay_hints_handler.restore()
|
|
||||||
virtual_text.clear_virtual_text()
|
|
||||||
require("dapui").close()
|
|
||||||
end
|
|
||||||
|
|
||||||
for _, request in ipairs({
|
|
||||||
{ "attach", enter_debug_mode },
|
|
||||||
{ "launch", enter_debug_mode },
|
|
||||||
}) do
|
|
||||||
dap.listeners.before[request[1]]["dapui_config"] = request[2]
|
|
||||||
end
|
|
||||||
|
|
||||||
for _, event in ipairs({
|
|
||||||
{ "event_terminated", exit_debug_mode },
|
|
||||||
{ "event_exited", exit_debug_mode },
|
|
||||||
}) do
|
|
||||||
dap.listeners.after[event[1]]["dapui_config"] = event[2]
|
|
||||||
end
|
|
||||||
|
|
||||||
local function dap_stop()
|
|
||||||
dap.terminate()
|
|
||||||
dap.close()
|
|
||||||
exit_debug_mode()
|
|
||||||
end
|
|
||||||
|
|
||||||
utils.set_keymap_list({
|
|
||||||
{ "<leader>dr", dap.continue },
|
|
||||||
{ "<leader>bt", breakpoint_api.toggle_breakpoint },
|
|
||||||
{ "<leader>bc", breakpoint_api.set_conditional_breakpoint },
|
|
||||||
{ "<leader>br", breakpoint_api.clear_all_breakpoints },
|
|
||||||
{ "<leader>ds", dap_stop },
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
return {
|
|
||||||
"kosayoda/nvim-lightbulb",
|
|
||||||
opts = {
|
|
||||||
hide_in_unfocused_buffer = true,
|
|
||||||
code_lenses = true,
|
|
||||||
sign = { enabled = true, },
|
|
||||||
virtual_text = { enabled = false, },
|
|
||||||
float = { enabled = false, },
|
|
||||||
status_text = { enabled = false, },
|
|
||||||
autocmd = { enabled = true, updatetime = 25, },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
return {
|
|
||||||
"folke/persistence.nvim",
|
|
||||||
event = "BufReadPre", -- this will only start session saving when an actual file was opened
|
|
||||||
opts = {}
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
return {
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
branch = "master",
|
|
||||||
lazy = true,
|
|
||||||
}
|
|
||||||
|
|
@ -1,177 +0,0 @@
|
||||||
return {
|
|
||||||
"folke/snacks.nvim",
|
|
||||||
priority = 1000,
|
|
||||||
lazy = false,
|
|
||||||
opts = {
|
|
||||||
styles = {
|
|
||||||
notification = { border = "single", },
|
|
||||||
notification_history = { border = "single", },
|
|
||||||
blame_line = { border = "single", },
|
|
||||||
input = { border = "single", },
|
|
||||||
scratch = { border = "single", },
|
|
||||||
snacks_image = { border = "single", },
|
|
||||||
},
|
|
||||||
gitbrowse = {
|
|
||||||
enabled = true,
|
|
||||||
what = "branch",
|
|
||||||
},
|
|
||||||
picker = {
|
|
||||||
enabled = true,
|
|
||||||
ui_select = true,
|
|
||||||
formatters = {
|
|
||||||
filename_first = true,
|
|
||||||
truncate = 40,
|
|
||||||
filename_only = false,
|
|
||||||
icon_width = 2,
|
|
||||||
git_status_hl = true,
|
|
||||||
},
|
|
||||||
sources = {
|
|
||||||
recent = {
|
|
||||||
filter = {
|
|
||||||
cwd = true,
|
|
||||||
paths = {
|
|
||||||
[vim.fn.stdpath("data")] = false,
|
|
||||||
[vim.fn.stdpath("cache")] = false,
|
|
||||||
[vim.fn.stdpath("state")] = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
files = {
|
|
||||||
hidden = true,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
win = {
|
|
||||||
input = { border = "single", },
|
|
||||||
list = { border = "single", },
|
|
||||||
preview = { border = "single", },
|
|
||||||
},
|
|
||||||
layouts = {
|
|
||||||
default = {
|
|
||||||
layout = {
|
|
||||||
backdrop = false,
|
|
||||||
row = 1,
|
|
||||||
width = 0.6,
|
|
||||||
min_width = 80,
|
|
||||||
height = 0.95,
|
|
||||||
border = "none",
|
|
||||||
box = "vertical",
|
|
||||||
{
|
|
||||||
box = "vertical",
|
|
||||||
border = "single",
|
|
||||||
title = "{title} {live} {flags}",
|
|
||||||
title_pos = "center",
|
|
||||||
{ win = "input", height = 1, border = "bottom" },
|
|
||||||
{ win = "list", border = "none" },
|
|
||||||
},
|
|
||||||
{ win = "preview", title = "{preview}", height = 0.65, border = "single" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
select = {
|
|
||||||
preview = false,
|
|
||||||
layout = {
|
|
||||||
backdrop = false,
|
|
||||||
width = 0.5,
|
|
||||||
min_width = 80,
|
|
||||||
height = 0.4,
|
|
||||||
min_height = 3,
|
|
||||||
box = "vertical",
|
|
||||||
border = "single",
|
|
||||||
title = "{title}",
|
|
||||||
title_pos = "center",
|
|
||||||
{ win = "input", height = 1, border = "bottom" },
|
|
||||||
{ win = "list", border = "none" },
|
|
||||||
{ win = "preview", title = "{preview}", height = 0.4, border = "top" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
dashboard = {
|
|
||||||
enabled = true,
|
|
||||||
preset = {
|
|
||||||
keys = {
|
|
||||||
{ icon = " ", key = "f", desc = "Find File", action = ":lua Snacks.dashboard.pick('files')" },
|
|
||||||
{ icon = " ", key = "n", desc = "New File", action = ":ene | startinsert" },
|
|
||||||
{ icon = " ", key = "g", desc = "Find Text", action = ":lua Snacks.dashboard.pick('live_grep')" },
|
|
||||||
{ icon = " ", key = "c", desc = "Config", action = ":lua Snacks.dashboard.pick('files', {cwd = vim.fn.stdpath('config')})" },
|
|
||||||
{ icon = " ", key = "s", desc = "Restore Session", section = "session" },
|
|
||||||
{ icon = " ", key = "L", desc = "Lazy", action = ":Lazy", enabled = package.loaded.lazy ~= nil },
|
|
||||||
{ icon = " ", key = "q", desc = "Quit", action = ":qa" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
debug = { enabled = true, },
|
|
||||||
indent = {
|
|
||||||
enabled = true,
|
|
||||||
animate = {
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
input = { enabled = true, },
|
|
||||||
notifier = {
|
|
||||||
enabled = true,
|
|
||||||
padding = false,
|
|
||||||
},
|
|
||||||
quickfile = { enabled = true, },
|
|
||||||
scroll = {
|
|
||||||
enabled = false,
|
|
||||||
animate = {
|
|
||||||
duration = { step = 5, total = 500 },
|
|
||||||
easing = "outCirc",
|
|
||||||
},
|
|
||||||
animate_repeat = {
|
|
||||||
delay = 100,
|
|
||||||
duration = { step = 3, total = 50 },
|
|
||||||
easing = "outCirc",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
words = {
|
|
||||||
enabled = true,
|
|
||||||
debounce = 100,
|
|
||||||
},
|
|
||||||
zen = {
|
|
||||||
enabled = false,
|
|
||||||
toggles = { dim = false, },
|
|
||||||
on_open = function()
|
|
||||||
_G["snacks_zen_mode"] = true
|
|
||||||
end,
|
|
||||||
on_close = function()
|
|
||||||
_G["snacks_zen_mode"] = false
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
keys = {
|
|
||||||
{ "gB", function() Snacks.gitbrowse() end, },
|
|
||||||
|
|
||||||
{ "<leader>z", function() Snacks.zen() end, },
|
|
||||||
|
|
||||||
{ "<leader>g", function() Snacks.picker.grep() end, },
|
|
||||||
{ "<leader>b", function() Snacks.picker.buffers() end, },
|
|
||||||
{ "<leader>l", function() Snacks.picker.git_log_file() end, },
|
|
||||||
{ "<leader>o", function() Snacks.picker.lsp_workspace_symbols() end, },
|
|
||||||
{ "<leader>s", function() Snacks.picker.lsp_symbols() end, },
|
|
||||||
{ "<leader>n", function() Snacks.picker.notifications({ win = { preview = { wo = { wrap = true } } } }) end },
|
|
||||||
{ "<leader>d", function() Snacks.picker.diagnostics({ win = { preview = { wo = { wrap = true } } } }) end },
|
|
||||||
|
|
||||||
{ "<leader>e", function() Snacks.rename.rename_file({}) end },
|
|
||||||
|
|
||||||
{ "gd", function() Snacks.picker.lsp_definitions() end, },
|
|
||||||
{ "gD", function() Snacks.picker.lsp_declarations() end, },
|
|
||||||
{ "gr", function() Snacks.picker.lsp_references() end, nowait = true, },
|
|
||||||
{ "gi", function() Snacks.picker.lsp_implementations() end, },
|
|
||||||
{ "gt", function() Snacks.picker.lsp_type_definitions() end, },
|
|
||||||
},
|
|
||||||
init = function()
|
|
||||||
vim.api.nvim_create_autocmd("User", {
|
|
||||||
pattern = "VeryLazy",
|
|
||||||
callback = function()
|
|
||||||
_G.inspect = function(...)
|
|
||||||
Snacks.debug.inspect(...)
|
|
||||||
end
|
|
||||||
_G.backtrace = function()
|
|
||||||
Snacks.debug.backtrace()
|
|
||||||
end
|
|
||||||
vim.print = _G.inspect
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
return {
|
|
||||||
"kylechui/nvim-surround",
|
|
||||||
version = "*",
|
|
||||||
event = "VeryLazy",
|
|
||||||
lazy = true,
|
|
||||||
opts = {
|
|
||||||
-- Make sure that we never get whitespaces when adding surroundings
|
|
||||||
surrounds = {
|
|
||||||
["("] = { add = { "(", ")" }, },
|
|
||||||
["{"] = { add = { "{", "}" }, },
|
|
||||||
["<"] = { add = { "<", ">" }, },
|
|
||||||
["["] = { add = { "[", "]" }, },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
return {
|
|
||||||
"rachartier/tiny-glimmer.nvim",
|
|
||||||
opts = {
|
|
||||||
refresh_interval_ms = 6,
|
|
||||||
overwrite = {
|
|
||||||
auto_map = true,
|
|
||||||
paste = {
|
|
||||||
enabled = true,
|
|
||||||
default_animation = {
|
|
||||||
name = "fade",
|
|
||||||
settings = {
|
|
||||||
from_color = "DiffText",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
undo = {
|
|
||||||
enabled = true,
|
|
||||||
default_animation = {
|
|
||||||
name = "fade",
|
|
||||||
settings = {
|
|
||||||
from_color = "DiffDelete",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
redo = {
|
|
||||||
enabled = true,
|
|
||||||
default_animation = {
|
|
||||||
name = "fade",
|
|
||||||
settings = {
|
|
||||||
from_color = "DiffAdd",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
animations = {
|
|
||||||
fade = {
|
|
||||||
chars_for_max_duration = 1,
|
|
||||||
to_color = "Folded"
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
return {
|
|
||||||
"rachartier/tiny-inline-diagnostic.nvim",
|
|
||||||
event = "VeryLazy",
|
|
||||||
priority = 1000,
|
|
||||||
config = function()
|
|
||||||
require("tiny-inline-diagnostic").setup({
|
|
||||||
preset = "modern",
|
|
||||||
transparent_bg = false,
|
|
||||||
transparent_cursorline = false,
|
|
||||||
options = {
|
|
||||||
multilines = {
|
|
||||||
enabled = true,
|
|
||||||
always_show = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
vim.diagnostic.config({ virtual_text = false })
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
@ -1,120 +0,0 @@
|
||||||
local function ts_select(query)
|
|
||||||
return function() require("nvim-treesitter-textobjects.select").select_textobject(query, "textobjects") end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function ts_move_prev(query)
|
|
||||||
return function() require("nvim-treesitter-textobjects.move").goto_previous_start(query, "textobjects") end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function ts_move_next(query)
|
|
||||||
return function() require("nvim-treesitter-textobjects.move").goto_next_start(query, "textobjects") end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- TODO: Move away from master branch after updating to Neovim 0.12 and use the rewrite
|
|
||||||
return {
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
|
||||||
branch = "master",
|
|
||||||
build = ":TSUpdate",
|
|
||||||
dependencies = {
|
|
||||||
{
|
|
||||||
"nvim-treesitter/nvim-treesitter-context",
|
|
||||||
opts = {
|
|
||||||
max_lines = 2, -- How many lines the window should span. Values <= 0 mean no limit.
|
|
||||||
multiline_threshold = 3, -- Maximum number of lines to show for a single context
|
|
||||||
trim_scope = "inner", -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"nvim-treesitter/nvim-treesitter-textobjects",
|
|
||||||
branch = "main",
|
|
||||||
init = function()
|
|
||||||
-- Disable entire built-in ftplugin mappings to avoid conflicts.
|
|
||||||
-- See https://github.com/neovim/neovim/tree/master/runtime/ftplugin for built-in ftplugins.
|
|
||||||
vim.g.no_plugin_maps = true
|
|
||||||
end,
|
|
||||||
opts = {
|
|
||||||
select = {
|
|
||||||
lookahead = true,
|
|
||||||
},
|
|
||||||
move = {
|
|
||||||
set_jumps = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
keys = {
|
|
||||||
-- select
|
|
||||||
{ "ic", ts_select("@class.inner"), mode = { "x", "o" } },
|
|
||||||
{ "ac", ts_select("@class.outer"), mode = { "x", "o" } },
|
|
||||||
{ "ii", ts_select("@conditional.inner"), mode = { "x", "o" } },
|
|
||||||
{ "ai", ts_select("@conditional.outer"), mode = { "x", "o" } },
|
|
||||||
{ "if", ts_select("@function.inner"), mode = { "x", "o" } },
|
|
||||||
{ "af", ts_select("@function.outer"), mode = { "x", "o" } },
|
|
||||||
{ "il", ts_select("@loop.inner"), mode = { "x", "o" } },
|
|
||||||
{ "al", ts_select("@loop.outer"), mode = { "x", "o" } },
|
|
||||||
{ "ia", ts_select("@attribute.inner"), mode = { "x", "o" } },
|
|
||||||
{ "aa", ts_select("@attribute.outer"), mode = { "x", "o" } },
|
|
||||||
-- move
|
|
||||||
{ "[f", ts_move_prev("@function.outer"), mode = { "n", "x", "o" } },
|
|
||||||
{ "[i", ts_move_prev("@conditional.outer"), mode = { "n", "x", "o" } },
|
|
||||||
{ "[c", ts_move_prev("@class.outer"), mode = { "n", "x", "o" } },
|
|
||||||
{ "[l", ts_move_prev("@loop.outer"), mode = { "n", "x", "o" } },
|
|
||||||
{ "]f", ts_move_next("@function.outer"), mode = { "n", "x", "o" } },
|
|
||||||
{ "]i", ts_move_next("@conditional.outer"), mode = { "n", "x", "o" } },
|
|
||||||
{ "]c", ts_move_next("@class.outer"), mode = { "n", "x", "o" } },
|
|
||||||
{ "]l", ts_move_next("@loop.outer"), mode = { "n", "x", "o" } },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require("nvim-treesitter.configs").setup({
|
|
||||||
ensure_installed = {
|
|
||||||
"vim",
|
|
||||||
"vimdoc",
|
|
||||||
"bash",
|
|
||||||
"lua",
|
|
||||||
"c",
|
|
||||||
"cpp",
|
|
||||||
"c_sharp",
|
|
||||||
"rust",
|
|
||||||
"cmake",
|
|
||||||
"make",
|
|
||||||
"yaml",
|
|
||||||
"ninja",
|
|
||||||
"gitignore",
|
|
||||||
"markdown",
|
|
||||||
"markdown_inline",
|
|
||||||
"hyprlang",
|
|
||||||
"json",
|
|
||||||
"html",
|
|
||||||
"hlsl",
|
|
||||||
"glsl",
|
|
||||||
"gdshader",
|
|
||||||
"gdscript",
|
|
||||||
"dockerfile",
|
|
||||||
"dart",
|
|
||||||
"go",
|
|
||||||
"zig",
|
|
||||||
"css",
|
|
||||||
"regex",
|
|
||||||
"dap_repl",
|
|
||||||
"muttrc",
|
|
||||||
"python",
|
|
||||||
"latex",
|
|
||||||
"typst",
|
|
||||||
"ruby",
|
|
||||||
"svelte",
|
|
||||||
"typescript",
|
|
||||||
"just",
|
|
||||||
"tsx",
|
|
||||||
"javascript",
|
|
||||||
"jsonc",
|
|
||||||
},
|
|
||||||
sync_install = false,
|
|
||||||
highlight = {
|
|
||||||
enable = true,
|
|
||||||
additional_vim_regex_highlighting = false,
|
|
||||||
},
|
|
||||||
indent = { enable = true },
|
|
||||||
})
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
return {
|
|
||||||
"mcauley-penney/visual-whitespace.nvim",
|
|
||||||
config = true,
|
|
||||||
event = "ModeChanged *:[vV\22]",
|
|
||||||
opts = {},
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
|
local utils = require("utils")
|
||||||
local terminal_window = nil
|
local terminal_window = nil
|
||||||
local terminal_bufnr = nil
|
local terminal_bufnr = nil
|
||||||
|
|
||||||
local function open_terminal_window()
|
local function open_terminal_window()
|
||||||
local utils = require("utils")
|
if terminal_bufnr and vim.api.nvim_buf_is_valid(terminal_bufnr) and vim.bo[terminal_bufnr].buftype == "terminal" then
|
||||||
if terminal_bufnr and vim.api.nvim_buf_is_valid(terminal_bufnr) and utils.is_buf_buftype(terminal_bufnr, "terminal") then
|
|
||||||
vim.cmd("botright split")
|
vim.cmd("botright split")
|
||||||
terminal_window = vim.api.nvim_get_current_win()
|
terminal_window = vim.api.nvim_get_current_win()
|
||||||
vim.api.nvim_win_set_buf(terminal_window, terminal_bufnr)
|
vim.api.nvim_win_set_buf(terminal_window, terminal_bufnr)
|
||||||
|
|
@ -21,7 +21,6 @@ local function toggle_terminal()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local utils = require("utils")
|
|
||||||
open_terminal_window()
|
open_terminal_window()
|
||||||
|
|
||||||
local term_height = vim.api.nvim_get_option_value("lines", {})
|
local term_height = vim.api.nvim_get_option_value("lines", {})
|
||||||
|
|
|
||||||
|
|
@ -1,34 +1,16 @@
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
M.colorsync_theme = nil
|
|
||||||
|
|
||||||
function M.set_keymap_list(keymap_list, mode)
|
function M.set_keymap_list(keymap_list, mode)
|
||||||
mode = mode or "n"
|
mode = mode or "n"
|
||||||
M.foreach(keymap_list, function(mapping)
|
for _, mapping in ipairs(keymap_list) do
|
||||||
vim.keymap.set(mode, mapping[1], mapping[2], mapping[3] or {})
|
vim.keymap.set(mode, mapping[1], mapping[2], mapping[3] or {})
|
||||||
end)
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.del_keymap_list(keymap_list, mode)
|
function M.del_keymap_list(keymap_list, mode)
|
||||||
mode = mode or "n"
|
mode = mode or "n"
|
||||||
M.foreach(keymap_list, function(mapping)
|
for _, mapping in ipairs(keymap_list) do
|
||||||
vim.keymap.del(mode, mapping[1])
|
vim.keymap.del(mode, mapping[1])
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.get_file_names_in_dir(dir, expr, strip_extension)
|
|
||||||
local path = vim.fn.stdpath("config") .. "/lua/" .. dir
|
|
||||||
local files_str = vim.fn.globpath(path, expr, true)
|
|
||||||
local has_line_breaks = vim.fn.match(files_str, [[\n]]) > -1
|
|
||||||
local files = has_line_breaks and vim.fn.split(files_str, "\n") or { files_str }
|
|
||||||
|
|
||||||
local should_strip_extension = strip_extension or false
|
|
||||||
if should_strip_extension then
|
|
||||||
return vim.tbl_map(function(file)
|
|
||||||
return vim.fn.fnamemodify(file, ":t:r")
|
|
||||||
end, files)
|
|
||||||
else
|
|
||||||
return files
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -37,61 +19,6 @@ function M.validate_bufnr(bufnr)
|
||||||
return bufnr == 0 and vim.api.nvim_get_current_buf() or bufnr
|
return bufnr == 0 and vim.api.nvim_get_current_buf() or bufnr
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.xpcallmsg(fn, err_msg, err_container)
|
|
||||||
return xpcall(fn, function(err)
|
|
||||||
if err_container then
|
|
||||||
table.insert(err_container, err_msg .. ": " .. err)
|
|
||||||
else
|
|
||||||
error(err_msg .. ": " .. err)
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.foreach(t, f)
|
|
||||||
for _, v in pairs(t) do
|
|
||||||
f(v)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.create_user_event_cb(event_name, function_callback, augroup)
|
|
||||||
assert(event_name and event_name ~= "", "Event name must be provided")
|
|
||||||
assert(function_callback and type(function_callback) == "function", "Callback must be a valid function")
|
|
||||||
|
|
||||||
local cmd = {
|
|
||||||
callback = function_callback,
|
|
||||||
pattern = event_name,
|
|
||||||
}
|
|
||||||
|
|
||||||
if augroup then
|
|
||||||
cmd.group = augroup
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("User", cmd)
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.broadcast_event(event_name)
|
|
||||||
vim.api.nvim_command("doautocmd <nomodeline> User " .. event_name)
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.add_opts_to_all_mappings(mappings, opts)
|
|
||||||
assert(opts and mappings)
|
|
||||||
|
|
||||||
for _, modes in pairs(mappings) do
|
|
||||||
for _, mapping in pairs(modes) do
|
|
||||||
local existing_opts = mapping.opts or {}
|
|
||||||
mapping.opts = vim.tbl_extend("force", existing_opts, opts)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.is_buf_filetype(bufnr, filetype)
|
|
||||||
return vim.api.nvim_get_option_value("filetype", { buf = bufnr }) == filetype
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.is_buf_buftype(bufnr, buftype)
|
|
||||||
return vim.api.nvim_get_option_value("buftype", { buf = bufnr }) == buftype
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.lock_buf_to_window(win_id, bufnr, filetype)
|
function M.lock_buf_to_window(win_id, bufnr, filetype)
|
||||||
local augroup_id = vim.api.nvim_create_augroup("LockWindow" .. win_id, { clear = true })
|
local augroup_id = vim.api.nvim_create_augroup("LockWindow" .. win_id, { clear = true })
|
||||||
|
|
||||||
|
|
@ -108,7 +35,7 @@ function M.lock_buf_to_window(win_id, bufnr, filetype)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if M.is_buf_filetype(current_buf, filetype) then
|
if vim.bo[current_buf].filetype == filetype then
|
||||||
bufnr = current_buf
|
bufnr = current_buf
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -10,14 +10,11 @@ opt.clipboard = "unnamedplus"
|
||||||
|
|
||||||
-- Highlight the currently selected row
|
-- Highlight the currently selected row
|
||||||
opt.cursorline = true
|
opt.cursorline = true
|
||||||
opt.cursorlineopt = "both"
|
opt.cursorlineopt = "line"
|
||||||
|
|
||||||
opt.breakindent = true
|
opt.breakindent = true
|
||||||
opt.breakindentopt = "list:-1"
|
opt.breakindentopt = "list:-1"
|
||||||
|
|
||||||
-- Disable home screen
|
|
||||||
opt.shortmess:append("sI")
|
|
||||||
|
|
||||||
-- Signcolumn
|
-- Signcolumn
|
||||||
opt.signcolumn = "yes:2" -- Adds a spacing to the left which can contain gutter icons
|
opt.signcolumn = "yes:2" -- Adds a spacing to the left which can contain gutter icons
|
||||||
opt.fillchars = { eob = " " } -- Remove the fill character for empty lines which defaults to: "~"
|
opt.fillchars = { eob = " " } -- Remove the fill character for empty lines which defaults to: "~"
|
||||||
|
|
@ -49,7 +46,7 @@ opt.swapfile = false
|
||||||
opt.splitright = true
|
opt.splitright = true
|
||||||
opt.splitbelow = true
|
opt.splitbelow = true
|
||||||
|
|
||||||
-- Removes the extra command line bar at the bottom, using lualine instead
|
-- Hide the cmdline bar when not in use; UI2 shows a float when needed
|
||||||
opt.cmdheight = 0
|
opt.cmdheight = 0
|
||||||
|
|
||||||
-- Statusline
|
-- Statusline
|
||||||
|
|
@ -68,10 +65,6 @@ opt.list = false
|
||||||
-- Sessions
|
-- Sessions
|
||||||
opt.sessionoptions = { "buffers", "curdir", "winsize", "winpos", "tabpages", "skiprtp" }
|
opt.sessionoptions = { "buffers", "curdir", "winsize", "winpos", "tabpages", "skiprtp" }
|
||||||
|
|
||||||
-- Builtin LSP completion tweaks
|
|
||||||
-- See comment in lspsetup autocmd for LspAttach
|
|
||||||
-- opt.completeopt = "menu,menuone,noselect,fuzzy"
|
|
||||||
|
|
||||||
opt.fileignorecase = true
|
opt.fileignorecase = true
|
||||||
|
|
||||||
-- This makes window sizing more controllable, with this set to true theyre always the same size.
|
-- This makes window sizing more controllable, with this set to true theyre always the same size.
|
||||||
|
|
@ -85,7 +78,7 @@ opt.shiftround = true
|
||||||
opt.redrawtime = 150
|
opt.redrawtime = 150
|
||||||
|
|
||||||
-- Disable lots of unnecessary warning notifications
|
-- Disable lots of unnecessary warning notifications
|
||||||
opt.shortmess = "acstFOSW"
|
opt.shortmess = "acstFOSWI"
|
||||||
|
|
||||||
-- Allows to select one more after EOL
|
-- Allows to select one more after EOL
|
||||||
opt.virtualedit = "onemore"
|
opt.virtualedit = "onemore"
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ end
|
||||||
local function swap_window(dir_char)
|
local function swap_window(dir_char)
|
||||||
assert(dir_char == "h" or dir_char == "j" or dir_char == "k" or dir_char == "l", "Invalid direction character")
|
assert(dir_char == "h" or dir_char == "j" or dir_char == "k" or dir_char == "l", "Invalid direction character")
|
||||||
|
|
||||||
local function can_swap_window(window)
|
local function should_skip_swap(window)
|
||||||
if not window then
|
if not window then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
@ -95,7 +95,7 @@ local function swap_window(dir_char)
|
||||||
end
|
end
|
||||||
|
|
||||||
local current_window = vim.api.nvim_get_current_win()
|
local current_window = vim.api.nvim_get_current_win()
|
||||||
if can_swap_window(current_window) then
|
if should_skip_swap(current_window) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -106,7 +106,7 @@ local function swap_window(dir_char)
|
||||||
local adjacent_window = get_adjacent_window(dir_char)
|
local adjacent_window = get_adjacent_window(dir_char)
|
||||||
assert(adjacent_window ~= nil, "Invalid adjacent window from get_adjacent_window")
|
assert(adjacent_window ~= nil, "Invalid adjacent window from get_adjacent_window")
|
||||||
|
|
||||||
if can_swap_window(adjacent_window) then
|
if should_skip_swap(adjacent_window) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -218,7 +218,7 @@ local function exit_resizing_mode()
|
||||||
assert(is_in_resizing_mode, "Not in resizing mode")
|
assert(is_in_resizing_mode, "Not in resizing mode")
|
||||||
|
|
||||||
is_in_resizing_mode = false
|
is_in_resizing_mode = false
|
||||||
utils.broadcast_event(on_resize_mode_exit_event)
|
vim.api.nvim_exec_autocmds("User", { pattern = on_resize_mode_exit_event, modeline = false })
|
||||||
|
|
||||||
assert(not is_in_resizing_mode, "Failed to exit resizing mode")
|
assert(not is_in_resizing_mode, "Failed to exit resizing mode")
|
||||||
end
|
end
|
||||||
|
|
@ -240,7 +240,7 @@ local function enter_resizing_mode()
|
||||||
end
|
end
|
||||||
|
|
||||||
is_in_resizing_mode = true
|
is_in_resizing_mode = true
|
||||||
utils.broadcast_event(on_resize_mode_enter_event)
|
vim.api.nvim_exec_autocmds("User", { pattern = on_resize_mode_enter_event, modeline = false })
|
||||||
|
|
||||||
assert(is_in_resizing_mode, "Failed to enter resizing mode")
|
assert(is_in_resizing_mode, "Failed to enter resizing mode")
|
||||||
end
|
end
|
||||||
|
|
@ -297,8 +297,10 @@ function M.setup()
|
||||||
|
|
||||||
local window_management_augroup = "WindowManagementEvents"
|
local window_management_augroup = "WindowManagementEvents"
|
||||||
vim.api.nvim_create_augroup(window_management_augroup, { clear = true })
|
vim.api.nvim_create_augroup(window_management_augroup, { clear = true })
|
||||||
utils.create_user_event_cb(on_resize_mode_enter_event, on_resize_mode_enter, window_management_augroup)
|
vim.api.nvim_create_autocmd("User",
|
||||||
utils.create_user_event_cb(on_resize_mode_exit_event, on_resize_mode_exit, window_management_augroup)
|
{ pattern = on_resize_mode_enter_event, callback = on_resize_mode_enter, group = window_management_augroup })
|
||||||
|
vim.api.nvim_create_autocmd("User",
|
||||||
|
{ pattern = on_resize_mode_exit_event, callback = on_resize_mode_exit, group = window_management_augroup })
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
||||||
131
nvim/nvim-pack-lock.json
Normal file
131
nvim/nvim-pack-lock.json
Normal file
|
|
@ -0,0 +1,131 @@
|
||||||
|
{
|
||||||
|
"plugins": {
|
||||||
|
"LuaSnip": {
|
||||||
|
"rev": "5a1e39223db9a0498024a77b8441169d260c8c25",
|
||||||
|
"src": "https://github.com/L3MON4D3/LuaSnip",
|
||||||
|
"version": "2.0.0 - 3.0.0"
|
||||||
|
},
|
||||||
|
"blink.cmp": {
|
||||||
|
"rev": "451168851e8e2466bc97ee3e026c3dcb9141ce07",
|
||||||
|
"src": "https://github.com/saghen/blink.cmp",
|
||||||
|
"version": "1.0.0 - 2.0.0"
|
||||||
|
},
|
||||||
|
"colorful-menu.nvim": {
|
||||||
|
"rev": "b51a659459df8d078201aefc995db8175ed55e84",
|
||||||
|
"src": "https://github.com/xzbdmw/colorful-menu.nvim"
|
||||||
|
},
|
||||||
|
"demicolon.nvim": {
|
||||||
|
"rev": "a9ca137474b3a02e1d6ac48bfdb1985172e2ec9a",
|
||||||
|
"src": "https://github.com/mawkler/demicolon.nvim"
|
||||||
|
},
|
||||||
|
"friendly-snippets": {
|
||||||
|
"rev": "6cd7280adead7f586db6fccbd15d2cac7e2188b9",
|
||||||
|
"src": "https://github.com/rafamadriz/friendly-snippets"
|
||||||
|
},
|
||||||
|
"goto-preview": {
|
||||||
|
"rev": "d2d6923c9b9e0e43f0b9b566f261a8b1ae016540",
|
||||||
|
"src": "https://github.com/rmagatti/goto-preview"
|
||||||
|
},
|
||||||
|
"incline.nvim": {
|
||||||
|
"rev": "8b54c59bcb23366645ae10edca6edfb9d3a0853e",
|
||||||
|
"src": "https://github.com/b0o/incline.nvim"
|
||||||
|
},
|
||||||
|
"live-rename.nvim": {
|
||||||
|
"rev": "3a3cddf23b89a17992f9ca67afc5858077769462",
|
||||||
|
"src": "https://github.com/saecki/live-rename.nvim"
|
||||||
|
},
|
||||||
|
"logger.nvim": {
|
||||||
|
"rev": "63dd10c9b9a159fd6cfe08435d9606384ff103c5",
|
||||||
|
"src": "https://github.com/rmagatti/logger.nvim"
|
||||||
|
},
|
||||||
|
"lualine.nvim": {
|
||||||
|
"rev": "47f91c416daef12db467145e16bed5bbfe00add8",
|
||||||
|
"src": "https://github.com/nvim-lualine/lualine.nvim"
|
||||||
|
},
|
||||||
|
"lush.nvim": {
|
||||||
|
"rev": "9c60ec2279d62487d942ce095e49006af28eed6e",
|
||||||
|
"src": "https://github.com/rktjmp/lush.nvim"
|
||||||
|
},
|
||||||
|
"markview.nvim": {
|
||||||
|
"rev": "1861f959599ae03cfd59f56222a542035b0cd947",
|
||||||
|
"src": "https://github.com/OXY2DEV/markview.nvim"
|
||||||
|
},
|
||||||
|
"mini.nvim": {
|
||||||
|
"rev": "402ee6c6ec8ea44b22330446c8fb4e615fd3953e",
|
||||||
|
"src": "https://github.com/LarssonMartin1998/mini.nvim"
|
||||||
|
},
|
||||||
|
"neogit": {
|
||||||
|
"rev": "4681c1fdac1b730592ae195576e87406f7255750",
|
||||||
|
"src": "https://github.com/NeogitOrg/neogit"
|
||||||
|
},
|
||||||
|
"nui.nvim": {
|
||||||
|
"rev": "de740991c12411b663994b2860f1a4fd0937c130",
|
||||||
|
"src": "https://github.com/MunifTanjim/nui.nvim"
|
||||||
|
},
|
||||||
|
"nvim-dap": {
|
||||||
|
"rev": "2a8799ad91a1495c6bdf753f9b2179b3ff0f5bba",
|
||||||
|
"src": "https://github.com/mfussenegger/nvim-dap"
|
||||||
|
},
|
||||||
|
"nvim-dap-go": {
|
||||||
|
"rev": "b4421153ead5d726603b02743ea40cf26a51ed5f",
|
||||||
|
"src": "https://github.com/leoluz/nvim-dap-go"
|
||||||
|
},
|
||||||
|
"nvim-dap-repl-highlights": {
|
||||||
|
"rev": "f31deba47fe3ee6ff8d2f13d9dbd06b2d1ae06b5",
|
||||||
|
"src": "https://github.com/LiadOz/nvim-dap-repl-highlights"
|
||||||
|
},
|
||||||
|
"nvim-dap-ui": {
|
||||||
|
"rev": "f5b6673f374626515401c5bc51b005f784a4f252",
|
||||||
|
"src": "https://github.com/rcarriga/nvim-dap-ui"
|
||||||
|
},
|
||||||
|
"nvim-dap-virtual-text": {
|
||||||
|
"rev": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6",
|
||||||
|
"src": "https://github.com/theHamsta/nvim-dap-virtual-text"
|
||||||
|
},
|
||||||
|
"nvim-lightbulb": {
|
||||||
|
"rev": "aa3a8b0f4305b25cfe368f6c9be9923a7c9d0805",
|
||||||
|
"src": "https://github.com/kosayoda/nvim-lightbulb"
|
||||||
|
},
|
||||||
|
"nvim-nio": {
|
||||||
|
"rev": "21f5324bfac14e22ba26553caf69ec76ae8a7662",
|
||||||
|
"src": "https://github.com/nvim-neotest/nvim-nio"
|
||||||
|
},
|
||||||
|
"nvim-norrsken": {
|
||||||
|
"rev": "57e1fa7638e753efbd62e5aa53b82b08a80fed7e",
|
||||||
|
"src": "https://github.com/LarssonMartin1998/nvim-norrsken"
|
||||||
|
},
|
||||||
|
"nvim-treesitter": {
|
||||||
|
"rev": "7caec274fd19c12b55902a5b795100d21531391f",
|
||||||
|
"src": "https://github.com/nvim-treesitter/nvim-treesitter",
|
||||||
|
"version": "'main'"
|
||||||
|
},
|
||||||
|
"nvim-treesitter-context": {
|
||||||
|
"rev": "adf4b6b0420b7be6c717ef0ac7993183d6c201b1",
|
||||||
|
"src": "https://github.com/nvim-treesitter/nvim-treesitter-context"
|
||||||
|
},
|
||||||
|
"nvim-treesitter-textobjects": {
|
||||||
|
"rev": "93d60a475f0b08a8eceb99255863977d3a25f310",
|
||||||
|
"src": "https://github.com/nvim-treesitter/nvim-treesitter-textobjects"
|
||||||
|
},
|
||||||
|
"persistent-breakpoints.nvim": {
|
||||||
|
"rev": "d1656221836207787b8a7969cc2dc72668c4742a",
|
||||||
|
"src": "https://github.com/Weissle/persistent-breakpoints.nvim"
|
||||||
|
},
|
||||||
|
"plenary.nvim": {
|
||||||
|
"rev": "b9fd5226c2f76c951fc8ed5923d85e4de065e509",
|
||||||
|
"src": "https://github.com/nvim-lua/plenary.nvim"
|
||||||
|
},
|
||||||
|
"tiny-glimmer.nvim": {
|
||||||
|
"rev": "932e6c2cc4a43ce578f007db1f8f61ad6798f938",
|
||||||
|
"src": "https://github.com/rachartier/tiny-glimmer.nvim"
|
||||||
|
},
|
||||||
|
"tiny-inline-diagnostic.nvim": {
|
||||||
|
"rev": "ba133b3e932416e4b9507095731a6d7276878fe8",
|
||||||
|
"src": "https://github.com/rachartier/tiny-inline-diagnostic.nvim"
|
||||||
|
},
|
||||||
|
"visual-whitespace.nvim": {
|
||||||
|
"rev": "49ff2b1c572ed7033a584381fa23aad2bf3bb258",
|
||||||
|
"src": "https://github.com/mcauley-penney/visual-whitespace.nvim"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
59
nvim/plugin/0-pack.lua
Normal file
59
nvim/plugin/0-pack.lua
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
local function gh(repo)
|
||||||
|
return "https://github.com/" .. repo
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.pack.add({
|
||||||
|
-- Mini suite
|
||||||
|
gh("LarssonMartin1998/mini.nvim"),
|
||||||
|
|
||||||
|
-- Colorscheme
|
||||||
|
gh("rktjmp/lush.nvim"),
|
||||||
|
gh("LarssonMartin1998/nvim-norrsken"),
|
||||||
|
|
||||||
|
-- Treesitter
|
||||||
|
{ src = gh("nvim-treesitter/nvim-treesitter"), version = "main" },
|
||||||
|
gh("nvim-treesitter/nvim-treesitter-context"),
|
||||||
|
gh("nvim-treesitter/nvim-treesitter-textobjects"),
|
||||||
|
|
||||||
|
-- Completion
|
||||||
|
gh("rafamadriz/friendly-snippets"),
|
||||||
|
{ src = gh("L3MON4D3/LuaSnip"), version = vim.version.range("2.x") },
|
||||||
|
{ src = gh("saghen/blink.cmp"), version = vim.version.range("1.x") },
|
||||||
|
|
||||||
|
-- UI
|
||||||
|
gh("nvim-lualine/lualine.nvim"),
|
||||||
|
gh("b0o/incline.nvim"),
|
||||||
|
gh("kosayoda/nvim-lightbulb"),
|
||||||
|
gh("rachartier/tiny-glimmer.nvim"),
|
||||||
|
gh("rachartier/tiny-inline-diagnostic.nvim"),
|
||||||
|
|
||||||
|
-- DAP
|
||||||
|
gh("mfussenegger/nvim-dap"),
|
||||||
|
gh("rcarriga/nvim-dap-ui"),
|
||||||
|
gh("nvim-neotest/nvim-nio"),
|
||||||
|
gh("LiadOz/nvim-dap-repl-highlights"),
|
||||||
|
gh("theHamsta/nvim-dap-virtual-text"),
|
||||||
|
gh("Weissle/persistent-breakpoints.nvim"),
|
||||||
|
gh("leoluz/nvim-dap-go"),
|
||||||
|
|
||||||
|
-- Misc
|
||||||
|
gh("OXY2DEV/markview.nvim"),
|
||||||
|
gh("MunifTanjim/nui.nvim"),
|
||||||
|
gh("xzbdmw/colorful-menu.nvim"),
|
||||||
|
})
|
||||||
|
|
||||||
|
require("colorful-menu").setup({})
|
||||||
|
|
||||||
|
vim.cmd.packadd("nvim.undotree")
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("VimPackClean", function()
|
||||||
|
local inactive_plugins = vim.iter(vim.pack.get())
|
||||||
|
:filter(function(x) return not x.active end)
|
||||||
|
:map(function(x) return x.spec.name end)
|
||||||
|
:totable()
|
||||||
|
|
||||||
|
vim.notify("Attempting to delete inactive plugins: \n" .. table.concat(inactive_plugins, "\n"))
|
||||||
|
if not pcall(vim.pack.del, inactive_plugins) then
|
||||||
|
vim.notify("Failed to delete inactive plugins...")
|
||||||
|
end
|
||||||
|
end, {})
|
||||||
11
nvim/plugin/00-hooks.lua
Normal file
11
nvim/plugin/00-hooks.lua
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
vim.api.nvim_create_autocmd("PackChanged", {
|
||||||
|
callback = function(ev)
|
||||||
|
local name = ev.data.spec.name
|
||||||
|
local kind = ev.data.kind
|
||||||
|
|
||||||
|
if name == "nvim-treesitter" and (kind == "install" or kind == "update") then
|
||||||
|
if not ev.data.active then vim.cmd.packadd("nvim-treesitter") end
|
||||||
|
vim.cmd("TSUpdate")
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
10
nvim/plugin/00-norrsken.lua
Normal file
10
nvim/plugin/00-norrsken.lua
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
require("norrsken").setup({
|
||||||
|
integrations = {
|
||||||
|
lualine = true,
|
||||||
|
blink = true,
|
||||||
|
incline = true,
|
||||||
|
neogit = true,
|
||||||
|
mini = true,
|
||||||
|
tiny_inline_diagnostics = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
110
nvim/plugin/00-treesitter.lua
Normal file
110
nvim/plugin/00-treesitter.lua
Normal file
|
|
@ -0,0 +1,110 @@
|
||||||
|
vim.g.no_plugin_maps = true -- must be set before plugin loads
|
||||||
|
|
||||||
|
-- Rewrite API: configs.setup() is gone. Highlighting is handled by Neovim 0.12 builtins.
|
||||||
|
-- install() skips already-installed parsers automatically.
|
||||||
|
vim.schedule(function()
|
||||||
|
require("nvim-treesitter.install").install({
|
||||||
|
"vim",
|
||||||
|
"vimdoc",
|
||||||
|
"bash",
|
||||||
|
"lua",
|
||||||
|
"c",
|
||||||
|
"cpp",
|
||||||
|
"c_sharp",
|
||||||
|
"rust",
|
||||||
|
"cmake",
|
||||||
|
"make",
|
||||||
|
"yaml",
|
||||||
|
"ninja",
|
||||||
|
"gitignore",
|
||||||
|
"markdown",
|
||||||
|
"markdown_inline",
|
||||||
|
"hyprlang",
|
||||||
|
"json",
|
||||||
|
"html",
|
||||||
|
"hlsl",
|
||||||
|
"glsl",
|
||||||
|
"gdshader",
|
||||||
|
"gdscript",
|
||||||
|
"dockerfile",
|
||||||
|
"dart",
|
||||||
|
"go",
|
||||||
|
"zig",
|
||||||
|
"css",
|
||||||
|
"regex",
|
||||||
|
"muttrc",
|
||||||
|
"python",
|
||||||
|
"latex",
|
||||||
|
"typst",
|
||||||
|
"ruby",
|
||||||
|
"svelte",
|
||||||
|
"typescript",
|
||||||
|
"just",
|
||||||
|
"tsx",
|
||||||
|
"javascript",
|
||||||
|
})
|
||||||
|
end)
|
||||||
|
|
||||||
|
require("treesitter-context").setup({
|
||||||
|
max_lines = 2,
|
||||||
|
multiline_threshold = 3,
|
||||||
|
trim_scope = "inner",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Textobject helpers
|
||||||
|
local function ts_select(query)
|
||||||
|
return function()
|
||||||
|
require("nvim-treesitter-textobjects.select").select_textobject(query, "textobjects")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function ts_move_prev(query)
|
||||||
|
return function()
|
||||||
|
require("nvim-treesitter-textobjects.move").goto_previous_start(query, "textobjects")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function ts_move_next(query)
|
||||||
|
return function()
|
||||||
|
require("nvim-treesitter-textobjects.move").goto_next_start(query, "textobjects")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
require("nvim-treesitter-textobjects").setup({
|
||||||
|
select = { lookahead = true },
|
||||||
|
move = { set_jumps = true },
|
||||||
|
})
|
||||||
|
|
||||||
|
local utils = require("utils")
|
||||||
|
|
||||||
|
-- Textobject select keymaps
|
||||||
|
for _, mode_maps in ipairs({
|
||||||
|
{
|
||||||
|
{ "x", "o" },
|
||||||
|
{
|
||||||
|
{ "ic", ts_select("@class.inner") },
|
||||||
|
{ "ac", ts_select("@class.outer") },
|
||||||
|
{ "ii", ts_select("@conditional.inner") },
|
||||||
|
{ "ai", ts_select("@conditional.outer") },
|
||||||
|
{ "if", ts_select("@function.inner") },
|
||||||
|
{ "af", ts_select("@function.outer") },
|
||||||
|
{ "il", ts_select("@loop.inner") },
|
||||||
|
{ "al", ts_select("@loop.outer") },
|
||||||
|
{ "ia", ts_select("@parameter.inner") },
|
||||||
|
{ "aa", ts_select("@parameter.outer") },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ "n", "x", "o" },
|
||||||
|
{
|
||||||
|
{ "[f", ts_move_prev("@function.outer") },
|
||||||
|
{ "[i", ts_move_prev("@conditional.outer") },
|
||||||
|
{ "[c", ts_move_prev("@class.outer") },
|
||||||
|
{ "[l", ts_move_prev("@loop.outer") },
|
||||||
|
{ "]f", ts_move_next("@function.outer") },
|
||||||
|
{ "]i", ts_move_next("@conditional.outer") },
|
||||||
|
{ "]c", ts_move_next("@class.outer") },
|
||||||
|
{ "]l", ts_move_next("@loop.outer") },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}) do
|
||||||
|
utils.set_keymap_list(mode_maps[2], mode_maps[1])
|
||||||
|
end
|
||||||
43
nvim/plugin/blink.lua
Normal file
43
nvim/plugin/blink.lua
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
local ls = require("luasnip")
|
||||||
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
|
ls.filetype_extend("typescriptreact", { "html" })
|
||||||
|
ls.filetype_extend("javascriptreact", { "html" })
|
||||||
|
ls.config.set_config({
|
||||||
|
enable_autosnippets = false,
|
||||||
|
store_selection_keys = false,
|
||||||
|
})
|
||||||
|
|
||||||
|
require("blink.cmp").setup({
|
||||||
|
keymap = { preset = "super-tab" },
|
||||||
|
appearance = {
|
||||||
|
nerd_font_variant = "mono",
|
||||||
|
},
|
||||||
|
completion = {
|
||||||
|
documentation = {
|
||||||
|
auto_show = false,
|
||||||
|
},
|
||||||
|
menu = {
|
||||||
|
draw = {
|
||||||
|
columns = { { "kind_icon" }, { "label", gap = 1 } },
|
||||||
|
components = {
|
||||||
|
label = {
|
||||||
|
text = function(ctx)
|
||||||
|
return require("colorful-menu").blink_components_text(ctx)
|
||||||
|
end,
|
||||||
|
highlight = function(ctx)
|
||||||
|
return require("colorful-menu").blink_components_highlight(ctx)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
snippets = {
|
||||||
|
preset = "luasnip",
|
||||||
|
active = function() return false end,
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
default = { "lsp", "path", "snippets", "buffer" },
|
||||||
|
},
|
||||||
|
fuzzy = { implementation = "prefer_rust_with_warning" },
|
||||||
|
})
|
||||||
8
nvim/plugin/demicolon.lua
Normal file
8
nvim/plugin/demicolon.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.pack.add({ "https://github.com/mawkler/demicolon.nvim" })
|
||||||
|
require("demicolon").setup({
|
||||||
|
keymaps = {
|
||||||
|
repeat_motions = "stateful",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end)
|
||||||
21
nvim/plugin/goto-preview.lua
Normal file
21
nvim/plugin/goto-preview.lua
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.pack.add({
|
||||||
|
"https://github.com/rmagatti/logger.nvim",
|
||||||
|
"https://github.com/rmagatti/goto-preview",
|
||||||
|
})
|
||||||
|
|
||||||
|
require("goto-preview").setup({
|
||||||
|
border = { "↖", "─", "┐", "│", "┘", "─", "└", "│" },
|
||||||
|
focus_on_open = true,
|
||||||
|
stack_floating_preview_windows = false,
|
||||||
|
preview_window_title = { enable = true, position = "left" },
|
||||||
|
vim_ui_input = false,
|
||||||
|
})
|
||||||
|
|
||||||
|
local utils = require("utils")
|
||||||
|
utils.set_keymap_list({
|
||||||
|
{ "gp", function() require("goto-preview").goto_preview_definition() end },
|
||||||
|
{ "gy", function() require("goto-preview").goto_preview_type_definition() end },
|
||||||
|
{ "<Leader>q", function() require("goto-preview").close_all_win() end },
|
||||||
|
})
|
||||||
|
end)
|
||||||
103
nvim/plugin/incline.lua
Normal file
103
nvim/plugin/incline.lua
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
local function setup_incline()
|
||||||
|
require("incline").setup({
|
||||||
|
window = {
|
||||||
|
padding = 0,
|
||||||
|
},
|
||||||
|
hide = {
|
||||||
|
cursorline = true,
|
||||||
|
},
|
||||||
|
render = function(props)
|
||||||
|
local fullpath = vim.api.nvim_buf_get_name(props.buf)
|
||||||
|
local filename = vim.fn.fnamemodify(fullpath, ":t")
|
||||||
|
if filename == "" then
|
||||||
|
filename = "[No Name]"
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_ft_icon()
|
||||||
|
local ft_icon, ft_color = require("nvim-web-devicons").get_icon_color(filename)
|
||||||
|
return { (ft_icon or "") .. " ", guifg = ft_color, guibg = "none" }
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_file_path()
|
||||||
|
local path_display = ""
|
||||||
|
if fullpath == "" then
|
||||||
|
path_display = filename
|
||||||
|
else
|
||||||
|
local parts = {}
|
||||||
|
for part in string.gmatch(vim.fn.fnamemodify(fullpath, ":.:h"), "[^/]+") do
|
||||||
|
table.insert(parts, part)
|
||||||
|
end
|
||||||
|
|
||||||
|
local ellipsis = "…"
|
||||||
|
local max_path_parts = 2
|
||||||
|
if #parts > max_path_parts then
|
||||||
|
local start_index = #parts - max_path_parts + 1
|
||||||
|
path_display = ellipsis .. "/" .. table.concat(parts, "/", start_index)
|
||||||
|
elseif #parts > 0 then
|
||||||
|
path_display = table.concat(parts, "/")
|
||||||
|
end
|
||||||
|
|
||||||
|
if path_display ~= "" then
|
||||||
|
path_display = path_display .. "/" .. filename
|
||||||
|
else
|
||||||
|
path_display = filename
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return { path_display .. " ┊", gui = vim.bo[props.buf].modified and "bold,italic" or "bold" }
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_git_diff()
|
||||||
|
local summary = vim.b[props.buf].minidiff_summary
|
||||||
|
local labels = {}
|
||||||
|
if summary == nil then
|
||||||
|
return labels
|
||||||
|
end
|
||||||
|
for name, icon in pairs({ Delete = "-", Change = "~", Add = "+" }) do
|
||||||
|
if tonumber(summary[name:lower()]) and summary[name:lower()] > 0 then
|
||||||
|
table.insert(labels, { icon .. " " .. summary[name:lower()] .. " ", group = "MiniDiffSign" .. name })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if #labels > 0 then
|
||||||
|
table.insert(labels, { "┊ " })
|
||||||
|
end
|
||||||
|
return labels
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_diagnostic_label()
|
||||||
|
local sev = vim.diagnostic.severity
|
||||||
|
local label = {}
|
||||||
|
for _, entry in ipairs({
|
||||||
|
{ sev.ERROR, "Error", "DiagnosticError" },
|
||||||
|
{ sev.WARN, "Warn", "DiagnosticWarn" },
|
||||||
|
{ sev.INFO, "Info", "DiagnosticInfo" },
|
||||||
|
{ sev.HINT, "Hint", "DiagnosticHint" },
|
||||||
|
}) do
|
||||||
|
local severity, kind, group = entry[1], entry[2], entry[3]
|
||||||
|
local n = #vim.diagnostic.get(props.buf, { severity = severity })
|
||||||
|
if n > 0 then
|
||||||
|
local icon = MiniIcons.get("lsp", kind)
|
||||||
|
table.insert(label, { icon .. " " .. n .. " ", group = group })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if #label > 0 then
|
||||||
|
table.insert(label, { "┊ " })
|
||||||
|
end
|
||||||
|
return label
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
{ " " },
|
||||||
|
{ get_diagnostic_label() },
|
||||||
|
{ get_git_diff() },
|
||||||
|
{ get_ft_icon() },
|
||||||
|
{ get_file_path() },
|
||||||
|
{ " " }
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("User",
|
||||||
|
{ pattern = "ColorsyncThemeChanged", callback = setup_incline, group = "ColorsyncEvents" })
|
||||||
|
setup_incline()
|
||||||
28
nvim/plugin/live-rename.lua
Normal file
28
nvim/plugin/live-rename.lua
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.pack.add({ "https://github.com/saecki/live-rename.nvim" })
|
||||||
|
require("live-rename").setup({
|
||||||
|
prepare_rename = true,
|
||||||
|
request_timeout = 1500,
|
||||||
|
show_other_ocurrences = true,
|
||||||
|
use_patterns = true,
|
||||||
|
scratch_register = "l",
|
||||||
|
keys = {
|
||||||
|
submit = {
|
||||||
|
{ "n", "<cr>" },
|
||||||
|
{ "v", "<cr>" },
|
||||||
|
{ "i", "<cr>" },
|
||||||
|
},
|
||||||
|
cancel = {
|
||||||
|
{ "n", "<esc>" },
|
||||||
|
{ "n", "q" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hl = {
|
||||||
|
current = "CurSearch",
|
||||||
|
others = "Search",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
vim.keymap.set("n", "<leader>r", function()
|
||||||
|
require("live-rename").rename({ cursorpos = 0 })
|
||||||
|
end)
|
||||||
|
end)
|
||||||
58
nvim/plugin/lualine.lua
Normal file
58
nvim/plugin/lualine.lua
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
local function resize_mode()
|
||||||
|
if require("window_management").is_in_resizing_mode() then
|
||||||
|
return "▲ Resizing ▼ "
|
||||||
|
else
|
||||||
|
return " "
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local tabs = {
|
||||||
|
"tabs",
|
||||||
|
use_mode_colors = true,
|
||||||
|
tabs_color = { active = "lualine_b_command" },
|
||||||
|
show_modified_status = false,
|
||||||
|
component_separators = { left = "", right = "" },
|
||||||
|
}
|
||||||
|
|
||||||
|
local function setup_lualine()
|
||||||
|
require("lualine").setup({
|
||||||
|
options = {
|
||||||
|
theme = require("norrsken.integrations.lualine"),
|
||||||
|
globalstatus = true,
|
||||||
|
section_separators = { left = "", right = "" },
|
||||||
|
component_separators = { left = "", right = "" },
|
||||||
|
icons_enabled = true,
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
lualine_a = { "mode" },
|
||||||
|
lualine_b = {
|
||||||
|
"branch",
|
||||||
|
{
|
||||||
|
"diagnostics",
|
||||||
|
sources = { "nvim_lsp" },
|
||||||
|
sections = { "error", "warn", "info", "hint" },
|
||||||
|
update_in_insert = false,
|
||||||
|
},
|
||||||
|
function() return vim.ui.progress_status() end,
|
||||||
|
resize_mode,
|
||||||
|
},
|
||||||
|
lualine_c = { tabs },
|
||||||
|
lualine_x = { "encoding", "fileformat", "filetype" },
|
||||||
|
lualine_y = { "progress" },
|
||||||
|
lualine_z = { "location" },
|
||||||
|
},
|
||||||
|
inactive_sections = {
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_c = {},
|
||||||
|
lualine_x = {},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {},
|
||||||
|
},
|
||||||
|
tabline = {},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("User",
|
||||||
|
{ pattern = "ColorsyncThemeChanged", callback = setup_lualine, group = "ColorsyncEvents" })
|
||||||
|
setup_lualine()
|
||||||
101
nvim/plugin/mini.lua
Normal file
101
nvim/plugin/mini.lua
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
local utils = require("utils")
|
||||||
|
|
||||||
|
require("mini.icons").setup({})
|
||||||
|
-- mock_nvim_web_devicons() shims the devicons API so plugins that require it continue to work without the real package.
|
||||||
|
MiniIcons.mock_nvim_web_devicons()
|
||||||
|
|
||||||
|
require("mini.notify").setup({})
|
||||||
|
vim.notify = MiniNotify.make_notify()
|
||||||
|
|
||||||
|
require("mini.indentscope").setup({
|
||||||
|
symbol = "│",
|
||||||
|
options = { try_as_border = true },
|
||||||
|
draw = {
|
||||||
|
animation = require("mini.indentscope").gen_animation.none(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("mini.sessions").setup({
|
||||||
|
autowrite = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
require("mini.surround").setup({
|
||||||
|
custom_surroundings = {
|
||||||
|
["("] = { output = { left = "(", right = ")" } },
|
||||||
|
["{"] = { output = { left = "{", right = "}" } },
|
||||||
|
["<"] = { output = { left = "<", right = ">" } },
|
||||||
|
["["] = { output = { left = "[", right = "]" } },
|
||||||
|
},
|
||||||
|
mappings = {
|
||||||
|
add = "ys",
|
||||||
|
delete = "ds",
|
||||||
|
replace = "cs",
|
||||||
|
find = "",
|
||||||
|
find_left = "",
|
||||||
|
highlight = "",
|
||||||
|
update_n_lines = "",
|
||||||
|
suffix_last = "",
|
||||||
|
suffix_next = "",
|
||||||
|
},
|
||||||
|
search_method = "cover_or_next",
|
||||||
|
})
|
||||||
|
utils.del_keymap_list({ { "ys" } }, "x")
|
||||||
|
utils.set_keymap_list({
|
||||||
|
{ "S", [[:<C-u>lua MiniSurround.add('visual')<CR>]], { silent = true } },
|
||||||
|
}, "x")
|
||||||
|
-- yss, surround current line
|
||||||
|
utils.set_keymap_list({
|
||||||
|
{ "yss", "ys_", { remap = true } },
|
||||||
|
})
|
||||||
|
|
||||||
|
local starter = require("mini.starter")
|
||||||
|
starter.setup({
|
||||||
|
items = {
|
||||||
|
starter.sections.recent_files(8, false),
|
||||||
|
{
|
||||||
|
{ name = "Find File", action = "lua MiniPick.builtin.files()", section = "Actions" },
|
||||||
|
{ name = "Live Grep", action = "lua MiniPick.builtin.grep_live()", section = "Actions" },
|
||||||
|
{ name = "New File", action = "ene | startinsert", section = "Actions" },
|
||||||
|
{ name = "Sessions", action = "lua MiniSessions.select()", section = "Actions" },
|
||||||
|
{ name = "Update Plugins", action = "lua vim.pack.update()", section = "Actions" },
|
||||||
|
{ name = "Quit", action = "qa", section = "Actions" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
content_hooks = {
|
||||||
|
starter.gen_hook.adding_bullet(),
|
||||||
|
starter.gen_hook.aligning("center", "center"),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("mini.diff").setup({})
|
||||||
|
utils.set_keymap_list({
|
||||||
|
{ "[g", function() MiniDiff.goto_hunk("prev") end },
|
||||||
|
{ "]g", function() MiniDiff.goto_hunk("next") end },
|
||||||
|
{ "<leader>d", function() MiniDiff.toggle_overlay(0) end },
|
||||||
|
})
|
||||||
|
|
||||||
|
require("mini.cursorword").setup({})
|
||||||
|
|
||||||
|
-- mini modules reset their highlight groups during setup(), so re-apply
|
||||||
|
-- the norrsken integration after setup and again on ColorScheme change.
|
||||||
|
local apply_mini_hl = require("norrsken.integrations.mini")
|
||||||
|
apply_mini_hl()
|
||||||
|
vim.api.nvim_create_autocmd("ColorScheme", { callback = apply_mini_hl })
|
||||||
|
|
||||||
|
require("mini.pick").setup({})
|
||||||
|
require("mini.extra").setup()
|
||||||
|
|
||||||
|
utils.set_keymap_list({
|
||||||
|
{ "<leader>f", function()
|
||||||
|
MiniPick.builtin.cli(
|
||||||
|
{ command = { "fd", "--type", "f", "--hidden", "--follow", "--exclude", ".git" } },
|
||||||
|
{ source = { name = "Files", show = MiniPick.default_show } }
|
||||||
|
)
|
||||||
|
end },
|
||||||
|
{ "<leader>g", function() MiniPick.builtin.grep_live() end },
|
||||||
|
{ "<leader>b", function() MiniPick.builtin.buffers() end },
|
||||||
|
{ "<leader>o", function() MiniExtra.pickers.lsp({ scope = "workspace_symbol" }) end },
|
||||||
|
{ "<leader>s", function() MiniExtra.pickers.lsp({ scope = "document_symbol" }) end },
|
||||||
|
{ "<leader>n", function() MiniNotify.show_history() end },
|
||||||
|
{ "<leader>x", function() MiniExtra.pickers.diagnostic({ win = { preview = { wo = { wrap = true } } } }) end },
|
||||||
|
})
|
||||||
18
nvim/plugin/neogit.lua
Normal file
18
nvim/plugin/neogit.lua
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.pack.add({
|
||||||
|
"https://github.com/nvim-lua/plenary.nvim",
|
||||||
|
"https://github.com/NeogitOrg/neogit",
|
||||||
|
})
|
||||||
|
local p = require("norrsken.palette")
|
||||||
|
require("neogit").setup({
|
||||||
|
highlight = {
|
||||||
|
italic = false,
|
||||||
|
bold = true,
|
||||||
|
underline = true,
|
||||||
|
green = p.green,
|
||||||
|
red = p.red,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require("norrsken.integrations.neogit")()
|
||||||
|
vim.keymap.set("n", "<leader>v", function() require("neogit").open() end)
|
||||||
|
end)
|
||||||
115
nvim/plugin/nvim-dap.lua
Normal file
115
nvim/plugin/nvim-dap.lua
Normal file
|
|
@ -0,0 +1,115 @@
|
||||||
|
local utils = require("utils")
|
||||||
|
local inlay_hints_handler = require("inlay_hints_handler")
|
||||||
|
|
||||||
|
local is_debug_mode_active = false
|
||||||
|
|
||||||
|
local dap = require("dap")
|
||||||
|
|
||||||
|
require("nvim-dap-repl-highlights").setup({})
|
||||||
|
require("nvim-dap-virtual-text").setup({})
|
||||||
|
require("persistent-breakpoints").setup({ load_breakpoints_event = { "BufReadPost" } })
|
||||||
|
require("dapui").setup({
|
||||||
|
controls = { enabled = false },
|
||||||
|
layouts = {
|
||||||
|
{
|
||||||
|
elements = {
|
||||||
|
{ id = "watches", size = 0.5 },
|
||||||
|
{ id = "stacks", size = 0.5 },
|
||||||
|
},
|
||||||
|
position = "bottom",
|
||||||
|
size = 15,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require("dap-go").setup({})
|
||||||
|
|
||||||
|
dap.adapters.codelldb = require("dap.codelldb")
|
||||||
|
|
||||||
|
local virtual_text = require("nvim-dap-virtual-text/virtual_text")
|
||||||
|
local breakpoint_api = require("persistent-breakpoints.api")
|
||||||
|
|
||||||
|
local stepping_keymaps = {
|
||||||
|
{ "<F10>", function() dap.step_over() end },
|
||||||
|
{ "<F11>", function() dap.step_into() end },
|
||||||
|
{ "<F12>", function() dap.step_out() end },
|
||||||
|
{
|
||||||
|
"<leader>dc",
|
||||||
|
function()
|
||||||
|
require("dapui").float_element("console", {
|
||||||
|
enter = true,
|
||||||
|
title = "output",
|
||||||
|
border = "rounded",
|
||||||
|
position = "center",
|
||||||
|
width = math.floor(vim.o.columns * 0.8),
|
||||||
|
height = math.floor(vim.o.lines * 0.6),
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, sign in ipairs({
|
||||||
|
{ "DapBreakpoint", { text = "🛑", texthl = "", linehl = "", numhl = "" } },
|
||||||
|
{ "DapBreakpointRejected", { text = "🔵", texthl = "", linehl = "", numhl = "" } },
|
||||||
|
{ "DapBreakpointCondition", { text = "🟥", texthl = "", linehl = "", numhl = "" } },
|
||||||
|
}) do
|
||||||
|
vim.fn.sign_define(unpack(sign))
|
||||||
|
end
|
||||||
|
|
||||||
|
local function enter_debug_mode()
|
||||||
|
if is_debug_mode_active then return end
|
||||||
|
utils.set_keymap_list(stepping_keymaps)
|
||||||
|
is_debug_mode_active = true
|
||||||
|
inlay_hints_handler.disable()
|
||||||
|
require("dapui").open()
|
||||||
|
end
|
||||||
|
|
||||||
|
local function exit_debug_mode()
|
||||||
|
if not is_debug_mode_active then return end
|
||||||
|
utils.del_keymap_list(stepping_keymaps)
|
||||||
|
is_debug_mode_active = false
|
||||||
|
inlay_hints_handler.restore()
|
||||||
|
virtual_text.clear_virtual_text()
|
||||||
|
require("dapui").close()
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, request in ipairs({ "attach", "launch" }) do
|
||||||
|
dap.listeners.before[request]["dapui_config"] = enter_debug_mode
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, event in ipairs({ "event_terminated", "event_exited" }) do
|
||||||
|
dap.listeners.after[event]["dapui_config"] = exit_debug_mode
|
||||||
|
end
|
||||||
|
|
||||||
|
local function dap_stop()
|
||||||
|
dap.terminate()
|
||||||
|
dap.close()
|
||||||
|
exit_debug_mode()
|
||||||
|
end
|
||||||
|
|
||||||
|
utils.set_keymap_list({
|
||||||
|
{ "<leader>dr", dap.continue },
|
||||||
|
{ "<leader>bt", breakpoint_api.toggle_breakpoint },
|
||||||
|
{ "<leader>bc", breakpoint_api.set_conditional_breakpoint },
|
||||||
|
{ "<leader>br", breakpoint_api.clear_all_breakpoints },
|
||||||
|
{ "<leader>ds", dap_stop },
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("LaunchTemplate", function()
|
||||||
|
vim.api.nvim_buf_set_lines(0, 0, -1, false, {
|
||||||
|
"{",
|
||||||
|
' "version": "0.2.0",',
|
||||||
|
' "configurations": [',
|
||||||
|
" {",
|
||||||
|
' "type": "codelldb",',
|
||||||
|
' "request": "launch",',
|
||||||
|
' "name": "Launch",',
|
||||||
|
' "program": "${workspaceFolder}/build/binary",',
|
||||||
|
' "cwd": "${workspaceFolder}",',
|
||||||
|
' "args": [],',
|
||||||
|
' "stopOnEntry": false,',
|
||||||
|
' "environment": []',
|
||||||
|
" }",
|
||||||
|
" ]",
|
||||||
|
"}",
|
||||||
|
})
|
||||||
|
end, {})
|
||||||
9
nvim/plugin/nvim-lightbulb.lua
Normal file
9
nvim/plugin/nvim-lightbulb.lua
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
require("nvim-lightbulb").setup({
|
||||||
|
hide_in_unfocused_buffer = true,
|
||||||
|
code_lenses = false, -- 0.12 shows code lenses as virtual lines natively
|
||||||
|
sign = { enabled = true },
|
||||||
|
virtual_text = { enabled = false },
|
||||||
|
float = { enabled = false },
|
||||||
|
status_text = { enabled = false },
|
||||||
|
autocmd = { enabled = true, updatetime = 25 },
|
||||||
|
})
|
||||||
4
nvim/plugin/rephrase.lua
Normal file
4
nvim/plugin/rephrase.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
vim.opt.runtimepath:append("/Users/larssonmartin/dev/git/nvim-rephrase")
|
||||||
|
if pcall(require, "rephrase") then
|
||||||
|
require("rephrase").setup({})
|
||||||
|
end
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
return {
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
"mrcjkb/rustaceanvim",
|
pattern = "rust",
|
||||||
version = "^5",
|
once = true,
|
||||||
ft = { "rust" },
|
callback = function()
|
||||||
config = function()
|
|
||||||
vim.g.rustaceanvim = {
|
vim.g.rustaceanvim = {
|
||||||
inlay_hints = {
|
inlay_hints = {
|
||||||
highlight = "NonText",
|
highlight = "NonText",
|
||||||
|
|
@ -14,7 +13,6 @@ return {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
server = {
|
server = {
|
||||||
on_attach = require("lsplib").configure_generic_client,
|
|
||||||
default_settings = {
|
default_settings = {
|
||||||
["rust-analyzer"] = {
|
["rust-analyzer"] = {
|
||||||
inlayHints = {
|
inlayHints = {
|
||||||
|
|
@ -24,13 +22,14 @@ return {
|
||||||
},
|
},
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
enable = true,
|
enable = true,
|
||||||
experimental = {
|
experimental = { enable = true },
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
vim.pack.add({
|
||||||
|
{ src = "https://github.com/mrcjkb/rustaceanvim", version = vim.version.range("5.x") },
|
||||||
|
})
|
||||||
end,
|
end,
|
||||||
}
|
})
|
||||||
24
nvim/plugin/tiny-glimmer.lua
Normal file
24
nvim/plugin/tiny-glimmer.lua
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
require("tiny-glimmer").setup({
|
||||||
|
refresh_interval_ms = 6,
|
||||||
|
overwrite = {
|
||||||
|
auto_map = true,
|
||||||
|
paste = {
|
||||||
|
enabled = true,
|
||||||
|
default_animation = { name = "fade", settings = { from_color = "DiffText" } },
|
||||||
|
},
|
||||||
|
undo = {
|
||||||
|
enabled = true,
|
||||||
|
default_animation = { name = "fade", settings = { from_color = "DiffDelete" } },
|
||||||
|
},
|
||||||
|
redo = {
|
||||||
|
enabled = true,
|
||||||
|
default_animation = { name = "fade", settings = { from_color = "DiffAdd" } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
animations = {
|
||||||
|
fade = {
|
||||||
|
chars_for_max_duration = 1,
|
||||||
|
to_color = "Folded",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
11
nvim/plugin/tiny-inline-diagnostics.lua
Normal file
11
nvim/plugin/tiny-inline-diagnostics.lua
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
require("tiny-inline-diagnostic").setup({
|
||||||
|
preset = "modern",
|
||||||
|
transparent_bg = false,
|
||||||
|
transparent_cursorline = false,
|
||||||
|
options = {
|
||||||
|
multilines = {
|
||||||
|
enabled = true,
|
||||||
|
always_show = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
8
nvim/plugin/visual-whitespace.lua
Normal file
8
nvim/plugin/visual-whitespace.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
vim.api.nvim_create_autocmd("ModeChanged", {
|
||||||
|
pattern = "*:[vV\22]",
|
||||||
|
once = true,
|
||||||
|
callback = function()
|
||||||
|
vim.pack.add({ "https://github.com/mcauley-penney/visual-whitespace.nvim" })
|
||||||
|
require("visual-whitespace").setup({})
|
||||||
|
end,
|
||||||
|
})
|
||||||
Loading…
Add table
Add a link
Reference in a new issue