move to backup
This commit is contained in:
parent
294dc66380
commit
a0e3d792a9
182 changed files with 156 additions and 103 deletions
5
bak/modules/nvim/config/after/ftplugin/markdown.vim
Normal file
5
bak/modules/nvim/config/after/ftplugin/markdown.vim
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
setlocal expandtab
|
||||
setlocal smartindent
|
||||
setlocal tabstop=2
|
||||
setlocal shiftwidth=2
|
||||
setlocal conceallevel=2
|
||||
5
bak/modules/nvim/config/after/ftplugin/odin.vim
Normal file
5
bak/modules/nvim/config/after/ftplugin/odin.vim
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
setlocal expandtab
|
||||
setlocal smartindent
|
||||
setlocal tabstop=2
|
||||
setlocal shiftwidth=2
|
||||
setlocal conceallevel=2
|
||||
6
bak/modules/nvim/config/after/ftplugin/vimwiki.vim
Normal file
6
bak/modules/nvim/config/after/ftplugin/vimwiki.vim
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
setlocal expandtab
|
||||
setlocal smartindent
|
||||
setlocal tabstop=2
|
||||
setlocal shiftwidth=2
|
||||
setlocal conceallevel=2
|
||||
setlocal nocompatible
|
||||
1
bak/modules/nvim/config/colors/winterly.lua
Symbolic link
1
bak/modules/nvim/config/colors/winterly.lua
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/nix/store/mp57l6qar04fcicsvmryl7fjzq6wwfmp-home-manager-files/.config/nvim/colors/winterly.lua
|
||||
7
bak/modules/nvim/config/ftdetect/fastlane.vim
Normal file
7
bak/modules/nvim/config/ftdetect/fastlane.vim
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
au BufNewFile,BufRead Appfile set ft=ruby
|
||||
au BufNewFile,BufRead Deliverfile set ft=ruby
|
||||
au BufNewFile,BufRead Fastfile set ft=ruby
|
||||
au BufNewFile,BufRead Gymfile set ft=ruby
|
||||
au BufNewFile,BufRead Matchfile set ft=ruby
|
||||
au BufNewFile,BufRead Snapfile set ft=ruby
|
||||
au BufNewFile,BufRead Scanfile set ft=ruby
|
||||
1
bak/modules/nvim/config/init.lua
Symbolic link
1
bak/modules/nvim/config/init.lua
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/nix/store/mp57l6qar04fcicsvmryl7fjzq6wwfmp-home-manager-files/.config/nvim/init.lua
|
||||
23
bak/modules/nvim/config/lazy-lock.json
Normal file
23
bak/modules/nvim/config/lazy-lock.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" },
|
||||
"codecompanion.nvim": { "branch": "main", "commit": "a8c696d1fc4268085e4306d54af39b07be884b17" },
|
||||
"conform.nvim": { "branch": "master", "commit": "cde4da5c1083d3527776fee69536107d98dae6c9" },
|
||||
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
|
||||
"follow-md-links.nvim": { "branch": "main", "commit": "728d96d268eef9666f0ee77a083e7e2f0b44f607" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||
"gitportal.nvim": { "branch": "main", "commit": "2420f27c6269184f13d018f347f36eb120403110" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" },
|
||||
"mini.pairs": { "branch": "main", "commit": "b316e68f2d242d5bd010deaab645daa27ed86297" },
|
||||
"nvim-surround": { "branch": "main", "commit": "fcfa7e02323d57bfacc3a141f8a74498e1522064" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||
"oil.nvim": { "branch": "master", "commit": "7e1cd7703ff2924d7038476dcbc04b950203b902" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||
"schemastore.nvim": { "branch": "main", "commit": "eed1834170f343c14a6768f085b26b3571a55302" },
|
||||
"snacks.nvim": { "branch": "main", "commit": "3c5c23ba91e608bd89bb36d76cb005aa63d20dbf" },
|
||||
"substitute.nvim": { "branch": "main", "commit": "9db749a880e3dd3b0eb57f698aa8f1e1630e1f25" },
|
||||
"vim-cool": { "branch": "master", "commit": "9ea940c0d537e55de0de4c0298c04b976960fb12" },
|
||||
"vim-dispatch": { "branch": "master", "commit": "a2ff28abdb2d89725192db5b8562977d392a4d3f" },
|
||||
"vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
|
||||
}
|
||||
25
bak/modules/nvim/config/lsp/astro.lua
Normal file
25
bak/modules/nvim/config/lsp/astro.lua
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
local function get_typescript_server_path(root_dir)
|
||||
local project_roots = vim.fs.find("node_modules", { path = root_dir, upward = true, limit = math.huge })
|
||||
for _, project_root in ipairs(project_roots) do
|
||||
local typescript_path = project_root .. "/typescript"
|
||||
local stat = vim.loop.fs_stat(typescript_path)
|
||||
if stat and stat.type == "directory" then
|
||||
return typescript_path .. "/lib"
|
||||
end
|
||||
end
|
||||
return ""
|
||||
end
|
||||
|
||||
return {
|
||||
cmd = { "astro-ls", "--stdio" },
|
||||
filetypes = { "astro" },
|
||||
root_markers = { "package.json", "tsconfig.json", "jsconfig.json", ".git" },
|
||||
init_options = {
|
||||
typescript = {},
|
||||
},
|
||||
before_init = function(_, config)
|
||||
if config.init_options and config.init_options.typescript and not config.init_options.typescript.tsdk then
|
||||
config.init_options.typescript.tsdk = get_typescript_server_path(config.root_dir)
|
||||
end
|
||||
end,
|
||||
}
|
||||
34
bak/modules/nvim/config/lsp/biome.lua
Normal file
34
bak/modules/nvim/config/lsp/biome.lua
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
---@type vim.lsp.Config
|
||||
return {
|
||||
cmd = function(dispatchers, config)
|
||||
local cmd = 'biome'
|
||||
local local_cmd = (config or {}).root_dir and config.root_dir .. '/node_modules/.bin/biome'
|
||||
if local_cmd and vim.fn.executable(local_cmd) == 1 then
|
||||
cmd = local_cmd
|
||||
end
|
||||
return vim.lsp.rpc.start({ cmd, 'lsp-proxy' }, dispatchers)
|
||||
end,
|
||||
filetypes = {
|
||||
'astro',
|
||||
'css',
|
||||
'graphql',
|
||||
'html',
|
||||
'javascript',
|
||||
'javascriptreact',
|
||||
'json',
|
||||
'jsonc',
|
||||
'svelte',
|
||||
'typescript',
|
||||
'typescriptreact',
|
||||
'vue',
|
||||
},
|
||||
workspace_required = true,
|
||||
root_markers = {
|
||||
'package-lock.json',
|
||||
'yarn.lock',
|
||||
'pnpm-lock.yaml',
|
||||
'bun.lockb',
|
||||
'bun.lock',
|
||||
'deno.lock',
|
||||
},
|
||||
}
|
||||
152
bak/modules/nvim/config/lsp/eslint.lua
Normal file
152
bak/modules/nvim/config/lsp/eslint.lua
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
local utils = require("dnsc.utils")
|
||||
local lsp = vim.lsp
|
||||
|
||||
local eslint_config_files = {
|
||||
".eslintrc",
|
||||
".eslintrc.js",
|
||||
".eslintrc.cjs",
|
||||
".eslintrc.yaml",
|
||||
".eslintrc.yml",
|
||||
".eslintrc.json",
|
||||
"eslint.config.js",
|
||||
"eslint.config.mjs",
|
||||
"eslint.config.cjs",
|
||||
"eslint.config.ts",
|
||||
"eslint.config.mts",
|
||||
"eslint.config.cts",
|
||||
}
|
||||
|
||||
---@type vim.lsp.Config
|
||||
return {
|
||||
cmd = { "vscode-eslint-language-server", "--stdio" },
|
||||
filetypes = {
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"javascript.jsx",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
"typescript.tsx",
|
||||
"vue",
|
||||
"svelte",
|
||||
"astro",
|
||||
"htmlangular",
|
||||
},
|
||||
workspace_required = true,
|
||||
on_attach = function(client, bufnr)
|
||||
vim.api.nvim_buf_create_user_command(0, "LspEslintFixAll", function()
|
||||
client:request_sync("workspace/executeCommand", {
|
||||
command = "eslint.applyAllFixes",
|
||||
arguments = {
|
||||
{
|
||||
uri = vim.uri_from_bufnr(bufnr),
|
||||
version = lsp.util.buf_versions[bufnr],
|
||||
},
|
||||
},
|
||||
}, nil, bufnr)
|
||||
end, {})
|
||||
end,
|
||||
root_markers = eslint_config_files,
|
||||
-- Refer to https://github.com/Microsoft/vscode-eslint#settings-options for documentation.
|
||||
settings = {
|
||||
validate = "on",
|
||||
packageManager = nil,
|
||||
useESLintClass = false,
|
||||
experimental = {
|
||||
useFlatConfig = false,
|
||||
},
|
||||
codeActionOnSave = {
|
||||
enable = false,
|
||||
mode = "all",
|
||||
},
|
||||
format = true,
|
||||
quiet = false,
|
||||
onIgnoredFiles = "off",
|
||||
rulesCustomizations = {},
|
||||
run = "onType",
|
||||
problems = {
|
||||
shortenToSingleLine = false,
|
||||
},
|
||||
-- nodePath configures the directory in which the eslint server should start its node_modules resolution.
|
||||
-- This path is relative to the workspace folder (root dir) of the server instance.
|
||||
nodePath = "",
|
||||
-- use the workspace folder location or the file location (if no workspace folder is open) as the working directory
|
||||
workingDirectory = { mode = "auto" },
|
||||
codeAction = {
|
||||
disableRuleComment = {
|
||||
enable = true,
|
||||
location = "separateLine",
|
||||
},
|
||||
showDocumentation = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
before_init = function(_, config)
|
||||
-- The "workspaceFolder" is a VSCode concept. It limits how far the
|
||||
-- server will traverse the file system when locating the ESLint config
|
||||
-- file (e.g., .eslintrc).
|
||||
local root_dir = config.root_dir
|
||||
|
||||
if root_dir then
|
||||
config.settings = config.settings or {}
|
||||
config.settings.workspaceFolder = {
|
||||
uri = root_dir,
|
||||
name = vim.fn.fnamemodify(root_dir, ":t"),
|
||||
}
|
||||
|
||||
-- Support flat config files
|
||||
-- They contain 'config' in the file name
|
||||
local flat_config_files = vim.tbl_filter(function(file)
|
||||
return file:match("config")
|
||||
end, eslint_config_files)
|
||||
|
||||
for _, file in ipairs(flat_config_files) do
|
||||
local found_files = vim.fn.globpath(root_dir, file, true, true)
|
||||
|
||||
-- Filter out files inside node_modules
|
||||
local filtered_files = {}
|
||||
for _, found_file in ipairs(found_files) do
|
||||
if string.find(found_file, "[/\\]node_modules[/\\]") == nil then
|
||||
table.insert(filtered_files, found_file)
|
||||
end
|
||||
end
|
||||
|
||||
if #filtered_files > 0 then
|
||||
config.settings.experimental = config.settings.experimental or {}
|
||||
config.settings.experimental.useFlatConfig = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
-- Support Yarn2 (PnP) projects
|
||||
local pnp_cjs = root_dir .. "/.pnp.cjs"
|
||||
local pnp_js = root_dir .. "/.pnp.js"
|
||||
if vim.uv.fs_stat(pnp_cjs) or vim.uv.fs_stat(pnp_js) then
|
||||
local cmd = config.cmd
|
||||
config.cmd = vim.list_extend({ "yarn", "exec" }, cmd)
|
||||
end
|
||||
end
|
||||
end,
|
||||
handlers = {
|
||||
["eslint/openDoc"] = function(_, result)
|
||||
if result then
|
||||
vim.ui.open(result.url)
|
||||
end
|
||||
return {}
|
||||
end,
|
||||
["eslint/confirmESLintExecution"] = function(_, result)
|
||||
if not result then
|
||||
return
|
||||
end
|
||||
return 4 -- approved
|
||||
end,
|
||||
["eslint/probeFailed"] = function()
|
||||
vim.notify("[lspconfig] ESLint probe failed.", vim.log.levels.WARN)
|
||||
return {}
|
||||
end,
|
||||
["eslint/noLibrary"] = function()
|
||||
vim.notify("[lspconfig] Unable to find ESLint library.", vim.log.levels.WARN)
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
}
|
||||
99
bak/modules/nvim/config/lsp/gopls.lua
Normal file
99
bak/modules/nvim/config/lsp/gopls.lua
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
---@brief
|
||||
---
|
||||
--- https://github.com/golang/tools/tree/master/gopls
|
||||
---
|
||||
--- Google's lsp server for golang.
|
||||
|
||||
--- @class go_dir_custom_args
|
||||
---
|
||||
--- @field envvar_id string
|
||||
---
|
||||
--- @field custom_subdir string?
|
||||
|
||||
local mod_cache = nil
|
||||
local std_lib = nil
|
||||
|
||||
---@param custom_args go_dir_custom_args
|
||||
---@param on_complete fun(dir: string | nil)
|
||||
local function identify_go_dir(custom_args, on_complete)
|
||||
local cmd = { "go", "env", custom_args.envvar_id }
|
||||
vim.system(cmd, { text = true }, function(output)
|
||||
local res = vim.trim(output.stdout or "")
|
||||
if output.code == 0 and res ~= "" then
|
||||
if custom_args.custom_subdir and custom_args.custom_subdir ~= "" then
|
||||
res = res .. custom_args.custom_subdir
|
||||
end
|
||||
on_complete(res)
|
||||
else
|
||||
vim.schedule(function()
|
||||
vim.notify(
|
||||
("[gopls] identify " .. custom_args.envvar_id .. " dir cmd failed with code %d: %s\n%s"):format(
|
||||
output.code,
|
||||
vim.inspect(cmd),
|
||||
output.stderr
|
||||
)
|
||||
)
|
||||
end)
|
||||
on_complete(nil)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
---@return string?
|
||||
local function get_std_lib_dir()
|
||||
if std_lib and std_lib ~= "" then
|
||||
return std_lib
|
||||
end
|
||||
|
||||
identify_go_dir({ envvar_id = "GOROOT", custom_subdir = "/src" }, function(dir)
|
||||
if dir then
|
||||
std_lib = dir
|
||||
end
|
||||
end)
|
||||
return std_lib
|
||||
end
|
||||
|
||||
---@return string?
|
||||
local function get_mod_cache_dir()
|
||||
if mod_cache and mod_cache ~= "" then
|
||||
return mod_cache
|
||||
end
|
||||
|
||||
identify_go_dir({ envvar_id = "GOMODCACHE" }, function(dir)
|
||||
if dir then
|
||||
mod_cache = dir
|
||||
end
|
||||
end)
|
||||
return mod_cache
|
||||
end
|
||||
|
||||
---@param fname string
|
||||
---@return string?
|
||||
local function get_root_dir(fname)
|
||||
if mod_cache and fname:sub(1, #mod_cache) == mod_cache then
|
||||
local clients = vim.lsp.get_clients({ name = "gopls" })
|
||||
if #clients > 0 then
|
||||
return clients[#clients].config.root_dir
|
||||
end
|
||||
end
|
||||
if std_lib and fname:sub(1, #std_lib) == std_lib then
|
||||
local clients = vim.lsp.get_clients({ name = "gopls" })
|
||||
if #clients > 0 then
|
||||
return clients[#clients].config.root_dir
|
||||
end
|
||||
end
|
||||
return vim.fs.root(fname, "go.work") or vim.fs.root(fname, "go.mod") or vim.fs.root(fname, ".git")
|
||||
end
|
||||
|
||||
---@type vim.lsp.Config
|
||||
return {
|
||||
cmd = { "gopls" },
|
||||
filetypes = { "go", "gomod", "gowork", "gotmpl" },
|
||||
root_dir = function(bufnr, on_dir)
|
||||
local fname = vim.api.nvim_buf_get_name(bufnr)
|
||||
get_mod_cache_dir()
|
||||
get_std_lib_dir()
|
||||
-- see: https://github.com/neovim/nvim-lspconfig/issues/804
|
||||
on_dir(get_root_dir(fname))
|
||||
end,
|
||||
}
|
||||
15
bak/modules/nvim/config/lsp/jsonls.lua
Normal file
15
bak/modules/nvim/config/lsp/jsonls.lua
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
return {
|
||||
cmd = { "vscode-json-language-server", "--stdio" },
|
||||
filetypes = { "json", "jsonc" },
|
||||
init_options = {
|
||||
provideFormatter = true,
|
||||
},
|
||||
root_markers = { ".git" },
|
||||
single_file_support = true,
|
||||
settings = {
|
||||
json = {
|
||||
schemas = require("schemastore").json.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
},
|
||||
}
|
||||
46
bak/modules/nvim/config/lsp/lua_ls.lua
Normal file
46
bak/modules/nvim/config/lsp/lua_ls.lua
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
return {
|
||||
cmd = { "lua-language-server" },
|
||||
filetypes = { "lua" },
|
||||
root_markers = {
|
||||
".luarc.json",
|
||||
".luarc.jsonc",
|
||||
".luacheckrc",
|
||||
".stylua.toml",
|
||||
"stylua.toml",
|
||||
"selene.toml",
|
||||
"selene.yml",
|
||||
".git",
|
||||
},
|
||||
single_file_support = true,
|
||||
log_level = vim.lsp.protocol.MessageType.Warning,
|
||||
on_init = function(client)
|
||||
if client.workspace_folders then
|
||||
local path = client.workspace_folders[1].name
|
||||
if
|
||||
path ~= vim.fn.stdpath("config")
|
||||
and (vim.uv.fs_stat(path .. "/.luarc.json") or vim.uv.fs_stat(path .. "/.luarc.jsonc"))
|
||||
then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
|
||||
runtime = {
|
||||
version = "LuaJIT",
|
||||
},
|
||||
workspace = {
|
||||
checkThirdParty = false,
|
||||
library = {
|
||||
vim.env.VIMRUNTIME,
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
settings = {
|
||||
Lua = {
|
||||
diagnostics = {
|
||||
globals = { "vim" },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
5
bak/modules/nvim/config/lsp/nil_ls.lua
Normal file
5
bak/modules/nvim/config/lsp/nil_ls.lua
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
return {
|
||||
cmd = { "nil" },
|
||||
filetypes = { "nix" },
|
||||
root_markers = { "flake.nix", ".git" },
|
||||
}
|
||||
153
bak/modules/nvim/config/lsp/tailwindcss.lua
Normal file
153
bak/modules/nvim/config/lsp/tailwindcss.lua
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
function root_markers_with_field(root_files, new_names, field, fname)
|
||||
local path = vim.fn.fnamemodify(fname, ":h")
|
||||
local found = vim.fs.find(new_names, { path = path, upward = true })
|
||||
|
||||
for _, f in ipairs(found or {}) do
|
||||
-- Match the given `field`.
|
||||
for line in io.lines(f) do
|
||||
if line:find(field) then
|
||||
root_files[#root_files + 1] = vim.fs.basename(f)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return root_files
|
||||
end
|
||||
|
||||
function insert_package_json(root_files, field, fname)
|
||||
return root_markers_with_field(root_files, { "package.json", "package.json5" }, field, fname)
|
||||
end
|
||||
|
||||
return {
|
||||
cmd = { "tailwindcss-language-server", "--stdio" },
|
||||
-- filetypes copied and adjusted from tailwindcss-intellisense
|
||||
filetypes = {
|
||||
-- html
|
||||
"aspnetcorerazor",
|
||||
"astro",
|
||||
"astro-markdown",
|
||||
"blade",
|
||||
"clojure",
|
||||
"django-html",
|
||||
"htmldjango",
|
||||
"edge",
|
||||
"eelixir", -- vim ft
|
||||
"elixir",
|
||||
"ejs",
|
||||
"erb",
|
||||
"eruby", -- vim ft
|
||||
"gohtml",
|
||||
"gohtmltmpl",
|
||||
"haml",
|
||||
"handlebars",
|
||||
"hbs",
|
||||
"html",
|
||||
"htmlangular",
|
||||
"html-eex",
|
||||
"heex",
|
||||
"jade",
|
||||
"leaf",
|
||||
"liquid",
|
||||
"markdown",
|
||||
"mdx",
|
||||
"mustache",
|
||||
"njk",
|
||||
"nunjucks",
|
||||
"php",
|
||||
"razor",
|
||||
"slim",
|
||||
"twig",
|
||||
-- css
|
||||
"css",
|
||||
"less",
|
||||
"postcss",
|
||||
"sass",
|
||||
"scss",
|
||||
"stylus",
|
||||
"sugarss",
|
||||
-- js
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"reason",
|
||||
"rescript",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
-- mixed
|
||||
"vue",
|
||||
"svelte",
|
||||
"templ",
|
||||
},
|
||||
settings = {
|
||||
tailwindCSS = {
|
||||
validate = true,
|
||||
lint = {
|
||||
cssConflict = "warning",
|
||||
invalidApply = "error",
|
||||
invalidScreen = "error",
|
||||
invalidVariant = "error",
|
||||
invalidConfigPath = "error",
|
||||
invalidTailwindDirective = "error",
|
||||
recommendedVariantOrder = "warning",
|
||||
},
|
||||
classAttributes = {
|
||||
"class",
|
||||
"className",
|
||||
"class:list",
|
||||
"classList",
|
||||
"ngClass",
|
||||
},
|
||||
includeLanguages = {
|
||||
eelixir = "html-eex",
|
||||
elixir = "phoenix-heex",
|
||||
eruby = "erb",
|
||||
heex = "phoenix-heex",
|
||||
htmlangular = "html",
|
||||
templ = "html",
|
||||
},
|
||||
},
|
||||
},
|
||||
before_init = function(_, config)
|
||||
if not config.settings then
|
||||
config.settings = {}
|
||||
end
|
||||
if not config.settings.editor then
|
||||
config.settings.editor = {}
|
||||
end
|
||||
if not config.settings.editor.tabSize then
|
||||
config.settings.editor.tabSize = vim.lsp.util.get_effective_tabstop()
|
||||
end
|
||||
end,
|
||||
workspace_required = true,
|
||||
root_dir = function(bufnr, on_dir)
|
||||
local root_files = {
|
||||
-- Generic
|
||||
"tailwind.config.js",
|
||||
"tailwind.config.cjs",
|
||||
"tailwind.config.mjs",
|
||||
"tailwind.config.ts",
|
||||
"postcss.config.js",
|
||||
"postcss.config.cjs",
|
||||
"postcss.config.mjs",
|
||||
"postcss.config.ts",
|
||||
-- Phoenix
|
||||
"assets/tailwind.config.js",
|
||||
"assets/tailwind.config.cjs",
|
||||
"assets/tailwind.config.mjs",
|
||||
"assets/tailwind.config.ts",
|
||||
-- Django
|
||||
"theme/static_src/tailwind.config.js",
|
||||
"theme/static_src/tailwind.config.cjs",
|
||||
"theme/static_src/tailwind.config.mjs",
|
||||
"theme/static_src/tailwind.config.ts",
|
||||
"theme/static_src/postcss.config.js",
|
||||
-- Rails
|
||||
"app/assets/stylesheets/application.tailwind.css",
|
||||
"app/assets/tailwind/application.css",
|
||||
}
|
||||
local fname = vim.api.nvim_buf_get_name(bufnr)
|
||||
root_files = insert_package_json(root_files, "tailwindcss", fname)
|
||||
root_files = root_markers_with_field(root_files, { "mix.lock" }, "tailwind", fname)
|
||||
on_dir(vim.fs.dirname(vim.fs.find(root_files, { path = fname, upward = true })[1]))
|
||||
end,
|
||||
}
|
||||
22
bak/modules/nvim/config/lsp/ts_ls.lua
Normal file
22
bak/modules/nvim/config/lsp/ts_ls.lua
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
return {
|
||||
cmd = { "typescript-language-server", "--stdio" },
|
||||
filetypes = {
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"javascript.jsx",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
"typescript.tsx",
|
||||
},
|
||||
root_markers = { "tsconfig.json", "package.json", ".git" },
|
||||
init_options = {
|
||||
hostInfo = "neovim",
|
||||
preferences = {
|
||||
includeCompletionsForModuleExports = true,
|
||||
includeCompletionsForImportStatements = true,
|
||||
importModuleSpecifierPreference = "relative",
|
||||
importModuleSpecifierEnding = "minimal",
|
||||
},
|
||||
},
|
||||
single_file_support = true,
|
||||
}
|
||||
10
bak/modules/nvim/config/lua/dnsc/keymaps.lua
Normal file
10
bak/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>")
|
||||
80
bak/modules/nvim/config/lua/dnsc/lazy.lua
Normal file
80
bak/modules/nvim/config/lua/dnsc/lazy.lua
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
-- 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 = " "
|
||||
|
||||
vim.cmd([[colorscheme winterly]])
|
||||
|
||||
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,
|
||||
foldlevel = 99,
|
||||
foldlevelstart = 99,
|
||||
}
|
||||
|
||||
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 = { "winterly" } },
|
||||
-- automatically check for plugin updates
|
||||
checker = { enabled = false },
|
||||
})
|
||||
34
bak/modules/nvim/config/lua/dnsc/lsp.lua
Normal file
34
bak/modules/nvim/config/lua/dnsc/lsp.lua
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
vim.lsp.enable("ts_ls")
|
||||
vim.lsp.enable("lua_ls")
|
||||
vim.lsp.enable("jsonls")
|
||||
vim.lsp.enable("nil_ls")
|
||||
vim.lsp.enable("astro")
|
||||
vim.lsp.enable("tailwindcss")
|
||||
vim.lsp.enable("gopls")
|
||||
vim.lsp.enable("eslint")
|
||||
vim.lsp.enable("biome")
|
||||
|
||||
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,
|
||||
})
|
||||
1
bak/modules/nvim/config/lua/dnsc/palette.lua
Symbolic link
1
bak/modules/nvim/config/lua/dnsc/palette.lua
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/nix/store/mp57l6qar04fcicsvmryl7fjzq6wwfmp-home-manager-files/.config/nvim/lua/dnsc/palette.lua
|
||||
152
bak/modules/nvim/config/lua/dnsc/utils.lua
Normal file
152
bak/modules/nvim/config/lua/dnsc/utils.lua
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
vim.api.nvim_create_autocmd("TextYankPost", {
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
})
|
||||
|
||||
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",
|
||||
["flake.nix"] = "sudo just deploy",
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
local function root_markers_with_field(root_files, new_names, field, fname)
|
||||
local path = vim.fn.fnamemodify(fname, ":h")
|
||||
local found = vim.fs.find(new_names, { path = path, upward = true })
|
||||
|
||||
for _, f in ipairs(found or {}) do
|
||||
-- Match the given `field`.
|
||||
for line in io.lines(f) do
|
||||
if line:find(field) then
|
||||
root_files[#root_files + 1] = vim.fs.basename(f)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return root_files
|
||||
end
|
||||
|
||||
local function insert_package_json(root_files, field, fname)
|
||||
return root_markers_with_field(root_files, { "package.json", "package.json5" }, field, fname)
|
||||
end
|
||||
|
||||
return {
|
||||
compile_project = compile_project,
|
||||
filter = filter,
|
||||
filterReactDTS = filterReactDTS,
|
||||
root_pattern = root_pattern,
|
||||
insert_package_json = insert_package_json,
|
||||
root_markers_with_field = root_markers_with_field,
|
||||
}
|
||||
49
bak/modules/nvim/config/lua/plugins/blink.lua
Normal file
49
bak/modules/nvim/config/lua/plugins/blink.lua
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
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 = { "lsp", "path", "snippets", "buffer" },
|
||||
per_filetype = {
|
||||
sql = { "dadbod" },
|
||||
mysql = { "dadbod" },
|
||||
plsql = { "dadbod" },
|
||||
codecompanion = { "codecompanion" },
|
||||
},
|
||||
providers = {
|
||||
dadbod = { module = "vim_dadbod_completion.blink" },
|
||||
},
|
||||
},
|
||||
fuzzy = { implementation = "prefer_rust_with_warning" },
|
||||
cmdline = {
|
||||
completion = { menu = { auto_show = true } },
|
||||
},
|
||||
},
|
||||
opts_extend = { "sources.default" },
|
||||
}
|
||||
26
bak/modules/nvim/config/lua/plugins/codecompanion.lua
Normal file
26
bak/modules/nvim/config/lua/plugins/codecompanion.lua
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
return {
|
||||
"olimorris/codecompanion.nvim",
|
||||
config = function()
|
||||
require("codecompanion").setup({
|
||||
strategies = {
|
||||
chat = {
|
||||
adapter = "anthropic",
|
||||
},
|
||||
inline = {
|
||||
adapter = "anthropic",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
vim.cmd([[cab cc CodeCompanion]])
|
||||
end,
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>cc", "<cmd>CodeCompanionChat Toggle<cr>", desc = "Open companion chat", mode = "n" },
|
||||
{ "<leader>ca", "<cmd>CodeCompanionActions<cr>", desc = "Open companion actions", mode = "n" },
|
||||
{ "ga", "<cmd>CodeCompanionChat Add<cr>", desc = "Add selection", mode = "v" },
|
||||
},
|
||||
}
|
||||
28
bak/modules/nvim/config/lua/plugins/conform.lua
Normal file
28
bak/modules/nvim/config/lua/plugins/conform.lua
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
return {
|
||||
"stevearc/conform.nvim",
|
||||
opts = {
|
||||
formatters_by_ft = {
|
||||
typescriptreact = { "biome-check", "prettierd", stop_after_first = true },
|
||||
astro = { "prettierd" },
|
||||
typescript = { "biome-check", "prettierd", stop_after_first = true },
|
||||
javascript = { "biome-check", "prettierd", stop_after_first = true },
|
||||
javascriptreact = { "biome-check", "prettierd", stop_after_first = true },
|
||||
html = { "prettierd" },
|
||||
htmlangular = { "prettierd" },
|
||||
css = { "biome-check", "prettierd", stop_after_first = true },
|
||||
yaml = { "prettierd" },
|
||||
markdown = { "prettierd" },
|
||||
json = { "biome-check", "prettierd", stop_after_first = true },
|
||||
lua = { "stylua" },
|
||||
go = { "goimports" },
|
||||
gomod = { "goimports" },
|
||||
gowork = { "goimports" },
|
||||
gotmpl = { "goimports" },
|
||||
},
|
||||
format_on_save = {
|
||||
-- These options will be passed to conform.format()
|
||||
timeout_ms = 500,
|
||||
lsp_format = "fallback",
|
||||
},
|
||||
},
|
||||
}
|
||||
3
bak/modules/nvim/config/lua/plugins/dispatch.lua
Normal file
3
bak/modules/nvim/config/lua/plugins/dispatch.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
return {
|
||||
"tpope/vim-dispatch",
|
||||
}
|
||||
25
bak/modules/nvim/config/lua/plugins/flash.lua
Normal file
25
bak/modules/nvim/config/lua/plugins/flash.lua
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
return {
|
||||
"folke/flash.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
config = function()
|
||||
vim.api.nvim_create_autocmd("BufReadPost", {
|
||||
pattern = "quickfix",
|
||||
callback = function()
|
||||
vim.keymap.set("n", "<CR>", "<CR>", { buffer = true })
|
||||
end,
|
||||
})
|
||||
end,
|
||||
keys = {
|
||||
{
|
||||
"<CR>",
|
||||
mode = { "n", "x", "o" },
|
||||
function()
|
||||
if vim.bo.filetype ~= "qf" then
|
||||
require("flash").jump()
|
||||
end
|
||||
end,
|
||||
desc = "Flash",
|
||||
},
|
||||
},
|
||||
}
|
||||
24
bak/modules/nvim/config/lua/plugins/gitportal.lua
Normal file
24
bak/modules/nvim/config/lua/plugins/gitportal.lua
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
return {
|
||||
"trevorhauter/gitportal.nvim",
|
||||
opts = {
|
||||
always_include_current_line = true,
|
||||
switch_branch_or_commit_upon_ingestion = "ask_first",
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>gll",
|
||||
"<cmd>GitPortal<cr>",
|
||||
desc = "Browse file at git remote",
|
||||
},
|
||||
{
|
||||
"<leader>gly",
|
||||
"<cmd>GitPortal copy_link_to_clipboard<cr>",
|
||||
desc = "Yank git link to clipboard",
|
||||
},
|
||||
{
|
||||
"<leader>glo",
|
||||
"<cmd>GitPortal open_link<cr>",
|
||||
desc = "Browse file at git remote",
|
||||
},
|
||||
},
|
||||
}
|
||||
4
bak/modules/nvim/config/lua/plugins/helpers.lua
Normal file
4
bak/modules/nvim/config/lua/plugins/helpers.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
return {
|
||||
"romainl/vim-cool",
|
||||
"tpope/vim-sleuth",
|
||||
}
|
||||
78
bak/modules/nvim/config/lua/plugins/lualine.lua
Normal file
78
bak/modules/nvim/config/lua/plugins/lualine.lua
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
local palette = require("dnsc.palette")
|
||||
|
||||
local modus_vivendi_tinted = {
|
||||
normal = {
|
||||
a = { bg = palette.magenta, fg = palette.bg, gui = "bold" },
|
||||
b = { bg = palette.bg_secondary, fg = palette.magenta },
|
||||
c = { bg = palette.bg_secondary, fg = palette.magenta },
|
||||
},
|
||||
insert = {
|
||||
a = { bg = palette.cyan_bright, fg = palette.bg, gui = "bold" },
|
||||
b = { bg = palette.bg_secondary, fg = palette.cyan_bright },
|
||||
c = { bg = palette.bg_secondary, fg = palette.cyan_bright },
|
||||
},
|
||||
visual = {
|
||||
a = { bg = palette.blue_bright, fg = palette.bg, gui = "bold" },
|
||||
b = { bg = palette.bg_secondary, fg = palette.blue_bright },
|
||||
c = { bg = palette.bg_secondary, fg = palette.blue_bright },
|
||||
},
|
||||
replace = {
|
||||
a = { bg = palette.red_bright, fg = palette.bg, gui = "bold" },
|
||||
b = { bg = palette.bg_secondary, fg = palette.red_bright },
|
||||
c = { bg = palette.bg_secondary, fg = palette.red_bright },
|
||||
},
|
||||
command = {
|
||||
a = { bg = palette.green_bright, fg = palette.bg, gui = "bold" },
|
||||
b = { bg = palette.bg_secondary, fg = palette.green_bright },
|
||||
c = { bg = palette.bg_secondary, fg = palette.green_bright },
|
||||
},
|
||||
inactive = {
|
||||
a = { bg = palette.bg_secondary, fg = palette.fg_dim },
|
||||
b = { bg = palette.bg_secondary, fg = palette.fg_dim },
|
||||
c = { bg = palette.bg_secondary, fg = palette.fg_dim },
|
||||
},
|
||||
}
|
||||
|
||||
return {
|
||||
"nvim-lualine/lualine.nvim",
|
||||
opts = {
|
||||
options = {
|
||||
theme = modus_vivendi_tinted,
|
||||
icons_enabled = false,
|
||||
-- globalstatus = true
|
||||
component_separators = { left = "|", right = "|" },
|
||||
section_separators = { left = "", right = "" },
|
||||
},
|
||||
winbar = {},
|
||||
sections = {
|
||||
lualine_a = {
|
||||
{
|
||||
"mode",
|
||||
fmt = function(str)
|
||||
return str:sub(1, 1)
|
||||
end,
|
||||
},
|
||||
},
|
||||
lualine_b = {
|
||||
{
|
||||
"filename",
|
||||
file_status = true,
|
||||
newfile_status = false,
|
||||
path = 1,
|
||||
shorting_target = 120,
|
||||
symbols = {
|
||||
modified = "[+]", -- Text to show when the file is modified.
|
||||
readonly = "[-]", -- Text to show when the file is non-modifiable or readonly.
|
||||
unnamed = "[No Name]", -- Text to show for unnamed buffers.
|
||||
newfile = "[New]", -- Text to show for newly created file before first write
|
||||
},
|
||||
},
|
||||
"encoding",
|
||||
},
|
||||
lualine_c = {},
|
||||
lualine_x = {},
|
||||
lualine_y = { "branch", "diff", "diagnostics" },
|
||||
lualine_z = { "progress" },
|
||||
},
|
||||
},
|
||||
}
|
||||
7
bak/modules/nvim/config/lua/plugins/markdown.lua
Normal file
7
bak/modules/nvim/config/lua/plugins/markdown.lua
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
return {
|
||||
"jghauser/follow-md-links.nvim",
|
||||
ft = { "markdown" },
|
||||
config = function()
|
||||
vim.keymap.set("n", "<bs>", ":edit #<cr>", { silent = true })
|
||||
end,
|
||||
}
|
||||
4
bak/modules/nvim/config/lua/plugins/mini.pairs.lua
Normal file
4
bak/modules/nvim/config/lua/plugins/mini.pairs.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
return {
|
||||
"echasnovski/mini.pairs",
|
||||
opts = {},
|
||||
}
|
||||
6
bak/modules/nvim/config/lua/plugins/nvim-surround.lua
Normal file
6
bak/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 = {},
|
||||
}
|
||||
19
bak/modules/nvim/config/lua/plugins/oil.lua
Normal file
19
bak/modules/nvim/config/lua/plugins/oil.lua
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
return {
|
||||
"stevearc/oil.nvim",
|
||||
opts = {
|
||||
keymaps = {
|
||||
["q"] = "actions.close",
|
||||
},
|
||||
columns = {
|
||||
"icon",
|
||||
"permissions",
|
||||
"size",
|
||||
"mtime",
|
||||
},
|
||||
},
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{ "<leader>n", "<cmd>Oil<cr>", desc = "Open file browser", mode = "n" },
|
||||
}
|
||||
,
|
||||
}
|
||||
3
bak/modules/nvim/config/lua/plugins/schemastore.lua
Normal file
3
bak/modules/nvim/config/lua/plugins/schemastore.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
return {
|
||||
'b0o/schemastore.nvim'
|
||||
}
|
||||
217
bak/modules/nvim/config/lua/plugins/snacks.lua
Normal file
217
bak/modules/nvim/config/lua/plugins/snacks.lua
Normal file
|
|
@ -0,0 +1,217 @@
|
|||
---@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 },
|
||||
bufdelete = { enabled = true },
|
||||
git = { enabled = true },
|
||||
-- TODO: Integrate GH and see how that works out
|
||||
-- gh = {
|
||||
-- enabled = true
|
||||
-- }
|
||||
indent = {
|
||||
enabled = true,
|
||||
},
|
||||
input = { enabled = true },
|
||||
lazygit = {
|
||||
enabled = 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",
|
||||
},
|
||||
-- Zen Mode
|
||||
{
|
||||
"<leader>z",
|
||||
function()
|
||||
Snacks.zen()
|
||||
end,
|
||||
desc = "Toggle Zen Mode",
|
||||
},
|
||||
-- Picker
|
||||
{
|
||||
"<leader>.",
|
||||
function()
|
||||
Snacks.picker.files({ hidden = true })
|
||||
end,
|
||||
desc = "Files",
|
||||
},
|
||||
{
|
||||
"<leader>a",
|
||||
function()
|
||||
Snacks.picker.files({ hidden = true, ignored = true })
|
||||
end,
|
||||
desc = "All files",
|
||||
},
|
||||
{
|
||||
"<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",
|
||||
},
|
||||
{
|
||||
"<leader>bb",
|
||||
function()
|
||||
Snacks.picker.buffers()
|
||||
end,
|
||||
desc = "List buffers",
|
||||
},
|
||||
{
|
||||
"<leader>bd",
|
||||
function()
|
||||
Snacks.bufdelete()
|
||||
end,
|
||||
desc = "Buffers",
|
||||
},
|
||||
{
|
||||
"<leader>bD",
|
||||
function()
|
||||
Snacks.bufdelete.all()
|
||||
end,
|
||||
desc = "Buffers",
|
||||
},
|
||||
{
|
||||
"<leader>bo",
|
||||
function()
|
||||
Snacks.bufdelete.other()
|
||||
end,
|
||||
desc = "Buffers",
|
||||
},
|
||||
-- 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",
|
||||
},
|
||||
{
|
||||
"<leader>oh",
|
||||
function()
|
||||
Snacks.picker.highlights()
|
||||
end,
|
||||
desc = "List highlights",
|
||||
},
|
||||
},
|
||||
}
|
||||
13
bak/modules/nvim/config/lua/plugins/substitute.lua
Normal file
13
bak/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,
|
||||
}
|
||||
100
bak/modules/nvim/config/lua/plugins/treesitter.lua
Normal file
100
bak/modules/nvim/config/lua/plugins/treesitter.lua
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
return {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"angular",
|
||||
"bash",
|
||||
"c",
|
||||
"css",
|
||||
"diff",
|
||||
"html",
|
||||
"javascript",
|
||||
"jsdoc",
|
||||
"json",
|
||||
"jsonc",
|
||||
"lua",
|
||||
"luadoc",
|
||||
"luap",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"odin",
|
||||
"go",
|
||||
"goctl",
|
||||
"gowork",
|
||||
"gomod",
|
||||
"gosum",
|
||||
"gotmpl",
|
||||
"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",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
153
bak/modules/nvim/config/lua/plugins/which-key.lua
Normal file
153
bak/modules/nvim/config/lua/plugins/which-key.lua
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
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>od",
|
||||
"<cmd>vsplit | lua vim.lsp.buf.definition()<cr>",
|
||||
desc = "Go to definition in other window",
|
||||
mode = "n",
|
||||
},
|
||||
{ "<leader>b", group = "+buffer", mode = "n" },
|
||||
{
|
||||
"<leader>bn",
|
||||
"<Cmd>bn<CR>",
|
||||
desc = "Move to next buffer",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>bp",
|
||||
"<Cmd>bp<CR>",
|
||||
desc = "Move to previous buffer",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
"<leader>bk",
|
||||
"<Cmd>bn<CR>",
|
||||
desc = "Kill buffer and window",
|
||||
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>close<cr>",
|
||||
desc = "Delete window only",
|
||||
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,
|
||||
}
|
||||
9
bak/modules/nvim/config/stylua.toml
Normal file
9
bak/modules/nvim/config/stylua.toml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
column_width = 120
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
quote_style = "AutoPreferDouble"
|
||||
call_parentheses = "Always"
|
||||
collapse_simple_statement = "Never"
|
||||
|
||||
[sort_requires]
|
||||
enabled = false
|
||||
Loading…
Add table
Add a link
Reference in a new issue