splits out configuration into central modules
This commit is contained in:
parent
58ffb417dd
commit
b44654b9a2
63 changed files with 20 additions and 20 deletions
10
modules/nvim/config/lua/dnsc/keymaps.lua
Normal file
10
modules/nvim/config/lua/dnsc/keymaps.lua
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
local opts = { noremap = true, silent = true, expr = true }
|
||||
|
||||
-- Non-leader general keybindings
|
||||
vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", opts)
|
||||
vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", opts)
|
||||
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Move down" })
|
||||
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Move up" })
|
||||
vim.keymap.set("n", "n", "nzzzv", { desc = "Move to next occurence" })
|
||||
vim.keymap.set("n", "N", "Nzzzv", { desc = "Move to next occurence" })
|
||||
vim.keymap.set("n", "<C-f>", "<Nop>")
|
||||
76
modules/nvim/config/lua/dnsc/lazy.lua
Normal file
76
modules/nvim/config/lua/dnsc/lazy.lua
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
-- Bootstrap lazy.nvim
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = " "
|
||||
|
||||
local options = {
|
||||
backup = false, -- creates a backup file
|
||||
clipboard = "unnamedplus", -- allows neovim to access the system clipboard
|
||||
cmdheight = 1, -- more space in the neovim command line for displaying messages
|
||||
completeopt = { "menu", "menuone", "noselect" }, -- mostly just for cmp
|
||||
conceallevel = 0, -- so that `` is visible in markdown files
|
||||
fileencoding = "utf-8", -- the encoding written to a file
|
||||
hlsearch = true, -- highlight all matches on previous search pattern
|
||||
ignorecase = true, -- ignore case in search patterns
|
||||
mouse = "a", -- allow the mouse to be used in neovim
|
||||
pumheight = 10, -- pop up menu height
|
||||
showmode = false, -- we don't need to see things like -- INSERT -- anymore
|
||||
smartindent = true,
|
||||
breakindent = true,
|
||||
showtabline = 0, -- always show tabs
|
||||
smartcase = true, -- smart case
|
||||
splitbelow = true, -- force all horizontal splits to go below current window
|
||||
splitright = true, -- force all vertical splits to go to the right of current window
|
||||
swapfile = false, -- creates a swapfile
|
||||
termguicolors = true, -- set term gui colors (most terminals support this)
|
||||
timeoutlen = 600, -- time to wait for a mapped sequence to complete (in milliseconds)
|
||||
undofile = true, -- enable persistent undo
|
||||
updatetime = 230, -- faster completion (4000ms default)
|
||||
writebackup = false, -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited
|
||||
expandtab = true, -- convert tabs to spaces
|
||||
shiftwidth = 2, -- the number of spaces inserted for each indentation
|
||||
tabstop = 2, -- insert 2 spaces for a tab
|
||||
cursorline = true, -- highlight the current line
|
||||
number = true, -- set numbered lines
|
||||
relativenumber = true, -- set relative numbered lines
|
||||
numberwidth = 4, -- set number column width to 2 {default 4}
|
||||
signcolumn = "yes", -- always show the sign column, otherwise it would shift the text each time
|
||||
linebreak = true,
|
||||
breakat = " ^I!@*-+;:,./?",
|
||||
scrolloff = 6, -- is one of my fav
|
||||
sidescrolloff = 4,
|
||||
winbar = nil,
|
||||
}
|
||||
|
||||
vim.opt.shortmess:append("c")
|
||||
|
||||
for k, v in pairs(options) do
|
||||
vim.opt[k] = v
|
||||
end
|
||||
|
||||
-- Setup lazy.nvim
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
{ import = "plugins" },
|
||||
},
|
||||
-- Configure any other settings here. See the documentation for more details.
|
||||
-- colorscheme that will be used when installing plugins.
|
||||
install = { colorscheme = { "rose-pine" } },
|
||||
-- automatically check for plugin updates
|
||||
checker = { enabled = false },
|
||||
})
|
||||
30
modules/nvim/config/lua/dnsc/lsp.lua
Normal file
30
modules/nvim/config/lua/dnsc/lsp.lua
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
vim.lsp.enable("ts_ls")
|
||||
vim.lsp.enable("lua_ls")
|
||||
vim.lsp.enable("eslint")
|
||||
vim.lsp.enable("jsonls")
|
||||
vim.lsp.enable("nil_ls")
|
||||
|
||||
vim.diagnostic.config({
|
||||
virtual_text = false,
|
||||
signs = true,
|
||||
underline = true,
|
||||
update_in_insert = false,
|
||||
severity_sort = false,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
callback = function(args)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>e",
|
||||
"<cmd>lua vim.diagnostic.open_float()<cr>",
|
||||
{ buffer = args.buf, desc = "Show diagnostics on current line" }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>ca",
|
||||
"<cmd>lua vim.lsp.buf.code_action()<cr>",
|
||||
{ buffer = args.buf, desc = "Code actions for current line" }
|
||||
)
|
||||
end,
|
||||
})
|
||||
133
modules/nvim/config/lua/dnsc/utils.lua
Normal file
133
modules/nvim/config/lua/dnsc/utils.lua
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
-- Highlight on yank
|
||||
local highlight_group = vim.api.nvim_create_augroup("YankHighlight", { clear = true })
|
||||
|
||||
vim.api.nvim_create_autocmd("TextYankPost", {
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
group = highlight_group,
|
||||
pattern = "*",
|
||||
})
|
||||
|
||||
function tbl_flatten(t)
|
||||
--- @diagnostic disable-next-line:deprecated
|
||||
return nvim_eleven and vim.iter(t):flatten(math.huge):totable() or vim.tbl_flatten(t)
|
||||
end
|
||||
|
||||
function search_ancestors(startpath, func)
|
||||
if nvim_eleven then
|
||||
validate('func', func, 'function')
|
||||
end
|
||||
if func(startpath) then
|
||||
return startpath
|
||||
end
|
||||
local guard = 100
|
||||
for path in vim.fs.parents(startpath) do
|
||||
-- Prevent infinite recursion if our algorithm breaks
|
||||
guard = guard - 1
|
||||
if guard == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
if func(path) then
|
||||
return path
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function escape_wildcards(path)
|
||||
return path:gsub('([%[%]%?%*])', '\\%1')
|
||||
end
|
||||
|
||||
function strip_archive_subpath(path)
|
||||
-- Matches regex from zip.vim / tar.vim
|
||||
path = vim.fn.substitute(path, 'zipfile://\\(.\\{-}\\)::[^\\\\].*$', '\\1', '')
|
||||
path = vim.fn.substitute(path, 'tarfile:\\(.\\{-}\\)::.*$', '\\1', '')
|
||||
return path
|
||||
end
|
||||
|
||||
local function root_pattern(...)
|
||||
local patterns = tbl_flatten({ ... })
|
||||
return function(startpath)
|
||||
startpath = strip_archive_subpath(startpath)
|
||||
for _, pattern in ipairs(patterns) do
|
||||
local match = search_ancestors(startpath, function(path)
|
||||
for _, p in ipairs(vim.fn.glob(table.concat({ escape_wildcards(path), pattern }, "/"), true, true)) do
|
||||
if vim.loop.fs_stat(p) then
|
||||
return path
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
if match ~= nil then
|
||||
return match
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function filter(arr, fn)
|
||||
if type(arr) ~= "table" then
|
||||
return arr
|
||||
end
|
||||
|
||||
local filtered = {}
|
||||
for k, v in pairs(arr) do
|
||||
if fn(v, k, arr) then
|
||||
table.insert(filtered, v)
|
||||
end
|
||||
end
|
||||
|
||||
return filtered
|
||||
end
|
||||
|
||||
local function filterReactDTS(value)
|
||||
-- Depending on typescript version either uri or targetUri is returned
|
||||
if value.uri then
|
||||
return string.match(value.uri, "%.d.ts") == nil
|
||||
elseif value.targetUri then
|
||||
return string.match(value.targetUri, "%.d.ts") == nil
|
||||
end
|
||||
end
|
||||
|
||||
local project_types = {
|
||||
["main.odin"] = "odin run .",
|
||||
["package.json"] = "pnpm run dev",
|
||||
["Makefile"] = "make",
|
||||
}
|
||||
|
||||
local function find_project_type()
|
||||
for marker, _ in pairs(project_types) do
|
||||
if vim.fn.glob(marker) ~= "" then
|
||||
return marker
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
local function compile_project()
|
||||
local marker = find_project_type()
|
||||
|
||||
if not marker then
|
||||
vim.notify("No recognized project type found", vim.log.levels.WARN)
|
||||
return
|
||||
end
|
||||
|
||||
local cmd = project_types[marker]
|
||||
|
||||
-- Create a new terminal buffer and run the command
|
||||
vim.cmd("botright new") -- Create new window at bottom
|
||||
vim.cmd("terminal " .. cmd)
|
||||
|
||||
-- Enter normal mode and hide the buffer number
|
||||
vim.cmd("setlocal nonumber")
|
||||
vim.cmd("setlocal norelativenumber")
|
||||
vim.cmd("startinsert")
|
||||
end
|
||||
|
||||
return {
|
||||
compile_project = compile_project,
|
||||
filter = filter,
|
||||
filterReactDTS = filterReactDTS,
|
||||
root_pattern = root_pattern
|
||||
}
|
||||
18
modules/nvim/config/lua/plugins/barbar.lua
Normal file
18
modules/nvim/config/lua/plugins/barbar.lua
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
return {
|
||||
"romgrk/barbar.nvim",
|
||||
dependencies = {
|
||||
"lewis6991/gitsigns.nvim", -- OPTIONAL: for git status
|
||||
"nvim-tree/nvim-web-devicons", -- OPTIONAL: for file icons
|
||||
},
|
||||
init = function()
|
||||
vim.g.barbar_auto_setup = false
|
||||
end,
|
||||
opts = {
|
||||
animation = false,
|
||||
auto_hide = false,
|
||||
maximum_length = 35,
|
||||
icons = { filetype = { enabled = false }, button = "", modified = { button = "m" } },
|
||||
highlight_visible = false,
|
||||
},
|
||||
version = "^1.0.0", -- optional: only update when a new 1.x version is released
|
||||
}
|
||||
47
modules/nvim/config/lua/plugins/blink.lua
Normal file
47
modules/nvim/config/lua/plugins/blink.lua
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
return {
|
||||
"saghen/blink.cmp",
|
||||
dependencies = { "rafamadriz/friendly-snippets" },
|
||||
version = "1.*",
|
||||
---@module 'blink.cmp'
|
||||
---@type blink.cmp.Config
|
||||
opts = {
|
||||
keymap = {
|
||||
preset = "enter",
|
||||
["<Tab>"] = { "select_next", "fallback" },
|
||||
["<S-Tab>"] = { "select_prev", "fallback" },
|
||||
["<C-k>"] = { "show_documentation", "hide_documentation" },
|
||||
},
|
||||
appearance = {
|
||||
nerd_font_variant = "mono",
|
||||
},
|
||||
completion = {
|
||||
documentation = { auto_show = false },
|
||||
list = {
|
||||
selection = {
|
||||
preselect = false,
|
||||
auto_insert = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
signature = {
|
||||
enabled = true,
|
||||
},
|
||||
sources = {
|
||||
default = { "lazydev", "lsp", "path", "snippets", "buffer" },
|
||||
per_filetype = { sql = { "dadbod" } },
|
||||
providers = {
|
||||
dadbod = { module = "vim_dadbod_completion.blink" },
|
||||
lazydev = {
|
||||
name = "LazyDev",
|
||||
module = "lazydev.integrations.blink",
|
||||
score_offset = 100,
|
||||
},
|
||||
},
|
||||
},
|
||||
fuzzy = { implementation = "prefer_rust_with_warning" },
|
||||
cmdline = {
|
||||
completion = { menu = { auto_show = true } },
|
||||
},
|
||||
},
|
||||
opts_extend = { "sources.default" },
|
||||
}
|
||||
22
modules/nvim/config/lua/plugins/conform.lua
Normal file
22
modules/nvim/config/lua/plugins/conform.lua
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
return {
|
||||
"stevearc/conform.nvim",
|
||||
opts = {
|
||||
formatters_by_ft = {
|
||||
typescriptreact = { "prettierd" },
|
||||
typescript = { "prettierd" },
|
||||
javascript = { "prettierd" },
|
||||
javascriptreact = { "prettierd" },
|
||||
html = { "prettierd" },
|
||||
css = { "prettierd" },
|
||||
yaml = { "prettierd" },
|
||||
markdown = { "prettierd" },
|
||||
json = { "prettierd" },
|
||||
lua = { "stylua" },
|
||||
},
|
||||
format_on_save = {
|
||||
-- These options will be passed to conform.format()
|
||||
timeout_ms = 300,
|
||||
lsp_format = "fallback",
|
||||
},
|
||||
},
|
||||
}
|
||||
9
modules/nvim/config/lua/plugins/flash.lua
Normal file
9
modules/nvim/config/lua/plugins/flash.lua
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
return {
|
||||
"folke/flash.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{ "<CR>", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" },
|
||||
},
|
||||
}
|
||||
4
modules/nvim/config/lua/plugins/helpers.lua
Normal file
4
modules/nvim/config/lua/plugins/helpers.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
return {
|
||||
"romainl/vim-cool",
|
||||
"tpope/vim-sleuth",
|
||||
}
|
||||
7
modules/nvim/config/lua/plugins/lazydev.lua
Normal file
7
modules/nvim/config/lua/plugins/lazydev.lua
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
return {
|
||||
{
|
||||
"folke/lazydev.nvim",
|
||||
ft = "lua", -- only load on lua files
|
||||
opts = {},
|
||||
},
|
||||
}
|
||||
20
modules/nvim/config/lua/plugins/lualine.lua
Normal file
20
modules/nvim/config/lua/plugins/lualine.lua
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
return {
|
||||
"nvim-lualine/lualine.nvim",
|
||||
opts = {
|
||||
options = {
|
||||
icons_enabled = false,
|
||||
-- globalstatus = true
|
||||
component_separators = { left = "|", right = "|" },
|
||||
section_separators = { left = "", right = "" },
|
||||
},
|
||||
winbar = {},
|
||||
sections = {
|
||||
lualine_a = { "mode" },
|
||||
lualine_b = { "branch" },
|
||||
lualine_c = { "diff" },
|
||||
lualine_x = { "diagnostics" },
|
||||
lualine_y = { "location" },
|
||||
lualine_z = { "filetype" },
|
||||
},
|
||||
},
|
||||
}
|
||||
13
modules/nvim/config/lua/plugins/markdown.lua
Normal file
13
modules/nvim/config/lua/plugins/markdown.lua
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
return {
|
||||
"MeanderingProgrammer/render-markdown.nvim",
|
||||
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons", "jghauser/follow-md-links.nvim" },
|
||||
opts = {
|
||||
file_types = { "markdown", "vimwiki" },
|
||||
completions = { lsp = { enabled = true } },
|
||||
heading = {
|
||||
sign = false,
|
||||
border = false,
|
||||
position = "inline",
|
||||
},
|
||||
},
|
||||
}
|
||||
4
modules/nvim/config/lua/plugins/mini.pairs.lua
Normal file
4
modules/nvim/config/lua/plugins/mini.pairs.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
return {
|
||||
"echasnovski/mini.pairs",
|
||||
opts = {},
|
||||
}
|
||||
8
modules/nvim/config/lua/plugins/notes.lua
Normal file
8
modules/nvim/config/lua/plugins/notes.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
return {
|
||||
"vimwiki/vimwiki",
|
||||
dependencies = { "freitass/todo.txt-vim" },
|
||||
init = function()
|
||||
vim.g.vimwiki_list = { { path = "~/notes", syntax = "markdown", ext = "md" } }
|
||||
vim.g.vimwiki_global_ext = 0
|
||||
end,
|
||||
}
|
||||
6
modules/nvim/config/lua/plugins/nvim-surround.lua
Normal file
6
modules/nvim/config/lua/plugins/nvim-surround.lua
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
return {
|
||||
"kylechui/nvim-surround",
|
||||
version = "*", -- Use for stability; omit to use `main` branch for the latest features
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
}
|
||||
24
modules/nvim/config/lua/plugins/oil.lua
Normal file
24
modules/nvim/config/lua/plugins/oil.lua
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
return {
|
||||
"stevearc/oil.nvim",
|
||||
opts = {
|
||||
keymaps = {
|
||||
["q"] = "actions.close",
|
||||
},
|
||||
columns = {
|
||||
"icon",
|
||||
"permissions",
|
||||
"size",
|
||||
-- "mtime",
|
||||
},
|
||||
float = {
|
||||
padding = 4,
|
||||
border = "rounded",
|
||||
preview_split = "auto",
|
||||
},
|
||||
},
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{ "<leader>n", "<cmd>Oil --float<cr>", desc = "Open file browser", mode = "n" },
|
||||
}
|
||||
,
|
||||
}
|
||||
3
modules/nvim/config/lua/plugins/schemastore.lua
Normal file
3
modules/nvim/config/lua/plugins/schemastore.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
return {
|
||||
'b0o/schemastore.nvim'
|
||||
}
|
||||
180
modules/nvim/config/lua/plugins/snacks.lua
Normal file
180
modules/nvim/config/lua/plugins/snacks.lua
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
---@module 'snacks'
|
||||
|
||||
local filter_lsp_definitions = function(item)
|
||||
if item.file:match("/react/ts5.0/") or item.file:match("react.d.ts") then
|
||||
return false
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
return {
|
||||
"folke/snacks.nvim",
|
||||
priority = 1000,
|
||||
lazy = false,
|
||||
opts = {
|
||||
bigfile = { enabled = true },
|
||||
git = { enabled = true },
|
||||
gitbrowse = {
|
||||
enabled = true,
|
||||
what = "commit",
|
||||
},
|
||||
indent = { enabled = true },
|
||||
input = { enabled = true },
|
||||
lazygit = {
|
||||
enabled = true,
|
||||
configure = true,
|
||||
},
|
||||
notifier = { enabled = true },
|
||||
picker = {
|
||||
enabled = true,
|
||||
prompt = "λ ",
|
||||
},
|
||||
statuscolumn = { enabled = true },
|
||||
zen = { enabled = true },
|
||||
},
|
||||
keys = {
|
||||
-- Git
|
||||
{
|
||||
"<leader>gg",
|
||||
function()
|
||||
Snacks.lazygit()
|
||||
end,
|
||||
desc = "Lazygit",
|
||||
},
|
||||
{
|
||||
"<leader>gb",
|
||||
function()
|
||||
Snacks.git.blame_line()
|
||||
end,
|
||||
desc = "Show git blame for current line",
|
||||
},
|
||||
{
|
||||
"<leader>gl",
|
||||
function()
|
||||
Snacks.gitbrowse()
|
||||
end,
|
||||
desc = "Open link to line at git remote",
|
||||
},
|
||||
-- Zen Mode
|
||||
{
|
||||
"<leader>z",
|
||||
function()
|
||||
Snacks.zen()
|
||||
end,
|
||||
desc = "Toggle Zen Mode",
|
||||
},
|
||||
-- Picker
|
||||
{
|
||||
"<leader>.",
|
||||
function()
|
||||
Snacks.picker.files()
|
||||
end,
|
||||
desc = "",
|
||||
},
|
||||
{
|
||||
"<leader><leader>",
|
||||
function()
|
||||
Snacks.picker.git_files()
|
||||
end,
|
||||
desc = "Git files",
|
||||
},
|
||||
-- Find
|
||||
{
|
||||
"<leader>fr",
|
||||
function()
|
||||
Snacks.picker.recent()
|
||||
end,
|
||||
desc = "Recent",
|
||||
},
|
||||
{
|
||||
"<leader>fp",
|
||||
function()
|
||||
Snacks.picker.projects()
|
||||
end,
|
||||
desc = "Projects",
|
||||
},
|
||||
-- Search
|
||||
{
|
||||
"<leader>ss",
|
||||
function()
|
||||
Snacks.picker.grep()
|
||||
end,
|
||||
desc = "Grep",
|
||||
},
|
||||
{
|
||||
"<leader>sw",
|
||||
function()
|
||||
Snacks.picker.grep_word()
|
||||
end,
|
||||
desc = "Visual selection or word",
|
||||
mode = { "n", "x" },
|
||||
},
|
||||
{
|
||||
"<leader>su",
|
||||
function()
|
||||
Snacks.picker.undo()
|
||||
end,
|
||||
desc = "Undo History",
|
||||
},
|
||||
-- Diagnostics
|
||||
{
|
||||
"<leader>td",
|
||||
function()
|
||||
Snacks.picker.diagnostics_buffer()
|
||||
end,
|
||||
desc = "Buffer Diagnostics",
|
||||
},
|
||||
{
|
||||
"<leader>ta",
|
||||
function()
|
||||
Snacks.picker.diagnostics()
|
||||
end,
|
||||
desc = "Diagnostics",
|
||||
},
|
||||
-- LSP
|
||||
{
|
||||
"gd",
|
||||
function()
|
||||
Snacks.picker.lsp_definitions({ filter = { filter = filter_lsp_definitions } })
|
||||
end,
|
||||
desc = "Goto Definition",
|
||||
},
|
||||
{
|
||||
"gD",
|
||||
function()
|
||||
Snacks.picker.lsp_declarations()
|
||||
end,
|
||||
desc = "Goto Declaration",
|
||||
},
|
||||
{
|
||||
"grr",
|
||||
function()
|
||||
Snacks.picker.lsp_references()
|
||||
end,
|
||||
nowait = true,
|
||||
desc = "References",
|
||||
},
|
||||
{
|
||||
"gI",
|
||||
function()
|
||||
Snacks.picker.lsp_implementations()
|
||||
end,
|
||||
desc = "Goto Implementation",
|
||||
},
|
||||
{
|
||||
"gy",
|
||||
function()
|
||||
Snacks.picker.lsp_type_definitions()
|
||||
end,
|
||||
desc = "Goto T[y]pe Definition",
|
||||
},
|
||||
{
|
||||
"<leader>on",
|
||||
function()
|
||||
Snacks.notifier.show_history()
|
||||
end,
|
||||
desc = "Open notification history",
|
||||
},
|
||||
},
|
||||
}
|
||||
13
modules/nvim/config/lua/plugins/substitute.lua
Normal file
13
modules/nvim/config/lua/plugins/substitute.lua
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
return {
|
||||
"gbprod/substitute.nvim",
|
||||
config = function()
|
||||
local sub = require("substitute")
|
||||
|
||||
sub.setup()
|
||||
|
||||
vim.keymap.set("n", "s", sub.operator, { noremap = true })
|
||||
vim.keymap.set("n", "ss", sub.line, { noremap = true })
|
||||
vim.keymap.set("n", "S", sub.eol, { noremap = true })
|
||||
vim.keymap.set("x", "s", sub.visual, { noremap = true })
|
||||
end,
|
||||
}
|
||||
58
modules/nvim/config/lua/plugins/theme.lua
Normal file
58
modules/nvim/config/lua/plugins/theme.lua
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
return {
|
||||
{
|
||||
"rose-pine/neovim",
|
||||
name = "rose-pine",
|
||||
config = function()
|
||||
require("rose-pine").setup({
|
||||
variant = "auto", -- auto, main, moon, or dawn
|
||||
dark_variant = "main", -- main, moon, or dawn
|
||||
dim_inactive_windows = false,
|
||||
extend_background_behind_borders = true,
|
||||
|
||||
enable = {
|
||||
terminal = true,
|
||||
migrations = true,
|
||||
},
|
||||
|
||||
styles = {
|
||||
bold = true,
|
||||
italic = false,
|
||||
transparency = true,
|
||||
},
|
||||
|
||||
groups = {
|
||||
border = "muted",
|
||||
link = "iris",
|
||||
panel = "surface",
|
||||
|
||||
error = "love",
|
||||
hint = "iris",
|
||||
info = "foam",
|
||||
note = "pine",
|
||||
todo = "rose",
|
||||
warn = "gold",
|
||||
|
||||
git_add = "foam",
|
||||
git_change = "rose",
|
||||
git_delete = "love",
|
||||
git_dirty = "rose",
|
||||
git_ignore = "muted",
|
||||
git_merge = "iris",
|
||||
git_rename = "pine",
|
||||
git_stage = "iris",
|
||||
git_text = "rose",
|
||||
git_untracked = "subtle",
|
||||
|
||||
h1 = "iris",
|
||||
h2 = "foam",
|
||||
h3 = "rose",
|
||||
h4 = "gold",
|
||||
h5 = "pine",
|
||||
h6 = "foam",
|
||||
},
|
||||
})
|
||||
|
||||
vim.cmd("colorscheme rose-pine")
|
||||
end,
|
||||
},
|
||||
}
|
||||
7
modules/nvim/config/lua/plugins/todo-comments.lua
Normal file
7
modules/nvim/config/lua/plugins/todo-comments.lua
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
return {
|
||||
"folke/todo-comments.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
opts = {
|
||||
signs = false,
|
||||
},
|
||||
}
|
||||
100
modules/nvim/config/lua/plugins/treesitter.lua
Normal file
100
modules/nvim/config/lua/plugins/treesitter.lua
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
return {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
config = function()
|
||||
local configs = require("nvim-treesitter.configs")
|
||||
|
||||
configs.setup({
|
||||
ensure_installed = {
|
||||
"angular",
|
||||
"bash",
|
||||
"c",
|
||||
"css",
|
||||
"diff",
|
||||
"html",
|
||||
"javascript",
|
||||
"jsdoc",
|
||||
"json",
|
||||
"jsonc",
|
||||
"lua",
|
||||
"luadoc",
|
||||
"luap",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"odin",
|
||||
"printf",
|
||||
"python",
|
||||
"query",
|
||||
"regex",
|
||||
"toml",
|
||||
"tsx",
|
||||
"typescript",
|
||||
"vim",
|
||||
"vimdoc",
|
||||
"xml",
|
||||
"yaml",
|
||||
},
|
||||
auto_install = true,
|
||||
sync_install = false,
|
||||
ignore_install = {},
|
||||
modules = {},
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = "<c-space>",
|
||||
node_incremental = "<c-space>",
|
||||
scope_incremental = "<c-s>",
|
||||
node_decremental = "<M-space>",
|
||||
},
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||
keymaps = {
|
||||
-- You can use the capture groups defined in textobjects.scm
|
||||
["aa"] = "@parameter.outer",
|
||||
["ia"] = "@parameter.inner",
|
||||
["af"] = "@function.outer",
|
||||
["if"] = "@function.inner",
|
||||
["ac"] = "@class.outer",
|
||||
["ic"] = "@class.inner",
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true, -- whether to set jumps in the jumplist
|
||||
goto_next_start = {
|
||||
["]m"] = "@function.outer",
|
||||
["]]"] = "@class.outer",
|
||||
},
|
||||
goto_next_end = {
|
||||
["]M"] = "@function.outer",
|
||||
["]["] = "@class.outer",
|
||||
},
|
||||
goto_previous_start = {
|
||||
["[m"] = "@function.outer",
|
||||
["[["] = "@class.outer",
|
||||
},
|
||||
goto_previous_end = {
|
||||
["[M"] = "@function.outer",
|
||||
["[]"] = "@class.outer",
|
||||
},
|
||||
},
|
||||
swap = {
|
||||
enable = true,
|
||||
swap_next = {
|
||||
["<leader>a"] = "@parameter.inner",
|
||||
},
|
||||
swap_previous = {
|
||||
["<leader>A"] = "@parameter.inner",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
vim.treesitter.language.register("markdown", "vimwiki")
|
||||
end,
|
||||
}
|
||||
20
modules/nvim/config/lua/plugins/vim-dadbod-ui.lua
Normal file
20
modules/nvim/config/lua/plugins/vim-dadbod-ui.lua
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
return {
|
||||
"kristijanhusak/vim-dadbod-ui",
|
||||
dependencies = {
|
||||
"pbogut/vim-dadbod-ssh",
|
||||
{ "tpope/vim-dadbod", lazy = true },
|
||||
{ "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true },
|
||||
},
|
||||
cmd = {
|
||||
"DBUI",
|
||||
"DBUIToggle",
|
||||
"DBUIAddConnection",
|
||||
"DBUIFindBuffer",
|
||||
},
|
||||
init = function()
|
||||
vim.g.db_ui_use_nerd_fonts = 1
|
||||
vim.g.dbs = {
|
||||
{ name = "freed_dev", url = "sqlite:./freed.db" },
|
||||
}
|
||||
end,
|
||||
}
|
||||
171
modules/nvim/config/lua/plugins/which-key.lua
Normal file
171
modules/nvim/config/lua/plugins/which-key.lua
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
local utils = require("dnsc.utils")
|
||||
|
||||
return {
|
||||
"folke/which-key.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
local wk = require("which-key")
|
||||
|
||||
---@class wk.Opts
|
||||
local opts = {
|
||||
icons = { mappings = false },
|
||||
win = { border = "rounded" },
|
||||
}
|
||||
|
||||
wk.setup(opts)
|
||||
wk.add({
|
||||
{ "<leader>o", group = "+open", mode = "n" },
|
||||
{ "<leader>ot", ":e ~/notes/todo.txt<cr>", desc = "Open tasks", mode = "n" },
|
||||
{ "<leader>od", ":80 vsplit | :VimwikiMakeDiaryNote<cr>", desc = "Open daily note", mode = "n" },
|
||||
|
||||
{ "<leader>b", group = "+buffer", mode = "n" },
|
||||
{ "<leader>b,", "<Cmd>BufferMovePrevious<CR>", desc = "Move buffer backwards", mode = "n" },
|
||||
{
|
||||
"<leader>b.",
|
||||
"<Cmd>BufferMoveNext<CR>",
|
||||
desc = "Move buffer forward",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>bD",
|
||||
"<cmd>BufferCloseAllButCurrent<cr>",
|
||||
desc = "Delete all buffers but current",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>bd",
|
||||
"<Cmd>BufferClose<CR>",
|
||||
desc = "Delete current buffer",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>bh",
|
||||
"<Cmd>BufferPrevious<CR>",
|
||||
desc = "Go to previous buffer",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>bl",
|
||||
"<Cmd>BufferNext<CR>",
|
||||
desc = "Go to next buffer",
|
||||
mode = "n",
|
||||
},
|
||||
{ "<leader>bp", "<cmd>BufferPick<cr>", desc = "Pick a buffer", mode = "n" },
|
||||
{
|
||||
"<leader>bx",
|
||||
"<cmd>BufferCloseAllButPinned<cr>",
|
||||
desc = "Delete all buffers",
|
||||
mode = "n",
|
||||
},
|
||||
|
||||
{ "<leader>c", group = "+code", mode = "n" },
|
||||
{
|
||||
"<leader>cr",
|
||||
function()
|
||||
utils.compile_project()
|
||||
end,
|
||||
desc = "Compile project",
|
||||
mode = "n",
|
||||
},
|
||||
|
||||
{ "<leader>f", group = "+file", mode = "n" },
|
||||
{
|
||||
"<leader>fn",
|
||||
"<cmd>enew<cr>",
|
||||
desc = "Create a new file",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>fs",
|
||||
"<cmd>w<cr>",
|
||||
desc = "Save currently opened file",
|
||||
mode = "n",
|
||||
},
|
||||
|
||||
{ "<leader>qq", "<cmd>qa!<cr>", desc = "Leave neovim", mode = "n" },
|
||||
|
||||
{ "<leader>s", group = "+search", mode = "n" },
|
||||
{ "<leader>g", group = "+git", mode = "n" },
|
||||
|
||||
{ "<leader>t", group = "+diagnostics", mode = "n" },
|
||||
{ "<leader>ta", "<cmd>TodoQuickFix<cr>", desc = "Show all todo comments", mode = "n" },
|
||||
|
||||
{ "<leader>w", group = "+window", mode = "n" },
|
||||
{
|
||||
"<leader>w+",
|
||||
":vertical resize +4<CR>",
|
||||
desc = "Increase window size",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>w-",
|
||||
":vertical resize -4<CR>",
|
||||
desc = "Decrease window size",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>wx",
|
||||
"<C-W>q",
|
||||
desc = "Close active window",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>wx",
|
||||
":bd<CR>",
|
||||
desc = "Kill active window and buffer",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>wh",
|
||||
"<C-W>h",
|
||||
desc = "Move to window on left",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>wj",
|
||||
"<C-W>j",
|
||||
desc = "Move to window on bottom",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>wk",
|
||||
"<C-W>k",
|
||||
desc = "Move to window on top",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>wl",
|
||||
"<C-W>l",
|
||||
desc = "Move to window on right",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>ws",
|
||||
"<cmd>sp<cr>",
|
||||
desc = "Split windows horizontally",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>wv",
|
||||
"<cmd>vsp<cr>",
|
||||
desc = "Split windows vertically",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>wd",
|
||||
"<cmd>bd<cr>",
|
||||
desc = "Delete buffer and window",
|
||||
mode = "n",
|
||||
},
|
||||
|
||||
{ "<leader>x", group = "+config", mode = "n" },
|
||||
{
|
||||
"<leader>xn",
|
||||
"<cmd>set number relativenumber<cr>",
|
||||
desc = "Show relative numbers",
|
||||
mode = "n",
|
||||
},
|
||||
{ "<leader>xr", "<cmd>source $MYVIMRC<cr>", desc = "Reload config", mode = "n" },
|
||||
})
|
||||
end,
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue