DEVELOPMENT ENVIRONMENT

~alex/dotfiles

a2c3a2b9c765e542e3a69c09ce04d22651729d26 — Alejandro Laguna 16 days ago
feat: init dotfiles
A  => ghostty/config +37 -0
@@ 1,37 @@
font-family = MonoLisa
font-size = 11
font-variation = wght=500

font-feature = -calt,-liga,-dlig

window-padding-x = 5
window-padding-y = 5

bell-features = no-audio

foreground = #d8d8d8
background = #171717

palette = 0=#606060
palette = 1=#df9a98
palette = 2=#719672
palette = 3=#e0bb71
palette = 4=#96bbdc
palette = 5=#dfbdbc
palette = 6=#97bcbc
palette = 7=#d8d8d8
palette = 8=#757575
palette = 9=#e07798
palette = 10=#97bb98
palette = 11=#ffdd98
palette = 12=#badcfb
palette = 13=#ffbebc
palette = 14=#96ddde
palette = 15=#e9e9e9

cursor-color = #d8d8d8
cursor-text = #4a4a4a

cursor-style = block
cursor-style-blink = true
shell-integration-features = no-cursor

A  => nvim/init.lua +13 -0
@@ 1,13 @@
vim.g.mapleader = " "
vim.g.maplocalleader = " "
vim.g.have_nerd_font = false

require("options")
require("keymaps")
require("autocmds")
require("plugins")
require("notes")

--vim.cmd.colorscheme("nordbones")
vim.g.seoul256_background = 233
vim.cmd.colorscheme("seoul256")

A  => nvim/lazy-lock.json +40 -0
@@ 1,40 @@
{
  "LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" },
  "beside.nvim": { "branch": "main", "commit": "ce2f889718f13b22eb8cdeb6738a74f7bbea06a4" },
  "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
  "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
  "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
  "conform.nvim": { "branch": "master", "commit": "016802de402556da54c36bd7359b441266b01cdd" },
  "cord": { "branch": "master", "commit": "85f295e43550bc968b66d95d8bfd6e12bb17df08" },
  "fidget.nvim": { "branch": "main", "commit": "9e0201673e08e997e7cf52afca5565c70bd117f3" },
  "gitsigns.nvim": { "branch": "main", "commit": "070a5d7b985546cc57e1fc61e5bc507fecac6045" },
  "julia-vim": { "branch": "master", "commit": "52b30547346b21bc93acda28d626795667f9e087" },
  "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
  "lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" },
  "luvit-meta": { "branch": "main", "commit": "7edcd52ac6f2acc2f83f0cc27ac989a142408fbf" },
  "mason-lspconfig.nvim": { "branch": "main", "commit": "b3298993d55fa194279b5eb9dbfb3a43da65cadf" },
  "mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" },
  "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" },
  "nvim-cmp": { "branch": "main", "commit": "2ffe79f1f021def8dd1fcd81deb16f1bb0d989f3" },
  "nvim-lspconfig": { "branch": "master", "commit": "a9bb4d5f4276aa5cddc015faa3ecc5a7b5a26b14" },
  "nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" },
  "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
  "screenkey.nvim": { "branch": "main", "commit": "16390931d847b1d5d77098daccac4e55654ac9e2" },
  "seoul256.vim": { "branch": "master", "commit": "0357ff3e44faab66c98bc98dfc89c834e37012da" },
  "supermaven-nvim": { "branch": "main", "commit": "07d20fce48a5629686aefb0a7cd4b25e33947d50" },
  "tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" },
  "telescope-fzf-native.nvim": { "branch": "main", "commit": "b25b749b9db64d375d782094e2b9dce53ad53a40" },
  "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
  "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
  "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
  "transparent.nvim": { "branch": "main", "commit": "e00ca1cf09caef575edf8da7e5a8b9193893b4c7" },
  "vim-blade": { "branch": "master", "commit": "9534101808cc320eef003129a40cab04b026a20c" },
  "vim-markdown": { "branch": "master", "commit": "1bc9d0cd8e1cc3e901b0a49c2b50a843f1c89397" },
  "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
  "vim-table-mode": { "branch": "master", "commit": "bb025308a45c67c7c8f0763ba37bc2ee3f534df0" },
  "vimtex": { "branch": "master", "commit": "16a5609d17a436db7f48046d91747fd6a9d75c74" },
  "vimwiki": { "branch": "dev", "commit": "a54a3002e229c4b43d69ced170ff77663a5b2c40" },
  "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" },
  "zen-mode.nvim": { "branch": "main", "commit": "8564ce6d29ec7554eb9df578efa882d33b3c23a7" },
  "zig-lamp": { "branch": "main", "commit": "0654299f5150b2a420212e34f86a96c7dbae31e2" }
}

A  => nvim/lua/autocmds.lua +39 -0
@@ 1,39 @@
vim.api.nvim_create_autocmd("TextYankPost", {
	desc = "Highlight when yanking (copying) text",
	group = vim.api.nvim_create_augroup("kickstart-highlight-yank", { clear = true }),
	callback = function()
		vim.highlight.on_yank()
	end,
})

-- Forcefully stop treesitter for markdown to prevent crashes
vim.api.nvim_create_autocmd("FileType", {
	pattern = { "markdown" },
	callback = function(args)
		pcall(vim.treesitter.stop, args.buf)
	end,
})

--local function pdf_of(file)
--	return vim.fn.fnamemodify(file, ":r") .. ".pdf"
--end
--
--vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost" }, {
--	pattern = "*.typ",
--	callback = function()
--		local file = vim.fn.expand("%:p")
--		local pdf = pdf_of(file)
--
--		vim.fn.jobstart({
--			"typst",
--			"compile",
--			file,
--			pdf,
--		}, { detach = true })
--
--		vim.fn.jobstart({
--			"sioyek",
--			pdf,
--		}, { detach = true })
--	end,
--})

A  => nvim/lua/keymaps.lua +16 -0
@@ 1,16 @@
vim.keymap.set("n", "<Esc>", "<cmd>nohlsearch<CR>")
vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" })

vim.keymap.set("n", "<leader>cd", "<cmd>:cd %:h<CR>")

vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" })

vim.keymap.set("n", "<left>", '<cmd>echo "Use h to move!!"<CR>')
vim.keymap.set("n", "<right>", '<cmd>echo "Use l to move!!"<CR>')
vim.keymap.set("n", "<up>", '<cmd>echo "Use k to move!!"<CR>')
vim.keymap.set("n", "<down>", '<cmd>echo "Use j to move!!"<CR>')

vim.keymap.set("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" })
vim.keymap.set("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" })
vim.keymap.set("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" })
vim.keymap.set("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" })

A  => nvim/lua/notes.lua +1 -0
@@ 1,1 @@
vim.keymap.set("n", "<leader>zz", ":ZenMode<CR>")

A  => nvim/lua/options.lua +55 -0
@@ 1,55 @@
vim.opt.termguicolors = true
vim.opt.colorcolumn = "100"
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.mouse = "a"
vim.opt.showmode = false
vim.opt.guicursor = "n-v-i-c:block-Cursor"
vim.opt.signcolumn = "yes"
vim.opt.cursorline = true
vim.opt.scrolloff = 10

vim.api.nvim_set_hl(0, "Comment", { italic = true })

vim.schedule(function()
	vim.opt.clipboard = "unnamedplus"
end)

vim.opt.breakindent = true
vim.opt.undofile = true
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.updatetime = 250
vim.opt.timeoutlen = 300

vim.opt.splitright = true
vim.opt.splitbelow = true

vim.opt.list = true
vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" }
vim.opt.inccommand = "split"

vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true

vim.diagnostic.config({
	signs = true,
	virtual_text = true,
	update_in_insert = false,
	severity_sort = true,
})

vim.opt.conceallevel = 1

-- Failsafe: Completely block treesitter from starting on markdown
-- This prevents crashes in Neovim 0.12+ hovers/files
local original_ts_start = vim.treesitter.start
vim.treesitter.start = function(bufnr, lang)
	local buf = bufnr or vim.api.nvim_get_current_buf()
	local ft = lang or vim.bo[buf].filetype
	if ft == "markdown" or ft == "markdown_inline" then
		return false
	end
	return original_ts_start(bufnr, lang)
end

A  => nvim/lua/plugins.lua +86 -0
@@ 1,86 @@
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
		error("Error cloning lazy.nvim:\n" .. out)
	end
end
vim.opt.rtp:prepend(lazypath)

require("lazy").setup({
	"tpope/vim-sleuth",
	-- Lua
	{
		"folke/zen-mode.nvim",
		opts = {
			window = {
				width = 100, -- width of the Zen window
			},
		},
	},

	{
		"preservim/vim-markdown",
		dependencies = { "godlygeek/tabular" },
		init = function()
			vim.g.vim_markdown_folding_disabled = 1
			vim.g.vim_markdown_no_default_key_mappings = 1
		end,
	},
	"dhruvasagar/vim-table-mode",
	"xiyaowong/transparent.nvim",
	"jwalton512/vim-blade",
	"Bilal2453/luvit-meta",
	"JuliaEditorSupport/julia-vim",
	--	{
	--		"norcalli/nvim-colorizer.lua",
	--		config = function()
	--			require("colorizer").setup({
	--				"*",
	--				css = { rgb_fn = true },
	--				html = { mode = "foreground" },
	--			})
	--		end,
	--	},
	{
		"NStefan002/screenkey.nvim",
		lazy = false,
		version = "*", -- or branch = "main", to use the latest commit
	},
	{ import = "plugins.presence" },
	{ import = "plugins.gitsigns" },
	{ import = "plugins.which_key" },
	{ import = "plugins.telescope" },
	{ import = "plugins.lazydev" },
	{ import = "plugins.lsp" },
	{ import = "plugins.conform" },
	{ import = "plugins.cmp" },
	{ import = "plugins.colorscheme" },
	{ import = "plugins.todo_comments" },
	{ import = "plugins.treesitter" },
	{ import = "plugins.latex" },
	{ import = "plugins.zig-lamp" },
	{ import = "plugins.vimwiki" },
	{ import = "plugins.supermaven" },
	-- { import = "plugins.obsidian" },
}, {
	ui = {
		icons = vim.g.have_nerd_font and {} or {
			cmd = "⌘",
			config = "🛠",
			event = "📅",
			ft = "📂",
			init = "⚙",
			keys = "🗝",
			plugin = "🔌",
			runtime = "💻",
			require = "🌙",
			source = "📄",
			start = "🚀",
			task = "📌",
			lazy = "💤 ",
		},
	},
})

A  => nvim/lua/plugins/cmp.lua +67 -0
@@ 1,67 @@
return {
	"hrsh7th/nvim-cmp",
	event = "InsertEnter",

	dependencies = {
		{
			"L3MON4D3/LuaSnip",
			build = (function()
				if vim.fn.has("win32") == 1 or vim.fn.executable("make") == 0 then
					return
				end
				return "make install_jsregexp"
			end)(),
		},

		"saadparwaiz1/cmp_luasnip",
		"hrsh7th/cmp-nvim-lsp",
		"hrsh7th/cmp-path",
	},

	config = function()
		local cmp = require("cmp")
		local luasnip = require("luasnip")

		luasnip.config.setup({})

		cmp.setup({
			snippet = {
				expand = function(args)
					luasnip.lsp_expand(args.body)
				end,
			},

			completion = {
				completeopt = "menu,menuone,noinsert",
			},

			mapping = cmp.mapping.preset.insert({
				["<C-n>"] = cmp.mapping.select_next_item(),
				["<C-p>"] = cmp.mapping.select_prev_item(),
				["<C-b>"] = cmp.mapping.scroll_docs(-4),
				["<C-f>"] = cmp.mapping.scroll_docs(4),
				["<C-y>"] = cmp.mapping.confirm({ select = true }),
				["<C-Space>"] = cmp.mapping.complete({}),

				["<C-l>"] = cmp.mapping(function()
					if luasnip.expand_or_locally_jumpable() then
						luasnip.expand_or_jump()
					end
				end, { "i", "s" }),

				["<C-h>"] = cmp.mapping(function()
					if luasnip.locally_jumpable(-1) then
						luasnip.jump(-1)
					end
				end, { "i", "s" }),
			}),

			sources = {
				{ name = "nvim_lsp" },
				{ name = "luasnip" },
				{ name = "path" },
				{ name = "buffer" },
			},
		})
	end,
}

A  => nvim/lua/plugins/colorscheme.lua +3 -0
@@ 1,3 @@
return {
	"junegunn/seoul256.vim",
}

A  => nvim/lua/plugins/conform.lua +35 -0
@@ 1,35 @@
return {
	"stevearc/conform.nvim",
	event = { "BufWritePre" },
	cmd = { "ConformInfo" },
	keys = {
		{
			"<leader>f",
			function()
				require("conform").format({ async = true, lsp_format = "fallback" })
			end,
			mode = "",
			desc = "[F]ormat buffer",
		},
	},
	opts = {
		notify_on_error = false,
		format_on_save = function(bufnr)
			local disable_filetypes = { c = true, cpp = true }
			local lsp_format_opt
			if disable_filetypes[vim.bo[bufnr].filetype] then
				lsp_format_opt = "never"
			else
				lsp_format_opt = "fallback"
			end
			return {
				timeout_ms = 500,
				lsp_format = lsp_format_opt,
			}
		end,
		formatters_by_ft = {
			lua = { "stylua" },
			haskell = { "fourmolu" },
		},
	},
}

A  => nvim/lua/plugins/gitsigns.lua +13 -0
@@ 1,13 @@
return {
	"lewis6991/gitsigns.nvim",
	opts = {
		signs = {
			add = { text = "+" },
			change = { text = "~" },
			delete = { text = "_" },
			topdelete = { text = "‾" },
			changedelete = { text = "~" },
		},
		current_line_blame = true,
	},
}

A  => nvim/lua/plugins/latex.lua +13 -0
@@ 1,13 @@
return {
	{
		"lervag/vimtex",
		ft = { "tex", "bib" },
		init = function()
			vim.g.vimtex_view_method = "zathura"
			vim.g.vimtex_compiler_method = "latexmk"
			vim.g.vimtex_compiler_latexmk = {
				options = { "-pdf", "-interaction=nonstopmode", "-synctex=1" },
			}
		end,
	},
}

A  => nvim/lua/plugins/lazydev.lua +9 -0
@@ 1,9 @@
return {
	"folke/lazydev.nvim",
	ft = "lua",
	opts = {
		library = {
			{ path = "luvit-meta/library", words = { "vim%.uv" } },
		},
	},
}

A  => nvim/lua/plugins/lsp.lua +251 -0
@@ 1,251 @@
return {
	"neovim/nvim-lspconfig",

	dependencies = {
		{ "williamboman/mason.nvim", config = true },
		"williamboman/mason-lspconfig.nvim",
		"WhoIsSethDaniel/mason-tool-installer.nvim",
		{ "j-hui/fidget.nvim", opts = {} },
		"hrsh7th/cmp-nvim-lsp",
	},

	config = function()
		----------------------------------------------------------------------
		-- LSP Attach
		----------------------------------------------------------------------

		vim.api.nvim_create_autocmd("LspAttach", {
			group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }),

			callback = function(event)
				local map = function(keys, func, desc, mode)
					mode = mode or "n"

					vim.keymap.set(mode, keys, func, {
						buffer = event.buf,
						desc = "LSP: " .. desc,
					})
				end

				------------------------------------------------------------------
				-- Keymaps
				------------------------------------------------------------------

				map("gd", require("telescope.builtin").lsp_definitions, "[G]oto [D]efinition")
				map("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences")
				map("gI", require("telescope.builtin").lsp_implementations, "[G]oto [I]mplementation")
				map("<leader>D", require("telescope.builtin").lsp_type_definitions, "Type [D]efinition")
				map("<leader>ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols")
				map("<leader>ws", require("telescope.builtin").lsp_dynamic_workspace_symbols, "[W]orkspace [S]ymbols")

				map("<leader>rn", vim.lsp.buf.rename, "[R]e[n]ame")
				map("<leader>ca", vim.lsp.buf.code_action, "[C]ode [A]ction", { "n", "x" })

				map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration")

				------------------------------------------------------------------
				-- Client
				------------------------------------------------------------------

				local client = vim.lsp.get_client_by_id(event.data.client_id)

				------------------------------------------------------------------
				-- Document Highlight
				------------------------------------------------------------------

				if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then
					local highlight_augroup = vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false })

					vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
						buffer = event.buf,
						group = highlight_augroup,
						callback = vim.lsp.buf.document_highlight,
					})

					vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
						buffer = event.buf,
						group = highlight_augroup,
						callback = vim.lsp.buf.clear_references,
					})

					vim.api.nvim_create_autocmd("LspDetach", {
						group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }),

						callback = function(event2)
							vim.lsp.buf.clear_references()

							vim.api.nvim_clear_autocmds({
								group = "kickstart-lsp-highlight",
								buffer = event2.buf,
							})
						end,
					})
				end

				------------------------------------------------------------------
				-- Inlay Hints
				------------------------------------------------------------------

				if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then
					map("<leader>th", function()
						vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf }))
					end, "[T]oggle Inlay [H]ints")
				end
			end,
		})

		----------------------------------------------------------------------
		-- Capabilities
		----------------------------------------------------------------------

		local capabilities = vim.lsp.protocol.make_client_capabilities()

		capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities())

		----------------------------------------------------------------------
		-- Servers
		----------------------------------------------------------------------

		local servers = {
			lua_ls = {
				settings = {
					Lua = {
						completion = {
							callSnippet = "Replace",
						},
					},
				},
			},

			texlab = {
				settings = {
					texlab = {
						build = {
							executable = "latexmk",
							args = {
								"-pdf",
								"-interaction=nonstopmode",
								"-synctex=1",
								"%f",
							},
							onSave = true,
						},

						forwardSearch = {
							executable = "zathura",
							args = {
								"--synctex-forward",
								"%l:1:%f",
								"%p",
							},
						},

						chktex = {
							onOpenAndSave = true,
							onEdit = false,
						},
					},
				},
			},

			zls = {
				settings = {
					zls = {
						zig_exe_path = "/usr/bin/zig",
					},
				},
			},

			hls = {
				filetypes = {
					"haskell",
					"lhaskell",
					"cabal",
				},

				settings = {
					haskell = {
						checkProject = true,
						diagnosticsOnChange = true,
						completionSnippetsOn = true,
						maxCompletions = 40,
					},
				},
			},
		}

		----------------------------------------------------------------------
		-- Mason
		----------------------------------------------------------------------

		require("mason").setup()

		-- Mason names for servers in the `servers` table
		local server_to_mason = {
			lua_ls = "lua-language-server",
			texlab = "texlab",
			zls = "zls",
			hls = "haskell-language-server",
		}

		local ensure_installed = {}
		for server_name, _ in pairs(servers) do
			table.insert(ensure_installed, server_to_mason[server_name] or server_name)
		end

		vim.list_extend(ensure_installed, {
			"stylua",
			"fourmolu",
		})

		require("mason-tool-installer").setup({
			ensure_installed = ensure_installed,
		})

		----------------------------------------------------------------------
		-- Mason LSPConfig
		----------------------------------------------------------------------

		require("mason-lspconfig").setup({
			handlers = {
				-- Skip julials here as it is handled manually
				["julials"] = function() end,

				-- Default handler for all other servers
				function(server_name)
					local server_opts = servers[server_name] or {}

					-- Merge capabilities
					server_opts.capabilities =
						vim.tbl_deep_extend("force", {}, capabilities, server_opts.capabilities or {})

					-- Use new Neovim 0.11+ APIs:
					-- config() defines/extends the configuration
					-- enable() starts/attaches based on filetype and root detection
					vim.lsp.config(server_name, server_opts)
					vim.lsp.enable(server_name)
				end,
			},
		})

		----------------------------------------------------------------------
		-- Julia
		----------------------------------------------------------------------

		vim.lsp.config("julials", {
			cmd = {
				"julia",
				"--startup-file=no",
				"--history-file=no",
				"-e",
				"using LanguageServer, SymbolServer; runserver()",
			},

			filetypes = { "julia" },

			capabilities = capabilities,
		})

		vim.lsp.enable("julials")
	end,
}

A  => nvim/lua/plugins/obsidian.lua +15 -0
@@ 1,15 @@
return {
	"obsidian-nvim/obsidian.nvim",
	version = "*", -- use latest release, remove to use latest commit
	---@module 'obsidian'
	---@type obsidian.config
	opts = {
		legacy_commands = false, -- this will be removed in 4.0.0
		workspaces = {
			{
				name = "personal",
				path = "~/personal/vault",
			},
		},
	},
}

A  => nvim/lua/plugins/presence.lua +131 -0
@@ 1,131 @@
return {
	"vyfor/cord.nvim",
	name = "cord",
	config = function()
		require("cord").setup({
			enabled = true,
			log_level = vim.log.levels.OFF,
			editor = {
				client = "neovim",
				tooltip = "neovim",
				icon = nil,
			},
			display = {
				theme = "atom",
				flavor = "accent",
				swap_fields = false,
				swap_icons = false,
			},
			timestamp = {
				enabled = true,
				reset_on_idle = false,
				reset_on_change = false,
			},
			idle = {
				enabled = false,
				timeout = 300000,
				show_status = true,
				ignore_focus = true,
				unidle_on_focus = true,
				smart_idle = true,
				details = "Idling",
				state = nil,
				tooltip = "💤",
				icon = nil,
			},
			text = {
				default = nil,
				workspace = function(opts)
					return "in " .. opts.workspace
				end,
				viewing = function(opts)
					return "viewing " .. opts.filename
				end,
				editing = function(opts)
					return "editing " .. opts.filename
				end,
				file_browser = function(opts)
					return "browsing files in " .. opts.name
				end,
				plugin_manager = function(opts)
					return "managing plugins in " .. opts.name
				end,
				lsp = function(opts)
					return "configuring LSP in " .. opts.name
				end,
				docs = function(opts)
					return "reading " .. opts.name
				end,
				vcs = function(opts)
					return "committing changes in " .. opts.name
				end,
				notes = function(opts)
					return "taking notes in " .. opts.name
				end,
				debug = function(opts)
					return "debugging in " .. opts.name
				end,
				test = function(opts)
					return "testing in " .. opts.name
				end,
				diagnostics = function(opts)
					return "fixing problems in " .. opts.name
				end,
				games = function(opts)
					return "playing " .. opts.name
				end,
				terminal = function(opts)
					return "running commands in " .. opts.name
				end,
				dashboard = "home",
			},
			buttons = nil,
			-- buttons = {
			--   {
			--     label = 'View Repository',
			--     url = function(opts) return opts.repo_url end,
			--   },
			-- },
			assets = nil,
			variables = nil,
			hooks = {
				ready = nil,
				shutdown = nil,
				pre_activity = nil,
				post_activity = nil,
				idle_enter = nil,
				idle_leave = nil,
				workspace_change = nil,
			},
			plugins = nil,
			advanced = {
				plugin = {
					autocmds = true,
					cursor_update = "on_hold",
					match_in_mappings = true,
				},
				server = {
					update = "fetch",
					pipe_path = nil,
					executable_path = nil,
					timeout = 300000,
				},
				discord = {
					reconnect = {
						enabled = false,
						interval = 5000,
						initial = true,
					},
				},
				workspace = {
					root_markers = {
						".git",
						".hg",
						".svn",
					},
					limit_to_cwd = false,
				},
			},
		})
	end,
}

A  => nvim/lua/plugins/startup.lua +0 -0
A  => nvim/lua/plugins/supermaven.lua +20 -0
@@ 1,20 @@
return {
  "supermaven-inc/supermaven-nvim",
  config = function()
    require("supermaven-nvim").setup({
      keymaps = {
        accept_suggestion = "<Tab>",
        clear_suggestion = "<C-]>",
        accept_word = "<C-j>",
      },
      ignore_filetypes = { cpp = true }, -- you can add filetypes here to ignore
      color = {
        suggestion_color = "#5c534f",
        cterm = 244,
      },
      log_level = "info", -- set to "off" to disable logging completely
      disable_inline_completion = false, -- disables inline completion for use with cmp
      disable_keymaps = false, -- disables built in keymaps for more manual control
    })
  end,
}

A  => nvim/lua/plugins/telescope.lua +59 -0
@@ 1,59 @@
return {
	"nvim-telescope/telescope.nvim",
	event = "VimEnter",
	branch = "0.1.x",
	dependencies = {
		"nvim-lua/plenary.nvim",
		{
			"nvim-telescope/telescope-fzf-native.nvim",
			build = "make",
			cond = function()
				return vim.fn.executable("make") == 1
			end,
		},
		{ "nvim-telescope/telescope-ui-select.nvim" },
		{ "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font },
	},
	config = function()
		require("telescope").setup({
			extensions = {
				["ui-select"] = {
					require("telescope.themes").get_dropdown(),
				},
			},
		})

		pcall(require("telescope").load_extension, "fzf")
		pcall(require("telescope").load_extension, "ui-select")

		local builtin = require("telescope.builtin")
		vim.keymap.set("n", "<leader>sh", builtin.help_tags, { desc = "[S]earch [H]elp" })
		vim.keymap.set("n", "<leader>sk", builtin.keymaps, { desc = "[S]earch [K]eymaps" })
		vim.keymap.set("n", "<leader>sf", builtin.find_files, { desc = "[S]earch [F]iles" })
		vim.keymap.set("n", "<leader>ss", builtin.builtin, { desc = "[S]earch [S]elect Telescope" })
		vim.keymap.set("n", "<leader>sw", builtin.grep_string, { desc = "[S]earch current [W]ord" })
		vim.keymap.set("n", "<leader>sg", builtin.live_grep, { desc = "[S]earch by [G]rep" })
		vim.keymap.set("n", "<leader>sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" })
		vim.keymap.set("n", "<leader>sr", builtin.resume, { desc = "[S]earch [R]esume" })
		vim.keymap.set("n", "<leader>s.", builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
		vim.keymap.set("n", "<leader><leader>", builtin.buffers, { desc = "[ ] Find existing buffers" })

		vim.keymap.set("n", "<leader>/", function()
			builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({
				winblend = 10,
				previewer = false,
			}))
		end, { desc = "[/] Fuzzily search in current buffer" })

		vim.keymap.set("n", "<leader>s/", function()
			builtin.live_grep({
				grep_open_files = true,
				prompt_title = "Live Grep in Open Files",
			})
		end, { desc = "[S]earch [/] in Open Files" })

		vim.keymap.set("n", "<leader>sn", function()
			builtin.find_files({ cwd = vim.fn.stdpath("config") })
		end, { desc = "[S]earch [N]eovim files" })
	end,
}

A  => nvim/lua/plugins/todo_comments.lua +6 -0
@@ 1,6 @@
return {
	"folke/todo-comments.nvim",
	event = "VimEnter",
	dependencies = { "nvim-lua/plenary.nvim" },
	opts = { signs = false },
}

A  => nvim/lua/plugins/treesitter.lua +47 -0
@@ 1,47 @@
return {
	"nvim-treesitter/nvim-treesitter",
	version = false, -- Last release is way too old
	build = ":TSUpdate",
	-- event = { "BufReadPost", "BufNewFile" },
	lazy = false, -- Keep false to ensure loading for Neo-tree
	main = "nvim-treesitter.configs", -- Lazy handles the require logic here
	branch = "master", -- Explicitly force the stable branch
	opts = {
		ensure_installed = {
			"lua",
			"vim",
			"vimdoc",
			"query",
			"python",
			"c",
			"cpp",
			"csv",
			"json",
		},
		ignore_install = { "markdown", "markdown_inline" },
		auto_install = false,
		highlight = {
			enable = true,
			-- Disable treesitter for markdown to prevent crashes
			disable = { "markdown", "markdown_inline", "bash" },
			additional_vim_regex_highlighting = { "markdown" },
		},

		indent = {
			enable = true,
			disable = { "markdown", "markdown_inline" },
		},
		injections = {
			enable = false,
		},
	},
	-- Fallback config to handle edge cases
	config = function(_, opts)
		-- Protective call: If treesitter fails to load, don't crash neovim
		local status_ok, configs = pcall(require, "nvim-treesitter.configs")
		if not status_ok then
			return
		end
		configs.setup(opts)
	end,
}

A  => nvim/lua/plugins/vimwiki.lua +8 -0
@@ 1,8 @@
return {
	"vimwiki/vimwiki",
	init = function()
		vim.g.vimwiki_path = "~/personal/zk"
		vim.g.vimwiki_syntax = "markdown"
		vim.g.vimwiki_ext = "md"
	end,
}

A  => nvim/lua/plugins/which_key.lua +49 -0
@@ 1,49 @@
return {
	"folke/which-key.nvim",
	event = "VimEnter",
	opts = {
		icons = {
			mappings = vim.g.have_nerd_font,
			keys = vim.g.have_nerd_font and {} or {
				Up = "<Up> ",
				Down = "<Down> ",
				Left = "<Left> ",
				Right = "<Right> ",
				C = "<C-…> ",
				M = "<M-…> ",
				D = "<D-…> ",
				S = "<S-…> ",
				CR = "<CR> ",
				Esc = "<Esc> ",
				ScrollWheelDown = "<ScrollWheelDown> ",
				ScrollWheelUp = "<ScrollWheelUp> ",
				NL = "<NL> ",
				BS = "<BS> ",
				Space = "<Space> ",
				Tab = "<Tab> ",
				F1 = "<F1>",
				F2 = "<F2>",
				F3 = "<F3>",
				F4 = "<F4>",
				F5 = "<F5>",
				F6 = "<F6>",
				F7 = "<F7>",
				F8 = "<F8>",
				F9 = "<F9>",
				F10 = "<F10>",
				F11 = "<F11>",
				F12 = "<F12>",
			},
		},

		spec = {
			{ "<leader>c", group = "[C]ode", mode = { "n", "x" } },
			{ "<leader>d", group = "[D]ocument" },
			{ "<leader>r", group = "[R]ename" },
			{ "<leader>s", group = "[S]earch" },
			{ "<leader>w", group = "[W]orkspace" },
			{ "<leader>t", group = "[T]oggle" },
			{ "<leader>h", group = "Git [H]unk", mode = { "n", "v" } },
		},
	},
}

A  => nvim/lua/plugins/zig-lamp.lua +24 -0
@@ 1,24 @@
return {
	"jinzhongjia/zig-lamp",
	event = "VeryLazy",
	-- Optional but recommended: build the local FFI lib to enable faster/safer verification & formatting
	build = ":ZigLampBuild async",
	dependencies = {
		"nvim-lua/plenary.nvim",
	},
	init = function()
		-- Backward-compatible global vars (all optional)
		-- Auto-install ZLS: timeout in milliseconds; set to nil to disable
		vim.g.zig_lamp_zls_auto_install = nil
		-- Fallback to system zls when no local match is found
		vim.g.zig_lamp_fall_back_sys_zls = nil
		-- Extra LSP options merged into defaults
		vim.g.zig_lamp_zls_lsp_opt = {}
		-- ZLS server settings (overrides built-in recommendations)
		vim.g.zig_lamp_zls_settings = {}
		-- Help text color for the package panel
		vim.g.zig_lamp_pkg_help_fg = "#CF5C00"
		-- Timeout (ms) used by `zig fetch` when retrieving url hashes
		vim.g.zig_lamp_zig_fetch_timeout = 5000
	end,
}