Merge branch 'master' into mobile-synx
This commit is contained in:
commit
e608db2e58
|
@ -6,3 +6,4 @@ coc-settings.json
|
|||
lazy-lock.json
|
||||
after
|
||||
**/.DS_Store
|
||||
lua/custom/secret
|
||||
|
|
|
@ -71,42 +71,6 @@ autocmd("FileType", {
|
|||
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 ------------------------------------------
|
||||
local new_cmd = vim.api.nvim_create_user_command
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@ local M = {}
|
|||
local highlights = require "custom.highlights"
|
||||
|
||||
M.ui = {
|
||||
theme = "chadracula",
|
||||
theme_toggle = { "kanagawa", "chadracula" },
|
||||
theme = "oceanic-next",
|
||||
theme_toggle = { "oceanic-next", "ayu_light" },
|
||||
|
||||
hl_override = highlights.override,
|
||||
hl_add = highlights.add,
|
||||
|
@ -64,7 +64,8 @@ local get_info = function()
|
|||
},
|
||||
{ " Mappings", "<space>ch", "NvCheatsheet" },
|
||||
{ " Git", "<space>gg", "LazyGit" },
|
||||
{ " Files", "<F5>", "NvimTreeToggle" },
|
||||
{ " Files", "<F5>", "NvimTreeToggle" },
|
||||
{ " Change Directory", ";cd", "Telescope zoxide list" },
|
||||
{ " Terminal", "<A-i>", "ToggleTerm direction=float" },
|
||||
}
|
||||
return buf
|
||||
|
|
|
@ -1,24 +1,29 @@
|
|||
local options = {
|
||||
lsp_fallback = true,
|
||||
lsp_fallback = true,
|
||||
|
||||
formatters_by_ft = {
|
||||
lua = { "stylua" },
|
||||
formatters_by_ft = {
|
||||
lua = { "stylua" },
|
||||
|
||||
javascript = { "prettier" },
|
||||
css = { "prettier" },
|
||||
html = { "prettier" },
|
||||
javascript = { "prettier" },
|
||||
css = { "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
|
||||
-- instead of the above code you could just use a loop! the config is just a table after all!
|
||||
|
||||
-- format_on_save = {
|
||||
-- -- These options will be passed to conform.format()
|
||||
-- timeout_ms = 500,
|
||||
-- lsp_fallback = true,
|
||||
-- },
|
||||
-- format_on_save = {
|
||||
-- -- These options will be passed to conform.format()
|
||||
-- timeout_ms = 500,
|
||||
-- lsp_fallback = true,
|
||||
-- },
|
||||
}
|
||||
|
||||
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 lspconfig = require "lspconfig"
|
||||
local lspsettings = require "custom.configs.lspsettings"
|
||||
|
||||
-- if you just want default config for the servers then put them in a table
|
||||
local servers = {
|
||||
|
@ -10,9 +11,11 @@ local servers = {
|
|||
"tsserver",
|
||||
"clangd",
|
||||
"pyright",
|
||||
"rust_analyzer",
|
||||
"bashls",
|
||||
"cmake",
|
||||
"yamlls",
|
||||
"texlab",
|
||||
"csharp_ls",
|
||||
}
|
||||
|
||||
for _, lsp in ipairs(servers) do
|
||||
|
@ -21,3 +24,13 @@ for _, lsp in ipairs(servers) do
|
|||
capabilities = capabilities,
|
||||
}
|
||||
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 = {
|
||||
ensure_installed = {
|
||||
-- general purpose
|
||||
"purpose",
|
||||
|
||||
-- lua stuff
|
||||
"lua-language-server",
|
||||
"stylua",
|
||||
|
||||
-- web dev stuff
|
||||
"css-lsp",
|
||||
"html-lsp",
|
||||
"typescript-language-server",
|
||||
"deno",
|
||||
"prettier",
|
||||
|
||||
-- c/cpp stuff
|
||||
"clangd",
|
||||
"clang-format",
|
||||
"cmake-language-server",
|
||||
|
||||
-- rust
|
||||
"rust-analyzer",
|
||||
"taplo",
|
||||
|
||||
-- python
|
||||
"pyright",
|
||||
|
||||
-- english??
|
||||
"write-good",
|
||||
|
||||
-- shell
|
||||
"shellcheck",
|
||||
"bash-language-server",
|
||||
"ltex-ls",
|
||||
"shellcheck",
|
||||
"taplo",
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -7,16 +7,19 @@ local M = {}
|
|||
---@type Base46HLGroupsList
|
||||
M.override = {
|
||||
Comment = {
|
||||
italic = true,
|
||||
},
|
||||
NvDashAscii = {
|
||||
fg = "#b33366",
|
||||
bg = "#1a1a1a",
|
||||
},
|
||||
NvDashButtons = {
|
||||
fg = "White",
|
||||
bg = "#241e1e",
|
||||
italic = false,
|
||||
},
|
||||
-- NvDashAscii = {
|
||||
-- fg = "#b33366",
|
||||
-- bg = "#1a1a1a",
|
||||
-- },
|
||||
-- NvDashButtons = {
|
||||
-- fg = "White",
|
||||
-- bg = "#241e1e",
|
||||
-- },
|
||||
TodoFgNOTE = {
|
||||
fg = "#cccccc"
|
||||
}
|
||||
}
|
||||
|
||||
---@type HLTable
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
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.spelllang = "en,de"
|
||||
opt.clipboard = "" -- don't just use the system clipboard
|
||||
opt.wrap = false
|
||||
opt.breakindent = false
|
||||
|
@ -29,10 +30,16 @@ opt.shiftround = true -- Round indent to multiple of 'shiftwidth'
|
|||
|
||||
-- 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.timeoutlen = 500 -- Time out on mappings
|
||||
opt.timeoutlen = 250 -- Time out on mappings
|
||||
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
|
||||
-- ===
|
||||
|
@ -62,7 +69,7 @@ opt.wildmode = "longest:full,full" -- Command-line completion mode
|
|||
-- Folds
|
||||
-- ===
|
||||
|
||||
opt.foldlevel = 10000 -- start with all folds open
|
||||
opt.foldlevel = 10 -- start with all folds open
|
||||
|
||||
-- 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.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
|
||||
|
@ -83,6 +91,24 @@ 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
|
||||
|
@ -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.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)
|
||||
|
@ -136,12 +169,15 @@ vim.api.nvim_create_autocmd("VimResized", {
|
|||
})
|
||||
|
||||
-- Wrap and enable spell-checker in text filetypes
|
||||
-- also enable wrap on these text filetypes
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
group = augroup "spell_conceal",
|
||||
pattern = { "gitcommit", "markdown", "tex", "latex", "norg" },
|
||||
callback = function()
|
||||
vim.opt_local.spell = true
|
||||
vim.opt_local.conceallevel = 0
|
||||
vim.opt.wrap = true
|
||||
-- vim.opt.formatoptions = ""
|
||||
end,
|
||||
})
|
||||
|
||||
|
@ -154,3 +190,7 @@ if vim.g.started_by_firenvim == true then
|
|||
vim.o.lines = vim.o.lines - 1
|
||||
end, { expr = true, desc = "Make Display smaller" })
|
||||
end
|
||||
|
||||
-- alias filetypes
|
||||
vim.filetype.add { extension = { tera = "html" } }
|
||||
vim.filetype.add { extension = { plaintex = "tex" } }
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
---@type MappingsTable
|
||||
|
||||
local M = {}
|
||||
|
||||
-- NOTE: The mappings here are case sensitive!!! Removing a specific default
|
||||
|
@ -40,7 +41,6 @@ M.disabled = {
|
|||
["<leader>td"] = "",
|
||||
["<leader>wk"] = "",
|
||||
["#"] = "",
|
||||
["?"] = "",
|
||||
},
|
||||
t = {
|
||||
["<C-t>"] = "",
|
||||
|
@ -206,6 +206,9 @@ M.telescope = {
|
|||
["<localleader>fo"] = { "<cmd> Telescope oldfiles <cr>", "Find oldfiles" },
|
||||
["<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
|
||||
["<localleader>cm"] = { "<cmd> Telescope git_commits <cr>", "Git commits" },
|
||||
["<localleader>gt"] = { "<cmd> Telescope git_status <cr>", "Git status" },
|
||||
|
@ -217,6 +220,14 @@ M.telescope = {
|
|||
["<localleader>th"] = { "<cmd> Telescope themes <cr>", "Nvchad themes" },
|
||||
|
||||
["<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,
|
||||
n = {
|
||||
["<F12>"] = {
|
||||
"<cmd>ToggleTerm direction=float<cr>",
|
||||
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||
"toggle terminal",
|
||||
},
|
||||
["<A-i>"] = {
|
||||
"<cmd>ToggleTerm direction=float<cr>",
|
||||
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||
"toggle terminal",
|
||||
},
|
||||
["<A-t>"] = {
|
||||
"<cmd>ToggleTerm direction=tab<cr>",
|
||||
'<cmd>exe v:count1 "ToggleTerm direction=tab"<cr>',
|
||||
"toggle terminal",
|
||||
},
|
||||
["<A-h>"] = {
|
||||
"<cmd>ToggleTerm direction=horizontal<cr>",
|
||||
'<cmd>exe v:count1 "ToggleTerm direction=horizontal"<cr>',
|
||||
"toggle terminal",
|
||||
},
|
||||
["<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",
|
||||
},
|
||||
},
|
||||
t = {
|
||||
["<F12>"] = {
|
||||
"<cmd>ToggleTerm direction=float<cr>",
|
||||
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||
"toggle terminal",
|
||||
},
|
||||
["<A-i>"] = {
|
||||
"<cmd>ToggleTerm direction=float<cr>",
|
||||
'<cmd>exe v:count1 "ToggleTerm direction=float"<cr>',
|
||||
"toggle terminal",
|
||||
},
|
||||
["<A-t>"] = {
|
||||
"<cmd>ToggleTerm direction=tab<cr>",
|
||||
'<cmd>exe v:count1 "ToggleTerm direction=tab"<cr>',
|
||||
"toggle terminal",
|
||||
},
|
||||
["<A-h>"] = {
|
||||
"<cmd>ToggleTerm direction=horizontal<cr>",
|
||||
'<cmd>exe v:count1 "ToggleTerm direction=horizontal"<cr>',
|
||||
"toggle terminal",
|
||||
},
|
||||
["<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",
|
||||
},
|
||||
},
|
||||
|
@ -274,6 +329,7 @@ M.nvimtree = {
|
|||
-- toggle
|
||||
["<C-n>"] = { "<cmd> NvimTreeToggle <cr>", "Toggle nvimtree" },
|
||||
["<F5>"] = { "<cmd> NvimTreeToggle <cr>", "Toggle nvimtree" },
|
||||
["<leader>tf"] = { "<cmd> NvimTreeToggle <cr>", "Toggle nvimtree" },
|
||||
|
||||
-- focus
|
||||
["<localleader>e"] = { "<cmd> NvimTreeFocus <cr>", "Focus nvimtree" },
|
||||
|
@ -306,12 +362,13 @@ M.movements = {
|
|||
["H"] = { "<home>", "Beginning of line" },
|
||||
["L"] = { "<end>", "End of line" },
|
||||
|
||||
-- go to mark with "#"
|
||||
["#"] = { "'", "go to mark" },
|
||||
|
||||
-- spell
|
||||
["]s"] = { "]s", "go to next 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 = {
|
||||
--big move
|
||||
|
@ -327,6 +384,10 @@ M.movements = {
|
|||
vim.api.nvim_replace_termcodes("<C-\\><C-N>", true, true, true),
|
||||
"Escape terminal mode",
|
||||
},
|
||||
["<C-S-v>"] = {
|
||||
'<C-w>"+pi',
|
||||
"paste into terminal",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -334,25 +395,27 @@ M.edit = {
|
|||
plugin = false,
|
||||
n = {
|
||||
-- easy newline
|
||||
["OO"] = { "O<esc>", "insert a line above", opts = { nowait = false } },
|
||||
["oo"] = { "o<esc>", "insert a line below", opts = { nowait = false } },
|
||||
["OO"] = { "O<esc>", "insert a line above" },
|
||||
["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
|
||||
-- "J" for join is defaul
|
||||
["S"] = {
|
||||
"i<cr><esc>l",
|
||||
"split line",
|
||||
},
|
||||
["<C-s-j>"] = { "<cmd>join<cr>", "join lines" },
|
||||
["<C-s-s>"] = { "i<cr><esc>l", "split line" },
|
||||
|
||||
-- do something useful with the arrows
|
||||
["<Up>"] = { "<cmd> move-2<cr>", "Move line up", opts = { expr = true } },
|
||||
["<Down>"] = { "<cmd> move+<cr>", "Move line down", opts = { expr = true } },
|
||||
["<Left>"] = { "<cmd> << <cr>", "Less indentation", opts = { expr = true } },
|
||||
["<Right>"] = { "<cmd> >> <cr>", "More indentation", opts = { expr = true } },
|
||||
["<Up>"] = { "<cmd> move-2<cr>", "Move line up" },
|
||||
["<Down>"] = { "<cmd> move+<cr>", "Move line down" },
|
||||
["<Left>"] = { "<<", "Less indentation" },
|
||||
["<Right>"] = { ">>", "More indentation" },
|
||||
|
||||
-- format with conform
|
||||
["<leader>ff"] = {
|
||||
function()
|
||||
-- vim.lsp.buf.format()
|
||||
require("conform").format()
|
||||
end,
|
||||
"format buffer",
|
||||
|
@ -371,13 +434,15 @@ M.edit = {
|
|||
["z="] = { "<cmd>Telescope spell_suggest<CR>", "Spell suggest" },
|
||||
},
|
||||
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" },
|
||||
["<Right>"] = { ">gv", "More indentation" },
|
||||
["<leader>fl"] = { ":!fmt -w80<CR>", "Reorder lines" },
|
||||
},
|
||||
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 } },
|
||||
},
|
||||
x = {},
|
||||
t = {
|
||||
--big move
|
||||
["<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
|
||||
|
|
|
@ -30,7 +30,9 @@ local plugins = {
|
|||
|
||||
-- Install a plugin
|
||||
{
|
||||
-- exit insert mode with 'jk'
|
||||
"max397574/better-escape.nvim",
|
||||
enabled = true,
|
||||
event = "InsertEnter",
|
||||
config = function()
|
||||
require("better_escape").setup()
|
||||
|
@ -92,14 +94,41 @@ local plugins = {
|
|||
["]"] = { name = "+next" },
|
||||
["["] = { name = "+prev" },
|
||||
["<leader>x"] = { name = "+diagnostics/quickfix" },
|
||||
["<leader>d"] = { name = "+debug" },
|
||||
["<leader>c"] = { name = "+code" },
|
||||
["<leader>g"] = { name = "+git" },
|
||||
["<leader>t"] = { name = "+toggle/tools" },
|
||||
["<leader>w"] = { name = "+window/which" },
|
||||
["<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",
|
||||
event = "FileType",
|
||||
|
@ -213,16 +242,26 @@ local plugins = {
|
|||
icon = " ", -- icon used for the sign, and in search results
|
||||
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
|
||||
-- signs = false, -- configure signs for some keywords individually
|
||||
},
|
||||
TODO = { icon = " ", color = "info" },
|
||||
HACK = { icon = " ", color = "warning" },
|
||||
SECURITY = { icon = " ", color = "warning" },
|
||||
TODO = { icon = " ", color = "todo" },
|
||||
HACK = { icon = " ", color = "hack" },
|
||||
SECURITY = { icon = " ", color = "security" },
|
||||
WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } },
|
||||
PERF = { icon = " ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
|
||||
NOTE = { icon = " ", color = "hint", alt = { "INFO" } },
|
||||
PERF = { icon = " ", color = "perf", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
|
||||
NOTE = { icon = " ", color = "hint", alt = { "INFO" } },
|
||||
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",
|
||||
},
|
||||
config = function()
|
||||
require("notify").setup {
|
||||
top_down = false,
|
||||
}
|
||||
require("noice").setup {
|
||||
lsp = {
|
||||
override = {
|
||||
|
@ -325,14 +367,37 @@ local plugins = {
|
|||
-- produce a conflict
|
||||
signature = { 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
|
||||
presets = {
|
||||
bottom_search = true, -- use a classic bottom cmdline for search
|
||||
command_palette = true, -- position the cmdline and popupmenu together
|
||||
long_message_to_split = true, -- long messages will be sent to a split
|
||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||||
inc_rename = true, -- enables an input dialog for inc-rename.nvim
|
||||
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,
|
||||
|
@ -451,7 +516,8 @@ local plugins = {
|
|||
},
|
||||
{
|
||||
"glacambre/firenvim",
|
||||
lazy = not vim.g.started_by_firenvim,
|
||||
enabled = vim.g.started_by_firenvim,
|
||||
lazy = false,
|
||||
build = function()
|
||||
vim.fn["firenvim#install"](0)
|
||||
end,
|
||||
|
@ -461,7 +527,7 @@ local plugins = {
|
|||
[".*"] = {
|
||||
filename = "/tmp/{hostname}_{pathname%10}.{extension%5}",
|
||||
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",
|
||||
event = { "BufReadPost", "BufNewFile" },
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{ 'zR', function() require('ufo').openAllFolds() end },
|
||||
{ 'zM', function() require('ufo').closeAllFolds() end },
|
||||
},
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{ 'zR', function() require('ufo').openAllFolds() end },
|
||||
{ 'zM', function() require('ufo').closeAllFolds() end },
|
||||
},
|
||||
dependencies = {
|
||||
"kevinhwang91/promise-async",
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
|
@ -546,7 +612,6 @@ local plugins = {
|
|||
-- :Chmod
|
||||
-- and also some more, but those are easy done with shell
|
||||
"tpope/vim-eunuch",
|
||||
enabled = false,
|
||||
lazy = false,
|
||||
},
|
||||
{
|
||||
|
@ -557,23 +622,18 @@ local plugins = {
|
|||
local nls = require "null-ls"
|
||||
local builtins = nls.builtins
|
||||
local sources = {
|
||||
builtins.formatting.black,
|
||||
builtins.formatting.fixjson,
|
||||
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.formatting.djlint.with {
|
||||
filetypes = { "django", "jinja.html", "htmldjango", "tera", "html" },
|
||||
},
|
||||
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
|
||||
table.insert(opts.sources, source)
|
||||
|
@ -608,17 +668,19 @@ local plugins = {
|
|||
end,
|
||||
})
|
||||
-- change how the highlighting looks
|
||||
vim.cmd "hi LspInlayHint guibg=bg guifg=#804d66"
|
||||
vim.cmd "hi LspInlayHint guibg=(bg*0.8) guifg=#6699b3"
|
||||
end,
|
||||
},
|
||||
{ "kosayoda/nvim-lightbulb", event = { "BufReadPre", "BufNewFile" } },
|
||||
{
|
||||
"Wansmer/treesj",
|
||||
lazy = false,
|
||||
cmd = { "TSJJoin", "TSJSplit" },
|
||||
cmd = { "TSJJoin", "TSJSplit", "TSJSplit" },
|
||||
keys = {
|
||||
{ "k", "<cmd>TSJJoin<CR>" },
|
||||
{ "S", "<cmd>TSJSplit<CR>" },
|
||||
{ "<C-s-j>", "<cmd>TSJJoin<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 icons = { removed = "", changed = "", added = "" }
|
||||
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
|
||||
for name, icon in pairs(icons) do
|
||||
if tonumber(signs[name]) and signs[name] > 0 then
|
||||
table.insert(labels, { icon .. " " .. signs[name] .. " ", group = "Diff" .. name })
|
||||
end
|
||||
end
|
||||
-- for name, icon in pairs(icons) do
|
||||
-- if tonumber(signs[name]) and signs[name] > 0 then
|
||||
-- table.insert(labels, { icon .. " " .. signs[name] .. " ", group = "Diff" .. name })
|
||||
-- end
|
||||
-- end
|
||||
if #labels > 0 then
|
||||
table.insert(labels, { "| " })
|
||||
end
|
||||
|
@ -674,6 +736,238 @@ local plugins = {
|
|||
}
|
||||
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
|
||||
|
|
|
@ -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",
|
||||
"zip",
|
||||
"zipPlugin",
|
||||
"tutor",
|
||||
"rplugin",
|
||||
"syntax",
|
||||
"synmenu",
|
||||
|
|
|
@ -1,34 +1,8 @@
|
|||
-- All plugins have lazy=true by default,to load a plugin on startup just lazy=false
|
||||
-- List of all default plugins & their definitions
|
||||
local default_plugins = {
|
||||
|
||||
"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",
|
||||
init = function()
|
||||
|
@ -73,7 +47,6 @@ local default_plugins = {
|
|||
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
tag = "v0.9.2",
|
||||
init = function()
|
||||
require("core.utils").lazy_load "nvim-treesitter"
|
||||
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
|
||||
ufo
|
||||
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