(neovim) another try of my own setup

This commit is contained in:
Bartek Stalewski 2025-07-24 03:26:03 +02:00
parent 50e0f23feb
commit 7225cf3967
No known key found for this signature in database
54 changed files with 677 additions and 586 deletions

View file

@ -1,2 +0,0 @@
require("config")
require("core")

View file

@ -1,100 +0,0 @@
-- don't auto comment new line
vim.api.nvim_create_autocmd("BufEnter", { command = [[set formatoptions-=cro]] })
-- resize neovim split when terminal is resized
vim.api.nvim_command("autocmd VimResized * wincmd =")
-- enable spell for text files
vim.api.nvim_create_autocmd("FileType", {
group = vim.api.nvim_create_augroup("spell", { clear = true }),
pattern = { "text", "plaintex", "typst", "gitcommit", "markdown" },
callback = function()
vim.api.nvim_set_hl(0, "SpellBad", { bg = "#770000", fg = "#ffffff" })
vim.opt_local.spell = true
end,
})
-- set some colors
vim.api.nvim_create_autocmd({ "BufReadPre" }, {
callback = function()
vim.api.nvim_set_hl(0, "ColorColumn", { bg = "#770000" })
vim.api.nvim_set_hl(0, "DiffChange", { bg = "NONE", fg = "#e7c547" })
vim.api.nvim_set_hl(0, "DiffText", { bg = "NONE", fg = "#ff8700" })
vim.api.nvim_set_hl(0, "Visual", { bg = "#0094d8", fg = "#ffffff" })
end,
})
-- fix dimmed elements in Snacks.picker
vim.api.nvim_create_autocmd("User", {
pattern = "VeryLazy",
callback = function()
Snacks.util.set_hl({
PickerDir = { link = "Text" },
PickerPathHidden = { link = "Text" },
PickerPathIgnored = { link = "Comment" },
PickerGitStatusUntracked = { link = "Special" },
}, { prefix = "Snacks" })
end,
})
-- remember last location
vim.api.nvim_create_autocmd("BufReadPost", {
group = vim.api.nvim_create_augroup("last-loc", { clear = true }),
callback = function(event)
local exclude = { "gitcommit" }
local buf = event.buf
if vim.tbl_contains(exclude, vim.bo[buf].filetype) or vim.b[buf].my_last_loc then
return
end
vim.b[buf].my_last_loc = true
local mark = vim.api.nvim_buf_get_mark(buf, '"')
local lcount = vim.api.nvim_buf_line_count(buf)
if mark[1] > 0 and mark[1] <= lcount then
pcall(vim.api.nvim_win_set_cursor, 0, mark)
end
end,
})
-- lsp
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("lsp-attach", { clear = true }),
callback = function(event)
local map = function(keys, func, desc)
vim.keymap.set("n", keys, func, { buffer = event.buf, desc = desc })
end
map("<leader>cd", vim.diagnostic.open_float, "diagnostic (float)")
map("<leader>ch", vim.lsp.buf.hover, "help")
map("<leader>ca", vim.lsp.buf.code_action, "actions")
map("<leader>cf", vim.lsp.buf.format, "format file")
local function client_supports_method(client, method, bufnr)
if vim.fn.has("nvim-0.11") == 1 then
return client:supports_method(method, bufnr)
else
return client.supports_method(method, { bufnr = bufnr })
end
end
local client = vim.lsp.get_client_by_id(event.data.client_id)
if
client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf)
then
local highlight_augroup = vim.api.nvim_create_augroup("lsp-highlight", { clear = false })
vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.document_highlight,
})
vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.clear_references,
})
vim.api.nvim_create_autocmd("LspDetach", {
group = vim.api.nvim_create_augroup("lsp-detach", { clear = true }),
callback = function(event2)
vim.lsp.buf.clear_references()
vim.api.nvim_clear_autocmds({ group = "lsp-highlight", buffer = event2.buf })
end,
})
end
end,
})

View file

@ -1,61 +0,0 @@
return {
{
"saghen/blink.cmp",
dependencies = {
"rafamadriz/friendly-snippets",
"L3MON4D3/LuaSnip",
},
event = "InsertEnter",
version = "*",
config = function()
require("blink.cmp").setup({
snippets = { preset = "luasnip" },
signature = { enabled = true },
appearance = {
use_nvim_cmp_as_default = false,
nerd_font_variant = "normal",
},
sources = {
default = { "lsp", "path", "snippets", "buffer" },
providers = {
cmdline = {
min_keyword_length = 2,
},
},
},
keymap = {
["<Tab>"] = { "accept", "fallback" },
},
cmdline = {
enabled = false,
},
completion = {
menu = {
border = nil,
scrolloff = 1,
scrollbar = false,
draw = {
columns = {
{ "kind_icon" },
{ "label", "label_description", gap = 1 },
{ "kind" },
{ "source_name" },
},
},
},
documentation = {
window = {
border = nil,
scrollbar = false,
winhighlight = "Normal:BlinkCmpDoc,FloatBorder:BlinkCmpDocBorder,EndOfBuffer:BlinkCmpDoc",
},
auto_show = true,
auto_show_delay_ms = 500,
},
},
})
require("luasnip.loaders.from_vscode").lazy_load()
end,
},
}

View file

@ -1,18 +0,0 @@
return {
"stevearc/conform.nvim",
opts = {},
config = function()
require("conform").setup({
formatters_by_ft = {
lua = { "stylua" },
terraform = { "terraform_fmt" },
tf = { "terraform_fmt" },
["terraform-vars"] = { "terraform_fmt" },
},
format_on_save = {
lsp_fallback = true,
async = false,
},
})
end,
}

View file

@ -1,61 +0,0 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = {
"nvim-tree/nvim-web-devicons",
},
event = "VeryLazy",
config = function()
require("lualine").setup({
options = {
theme = "powerline",
section_separators = "",
component_separators = "",
globalstatus = false,
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch" },
lualine_c = {
{
"diff",
symbols = {
added = "",
modified = "",
removed = "",
},
},
{
"diagnostics",
symbols = {
error = "",
warn = "",
info = "",
hint = "",
},
},
{ "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
{ "filename", file_status = true, path = 1 },
},
lualine_x = {
{
"lsp_status",
symbols = {
spinner = { "", "", "", "", "", "", "", "", "", "" },
done = "",
separator = " ",
},
},
},
lualine_y = {
{ "searchcount" },
{ "progress", separator = " ", padding = { left = 1, right = 0 } },
{ "location", padding = { left = 0, right = 1 } },
},
lualine_z = {},
},
tabline = {
lualine_a = { "buffers" },
},
})
end,
}

View file

@ -1,45 +0,0 @@
return {
{
"williamboman/mason.nvim",
lazy = false,
cmd = "Mason",
keys = { { "<leader>cm", "<cmd>Mason<cr>", desc = "Mason" } },
build = ":MasonUpdate",
opts = {
ensure_installed = {
"lua-language-server",
"terraform-ls",
"stylua",
},
},
config = function(_, opts)
require("mason").setup(opts)
local mr = require("mason-registry")
local function ensure_installed()
for _, tool in ipairs(opts.ensure_installed) do
if mr.has_package(tool) then
local p = mr.get_package(tool)
if not p:is_installed() then
vim.notify("Mason: Installing " .. tool .. "...", vim.log.levels.INFO)
p:install():once("closed", function()
if p:is_installed() then
vim.notify("Mason: Successfully installed " .. tool, vim.log.levels.INFO)
else
vim.notify("Mason: Failed to install " .. tool, vim.log.levels.ERROR)
end
end)
end
else
vim.notify("Mason: Package '" .. tool .. "' not found", vim.log.levels.WARN)
end
end
end
if mr.refresh then
mr.refresh(ensure_installed)
else
ensure_installed()
end
end,
},
}

View file

@ -1,11 +0,0 @@
return {
"loctvl842/monokai-pro.nvim",
priority = 10000,
lazy = false,
config = function()
require("monokai-pro").setup({
filter = "classic",
})
vim.cmd.colorscheme("monokai-pro")
end,
}

View file

@ -1,27 +0,0 @@
return {
"folke/noice.nvim",
event = "VeryLazy",
dependencies = {
"MunifTanjim/nui.nvim",
},
config = function()
require("noice").setup({
lsp = {
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
},
},
messages = {
view_search = false,
},
presets = {
bottom_search = true,
command_palette = true,
long_message_to_split = true,
lsp_doc_border = true,
},
})
end,
}

View file

@ -1,26 +0,0 @@
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
event = "VeryLazy",
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = {
"bash",
"diff",
"gotmpl",
"hcl",
"helm",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"regex",
"terraform",
"vim",
},
highlight = { enable = true },
indent = { enable = true },
})
end,
}

View file

@ -1,36 +0,0 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
config = function()
require("which-key").setup({
preset = "helix",
delay = 300,
icons = {
rules = false,
breadcrumb = "",
separator = "󱦰 ",
group = "󰹍 ",
},
plugins = {
spelling = {
enabled = false,
},
},
win = {
height = {
max = math.huge,
},
},
spec = {
{
mode = { "n", "v" },
{ "<leader>b", group = "buffer" },
{ "<leader>c", group = "code" },
{ "<leader>f", group = "find" },
{ "<leader>h", group = "history" },
{ "<leader>u", group = "ui" },
},
},
})
end,
}

View file

@ -0,0 +1,2 @@
-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")

View file

@ -0,0 +1,3 @@
config:
MD004: false
MD013: false

View file

@ -0,0 +1,37 @@
-- don't auto comment new line
vim.api.nvim_create_autocmd("BufEnter", { command = [[set formatoptions-=cro]] })
-- resize neovim split when terminal is resized
vim.api.nvim_command("autocmd VimResized * wincmd =")
-- enable spell for text files
vim.api.nvim_create_autocmd("FileType", {
group = vim.api.nvim_create_augroup("spell", { clear = true }),
pattern = { "text", "plaintex", "typst", "gitcommit", "markdown" },
callback = function()
vim.opt_local.spell = true
end,
})
-- set some colors
vim.api.nvim_create_autocmd({ "BufReadPre" }, {
callback = function()
vim.api.nvim_set_hl(0, "ColorColumn", { bg = "#770000" })
vim.api.nvim_set_hl(0, "DiffChange", { bg = "NONE", fg = "#e7c547" })
vim.api.nvim_set_hl(0, "DiffText", { bg = "NONE", fg = "#ff8700" })
vim.api.nvim_set_hl(0, "Visual", { bg = "#0094d8", fg = "#ffffff" })
end,
})
-- fix dimmed elements in Snacks.picker
vim.api.nvim_create_autocmd("User", {
pattern = "VeryLazy",
callback = function()
Snacks.util.set_hl({
PickerDir = { link = "Text" },
PickerPathHidden = { link = "Text" },
PickerPathIgnored = { link = "Comment" },
PickerGitStatusUntracked = { link = "Special" },
}, { prefix = "Snacks" })
end,
})

View file

@ -1,25 +1,62 @@
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
-- Add any additional keymaps here
local map = vim.keymap.set
local nomap = vim.keymap.del
nomap("n", "<leader><space>")
nomap("n", "<leader>,")
nomap("n", "<leader>.")
nomap("n", "<leader>?")
nomap("n", "<leader>K")
nomap("n", "<leader>l")
nomap("n", "<leader>L")
nomap("n", "<leader>S")
nomap("n", "<leader>`")
nomap("n", "<leader>bb")
nomap("n", "<leader>bD")
nomap("n", "<leader>bo")
nomap("n", "<leader>E")
nomap("n", "<leader>fb")
nomap("n", "<leader>fc")
nomap("n", "<leader>fF")
nomap("n", "<leader>fr")
nomap("n", "<leader>fB")
nomap("n", "<leader>fe")
nomap("n", "<leader>fE")
nomap("n", "<leader>fn")
nomap("n", "<leader>fp")
nomap("n", "<leader>fR")
nomap("n", "<leader>ft")
nomap("n", "<leader>fT")
nomap("n", "<leader>gY")
nomap("n", "<leader>gS")
nomap("n", "<leader>qq")
nomap("n", "<leader>xl")
nomap("n", "<leader>xq")
map("i", "<C-a>", "<esc>I")
map("i", "<C-e>", "<esc>A")
map("v", "<leader>/", "gc", { desc = "toggle comments", remap = true })
map("n", "<esc><cr>", "<cmd>wqa<cr>", { desc = "save and exit", remap = true })
map("n", "<esc><esc><cr>", "<cmd>wqa<cr>", { desc = "save and exit", remap = true })
map("n", "<tab>", "<C-w>w", { desc = "switch pane", remap = true })
map("n", "<esc><cr>", "<esc><cmd>wq!<cr>", { desc = "Save and Exit", remap = true })
map("n", "<tab>", "<C-w>w", { desc = "Switch Pane", remap = true })
map("n", "+", ":vertical resize +5<CR>")
map("n", "_", ":vertical resize -5<CR>")
map("n", "=", ":resize +5<CR>")
map("n", "-", ":resize -5<CR>")
map("n", "<leader>-", "<C-W>s", { desc = "split horizontally", remap = true })
map("n", "<leader>/", "gcc", { desc = "toggle comments", remap = true })
map("n", "<leader>|", "<C-W>v", { desc = "split vertically", remap = true })
map("n", "<leader>-", "<C-W>s", { desc = "Split Horizontally", remap = true })
map("n", "<leader>/", "gcc", { desc = "Toggle Comments", remap = true })
map("n", "<leader>|", "<C-W>v", { desc = "Split Vertically", remap = true })
map("n", "<leader>b[", "<cmd>bprevious<CR>", { desc = "buffer previous", remap = true })
map("n", "<leader>b]", "<cmd>bnext<CR>", { desc = "buffer next", remap = true })
@ -33,7 +70,7 @@ map("n", "<leader>bn", "<cmd>enew<CR>", { desc = "buffer create", remap = true }
map("n", "<leader>e", function()
Snacks.explorer()
end, { desc = "explorer", remap = true })
end, { desc = "Explorer", remap = true })
map("n", "<leader>s", "<cmd>set hlsearch!<cr>", { desc = "toggle hlsearch", remap = true })
map("n", "<leader>ff", function()
@ -51,12 +88,6 @@ map("n", "<leader>hs", function()
Snacks.picker.search_history()
end, { desc = "search", remap = true })
map(
"n",
"<leader>m",
'<cmd>execute "set colorcolumn=" . (&colorcolumn == "" ? "80,120" : "")<cr>',
{ desc = "toggle columns" }
)
map("n", "<leader>n", function()
vim.cmd("set number!")
vim.cmd('execute "set signcolumn=" . (&signcolumn == "yes" ? "no" : "yes")')
@ -65,10 +96,15 @@ map("n", "<leader>n", function()
else
Snacks.indent.enable()
end
end, { desc = "toggle decorations", remap = true })
map("n", "<leader>t", function()
end, { desc = "Toggle Decorations", remap = true })
map("n", "<leader>T", function()
Snacks.terminal()
end, { desc = "terminal", remap = true })
end, { desc = "Terminal", remap = true })
map("n", "<leader>s", "<cmd>set hlsearch!<cr>", { desc = "Toggle hlsearch", remap = true })
map("n", "<leader>us", "<cmd>set spell!<cr>", { desc = "toggle spell", remap = true })
map("n", "<leader>uw", "<cmd>set wrap!<cr>", { desc = "toggle wrap", remap = true })
map("v", "<leader>/", "gc", { desc = "Toggle Comments", remap = true })

View file

@ -0,0 +1,12 @@
return {
"saghen/blink.cmp",
opts = {
keymap = {
preset = "none",
["<Tab>"] = { "accept", "fallback" },
},
cmdline = {
enabled = false,
},
},
}

View file

@ -0,0 +1,57 @@
return {
"nvim-lualine/lualine.nvim",
opts = {
options = {
theme = "powerline",
section_separators = "",
component_separators = "",
globalstatus = false,
},
sections = {
lualine_a = { "mode" },
lualine_b = {
{ "branch" },
{
"diff",
symbols = {
added = "",
modified = "",
removed = "",
},
},
{
"diagnostics",
symbols = {
error = "",
warn = "",
info = "",
hint = "",
},
},
},
lualine_c = {
{ "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
{ "filename", file_status = true, path = 1 },
},
lualine_x = {
{
"lsp_status",
symbols = {
spinner = { "", "", "", "", "", "", "", "", "", "" },
done = "",
separator = " ",
},
},
},
lualine_y = {
{ "searchcount" },
{ "progress", separator = " ", padding = { left = 1, right = 0 } },
{ "location", padding = { left = 0, right = 1 } },
},
lualine_z = {},
},
tabline = {
lualine_a = { "buffers" },
},
},
}

View file

@ -0,0 +1,15 @@
return {
{
"loctvl842/monokai-pro.nvim",
priority = 1000,
opts = {
filter = "classic",
},
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "monokai-pro",
},
},
}

View file

@ -0,0 +1,8 @@
return {
"folke/noice.nvim",
opts = {
messages = {
view_search = false,
},
},
}

View file

@ -0,0 +1,19 @@
return {
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"bash",
"diff",
"gotmpl",
"helm",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"regex",
"terraform",
"vim",
},
},
}

View file

@ -0,0 +1,39 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
opts_extend = { "spec" },
opts = {
preset = "helix",
icons = {
mappings = false,
},
defaults = {},
spec = {
{
mode = { "n", "v" },
{
"<leader>b",
group = "buffer",
expand = function()
return require("which-key.extras").expand.buf()
end,
},
{ "<leader>b", group = "buffer" },
{ "<leader>c", group = "code" },
{ "<leader>f", group = "find" },
{ "<leader>h", group = "history" },
{ "<leader>u", group = "ui" },
{ "<leader><tab>", group = "tabs", hidden = true },
{ "<leader>d", group = "debug", hidden = true },
{ "<leader>dp", group = "profiler", hidden = true },
{ "<leader>gh", group = "hunks", hidden = true },
{ "<leader>q", group = "quit/session", hidden = true },
{ "<leader>s", group = "search", hidden = true },
{ "<leader>t", hidden = true },
{ "<leader>w", hidden = true },
{ "<leader>x", group = "diagnostics/quickfix", hidden = true },
{ "gx", desc = "Open with system app", hidden = true },
},
},
},
}

View file

@ -1,2 +1,2 @@
-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")
require("config")
require("core")

View file

@ -0,0 +1,4 @@
return {
cmd = { "marksman", "server" },
filetypes = { "markdown" },
}

View file

@ -9,6 +9,7 @@ vim.api.nvim_create_autocmd("FileType", {
group = vim.api.nvim_create_augroup("spell", { clear = true }),
pattern = { "text", "plaintex", "typst", "gitcommit", "markdown" },
callback = function()
-- vim.api.nvim_set_hl(0, "SpellBad", { bg = "#770000", fg = "#ffffff" })
vim.opt_local.spell = true
end,
})
@ -35,3 +36,65 @@ vim.api.nvim_create_autocmd("User", {
}, { prefix = "Snacks" })
end,
})
-- remember last location
vim.api.nvim_create_autocmd("BufReadPost", {
group = vim.api.nvim_create_augroup("last-loc", { clear = true }),
callback = function(event)
local exclude = { "gitcommit" }
local buf = event.buf
if vim.tbl_contains(exclude, vim.bo[buf].filetype) or vim.b[buf].my_last_loc then
return
end
vim.b[buf].my_last_loc = true
local mark = vim.api.nvim_buf_get_mark(buf, '"')
local lcount = vim.api.nvim_buf_line_count(buf)
if mark[1] > 0 and mark[1] <= lcount then
pcall(vim.api.nvim_win_set_cursor, 0, mark)
end
end,
})
-- lsp
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("lsp-attach", { clear = true }),
callback = function(event)
local map = function(keys, func, desc)
vim.keymap.set("n", keys, func, { buffer = event.buf, desc = desc })
end
map("<leader>cd", vim.diagnostic.open_float, "diagnostic (float)")
map("<leader>ch", vim.lsp.buf.hover, "help")
map("<leader>ca", vim.lsp.buf.code_action, "actions")
map("<leader>cf", vim.lsp.buf.format, "format file")
local function client_supports_method(client, method, bufnr)
if vim.fn.has("nvim-0.11") == 1 then
return client:supports_method(method, bufnr)
else
return client.supports_method(method, { bufnr = bufnr })
end
end
local client = vim.lsp.get_client_by_id(event.data.client_id)
if
client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf)
then
local highlight_augroup = vim.api.nvim_create_augroup("lsp-highlight", { clear = false })
vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.document_highlight,
})
vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.clear_references,
})
vim.api.nvim_create_autocmd("LspDetach", {
group = vim.api.nvim_create_augroup("lsp-detach", { clear = true }),
callback = function(event2)
vim.lsp.buf.clear_references()
vim.api.nvim_clear_autocmds({ group = "lsp-highlight", buffer = event2.buf })
end,
})
end
end,
})

View file

@ -1,62 +1,44 @@
-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
-- Add any additional keymaps here
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
local map = vim.keymap.set
local nomap = vim.keymap.del
nomap("n", "<leader><space>")
nomap("n", "<leader>,")
nomap("n", "<leader>.")
nomap("n", "<leader>?")
nomap("n", "<leader>K")
nomap("n", "<leader>l")
nomap("n", "<leader>L")
nomap("n", "<leader>S")
nomap("n", "<leader>`")
local diagnostic_goto = function(next, severity)
local go = next and vim.diagnostic.goto_next or vim.diagnostic.goto_prev
severity = severity and vim.diagnostic.severity[severity] or nil
return function()
go({ severity = severity })
end
end
nomap("n", "<leader>bb")
nomap("n", "<leader>bD")
nomap("n", "<leader>bo")
nomap("n", "<leader>E")
nomap("n", "<leader>fb")
nomap("n", "<leader>fc")
nomap("n", "<leader>fF")
nomap("n", "<leader>fr")
nomap("n", "<leader>fB")
nomap("n", "<leader>fe")
nomap("n", "<leader>fE")
nomap("n", "<leader>fn")
nomap("n", "<leader>fp")
nomap("n", "<leader>fR")
nomap("n", "<leader>ft")
nomap("n", "<leader>fT")
nomap("n", "<leader>gY")
nomap("n", "<leader>gS")
nomap("n", "<leader>qq")
nomap("n", "<leader>xl")
nomap("n", "<leader>xq")
map({ "i", "n", "s" }, "<esc>", function()
vim.cmd("noh")
return "<esc>"
end, { expr = true, desc = "Escape and Clear hlsearch" })
map("i", "<C-a>", "<esc>I")
map("i", "<C-e>", "<esc>A")
map("n", "<esc><cr>", "<esc><cmd>wq!<cr>", { desc = "Save and Exit", remap = true })
map("n", "<tab>", "<C-w>w", { desc = "Switch Pane", remap = true })
map("n", "]d", diagnostic_goto(true), { desc = "Next Diagnostic" })
map("n", "[d", diagnostic_goto(false), { desc = "Prev Diagnostic" })
map("n", "]e", diagnostic_goto(true, "ERROR"), { desc = "Next Error" })
map("n", "[e", diagnostic_goto(false, "ERROR"), { desc = "Prev Error" })
map("n", "]w", diagnostic_goto(true, "WARN"), { desc = "Next Warning" })
map("n", "[w", diagnostic_goto(false, "WARN"), { desc = "Prev Warning" })
map("v", "<leader>/", "gc", { desc = "toggle comments", remap = true })
map("n", "<esc><cr>", "<cmd>wqa<cr>", { desc = "save and exit", remap = true })
map("n", "<tab>", "<C-w>w", { desc = "switch pane", remap = true })
map("n", "+", ":vertical resize +5<CR>")
map("n", "_", ":vertical resize -5<CR>")
map("n", "=", ":resize +5<CR>")
map("n", "-", ":resize -5<CR>")
map("n", "<leader>-", "<C-W>s", { desc = "Split Horizontally", remap = true })
map("n", "<leader>/", "gcc", { desc = "Toggle Comments", remap = true })
map("n", "<leader>|", "<C-W>v", { desc = "Split Vertically", remap = true })
map("n", "<leader>-", "<C-W>s", { desc = "split horizontally", remap = true })
map("n", "<leader>/", "gcc", { desc = "toggle comments", remap = true })
map("n", "<leader>|", "<C-W>v", { desc = "split vertically", remap = true })
map("n", "<leader>b[", "<cmd>bprevious<CR>", { desc = "buffer previous", remap = true })
map("n", "<leader>b]", "<cmd>bnext<CR>", { desc = "buffer next", remap = true })
@ -68,9 +50,17 @@ map("n", "<leader>bl", function()
end, { desc = "buffer list", remap = true })
map("n", "<leader>bn", "<cmd>enew<CR>", { desc = "buffer create", remap = true })
map("n", "<leader>cd", vim.diagnostic.open_float, { desc = "Line Diagnostics" })
map({ "n", "v" }, "<leader>cf", function()
require("conform").format({
lsp_fallback = true,
async = false,
})
end, { desc = "format", remap = true })
map("n", "<leader>e", function()
Snacks.explorer()
end, { desc = "Explorer", remap = true })
end, { desc = "explorer", remap = true })
map("n", "<leader>s", "<cmd>set hlsearch!<cr>", { desc = "toggle hlsearch", remap = true })
map("n", "<leader>ff", function()
@ -88,6 +78,12 @@ map("n", "<leader>hs", function()
Snacks.picker.search_history()
end, { desc = "search", remap = true })
map(
"n",
"<leader>m",
'<cmd>execute "set colorcolumn=" . (&colorcolumn == "" ? "80,120" : "")<cr>',
{ desc = "toggle columns" }
)
map("n", "<leader>n", function()
vim.cmd("set number!")
vim.cmd('execute "set signcolumn=" . (&signcolumn == "yes" ? "no" : "yes")')
@ -96,15 +92,10 @@ map("n", "<leader>n", function()
else
Snacks.indent.enable()
end
end, { desc = "Toggle Decorations", remap = true })
map("n", "<leader>T", function()
end, { desc = "toggle decorations", remap = true })
map("n", "<leader>t", function()
Snacks.terminal()
end, { desc = "Terminal", remap = true })
map("n", "<leader>s", "<cmd>set hlsearch!<cr>", { desc = "Toggle hlsearch", remap = true })
end, { desc = "terminal", remap = true })
map("n", "<leader>us", "<cmd>set spell!<cr>", { desc = "toggle spell", remap = true })
map("n", "<leader>uw", "<cmd>set wrap!<cr>", { desc = "toggle wrap", remap = true })
map("v", "<leader>/", "gc", { desc = "Toggle Comments", remap = true })

View file

@ -1,11 +1,12 @@
vim.lsp.enable({
"lua",
"terraform",
"markdown",
})
vim.diagnostic.config({
virtual_lines = true,
-- virtual_text = true,
-- virtual_lines = true,
virtual_text = true,
underline = false,
update_in_insert = false,
severity_sort = true,

View file

@ -1,12 +1,61 @@
return {
"saghen/blink.cmp",
opts = {
keymap = {
preset = "none",
["<Tab>"] = { "accept", "fallback" },
},
cmdline = {
enabled = false,
{
"saghen/blink.cmp",
dependencies = {
"rafamadriz/friendly-snippets",
"L3MON4D3/LuaSnip",
},
event = "InsertEnter",
version = "*",
config = function()
require("blink.cmp").setup({
snippets = { preset = "luasnip" },
signature = { enabled = true },
appearance = {
use_nvim_cmp_as_default = false,
nerd_font_variant = "normal",
},
sources = {
default = { "lsp", "path", "snippets", "buffer" },
providers = {
cmdline = {
min_keyword_length = 2,
},
},
},
keymap = {
["<Tab>"] = { "accept", "fallback" },
},
cmdline = {
enabled = false,
},
completion = {
menu = {
border = nil,
scrolloff = 1,
scrollbar = false,
draw = {
columns = {
{ "kind_icon" },
{ "label", "label_description", gap = 1 },
{ "kind" },
{ "source_name" },
},
},
},
documentation = {
window = {
border = nil,
scrollbar = false,
winhighlight = "Normal:BlinkCmpDoc,FloatBorder:BlinkCmpDocBorder,EndOfBuffer:BlinkCmpDoc",
},
auto_show = true,
auto_show_delay_ms = 500,
},
},
})
require("luasnip.loaders.from_vscode").lazy_load()
end,
},
}

View file

@ -0,0 +1,95 @@
return {
{
"williamboman/mason.nvim",
cmd = "Mason",
keys = { { "<leader>cm", "<cmd>Mason<cr>", desc = "Mason" } },
build = ":MasonUpdate",
opts = {
ensure_installed = {
"lua-language-server",
"markdown-toc",
"markdownlint-cli2",
"marksman",
"shfmt",
"stylua",
"terraform-ls",
"tflint",
},
},
config = function(_, opts)
require("mason").setup(opts)
local mr = require("mason-registry")
local function ensure_installed()
for _, tool in ipairs(opts.ensure_installed) do
if mr.has_package(tool) then
local p = mr.get_package(tool)
if not p:is_installed() then
vim.notify("Mason: Installing " .. tool .. "...", vim.log.levels.INFO)
p:install():once("closed", function()
if p:is_installed() then
vim.notify("Mason: Successfully installed " .. tool, vim.log.levels.INFO)
else
vim.notify("Mason: Failed to install " .. tool, vim.log.levels.ERROR)
end
end)
end
else
vim.notify("Mason: Package '" .. tool .. "' not found", vim.log.levels.WARN)
end
end
end
if mr.refresh then
mr.refresh(ensure_installed)
else
ensure_installed()
end
end,
},
{
"mfussenegger/nvim-lint",
event = { "BufReadPre", "BufNewFile" },
config = function()
require("lint").linters_by_ft = {
markdown = { "markdownlint-cli2" },
terraform = { "terraform_validate" },
tf = { "terraform_validate" },
}
local markdownlint = require("lint").linters["markdownlint-cli2"]
markdownlint.args = {
"--config",
"/Users/f/.config/nvim-ftpd/linters/global.markdownlint-cli2.yaml",
}
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
callback = function()
require("lint").try_lint()
end,
})
end,
},
{
"stevearc/conform.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = { "mason.nvim" },
config = function()
require("conform").setup({
formatters_by_ft = {
["terraform-vars"] = { "terraform_fmt" },
bash = { "shfmt" },
lua = { "stylua" },
markdown = { "markdownlint-cli2" },
sh = { "shfmt" },
terraform = { "terraform_fmt" },
tf = { "terraform_fmt" },
zsh = { "shfmt" },
},
-- format_on_save = {
-- lsp_fallback = true,
-- async = false,
-- },
})
end,
},
}

View file

@ -1,57 +1,60 @@
return {
"nvim-lualine/lualine.nvim",
opts = {
options = {
theme = "powerline",
section_separators = "",
component_separators = "",
globalstatus = false,
},
sections = {
lualine_a = { "mode" },
lualine_b = {
{ "branch" },
{
"diff",
symbols = {
added = "",
modified = "",
removed = "",
event = "VeryLazy",
config = function()
require("lualine").setup({
options = {
theme = "powerline",
section_separators = "",
component_separators = "",
globalstatus = false,
},
sections = {
lualine_a = { "mode" },
lualine_b = {
{ "branch" },
{
"diff",
symbols = {
added = "",
modified = "",
removed = "",
},
},
{
"diagnostics",
symbols = {
error = "",
warn = "",
info = "",
hint = "",
},
},
},
{
"diagnostics",
symbols = {
error = "",
warn = "",
info = "",
hint = "",
lualine_c = {
{ "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
{ "filename", file_status = true, path = 1 },
},
lualine_x = {
{
"lsp_status",
symbols = {
spinner = { "", "", "", "", "", "", "", "", "", "" },
done = "",
separator = " ",
},
},
},
},
lualine_c = {
{ "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
{ "filename", file_status = true, path = 1 },
},
lualine_x = {
{
"lsp_status",
symbols = {
spinner = { "", "", "", "", "", "", "", "", "", "" },
done = "",
separator = " ",
},
lualine_y = {
{ "searchcount" },
{ "progress", separator = " ", padding = { left = 1, right = 0 } },
{ "location", padding = { left = 0, right = 1 } },
},
lualine_z = {},
},
lualine_y = {
{ "searchcount" },
{ "progress", separator = " ", padding = { left = 1, right = 0 } },
{ "location", padding = { left = 0, right = 1 } },
tabline = {
lualine_a = { "buffers" },
},
lualine_z = {},
},
tabline = {
lualine_a = { "buffers" },
},
},
})
end,
}

View file

@ -0,0 +1,20 @@
return {
"MeanderingProgrammer/render-markdown.nvim",
ft = { "markdown", "norg", "rmd", "org", "codecompanion" },
config = function()
require("render-markdown").setup({
code = {
sign = false,
width = "block",
right_pad = 1,
},
heading = {
sign = false,
icons = {},
},
checkbox = {
enabled = false,
},
})
end,
}

View file

@ -1,15 +1,14 @@
return {
{
"loctvl842/monokai-pro.nvim",
priority = 1000,
opts = {
"loctvl842/monokai-pro.nvim",
priority = 10000,
lazy = false,
dependencies = {
"echasnovski/mini.icons",
},
config = function()
require("monokai-pro").setup({
filter = "classic",
},
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "monokai-pro",
},
},
})
vim.cmd.colorscheme("monokai-pro")
end,
}

View file

@ -1,8 +1,27 @@
return {
"folke/noice.nvim",
opts = {
messages = {
view_search = false,
},
event = "VeryLazy",
dependencies = {
"MunifTanjim/nui.nvim",
},
config = function()
require("noice").setup({
lsp = {
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
},
},
messages = {
view_search = false,
},
presets = {
bottom_search = true,
command_palette = true,
long_message_to_split = true,
lsp_doc_border = true,
},
})
end,
}

View file

@ -1,19 +1,26 @@
return {
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"bash",
"diff",
"gotmpl",
"helm",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"regex",
"terraform",
"vim",
},
},
build = ":TSUpdate",
event = "VeryLazy",
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = {
"bash",
"diff",
"gotmpl",
"hcl",
"helm",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"regex",
"terraform",
"vim",
},
highlight = { enable = true },
indent = { enable = true },
})
end,
}

View file

@ -1,39 +1,38 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
opts_extend = { "spec" },
opts = {
preset = "helix",
icons = {
mappings = false,
},
defaults = {},
spec = {
{
mode = { "n", "v" },
{
"<leader>b",
group = "buffer",
expand = function()
return require("which-key.extras").expand.buf()
end,
},
{ "<leader>b", group = "buffer" },
{ "<leader>c", group = "code" },
{ "<leader>f", group = "find" },
{ "<leader>h", group = "history" },
{ "<leader>u", group = "ui" },
{ "<leader><tab>", group = "tabs", hidden = true },
{ "<leader>d", group = "debug", hidden = true },
{ "<leader>dp", group = "profiler", hidden = true },
{ "<leader>gh", group = "hunks", hidden = true },
{ "<leader>q", group = "quit/session", hidden = true },
{ "<leader>s", group = "search", hidden = true },
{ "<leader>t", hidden = true },
{ "<leader>w", hidden = true },
{ "<leader>x", group = "diagnostics/quickfix", hidden = true },
{ "gx", desc = "Open with system app", hidden = true },
config = function()
require("which-key").setup({
preset = "helix",
delay = 300,
icons = {
rules = false,
breadcrumb = "",
separator = "󱦰 ",
group = "󰹍 ",
},
},
},
plugins = {
spelling = {
enabled = false,
},
},
win = {
height = {
max = math.huge,
},
},
spec = {
{
mode = { "n", "v" },
{ "[", group = "previous..." },
{ "]", group = "next..." },
{ "<leader>b", group = "buffer" },
{ "<leader>c", group = "code" },
{ "<leader>f", group = "find" },
{ "<leader>h", group = "history" },
{ "<leader>u", group = "ui" },
},
},
})
end,
}