mirror of
				https://github.com/mitchell/dotfiles.git
				synced 2025-11-03 21:25:26 +00:00 
			
		
		
		
	Breakup Neovim config into Lua modules
This commit is contained in:
		
							parent
							
								
									3179a5b48d
								
							
						
					
					
						commit
						1517f56c86
					
				| 
						 | 
					@ -22,590 +22,16 @@ vim.g.mapleader = ","
 | 
				
			||||||
require("lazy").setup({
 | 
					require("lazy").setup({
 | 
				
			||||||
	install = { colorscheme = { "kanagawa" } },
 | 
						install = { colorscheme = { "kanagawa" } },
 | 
				
			||||||
	spec = {
 | 
						spec = {
 | 
				
			||||||
		-- UI and appearance
 | 
							{ import = "plugins.ui" },
 | 
				
			||||||
		"edkolev/tmuxline.vim",
 | 
							{ import = "plugins.editor" },
 | 
				
			||||||
		{
 | 
							{ import = "plugins.lsp_completion" },
 | 
				
			||||||
			"rebelot/kanagawa.nvim",
 | 
							{ import = "plugins.navigation" },
 | 
				
			||||||
			lazy = false,
 | 
							{ import = "plugins.treesitter" },
 | 
				
			||||||
			priority = 1000,
 | 
							{ import = "plugins.tools" },
 | 
				
			||||||
			opts = {
 | 
					 | 
				
			||||||
				transparent = not vim.g.neovide,
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			init = function()
 | 
					 | 
				
			||||||
				vim.cmd([[colorscheme kanagawa]])
 | 
					 | 
				
			||||||
			end,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"akinsho/bufferline.nvim",
 | 
					 | 
				
			||||||
			event = "VeryLazy",
 | 
					 | 
				
			||||||
			version = "*",
 | 
					 | 
				
			||||||
			dependencies = { "nvim-tree/nvim-web-devicons" },
 | 
					 | 
				
			||||||
			opts = {
 | 
					 | 
				
			||||||
				options = {
 | 
					 | 
				
			||||||
					separator_style = "slope",
 | 
					 | 
				
			||||||
					offsets = {
 | 
					 | 
				
			||||||
						{
 | 
					 | 
				
			||||||
							filetype = "neo-tree",
 | 
					 | 
				
			||||||
							text = "explorer",
 | 
					 | 
				
			||||||
							highlight = "Directory",
 | 
					 | 
				
			||||||
							separator = true,
 | 
					 | 
				
			||||||
						},
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			keys = {
 | 
					 | 
				
			||||||
				{ "<leader>j", "<cmd>BufferLinePick<cr>", desc = "BufferLinePick", silent = true },
 | 
					 | 
				
			||||||
				{ "<leader>J", "<cmd>BufferLinePickClose<cr>", desc = "BufferLinePickClose", silent = true },
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"nvim-lualine/lualine.nvim",
 | 
					 | 
				
			||||||
			dependencies = { "nvim-tree/nvim-web-devicons" },
 | 
					 | 
				
			||||||
			opts = {
 | 
					 | 
				
			||||||
				extensions = {
 | 
					 | 
				
			||||||
					"neo-tree",
 | 
					 | 
				
			||||||
					"symbols-outline",
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"rcarriga/nvim-notify",
 | 
					 | 
				
			||||||
			opts = {
 | 
					 | 
				
			||||||
				background_colour = "#000000",
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"folke/noice.nvim",
 | 
					 | 
				
			||||||
			event = "VeryLazy",
 | 
					 | 
				
			||||||
			dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify" },
 | 
					 | 
				
			||||||
			opts = {
 | 
					 | 
				
			||||||
				lsp = {
 | 
					 | 
				
			||||||
					override = {
 | 
					 | 
				
			||||||
						["vim.lsp.util.convert_input_to_markdown_lines"] = true,
 | 
					 | 
				
			||||||
						["vim.lsp.util.stylize_markdown"] = true,
 | 
					 | 
				
			||||||
						["cmp.entry.get_documentation"] = true,
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				presets = {
 | 
					 | 
				
			||||||
					bottom_search = true,
 | 
					 | 
				
			||||||
					command_palette = true,
 | 
					 | 
				
			||||||
					long_message_to_split = true,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				views = {
 | 
					 | 
				
			||||||
					notify = {
 | 
					 | 
				
			||||||
						replace = true,
 | 
					 | 
				
			||||||
						merge = true,
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"OXY2DEV/markview.nvim",
 | 
					 | 
				
			||||||
			lazy = false,
 | 
					 | 
				
			||||||
			dependencies = { "saghen/blink.cmp" },
 | 
					 | 
				
			||||||
			opts = {
 | 
					 | 
				
			||||||
				preview = {
 | 
					 | 
				
			||||||
					icon_provider = "devicons",
 | 
					 | 
				
			||||||
					filetypes = { "markdown", "codecompanion" },
 | 
					 | 
				
			||||||
					ignore_buftypes = {},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		-- Editor enhancements
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"w0rp/ale",
 | 
					 | 
				
			||||||
			event = "VeryLazy",
 | 
					 | 
				
			||||||
			keys = {
 | 
					 | 
				
			||||||
				{ "<leader>f", "<cmd>ALEFix<cr>", desc = "ALE Fix", silent = true },
 | 
					 | 
				
			||||||
				{ "<leader>a", "<cmd>ALEToggle<cr>", desc = "ALE Toggle", silent = true },
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			config = function()
 | 
					 | 
				
			||||||
				vim.g.ale_linters_explicit = 1
 | 
					 | 
				
			||||||
				vim.g.ale_completion_enabled = 0 -- Using blink.cmp for completion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				vim.g.ale_linters = {
 | 
					 | 
				
			||||||
					javascript = { "eslint", "stylelint", "biome" },
 | 
					 | 
				
			||||||
					typescript = { "eslint", "stylelint", "biome" },
 | 
					 | 
				
			||||||
					javascriptreact = { "eslint", "stylelint", "biome" },
 | 
					 | 
				
			||||||
					typescriptreact = { "eslint", "stylelint", "biome" },
 | 
					 | 
				
			||||||
					svelte = { "eslint" },
 | 
					 | 
				
			||||||
					go = { "golint", "go vet" },
 | 
					 | 
				
			||||||
					vue = { "eslint", "stylelint", "biome" },
 | 
					 | 
				
			||||||
					make = { "checkmake" },
 | 
					 | 
				
			||||||
					proto = { "protoc-gen-lint" },
 | 
					 | 
				
			||||||
					dockerfile = { "hadolint" },
 | 
					 | 
				
			||||||
					dart = { "dartanalyzer" },
 | 
					 | 
				
			||||||
					fish = { "fish" },
 | 
					 | 
				
			||||||
					vim = { "vint" },
 | 
					 | 
				
			||||||
					elixir = { "credo" },
 | 
					 | 
				
			||||||
					cs = { "OmniSharp" },
 | 
					 | 
				
			||||||
					terraform = { "tflint" },
 | 
					 | 
				
			||||||
					ruby = { "rubocop" },
 | 
					 | 
				
			||||||
					css = { "stylelint", "biome" },
 | 
					 | 
				
			||||||
					sh = { "shellcheck" },
 | 
					 | 
				
			||||||
					python = { "pylint" },
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				vim.g.ale_fixers = {
 | 
					 | 
				
			||||||
					go = { "goimports", "remove_trailing_lines", "trim_whitespace" },
 | 
					 | 
				
			||||||
					graphql = { "prettier" },
 | 
					 | 
				
			||||||
					javascript = { "prettier", "biome" },
 | 
					 | 
				
			||||||
					typescript = { "prettier", "biome" },
 | 
					 | 
				
			||||||
					javascriptreact = { "prettier", "biome" },
 | 
					 | 
				
			||||||
					typescriptreact = { "prettier", "biome" },
 | 
					 | 
				
			||||||
					svelte = { "prettier" },
 | 
					 | 
				
			||||||
					vue = { "prettier", "biome" },
 | 
					 | 
				
			||||||
					css = { "prettier", "biome" },
 | 
					 | 
				
			||||||
					yaml = { "prettier", "biome" },
 | 
					 | 
				
			||||||
					json = { "prettier", "biome" },
 | 
					 | 
				
			||||||
					dart = { "dartfmt" },
 | 
					 | 
				
			||||||
					html = { "prettier", "biome" },
 | 
					 | 
				
			||||||
					markdown = { "prettier", "biome" },
 | 
					 | 
				
			||||||
					make = { "remove_trailing_lines", "trim_whitespace" },
 | 
					 | 
				
			||||||
					elixir = { "mix_format" },
 | 
					 | 
				
			||||||
					terraform = { "terraform" },
 | 
					 | 
				
			||||||
					ruby = { "rubocop" },
 | 
					 | 
				
			||||||
					python = { "black" },
 | 
					 | 
				
			||||||
					lua = { "stylua" },
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			end,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		"tpope/vim-eunuch",
 | 
					 | 
				
			||||||
		"tpope/vim-surround",
 | 
					 | 
				
			||||||
		-- { "airblade/vim-gitgutter", lazy = false },
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"echasnovski/mini.diff",
 | 
					 | 
				
			||||||
			version = false,
 | 
					 | 
				
			||||||
			lazy = false,
 | 
					 | 
				
			||||||
			opts = {},
 | 
					 | 
				
			||||||
			keys = {
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					"<leader>i",
 | 
					 | 
				
			||||||
					function()
 | 
					 | 
				
			||||||
						require("mini.diff").toggle_overlay()
 | 
					 | 
				
			||||||
					end,
 | 
					 | 
				
			||||||
					desc = "Mini.diff overlay",
 | 
					 | 
				
			||||||
					silent = true,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"reedes/vim-pencil",
 | 
					 | 
				
			||||||
			cmd = { "HardPencil", "SoftPencil" },
 | 
					 | 
				
			||||||
			config = function()
 | 
					 | 
				
			||||||
				vim.g["pencil#map#suspend_af"] = "K" -- Use bracket notation for '#'
 | 
					 | 
				
			||||||
			end,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"tpope/vim-fugitive",
 | 
					 | 
				
			||||||
			cmd = { "G", "Git" },
 | 
					 | 
				
			||||||
			ft = "gitcommit",
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"folke/zen-mode.nvim",
 | 
					 | 
				
			||||||
			opts = {
 | 
					 | 
				
			||||||
				window = {
 | 
					 | 
				
			||||||
					backdrop = 0.95,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				plugins = {
 | 
					 | 
				
			||||||
					twilight = { enabled = false },
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			keys = {
 | 
					 | 
				
			||||||
				{ "<leader>z", "<cmd>ZenMode<cr>", desc = "Zen Mode", silent = true },
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"folke/twilight.nvim",
 | 
					 | 
				
			||||||
			opts = {},
 | 
					 | 
				
			||||||
			keys = {
 | 
					 | 
				
			||||||
				{ "<leader>l", "<cmd>Twilight<cr>", desc = "Twilight", silent = true },
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		-- Completion and LSP
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"saghen/blink.cmp",
 | 
					 | 
				
			||||||
			dependencies = { "rafamadriz/friendly-snippets" },
 | 
					 | 
				
			||||||
			version = "1.*",
 | 
					 | 
				
			||||||
			---@module 'blink.cmp'
 | 
					 | 
				
			||||||
			---@type blink.cmp.Config
 | 
					 | 
				
			||||||
			opts = {},
 | 
					 | 
				
			||||||
			opts_extend = { "sources.default" },
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"neovim/nvim-lspconfig",
 | 
					 | 
				
			||||||
			dependencies = { "saghen/blink.cmp" },
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		-- Navigation and search
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"nvim-neo-tree/neo-tree.nvim",
 | 
					 | 
				
			||||||
			branch = "v3.x",
 | 
					 | 
				
			||||||
			dependencies = {
 | 
					 | 
				
			||||||
				"nvim-lua/plenary.nvim",
 | 
					 | 
				
			||||||
				"nvim-tree/nvim-web-devicons",
 | 
					 | 
				
			||||||
				"MunifTanjim/nui.nvim",
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			lazy = false, -- neo-tree will lazily load itself
 | 
					 | 
				
			||||||
			---@module "neo-tree"
 | 
					 | 
				
			||||||
			---@type neotree.Config?
 | 
					 | 
				
			||||||
			opts = {},
 | 
					 | 
				
			||||||
			keys = {
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					"<leader>nn",
 | 
					 | 
				
			||||||
					"<cmd>Neotree toggle reveal_force_cwd<cr>",
 | 
					 | 
				
			||||||
					desc = "Neo-tree Toggle Sidebar",
 | 
					 | 
				
			||||||
					silent = true,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					"<leader>nf",
 | 
					 | 
				
			||||||
					"<cmd>Neotree float reveal_force_cwd<cr>",
 | 
					 | 
				
			||||||
					desc = "Neo-tree Float",
 | 
					 | 
				
			||||||
					silent = true,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"nvim-telescope/telescope.nvim",
 | 
					 | 
				
			||||||
			dependencies = {
 | 
					 | 
				
			||||||
				"nvim-lua/plenary.nvim",
 | 
					 | 
				
			||||||
				"nvim-tree/nvim-web-devicons",
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			opts = {},
 | 
					 | 
				
			||||||
			keys = {
 | 
					 | 
				
			||||||
				{ "<leader>t", "<cmd>Telescope<cr>", desc = "Telescope", silent = true },
 | 
					 | 
				
			||||||
				{ "<leader>p", "<cmd>Telescope git_files<cr>", desc = "Telescope Git Files", silent = true },
 | 
					 | 
				
			||||||
				{ "<C-p>", "<cmd>Telescope find_files<cr>", desc = "Telescope Find Files", silent = true },
 | 
					 | 
				
			||||||
				-- Note: 's' is used by flash.nvim, this mapping shadows the default 's' jump.
 | 
					 | 
				
			||||||
				-- You might want to change this leader mapping if you use flash jump often.
 | 
					 | 
				
			||||||
				{ "<leader>s", "<cmd>Telescope treesitter<cr>", desc = "Telescope Treesitter", silent = true },
 | 
					 | 
				
			||||||
				{ "<leader>gs", "<cmd>Telescope grep_string<cr>", desc = "Telescope Grep String", silent = true },
 | 
					 | 
				
			||||||
				{ "<leader>gl", "<cmd>Telescope live_grep<cr>", desc = "Telescope Grep String", silent = true },
 | 
					 | 
				
			||||||
				{ "<leader>gg", "<cmd>Telescope lsp_definitions<cr>", desc = "LSP Definitions", silent = true },
 | 
					 | 
				
			||||||
				{ "<leader>gr", "<cmd>Telescope lsp_references<cr>", desc = "LSP References", silent = true },
 | 
					 | 
				
			||||||
				{ "<leader>gi", "<cmd>Telescope lsp_implementations<cr>", desc = "LSP Implementations", silent = true },
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					"<leader>gd",
 | 
					 | 
				
			||||||
					"<cmd>Telescope lsp_type_definitions<cr>",
 | 
					 | 
				
			||||||
					desc = "LSP Type Definitions",
 | 
					 | 
				
			||||||
					silent = true,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"nvim-telescope/telescope-fzf-native.nvim",
 | 
					 | 
				
			||||||
			build = "make",
 | 
					 | 
				
			||||||
			dependencies = {
 | 
					 | 
				
			||||||
				"nvim-telescope/telescope.nvim",
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			config = function()
 | 
					 | 
				
			||||||
				require("telescope").load_extension("fzf")
 | 
					 | 
				
			||||||
			end,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"folke/flash.nvim",
 | 
					 | 
				
			||||||
			event = "VeryLazy",
 | 
					 | 
				
			||||||
			opts = {},
 | 
					 | 
				
			||||||
			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",
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					"r",
 | 
					 | 
				
			||||||
					mode = "o",
 | 
					 | 
				
			||||||
					function()
 | 
					 | 
				
			||||||
						require("flash").remote()
 | 
					 | 
				
			||||||
					end,
 | 
					 | 
				
			||||||
					desc = "Remote Flash",
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					"R",
 | 
					 | 
				
			||||||
					mode = { "o", "x" },
 | 
					 | 
				
			||||||
					function()
 | 
					 | 
				
			||||||
						require("flash").treesitter_search()
 | 
					 | 
				
			||||||
					end,
 | 
					 | 
				
			||||||
					desc = "Treesitter Search",
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					"<c-s>",
 | 
					 | 
				
			||||||
					mode = { "c" },
 | 
					 | 
				
			||||||
					function()
 | 
					 | 
				
			||||||
						require("flash").toggle()
 | 
					 | 
				
			||||||
					end,
 | 
					 | 
				
			||||||
					desc = "Toggle Flash Search",
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		-- Treesitter
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"nvim-treesitter/nvim-treesitter",
 | 
					 | 
				
			||||||
			build = ":TSUpdate",
 | 
					 | 
				
			||||||
			opts = {
 | 
					 | 
				
			||||||
				ensure_installed = {
 | 
					 | 
				
			||||||
					"c",
 | 
					 | 
				
			||||||
					"cpp",
 | 
					 | 
				
			||||||
					"lua",
 | 
					 | 
				
			||||||
					"vim",
 | 
					 | 
				
			||||||
					"regex",
 | 
					 | 
				
			||||||
					"bash",
 | 
					 | 
				
			||||||
					"fish",
 | 
					 | 
				
			||||||
					"typescript",
 | 
					 | 
				
			||||||
					"javascript",
 | 
					 | 
				
			||||||
					"tsx",
 | 
					 | 
				
			||||||
					"go",
 | 
					 | 
				
			||||||
					"elixir",
 | 
					 | 
				
			||||||
					"vue",
 | 
					 | 
				
			||||||
					"groovy",
 | 
					 | 
				
			||||||
					"java",
 | 
					 | 
				
			||||||
					"objc",
 | 
					 | 
				
			||||||
					"swift",
 | 
					 | 
				
			||||||
					"hcl",
 | 
					 | 
				
			||||||
					"terraform",
 | 
					 | 
				
			||||||
					"yaml",
 | 
					 | 
				
			||||||
					"json",
 | 
					 | 
				
			||||||
					"markdown",
 | 
					 | 
				
			||||||
					"markdown_inline",
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				auto_install = false,
 | 
					 | 
				
			||||||
				highlight = {
 | 
					 | 
				
			||||||
					enable = true,
 | 
					 | 
				
			||||||
					additional_vim_regex_highlighting = false,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				incremental_selection = {
 | 
					 | 
				
			||||||
					enable = true,
 | 
					 | 
				
			||||||
					keymaps = {
 | 
					 | 
				
			||||||
						init_selection = "gnn",
 | 
					 | 
				
			||||||
						node_incremental = "grn",
 | 
					 | 
				
			||||||
						scope_incremental = "grc",
 | 
					 | 
				
			||||||
						node_decremental = "grm",
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				indent = {
 | 
					 | 
				
			||||||
					enable = true,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			init = function()
 | 
					 | 
				
			||||||
				vim.opt.foldmethod = "expr"
 | 
					 | 
				
			||||||
				vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
 | 
					 | 
				
			||||||
				vim.opt.foldenable = false
 | 
					 | 
				
			||||||
			end,
 | 
					 | 
				
			||||||
			config = function(plugin, opts)
 | 
					 | 
				
			||||||
				require("nvim-treesitter.configs").setup(opts)
 | 
					 | 
				
			||||||
			end,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		-- CodeCompanion
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"olimorris/codecompanion.nvim",
 | 
					 | 
				
			||||||
			dependencies = { "nvim-lua/plenary.nvim", "nvim-treesitter/nvim-treesitter", "echasnovski/mini.diff" },
 | 
					 | 
				
			||||||
			opts = {
 | 
					 | 
				
			||||||
				display = { diff = { provider = "mini_diff" }, chat = { show_settings = true } },
 | 
					 | 
				
			||||||
				strategies = {
 | 
					 | 
				
			||||||
					chat = { adapter = "gemini_deep" },
 | 
					 | 
				
			||||||
					inline = { adapter = "openai" },
 | 
					 | 
				
			||||||
					cmd = { adapter = "openai_mini" },
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				adapters = {
 | 
					 | 
				
			||||||
					anthro = function()
 | 
					 | 
				
			||||||
						return require("codecompanion.adapters").extend("anthropic", {
 | 
					 | 
				
			||||||
							schema = {
 | 
					 | 
				
			||||||
								model = { default = "claude-3-7-sonnet-20250219" },
 | 
					 | 
				
			||||||
								extended_thinking = { default = false },
 | 
					 | 
				
			||||||
							},
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
					end,
 | 
					 | 
				
			||||||
					anthro_deep = function()
 | 
					 | 
				
			||||||
						return require("codecompanion.adapters").extend("anthropic", {
 | 
					 | 
				
			||||||
							schema = {
 | 
					 | 
				
			||||||
								model = { default = "claude-3-7-sonnet-20250219" },
 | 
					 | 
				
			||||||
							},
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
					end,
 | 
					 | 
				
			||||||
					gemini = function()
 | 
					 | 
				
			||||||
						return require("codecompanion.adapters").extend("gemini", {
 | 
					 | 
				
			||||||
							schema = {
 | 
					 | 
				
			||||||
								model = { default = "gemini-2.5-flash-preview-04-17" },
 | 
					 | 
				
			||||||
							},
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
					end,
 | 
					 | 
				
			||||||
					gemini_deep = function()
 | 
					 | 
				
			||||||
						return require("codecompanion.adapters").extend("gemini", {
 | 
					 | 
				
			||||||
							schema = {
 | 
					 | 
				
			||||||
								model = { default = "gemini-2.5-pro-preview-05-06" },
 | 
					 | 
				
			||||||
							},
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
					end,
 | 
					 | 
				
			||||||
					openai_mini = function()
 | 
					 | 
				
			||||||
						return require("codecompanion.adapters").extend("openai", {
 | 
					 | 
				
			||||||
							schema = {
 | 
					 | 
				
			||||||
								model = { default = "gpt-4.1-mini" },
 | 
					 | 
				
			||||||
							},
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
					end,
 | 
					 | 
				
			||||||
					openai_deep = function()
 | 
					 | 
				
			||||||
						return require("codecompanion.adapters").extend("openai", {
 | 
					 | 
				
			||||||
							schema = {
 | 
					 | 
				
			||||||
								model = { default = "o4-mini-2025-04-16" },
 | 
					 | 
				
			||||||
								reasoning_effort = { default = "high" },
 | 
					 | 
				
			||||||
							},
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
					end,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			keys = {
 | 
					 | 
				
			||||||
				{ "<leader>c", "<cmd>CodeCompanionChat<cr>", desc = "CodeCompanion Chat", silent = true },
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- General settings
 | 
					-- Load core configurations
 | 
				
			||||||
vim.opt.guifont = "JetBrainsMono Nerd Font:h13"
 | 
					require("core.options")
 | 
				
			||||||
vim.opt.colorcolumn = "100"
 | 
					require("core.keymaps")
 | 
				
			||||||
vim.opt.cursorline = true
 | 
					require("core.autocmds")
 | 
				
			||||||
vim.opt.showmatch = true
 | 
					 | 
				
			||||||
vim.opt.number = true
 | 
					 | 
				
			||||||
vim.opt.showmode = false
 | 
					 | 
				
			||||||
vim.opt.background = "dark"
 | 
					 | 
				
			||||||
vim.opt.wrap = false
 | 
					 | 
				
			||||||
vim.opt.cmdheight = 1
 | 
					 | 
				
			||||||
vim.opt.shortmess:append("c")
 | 
					 | 
				
			||||||
vim.opt.termguicolors = true
 | 
					 | 
				
			||||||
vim.opt.mouse = "a"
 | 
					 | 
				
			||||||
vim.opt.mousemodel = "extend"
 | 
					 | 
				
			||||||
vim.opt.tabstop = 2
 | 
					 | 
				
			||||||
vim.opt.shiftwidth = 0
 | 
					 | 
				
			||||||
vim.opt.expandtab = true
 | 
					 | 
				
			||||||
vim.opt.textwidth = 100
 | 
					 | 
				
			||||||
vim.opt.hlsearch = true
 | 
					 | 
				
			||||||
vim.opt.ignorecase = true
 | 
					 | 
				
			||||||
vim.opt.smartcase = true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- Key Mappings
 | 
					 | 
				
			||||||
local map = vim.keymap.set
 | 
					 | 
				
			||||||
local map_opts_silent = { noremap = true, silent = true }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- General Mappings
 | 
					 | 
				
			||||||
map("i", "jj", "<Esc>", { noremap = true, silent = true, desc = "Escape Insert Mode" })
 | 
					 | 
				
			||||||
map("t", "<Esc>", "<C-\\><C-n>", { noremap = true, silent = true, desc = "Escape Terminal Mode" })
 | 
					 | 
				
			||||||
map("v", "//", function()
 | 
					 | 
				
			||||||
	vim.cmd("normal! y")
 | 
					 | 
				
			||||||
	local sel = vim.fn.getreg('"')
 | 
					 | 
				
			||||||
	local pattern = vim.fn.escape(sel, "/\\")
 | 
					 | 
				
			||||||
	vim.fn.setreg("/", "\\V" .. pattern)
 | 
					 | 
				
			||||||
	vim.cmd("normal! n")
 | 
					 | 
				
			||||||
end, { noremap = true, silent = true, desc = "Search for Visual Selection" })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- Neovide GUI Settings
 | 
					 | 
				
			||||||
if vim.g.neovide then
 | 
					 | 
				
			||||||
	vim.g.neovide_scale_factor = 0.75
 | 
					 | 
				
			||||||
	vim.g.neovide_transparency = 0.7
 | 
					 | 
				
			||||||
	vim.g.neovide_cursor_vfx_mode = "sonicboom"
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- Autocommands
 | 
					 | 
				
			||||||
local augroup = vim.api.nvim_create_augroup
 | 
					 | 
				
			||||||
local autocmd = vim.api.nvim_create_autocmd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- Fish filetype settings
 | 
					 | 
				
			||||||
augroup("FishSettings", { clear = true })
 | 
					 | 
				
			||||||
autocmd("FileType", {
 | 
					 | 
				
			||||||
	pattern = "fish",
 | 
					 | 
				
			||||||
	command = "setlocal tabstop=4",
 | 
					 | 
				
			||||||
	group = "FishSettings",
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- Terminal settings
 | 
					 | 
				
			||||||
augroup("TerminalSettings", { clear = true })
 | 
					 | 
				
			||||||
autocmd("TermOpen", {
 | 
					 | 
				
			||||||
	pattern = "*",
 | 
					 | 
				
			||||||
	command = "setlocal nonumber norelativenumber",
 | 
					 | 
				
			||||||
	group = "TerminalSettings",
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- LSP Mappings
 | 
					 | 
				
			||||||
local opts = { silent = true }
 | 
					 | 
				
			||||||
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts)
 | 
					 | 
				
			||||||
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
 | 
					 | 
				
			||||||
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
 | 
					 | 
				
			||||||
vim.keymap.set("n", "<space>q", vim.diagnostic.setloclist, opts)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- Use an on_attach function to only map the following keys
 | 
					 | 
				
			||||||
-- after the language server attaches to the current buffer
 | 
					 | 
				
			||||||
local on_attach = function(client, bufnr)
 | 
					 | 
				
			||||||
	vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	local bufopts = { silent = true, buffer = bufnr }
 | 
					 | 
				
			||||||
	vim.keymap.set("n", "<leader>h", vim.lsp.buf.hover, bufopts)
 | 
					 | 
				
			||||||
	vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, bufopts)
 | 
					 | 
				
			||||||
	vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, bufopts)
 | 
					 | 
				
			||||||
	vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, bufopts)
 | 
					 | 
				
			||||||
	vim.keymap.set("n", "<leader>wl", function()
 | 
					 | 
				
			||||||
		print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
 | 
					 | 
				
			||||||
	end, bufopts)
 | 
					 | 
				
			||||||
	vim.keymap.set("n", "<leader>m", vim.lsp.buf.code_action, bufopts)
 | 
					 | 
				
			||||||
	vim.keymap.set("n", "<leader>r", vim.lsp.buf.rename, bufopts)
 | 
					 | 
				
			||||||
	vim.keymap.set("n", "<leader>F", function()
 | 
					 | 
				
			||||||
		vim.lsp.buf.format({ async = true })
 | 
					 | 
				
			||||||
	end, bufopts)
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- LSP Setup
 | 
					 | 
				
			||||||
local lspconfig = require("lspconfig")
 | 
					 | 
				
			||||||
local capabilities = require("blink.cmp").get_lsp_capabilities()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
local lsp_flags = { debounce_text_changes = 150 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
local vue_plugin_location = vim.fn.expand("$HOME/.bun/install/global/node_modules/@vue/typescript-plugin")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
vim.lsp.config("ts_ls", {
 | 
					 | 
				
			||||||
	on_attach = on_attach,
 | 
					 | 
				
			||||||
	flags = lsp_flags,
 | 
					 | 
				
			||||||
	capabilities = capabilities,
 | 
					 | 
				
			||||||
	filetypes = {
 | 
					 | 
				
			||||||
		"javascript",
 | 
					 | 
				
			||||||
		"typescript",
 | 
					 | 
				
			||||||
		"javascriptreact",
 | 
					 | 
				
			||||||
		"typescriptreact",
 | 
					 | 
				
			||||||
		"vue",
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	init_options = {
 | 
					 | 
				
			||||||
		plugins = {
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				name = "@vue/typescript-plugin",
 | 
					 | 
				
			||||||
				location = vue_plugin_location,
 | 
					 | 
				
			||||||
				languages = { "javascript", "typescript", "vue" },
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
vim.lsp.enable("ts_ls")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
require("lspconfig").volar.setup({})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
local servers = { "elixirls", "gopls", "pylsp", "svelte" }
 | 
					 | 
				
			||||||
for _, lsp in ipairs(servers) do
 | 
					 | 
				
			||||||
	vim.lsp.config(lsp, {
 | 
					 | 
				
			||||||
		on_attach = on_attach,
 | 
					 | 
				
			||||||
		flags = lsp_flags,
 | 
					 | 
				
			||||||
		capabilities = capabilities,
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	vim.lsp.enable(lsp)
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										20
									
								
								.config/nvim/lua/core/autocmds.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.config/nvim/lua/core/autocmds.lua
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					-- lua/core/autocmds.lua
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local augroup = vim.api.nvim_create_augroup
 | 
				
			||||||
 | 
					local autocmd = vim.api.nvim_create_autocmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Fish filetype settings
 | 
				
			||||||
 | 
					augroup("FishSettings", { clear = true })
 | 
				
			||||||
 | 
					autocmd("FileType", {
 | 
				
			||||||
 | 
						pattern = "fish",
 | 
				
			||||||
 | 
						command = "setlocal tabstop=4",
 | 
				
			||||||
 | 
						group = "FishSettings",
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Terminal settings
 | 
				
			||||||
 | 
					augroup("TerminalSettings", { clear = true })
 | 
				
			||||||
 | 
					autocmd("TermOpen", {
 | 
				
			||||||
 | 
						pattern = "*",
 | 
				
			||||||
 | 
						command = "setlocal nonumber norelativenumber",
 | 
				
			||||||
 | 
						group = "TerminalSettings",
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
							
								
								
									
										22
									
								
								.config/nvim/lua/core/keymaps.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								.config/nvim/lua/core/keymaps.lua
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					-- lua/core/keymaps.lua
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local map = vim.keymap.set
 | 
				
			||||||
 | 
					local map_opts_silent = { noremap = true, silent = true }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- General Mappings
 | 
				
			||||||
 | 
					map("i", "jj", "<Esc>", { noremap = true, silent = true, desc = "Escape Insert Mode" })
 | 
				
			||||||
 | 
					map("t", "<Esc>", "<C-\\><C-n>", { noremap = true, silent = true, desc = "Escape Terminal Mode" })
 | 
				
			||||||
 | 
					map("v", "//", function()
 | 
				
			||||||
 | 
						vim.cmd("normal! y")
 | 
				
			||||||
 | 
						local sel = vim.fn.getreg('"')
 | 
				
			||||||
 | 
						local pattern = vim.fn.escape(sel, "/\\")
 | 
				
			||||||
 | 
						vim.fn.setreg("/", "\\V" .. pattern)
 | 
				
			||||||
 | 
						vim.cmd("normal! n")
 | 
				
			||||||
 | 
					end, { noremap = true, silent = true, desc = "Search for Visual Selection" })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- LSP Diagnostic Mappings
 | 
				
			||||||
 | 
					local diag_opts = { silent = true }
 | 
				
			||||||
 | 
					vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, diag_opts)
 | 
				
			||||||
 | 
					vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, diag_opts)
 | 
				
			||||||
 | 
					vim.keymap.set("n", "]d", vim.diagnostic.goto_next, diag_opts)
 | 
				
			||||||
 | 
					vim.keymap.set("n", "<space>q", vim.diagnostic.setloclist, diag_opts)
 | 
				
			||||||
							
								
								
									
										28
									
								
								.config/nvim/lua/core/options.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.config/nvim/lua/core/options.lua
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,28 @@
 | 
				
			||||||
 | 
					-- lua/core/options.lua
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vim.opt.guifont = "JetBrainsMono Nerd Font:h13"
 | 
				
			||||||
 | 
					vim.opt.colorcolumn = "100"
 | 
				
			||||||
 | 
					vim.opt.cursorline = true
 | 
				
			||||||
 | 
					vim.opt.showmatch = true
 | 
				
			||||||
 | 
					vim.opt.number = true
 | 
				
			||||||
 | 
					vim.opt.showmode = false
 | 
				
			||||||
 | 
					vim.opt.background = "dark"
 | 
				
			||||||
 | 
					vim.opt.wrap = false
 | 
				
			||||||
 | 
					vim.opt.cmdheight = 1
 | 
				
			||||||
 | 
					vim.opt.shortmess:append("c")
 | 
				
			||||||
 | 
					vim.opt.termguicolors = true
 | 
				
			||||||
 | 
					vim.opt.mouse = "a"
 | 
				
			||||||
 | 
					vim.opt.mousemodel = "extend"
 | 
				
			||||||
 | 
					vim.opt.tabstop = 2
 | 
				
			||||||
 | 
					vim.opt.shiftwidth = 0
 | 
				
			||||||
 | 
					vim.opt.expandtab = true
 | 
				
			||||||
 | 
					vim.opt.textwidth = 100
 | 
				
			||||||
 | 
					vim.opt.hlsearch = true
 | 
				
			||||||
 | 
					vim.opt.ignorecase = true
 | 
				
			||||||
 | 
					vim.opt.smartcase = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if vim.g.neovide then
 | 
				
			||||||
 | 
						vim.g.neovide_scale_factor = 0.75
 | 
				
			||||||
 | 
						vim.g.neovide_transparency = 0.7
 | 
				
			||||||
 | 
						vim.g.neovide_cursor_vfx_mode = "sonicboom"
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										105
									
								
								.config/nvim/lua/plugins/editor.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								.config/nvim/lua/plugins/editor.lua
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,105 @@
 | 
				
			||||||
 | 
					-- lua/plugins/editor.lua
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return {
 | 
				
			||||||
 | 
						"tpope/vim-fugitive",
 | 
				
			||||||
 | 
						"tpope/vim-eunuch",
 | 
				
			||||||
 | 
						"tpope/vim-surround",
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"w0rp/ale",
 | 
				
			||||||
 | 
							event = "VeryLazy",
 | 
				
			||||||
 | 
							keys = {
 | 
				
			||||||
 | 
								{ "<leader>f", "<cmd>ALEFix<cr>", desc = "ALE Fix", silent = true },
 | 
				
			||||||
 | 
								{ "<leader>a", "<cmd>ALEToggle<cr>", desc = "ALE Toggle", silent = true },
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							config = function()
 | 
				
			||||||
 | 
								vim.g.ale_linters_explicit = 1
 | 
				
			||||||
 | 
								vim.g.ale_completion_enabled = 0 -- Using blink.cmp for completion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								vim.g.ale_linters = {
 | 
				
			||||||
 | 
									javascript = { "eslint", "stylelint", "biome" },
 | 
				
			||||||
 | 
									typescript = { "eslint", "stylelint", "biome" },
 | 
				
			||||||
 | 
									javascriptreact = { "eslint", "stylelint", "biome" },
 | 
				
			||||||
 | 
									typescriptreact = { "eslint", "stylelint", "biome" },
 | 
				
			||||||
 | 
									svelte = { "eslint" },
 | 
				
			||||||
 | 
									go = { "golint", "go vet" },
 | 
				
			||||||
 | 
									vue = { "eslint", "stylelint", "biome" },
 | 
				
			||||||
 | 
									make = { "checkmake" },
 | 
				
			||||||
 | 
									proto = { "protoc-gen-lint" },
 | 
				
			||||||
 | 
									dockerfile = { "hadolint" },
 | 
				
			||||||
 | 
									dart = { "dartanalyzer" },
 | 
				
			||||||
 | 
									fish = { "fish" },
 | 
				
			||||||
 | 
									vim = { "vint" },
 | 
				
			||||||
 | 
									elixir = { "credo" },
 | 
				
			||||||
 | 
									cs = { "OmniSharp" },
 | 
				
			||||||
 | 
									terraform = { "tflint" },
 | 
				
			||||||
 | 
									ruby = { "rubocop" },
 | 
				
			||||||
 | 
									css = { "stylelint", "biome" },
 | 
				
			||||||
 | 
									sh = { "shellcheck" },
 | 
				
			||||||
 | 
									python = { "pylint" },
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								vim.g.ale_fixers = {
 | 
				
			||||||
 | 
									go = { "goimports", "remove_trailing_lines", "trim_whitespace" },
 | 
				
			||||||
 | 
									graphql = { "prettier" },
 | 
				
			||||||
 | 
									javascript = { "prettier", "biome" },
 | 
				
			||||||
 | 
									typescript = { "prettier", "biome" },
 | 
				
			||||||
 | 
									javascriptreact = { "prettier", "biome" },
 | 
				
			||||||
 | 
									typescriptreact = { "prettier", "biome" },
 | 
				
			||||||
 | 
									svelte = { "prettier" },
 | 
				
			||||||
 | 
									vue = { "prettier", "biome" },
 | 
				
			||||||
 | 
									css = { "prettier", "biome" },
 | 
				
			||||||
 | 
									yaml = { "prettier", "biome" },
 | 
				
			||||||
 | 
									json = { "prettier", "biome" },
 | 
				
			||||||
 | 
									dart = { "dartfmt" },
 | 
				
			||||||
 | 
									html = { "prettier", "biome" },
 | 
				
			||||||
 | 
									markdown = { "prettier", "biome" },
 | 
				
			||||||
 | 
									make = { "remove_trailing_lines", "trim_whitespace" },
 | 
				
			||||||
 | 
									elixir = { "mix_format" },
 | 
				
			||||||
 | 
									terraform = { "terraform" },
 | 
				
			||||||
 | 
									ruby = { "rubocop" },
 | 
				
			||||||
 | 
									python = { "black" },
 | 
				
			||||||
 | 
									lua = { "stylua" },
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							end,
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"echasnovski/mini.diff",
 | 
				
			||||||
 | 
							version = false,
 | 
				
			||||||
 | 
							lazy = false,
 | 
				
			||||||
 | 
							opts = {},
 | 
				
			||||||
 | 
							keys = {
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"<leader>i",
 | 
				
			||||||
 | 
									function()
 | 
				
			||||||
 | 
										require("mini.diff").toggle_overlay()
 | 
				
			||||||
 | 
									end,
 | 
				
			||||||
 | 
									desc = "Mini.diff overlay",
 | 
				
			||||||
 | 
									silent = true,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"reedes/vim-pencil",
 | 
				
			||||||
 | 
							cmd = { "HardPencil", "SoftPencil" },
 | 
				
			||||||
 | 
							config = function()
 | 
				
			||||||
 | 
								vim.g["pencil#map#suspend_af"] = "K"
 | 
				
			||||||
 | 
							end,
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"folke/zen-mode.nvim",
 | 
				
			||||||
 | 
							opts = {
 | 
				
			||||||
 | 
								window = { backdrop = 0.95 },
 | 
				
			||||||
 | 
								plugins = { twilight = { enabled = false } },
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							keys = {
 | 
				
			||||||
 | 
								{ "<leader>z", "<cmd>ZenMode<cr>", desc = "Zen Mode", silent = true },
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"folke/twilight.nvim",
 | 
				
			||||||
 | 
							opts = {},
 | 
				
			||||||
 | 
							keys = {
 | 
				
			||||||
 | 
								{ "<leader>l", "<cmd>Twilight<cr>", desc = "Twilight", silent = true },
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										70
									
								
								.config/nvim/lua/plugins/lsp_completion.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								.config/nvim/lua/plugins/lsp_completion.lua
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,70 @@
 | 
				
			||||||
 | 
					-- lua/plugins/lsp_completion.lua
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return {
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"saghen/blink.cmp",
 | 
				
			||||||
 | 
							dependencies = { "rafamadriz/friendly-snippets" },
 | 
				
			||||||
 | 
							version = "1.*",
 | 
				
			||||||
 | 
							opts = {},
 | 
				
			||||||
 | 
							opts_extend = { "sources.default" },
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"neovim/nvim-lspconfig",
 | 
				
			||||||
 | 
							dependencies = { "saghen/blink.cmp" },
 | 
				
			||||||
 | 
							config = function()
 | 
				
			||||||
 | 
								local on_attach = function(client, bufnr)
 | 
				
			||||||
 | 
									vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc")
 | 
				
			||||||
 | 
									local bufopts = { silent = true, buffer = bufnr }
 | 
				
			||||||
 | 
									vim.keymap.set("n", "<leader>h", vim.lsp.buf.hover, bufopts)
 | 
				
			||||||
 | 
									vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, bufopts)
 | 
				
			||||||
 | 
									vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, bufopts)
 | 
				
			||||||
 | 
									vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, bufopts)
 | 
				
			||||||
 | 
									vim.keymap.set("n", "<leader>wl", function()
 | 
				
			||||||
 | 
										print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
 | 
				
			||||||
 | 
									end, bufopts)
 | 
				
			||||||
 | 
									vim.keymap.set("n", "<leader>m", vim.lsp.buf.code_action, bufopts)
 | 
				
			||||||
 | 
									vim.keymap.set("n", "<leader>r", vim.lsp.buf.rename, bufopts)
 | 
				
			||||||
 | 
									vim.keymap.set("n", "<leader>F", function()
 | 
				
			||||||
 | 
										vim.lsp.buf.format({ async = true })
 | 
				
			||||||
 | 
									end, bufopts)
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								local capabilities = require("blink.cmp").get_lsp_capabilities()
 | 
				
			||||||
 | 
								local lsp_flags = { debounce_text_changes = 150 }
 | 
				
			||||||
 | 
								local vue_plugin_location = vim.fn.expand("$HOME/.bun/install/global/node_modules/@vue/typescript-plugin")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								vim.lsp.config("ts_ls", {
 | 
				
			||||||
 | 
									on_attach = on_attach,
 | 
				
			||||||
 | 
									capabilities = capabilities,
 | 
				
			||||||
 | 
									flags = lsp_flags,
 | 
				
			||||||
 | 
									filetypes = { "javascript", "typescript", "javascriptreact", "typescriptreact", "vue" },
 | 
				
			||||||
 | 
									init_options = {
 | 
				
			||||||
 | 
										plugins = {
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												name = "@vue/typescript-plugin",
 | 
				
			||||||
 | 
												location = vue_plugin_location,
 | 
				
			||||||
 | 
												languages = { "javascript", "typescript", "vue" },
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								vim.lsp.enable("ts_ls")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								require("lspconfig").volar.setup({
 | 
				
			||||||
 | 
									on_attach = on_attach,
 | 
				
			||||||
 | 
									capabilities = capabilities,
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								local servers = { "elixirls", "gopls", "pylsp", "svelte" }
 | 
				
			||||||
 | 
								for _, server_name in ipairs(servers) do
 | 
				
			||||||
 | 
									vim.lsp.config(server_name, {
 | 
				
			||||||
 | 
										on_attach = on_attach,
 | 
				
			||||||
 | 
										capabilities = capabilities,
 | 
				
			||||||
 | 
										flags = lsp_flags,
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									vim.lsp.enable(server_name)
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
							end,
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										111
									
								
								.config/nvim/lua/plugins/navigation.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								.config/nvim/lua/plugins/navigation.lua
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,111 @@
 | 
				
			||||||
 | 
					-- lua/plugins/navigation.lua
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return {
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"nvim-neo-tree/neo-tree.nvim",
 | 
				
			||||||
 | 
							branch = "v3.x",
 | 
				
			||||||
 | 
							dependencies = {
 | 
				
			||||||
 | 
								"nvim-lua/plenary.nvim",
 | 
				
			||||||
 | 
								"nvim-tree/nvim-web-devicons",
 | 
				
			||||||
 | 
								"MunifTanjim/nui.nvim",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							lazy = false,
 | 
				
			||||||
 | 
							opts = {},
 | 
				
			||||||
 | 
							keys = {
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"<leader>nn",
 | 
				
			||||||
 | 
									"<cmd>Neotree toggle reveal_force_cwd<cr>",
 | 
				
			||||||
 | 
									desc = "Neo-tree Toggle Sidebar",
 | 
				
			||||||
 | 
									silent = true,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"<leader>nf",
 | 
				
			||||||
 | 
									"<cmd>Neotree float reveal_force_cwd<cr>",
 | 
				
			||||||
 | 
									desc = "Neo-tree Float",
 | 
				
			||||||
 | 
									silent = true,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"nvim-telescope/telescope.nvim",
 | 
				
			||||||
 | 
							dependencies = {
 | 
				
			||||||
 | 
								"nvim-lua/plenary.nvim",
 | 
				
			||||||
 | 
								"nvim-tree/nvim-web-devicons",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							opts = {},
 | 
				
			||||||
 | 
							keys = {
 | 
				
			||||||
 | 
								{ "<leader>t", "<cmd>Telescope<cr>", desc = "Telescope", silent = true },
 | 
				
			||||||
 | 
								{ "<leader>p", "<cmd>Telescope git_files<cr>", desc = "Telescope Git Files", silent = true },
 | 
				
			||||||
 | 
								{ "<C-p>", "<cmd>Telescope find_files<cr>", desc = "Telescope Find Files", silent = true },
 | 
				
			||||||
 | 
								{ "<leader>s", "<cmd>Telescope treesitter<cr>", desc = "Telescope Treesitter", silent = true },
 | 
				
			||||||
 | 
								{ "<leader>gs", "<cmd>Telescope grep_string<cr>", desc = "Telescope Grep String", silent = true },
 | 
				
			||||||
 | 
								{ "<leader>gl", "<cmd>Telescope live_grep<cr>", desc = "Telescope Grep String", silent = true },
 | 
				
			||||||
 | 
								{ "<leader>gg", "<cmd>Telescope lsp_definitions<cr>", desc = "LSP Definitions", silent = true },
 | 
				
			||||||
 | 
								{ "<leader>gr", "<cmd>Telescope lsp_references<cr>", desc = "LSP References", silent = true },
 | 
				
			||||||
 | 
								{ "<leader>gi", "<cmd>Telescope lsp_implementations<cr>", desc = "LSP Implementations", silent = true },
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"<leader>gd",
 | 
				
			||||||
 | 
									"<cmd>Telescope lsp_type_definitions<cr>",
 | 
				
			||||||
 | 
									desc = "LSP Type Definitions",
 | 
				
			||||||
 | 
									silent = true,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"nvim-telescope/telescope-fzf-native.nvim",
 | 
				
			||||||
 | 
							build = "make",
 | 
				
			||||||
 | 
							dependencies = {
 | 
				
			||||||
 | 
								"nvim-telescope/telescope.nvim",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							config = function()
 | 
				
			||||||
 | 
								require("telescope").load_extension("fzf")
 | 
				
			||||||
 | 
							end,
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"folke/flash.nvim",
 | 
				
			||||||
 | 
							event = "VeryLazy",
 | 
				
			||||||
 | 
							opts = {},
 | 
				
			||||||
 | 
							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",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"r",
 | 
				
			||||||
 | 
									mode = "o",
 | 
				
			||||||
 | 
									function()
 | 
				
			||||||
 | 
										require("flash").remote()
 | 
				
			||||||
 | 
									end,
 | 
				
			||||||
 | 
									desc = "Remote Flash",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"R",
 | 
				
			||||||
 | 
									mode = { "o", "x" },
 | 
				
			||||||
 | 
									function()
 | 
				
			||||||
 | 
										require("flash").treesitter_search()
 | 
				
			||||||
 | 
									end,
 | 
				
			||||||
 | 
									desc = "Treesitter Search",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"<c-s>",
 | 
				
			||||||
 | 
									mode = { "c" },
 | 
				
			||||||
 | 
									function()
 | 
				
			||||||
 | 
										require("flash").toggle()
 | 
				
			||||||
 | 
									end,
 | 
				
			||||||
 | 
									desc = "Toggle Flash Search",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										69
									
								
								.config/nvim/lua/plugins/tools.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								.config/nvim/lua/plugins/tools.lua
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,69 @@
 | 
				
			||||||
 | 
					-- lua/plugins/tools.lua
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return {
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"olimorris/codecompanion.nvim",
 | 
				
			||||||
 | 
							dependencies = {
 | 
				
			||||||
 | 
								"nvim-lua/plenary.nvim",
 | 
				
			||||||
 | 
								"nvim-treesitter/nvim-treesitter",
 | 
				
			||||||
 | 
								"echasnovski/mini.diff",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							opts = {
 | 
				
			||||||
 | 
								display = { diff = { provider = "mini_diff" }, chat = { show_settings = true } },
 | 
				
			||||||
 | 
								strategies = {
 | 
				
			||||||
 | 
									chat = { adapter = "gemini_deep" },
 | 
				
			||||||
 | 
									inline = { adapter = "openai" },
 | 
				
			||||||
 | 
									cmd = { adapter = "openai_mini" },
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								adapters = {
 | 
				
			||||||
 | 
									anthro = function()
 | 
				
			||||||
 | 
										return require("codecompanion.adapters").extend("anthropic", {
 | 
				
			||||||
 | 
											schema = {
 | 
				
			||||||
 | 
												model = { default = "claude-3-7-sonnet-20250219" },
 | 
				
			||||||
 | 
												extended_thinking = { default = false },
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									end,
 | 
				
			||||||
 | 
									anthro_deep = function()
 | 
				
			||||||
 | 
										return require("codecompanion.adapters").extend("anthropic", {
 | 
				
			||||||
 | 
											schema = {
 | 
				
			||||||
 | 
												model = { default = "claude-3-7-sonnet-20250219" },
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									end,
 | 
				
			||||||
 | 
									gemini = function()
 | 
				
			||||||
 | 
										return require("codecompanion.adapters").extend("gemini", {
 | 
				
			||||||
 | 
											schema = {
 | 
				
			||||||
 | 
												model = { default = "gemini-2.5-flash-preview-04-17" },
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									end,
 | 
				
			||||||
 | 
									gemini_deep = function()
 | 
				
			||||||
 | 
										return require("codecompanion.adapters").extend("gemini", {
 | 
				
			||||||
 | 
											schema = {
 | 
				
			||||||
 | 
												model = { default = "gemini-2.5-pro-preview-05-06" },
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									end,
 | 
				
			||||||
 | 
									openai_mini = function()
 | 
				
			||||||
 | 
										return require("codecompanion.adapters").extend("openai", {
 | 
				
			||||||
 | 
											schema = {
 | 
				
			||||||
 | 
												model = { default = "gpt-4.1-mini" },
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									end,
 | 
				
			||||||
 | 
									openai_deep = function()
 | 
				
			||||||
 | 
										return require("codecompanion.adapters").extend("openai", {
 | 
				
			||||||
 | 
											schema = {
 | 
				
			||||||
 | 
												model = { default = "o4-mini-2025-04-16" },
 | 
				
			||||||
 | 
												reasoning_effort = { default = "high" },
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									end,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							keys = {
 | 
				
			||||||
 | 
								{ "<leader>c", "<cmd>CodeCompanionChat<cr>", desc = "CodeCompanion Chat", silent = true },
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										60
									
								
								.config/nvim/lua/plugins/treesitter.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								.config/nvim/lua/plugins/treesitter.lua
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,60 @@
 | 
				
			||||||
 | 
					-- lua/plugins/treesitter.lua
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return {
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"nvim-treesitter/nvim-treesitter",
 | 
				
			||||||
 | 
							build = ":TSUpdate",
 | 
				
			||||||
 | 
							opts = {
 | 
				
			||||||
 | 
								ensure_installed = {
 | 
				
			||||||
 | 
									"c",
 | 
				
			||||||
 | 
									"cpp",
 | 
				
			||||||
 | 
									"lua",
 | 
				
			||||||
 | 
									"vim",
 | 
				
			||||||
 | 
									"regex",
 | 
				
			||||||
 | 
									"bash",
 | 
				
			||||||
 | 
									"fish",
 | 
				
			||||||
 | 
									"typescript",
 | 
				
			||||||
 | 
									"javascript",
 | 
				
			||||||
 | 
									"tsx",
 | 
				
			||||||
 | 
									"go",
 | 
				
			||||||
 | 
									"elixir",
 | 
				
			||||||
 | 
									"vue",
 | 
				
			||||||
 | 
									"groovy",
 | 
				
			||||||
 | 
									"java",
 | 
				
			||||||
 | 
									"objc",
 | 
				
			||||||
 | 
									"swift",
 | 
				
			||||||
 | 
									"hcl",
 | 
				
			||||||
 | 
									"terraform",
 | 
				
			||||||
 | 
									"yaml",
 | 
				
			||||||
 | 
									"json",
 | 
				
			||||||
 | 
									"markdown",
 | 
				
			||||||
 | 
									"markdown_inline",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								auto_install = false,
 | 
				
			||||||
 | 
								highlight = {
 | 
				
			||||||
 | 
									enable = true,
 | 
				
			||||||
 | 
									additional_vim_regex_highlighting = false,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								incremental_selection = {
 | 
				
			||||||
 | 
									enable = true,
 | 
				
			||||||
 | 
									keymaps = {
 | 
				
			||||||
 | 
										init_selection = "gnn",
 | 
				
			||||||
 | 
										node_incremental = "grn",
 | 
				
			||||||
 | 
										scope_incremental = "grc",
 | 
				
			||||||
 | 
										node_decremental = "grm",
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								indent = {
 | 
				
			||||||
 | 
									enable = true,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							init = function()
 | 
				
			||||||
 | 
								vim.opt.foldmethod = "expr"
 | 
				
			||||||
 | 
								vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
 | 
				
			||||||
 | 
								vim.opt.foldenable = false
 | 
				
			||||||
 | 
							end,
 | 
				
			||||||
 | 
							config = function(plugin, opts)
 | 
				
			||||||
 | 
								require("nvim-treesitter.configs").setup(opts)
 | 
				
			||||||
 | 
							end,
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										90
									
								
								.config/nvim/lua/plugins/ui.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								.config/nvim/lua/plugins/ui.lua
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,90 @@
 | 
				
			||||||
 | 
					-- lua/plugins/ui.lua
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return {
 | 
				
			||||||
 | 
						"edkolev/tmuxline.vim",
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"rebelot/kanagawa.nvim",
 | 
				
			||||||
 | 
							lazy = false,
 | 
				
			||||||
 | 
							priority = 1000,
 | 
				
			||||||
 | 
							opts = { transparent = not vim.g.neovide },
 | 
				
			||||||
 | 
							init = function()
 | 
				
			||||||
 | 
								vim.cmd([[colorscheme kanagawa]])
 | 
				
			||||||
 | 
							end,
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"akinsho/bufferline.nvim",
 | 
				
			||||||
 | 
							event = "VeryLazy",
 | 
				
			||||||
 | 
							version = "*",
 | 
				
			||||||
 | 
							dependencies = { "nvim-tree/nvim-web-devicons" },
 | 
				
			||||||
 | 
							opts = {
 | 
				
			||||||
 | 
								options = {
 | 
				
			||||||
 | 
									separator_style = "slope",
 | 
				
			||||||
 | 
									offsets = {
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											filetype = "neo-tree",
 | 
				
			||||||
 | 
											text = "explorer",
 | 
				
			||||||
 | 
											highlight = "Directory",
 | 
				
			||||||
 | 
											separator = true,
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							keys = {
 | 
				
			||||||
 | 
								{ "<leader>j", "<cmd>BufferLinePick<cr>", desc = "BufferLinePick", silent = true },
 | 
				
			||||||
 | 
								{ "<leader>J", "<cmd>BufferLinePickClose<cr>", desc = "BufferLinePickClose", silent = true },
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"nvim-lualine/lualine.nvim",
 | 
				
			||||||
 | 
							dependencies = { "nvim-tree/nvim-web-devicons" },
 | 
				
			||||||
 | 
							opts = {
 | 
				
			||||||
 | 
								extensions = {
 | 
				
			||||||
 | 
									"neo-tree",
 | 
				
			||||||
 | 
									"symbols-outline",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"rcarriga/nvim-notify",
 | 
				
			||||||
 | 
							opts = {
 | 
				
			||||||
 | 
								background_colour = "#000000",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"folke/noice.nvim",
 | 
				
			||||||
 | 
							event = "VeryLazy",
 | 
				
			||||||
 | 
							dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify" },
 | 
				
			||||||
 | 
							opts = {
 | 
				
			||||||
 | 
								lsp = {
 | 
				
			||||||
 | 
									override = {
 | 
				
			||||||
 | 
										["vim.lsp.util.convert_input_to_markdown_lines"] = true,
 | 
				
			||||||
 | 
										["vim.lsp.util.stylize_markdown"] = true,
 | 
				
			||||||
 | 
										["cmp.entry.get_documentation"] = true,
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								presets = {
 | 
				
			||||||
 | 
									bottom_search = true,
 | 
				
			||||||
 | 
									command_palette = true,
 | 
				
			||||||
 | 
									long_message_to_split = true,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								views = {
 | 
				
			||||||
 | 
									notify = {
 | 
				
			||||||
 | 
										replace = true,
 | 
				
			||||||
 | 
										merge = true,
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"OXY2DEV/markview.nvim",
 | 
				
			||||||
 | 
							lazy = false,
 | 
				
			||||||
 | 
							dependencies = { "saghen/blink.cmp" },
 | 
				
			||||||
 | 
							opts = {
 | 
				
			||||||
 | 
								preview = {
 | 
				
			||||||
 | 
									icon_provider = "devicons",
 | 
				
			||||||
 | 
									filetypes = { "markdown", "codecompanion" },
 | 
				
			||||||
 | 
									ignore_buftypes = {},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										77
									
								
								install_utils
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										77
									
								
								install_utils
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,77 @@
 | 
				
			||||||
 | 
					#!/usr/bin/env fish
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test -e /etc/os-release; and source /etc/os-release
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -l uname (uname)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if test $uname = Darwin
 | 
				
			||||||
 | 
					    set -l distro mac
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    set -l distro $ID
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -l base_pkgs \
 | 
				
			||||||
 | 
					    fish \
 | 
				
			||||||
 | 
					    git \
 | 
				
			||||||
 | 
					    neovim \
 | 
				
			||||||
 | 
					    tmux \
 | 
				
			||||||
 | 
					    rsync \
 | 
				
			||||||
 | 
					    curl \
 | 
				
			||||||
 | 
					    fzf \
 | 
				
			||||||
 | 
					    mosh \
 | 
				
			||||||
 | 
					    lsd \
 | 
				
			||||||
 | 
					    ripgrep \
 | 
				
			||||||
 | 
					    bat
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -l mac_pkgs \
 | 
				
			||||||
 | 
					    $base_pkgs \
 | 
				
			||||||
 | 
					    fd \
 | 
				
			||||||
 | 
					    yazi \
 | 
				
			||||||
 | 
					    git-delta \
 | 
				
			||||||
 | 
					    starship
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -l arch_pkgs \
 | 
				
			||||||
 | 
					    $base_pkgs \
 | 
				
			||||||
 | 
					    fd \
 | 
				
			||||||
 | 
					    yazi \
 | 
				
			||||||
 | 
					    git-delta \
 | 
				
			||||||
 | 
					    starship
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -l debian_pkgs \
 | 
				
			||||||
 | 
					    $base_pkgs \
 | 
				
			||||||
 | 
					    fd-find
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					switch $distro
 | 
				
			||||||
 | 
					    case mac
 | 
				
			||||||
 | 
					        log 'Installing packages with Homebrew'
 | 
				
			||||||
 | 
					        brew install $mac_pkgs
 | 
				
			||||||
 | 
					    case arch
 | 
				
			||||||
 | 
					        log 'Installing Pikaur'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        install_pkgs --needed base-devel
 | 
				
			||||||
 | 
					        or return $status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        set -l cwd (pwd)
 | 
				
			||||||
 | 
					        and set -l tmp_dir (mktemp --directory)
 | 
				
			||||||
 | 
					        or return $status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        git clone https://aur.archlinux.org/pikaur.git $tmp_dir
 | 
				
			||||||
 | 
					        and cd $tmp_dir
 | 
				
			||||||
 | 
					        and makepkg --clean --install --rmdeps --syncdeps --noconfirm
 | 
				
			||||||
 | 
					        and cd $cwd
 | 
				
			||||||
 | 
					        or return $status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        log 'Installing packages with Pikaur '
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        pikaur --sync --refresh --sysupgrade --noconfirm
 | 
				
			||||||
 | 
					        and pikaur --sync --noconfirm $arch_pkgs
 | 
				
			||||||
 | 
					    case debian
 | 
				
			||||||
 | 
					        log 'Installing packages with APT'
 | 
				
			||||||
 | 
					        sudo apt-get --quiet --yes update
 | 
				
			||||||
 | 
					        and sudo apt-get --quiet --yes upgrade
 | 
				
			||||||
 | 
					        and sudo apt-get --quiet --yes install $debian_pkgs
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function log -a message
 | 
				
			||||||
 | 
					    echo \n"--- $message ---"\n
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
		Loading…
	
		Reference in a new issue