feat: Playing around with lazy-nvim and reworking my nvim config

This commit is contained in:
2024-12-19 22:40:55 -05:00
parent ef961fcfa8
commit ee7854eafc
28 changed files with 812 additions and 571 deletions

View File

@@ -0,0 +1,20 @@
-- Markdown specific key maps.
--
local todos = require("todo-comments")
local keywords = { "WARN", "WARNING", "IMPORTANT" }
-- Show all the warnings in the quick fix list.
vim.keymap.set(
"n",
"<leader>tw",
"<CMD>Trouble todo toggle filter = {tag = {WARN, IMPORTANT}}<CR>",
{ desc = "[T]odo [W]arnings" }
)
vim.keymap.set("n", "]w", function()
todos.jump_next({ keywords = keywords })
end, { desc = "Next [W]arning" })
vim.keymap.set("n", "[w", function()
todos.jump_prev({ keywords = keywords })
end, { desc = "Previous [W]arning" })

View File

@@ -0,0 +1,2 @@
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2

View File

@@ -1,8 +1,50 @@
-- Autocmds are automatically loaded on the VeryLazy event local defaultGroupOptions = { clear = true }
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua local markdownGroup = vim.api.nvim_create_augroup("MyMarkdownGroup", defaultGroupOptions)
-- local spellGroup = vim.api.nvim_create_augroup("SpellGroup", defaultGroupOptions)
-- Add any additional autocmds here local createCmd = vim.api.nvim_create_autocmd
-- with `vim.api.nvim_create_autocmd`
-- -- Spell check
-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults) createCmd("BufEnter", {
-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell") pattern = { "*.md", "*.markdown", "*.txt", "*.tex" },
group = spellGroup,
callback = function(_)
vim.cmd.setlocal("textwidth=80")
vim.cmd.setlocal("spell spelllang=en_us")
end,
})
-- Markdown
createCmd("BufWritePost", {
pattern = { "*.md", "*.markdown" },
group = markdownGroup,
callback = function(_)
local cursor = vim.fn.getpos(".")
vim.cmd("FormatWrite")
vim.fn.setpos(".", cursor)
end,
})
-- Go
createCmd("BufWritePre", {
pattern = "*.go",
callback = function()
require("go.format").goimport()
end,
group = vim.api.nvim_create_augroup("GoFormat", defaultGroupOptions),
})
vim.api.nvim_exec2(
[[
autocmd BufNewFile,BufRead /private/**/gopass** setlocal noswapfile nobackup noundofile shada=""
]],
{}
)
-- Highlight when yanking.
createCmd("TextYankPost", {
desc = "Highlight when yanking text.",
group = vim.api.nvim_create_augroup("highlight-yank", { clear = true }),
callback = function()
vim.highlight.on_yank()
end,
})

View File

@@ -8,41 +8,41 @@ local fn = vim.fn
vim.cmd.set("inccommand=split") vim.cmd.set("inccommand=split")
o.filetype = "on" o.filetype = "on"
o.updatetime = 500 -- faster completion o.updatetime = 500 -- faster completion
o.timeoutlen = 800 -- time to wait for a mapped sequence to complete (in milliseconds) o.timeoutlen = 800 -- time to wait for a mapped sequence to complete (in milliseconds)
o.ttimeoutlen = 300 -- Time in milliseconds to wait for a key code sequence to complete o.ttimeoutlen = 300 -- Time in milliseconds to wait for a key code sequence to complete
o.backup = false -- creates a backup file o.backup = false -- creates a backup file
o.swapfile = false -- enable/disable swap file creation o.swapfile = false -- enable/disable swap file creation
o.dir = fn.stdpath("data") .. "/swp" -- swap file directory o.dir = fn.stdpath("data") .. "/swp" -- swap file directory
o.undofile = false -- enable/disable undo file creation o.undofile = false -- enable/disable undo file creation
o.undodir = fn.stdpath("data") .. "/undodir" -- set undo directory o.undodir = fn.stdpath("data") .. "/undodir" -- set undo directory
o.history = 500 -- Use the 'history' option to set the number of lines from command mode that are remembered. o.history = 500 -- Use the 'history' option to set the number of lines from command mode that are remembered.
o.hidden = true -- required to keep multiple buffers and open multiple buffers o.hidden = true -- required to keep multiple buffers and open multiple buffers
o.clipboard = "unnamedplus" -- allows neovim to access the system clipboard o.clipboard = "unnamedplus" -- allows neovim to access the system clipboard
o.fileencoding = "utf-8" -- the encoding written to a file o.fileencoding = "utf-8" -- the encoding written to a file
o.conceallevel = 0 -- so that `` is visible in markdown files o.conceallevel = 0 -- so that `` is visible in markdown files
o.number = true -- set numbered lines o.number = true -- set numbered lines
o.relativenumber = true -- set relative numbered lines o.relativenumber = true -- set relative numbered lines
o.cmdheight = 1 -- space for displaying messages/commands o.cmdheight = 1 -- space for displaying messages/commands
o.showmode = false -- we don't need to see things like -- INSERT -- anymore o.showmode = false -- we don't need to see things like -- INSERT -- anymore
o.showtabline = 2 -- always show tabs o.showtabline = 2 -- always show tabs
o.laststatus = 2 -- The value of this option influences when the last window will have a status line (2 always) o.laststatus = 2 -- The value of this option influences when the last window will have a status line (2 always)
o.smartcase = true -- smart case o.smartcase = true -- smart case
o.smartindent = true -- make indenting smarter again o.smartindent = true -- make indenting smarter again
o.splitbelow = true -- force all horizontal splits to go below current window o.splitbelow = true -- force all horizontal splits to go below current window
o.splitright = true -- force all vertical splits to go to the right of current window o.splitright = true -- force all vertical splits to go to the right of current window
o.autoindent = true -- turn on auto indent. o.autoindent = true -- turn on auto indent.
o.expandtab = true -- convert tabs to spaces o.expandtab = true -- convert tabs to spaces
o.smarttab = true -- turn on smart tab o.smarttab = true -- turn on smart tab
o.shiftwidth = 2 -- the number of spaces inserted for each indentation o.shiftwidth = 2 -- the number of spaces inserted for each indentation
o.tabstop = 2 -- how many columns a tab counts for o.tabstop = 2 -- how many columns a tab counts for
o.termguicolors = true -- set term gui colors (most terminals support this) o.termguicolors = true -- set term gui colors (most terminals support this)
o.cursorline = true -- highlight the current line o.cursorline = true -- highlight the current line
o.scrolloff = 8 -- Minimal number of screen lines to keep above and below the cursor o.scrolloff = 20 -- Minimal number of screen lines to keep above and below the cursor
o.sidescrolloff = 5 -- The minimal number of columns to scroll horizontally o.sidescrolloff = 5 -- The minimal number of columns to scroll horizontally
o.hlsearch = false -- highlight all matches on previous search pattern o.hlsearch = false -- highlight all matches on previous search pattern
o.ignorecase = true -- ignore case in search patterns o.ignorecase = true -- ignore case in search patterns
o.foldenable = false -- disable folding; enable with zi o.foldenable = false -- disable folding; enable with zi
o.foldmethod = "expr" o.foldmethod = "expr"
o.foldexpr = "nvim_treesitter#foldexpr()" o.foldexpr = "nvim_treesitter#foldexpr()"
vim.cmd.set("nolist") -- don't show listchars. vim.cmd.set("nolist") -- don't show listchars.
@@ -51,10 +51,10 @@ o.listchars = "eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣"
o.shortmess = o.shortmess + "c" -- prevent "pattern not found" messages o.shortmess = o.shortmess + "c" -- prevent "pattern not found" messages
wo.colorcolumn = "99999" wo.colorcolumn = "99999"
o.wildmode = "full" o.wildmode = "full"
o.lazyredraw = false -- do not redraw screen while running macros o.lazyredraw = false -- do not redraw screen while running macros
o.grepprg = "rg --hidden --vimgrep --smart-case --" o.grepprg = "rg --hidden --vimgrep --smart-case --"
o.completeopt = { "menu", "menuone", "noselect", "noinsert" } -- A comma separated list of options for Insert mode completion o.completeopt = { "menu", "menuone", "noselect", "noinsert" } -- A comma separated list of options for Insert mode completion
o.wildignorecase = true -- When set case is ignored when completing file names and directories o.wildignorecase = true -- When set case is ignored when completing file names and directories
o.wildignore = [[ o.wildignore = [[
.git,.hg,.svn .git,.hg,.svn
*.aux,*.out,*.toc *.aux,*.out,*.toc

View File

@@ -1,197 +0,0 @@
-- since this is just an example spec, don't actually load anything here and return an empty spec
-- stylua: ignore
if true then return {} end
-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
--
-- In your plugin files, you can:
-- * add extra plugins
-- * disable/enabled LazyVim plugins
-- * override the configuration of LazyVim plugins
return {
-- add gruvbox
{ "ellisonleao/gruvbox.nvim" },
-- Configure LazyVim to load gruvbox
{
"LazyVim/LazyVim",
opts = {
colorscheme = "gruvbox",
},
},
-- change trouble config
{
"folke/trouble.nvim",
-- opts will be merged with the parent spec
opts = { use_diagnostic_signs = true },
},
-- disable trouble
{ "folke/trouble.nvim", enabled = false },
-- override nvim-cmp and add cmp-emoji
{
"hrsh7th/nvim-cmp",
dependencies = { "hrsh7th/cmp-emoji" },
---@param opts cmp.ConfigSchema
opts = function(_, opts)
table.insert(opts.sources, { name = "emoji" })
end,
},
-- change some telescope options and a keymap to browse plugin files
{
"nvim-telescope/telescope.nvim",
keys = {
-- add a keymap to browse plugin files
-- stylua: ignore
{
"<leader>fp",
function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
desc = "Find Plugin File",
},
},
-- change some options
opts = {
defaults = {
layout_strategy = "horizontal",
layout_config = { prompt_position = "top" },
sorting_strategy = "ascending",
winblend = 0,
},
},
},
-- add pyright to lspconfig
{
"neovim/nvim-lspconfig",
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
-- pyright will be automatically installed with mason and loaded with lspconfig
pyright = {},
},
},
},
-- add tsserver and setup with typescript.nvim instead of lspconfig
{
"neovim/nvim-lspconfig",
dependencies = {
"jose-elias-alvarez/typescript.nvim",
init = function()
require("lazyvim.util").lsp.on_attach(function(_, buffer)
-- stylua: ignore
vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
end)
end,
},
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
-- tsserver will be automatically installed with mason and loaded with lspconfig
tsserver = {},
},
-- you can do any additional lsp server setup here
-- return true if you don't want this server to be setup with lspconfig
---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
setup = {
-- example to setup with typescript.nvim
tsserver = function(_, opts)
require("typescript").setup({ server = opts })
return true
end,
-- Specify * to use this function as a fallback for any server
-- ["*"] = function(server, opts) end,
},
},
},
-- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
-- treesitter, mason and typescript.nvim. So instead of the above, you can use:
{ import = "lazyvim.plugins.extras.lang.typescript" },
-- add more treesitter parsers
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"bash",
"html",
"javascript",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"query",
"regex",
"tsx",
"typescript",
"vim",
"yaml",
},
},
},
-- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
-- would overwrite `ensure_installed` with the new value.
-- If you'd rather extend the default config, use the code below instead:
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
-- add tsx and treesitter
vim.list_extend(opts.ensure_installed, {
"tsx",
"typescript",
})
end,
},
-- the opts function can also be used to change the default opts:
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function(_, opts)
table.insert(opts.sections.lualine_x, {
function()
return "😄"
end,
})
end,
},
-- or you can return new options to override all the defaults
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function()
return {
--[[add your custom lualine config here]]
}
end,
},
-- use mini.starter instead of alpha
{ import = "lazyvim.plugins.extras.ui.mini-starter" },
-- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
{ import = "lazyvim.plugins.extras.lang.json" },
-- add any tools you want to have installed below
{
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"stylua",
"shellcheck",
"shfmt",
"flake8",
},
},
},
}

View File

@@ -0,0 +1,23 @@
return {
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
lua = { "stulua" },
markdown = {
"prettier",
prepend_args = {
"--print-width",
"100",
"--prose-wrap",
"always",
"--parser",
"markdown",
},
},
swift = { "swiftformat" },
-- ["*"] = {
-- require("formatter.filetypes.any").remove_trailing_whitespace,
-- },
},
},
}

View File

@@ -7,6 +7,7 @@ return {
{ import = "lazyvim.plugins.extras.lang.json" }, { import = "lazyvim.plugins.extras.lang.json" },
{ import = "lazyvim.plugins.extras.lang.markdown" }, { import = "lazyvim.plugins.extras.lang.markdown" },
{ import = "lazyvim.plugins.extras.lang.yaml" }, { import = "lazyvim.plugins.extras.lang.yaml" },
{ import = "lazyvim.plugins.extras.coding.luasnip" },
{ {
import = "lazyvim.plugins.extras.editor.mini-files", import = "lazyvim.plugins.extras.editor.mini-files",
opts = { opts = {

View File

@@ -1,100 +1,147 @@
-- The language servers to setup.
local lsp_servers = {
"bashls",
"clangd",
"dockerls",
"gopls",
"jsonls",
"lua_ls",
"marksman",
"sourcekit",
"yamlls",
}
return { return {
"neovim/nvim-lspconfig", {
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"hrsh7th/cmp-nvim-lsp",
{ "antosha417/nvim-lsp-file-operations", config = true },
"williamboman/mason.nvim", "williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim", dependencies = {
{ "neovim/nvim-lspconfig",
"folke/lazydev.nvim", },
ft = "lua", opts = {
opts = { ensure_installed = {
library = { "clangd",
{ path = "${3rd}/luv/library", words = { "vim%.uv" } }, "marksman",
}, "shfmt",
}, },
}, },
}, },
config = function() {
require("mason").setup() "nvim-treesitter/nvim-treesitter",
require("mason-lspconfig").setup({ opts = {
opts = { ensure_installed = {
ensure_installed = lsp_servers, "bash",
"cmake",
"dockerfile",
"editorconfig",
"ini",
"json",
"jq",
"latex",
"make",
"swift",
}, },
}) },
local lspconfig = require("lspconfig") },
local cmp_nvim_lsp = require("cmp_nvim_lsp") {
local capabilities = cmp_nvim_lsp.default_capabilities() "neovim/nvim-lspconfig",
local opts = { noremap = true, silent = true } event = { "BufReadPre", "BufNewFile" },
local on_attach = function(_, bufnr) opts = {
opts.buffer = bufnr servers = {
bashls = {},
opts.desc = "Show line diagnostics" clangd = {},
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts) dockerls = {},
gopls = {},
opts.desc = "Show diagnostics in Telescope" jsonls = {},
vim.keymap.set("n", "<leader><leader>d", "<CMD>Telescope diagnostics bufnr=0<CR>", opts) lua_ls = {},
marksman = {},
opts.desc = "Show documentation for what is under cursor" sourcekit = {},
vim.keymap.set("n", "<C-k>", vim.lsp.buf.hover, opts) yamlls = {},
},
opts.desc = "[G]oto [D]efinition" setup = {
vim.keymap.set("n", "gd", "<cmd>Telescope lsp_definitions trim_text=true<cr>", opts) clangd = function(_, opts)
opts.capabilities.offsetEncoding = { "utf-16" }
opts.desc = "[G]oto [D]eclaration"
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
opts.desc = "LSP [C]ode [A]ction"
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
--opts.desc = "[R]e-[N]ame"
--vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
opts.desc = "[R]eload or start LSP"
vim.keymap.set("n", "<leader>rl", ":LspRestart | :LspStart<CR>", opts)
opts.desc = "Goto previous diagnostic"
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
opts.desc = "Goto next diagnostic"
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
end
for _, lsp in ipairs(lsp_servers) do
lspconfig[lsp].setup({
capabilities = capabilities,
on_attach = on_attach,
on_init = function(client)
-- HACK: to fix some issues with LSP
-- more details: https://github.com/neovim/neovim/issues/19237#issuecomment-2237037154
client.offset_encoding = "utf-8"
end, end,
cmd = lsp == "sourcekit" and { vim.trim(vim.fn.system("xcrun -f sourcekit-lsp")) } or nil, sourcekit = function(_, opts)
}) opts.cmd = {
end vim.trim(vim.fn.system("xcrun -f sourcekit-lsp")) or nil
}
-- nice icons end
local signs = { Error = "", Warn = "", Hint = "󰠠 ", Info = "" } },
for type, icon in pairs(signs) do },
local hl = "DiagnosticSign" .. type },
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
end
-- For some reason I was having trouble getting this to work inside the on-attach, so it's here.
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { desc = "[R]e-[N]ame" })
end,
} }
-- return {
-- "neovim/nvim-lspconfig",
-- event = { "BufReadPre", "BufNewFile" },
-- dependencies = {
-- "hrsh7th/cmp-nvim-lsp",
-- { "antosha417/nvim-lsp-file-operations", config = true },
-- "williamboman/mason.nvim",
-- "williamboman/mason-lspconfig.nvim",
-- {
-- "folke/lazydev.nvim",
-- ft = "lua",
-- opts = {
-- library = {
-- { path = "${3rd}/luv/library", words = { "vim%.uv" } },
-- },
-- },
-- },
-- },
-- config = function()
-- require("mason").setup()
-- require("mason-lspconfig").setup({
-- opts = {
-- ensure_installed = lsp_servers,
-- },
-- })
-- local lspconfig = require("lspconfig")
-- local cmp_nvim_lsp = require("cmp_nvim_lsp")
-- local capabilities = cmp_nvim_lsp.default_capabilities()
-- local opts = { noremap = true, silent = true }
-- local on_attach = function(_, bufnr)
-- opts.buffer = bufnr
--
-- opts.desc = "Show line diagnostics"
-- vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts)
--
-- opts.desc = "Show diagnostics in Telescope"
-- vim.keymap.set("n", "<leader><leader>d", "<CMD>Telescope diagnostics bufnr=0<CR>", opts)
--
-- opts.desc = "Show documentation for what is under cursor"
-- vim.keymap.set("n", "<C-k>", vim.lsp.buf.hover, opts)
--
-- opts.desc = "[G]oto [D]efinition"
-- vim.keymap.set("n", "gd", "<cmd>Telescope lsp_definitions trim_text=true<cr>", opts)
--
-- opts.desc = "[G]oto [D]eclaration"
-- vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
--
-- opts.desc = "LSP [C]ode [A]ction"
-- vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
--
-- --opts.desc = "[R]e-[N]ame"
-- --vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
--
-- opts.desc = "[R]eload or start LSP"
-- vim.keymap.set("n", "<leader>rl", ":LspRestart | :LspStart<CR>", opts)
--
-- opts.desc = "Goto previous diagnostic"
-- vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
--
-- opts.desc = "Goto next diagnostic"
-- vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
-- end
--
-- for _, lsp in ipairs(lsp_servers) do
-- lspconfig[lsp].setup({
-- capabilities = capabilities,
-- on_attach = on_attach,
-- on_init = function(client)
-- -- HACK: to fix some issues with LSP
-- -- more details: https://github.com/neovim/neovim/issues/19237#issuecomment-2237037154
-- client.offset_encoding = "utf-8"
-- end,
-- cmd = lsp == "sourcekit" and { vim.trim(vim.fn.system("xcrun -f sourcekit-lsp")) } or nil,
-- })
-- end
--
-- -- nice icons
-- local signs = { Error = " ", Warn = " ", Hint = "󰠠 ", Info = " " }
-- for type, icon in pairs(signs) do
-- local hl = "DiagnosticSign" .. type
-- vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
-- end
--
-- -- For some reason I was having trouble getting this to work inside the on-attach, so it's here.
-- vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { desc = "[R]e-[N]ame" })
-- end,
-- }

View File

@@ -0,0 +1,39 @@
return {
{
"L3MON4D3/LuaSnip",
opts = function()
LazyVim.cmp.actions.snippet_forward = function()
if require("luasnip").jumpable(1) then
require("luasnip").jump(1)
return true
end
end
LazyVim.cmp.actions.snippet_stop = function()
if require("luasnip").expand_or_jumpable() then -- or just jumpable(1) is fine?
require("luasnip").unlink_current()
return true
end
end
end,
keys = {
{
"<C-k>",
mode = { "i", "s" },
function()
if ls.expand_or_jumpable() then
ls.expand_or_jump()
end
end
},
{
"<C-j>",
mode = { "i", "s" },
function()
if ls.jumpable(-1) then
ls.jump(-1)
end
end
},
},
},
}

View File

@@ -0,0 +1,36 @@
return {
"stevearc/oil.nvim",
event = "VeryLazy",
dependencies = {
"nvim-tree/nvim-web-devicons",
},
opts = {
columns = { "icon" },
keymaps = {
["<C-h>"] = false,
["<M-h>"] = "actions.select_split",
["<C-v>"] = {
"actions.select",
opts = { vertical = true },
desc = "Open the entry in a vertical split",
},
view_options = {
is_hidden_file = function(name, _) -- second arg is bufnr, but not currently used.
-- Don't show .DS_Store in output.
local is_ds_store = name ~= ".DS_Store"
return not is_ds_store
end,
},
}
},
keys = {
-- Show the parent directory in current window.
{ "-", "<CMD>Oil<CR>", desc = "Open parent directory." },
-- Open parent directory in floating window.
{
"<space>-",
function() require("oil").toggle_float() end,
desc = "Open parent directory in floating window."
},
},
}

View File

@@ -2,6 +2,7 @@ local progress_handle
return { return {
"wojciech-kulik/xcodebuild.nvim", "wojciech-kulik/xcodebuild.nvim",
event = "VeryLazy",
dependencies = { dependencies = {
"nvim-telescope/telescope.nvim", "nvim-telescope/telescope.nvim",
"MunifTanjim/nui.nvim", "MunifTanjim/nui.nvim",
@@ -50,23 +51,23 @@ return {
}, },
}, },
keys = { keys = {
{ "<leader>X", "<cmd>XcodebuildPicker<cr>", desc = "Show Xcodebuild Actions" }, { "<leader>X", "<cmd>XcodebuildPicker<cr>", desc = "Show Xcodebuild Actions" },
{ "<leader>xf", "<cmd>XcodebuildProjectManager<cr>", desc = "Show Project Manager Actions" }, { "<leader>xf", "<cmd>XcodebuildProjectManager<cr>", desc = "Show Project Manager Actions" },
{ "<leader>xb", "<cmd>XcodebuildBuild<cr>", desc = "Build Project" }, { "<leader>xb", "<cmd>XcodebuildBuild<cr>", desc = "Build Project" },
{ "<leader>xB", "<cmd>XcodebuildBuildForTesting<cr>", desc = "Build For Testing" }, { "<leader>xB", "<cmd>XcodebuildBuildForTesting<cr>", desc = "Build For Testing" },
{ "<leader>xr", "<cmd>XcodebuildBuildRun<cr>", desc = "Build & Run Project" }, { "<leader>xr", "<cmd>XcodebuildBuildRun<cr>", desc = "Build & Run Project" },
{ "<leader>xt", "<cmd>XcodebuildTest<cr>", desc = "Run Tests" }, { "<leader>xt", "<cmd>XcodebuildTest<cr>", desc = "Run Tests" },
{ "<leader>xt", "<cmd>XcodebuildTestSelected<cr>", desc = "Run Selected Tests" }, { "<leader>xt", "<cmd>XcodebuildTestSelected<cr>", desc = "Run Selected Tests" },
{ "<leader>xT", "<cmd>XcodebuildTestClass<cr>", desc = "Run This Test Class" }, { "<leader>xT", "<cmd>XcodebuildTestClass<cr>", desc = "Run This Test Class" },
{ "<leader>xl", "<cmd>XcodebuildToggleLogs<cr>", desc = "Toggle Xcodebuild Logs" }, { "<leader>xl", "<cmd>XcodebuildToggleLogs<cr>", desc = "Toggle Xcodebuild Logs" },
{ "<leader>xc", "<cmd>XcodebuildToggleCodeCoverage<cr>", desc = "Toggle Code Coverage" }, { "<leader>xc", "<cmd>XcodebuildToggleCodeCoverage<cr>", desc = "Toggle Code Coverage" },
{ "<leader>xC", "<cmd>XcodebuildShowCodeCoverageReport<cr>", desc = "Show Code Coverage Report" }, { "<leader>xC", "<cmd>XcodebuildShowCodeCoverageReport<cr>", desc = "Show Code Coverage Report" },
{ "<leader>xe", "<cmd>XcodebuildTestExplorerToggle<cr>", desc = "Toggle Test Explorer" }, { "<leader>xe", "<cmd>XcodebuildTestExplorerToggle<cr>", desc = "Toggle Test Explorer" },
{ "<leader>xs", "<cmd>XcodebuildFailingSnapshots<cr>", desc = "Show Failing Snapshots" }, { "<leader>xs", "<cmd>XcodebuildFailingSnapshots<cr>", desc = "Show Failing Snapshots" },
{ "<leader>xd", "<cmd>XcodebuildSelectDevice<cr>", desc = "Select Device" }, { "<leader>xd", "<cmd>XcodebuildSelectDevice<cr>", desc = "Select Device" },
{ "<leader>xp", "<cmd>XcodebuildSelectTestPlan<cr>", desc = "Select Test Plan" }, { "<leader>xp", "<cmd>XcodebuildSelectTestPlan<cr>", desc = "Select Test Plan" },
{ "<leader>xq", "<cmd>Telescope quickfix<cr", desc = "Show QuickFix List" }, { "<leader>xq", "<cmd>Telescope quickfix<cr", desc = "Show QuickFix List" },
{ "<leader>xx", "<cmd>XcodebuildQuickfixLine<cr>", desc = "Quickfix Line" }, { "<leader>xx", "<cmd>XcodebuildQuickfixLine<cr>", desc = "Quickfix Line" },
{ "<leader>xa", "<cmd>XcodebuildCodeActions<cr>", desc = "Show Code Actions" }, { "<leader>xa", "<cmd>XcodebuildCodeActions<cr>", desc = "Show Code Actions" },
}, },
} }

View File

@@ -0,0 +1,16 @@
MeasureQuick
Housh
sealtite
Subcool
OEM
NEC
AHJ
CFM
Hydronic
subpar
quo
IAQ
wc
HVAC
dehumidification
ansible

Binary file not shown.

View File

@@ -1,57 +1,58 @@
return { return {
{ {
"saghen/blink.cmp", "saghen/blink.cmp",
dependencies = { enabeld = false,
"rafamadriz/friendly-snippets", dependencies = {
--"L3MON4D3/LuaSnip", "rafamadriz/friendly-snippets",
}, --"L3MON4D3/LuaSnip",
version = "v0.*", },
opts = { version = "v0.*",
appearance = { opts = {
use_nvim_cmp_as_default = true, appearance = {
nerd_font_variant = "mono", use_nvim_cmp_as_default = true,
}, nerd_font_variant = "mono",
signature = { enabled = true }, },
keymap = { signature = { enabled = true },
preset = "default", keymap = {
["<CR>"] = { "accept", "fallback" }, preset = "default",
["<C-space>"] = { ["<CR>"] = { "accept", "fallback" },
function(cmp) ["<C-space>"] = {
cmp.show({ providers = { "snippets" } }) function(cmp)
end, cmp.show({ providers = { "snippets" } })
}, end,
--["<C-k>"] = { "select_prev", "fallback" }, },
--["<C-j>"] = { "select_next", "fallback" }, --["<C-k>"] = { "select_prev", "fallback" },
["<C-n>"] = { --["<C-j>"] = { "select_next", "fallback" },
function(cmp) ["<C-n>"] = {
if cmp.snippet_active() then function(cmp)
return cmp.accept() if cmp.snippet_active() then
else return cmp.accept()
return cmp.select_and_accept() else
end return cmp.select_and_accept()
end, end
"snippet_forward", end,
"fallback", "snippet_forward",
}, "fallback",
}, },
-- snippets = { },
-- expand = function(snippet) -- snippets = {
-- require("luasnip").lsp_expand(snippet) -- expand = function(snippet)
-- end, -- require("luasnip").lsp_expand(snippet)
-- active = function(filter) -- end,
-- if filter and filter.direction then -- active = function(filter)
-- return require("luasnip").jumpable(filter.direction) -- if filter and filter.direction then
-- end -- return require("luasnip").jumpable(filter.direction)
-- return require("luasnip").in_snippet() -- end
-- end, -- return require("luasnip").in_snippet()
-- jump = function(direction) -- end,
-- require("luasnip").jump(direction) -- jump = function(direction)
-- end, -- require("luasnip").jump(direction)
-- }, -- end,
sources = { -- },
default = { "lsp", "path", "snippets", "buffer" }, sources = {
}, default = { "lsp", "path", "snippets", "buffer" },
}, },
opts_extend = { "sources.default" }, },
}, opts_extend = { "sources.default" },
},
} }

View File

@@ -1,7 +1,7 @@
return { return {
"hrsh7th/nvim-cmp", "hrsh7th/nvim-cmp",
enabled = false, enabled = true,
event = "InsertEnter", event = "VeryLazy",
dependencies = { dependencies = {
"hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer", -- source for text in buffer "hrsh7th/cmp-buffer", -- source for text in buffer

View File

@@ -1,5 +1,6 @@
return { return {
"ray-x/go.nvim", "ray-x/go.nvim",
enabled = false,
lazy = true, lazy = true,
dependencies = { -- optional packages dependencies = { -- optional packages
"ray-x/guihua.lua", "ray-x/guihua.lua",

View File

@@ -1,85 +1,86 @@
return { return {
"ThePrimeagen/harpoon", "ThePrimeagen/harpoon",
branch = "harpoon2", branch = "harpoon2",
dependencies = { event = "VeryLazy",
"nvim-lua/plenary.nvim", dependencies = {
}, "nvim-lua/plenary.nvim",
config = function() },
local harpoon = require("harpoon") config = function()
harpoon:setup({ local harpoon = require("harpoon")
settings = { harpoon:setup({
save_on_toggle = true, settings = {
sync_on_ui_close = true, save_on_toggle = true,
key = function() sync_on_ui_close = true,
return vim.loop.cwd() key = function()
end, return vim.loop.cwd()
}, end,
}) },
})
local conf = require("telescope.config").values local conf = require("telescope.config").values
local function toggle_telescope(harpoon_files) local function toggle_telescope(harpoon_files)
local file_paths = {} local file_paths = {}
for _, item in ipairs(harpoon_files.items) do for _, item in ipairs(harpoon_files.items) do
table.insert(file_paths, item.value) table.insert(file_paths, item.value)
end end
require("telescope.pickers") require("telescope.pickers")
.new({}, { .new({}, {
prompt_title = "Harpoon", prompt_title = "Harpoon",
finder = require("telescope.finders").new_table({ finder = require("telescope.finders").new_table({
results = file_paths, results = file_paths,
}), }),
previewer = conf.file_previewer({}), previewer = conf.file_previewer({}),
sorter = conf.generic_sorter({}), sorter = conf.generic_sorter({}),
}) })
:find() :find()
end end
-- Keymaps -- Keymaps
vim.keymap.set("n", "<C-e>", function() vim.keymap.set("n", "<C-e>", function()
toggle_telescope(harpoon:list()) toggle_telescope(harpoon:list())
end, { desc = "Open Harpoon window" }) end, { desc = "Open Harpoon window" })
vim.keymap.set("n", "<leader>a", function() vim.keymap.set("n", "<leader>a", function()
harpoon:list():add() harpoon:list():add()
end, { desc = "[A]dd to harpoon list." }) end, { desc = "[A]dd to harpoon list." })
vim.keymap.set("n", "<C-e>", function() vim.keymap.set("n", "<C-e>", function()
harpoon.ui:toggle_quick_menu(harpoon:list()) harpoon.ui:toggle_quick_menu(harpoon:list())
end, { desc = "Toggle quick menu." }) end, { desc = "Toggle quick menu." })
-- Buffer key maps. Currently keeping all buffer movements -- Buffer key maps. Currently keeping all buffer movements
-- isolated to top left row of keys on keyboard and all begin -- isolated to top left row of keys on keyboard and all begin
-- with the <Control> key. -- with the <Control> key.
-- Select buffer numbers. -- Select buffer numbers.
vim.keymap.set("n", "<A-y>", function() vim.keymap.set("n", "<A-y>", function()
harpoon:list():select(1) harpoon:list():select(1)
end, { desc = "Select first harpoon buffer." }) end, { desc = "Select first harpoon buffer." })
vim.keymap.set("n", "<A-u>", function() vim.keymap.set("n", "<A-u>", function()
harpoon:list():select(2) harpoon:list():select(2)
end, { desc = "Select second harpoon buffer." }) end, { desc = "Select second harpoon buffer." })
vim.keymap.set("n", "<A-i>", function() vim.keymap.set("n", "<A-i>", function()
harpoon:list():select(3) harpoon:list():select(3)
end, { desc = "Select third harpoon buffer." }) end, { desc = "Select third harpoon buffer." })
vim.keymap.set("n", "<A-o>", function() vim.keymap.set("n", "<A-o>", function()
harpoon:list():select(4) harpoon:list():select(4)
end, { desc = "Select fourth harpoon buffer." }) end, { desc = "Select fourth harpoon buffer." })
-- Toggle previous and next buffers. -- Toggle previous and next buffers.
vim.keymap.set("n", "<C-[>", function() vim.keymap.set("n", "<C-[>", function()
harpoon:list():prev() harpoon:list():prev()
end, { desc = "[P]revious harpoon buffer." }) end, { desc = "[P]revious harpoon buffer." })
vim.keymap.set("n", "<C-]>", function() vim.keymap.set("n", "<C-]>", function()
harpoon:list():next() harpoon:list():next()
end, { desc = "[N]ext harpoon buffer." }) end, { desc = "[N]ext harpoon buffer." })
-- Extensions -- Extensions
harpoon:extend({ harpoon:extend({
UI_CREATE = function(cx) UI_CREATE = function(cx)
vim.keymap.set("n", "<C-v>", function() vim.keymap.set("n", "<C-v>", function()
harpoon.ui:select_menu_item({ vsplit = true }) harpoon.ui:select_menu_item({ vsplit = true })
end, { buffer = cx.buffer, desc = "Open in [V]split" }) end, { buffer = cx.buffer, desc = "Open in [V]split" })
end, end,
}) })
end, end,
} }

View File

@@ -1,6 +1,7 @@
return { return {
"L3MON4D3/LuaSnip", "L3MON4D3/LuaSnip",
version = "v2.*", version = "v2.*",
event = "VeryLazy",
config = function() config = function()
local ls = require("luasnip") local ls = require("luasnip")
local types = require("luasnip.util.types") local types = require("luasnip.util.types")
@@ -17,7 +18,7 @@ return {
}, },
}) })
require("luasnip.loaders.from_vscode").lazy_load() require("luasnip.loaders.from_vscode").lazy_load()
require("luasnip.loaders.from_lua").lazy_load({ paths = "~/.config/m-housh/lua/user/snippets/" }) require("luasnip.loaders.from_lua").lazy_load({ paths = vim.fn.stdpath("config") .. "/snippets" })
-- Keymaps -- Keymaps
local opts = { silent = true } local opts = { silent = true }

View File

@@ -31,6 +31,7 @@ end
return { return {
"mfussenegger/nvim-dap", "mfussenegger/nvim-dap",
--event = "VeryLazy",
dependencies = { dependencies = {
"wojciech-kulik/xcodebuild.nvim", "wojciech-kulik/xcodebuild.nvim",
}, },

View File

@@ -1,36 +1,68 @@
return { return {
"stevearc/oil.nvim", "stevearc/oil.nvim",
event = "VeryLazy",
dependencies = { dependencies = {
"nvim-tree/nvim-web-devicons", "nvim-tree/nvim-web-devicons",
}, },
config = function() opts = {
require("oil").setup({ columns = { "icon" },
columns = { "icon" }, keymaps = {
keymaps = { ["<C-h>"] = false,
["<C-h>"] = false, ["<M-h>"] = "actions.select_split",
["<M-h>"] = "actions.select_split", ["<C-v>"] = {
["<C-v>"] = { "actions.select",
"actions.select", opts = { vertical = true },
opts = { vertical = true }, desc = "Open the entry in a vertical split",
desc = "Open the entry in a vertical split",
},
}, },
view_options = { },
is_hidden_file = function(name, _) -- second arg is bufnr, but not currently used. view_options = {
-- Don't show .DS_Store in output. is_hidden_file = function(name, _) -- second arg is bufnr, but not currently used.
local is_ds_store = name ~= ".DS_Store" -- Don't show .DS_Store in output.
return not is_ds_store local is_ds_store = name ~= ".DS_Store"
end, return not is_ds_store
}, end,
}) },
},
keys = {
-- Show the parent directory in current window. -- Show the parent directory in current window.
vim.keymap.set("n", "-", "<CMD>Oil<CR>", { desc = "Open parent directory." }) { "-", "<CMD>Oil<CR>", desc = "Open directory." },
-- Open parent directory in floating window. -- Open parent directory in floating window.
vim.keymap.set("n", "<space>-", require("oil").toggle_float) {
"<leader>-",
-- Old habits die hard, map what used to toggle neo-tree to just open a float. function()
vim.keymap.set("n", "<C-n>", require("oil").toggle_float) require("oil").toggle_float()
end, end,
desc = "Open directory in float.",
},
},
-- config = function()
-- require("oil").setup({
-- columns = { "icon" },
-- keymaps = {
-- ["<C-h>"] = false,
-- ["<M-h>"] = "actions.select_split",
-- ["<C-v>"] = {
-- "actions.select",
-- opts = { vertical = true },
-- desc = "Open the entry in a vertical split",
-- },
-- },
-- view_options = {
-- is_hidden_file = function(name, _) -- second arg is bufnr, but not currently used.
-- -- Don't show .DS_Store in output.
-- local is_ds_store = name ~= ".DS_Store"
-- return not is_ds_store
-- end,
-- },
-- })
--
-- -- Show the parent directory in current window.
-- vim.keymap.set("n", "-", "<CMD>Oil<CR>", { desc = "Open parent directory." })
--
-- -- Open parent directory in floating window.
-- vim.keymap.set("n", "<space>-", require("oil").toggle_float)
--
-- -- Old habits die hard, map what used to toggle neo-tree to just open a float.
-- vim.keymap.set("n", "<C-n>", require("oil").toggle_float)
-- end,
} }

View File

@@ -1,56 +1,57 @@
local progress_handle local progress_handle
return { return {
"wojciech-kulik/xcodebuild.nvim", "wojciech-kulik/xcodebuild.nvim",
--branch = "fix/issue-249", event = "VeryLazy",
dependencies = { --branch = "fix/issue-249",
"nvim-telescope/telescope.nvim", dependencies = {
"MunifTanjim/nui.nvim", "nvim-telescope/telescope.nvim",
}, "MunifTanjim/nui.nvim",
config = function() },
require("xcodebuild").setup({ config = function()
show_build_progress_bar = false, require("xcodebuild").setup({
logs = { show_build_progress_bar = false,
auto_open_on_success_tests = false, logs = {
auto_open_on_failed_tests = false, auto_open_on_success_tests = false,
auto_open_on_success_build = false, auto_open_on_failed_tests = false,
auto_open_on_failed_build = false, auto_open_on_success_build = false,
auto_focus = false, auto_open_on_failed_build = false,
auto_close_on_app_launch = true, auto_focus = false,
only_summary = true, auto_close_on_app_launch = true,
notify = function(message, severity) only_summary = true,
local fidget = require("fidget") notify = function(message, severity)
if progress_handle then local fidget = require("fidget")
progress_handle.message = message if progress_handle then
if not message:find("Loading") then progress_handle.message = message
progress_handle:finish() if not message:find("Loading") then
progress_handle = nil progress_handle:finish()
if vim.trim(message) ~= "" then progress_handle = nil
fidget.notify(message, severity) if vim.trim(message) ~= "" then
end fidget.notify(message, severity)
end end
else end
fidget.notify(message, severity) else
end fidget.notify(message, severity)
end, end
notify_progress = function(message) end,
local progress = require("fidget.progress") notify_progress = function(message)
local progress = require("fidget.progress")
if progress_handle then if progress_handle then
progress_handle.title = "" progress_handle.title = ""
progress_handle.message = message progress_handle.message = message
else else
progress_handle = progress.handle.create({ progress_handle = progress.handle.create({
message = message, message = message,
lsp_client = { name = "xcodebuild.nvim" }, lsp_client = { name = "xcodebuild.nvim" },
}) })
end end
end, end,
}, },
code_coverage = { code_coverage = {
enabled = true, enabled = true,
}, },
}) })
-- stylua: ignore start -- stylua: ignore start
vim.keymap.set("n", "<leader>X", "<cmd>XcodebuildPicker<cr>", { desc = "Show Xcodebuild Actions" }) vim.keymap.set("n", "<leader>X", "<cmd>XcodebuildPicker<cr>", { desc = "Show Xcodebuild Actions" })
@@ -76,5 +77,5 @@ return {
vim.keymap.set("n", "<leader>xx", "<cmd>XcodebuildQuickfixLine<cr>", { desc = "Quickfix Line" }) vim.keymap.set("n", "<leader>xx", "<cmd>XcodebuildQuickfixLine<cr>", { desc = "Quickfix Line" })
vim.keymap.set("n", "<leader>xa", "<cmd>XcodebuildCodeActions<cr>", { desc = "Show Code Actions" }) vim.keymap.set("n", "<leader>xa", "<cmd>XcodebuildCodeActions<cr>", { desc = "Show Code Actions" })
end, end,
} }

View File

@@ -28,21 +28,12 @@ require("lazy").setup({
"christoomey/vim-tmux-navigator", "christoomey/vim-tmux-navigator",
lazy = false, lazy = false,
}, },
-- {
-- "NMAC427/guess-indent.nvim",
-- opts = { }
-- },
{ "NoahTheDuke/vim-just", ft = { "just" } }, { "NoahTheDuke/vim-just", ft = { "just" } },
{ {
"chipsenkbeil/distant.nvim", "chipsenkbeil/distant.nvim",
branch = "v0.3", version = "v0.*",
config = function() event = "VeryLazy",
require("distant"):setup()
end,
}, },
-- LSP, formatting, etc. --
--{ "folke/neodev.nvim", opts = {} },
}, { }, {
checker = { checker = {
enabled = true, enabled = true,

View File

@@ -0,0 +1,17 @@
-- Setup snippets here.
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local ms = ls.multi_snippet
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local t = ls.text_node
ls.add_snippets("lua", {
s("hello", {
t('print("hello '),
i(1),
t(' world")'),
}),
})

View File

@@ -0,0 +1,34 @@
-- Setup snippets here.
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local ms = ls.multi_snippet
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local t = ls.text_node
ls.add_snippets("lua", {
-- Setup a new snippet file.
s("sf", {
t({
"-- Setup snippets.",
'local ls = require("luasnip")',
"local s = ls.snippet",
"local sn = ls.snippet_node",
"local ms = ls.multi_snippet",
"local i = ls.insert_node",
"local f = ls.function_node",
"local c = ls.choice_node",
"local t = ls.text_node",
"-- Add snippets",
}),
t('ls.add_snippets("'),
i(1, "<file-type>"),
t({
'", {',
"\t-- Define snippets here.",
"})",
}),
}),
})

View File

@@ -0,0 +1,131 @@
-- Setup snippets.
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local ms = ls.multi_snippet
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local t = ls.text_node
local fmt = require("luasnip.extras.fmt").fmt
local rep = require("luasnip.extras").rep
-- Add snippets
ls.add_snippets("swift", {
-- Add a dependency snippet.
s({ trig = "@d", desc = "Add a dependency." }, fmt("@Dependency(\\.{}) var {}", { i(1), rep(1) })),
-- Add a dependency client.
s(
{
trig = "@dc",
desc = "Add a dependency client.",
},
fmt(
[[
public extension DependencyValues {{
var {}: {} {{
get {{ self[{}.self] }}
set {{ self[{}.self] = newValue }}
}}
}}
@DependencyClient
public struct {} {{
// Insert interface here.
{}
}}
extension {}: TestDependencyKey {{
public static let testValue: {} = Self()
}}
]],
{
i(1, "<name>"),
i(2, "<Dependency>"),
rep(2),
rep(2),
rep(2),
i(0),
rep(2),
rep(2),
}
)
),
s(
{ trig = "str", desc = "Add a struct" },
fmt(
[[
struct {}: {} {{
{}
}}
]],
{ i(1, "<Name>"), i(2, "<Protocols>"), i(0) }
)
),
-- Decorate a type or function with an @_spi(...)
s({ trig = "@_s", desc = "Add spi modifier." }, fmt("@_spi({})", { i(1, "name") })),
-- Add an @_spi(...) import ...
s(
{ trig = "@_si", desc = "Import with spi." },
fmt(
[[
@_spi({}) import {}
{}
]],
{ i(1, "name"), i(2, "module"), i(0) }
)
),
-- Document a function
-- TODO: add dynamic number of prameters.
s(
{ trig = "docf", desc = "Document a function." },
fmt(
[[
/// {}
///
/// - Parameters:
/// - {}: {}
]],
{ i(1, "A short description."), i(2, "<param>"), i(3, "Describe the parameter.") }
)
),
-- Add a parameter to a documentation string.
s(
{ trig = "param", desc = "Add a parameter to documentation" },
fmt(
[[
/// - {}: {}
]],
{ i(1, "<param>"), i(2, "<description>") }
)
),
-- Add a withDependencies
s(
{ trig = "wd", desc = "withDependencies" },
fmt(
[[
withDependencies {{
$0.{} = {}
}} operation: {{
@Dependency(\.{}) var {}
{}
}}
]],
{
i(1, "<dependency>"),
i(2, "<override>"),
rep(1),
rep(1),
i(0),
}
)
),
})