Merge branch 'master' into mobile-synx
This commit is contained in:
commit
e608db2e58
|
@ -6,3 +6,4 @@ coc-settings.json
|
||||||
lazy-lock.json
|
lazy-lock.json
|
||||||
after
|
after
|
||||||
**/.DS_Store
|
**/.DS_Store
|
||||||
|
lua/custom/secret
|
||||||
|
|
|
@ -71,42 +71,6 @@ autocmd("FileType", {
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- reload some chadrc options on-save
|
|
||||||
autocmd("BufWritePost", {
|
|
||||||
pattern = vim.tbl_map(function(path)
|
|
||||||
return vim.fs.normalize(vim.loop.fs_realpath(path))
|
|
||||||
end, vim.fn.glob(vim.fn.stdpath "config" .. "/lua/custom/**/*.lua", true, true, true)),
|
|
||||||
group = vim.api.nvim_create_augroup("ReloadNvChad", {}),
|
|
||||||
|
|
||||||
callback = function(opts)
|
|
||||||
local fp = vim.fn.fnamemodify(vim.fs.normalize(vim.api.nvim_buf_get_name(opts.buf)), ":r") --[[@as string]]
|
|
||||||
local app_name = vim.env.NVIM_APPNAME and vim.env.NVIM_APPNAME or "nvim"
|
|
||||||
local module = string.gsub(fp, "^.*/" .. app_name .. "/lua/", ""):gsub("/", ".")
|
|
||||||
|
|
||||||
require("plenary.reload").reload_module "base46"
|
|
||||||
require("plenary.reload").reload_module(module)
|
|
||||||
require("plenary.reload").reload_module "custom.chadrc"
|
|
||||||
|
|
||||||
config = require("core.utils").load_config()
|
|
||||||
|
|
||||||
vim.g.nvchad_theme = config.ui.theme
|
|
||||||
vim.g.transparency = config.ui.transparency
|
|
||||||
|
|
||||||
-- statusline
|
|
||||||
require("plenary.reload").reload_module("nvchad.statusline." .. config.ui.statusline.theme)
|
|
||||||
vim.opt.statusline = "%!v:lua.require('nvchad.statusline." .. config.ui.statusline.theme .. "').run()"
|
|
||||||
|
|
||||||
-- tabufline
|
|
||||||
if config.ui.tabufline.enabled then
|
|
||||||
require("plenary.reload").reload_module "nvchad.tabufline.modules"
|
|
||||||
vim.opt.tabline = "%!v:lua.require('nvchad.tabufline.modules').run()"
|
|
||||||
end
|
|
||||||
|
|
||||||
require("base46").load_all_highlights()
|
|
||||||
-- vim.cmd("redraw!")
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
-------------------------------------- commands ------------------------------------------
|
-------------------------------------- commands ------------------------------------------
|
||||||
local new_cmd = vim.api.nvim_create_user_command
|
local new_cmd = vim.api.nvim_create_user_command
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ local M = {}
|
||||||
local highlights = require "custom.highlights"
|
local highlights = require "custom.highlights"
|
||||||
|
|
||||||
M.ui = {
|
M.ui = {
|
||||||
theme = "chadracula",
|
theme = "oceanic-next",
|
||||||
theme_toggle = { "kanagawa", "chadracula" },
|
theme_toggle = { "oceanic-next", "ayu_light" },
|
||||||
|
|
||||||
hl_override = highlights.override,
|
hl_override = highlights.override,
|
||||||
hl_add = highlights.add,
|
hl_add = highlights.add,
|
||||||
|
@ -64,7 +64,8 @@ local get_info = function()
|
||||||
},
|
},
|
||||||
{ " Mappings", "<space>ch", "NvCheatsheet" },
|
{ " Mappings", "<space>ch", "NvCheatsheet" },
|
||||||
{ " Git", "<space>gg", "LazyGit" },
|
{ " Git", "<space>gg", "LazyGit" },
|
||||||
{ " Files", "<F5>", "NvimTreeToggle" },
|
{ " Files", "<F5>", "NvimTreeToggle" },
|
||||||
|
{ " Change Directory", ";cd", "Telescope zoxide list" },
|
||||||
{ " Terminal", "<A-i>", "ToggleTerm direction=float" },
|
{ " Terminal", "<A-i>", "ToggleTerm direction=float" },
|
||||||
}
|
}
|
||||||
return buf
|
return buf
|
||||||
|
|
|
@ -1,24 +1,29 @@
|
||||||
local options = {
|
local options = {
|
||||||
lsp_fallback = true,
|
lsp_fallback = true,
|
||||||
|
|
||||||
formatters_by_ft = {
|
formatters_by_ft = {
|
||||||
lua = { "stylua" },
|
lua = { "stylua" },
|
||||||
|
|
||||||
javascript = { "prettier" },
|
javascript = { "prettier" },
|
||||||
css = { "prettier" },
|
css = { "prettier" },
|
||||||
html = { "prettier" },
|
html = { "prettier" },
|
||||||
|
|
||||||
sh = { "shfmt" },
|
sh = { "shfmt" },
|
||||||
},
|
toml = { "taplo" },
|
||||||
|
rust = { "rustfmt" },
|
||||||
|
|
||||||
|
tex = { "latexindent" },
|
||||||
|
latex = { "latexindent" },
|
||||||
|
},
|
||||||
|
|
||||||
-- adding same formatter for multiple filetypes can look too much work for some
|
-- adding same formatter for multiple filetypes can look too much work for some
|
||||||
-- instead of the above code you could just use a loop! the config is just a table after all!
|
-- instead of the above code you could just use a loop! the config is just a table after all!
|
||||||
|
|
||||||
-- format_on_save = {
|
-- format_on_save = {
|
||||||
-- -- These options will be passed to conform.format()
|
-- -- These options will be passed to conform.format()
|
||||||
-- timeout_ms = 500,
|
-- timeout_ms = 500,
|
||||||
-- lsp_fallback = true,
|
-- lsp_fallback = true,
|
||||||
-- },
|
-- },
|
||||||
}
|
}
|
||||||
|
|
||||||
require("conform").setup(options)
|
require("conform").setup(options)
|
||||||
|
|
|
@ -2,6 +2,7 @@ local on_attach = require("plugins.configs.lspconfig").on_attach
|
||||||
local capabilities = require("plugins.configs.lspconfig").capabilities
|
local capabilities = require("plugins.configs.lspconfig").capabilities
|
||||||
|
|
||||||
local lspconfig = require "lspconfig"
|
local lspconfig = require "lspconfig"
|
||||||
|
local lspsettings = require "custom.configs.lspsettings"
|
||||||
|
|
||||||
-- if you just want default config for the servers then put them in a table
|
-- if you just want default config for the servers then put them in a table
|
||||||
local servers = {
|
local servers = {
|
||||||
|
@ -10,9 +11,11 @@ local servers = {
|
||||||
"tsserver",
|
"tsserver",
|
||||||
"clangd",
|
"clangd",
|
||||||
"pyright",
|
"pyright",
|
||||||
"rust_analyzer",
|
|
||||||
"bashls",
|
"bashls",
|
||||||
"cmake",
|
"cmake",
|
||||||
|
"yamlls",
|
||||||
|
"texlab",
|
||||||
|
"csharp_ls",
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, lsp in ipairs(servers) do
|
for _, lsp in ipairs(servers) do
|
||||||
|
@ -21,3 +24,13 @@ for _, lsp in ipairs(servers) do
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local server_with_settings = {
|
||||||
|
-- "textlsp",
|
||||||
|
"ltex",
|
||||||
|
"rust_analyzer",
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, lsp in ipairs(server_with_settings) do
|
||||||
|
lspconfig[lsp].setup(lspsettings[lsp])
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,195 @@
|
||||||
|
local on_attach = require("plugins.configs.lspconfig").on_attach
|
||||||
|
local capabilities = require("plugins.configs.lspconfig").capabilities
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.rust_analyzer = {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
settings = {
|
||||||
|
["rust-analyzer"] = {
|
||||||
|
check = {
|
||||||
|
command = "clippy",
|
||||||
|
},
|
||||||
|
imports = {
|
||||||
|
granularity = {
|
||||||
|
group = "module",
|
||||||
|
},
|
||||||
|
prefix = "self",
|
||||||
|
},
|
||||||
|
cargo = {
|
||||||
|
buildScripts = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
procMacro = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
M.ltex = {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
use_spellfile = false,
|
||||||
|
settings = {
|
||||||
|
ltex = {
|
||||||
|
checkFrequency = "save", -- shut up while i'm just editing, see <https://github.com/folke/noice.nvim/issues/166>
|
||||||
|
-- specific language (such as en-GB or de-DE is recommended, but I
|
||||||
|
-- want multilingual)
|
||||||
|
language = "auto",
|
||||||
|
enabled = {
|
||||||
|
"bibtex",
|
||||||
|
"tex",
|
||||||
|
"latex",
|
||||||
|
"gitcommit",
|
||||||
|
"markdown",
|
||||||
|
"org",
|
||||||
|
"restructuredtext",
|
||||||
|
"rsweave",
|
||||||
|
"quarto",
|
||||||
|
"rmd",
|
||||||
|
"context",
|
||||||
|
-- "html",
|
||||||
|
-- "xhtml",
|
||||||
|
},
|
||||||
|
additionalRules = {
|
||||||
|
enablePickyRules = true,
|
||||||
|
-- thats cool, but often adds diagnostics in
|
||||||
|
-- places where a german might confuse words that are similar
|
||||||
|
-- between english and german REGARDLESS of context. I seem to use the
|
||||||
|
-- english words only in the proper contexts, so leaving this on
|
||||||
|
-- just adds annoying hints like 'Hinweis: "list/NN.*" (English) bedeutet "Liste",
|
||||||
|
-- "Verzeichnis" (German). Meinten Sie vielleicht 'cunning', 'trick'?'
|
||||||
|
-- everytime I use the word "list". I liked that this makes the hints be
|
||||||
|
-- in german regardless of the language I'm working in through...
|
||||||
|
--motherTongue = "de",
|
||||||
|
},
|
||||||
|
-- load token and additional languagetool items later
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
M.textlsp = {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
filetypes = {
|
||||||
|
"bibtex",
|
||||||
|
"tex",
|
||||||
|
"latex",
|
||||||
|
"gitcommit",
|
||||||
|
"markdown",
|
||||||
|
"org",
|
||||||
|
"restructuredtext",
|
||||||
|
"rsweave",
|
||||||
|
"quarto",
|
||||||
|
"rmd",
|
||||||
|
"context",
|
||||||
|
"html",
|
||||||
|
"xhtml",
|
||||||
|
},
|
||||||
|
settings = {
|
||||||
|
textLSP = {
|
||||||
|
analysers = {
|
||||||
|
languagetool = {
|
||||||
|
enabled = true,
|
||||||
|
check_text = {
|
||||||
|
on_open = true,
|
||||||
|
on_save = true,
|
||||||
|
on_change = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
gramformer = {
|
||||||
|
-- gramformer dependency needs to be installed manually
|
||||||
|
enabled = true,
|
||||||
|
gpu = false,
|
||||||
|
check_text = {
|
||||||
|
on_open = false,
|
||||||
|
on_save = true,
|
||||||
|
on_change = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hf_checker = {
|
||||||
|
enabled = false,
|
||||||
|
gpu = false,
|
||||||
|
quantize = 32,
|
||||||
|
model = "pszemraj/flan-t5-large-grammar-synthesis",
|
||||||
|
min_length = 40,
|
||||||
|
check_text = {
|
||||||
|
on_open = false,
|
||||||
|
on_save = true,
|
||||||
|
on_change = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hf_instruction_checker = {
|
||||||
|
enabled = true,
|
||||||
|
gpu = false,
|
||||||
|
quantize = 32,
|
||||||
|
model = "grammarly/coedit-large",
|
||||||
|
min_length = 40,
|
||||||
|
check_text = {
|
||||||
|
on_open = false,
|
||||||
|
on_save = true,
|
||||||
|
on_change = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hf_completion = {
|
||||||
|
enabled = true,
|
||||||
|
gpu = false,
|
||||||
|
quantize = 32,
|
||||||
|
model = "bert-base-multilingual-cased",
|
||||||
|
topk = 5,
|
||||||
|
},
|
||||||
|
-- openai = {
|
||||||
|
-- enabled = false,
|
||||||
|
-- api_key = "<MY_API_KEY>",
|
||||||
|
-- check_text = {
|
||||||
|
-- on_open = false,
|
||||||
|
-- on_save = false,
|
||||||
|
-- on_change = false,
|
||||||
|
-- },
|
||||||
|
-- model = "gpt-3.5-turbo",
|
||||||
|
-- max_token = 16,
|
||||||
|
-- },
|
||||||
|
-- grammarbot = {
|
||||||
|
-- enabled = false,
|
||||||
|
-- api_key = "<MY_API_KEY>",
|
||||||
|
-- -- longer texts are split, this parameter sets the maximum number of splits per analysis
|
||||||
|
-- input_max_requests = 1,
|
||||||
|
-- check_text = {
|
||||||
|
-- on_open = false,
|
||||||
|
-- on_save = false,
|
||||||
|
-- on_change = false,
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
documents = {
|
||||||
|
-- org = {
|
||||||
|
-- org_todo_keywords = {
|
||||||
|
-- "TODO",
|
||||||
|
-- "IN_PROGRESS",
|
||||||
|
-- "DONE",
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
txt = {
|
||||||
|
parse = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- load secrets
|
||||||
|
-- the secret module should just return a string with the token
|
||||||
|
local available, token = require("custom.utils").try_require "custom.secret.languagetool_token"
|
||||||
|
if available then
|
||||||
|
M.ltex.languageToolOrg = {
|
||||||
|
apiKey = token,
|
||||||
|
username = "accounts@cscherr.de",
|
||||||
|
languageToolHttpServerUrl = "https://api.languagetoolplus.com/v2/",
|
||||||
|
}
|
||||||
|
M.ltex.languageToolHttpServerUrl = "https://api.languagetoolplus.com/v2/"
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
|
@ -30,38 +30,25 @@ M.treesitter = {
|
||||||
|
|
||||||
M.mason = {
|
M.mason = {
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
-- general purpose
|
|
||||||
"purpose",
|
"purpose",
|
||||||
|
|
||||||
-- lua stuff
|
|
||||||
"lua-language-server",
|
"lua-language-server",
|
||||||
"stylua",
|
"stylua",
|
||||||
|
|
||||||
-- web dev stuff
|
|
||||||
"css-lsp",
|
"css-lsp",
|
||||||
"html-lsp",
|
"html-lsp",
|
||||||
"typescript-language-server",
|
"typescript-language-server",
|
||||||
"deno",
|
"deno",
|
||||||
"prettier",
|
"prettier",
|
||||||
|
|
||||||
-- c/cpp stuff
|
|
||||||
"clangd",
|
"clangd",
|
||||||
"clang-format",
|
"clang-format",
|
||||||
"cmake-language-server",
|
"cmake-language-server",
|
||||||
|
|
||||||
-- rust
|
|
||||||
"rust-analyzer",
|
"rust-analyzer",
|
||||||
"taplo",
|
"taplo",
|
||||||
|
|
||||||
-- python
|
|
||||||
"pyright",
|
"pyright",
|
||||||
|
|
||||||
-- english??
|
|
||||||
"write-good",
|
|
||||||
|
|
||||||
-- shell
|
|
||||||
"shellcheck",
|
"shellcheck",
|
||||||
"bash-language-server",
|
"bash-language-server",
|
||||||
|
"ltex-ls",
|
||||||
|
"shellcheck",
|
||||||
|
"taplo",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,16 +7,19 @@ local M = {}
|
||||||
---@type Base46HLGroupsList
|
---@type Base46HLGroupsList
|
||||||
M.override = {
|
M.override = {
|
||||||
Comment = {
|
Comment = {
|
||||||
italic = true,
|
italic = false,
|
||||||
},
|
|
||||||
NvDashAscii = {
|
|
||||||
fg = "#b33366",
|
|
||||||
bg = "#1a1a1a",
|
|
||||||
},
|
|
||||||
NvDashButtons = {
|
|
||||||
fg = "White",
|
|
||||||
bg = "#241e1e",
|
|
||||||
},
|
},
|
||||||
|
-- NvDashAscii = {
|
||||||
|
-- fg = "#b33366",
|
||||||
|
-- bg = "#1a1a1a",
|
||||||
|
-- },
|
||||||
|
-- NvDashButtons = {
|
||||||
|
-- fg = "White",
|
||||||
|
-- bg = "#241e1e",
|
||||||
|
-- },
|
||||||
|
TodoFgNOTE = {
|
||||||
|
fg = "#cccccc"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
---@type HLTable
|
---@type HLTable
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
local opt = vim.opt
|
local opt = vim.opt
|
||||||
local g = vim.g
|
local g = vim.g
|
||||||
g.maplocalleader = ";"
|
g.maplocalleader = ";"
|
||||||
|
g.python3_host_prog = "/usr/bin/python3"
|
||||||
|
|
||||||
|
opt.mouse = "a" -- mouse does annoying things for me if it's not 'a'
|
||||||
opt.signcolumn = "yes"
|
opt.signcolumn = "yes"
|
||||||
opt.spelllang = "en,de"
|
|
||||||
opt.clipboard = "" -- don't just use the system clipboard
|
opt.clipboard = "" -- don't just use the system clipboard
|
||||||
opt.wrap = false
|
opt.wrap = false
|
||||||
opt.breakindent = false
|
opt.breakindent = false
|
||||||
|
@ -29,10 +30,16 @@ opt.shiftround = true -- Round indent to multiple of 'shiftwidth'
|
||||||
|
|
||||||
-- Timing
|
-- Timing
|
||||||
-- ===
|
-- ===
|
||||||
|
-- NOTE: the which-key plugin makes this a little different. Instead of going
|
||||||
|
-- to a newline after "o", the which-key panel opens. Only when we input
|
||||||
|
-- something other than "o" it will go to the line and write that. I don't
|
||||||
|
-- really like this behavior. We can disable this for specific triggers.
|
||||||
|
-- See https://github.com/folke/which-key.nvim
|
||||||
|
opt.timeout = true
|
||||||
opt.ttimeout = true
|
opt.ttimeout = true
|
||||||
opt.timeoutlen = 500 -- Time out on mappings
|
opt.timeoutlen = 250 -- Time out on mappings
|
||||||
opt.ttimeoutlen = 10 -- Time out on key codes
|
opt.ttimeoutlen = 10 -- Time out on key codes
|
||||||
opt.updatetime = 500 -- Idle time to write swap and trigger CursorHold
|
opt.updatetime = 300 -- Idle time to write swap and trigger CursorHold
|
||||||
|
|
||||||
-- Searching
|
-- Searching
|
||||||
-- ===
|
-- ===
|
||||||
|
@ -62,7 +69,7 @@ opt.wildmode = "longest:full,full" -- Command-line completion mode
|
||||||
-- Folds
|
-- Folds
|
||||||
-- ===
|
-- ===
|
||||||
|
|
||||||
opt.foldlevel = 10000 -- start with all folds open
|
opt.foldlevel = 10 -- start with all folds open
|
||||||
|
|
||||||
-- Editor UI
|
-- Editor UI
|
||||||
-- ===
|
-- ===
|
||||||
|
@ -75,6 +82,7 @@ opt.scrolloff = 2 -- Keep at least n lines above/below
|
||||||
opt.sidescrolloff = 0 -- Keep at least n lines left/right
|
opt.sidescrolloff = 0 -- Keep at least n lines left/right
|
||||||
opt.numberwidth = 2 -- Minimum number of columns to use for the line number
|
opt.numberwidth = 2 -- Minimum number of columns to use for the line number
|
||||||
opt.number = true -- Show line numbers
|
opt.number = true -- Show line numbers
|
||||||
|
opt.relativenumber = true -- Show relative line numbers
|
||||||
opt.ruler = true -- Default status ruler
|
opt.ruler = true -- Default status ruler
|
||||||
opt.list = true -- Show hidden characters
|
opt.list = true -- Show hidden characters
|
||||||
opt.showtabline = 1 -- Don't change this, goes back to a vanilla vim default
|
opt.showtabline = 1 -- Don't change this, goes back to a vanilla vim default
|
||||||
|
@ -83,6 +91,24 @@ opt.laststatus = 3 -- Always show laststatus
|
||||||
if vim.g.started_by_firenvim == true then
|
if vim.g.started_by_firenvim == true then
|
||||||
opt.showtabline = 1 -- Don't show tabline in firenvim, unless multitab
|
opt.showtabline = 1 -- Don't show tabline in firenvim, unless multitab
|
||||||
opt.laststatus = 1 -- Don't show laststatus in firenvim
|
opt.laststatus = 1 -- Don't show laststatus in firenvim
|
||||||
|
opt.wrap = true
|
||||||
|
end
|
||||||
|
|
||||||
|
if vim.g.neovide == true then
|
||||||
|
-- fulscreen with F11
|
||||||
|
vim.api.nvim_set_keymap("n", "<F11>", ":let g:neovide_fullscreen = !g:neovide_fullscreen<CR>", {})
|
||||||
|
|
||||||
|
vim.g.neovide_underline_automatic_scaling = true
|
||||||
|
|
||||||
|
-- vim.g.neovide_floating_blur_amount_x = 2.0
|
||||||
|
-- vim.g.neovide_floating_blur_amount_y = 2.0
|
||||||
|
|
||||||
|
vim.g.neovide_scroll_animation_length = 0.1
|
||||||
|
-- vim.g.neovide_cursor_animation_length = 0
|
||||||
|
-- vim.g.neovide_cursor_trail_size = 0
|
||||||
|
vim.g.neovide_hide_mouse_when_typing = true
|
||||||
|
|
||||||
|
vim.g.neovide_fullscreen = true
|
||||||
end
|
end
|
||||||
|
|
||||||
opt.helpheight = 0 -- Disable help window resizing
|
opt.helpheight = 0 -- Disable help window resizing
|
||||||
|
@ -104,6 +130,13 @@ opt.pumheight = 10 -- Maximum number of items to show in the popup menu
|
||||||
opt.pumwidth = 10 -- Minimum width for the popup menu
|
opt.pumwidth = 10 -- Minimum width for the popup menu
|
||||||
opt.pumblend = 10 -- Popup blend
|
opt.pumblend = 10 -- Popup blend
|
||||||
|
|
||||||
|
-- Spelling correction
|
||||||
|
-- ===
|
||||||
|
|
||||||
|
opt.spell = false -- manually enable spell with `set spell` or `<leader>ts`
|
||||||
|
opt.spelllang = "en,de_de,"
|
||||||
|
opt.spellsuggest = "double,50,timeout:5000"
|
||||||
|
|
||||||
-- autocommands
|
-- autocommands
|
||||||
-- ===
|
-- ===
|
||||||
local function augroup(name)
|
local function augroup(name)
|
||||||
|
@ -136,12 +169,15 @@ vim.api.nvim_create_autocmd("VimResized", {
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Wrap and enable spell-checker in text filetypes
|
-- Wrap and enable spell-checker in text filetypes
|
||||||
|
-- also enable wrap on these text filetypes
|
||||||
vim.api.nvim_create_autocmd("FileType", {
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
group = augroup "spell_conceal",
|
group = augroup "spell_conceal",
|
||||||
pattern = { "gitcommit", "markdown", "tex", "latex", "norg" },
|
pattern = { "gitcommit", "markdown", "tex", "latex", "norg" },
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.opt_local.spell = true
|
vim.opt_local.spell = true
|
||||||
vim.opt_local.conceallevel = 0
|
vim.opt_local.conceallevel = 0
|
||||||
|
vim.opt.wrap = true
|
||||||
|
-- vim.opt.formatoptions = ""
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -154,3 +190,7 @@ if vim.g.started_by_firenvim == true then
|
||||||
vim.o.lines = vim.o.lines - 1
|
vim.o.lines = vim.o.lines - 1
|
||||||
end, { expr = true, desc = "Make Display smaller" })
|
end, { expr = true, desc = "Make Display smaller" })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- alias filetypes
|
||||||
|
vim.filetype.add { extension = { tera = "html" } }
|
||||||
|
vim.filetype.add { extension = { plaintex = "tex" } }
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---@type MappingsTable
|
---@type MappingsTable
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
-- NOTE: The mappings here are case sensitive!!! Removing a specific default
|
-- NOTE: The mappings here are case sensitive!!! Removing a specific default
|
||||||
|
@ -40,7 +41,6 @@ M.disabled = {
|
||||||
["<leader>td"] = "",
|
["<leader>td"] = "",
|
||||||
["<leader>wk"] = "",
|
["<leader>wk"] = "",
|
||||||
["#"] = "",
|
["#"] = "",
|
||||||
["?"] = "",
|
|
||||||
},
|
},
|
||||||
t = {
|
t = {
|
||||||
["<C-t>"] = "",
|
["<C-t>"] = "",
|
||||||
|
@ -206,6 +206,9 @@ M.telescope = {
|
||||||
["<localleader>fo"] = { "<cmd> Telescope oldfiles <cr>", "Find oldfiles" },
|
["<localleader>fo"] = { "<cmd> Telescope oldfiles <cr>", "Find oldfiles" },
|
||||||
["<localleader>fz"] = { "<cmd> Telescope current_buffer_fuzzy_find <cr>", "Find in current buffer" },
|
["<localleader>fz"] = { "<cmd> Telescope current_buffer_fuzzy_find <cr>", "Find in current buffer" },
|
||||||
|
|
||||||
|
-- directory
|
||||||
|
["<localleader>cd"] = { "<cmd> Telescope zoxide list<cr>", "telescope zoxide cd" },
|
||||||
|
|
||||||
-- git
|
-- git
|
||||||
["<localleader>cm"] = { "<cmd> Telescope git_commits <cr>", "Git commits" },
|
["<localleader>cm"] = { "<cmd> Telescope git_commits <cr>", "Git commits" },
|
||||||
["<localleader>gt"] = { "<cmd> Telescope git_status <cr>", "Git status" },
|
["<localleader>gt"] = { "<cmd> Telescope git_status <cr>", "Git status" },
|
||||||
|
@ -217,6 +220,14 @@ M.telescope = {
|
||||||
["<localleader>th"] = { "<cmd> Telescope themes <cr>", "Nvchad themes" },
|
["<localleader>th"] = { "<cmd> Telescope themes <cr>", "Nvchad themes" },
|
||||||
|
|
||||||
["<localleader>ma"] = { "<cmd> Telescope marks <cr>", "telescope bookmarks" },
|
["<localleader>ma"] = { "<cmd> Telescope marks <cr>", "telescope bookmarks" },
|
||||||
|
|
||||||
|
-- lsp stuff
|
||||||
|
["<localleader>cw"] = {
|
||||||
|
"<cmd> Telescope lsp_dynamic_workspace_symbols <cr>",
|
||||||
|
"telescope dynamic workspace symbols",
|
||||||
|
},
|
||||||
|
["<localleader>cf"] = { "<cmd> Telescope lsp_document_symbols <cr>", "telescope document symbols" },
|
||||||
|
["<localleader>ci"] = { "<cmd> Telescope diagnostics <cr>", "telescope diagnostics" },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,45 +235,89 @@ M.toggleterm = {
|
||||||
plugin = true,
|
plugin = true,
|
||||||
n = {
|
n = {
|
||||||
["<F12>"] = {
|
["<F12>"] = {
|
||||||
"<cmd>ToggleTerm direction=float<cr>",
|
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||||
"toggle terminal",
|
"toggle terminal",
|
||||||
},
|
},
|
||||||
["<A-i>"] = {
|
["<A-i>"] = {
|
||||||
"<cmd>ToggleTerm direction=float<cr>",
|
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||||
"toggle terminal",
|
"toggle terminal",
|
||||||
},
|
},
|
||||||
["<A-t>"] = {
|
["<A-t>"] = {
|
||||||
"<cmd>ToggleTerm direction=tab<cr>",
|
'<cmd>exe v:count1 "ToggleTerm direction=tab"<cr>',
|
||||||
"toggle terminal",
|
"toggle terminal",
|
||||||
},
|
},
|
||||||
["<A-h>"] = {
|
["<A-h>"] = {
|
||||||
"<cmd>ToggleTerm direction=horizontal<cr>",
|
'<cmd>exe v:count1 "ToggleTerm direction=horizontal"<cr>',
|
||||||
"toggle terminal",
|
"toggle terminal",
|
||||||
},
|
},
|
||||||
["<A-v>"] = {
|
["<A-v>"] = {
|
||||||
"<cmd>ToggleTerm direction=vertical<cr>",
|
'<cmd>exe v:count1 "ToggleTerm direction=vertical"<cr>',
|
||||||
|
"toggle terminal",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
i = {
|
||||||
|
["<F12>"] = {
|
||||||
|
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||||
|
"toggle terminal",
|
||||||
|
},
|
||||||
|
["<A-i>"] = {
|
||||||
|
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||||
|
"toggle terminal",
|
||||||
|
},
|
||||||
|
["<A-t>"] = {
|
||||||
|
'<cmd>exe v:count1 "ToggleTerm direction=tab"<cr>',
|
||||||
|
"toggle terminal",
|
||||||
|
},
|
||||||
|
["<A-h>"] = {
|
||||||
|
'<cmd>exe v:count1 "ToggleTerm direction=horizontal"<cr>',
|
||||||
|
"toggle terminal",
|
||||||
|
},
|
||||||
|
["<A-v>"] = {
|
||||||
|
'<cmd>exe v:count1 "ToggleTerm direction=vertical"<cr>',
|
||||||
"toggle terminal",
|
"toggle terminal",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
t = {
|
t = {
|
||||||
["<F12>"] = {
|
["<F12>"] = {
|
||||||
"<cmd>ToggleTerm direction=float<cr>",
|
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||||
"toggle terminal",
|
"toggle terminal",
|
||||||
},
|
},
|
||||||
["<A-i>"] = {
|
["<A-i>"] = {
|
||||||
"<cmd>ToggleTerm direction=float<cr>",
|
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||||
"toggle terminal",
|
"toggle terminal",
|
||||||
},
|
},
|
||||||
["<A-t>"] = {
|
["<A-t>"] = {
|
||||||
"<cmd>ToggleTerm direction=tab<cr>",
|
'<cmd>exe v:count1 "ToggleTerm direction=tab"<cr>',
|
||||||
"toggle terminal",
|
"toggle terminal",
|
||||||
},
|
},
|
||||||
["<A-h>"] = {
|
["<A-h>"] = {
|
||||||
"<cmd>ToggleTerm direction=horizontal<cr>",
|
'<cmd>exe v:count1 "ToggleTerm direction=horizontal"<cr>',
|
||||||
"toggle terminal",
|
"toggle terminal",
|
||||||
},
|
},
|
||||||
["<A-v>"] = {
|
["<A-v>"] = {
|
||||||
"<cmd>ToggleTerm direction=vertical<cr>",
|
'<cmd>exe v:count1 "ToggleTerm direction=vertical"<cr>',
|
||||||
|
"toggle terminal",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
x = {
|
||||||
|
["<F12>"] = {
|
||||||
|
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||||
|
"toggle terminal",
|
||||||
|
},
|
||||||
|
["<A-i>"] = {
|
||||||
|
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||||
|
"toggle terminal",
|
||||||
|
},
|
||||||
|
["<A-t>"] = {
|
||||||
|
'<cmd>exe v:count1 "ToggleTerm direction=tab"<cr>',
|
||||||
|
"toggle terminal",
|
||||||
|
},
|
||||||
|
["<A-h>"] = {
|
||||||
|
'<cmd>exe v:count1 "ToggleTerm direction=horizontal"<cr>',
|
||||||
|
"toggle terminal",
|
||||||
|
},
|
||||||
|
["<A-v>"] = {
|
||||||
|
'<cmd>exe v:count1 "ToggleTerm direction=vertical"<cr>',
|
||||||
"toggle terminal",
|
"toggle terminal",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -274,6 +329,7 @@ M.nvimtree = {
|
||||||
-- toggle
|
-- toggle
|
||||||
["<C-n>"] = { "<cmd> NvimTreeToggle <cr>", "Toggle nvimtree" },
|
["<C-n>"] = { "<cmd> NvimTreeToggle <cr>", "Toggle nvimtree" },
|
||||||
["<F5>"] = { "<cmd> NvimTreeToggle <cr>", "Toggle nvimtree" },
|
["<F5>"] = { "<cmd> NvimTreeToggle <cr>", "Toggle nvimtree" },
|
||||||
|
["<leader>tf"] = { "<cmd> NvimTreeToggle <cr>", "Toggle nvimtree" },
|
||||||
|
|
||||||
-- focus
|
-- focus
|
||||||
["<localleader>e"] = { "<cmd> NvimTreeFocus <cr>", "Focus nvimtree" },
|
["<localleader>e"] = { "<cmd> NvimTreeFocus <cr>", "Focus nvimtree" },
|
||||||
|
@ -306,12 +362,13 @@ M.movements = {
|
||||||
["H"] = { "<home>", "Beginning of line" },
|
["H"] = { "<home>", "Beginning of line" },
|
||||||
["L"] = { "<end>", "End of line" },
|
["L"] = { "<end>", "End of line" },
|
||||||
|
|
||||||
-- go to mark with "#"
|
|
||||||
["#"] = { "'", "go to mark" },
|
|
||||||
|
|
||||||
-- spell
|
-- spell
|
||||||
["]s"] = { "]s", "go to next spelling mark" },
|
["]s"] = { "]s", "go to next spelling mark" },
|
||||||
["[s"] = { "[s", "go to last spelling mark" },
|
["[s"] = { "[s", "go to last spelling mark" },
|
||||||
|
|
||||||
|
-- just scroll a line
|
||||||
|
["zk"] = { "<C-y>", "scroll up a line" },
|
||||||
|
["zj"] = { "<C-e>", "scroll down a line" },
|
||||||
},
|
},
|
||||||
v = {
|
v = {
|
||||||
--big move
|
--big move
|
||||||
|
@ -327,6 +384,10 @@ M.movements = {
|
||||||
vim.api.nvim_replace_termcodes("<C-\\><C-N>", true, true, true),
|
vim.api.nvim_replace_termcodes("<C-\\><C-N>", true, true, true),
|
||||||
"Escape terminal mode",
|
"Escape terminal mode",
|
||||||
},
|
},
|
||||||
|
["<C-S-v>"] = {
|
||||||
|
'<C-w>"+pi',
|
||||||
|
"paste into terminal",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -334,25 +395,27 @@ M.edit = {
|
||||||
plugin = false,
|
plugin = false,
|
||||||
n = {
|
n = {
|
||||||
-- easy newline
|
-- easy newline
|
||||||
["OO"] = { "O<esc>", "insert a line above", opts = { nowait = false } },
|
["OO"] = { "O<esc>", "insert a line above" },
|
||||||
["oo"] = { "o<esc>", "insert a line below", opts = { nowait = false } },
|
["oo"] = { "o<esc>", "insert a line below" },
|
||||||
|
|
||||||
|
-- substitute (change hovered/selection with insert mode)
|
||||||
|
-- normally, this is s, but that is leaps binding now
|
||||||
|
["<leader>s"] = { "s", "replace with insert mode" },
|
||||||
|
|
||||||
-- split and join lines
|
-- split and join lines
|
||||||
-- "J" for join is defaul
|
["<C-s-j>"] = { "<cmd>join<cr>", "join lines" },
|
||||||
["S"] = {
|
["<C-s-s>"] = { "i<cr><esc>l", "split line" },
|
||||||
"i<cr><esc>l",
|
|
||||||
"split line",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- do something useful with the arrows
|
-- do something useful with the arrows
|
||||||
["<Up>"] = { "<cmd> move-2<cr>", "Move line up", opts = { expr = true } },
|
["<Up>"] = { "<cmd> move-2<cr>", "Move line up" },
|
||||||
["<Down>"] = { "<cmd> move+<cr>", "Move line down", opts = { expr = true } },
|
["<Down>"] = { "<cmd> move+<cr>", "Move line down" },
|
||||||
["<Left>"] = { "<cmd> << <cr>", "Less indentation", opts = { expr = true } },
|
["<Left>"] = { "<<", "Less indentation" },
|
||||||
["<Right>"] = { "<cmd> >> <cr>", "More indentation", opts = { expr = true } },
|
["<Right>"] = { ">>", "More indentation" },
|
||||||
|
|
||||||
-- format with conform
|
-- format with conform
|
||||||
["<leader>ff"] = {
|
["<leader>ff"] = {
|
||||||
function()
|
function()
|
||||||
|
-- vim.lsp.buf.format()
|
||||||
require("conform").format()
|
require("conform").format()
|
||||||
end,
|
end,
|
||||||
"format buffer",
|
"format buffer",
|
||||||
|
@ -371,13 +434,15 @@ M.edit = {
|
||||||
["z="] = { "<cmd>Telescope spell_suggest<CR>", "Spell suggest" },
|
["z="] = { "<cmd>Telescope spell_suggest<CR>", "Spell suggest" },
|
||||||
},
|
},
|
||||||
v = {
|
v = {
|
||||||
|
-- NOTE: I would love to know why these commands work, they seem really
|
||||||
|
-- crazy.
|
||||||
|
["<Up>"] = { ":move'<-2<CR>gv=gv", "Move lines up", opts = { silent = true } },
|
||||||
|
["<Down>"] = { ":move'>+<CR>gv=gv", "Move lines down", opts = { silent = true } },
|
||||||
["<Left>"] = { "<gv", "Less indentation" },
|
["<Left>"] = { "<gv", "Less indentation" },
|
||||||
["<Right>"] = { ">gv", "More indentation" },
|
["<Right>"] = { ">gv", "More indentation" },
|
||||||
|
["<leader>fl"] = { ":!fmt -w80<CR>", "Reorder lines" },
|
||||||
},
|
},
|
||||||
x = {
|
x = {},
|
||||||
["<Up>"] = { "move'<-2<cr>gv=gv", "Move line up", opts = { expr = true } },
|
|
||||||
["<Down>"] = { "move'<-2<cr>gv=gv", "Move line down", opts = { expr = true } },
|
|
||||||
},
|
|
||||||
t = {
|
t = {
|
||||||
--big move
|
--big move
|
||||||
["<A-k>"] = { "<C-u>", "big step down" },
|
["<A-k>"] = { "<C-u>", "big step down" },
|
||||||
|
@ -495,4 +560,104 @@ M.goto_preview = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
M.debug = {
|
||||||
|
plugin = true,
|
||||||
|
n = {
|
||||||
|
["<leader>db"] = {
|
||||||
|
function()
|
||||||
|
require("dap").toggle_breakpoint()
|
||||||
|
end,
|
||||||
|
"toggle breakpoint",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>dc"] = {
|
||||||
|
function()
|
||||||
|
require("dap").continue()
|
||||||
|
end,
|
||||||
|
"debug continue",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>ds"] = {
|
||||||
|
function()
|
||||||
|
require("dap").step_over()
|
||||||
|
end,
|
||||||
|
"debug step over",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>di"] = {
|
||||||
|
function()
|
||||||
|
require("dap").step_into()
|
||||||
|
end,
|
||||||
|
"debug step into",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>dr"] = {
|
||||||
|
function()
|
||||||
|
require("dap").repl.open()
|
||||||
|
end,
|
||||||
|
"debug open repl",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>dws"] = {
|
||||||
|
function()
|
||||||
|
local widgets = require "dap.ui.widgets"
|
||||||
|
local my_sidebar = widgets.sidebar(widgets.scopes)
|
||||||
|
my_sidebar.open()
|
||||||
|
end,
|
||||||
|
"debug window scopes",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>dwt"] = {
|
||||||
|
function()
|
||||||
|
local widgets = require "dap.ui.widgets"
|
||||||
|
local my_sidebar = widgets.sidebar(widgets.threads)
|
||||||
|
my_sidebar.open()
|
||||||
|
end,
|
||||||
|
"debug window threads",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>dwe"] = {
|
||||||
|
function()
|
||||||
|
local widgets = require "dap.ui.widgets"
|
||||||
|
local my_sidebar = widgets.sidebar(widgets.expression)
|
||||||
|
my_sidebar.open()
|
||||||
|
end,
|
||||||
|
"debug window expressions",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>dwi"] = {
|
||||||
|
function()
|
||||||
|
local widgets = require "dap.ui.widgets"
|
||||||
|
local my_sidebar = widgets.sidebar(widgets.sessions)
|
||||||
|
my_sidebar.open()
|
||||||
|
end,
|
||||||
|
"debug window sessions",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>dwf"] = {
|
||||||
|
function()
|
||||||
|
local widgets = require "dap.ui.widgets"
|
||||||
|
local my_sidebar = widgets.sidebar(widgets.frames)
|
||||||
|
my_sidebar.open()
|
||||||
|
end,
|
||||||
|
"debug window frames",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>dK"] = {
|
||||||
|
function()
|
||||||
|
require("dap.ui.widgets").hover()
|
||||||
|
end,
|
||||||
|
"debug hover",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
["<leader>du"] = {
|
||||||
|
function()
|
||||||
|
require("dapui").toggle()
|
||||||
|
end,
|
||||||
|
"debug ui toggle",
|
||||||
|
noremap = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -30,7 +30,9 @@ local plugins = {
|
||||||
|
|
||||||
-- Install a plugin
|
-- Install a plugin
|
||||||
{
|
{
|
||||||
|
-- exit insert mode with 'jk'
|
||||||
"max397574/better-escape.nvim",
|
"max397574/better-escape.nvim",
|
||||||
|
enabled = true,
|
||||||
event = "InsertEnter",
|
event = "InsertEnter",
|
||||||
config = function()
|
config = function()
|
||||||
require("better_escape").setup()
|
require("better_escape").setup()
|
||||||
|
@ -92,14 +94,41 @@ local plugins = {
|
||||||
["]"] = { name = "+next" },
|
["]"] = { name = "+next" },
|
||||||
["["] = { name = "+prev" },
|
["["] = { name = "+prev" },
|
||||||
["<leader>x"] = { name = "+diagnostics/quickfix" },
|
["<leader>x"] = { name = "+diagnostics/quickfix" },
|
||||||
|
["<leader>d"] = { name = "+debug" },
|
||||||
["<leader>c"] = { name = "+code" },
|
["<leader>c"] = { name = "+code" },
|
||||||
["<leader>g"] = { name = "+git" },
|
["<leader>g"] = { name = "+git" },
|
||||||
["<leader>t"] = { name = "+toggle/tools" },
|
["<leader>t"] = { name = "+toggle/tools" },
|
||||||
["<leader>w"] = { name = "+window/which" },
|
["<leader>w"] = { name = "+window/which" },
|
||||||
["<leader>f"] = { name = "+formatting" },
|
["<leader>f"] = { name = "+formatting" },
|
||||||
},
|
},
|
||||||
|
opts = {
|
||||||
|
triggers_nowait = {
|
||||||
|
-- marks
|
||||||
|
"`",
|
||||||
|
"'",
|
||||||
|
"g`",
|
||||||
|
"g'",
|
||||||
|
-- registers
|
||||||
|
'"',
|
||||||
|
"<c-r>",
|
||||||
|
-- spelling
|
||||||
|
"z=",
|
||||||
|
},
|
||||||
|
triggers_blacklist = {
|
||||||
|
-- list of mode / prefixes that should never be hooked by WhichKey
|
||||||
|
-- this is mostly relevant for keymaps that start with a native binding
|
||||||
|
i = { "j", "k" },
|
||||||
|
v = { "j", "k" },
|
||||||
|
n = { "o", "O" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"echasnovski/mini.trailspace",
|
||||||
|
lazy = false,
|
||||||
|
event = { "BufReadPost", "BufNewFile" },
|
||||||
|
opts = {},
|
||||||
},
|
},
|
||||||
{ "echasnovski/mini.trailspace", lazy = false, event = { "BufReadPost", "BufNewFile" }, opts = {} },
|
|
||||||
{
|
{
|
||||||
"itchyny/vim-cursorword",
|
"itchyny/vim-cursorword",
|
||||||
event = "FileType",
|
event = "FileType",
|
||||||
|
@ -213,16 +242,26 @@ local plugins = {
|
||||||
icon = " ", -- icon used for the sign, and in search results
|
icon = " ", -- icon used for the sign, and in search results
|
||||||
color = "error", -- can be a hex color, or a named color (see below)
|
color = "error", -- can be a hex color, or a named color (see below)
|
||||||
alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords
|
alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords
|
||||||
-- signs = false, -- configure signs for some keywords individually
|
|
||||||
},
|
},
|
||||||
TODO = { icon = " ", color = "info" },
|
TODO = { icon = " ", color = "todo" },
|
||||||
HACK = { icon = " ", color = "warning" },
|
HACK = { icon = " ", color = "hack" },
|
||||||
SECURITY = { icon = " ", color = "warning" },
|
SECURITY = { icon = " ", color = "security" },
|
||||||
WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } },
|
WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } },
|
||||||
PERF = { icon = " ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
|
PERF = { icon = " ", color = "perf", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
|
||||||
NOTE = { icon = " ", color = "hint", alt = { "INFO" } },
|
NOTE = { icon = " ", color = "hint", alt = { "INFO" } },
|
||||||
TEST = { icon = "⏲ ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
|
TEST = { icon = "⏲ ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
|
||||||
},
|
},
|
||||||
|
colors = {
|
||||||
|
error = { "DiagnosticError", "ErrorMsg", "#DC2626" },
|
||||||
|
warning = { "DiagnosticWarn", "WarningMsg", "#FBBF24" },
|
||||||
|
todo = { "DiagnosticTodo", "#80e64d" },
|
||||||
|
hint = { "DiagnosticHint", "#10B981" },
|
||||||
|
hack = { "DiagnosticHack", "#FF33FF" },
|
||||||
|
security = { "DiagnosticSecurity", "#FF6600" },
|
||||||
|
default = { "Identifier", "#7C3AED" },
|
||||||
|
test = { "DiagnosticTest", "#E6E600" },
|
||||||
|
perf = { "DiagnosticPerf", "#9999ff" },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -314,6 +353,9 @@ local plugins = {
|
||||||
"rcarriga/nvim-notify",
|
"rcarriga/nvim-notify",
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
|
require("notify").setup {
|
||||||
|
top_down = false,
|
||||||
|
}
|
||||||
require("noice").setup {
|
require("noice").setup {
|
||||||
lsp = {
|
lsp = {
|
||||||
override = {
|
override = {
|
||||||
|
@ -325,14 +367,37 @@ local plugins = {
|
||||||
-- produce a conflict
|
-- produce a conflict
|
||||||
signature = { enabled = false },
|
signature = { enabled = false },
|
||||||
hover = { enabled = false },
|
hover = { enabled = false },
|
||||||
|
progress = {
|
||||||
|
enabled = true,
|
||||||
|
-- Lsp Progress is formatted using the builtins for lsp_progress. See config.format.builtin
|
||||||
|
-- See the section on formatting for more details on how to customize.
|
||||||
|
--- @type NoiceFormat|string
|
||||||
|
format = "lsp_progress",
|
||||||
|
--- @type NoiceFormat|string
|
||||||
|
format_done = "lsp_progress_done",
|
||||||
|
throttle = 1000 / 30, -- frequency to update lsp progress message
|
||||||
|
view = "mini", -- default: mini
|
||||||
|
},
|
||||||
},
|
},
|
||||||
-- you can enable a preset for easier configuration
|
-- you can enable a preset for easier configuration
|
||||||
presets = {
|
presets = {
|
||||||
bottom_search = true, -- use a classic bottom cmdline for search
|
bottom_search = true, -- use a classic bottom cmdline for search
|
||||||
command_palette = true, -- position the cmdline and popupmenu together
|
command_palette = true, -- position the cmdline and popupmenu together
|
||||||
long_message_to_split = true, -- long messages will be sent to a split
|
long_message_to_split = true, -- long messages will be sent to a split
|
||||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
inc_rename = true, -- enables an input dialog for inc-rename.nvim
|
||||||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
lsp_doc_border = true, -- add a border to hover docs and signature help
|
||||||
|
},
|
||||||
|
messages = {
|
||||||
|
enabled = true,
|
||||||
|
-- NOTE: we keep it with notify,
|
||||||
|
-- change this to something else if you want
|
||||||
|
view_error = "notify",
|
||||||
|
},
|
||||||
|
popupmenu = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
notify = {
|
||||||
|
enabled = true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
|
@ -451,7 +516,8 @@ local plugins = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"glacambre/firenvim",
|
"glacambre/firenvim",
|
||||||
lazy = not vim.g.started_by_firenvim,
|
enabled = vim.g.started_by_firenvim,
|
||||||
|
lazy = false,
|
||||||
build = function()
|
build = function()
|
||||||
vim.fn["firenvim#install"](0)
|
vim.fn["firenvim#install"](0)
|
||||||
end,
|
end,
|
||||||
|
@ -461,7 +527,7 @@ local plugins = {
|
||||||
[".*"] = {
|
[".*"] = {
|
||||||
filename = "/tmp/{hostname}_{pathname%10}.{extension%5}",
|
filename = "/tmp/{hostname}_{pathname%10}.{extension%5}",
|
||||||
cmdline = "firenvim",
|
cmdline = "firenvim",
|
||||||
takeover = "never", -- activate manually (<C-e>)
|
takeover = "never", -- can't open it with never at all?
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -489,11 +555,11 @@ local plugins = {
|
||||||
{
|
{
|
||||||
"kevinhwang91/nvim-ufo",
|
"kevinhwang91/nvim-ufo",
|
||||||
event = { "BufReadPost", "BufNewFile" },
|
event = { "BufReadPost", "BufNewFile" },
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
keys = {
|
keys = {
|
||||||
{ 'zR', function() require('ufo').openAllFolds() end },
|
{ 'zR', function() require('ufo').openAllFolds() end },
|
||||||
{ 'zM', function() require('ufo').closeAllFolds() end },
|
{ 'zM', function() require('ufo').closeAllFolds() end },
|
||||||
},
|
},
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"kevinhwang91/promise-async",
|
"kevinhwang91/promise-async",
|
||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
@ -546,7 +612,6 @@ local plugins = {
|
||||||
-- :Chmod
|
-- :Chmod
|
||||||
-- and also some more, but those are easy done with shell
|
-- and also some more, but those are easy done with shell
|
||||||
"tpope/vim-eunuch",
|
"tpope/vim-eunuch",
|
||||||
enabled = false,
|
|
||||||
lazy = false,
|
lazy = false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -557,23 +622,18 @@ local plugins = {
|
||||||
local nls = require "null-ls"
|
local nls = require "null-ls"
|
||||||
local builtins = nls.builtins
|
local builtins = nls.builtins
|
||||||
local sources = {
|
local sources = {
|
||||||
builtins.formatting.black,
|
builtins.formatting.djlint.with {
|
||||||
builtins.formatting.fixjson,
|
filetypes = { "django", "jinja.html", "htmldjango", "tera", "html" },
|
||||||
builtins.formatting.golines,
|
|
||||||
builtins.formatting.markdownlint,
|
|
||||||
builtins.formatting.shellharden,
|
|
||||||
builtins.formatting.sql_formatter,
|
|
||||||
builtins.diagnostics.markdownlint,
|
|
||||||
builtins.diagnostics.mypy,
|
|
||||||
builtins.diagnostics.vint,
|
|
||||||
builtins.diagnostics.yamllint,
|
|
||||||
builtins.code_actions.shellcheck,
|
|
||||||
builtins.formatting.shfmt,
|
|
||||||
builtins.diagnostics.write_good.with {
|
|
||||||
diagnostics_postprocess = function(diagnostic)
|
|
||||||
diagnostic.severity = vim.diagnostic.severity.HINT
|
|
||||||
end,
|
|
||||||
},
|
},
|
||||||
|
builtins.diagnostics.djlint.with {
|
||||||
|
filetypes = { "django", "jinja.html", "htmldjango", "tera", "html" },
|
||||||
|
},
|
||||||
|
builtins.formatting.shfmt,
|
||||||
|
-- builtins.diagnostics.write_good.with {
|
||||||
|
-- diagnostics_postprocess = function(diagnostic)
|
||||||
|
-- diagnostic.severity = vim.diagnostic.severity.HINT
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
}
|
}
|
||||||
for _, source in ipairs(sources) do
|
for _, source in ipairs(sources) do
|
||||||
table.insert(opts.sources, source)
|
table.insert(opts.sources, source)
|
||||||
|
@ -608,17 +668,19 @@ local plugins = {
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
-- change how the highlighting looks
|
-- change how the highlighting looks
|
||||||
vim.cmd "hi LspInlayHint guibg=bg guifg=#804d66"
|
vim.cmd "hi LspInlayHint guibg=(bg*0.8) guifg=#6699b3"
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
{ "kosayoda/nvim-lightbulb", event = { "BufReadPre", "BufNewFile" } },
|
{ "kosayoda/nvim-lightbulb", event = { "BufReadPre", "BufNewFile" } },
|
||||||
{
|
{
|
||||||
"Wansmer/treesj",
|
"Wansmer/treesj",
|
||||||
lazy = false,
|
cmd = { "TSJJoin", "TSJSplit", "TSJSplit" },
|
||||||
cmd = { "TSJJoin", "TSJSplit" },
|
|
||||||
keys = {
|
keys = {
|
||||||
{ "k", "<cmd>TSJJoin<CR>" },
|
{ "<C-s-j>", "<cmd>TSJJoin<CR>" },
|
||||||
{ "S", "<cmd>TSJSplit<CR>" },
|
{ "<C-s-s>", "<cmd>TSJSplit<CR>" },
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
use_default_keymaps = false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -643,13 +705,13 @@ local plugins = {
|
||||||
local function get_git_diff(props)
|
local function get_git_diff(props)
|
||||||
local icons = { removed = "", changed = "", added = "" }
|
local icons = { removed = "", changed = "", added = "" }
|
||||||
local labels = {}
|
local labels = {}
|
||||||
local signs = vim.api.nvim_buf_get_var(props.buf, "gitsigns_status_dict")
|
-- local signs = vim.api.nvim_buf_get_var(props.buf, "gitsigns_status_dict")
|
||||||
-- local signs = vim.b.gitsigns_status_dict
|
-- local signs = vim.b.gitsigns_status_dict
|
||||||
for name, icon in pairs(icons) do
|
-- for name, icon in pairs(icons) do
|
||||||
if tonumber(signs[name]) and signs[name] > 0 then
|
-- if tonumber(signs[name]) and signs[name] > 0 then
|
||||||
table.insert(labels, { icon .. " " .. signs[name] .. " ", group = "Diff" .. name })
|
-- table.insert(labels, { icon .. " " .. signs[name] .. " ", group = "Diff" .. name })
|
||||||
end
|
-- end
|
||||||
end
|
-- end
|
||||||
if #labels > 0 then
|
if #labels > 0 then
|
||||||
table.insert(labels, { "| " })
|
table.insert(labels, { "| " })
|
||||||
end
|
end
|
||||||
|
@ -674,6 +736,238 @@ local plugins = {
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"mikesmithgh/kitty-scrollback.nvim",
|
||||||
|
enabled = true,
|
||||||
|
lazy = true,
|
||||||
|
cmd = { "KittyScrollbackGenerateKittens", "KittyScrollbackCheckHealth" },
|
||||||
|
event = { "User KittyScrollbackLaunch" },
|
||||||
|
-- version = '*', -- latest stable version, may have breaking changes if major version changed
|
||||||
|
-- version = '^3.0.0', -- pin major version, include fixes and features that do not have breaking changes
|
||||||
|
config = function()
|
||||||
|
require("kitty-scrollback").setup {
|
||||||
|
myconfig = function()
|
||||||
|
return { keymaps_enabled = false }
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
enabled = not vim.g.started_by_firenvim,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ziontee113/icon-picker.nvim",
|
||||||
|
keys = {
|
||||||
|
{ "<C-I>", "<cmd>IconPickerNormal<CR>", desc = "pick icon" },
|
||||||
|
{ "y<C-I>", "<cmd>IconPickerYank<CR>", desc = "yank icon" },
|
||||||
|
},
|
||||||
|
cmd = { "IconPickerInsert", "IconPickerYank", "IconPickerNormal" },
|
||||||
|
config = function()
|
||||||
|
require("icon-picker").setup { disable_legacy_commands = true }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mfussenegger/nvim-dap",
|
||||||
|
lazy = false,
|
||||||
|
init = function()
|
||||||
|
require("core.utils").load_mappings "debug"
|
||||||
|
end,
|
||||||
|
config = function()
|
||||||
|
local dap = require "dap"
|
||||||
|
local mason_registry = require "mason-registry"
|
||||||
|
local codelldb_root = mason_registry.get_package("codelldb"):get_install_path() .. "/extension/"
|
||||||
|
local codelldb_path = codelldb_root .. "adapter/codelldb"
|
||||||
|
local liblldb_path = codelldb_root .. "lldb/lib/liblldb.so"
|
||||||
|
dap.defaults.fallback.external_terminal = {
|
||||||
|
command = "/home/plex/.local/bin/kitty",
|
||||||
|
args = {},
|
||||||
|
}
|
||||||
|
dap.adapters.gdb = {
|
||||||
|
type = "executable",
|
||||||
|
command = "gdb",
|
||||||
|
args = { "-i", "dap" },
|
||||||
|
}
|
||||||
|
dap.adapters.codelldb = {
|
||||||
|
type = "server",
|
||||||
|
port = "30333",
|
||||||
|
executable = {
|
||||||
|
command = codelldb_path,
|
||||||
|
args = { "--port", "30333" },
|
||||||
|
detached = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
dap.configurations.cpp = {
|
||||||
|
{
|
||||||
|
name = "Launch file",
|
||||||
|
type = "codelldb",
|
||||||
|
request = "launch",
|
||||||
|
program = function()
|
||||||
|
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
||||||
|
end,
|
||||||
|
args = function()
|
||||||
|
return require("custom.utils").tokenize_args(vim.fn.input "args: ")
|
||||||
|
end,
|
||||||
|
cwd = "${workspaceFolder}",
|
||||||
|
-- FIXME: perhaps we can put the stdio somewhere more practical
|
||||||
|
stopOnEntry = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
dap.configurations.c = dap.configurations.cpp
|
||||||
|
dap.configurations.rust = dap.configurations.cpp
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rcarriga/nvim-dap-ui",
|
||||||
|
init = function()
|
||||||
|
require("core.utils").load_mappings "debug"
|
||||||
|
end,
|
||||||
|
dependencies = {
|
||||||
|
"mfussenegger/nvim-dap",
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
local dap = require "dap"
|
||||||
|
local dapui = require "dapui"
|
||||||
|
dapui.setup(opts)
|
||||||
|
dap.listeners.after.event_initialized["dapui_config"] = function()
|
||||||
|
dapui.open {}
|
||||||
|
end
|
||||||
|
dap.listeners.before.event_terminated["dapui_config"] = function()
|
||||||
|
-- dapui.close {}
|
||||||
|
end
|
||||||
|
dap.listeners.before.event_exited["dapui_config"] = function()
|
||||||
|
-- dapui.close {}
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{ "folke/neodev.nvim", opts = {} },
|
||||||
|
{
|
||||||
|
"mrcjkb/rustaceanvim",
|
||||||
|
enabled = false,
|
||||||
|
version = "^4", -- Recommended
|
||||||
|
ft = { "rust" },
|
||||||
|
config = function()
|
||||||
|
local dap = require "dap"
|
||||||
|
vim.g.rustaceanvim = {
|
||||||
|
enable_clippy = true,
|
||||||
|
-- Plugin configuration
|
||||||
|
tools = {
|
||||||
|
enable_clippy = true,
|
||||||
|
},
|
||||||
|
-- LSP configuration
|
||||||
|
server = {
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
-- you can also put keymaps in here
|
||||||
|
end,
|
||||||
|
settings = {
|
||||||
|
-- rust-analyzer language server configuration
|
||||||
|
["rust-analyzer"] = {
|
||||||
|
cargo = {
|
||||||
|
features = "all",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- DAP configuration
|
||||||
|
dap = {
|
||||||
|
-- FIXME: the rustaceanvim debug config does not map the stdout/stderr to the
|
||||||
|
-- opened terminal, effectively rendering debugging with it useless. Luckily,
|
||||||
|
-- we can use the regular nvim-dap and nvim-dap-ui.
|
||||||
|
adapter = dap.adapters.codelldb,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"theHamsta/nvim-dap-virtual-text",
|
||||||
|
lazy = false, -- PERF: this can be done more elegant
|
||||||
|
config = function()
|
||||||
|
require("nvim-dap-virtual-text").setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jvgrootveld/telescope-zoxide",
|
||||||
|
dependencies = "nvim-telescope/telescope.nvim",
|
||||||
|
config = function()
|
||||||
|
-- Useful for easily creating commands
|
||||||
|
local z_utils = require "telescope._extensions.zoxide.utils"
|
||||||
|
|
||||||
|
require("telescope").setup {
|
||||||
|
-- (other Telescope configuration...)
|
||||||
|
extensions = {
|
||||||
|
zoxide = {
|
||||||
|
prompt_title = "[ Walking on the shoulders of TJ ]",
|
||||||
|
mappings = {
|
||||||
|
default = {
|
||||||
|
after_action = function(selection)
|
||||||
|
print("Update to (" .. selection.z_score .. ") " .. selection.path)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
["<C-s>"] = {
|
||||||
|
before_action = function(selection)
|
||||||
|
print "before C-s"
|
||||||
|
end,
|
||||||
|
action = function(selection)
|
||||||
|
vim.cmd.edit(selection.path)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- Opens the selected entry in a new split
|
||||||
|
["<C-q>"] = { action = z_utils.create_basic_command "split" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
require("telescope").load_extension "zoxide"
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{ "nanotee/zoxide.vim", lazy = false, enabled = false },
|
||||||
|
{
|
||||||
|
"iamcco/markdown-preview.nvim",
|
||||||
|
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
||||||
|
ft = { "markdown" },
|
||||||
|
build = function()
|
||||||
|
vim.fn["mkdp#util#install"]()
|
||||||
|
end,
|
||||||
|
config = function()
|
||||||
|
-- Ugly fix for wsl not finding my browser
|
||||||
|
-- I HATE windows
|
||||||
|
vim.g.mkdp_echo_preview_url = 1
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rhysd/vim-grammarous",
|
||||||
|
enabled = false,
|
||||||
|
-- TODO: figure out how i can login to languagetool.org
|
||||||
|
lazy = false,
|
||||||
|
config = function()
|
||||||
|
vim.g["grammarous#jar_url"] = "https://www.languagetool.org/download/LanguageTool-5.9.zip"
|
||||||
|
vim.g["grammarous#use_vim_spelllang"] = 1
|
||||||
|
vim.cmd [[
|
||||||
|
let g:grammarous#default_comments_only_filetypes = {
|
||||||
|
\ '*' : 1, 'help' : 0, 'markdown' : 0,
|
||||||
|
\ }
|
||||||
|
]]
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"NvChad/ui",
|
||||||
|
enabled = true,
|
||||||
|
branch = "v2.0",
|
||||||
|
lazy = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
lazy = false,
|
||||||
|
dependencies = {
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
"NvChad/ui", -- load after nvchad ui
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
-- TODO: add lsp module for lualine
|
||||||
|
-- Maybe we can steal modules from the nvchad ui
|
||||||
|
require("lualine").setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
return plugins
|
return plugins
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
local M = {}
|
||||||
|
--- this function will split a string into a table of tokens, like it would
|
||||||
|
--- be passed into the `argv` of a program that was executed from the commandline
|
||||||
|
---
|
||||||
|
--- @param raw string string of cli args that should be split
|
||||||
|
--- @return table tokens args as a table
|
||||||
|
M.tokenize_args = function(raw)
|
||||||
|
-- NOTE: string.gmatch is does not use regex, but a smaller pattern matcher!
|
||||||
|
-- A complete regex parser would be larger than lua itself. See
|
||||||
|
-- [Programming in Lua 20.2](https://www.lua.org/pil/20.2.html).
|
||||||
|
--
|
||||||
|
-- Notable differences:
|
||||||
|
-- '-' is ungreedy wildcard
|
||||||
|
-- '*?' does not work
|
||||||
|
-- '|' is not or
|
||||||
|
--
|
||||||
|
-- This means we're better of implementing the lexer with an algorithm.
|
||||||
|
local t = {}
|
||||||
|
local current = ""
|
||||||
|
local in_str = false
|
||||||
|
local str_seek
|
||||||
|
for c in string.gmatch(raw, ".") do -- iterate through all chars
|
||||||
|
if c == " " and not in_str then
|
||||||
|
if string.len(current) > 0 then
|
||||||
|
table.insert(t, current)
|
||||||
|
current = ""
|
||||||
|
end
|
||||||
|
elseif c == '"' and not in_str then
|
||||||
|
in_str = true
|
||||||
|
str_seek = '"'
|
||||||
|
elseif c == "'" and not in_str then
|
||||||
|
in_str = true
|
||||||
|
str_seek = "'"
|
||||||
|
elseif c == str_seek and in_str then
|
||||||
|
in_str = false
|
||||||
|
table.insert(t, current)
|
||||||
|
current = ""
|
||||||
|
else
|
||||||
|
current = current .. c
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if string.len(current) > 0 then
|
||||||
|
table.insert(t, current)
|
||||||
|
end
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
--- dumps a variable into a string, so it can be printed. This is meant for
|
||||||
|
--- debug prints
|
||||||
|
--- @param t any variable
|
||||||
|
--- @return string t_dumped t dumped to string
|
||||||
|
M.dump = function(t)
|
||||||
|
if type(t) == "table" then
|
||||||
|
local s = "{ "
|
||||||
|
for k, v in pairs(t) do
|
||||||
|
if type(k) ~= "number" then
|
||||||
|
k = '"' .. k .. '"'
|
||||||
|
end
|
||||||
|
if k ~= 1 then
|
||||||
|
s = s .. ", "
|
||||||
|
end
|
||||||
|
s = s .. "[" .. k .. "] = '" .. M.dump(v) .. "'"
|
||||||
|
end
|
||||||
|
return s .. " }"
|
||||||
|
else
|
||||||
|
return tostring(t)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Try to require a module
|
||||||
|
--- @param module string module name
|
||||||
|
--- @return boolean available is the module available?
|
||||||
|
--- @return any loaded_module the loaded module if it is available
|
||||||
|
M.try_require = function(module)
|
||||||
|
local available, loaded_module = pcall(require, module)
|
||||||
|
if not available then
|
||||||
|
return available, nil
|
||||||
|
else
|
||||||
|
return available, loaded_module
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
|
@ -33,7 +33,6 @@ return {
|
||||||
"vimballPlugin",
|
"vimballPlugin",
|
||||||
"zip",
|
"zip",
|
||||||
"zipPlugin",
|
"zipPlugin",
|
||||||
"tutor",
|
|
||||||
"rplugin",
|
"rplugin",
|
||||||
"syntax",
|
"syntax",
|
||||||
"synmenu",
|
"synmenu",
|
||||||
|
|
|
@ -1,34 +1,8 @@
|
||||||
-- All plugins have lazy=true by default,to load a plugin on startup just lazy=false
|
-- All plugins have lazy=true by default,to load a plugin on startup just lazy=false
|
||||||
-- List of all default plugins & their definitions
|
-- List of all default plugins & their definitions
|
||||||
local default_plugins = {
|
local default_plugins = {
|
||||||
|
|
||||||
"nvim-lua/plenary.nvim",
|
"nvim-lua/plenary.nvim",
|
||||||
|
|
||||||
{
|
|
||||||
"NvChad/base46",
|
|
||||||
branch = "v2.0",
|
|
||||||
build = function()
|
|
||||||
require("base46").load_all_highlights()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"NvChad/ui",
|
|
||||||
branch = "v2.0",
|
|
||||||
lazy = false,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"NvChad/nvterm",
|
|
||||||
init = function()
|
|
||||||
require("core.utils").load_mappings "nvterm"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
require "base46.term"
|
|
||||||
require("nvterm").setup(opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
"NvChad/nvim-colorizer.lua",
|
"NvChad/nvim-colorizer.lua",
|
||||||
init = function()
|
init = function()
|
||||||
|
@ -73,7 +47,6 @@ local default_plugins = {
|
||||||
|
|
||||||
{
|
{
|
||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
tag = "v0.9.2",
|
|
||||||
init = function()
|
init = function()
|
||||||
require("core.utils").lazy_load "nvim-treesitter"
|
require("core.utils").lazy_load "nvim-treesitter"
|
||||||
end,
|
end,
|
||||||
|
|
|
@ -0,0 +1,138 @@
|
||||||
|
local opt = vim.opt
|
||||||
|
local g = vim.g
|
||||||
|
g.maplocalleader = ";"
|
||||||
|
g.python3_host_prog = '/usr/bin/python3'
|
||||||
|
|
||||||
|
opt.mouse = "a" -- mouse does annoying things for me if it's not 'a'
|
||||||
|
opt.signcolumn = "yes"
|
||||||
|
opt.clipboard = "" -- don't just use the system clipboard
|
||||||
|
opt.wrap = false
|
||||||
|
opt.breakindent = false
|
||||||
|
opt.spell = false
|
||||||
|
opt.list = true
|
||||||
|
opt.conceallevel = 2
|
||||||
|
opt.undofile = true
|
||||||
|
opt.undolevels = 10000
|
||||||
|
opt.writebackup = false
|
||||||
|
opt.history = 5000
|
||||||
|
opt.shada = { "'1000", "<50", "s10", "h" }
|
||||||
|
|
||||||
|
-- Tabs and Indents
|
||||||
|
-- ===
|
||||||
|
|
||||||
|
opt.textwidth = 80 -- Text width maximum chars before wrapping
|
||||||
|
opt.tabstop = 4 -- The number of spaces a tab is
|
||||||
|
opt.shiftwidth = 4 -- Number of spaces to use in auto(indent)
|
||||||
|
opt.smarttab = true -- Tab insert blanks according to 'shiftwidth'
|
||||||
|
opt.autoindent = true -- Use same indenting on new lines
|
||||||
|
opt.smartindent = true -- Smart autoindenting on new lines
|
||||||
|
opt.shiftround = true -- Round indent to multiple of 'shiftwidth'
|
||||||
|
|
||||||
|
-- Timing
|
||||||
|
-- ===
|
||||||
|
opt.ttimeout = true
|
||||||
|
opt.timeoutlen = 500 -- Time out on mappings
|
||||||
|
opt.ttimeoutlen = 10 -- Time out on key codes
|
||||||
|
opt.updatetime = 500 -- Idle time to write swap and trigger CursorHold
|
||||||
|
|
||||||
|
-- Searching
|
||||||
|
-- ===
|
||||||
|
opt.ignorecase = true -- Search ignoring case
|
||||||
|
opt.smartcase = true -- Keep case when searching with *
|
||||||
|
opt.infercase = true -- Adjust case in insert completion mode
|
||||||
|
opt.incsearch = true -- Incremental search
|
||||||
|
|
||||||
|
-- Formatting
|
||||||
|
-- ===
|
||||||
|
|
||||||
|
opt.wrap = false -- No wrap by default
|
||||||
|
opt.linebreak = true -- Break long lines at 'breakat'
|
||||||
|
opt.breakat = "\\ \\ ;:,!?" -- Long lines break chars
|
||||||
|
opt.startofline = false -- Cursor in same column for few commands
|
||||||
|
opt.splitbelow = true -- Splits open bottom right
|
||||||
|
opt.splitright = true
|
||||||
|
opt.breakindentopt = { shift = 2, min = 20 }
|
||||||
|
opt.formatoptions = "" -- see :h fo-table & :h formatoptions
|
||||||
|
|
||||||
|
-- Diff
|
||||||
|
-- ===
|
||||||
|
|
||||||
|
opt.diffopt:append { "iwhite", "indent-heuristic", "algorithm:patience" }
|
||||||
|
opt.wildmode = "longest:full,full" -- Command-line completion mode
|
||||||
|
|
||||||
|
-- Folds
|
||||||
|
-- ===
|
||||||
|
|
||||||
|
opt.foldlevel = 10 -- start with all folds open
|
||||||
|
|
||||||
|
-- Editor UI
|
||||||
|
-- ===
|
||||||
|
|
||||||
|
vim.o.guifont = "FiraCode Nerd Font:h15"
|
||||||
|
opt.termguicolors = true
|
||||||
|
opt.shortmess = "xsTOInfFitloCaAs"
|
||||||
|
opt.showmode = true -- Show mode in cmd window
|
||||||
|
opt.scrolloff = 2 -- Keep at least n lines above/below
|
||||||
|
opt.sidescrolloff = 0 -- Keep at least n lines left/right
|
||||||
|
opt.numberwidth = 2 -- Minimum number of columns to use for the line number
|
||||||
|
opt.number = true -- Show line numbers
|
||||||
|
opt.relativenumber = true -- Show relative line numbers
|
||||||
|
opt.ruler = true -- Default status ruler
|
||||||
|
opt.list = true -- Show hidden characters
|
||||||
|
opt.showtabline = 1 -- Don't change this, goes back to a vanilla vim default
|
||||||
|
opt.laststatus = 3 -- Always show laststatus
|
||||||
|
|
||||||
|
if vim.g.started_by_firenvim == true then
|
||||||
|
opt.showtabline = 1 -- Don't show tabline in firenvim, unless multitab
|
||||||
|
opt.laststatus = 1 -- Don't show laststatus in firenvim
|
||||||
|
opt.wrap = true
|
||||||
|
end
|
||||||
|
|
||||||
|
if vim.g.neovide == true then
|
||||||
|
-- fulscreen with F11
|
||||||
|
vim.api.nvim_set_keymap("n", "<F11>", ":let g:neovide_fullscreen = !g:neovide_fullscreen<CR>", {})
|
||||||
|
|
||||||
|
vim.g.neovide_underline_automatic_scaling = true
|
||||||
|
|
||||||
|
-- vim.g.neovide_floating_blur_amount_x = 2.0
|
||||||
|
-- vim.g.neovide_floating_blur_amount_y = 2.0
|
||||||
|
|
||||||
|
vim.g.neovide_scroll_animation_length = 0.1
|
||||||
|
-- vim.g.neovide_cursor_animation_length = 0
|
||||||
|
-- vim.g.neovide_cursor_trail_size = 0
|
||||||
|
vim.g.neovide_hide_mouse_when_typing = true
|
||||||
|
|
||||||
|
vim.g.neovide_fullscreen = true
|
||||||
|
end
|
||||||
|
|
||||||
|
opt.helpheight = 0 -- Disable help window resizing
|
||||||
|
opt.winwidth = 30 -- Minimum width for active window
|
||||||
|
opt.winminwidth = 1 -- Minimum width for inactive windows
|
||||||
|
opt.winheight = 1 -- Minimum height for active window
|
||||||
|
opt.winminheight = 1 -- Minimum height for inactive window
|
||||||
|
|
||||||
|
opt.showcmd = false -- show command in status line
|
||||||
|
opt.cmdheight = 0
|
||||||
|
opt.cmdwinheight = 5 -- Command-line lines
|
||||||
|
opt.equalalways = true -- Resize windows on split or close
|
||||||
|
opt.colorcolumn = "+0" -- Column highlight at textwidth's max character-limit
|
||||||
|
|
||||||
|
opt.cursorline = true
|
||||||
|
opt.cursorlineopt = { "number", "screenline" }
|
||||||
|
|
||||||
|
opt.pumheight = 10 -- Maximum number of items to show in the popup menu
|
||||||
|
opt.pumwidth = 10 -- Minimum width for the popup menu
|
||||||
|
opt.pumblend = 10 -- Popup blend
|
||||||
|
|
||||||
|
-- Spelling correction
|
||||||
|
-- ===
|
||||||
|
|
||||||
|
opt.spell = false -- manually enable spell with `set spell` or `<leader>ts`
|
||||||
|
opt.spelllang = "en,de_de,"
|
||||||
|
opt.spellsuggest = "double,50,timeout:5000"
|
||||||
|
|
||||||
|
-- autocommands
|
||||||
|
-- ===
|
||||||
|
local function augroup(name)
|
||||||
|
return vim.api.nvim_create_augroup("plex_" .. name, {})
|
||||||
|
end
|
|
@ -260,3 +260,96 @@ popupmenu
|
||||||
#m
|
#m
|
||||||
ufo
|
ufo
|
||||||
treesitter
|
treesitter
|
||||||
|
GitLab
|
||||||
|
Gitea
|
||||||
|
Autocrate
|
||||||
|
YAML
|
||||||
|
TOML
|
||||||
|
autocrate
|
||||||
|
TBD
|
||||||
|
PRs
|
||||||
|
yaml
|
||||||
|
netpong
|
||||||
|
gehostet
|
||||||
|
IoT
|
||||||
|
einen
|
||||||
|
NTSecureGateway
|
||||||
|
SoC
|
||||||
|
Lockscreen
|
||||||
|
licht/!
|
||||||
|
Licht
|
||||||
|
ESRDD
|
||||||
|
erstmal
|
||||||
|
warmweißer
|
||||||
|
WG
|
||||||
|
SilverBullet
|
||||||
|
Forgejo
|
||||||
|
additional
|
||||||
|
scriptable
|
||||||
|
Autcrate
|
||||||
|
rustaceans
|
||||||
|
serv0
|
||||||
|
serv1
|
||||||
|
serv2
|
||||||
|
sequenceDiagram
|
||||||
|
style
|
||||||
|
BT
|
||||||
|
style
|
||||||
|
logdir
|
||||||
|
traceback
|
||||||
|
timestamp
|
||||||
|
LoggerBuilder
|
||||||
|
libpt
|
||||||
|
T2000
|
||||||
|
TINF22CS
|
||||||
|
Fliegendes/!
|
||||||
|
Gewöhnungsphase
|
||||||
|
Notfallmaßnahmen
|
||||||
|
übergriffig
|
||||||
|
Eligswalde
|
||||||
|
Usecases
|
||||||
|
OpenAPI
|
||||||
|
homeserver
|
||||||
|
theseus
|
||||||
|
Kernelmodus
|
||||||
|
entziehbares
|
||||||
|
vorkompiliert
|
||||||
|
vorkompilierte
|
||||||
|
Wordle
|
||||||
|
Quotientenkriterium
|
||||||
|
neovim
|
||||||
|
authentik
|
||||||
|
auth
|
||||||
|
Mesum
|
||||||
|
Raza
|
||||||
|
letsencrypt
|
||||||
|
MTA
|
||||||
|
STS
|
||||||
|
BIMI
|
||||||
|
Minecraft
|
||||||
|
exfiltrate
|
||||||
|
VPS
|
||||||
|
JVM
|
||||||
|
Dammit/!
|
||||||
|
Maxdorf
|
||||||
|
Leininger
|
||||||
|
Dockerfile
|
||||||
|
yml
|
||||||
|
CMD
|
||||||
|
UDPP
|
||||||
|
Unknowability
|
||||||
|
unknowability
|
||||||
|
talmann
|
||||||
|
Goldberger
|
||||||
|
ofc
|
||||||
|
shockwaves
|
||||||
|
deerhash
|
||||||
|
argon2
|
||||||
|
SCSS
|
||||||
|
Eligswalde's
|
||||||
|
Achmarel
|
||||||
|
aswell
|
||||||
|
AGI
|
||||||
|
FTL
|
||||||
|
Houten
|
||||||
|
Gabriella
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue