Initial Commit

This commit is contained in:
Christopher Williams
2026-01-11 20:47:39 -05:00
commit 441bad3dde
7 changed files with 528 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
vim.treesitter.start()
+342
View File
@@ -0,0 +1,342 @@
-- vim built in options
vim.g.mapleader = " "
vim.o.relativenumber = true
vim.o.number = true
vim.o.signcolumn = "yes"
vim.o.undofile = true
vim.o.tabstop = 4
vim.o.shiftwidth = 0
vim.o.expandtab = true
vim.wo[0][0].foldexpr = "v:lua.vim.treesitter.foldexpr()"
vim.wo[0][0].foldmethod = "expr"
vim.o.foldcolumn = "1"
vim.o.foldlevel = 99
vim.o.foldlevelstart = 99
vim.o.foldenable = true
-- require("vim._extui").enable({})
-- Lazy plugin manager
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable",
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
{
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
opts = {},
},
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
local ensureInstalled = {
"lua",
"python",
"javascript",
"typescript",
"java",
"go",
"rust",
"html",
"css",
"json",
"yaml",
"markdown",
"sql",
"org",
}
local alreadyInstalled = require("nvim-treesitter.config").get_installed()
local parsersToInstall = vim.iter(ensureInstalled)
:filter(function(parser)
return not vim.tbl_contains(alreadyInstalled, parser)
end)
:totable()
require("nvim-treesitter").install(parsersToInstall)
end,
},
{
"nvim-treesitter/nvim-treesitter-textobjects",
branch = "main",
},
{
"junegunn/fzf.vim",
dependencies = {
"https://github.com/junegunn/fzf",
},
keys = {
{ "<Leader><Leader>", "<Cmd>Files<CR>", desc = "Find files" },
{ "<Leader>,", "<Cmd>Buffers<CR>", desc = "Find buffers" },
{ "<Leader>/", "<Cmd>Rg<CR>", desc = "Search project" },
},
},
{
"stevearc/oil.nvim",
config = function()
require("oil").setup()
end,
keys = {
{ "-", "<Cmd>Oil<CR>", desc = "Browse files from here" },
},
},
{ "nvim-tree/nvim-web-devicons", opts = {} },
{
"NeogitOrg/neogit",
lazy = true,
dependencies = {
"nvim-lua/plenary.nvim", -- required
"sindrets/diffview.nvim", -- optional - Diff integration
},
cmd = "Neogit",
keys = {
{ "<leader>gg", "<cmd>Neogit<cr>", desc = "Show Neogit UI" },
},
},
{
"farmergreg/vim-lastplace",
event = "BufReadPost",
},
{
"windwp/nvim-autopairs",
event = "InsertEnter",
config = function()
require("nvim-autopairs").setup()
end,
},
{
"numToStr/Comment.nvim",
event = "VeryLazy",
config = function()
require("Comment").setup()
end,
},
{
"folke/flash.nvim",
event = "VeryLazy",
config = function()
require("flash").setup({
modes = {
search = {
enabled = true,
},
char = {
enabled = false,
},
},
})
end,
},
{
"folke/snacks.nvim",
priority = 1000,
lazy = false,
---@type snacks.Config
opts = {
bigfile = { enabled = true },
dashboard = { enabled = true },
explorer = { enabled = true },
indent = { enabled = true },
input = { enabled = true },
picker = { enabled = true },
notifier = { enabled = true },
quickfile = { enabled = true },
scope = { enabled = true },
scroll = {
enabled = true,
animate = {
duration = { step = 10, total = 100 },
easing = "linear",
},
},
statuscolumn = { enabled = true },
words = { enabled = true },
},
config = function(_, opts)
function floating_terminal()
require("snacks").terminal("fish", {
win = {
position = "float",
width = 0.8,
height = 0.8,
border = "rounded",
},
})
end
vim.keymap.set("n", "<leader>tf", floating_terminal, { desc = "Open floating terminal" })
vim.keymap.set("n", "<leader>\\", floating_terminal, { desc = "Open floating terminal" })
require("snacks").setup(opts)
end,
},
{
"lukas-reineke/indent-blankline.nvim",
event = { "VeryLazy" },
config = function()
require("ibl").setup()
end,
},
{
"https://github.com/nvim-lualine/lualine.nvim",
event = "VeryLazy",
config = function()
require("lualine").setup()
end,
},
{
"stevearc/conform.nvim",
opts = {},
config = function()
local conform = require("conform")
conform.setup({
formatters_by_ft = {
lua = { "stylua" },
python = {
"ruff_fix",
"ruff_format",
},
},
})
-- Command to format buffer or range
vim.api.nvim_create_user_command("Format", function(args)
local range = nil
if args.count ~= -1 then
local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1]
range = {
start = { args.line1, 0 },
["end"] = { args.line2, end_line:len() },
}
end
require("conform").format({
async = true,
lsp_fallback = true,
range = range,
})
end, { range = true, desc = "Format buffer or range with conform.nvim" })
-- Keymap for format
vim.keymap.set("n", "<leader>lf", "<cmd>Format<cr>", { desc = "Format buffer with conform.nvim" })
end,
},
{
"serhez/bento.nvim",
config = function()
require("bento").setup({
main_keymap = ",",
})
end,
},
{
"zbirenbaum/copilot.lua",
dependencies = {
"copilotlsp-nvim/copilot-lsp",
},
cmd = "Copilot",
build = ":Copilot auth",
event = "BufReadPost",
config = function()
require("copilot").setup({
suggestion = {
enabled = true,
auto_trigger = true,
keymap = {
accept = "<M-j>",
accept_line = "<M-l>",
accept_word = "<M-k>",
next = "<M-]>",
prev = "<M-[>",
dismiss = "<M-c>",
},
},
nes = {
enabled = false,
keymap = {
accept_and_goto = "<leader>p",
accept = false,
dismiss = "<Esc>",
},
},
panel = { enabled = false },
filetypes = {
lua = true,
markdown = true,
help = true,
},
})
vim.api.nvim_create_autocmd("User", {
pattern = "BlinkCmpMenuOpen",
callback = function()
vim.b.copilot_suggestion_hidden = true
end,
})
vim.api.nvim_create_autocmd("User", {
pattern = "BlinkCmpMenuClose",
callback = function()
vim.b.copilot_suggestion_hidden = false
end,
})
end,
},
{
"CopilotC-Nvim/CopilotChat.nvim",
dependencies = {
{ "nvim-lua/plenary.nvim", branch = "master" },
},
build = "make tiktoken",
opts = {
-- See Configuration section for options
},
},
{
"nvim-orgmode/orgmode",
tag = "0.7.0",
event = "VeryLazy",
ft = { "org" },
config = function()
require("orgmode").setup({
org_agenda_files = "~/org/**/*",
org_default_notes_file = "~/org/refile.org",
})
end,
},
{
"chipsenkbeil/org-roam.nvim",
tag = "0.2.0",
config = function()
require("org-roam").setup({
directory = "~/org",
})
end,
},
{
"brianhuster/live-preview.nvim",
dependencies = {
"ibhagwan/fzf-lua",
},
},
require("plugins.lsp"),
})
-- LSP
vim.diagnostic.config({ virtual_text = true })
vim.lsp.inlay_hint.enable(true)
vim.lsp.enable({
"luals",
})
vim.cmd([[colorscheme tokyonight-night]])
require("keymap")
+37
View File
@@ -0,0 +1,37 @@
{
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"CopilotChat.nvim": { "branch": "main", "commit": "21bdecb25aa72119d11d7fc08c7e0ce323f1b540" },
"bento.nvim": { "branch": "main", "commit": "d5a2edea7ea2a5353778d0996a881be699eb4402" },
"blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" },
"conform.nvim": { "branch": "master", "commit": "238f542a118984a88124fc915d5b981680418707" },
"copilot-lsp": { "branch": "main", "commit": "1b6d8273594643f51bb4c0c1d819bdb21b42159d" },
"copilot.lua": { "branch": "master", "commit": "5ace9ecd0db9a7a6c14064e4ce4ede5b800325f3" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
"fidget.nvim": { "branch": "main", "commit": "64463022a1f2ff1318ab22a2ea4125ed9313a483" },
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"fzf": { "branch": "master", "commit": "d1f037059ab57aa1c70abe124b2b72a710f4a28f" },
"fzf-lua": { "branch": "main", "commit": "e7773d0c863a31bfc8ab72dd1adbec4611a35409" },
"fzf.vim": { "branch": "master", "commit": "ddc14a6a5471147e2a38e6b32a7268282f669b0a" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
"live-preview.nvim": { "branch": "main", "commit": "4b4cd2262f7fed487f112e18ddba46dabf0cb7d2" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
"neogit": { "branch": "master", "commit": "d8bf9102692250193b855acd9025a826f1af2729" },
"nvim-autopairs": { "branch": "master", "commit": "c2a0dd0d931d0fb07665e1fedb1ea688da3b80b4" },
"nvim-lspconfig": { "branch": "master", "commit": "92ee7d42320edfbb81f3cad851314ab197fa324a" },
"nvim-treesitter": { "branch": "main", "commit": "5a7e5638e7d220575b1c22c8a2e099b52231886e" },
"nvim-treesitter-textobjects": { "branch": "main", "commit": "d0d12338230c1ce4ce27373f5b8d50a8c691794b" },
"nvim-ufo": { "branch": "main", "commit": "ab3eb124062422d276fae49e0dd63b3ad1062cfc" },
"nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" },
"oil.nvim": { "branch": "master", "commit": "d278dc40f9de9980868a0a55fa666fba5e6aeacb" },
"org-roam.nvim": { "branch": "main", "commit": "34d1d113cd139ea903125305310be3d7c1067484" },
"orgmode": { "branch": "master", "commit": "4da28a06d7a8b2563f1308c4550604f36e3c299f" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" },
"swenv.nvim": { "branch": "main", "commit": "4157de2619ec2e5c61c103fb6517845a0e04e558" },
"tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
"vim-lastplace": { "branch": "master", "commit": "e58cb0df716d3c88605ae49db5c4741db8b48aa9" }
}
+18
View File
@@ -0,0 +1,18 @@
-- luals
return {
cmd = { "lua-language-server" },
filetypes = { "lua" },
root_markers = { ".luarc.json", ".luarc.jsonc"},
telemetry = { enabled = false },
formatters = {
ignoreComments = false
},
settings = {
Lua = {
runtime = {
version = "LuaJIT",
},
signatureHelp = { enabled = true },
}
}
}
View File
+15
View File
@@ -0,0 +1,15 @@
-- Window navigation
vim.keymap.set('n', '<leader>`', '<C-^>', { noremap = true, silent = true })
vim.keymap.set('n', '<leader>wh', '<C-w>h', { noremap = true, silent = true })
vim.keymap.set('n', '<leader>wj', '<C-w>j', { noremap = true, silent = true })
vim.keymap.set('n', '<leader>wk', '<C-w>k', { noremap = true, silent = true })
vim.keymap.set('n', '<leader>wl', '<C-w>l', { noremap = true, silent = true })
-- Buffer navigation
vim.keymap.set('n', '<C-j>', '1<C-e>', { noremap = true, silent = true })
vim.keymap.set('n', '<C-k>', '1<C-y>', { noremap = true, silent = true })
-- LSP
vim.keymap.set('n', '<leader>ld', vim.diagnostic.open_float, { noremap = true, silent = true, desc = "Open diagnostics float" })
vim.keymap.set('n', '<leader>lo', vim.lsp.buf.code_action, { noremap = true, silent = true, desc = "LSP Code Action" })
vim.keymap.set('n', '<F2>', vim.lsp.buf.rename, { noremap = true, silent = true, desc = "LSP Rename" })
+115
View File
@@ -0,0 +1,115 @@
local M = {
{
"neovim/nvim-lspconfig",
config = function()
vim.lsp.enable("rust_analyzer")
vim.lsp.enable("yamlls")
vim.lsp.enable("luals")
vim.lsp.enable("sqls")
vim.lsp.enable("ty")
end,
},
{
"saghen/blink.cmp",
-- optional: provides snippets for the snippet source
dependencies = { "rafamadriz/friendly-snippets" },
-- use a release tag to download pre-built binaries
version = "1.*",
-- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust
-- build = 'cargo build --release',
-- If you use nix, you can build from source using latest nightly rust with:
-- build = 'nix run .#build-plugin',
---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
-- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
-- 'super-tab' for mappings similar to vscode (tab to accept)
-- 'enter' for enter to accept
-- 'none' for no mappings
--
-- All presets have the following mappings:
-- C-space: Open menu or open docs if already open
-- C-n/C-p or Up/Down: Select next/previous item
-- C-e: Hide menu
-- C-k: Toggle signature help (if signature.enabled = true)
--
-- See :h blink-cmp-config-keymap for defining your own keymap
keymap = {
preset = "default",
},
appearance = {
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
-- Adjusts spacing to ensure icons are aligned
nerd_font_variant = "mono",
},
-- (Default) Only show the documentation popup when manually triggered
completion = { documentation = { auto_show = false } },
sources = {
-- add lazydev to your completion providers
default = { "lazydev", "lsp", "path", "snippets", "buffer" },
providers = {
lazydev = {
name = "LazyDev",
module = "lazydev.integrations.blink",
-- make lazydev completions top priority (see `:h blink.cmp`)
score_offset = 100,
},
},
},
-- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
-- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
-- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
--
-- See the fuzzy documentation for more information
fuzzy = { implementation = "prefer_rust_with_warning" },
},
opts_extend = { "sources.default" },
},
{
"folke/lazydev.nvim",
ft = "lua",
opts = {
library = {
-- See the configuration section for more details
-- Load luvit types when the `vim.uv` word is found
{ path = "${3rd}/luv/library", words = { "vim%.uv" } },
},
},
},
{
"j-hui/fidget.nvim",
config = function()
require("fidget").setup()
end,
},
{
"kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" },
config = function()
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true,
}
local language_servers = vim.lsp.get_clients() -- or list servers manually like {'gopls', 'clangd'}
for _, ls in ipairs(language_servers) do
require("lspconfig")[ls].setup({
capabilities = capabilities,
-- you can add other fields for setting up lsp server in this table
})
end
require("ufo").setup()
end,
},
{
"AckslD/swenv.nvim",
},
}
return M