Added fish + foot configs to desktop
This commit is contained in:
578
machines/desktop/config/nvim/init.lua
Normal file
578
machines/desktop/config/nvim/init.lua
Normal file
@@ -0,0 +1,578 @@
|
||||
-- Leaders / globals
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = " "
|
||||
|
||||
-- Options
|
||||
vim.opt.termguicolors = true
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.signcolumn = "yes"
|
||||
vim.opt.cursorline = true
|
||||
vim.opt.laststatus = 2
|
||||
|
||||
vim.opt.splitbelow = true
|
||||
vim.opt.splitright = true
|
||||
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
vim.opt.incsearch = true
|
||||
vim.opt.hlsearch = true
|
||||
vim.opt.expandtab = true
|
||||
vim.opt.tabstop = 2
|
||||
vim.opt.shiftwidth = 2
|
||||
vim.opt.softtabstop = 2
|
||||
vim.opt.smartindent = true
|
||||
vim.opt.breakindent = true
|
||||
|
||||
vim.opt.undofile = true
|
||||
vim.opt.swapfile = false
|
||||
vim.opt.backup = false
|
||||
vim.opt.confirm = true
|
||||
|
||||
vim.opt.clipboard = "unnamedplus"
|
||||
|
||||
vim.opt.scrolloff = 8
|
||||
|
||||
|
||||
-- Keymaps
|
||||
vim.keymap.set("n", "<Esc>", "<cmd>nohlsearch<CR><Esc>", { desc = "Clear search highlight" })
|
||||
|
||||
vim.keymap.set("n", "j", "gj", { silent = true })
|
||||
vim.keymap.set("n", "k", "gk", { silent = true })
|
||||
vim.keymap.set("v", "<", "<gv")
|
||||
vim.keymap.set("v", ">", ">gv")
|
||||
|
||||
vim.keymap.set("n", "<C-s>", function()
|
||||
vim.lsp.buf.format({ timeout_ms = 2000 })
|
||||
vim.cmd("w")
|
||||
end, { desc = "Format + Write" })
|
||||
|
||||
vim.keymap.set("i", "<C-s>", function()
|
||||
vim.cmd("stopinsert")
|
||||
vim.lsp.buf.format({ timeout_ms = 2000 })
|
||||
vim.cmd("w")
|
||||
end, { desc = "Format + Write" })
|
||||
|
||||
vim.keymap.set("n", "<C-h>", "<C-w>h", { desc = "Window left" })
|
||||
vim.keymap.set("n", "<C-j>", "<C-w>j", { desc = "Window down" })
|
||||
vim.keymap.set("n", "<C-k>", "<C-w>k", { desc = "Window up" })
|
||||
vim.keymap.set("n", "<C-l>", "<C-w>l", { desc = "Window right" })
|
||||
|
||||
vim.keymap.set("t", "<C-h>", [[<C-\><C-n><C-w>h]], { desc = "Terminal window left" })
|
||||
vim.keymap.set("t", "<C-j>", [[<C-\><C-n><C-w>j]], { desc = "Terminal window down" })
|
||||
vim.keymap.set("t", "<C-k>", [[<C-\><C-n><C-w>k]], { desc = "Terminal window up" })
|
||||
vim.keymap.set("t", "<C-l>", [[<C-\><C-n><C-w>l]], { desc = "Terminal window right" })
|
||||
|
||||
vim.keymap.set("n", "<leader>bb", "<cmd>buffers<CR>", { desc = "List buffers" })
|
||||
vim.keymap.set("n", "<leader>bl", "<cmd>b#<CR>", { desc = "Last buffer" })
|
||||
vim.keymap.set("n", "<leader>bd", "<cmd>bdelete<CR>", { desc = "Delete buffer" })
|
||||
vim.keymap.set("n", "<leader>bD", "<cmd>bdelete!<CR>", { desc = "Force delete buffer" })
|
||||
vim.keymap.set("n", "<leader>bw", "<cmd>bwipeout<CR>", { desc = "Wipe buffer" })
|
||||
vim.keymap.set("n", "<leader>bo", "<cmd>%bdelete|edit#|bdelete#<CR>", { desc = "Delete other buffers" })
|
||||
vim.keymap.set("n", "<leader>ba", "<cmd>%bdelete<CR>", { desc = "Delete all buffers" })
|
||||
|
||||
vim.keymap.set('n', 'H', ':bprevious<CR>', { silent = true })
|
||||
vim.keymap.set('n', 'L', ':bnext<CR>', { silent = true })
|
||||
|
||||
vim.keymap.set('t', '<Esc>', '<C-\\><C-n>', { noremap = true, silent = true })
|
||||
|
||||
|
||||
-- lazy.nvim bootstrap
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- Plugins
|
||||
require("lazy").setup({
|
||||
-- Themes
|
||||
{
|
||||
"vague-theme/vague.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
vim.cmd("colorscheme koda")
|
||||
end,
|
||||
},
|
||||
{ "rebelot/kanagawa.nvim" },
|
||||
{ "oskarnurm/koda.nvim" },
|
||||
{ "datsfilipe/vesper.nvim" },
|
||||
{ "metalelf0/base16-black-metal-scheme" },
|
||||
|
||||
-- LSP / Completion
|
||||
{ "neovim/nvim-lspconfig" },
|
||||
{
|
||||
"saghen/blink.cmp",
|
||||
version = "1.*",
|
||||
opts = {
|
||||
keymap = {
|
||||
preset = "none",
|
||||
["<C-space>"] = { "show", "show_documentation", "hide_documentation" },
|
||||
["<C-e>"] = { "hide" },
|
||||
|
||||
["<C-up>"] = { "scroll_documentation_up" },
|
||||
["<C-down>"] = { "scroll_documentation_down" },
|
||||
|
||||
["<CR>"] = { "accept", "fallback" },
|
||||
|
||||
["<Tab>"] = { "select_next", "fallback" },
|
||||
["<S-Tab>"] = { "select_prev", "fallback" },
|
||||
|
||||
["<C-n>"] = { "select_next", "fallback" },
|
||||
["<C-p>"] = { "select_prev", "fallback" },
|
||||
|
||||
["<C-j>"] = { "snippet_forward", "fallback" },
|
||||
["<C-k>"] = { "snippet_backward", "fallback" },
|
||||
},
|
||||
completion = {
|
||||
documentation = {
|
||||
auto_show = true,
|
||||
},
|
||||
list = {
|
||||
selection = {
|
||||
auto_insert = false,
|
||||
preselect = false
|
||||
}
|
||||
}
|
||||
},
|
||||
sources = {
|
||||
default = { "lsp", "path", "buffer", "snippets" },
|
||||
},
|
||||
snippets = {
|
||||
preset = "luasnip",
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
version = "v2.*",
|
||||
build = "make install_jsregexp",
|
||||
dependencies = { "rafamadriz/friendly-snippets" },
|
||||
config = function()
|
||||
local luasnip = require("luasnip")
|
||||
luasnip.config.setup({
|
||||
history = true,
|
||||
updateevents = "TextChanged, TextChangedI",
|
||||
enable_autosnippets = false,
|
||||
})
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
local autosnips_enabled = false
|
||||
|
||||
vim.keymap.set("n", "<leader>sa", function()
|
||||
autosnips_enabled = not autosnips_enabled
|
||||
luasnip.config.set_config({ enable_autosnippets = autosnips_enabled })
|
||||
vim.notify("Autosnippets: " .. (autosnips_enabled and "ON" or "OFF"))
|
||||
end, { desc = "Toggle autosnippets" })
|
||||
end,
|
||||
},
|
||||
{
|
||||
"lervag/vimtex",
|
||||
lazy = false,
|
||||
init = function()
|
||||
vim.g.vimtex_view_method = "zathura"
|
||||
vim.g.vimtex_quickfix_mode = 0
|
||||
end
|
||||
},
|
||||
{
|
||||
"chomosuke/typst-preview.nvim",
|
||||
lazy = false,
|
||||
version = "1.*",
|
||||
opts = {}
|
||||
},
|
||||
{
|
||||
"NickvanDyke/opencode.nvim",
|
||||
config = function()
|
||||
vim.g.opencode_opts = {
|
||||
provider = {
|
||||
enabled = "tmux",
|
||||
tmux = {}
|
||||
}
|
||||
}
|
||||
vim.o.autoread = true
|
||||
|
||||
vim.keymap.set({ "n", "x" }, "<leader>aa", function() require("opencode").ask("@this: ", { submit = true }) end,
|
||||
{ desc = "AI Ask" })
|
||||
vim.keymap.set({ "n", "x" }, "<leader>as", function() require("opencode").select() end,
|
||||
{ desc = "AI Select action" })
|
||||
vim.keymap.set({ "n", "x" }, "<leader>at", function() require("opencode").toggle() end,
|
||||
{ desc = "AI Toggle panel" })
|
||||
vim.keymap.set({ "n", "x" }, "<leader>ar", function() return require("opencode").operator("@this ") end,
|
||||
{ desc = "AI Add range", expr = true })
|
||||
vim.keymap.set("n", "<leader>al", function() return require("opencode").operator("@this ") .. "_" end,
|
||||
{ desc = "AI Add line", expr = true })
|
||||
|
||||
vim.keymap.set("n", "<leader>au", function() require("opencode").command("session.half.page.up") end,
|
||||
{ desc = "AI Scroll up" })
|
||||
vim.keymap.set("n", "<leader>ad", function() require("opencode").command("session.half.page.down") end,
|
||||
{ desc = "AI Scroll down" })
|
||||
end,
|
||||
},
|
||||
{
|
||||
"github/copilot.vim",
|
||||
init = function()
|
||||
vim.g.copilot_no_tab_map = true
|
||||
vim.g.copilot_assume_mapped = true
|
||||
end,
|
||||
config = function()
|
||||
vim.keymap.set("i", "<M-CR>", 'copilot#Accept("\\<CR>")', {
|
||||
expr = true,
|
||||
replace_keycodes = false,
|
||||
silent = true
|
||||
})
|
||||
|
||||
vim.keymap.set("i", "<M-'>", 'copilot#AcceptWord()', { expr = true, silent = true })
|
||||
vim.keymap.set("i", "<M-;>", 'copilot#AcceptLine()', { expr = true, silent = true })
|
||||
vim.keymap.set("n", "<leader>ac", "<cmd>Copilot toggle<CR>", { desc = "Toggle Copilot" })
|
||||
end
|
||||
},
|
||||
-- File explorer / Search
|
||||
{
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
branch = "v3.x",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"MunifTanjim/nui.nvim",
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
},
|
||||
lazy = false,
|
||||
opts = {
|
||||
window = {
|
||||
width = 80,
|
||||
},
|
||||
filesystem = {
|
||||
filtered_items = {
|
||||
hide_dotfiles = false,
|
||||
},
|
||||
follow_current_file = {
|
||||
enabled = true,
|
||||
},
|
||||
group_empty_dirs = true,
|
||||
},
|
||||
default_component_configs = {
|
||||
indent = {
|
||||
indent_size = 2,
|
||||
with_markers = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>e",
|
||||
function()
|
||||
vim.cmd("Neotree position=right toggle")
|
||||
end,
|
||||
desc = "Neo-tree (right)",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"stevearc/oil.nvim",
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
opts = {},
|
||||
keys = {
|
||||
{ "<leader>E", "<cmd>Oil<CR>", desc = "Oil" },
|
||||
},
|
||||
},
|
||||
{
|
||||
"ibhagwan/fzf-lua",
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
opts = function()
|
||||
local actions = require("fzf-lua.actions")
|
||||
return {
|
||||
files = {
|
||||
actions = {
|
||||
["default"] = actions.file_edit,
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
keys = {
|
||||
{ "<leader>ff", function() require("fzf-lua").files() end, desc = "Find files" },
|
||||
{ "<leader>fb", function() require("fzf-lua").buffers() end, desc = "Find buffers" },
|
||||
{ "<leader>fo", function() require("fzf-lua").oldfiles() end, desc = "Find recent files" },
|
||||
{ "<leader>ft", function() require("fzf-lua").live_grep() end, desc = "Find text in project" },
|
||||
{ "<leader>fs", function() require("fzf-lua").lsp_document_symbols() end, desc = "Find document symbols" },
|
||||
|
||||
{ "<M-/>", function() require("fzf-lua").grep_curbuf() end, desc = "Find text in buffer" },
|
||||
{ "<leader>/", function() require("fzf-lua").grep_curbuf() end, desc = "Find text in buffer" },
|
||||
|
||||
{ "<leader>fh", function() require("fzf-lua").helptags() end, desc = "Find help tags" },
|
||||
},
|
||||
},
|
||||
|
||||
-- Git
|
||||
{
|
||||
"tpope/vim-fugitive",
|
||||
cmd = { "Git", "G" },
|
||||
},
|
||||
{ "lewis6991/gitsigns.nvim" },
|
||||
{
|
||||
"kdheepak/lazygit.nvim",
|
||||
lazy = true,
|
||||
cmd = {
|
||||
"LazyGit",
|
||||
"LazyGitConfig",
|
||||
"LazyGitCurrentFile",
|
||||
"LazyGitFilter",
|
||||
"LazyGitFilterCurrentFile",
|
||||
},
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>gg", "<cmd>LazyGit<cr>", desc = "LazyGit" },
|
||||
},
|
||||
},
|
||||
|
||||
-- Editing utilities
|
||||
{ "MagicDuck/grug-far.nvim" },
|
||||
{
|
||||
"kylechui/nvim-surround",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("nvim-surround").setup({})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
event = "insertenter",
|
||||
config = true
|
||||
},
|
||||
{
|
||||
'abecodes/tabout.nvim',
|
||||
lazy = false,
|
||||
config = function()
|
||||
require('tabout').setup {
|
||||
tabkey = '<Tab>', -- key to trigger tabout, set to an empty string to disable
|
||||
backwards_tabkey = '<S-Tab>', -- key to trigger backwards tabout, set to an empty string to disable
|
||||
act_as_tab = true, -- shift content if tab out is not possible
|
||||
act_as_shift_tab = false, -- reverse shift content if tab out is not possible (if your keyboard/terminal supports <S-Tab>)
|
||||
default_tab = '<C-t>', -- shift default action (only at the beginning of a line, otherwise <TAB> is used)
|
||||
default_shift_tab = '<C-d>', -- reverse shift default action,
|
||||
enable_backwards = true, -- well ...
|
||||
completion = false, -- if the tabkey is used in a completion pum
|
||||
tabouts = {
|
||||
{ open = "'", close = "'" },
|
||||
{ open = '"', close = '"' },
|
||||
{ open = '`', close = '`' },
|
||||
{ open = '(', close = ')' },
|
||||
{ open = '[', close = ']' },
|
||||
{ open = '{', close = '}' },
|
||||
{ open = ',', close = ',' }
|
||||
},
|
||||
ignore_beginning = true, --[[ if the cursor is at the beginning of a filled element it will rather tab out than shift the content ]]
|
||||
exclude = {} -- tabout will ignore these filetypes
|
||||
}
|
||||
end,
|
||||
dependencies = { -- These are optional
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
"L3MON4D3/LuaSnip",
|
||||
},
|
||||
event = 'InsertCharPre', -- Set the event to 'InsertCharPre' for better compatibility
|
||||
priority = 1000,
|
||||
},
|
||||
|
||||
-- Motion / UI
|
||||
{
|
||||
"folke/flash.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
modes = {
|
||||
treesitter = {
|
||||
jump = { pos = "start" }, -- or "end"
|
||||
},
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" },
|
||||
{ "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" },
|
||||
},
|
||||
},
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
lazy = false,
|
||||
build = ":TSUpdate",
|
||||
config = function()
|
||||
require('nvim-treesitter').setup({
|
||||
ensure_installed = { "go", "latex", "typst" },
|
||||
highlight = { enable = true }
|
||||
})
|
||||
end
|
||||
},
|
||||
{
|
||||
"wellle/targets.vim",
|
||||
event = "VeryLazy",
|
||||
},
|
||||
{
|
||||
'nvim-lualine/lualine.nvim',
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||
opts = function()
|
||||
local function pretty_path()
|
||||
local name = vim.api.nvim_buf_get_name(0)
|
||||
if name == '' then return '[No Name]' end
|
||||
-- Relative to current working directory, nicely normalized
|
||||
return vim.fn.fnamemodify(name, ':.')
|
||||
end
|
||||
|
||||
return {
|
||||
options = {
|
||||
section_separators = '',
|
||||
component_separators = '',
|
||||
globalstatus = true,
|
||||
},
|
||||
|
||||
sections = {
|
||||
lualine_a = { 'mode' },
|
||||
lualine_b = { { 'branch', icon = '' }, 'diff' },
|
||||
lualine_c = {
|
||||
{ 'diagnostics' }, -- uses vim.diagnostic by default
|
||||
{ 'filename', path = 1, symbols = { modified = ' ●', readonly = ' ' } },
|
||||
},
|
||||
lualine_x = { 'encoding', 'fileformat', 'filetype', require("opencode").statusline },
|
||||
lualine_y = { 'progress' },
|
||||
lualine_z = { 'location' },
|
||||
},
|
||||
|
||||
-- Global list (best place for buffers)
|
||||
tabline = {
|
||||
lualine_a = {
|
||||
{
|
||||
'buffers',
|
||||
show_filename_only = true,
|
||||
show_modified_status = true,
|
||||
mode = 2,
|
||||
max_length = vim.o.columns * 8 / 10,
|
||||
use_mode_colors = true,
|
||||
buffers_color = {
|
||||
active = 'lualine_a_normal',
|
||||
inactive = 'lualine_b_inactive',
|
||||
}
|
||||
},
|
||||
},
|
||||
lualine_z = { 'tabs' },
|
||||
},
|
||||
}
|
||||
end
|
||||
},
|
||||
{
|
||||
"goolord/alpha-nvim",
|
||||
dependencies = {
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("alpha").setup(require("alpha.themes.theta").config)
|
||||
end
|
||||
},
|
||||
{
|
||||
"chentoast/marks.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
},
|
||||
{
|
||||
"leath-dub/snipe.nvim",
|
||||
keys = {
|
||||
{ "<leader><leader>", function() require("snipe").open_buffer_menu() end, desc = "Open Snipe buffer menu" }
|
||||
},
|
||||
opts = {}
|
||||
},
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
preset = "helix"
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>?",
|
||||
function()
|
||||
require("which-key").show({ global = false })
|
||||
end,
|
||||
desc = "Buffer Local Keymaps (which-key)",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"j-hui/fidget.nvim",
|
||||
opts = {},
|
||||
},
|
||||
{
|
||||
"christoomey/vim-tmux-navigator",
|
||||
cmd = {
|
||||
"TmuxNavigateLeft",
|
||||
"TmuxNavigateDown",
|
||||
"TmuxNavigateUp",
|
||||
"TmuxNavigateRight",
|
||||
"TmuxNavigatePrevious",
|
||||
"TmuxNavigatorProcessList",
|
||||
},
|
||||
keys = {
|
||||
{ "<c-h>", "<cmd><C-U>TmuxNavigateLeft<cr>" },
|
||||
{ "<c-j>", "<cmd><C-U>TmuxNavigateDown<cr>" },
|
||||
{ "<c-k>", "<cmd><C-U>TmuxNavigateUp<cr>" },
|
||||
{ "<c-l>", "<cmd><C-U>TmuxNavigateRight<cr>" },
|
||||
{ "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>" },
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
-- LSP
|
||||
vim.lsp.config("lua_ls", {
|
||||
settings = {
|
||||
Lua = {
|
||||
diagnostics = {
|
||||
globals = { "vim" },
|
||||
},
|
||||
workspace = {
|
||||
checkThirdParty = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
vim.lsp.enable({
|
||||
"lua_ls",
|
||||
"tinymist",
|
||||
"gopls",
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, { desc = "Code Action" })
|
||||
vim.keymap.set("v", "<leader>ca", vim.lsp.buf.code_action, { desc = "Code Action" })
|
||||
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Goto definition" })
|
||||
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { desc = "Goto declaration" })
|
||||
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { desc = "Goto implementation" })
|
||||
vim.keymap.set("n", "gr", vim.lsp.buf.references, { desc = "References" })
|
||||
vim.keymap.set("n", "gy", vim.lsp.buf.type_definition, { desc = "Goto type definition" })
|
||||
|
||||
vim.keymap.set("n", "K", vim.lsp.buf.hover, { desc = "Hover" })
|
||||
vim.keymap.set("i", "<C-k>", vim.lsp.buf.signature_help, { desc = "Signature help" })
|
||||
|
||||
vim.keymap.set("n", "<leader>cs", vim.lsp.buf.document_symbol, { desc = "Document symbols" })
|
||||
vim.keymap.set("n", "<leader>cS", vim.lsp.buf.workspace_symbol, { desc = "Workspace symbols" })
|
||||
|
||||
vim.keymap.set("n", "<leader>cf", function()
|
||||
vim.lsp.buf.format({ async = true })
|
||||
end, { desc = "Format buffer" })
|
||||
|
||||
vim.keymap.set("n", "<leader>cr", vim.lsp.buf.rename, { desc = "Rename" })
|
||||
|
||||
vim.diagnostic.config({
|
||||
virtual_text = true,
|
||||
signs = true,
|
||||
underline = true,
|
||||
update_in_insert = false,
|
||||
severity_sort = true,
|
||||
float = { border = "rounded", source = "if_many" },
|
||||
})
|
||||
Reference in New Issue
Block a user