diff --git a/init.lua b/init.lua index fb0252cc654..2b8faad05a2 100644 --- a/init.lua +++ b/init.lua @@ -131,10 +131,14 @@ require('lazy').setup({ { -- Theme inspired by Atom - 'navarasu/onedark.nvim', +-- 'navarasu/onedark.nvim', +-- 'folke/tokyonight.nvim', + 'catppuccin/nvim', name = 'catppuccin', priority = 1000, config = function() - vim.cmd.colorscheme 'onedark' +-- vim.cmd.colorscheme 'onedark' +-- vim.cmd.colorscheme 'tokyonight' + vim.cmd.colorscheme 'catppuccin' end, }, @@ -157,10 +161,9 @@ require('lazy').setup({ 'lukas-reineke/indent-blankline.nvim', -- Enable `lukas-reineke/indent-blankline.nvim` -- See `:help indent_blankline.txt` - opts = { - char = '┊', - show_trailing_blankline_indent = false, - }, + -- https://github.com/lukas-reineke/indent-blankline.nvim/wiki/Migrate-to-version-3 + main = "ibl", + opts = {}, }, -- "gc" to comment visual regions/lines @@ -213,7 +216,7 @@ require('lazy').setup({ vim.o.hlsearch = false -- Make line numbers default -vim.wo.number = true +vim.wo.relativenumber = true -- Enable mouse mode vim.o.mouse = 'a' @@ -306,10 +309,10 @@ vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { de -- See `:help nvim-treesitter` require('nvim-treesitter.configs').setup { -- Add languages to be installed here that you want installed for treesitter - ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'typescript', 'vimdoc', 'vim' }, + ensure_installed = { 'c', 'cpp', 'go', 'hcl', 'lua', 'nginx', 'python', 'rust', 'terraform', 'tsx', 'typescript', 'vim', 'vimdoc', 'yaml' }, -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) - auto_install = false, + auto_install = true, highlight = { enable = true }, indent = { enable = true, disable = { 'python' } }, @@ -443,24 +446,23 @@ local servers = { require('neodev').setup() -- nvim-cmp supports additional completion capabilities, so broadcast that to servers -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) +local capabilities = require('cmp_nvim_lsp').default_capabilities() --- Ensure the servers above are installed -local mason_lspconfig = require 'mason-lspconfig' +-- mason-lspconfig v2+ uses Neovim's native vim.lsp.config / vim.lsp.enable APIs +vim.lsp.config('*', { + capabilities = capabilities, + on_attach = on_attach, +}) -mason_lspconfig.setup { - ensure_installed = vim.tbl_keys(servers), -} +for server_name, settings in pairs(servers) do + vim.lsp.config(server_name, { + settings = settings, + }) +end -mason_lspconfig.setup_handlers { - function(server_name) - require('lspconfig')[server_name].setup { - capabilities = capabilities, - on_attach = on_attach, - settings = servers[server_name], - } - end, +-- Ensure the servers above are installed (and auto-enabled when installed) +require('mason-lspconfig').setup { + ensure_installed = vim.tbl_keys(servers), } -- [[ Configure nvim-cmp ]] diff --git a/lua/custom/plugins/claudecode.lua b/lua/custom/plugins/claudecode.lua new file mode 100644 index 00000000000..22cd4a1fa7e --- /dev/null +++ b/lua/custom/plugins/claudecode.lua @@ -0,0 +1,44 @@ +return { + "coder/claudecode.nvim", + dependencies = { "folke/snacks.nvim" }, + config = true, + -- `cmd` lets lazy.nvim create command stubs that load the plugin on first use, + -- so `:ClaudeCode` and friends work on a fresh start. Without it, a keys-only + -- spec defers loading until a a* mapping is pressed and the commands + -- would not exist yet. + cmd = { + "ClaudeCode", + "ClaudeCodeFocus", + "ClaudeCodeSelectModel", + "ClaudeCodeAdd", + "ClaudeCodeSend", + "ClaudeCodeTreeAdd", + "ClaudeCodeStatus", + "ClaudeCodeStart", + "ClaudeCodeStop", + "ClaudeCodeOpen", + "ClaudeCodeClose", + "ClaudeCodeDiffAccept", + "ClaudeCodeDiffDeny", + "ClaudeCodeCloseAllDiffs", + }, + keys = { + { "a", nil, desc = "AI/Claude Code" }, + { "ac", "ClaudeCode", desc = "Toggle Claude" }, + { "af", "ClaudeCodeFocus", desc = "Focus Claude" }, + { "ar", "ClaudeCode --resume", desc = "Resume Claude" }, + { "aC", "ClaudeCode --continue", desc = "Continue Claude" }, + { "am", "ClaudeCodeSelectModel", desc = "Select Claude model" }, + { "ab", "ClaudeCodeAdd %", desc = "Add current buffer" }, + { "as", "ClaudeCodeSend", mode = "v", desc = "Send to Claude" }, + { + "as", + "ClaudeCodeTreeAdd", + desc = "Add file", + ft = { "NvimTree", "neo-tree", "oil", "minifiles", "netrw", "snacks_picker_list" }, + }, + -- Diff management + { "aa", "ClaudeCodeDiffAccept", desc = "Accept diff" }, + { "ad", "ClaudeCodeDiffDeny", desc = "Deny diff" }, + }, +}