This commit is contained in:
Hunter 2025-03-14 19:25:16 -04:00
parent c3d1fb646a
commit 67d9542ca5
22 changed files with 611 additions and 221 deletions

View file

@ -1,24 +0,0 @@
-- This file needs to have same structure as nvconfig.lua
-- https://github.com/NvChad/ui/blob/v3.0/lua/nvconfig.lua
-- Please read that file to know all available options :(
---@type ChadrcConfig
local M = {}
M.base46 = {
theme = "onedark",
-- hl_override = {
-- Comment = { italic = true },
-- ["@comment"] = { italic = true },
-- },
}
-- M.nvdash = { load_on_startup = true }
-- M.ui = {
-- tabufline = {
-- lazyload = false
-- }
--}
return M

38
lua/config/lazy.lua Normal file
View file

@ -0,0 +1,38 @@
-- Bootstrap lazy.nvim
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
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = "`"
vim.g.maplocalleader = "\\"
require("config.settings").init()
-- Setup lazy.nvim
require("lazy").setup {
spec = {
-- import your plugins
{ import = "plugins" },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "habamax" } },
-- automatically check for plugin updates
checker = { enabled = true },
change_detection = { notify = false },
}

28
lua/config/settings.lua Normal file
View file

@ -0,0 +1,28 @@
local m = {}
m.init = function()
vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4
vim.opt.tabstop = 4
vim.opt.expandtab = true
vim.opt.showmode = false
vim.opt.hlsearch = false
vim.opt.incsearch = true
vim.opt.termguicolors = true
vim.opt.updatetime = 50
vim.opt.wrap = false
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.mouse = ""
vim.opt.fillchars = { eob = " " }
vim.o.clipboard = "unnamed"
end
return m

View file

@ -1,15 +0,0 @@
local options = {
formatters_by_ft = {
lua = { "stylua" },
-- css = { "prettier" },
-- html = { "prettier" },
},
-- format_on_save = {
-- -- These options will be passed to conform.format()
-- timeout_ms = 500,
-- lsp_fallback = true,
-- },
}
return options

View file

@ -1,47 +0,0 @@
return {
defaults = { lazy = true },
install = { colorscheme = { "nvchad" } },
ui = {
icons = {
ft = "",
lazy = "󰂠 ",
loaded = "",
not_loaded = "",
},
},
performance = {
rtp = {
disabled_plugins = {
"2html_plugin",
"tohtml",
"getscript",
"getscriptPlugin",
"gzip",
"logipat",
"netrw",
"netrwPlugin",
"netrwSettings",
"netrwFileHandlers",
"matchit",
"tar",
"tarPlugin",
"rrhelper",
"spellfile_plugin",
"vimball",
"vimballPlugin",
"zip",
"zipPlugin",
"tutor",
"rplugin",
"syntax",
"synmenu",
"optwin",
"compiler",
"bugreport",
"ftplugin",
},
},
},
}

View file

@ -1,24 +0,0 @@
-- load defaults i.e lua_lsp
require("nvchad.configs.lspconfig").defaults()
local lspconfig = require "lspconfig"
-- EXAMPLE
local servers = { "html", "cssls" }
local nvlsp = require "nvchad.configs.lspconfig"
-- lsps with default config
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
on_attach = nvlsp.on_attach,
on_init = nvlsp.on_init,
capabilities = nvlsp.capabilities,
}
end
-- configuring single server, example: typescript
-- lspconfig.ts_ls.setup {
-- on_attach = nvlsp.on_attach,
-- on_init = nvlsp.on_init,
-- capabilities = nvlsp.capabilities,
-- }

View file

@ -1,10 +0,0 @@
require "nvchad.mappings"
-- add yours here
local map = vim.keymap.set
map("n", ";", ":", { desc = "CMD enter command mode" })
map("i", "jk", "<ESC>")
-- map({ "n", "i", "v" }, "<C-s>", "<cmd> w <cr>")

View file

@ -1,6 +0,0 @@
require "nvchad.options"
-- add yours here!
-- local o = vim.o
-- o.cursorlineopt ='both' -- to enable cursorline!

12
lua/plugins/conform.lua Normal file
View file

@ -0,0 +1,12 @@
return {
{
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
lua = { "stylua" },
cpp = { "clang-format" },
},
format_on_save = { timeout_ms = 500, lsp_format = "fallback" },
},
},
}

View file

@ -1,25 +0,0 @@
return {
{
"stevearc/conform.nvim",
-- event = 'BufWritePre', -- uncomment for format on save
opts = require "configs.conform",
},
-- These are some examples, uncomment them if you want to see them work!
{
"neovim/nvim-lspconfig",
config = function()
require "configs.lspconfig"
end,
},
-- {
-- "nvim-treesitter/nvim-treesitter",
-- opts = {
-- ensure_installed = {
-- "vim", "lua", "vimdoc",
-- "html", "css"
-- },
-- },
-- },
}

42
lua/plugins/keybinds.lua Normal file
View file

@ -0,0 +1,42 @@
return {
{
"folke/which-key.nvim",
event = "VeryLazy",
opts = {},
keys = {
{
"<leader>\\",
function()
require("which-key").show { global = false }
end,
desc = "Buffer Local Keymaps (which-key)",
},
{
"K",
":m '<-2<CR>gv=gv",
mode = "v",
},
{
"J",
":m '>+1<CR>gv=gv",
mode = "v",
},
{
"<C-d>",
"<C-d>zz",
desc = "Half page jump center",
},
{
"<C-u>",
"<C-u>zz",
desc = "Half page jump center",
},
{
"<leader>p",
'"_dP',
desc = "Stolen from prime",
mode = "x",
},
},
},
}

204
lua/plugins/lspconfig.lua Normal file
View file

@ -0,0 +1,204 @@
return {
{ "hrsh7th/cmp-nvim-lsp" },
{ "hrsh7th/cmp-cmdline" },
{ "hrsh7th/cmp-path" },
{ "hrsh7th/cmp-buffer" },
{
"ray-x/lsp_signature.nvim",
event = "InsertEnter",
opts = {},
},
{
"folke/lazydev.nvim",
ft = "lua", -- only load on lua files
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" } },
},
},
},
{
"williamboman/mason-lspconfig.nvim",
opts = {
ensure_installed = { "lua_ls", "rust_analyzer", "clangd", "zls" },
handlers = {
function(server_name)
vim.opt.signcolumn = "yes"
local navic = require "nvim-navic"
local on_attach = function(client, bufnr)
require("lsp_signature").on_attach({}, bufnr)
if client.server_capabilities.documentSymbolProvider then
navic.attach(client, bufnr)
end
end
local capabilities = require("cmp_nvim_lsp").default_capabilities()
require("lspconfig")[server_name].setup {
on_attach = on_attach,
capabilities = capabilities,
}
end,
},
},
},
{
"onsails/lspkind.nvim",
config = function()
require("lspkind").init { preset = "codicons" }
end,
},
{
"hrsh7th/nvim-cmp",
config = function()
local cmp = require "cmp"
local lspkind = require "lspkind"
cmp.setup {
formatting = {
format = lspkind.cmp_format {
mode = "symbol", -- show only symbol annotations
maxwidth = {
menu = 50, -- leading text (labelDetails)
abbr = 50, -- actual suggestion item
},
ellipsis_char = "...", -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
show_labelDetails = true, -- show labelDetails in menu. Disabled by default
before = function(entry, vim_item)
local highlights_info = require("colorful-menu").cmp_highlights(entry)
-- highlight_info is nil means we are missing the ts parser, it's
-- better to fallback to use default `vim_item.abbr`. What this plugin
-- offers is two fields: `vim_item.abbr_hl_group` and `vim_item.abbr`.
if highlights_info ~= nil then
vim_item.abbr_hl_group = highlights_info.highlights
vim_item.abbr = highlights_info.text
end
return vim_item
end,
},
},
sources = {
{ name = "nvim_lsp" },
{
name = "lazydev",
group_index = 0, -- set group index to 0 to skip loading LuaLS completions
},
},
snippet = {
expand = function(args)
vim.snippet.expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert {
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm { select = true }, -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
},
}
cmp.setup.cmdline({ "/", "?" }, {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "buffer" },
},
})
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = "path" },
}, {
{ name = "cmdline" },
}),
matching = { disallow_symbol_nonprefix_matching = false },
})
end,
},
{
"neovim/nvim-lspconfig",
lazy = false,
keys = {
{
"ca",
vim.lsp.buf.code_action,
desc = "LSP: [C]ode Action",
},
{
"<leader>rr",
vim.lsp.buf.rename,
desc = "LSP rename",
},
{
"<leader>lh",
vim.lsp.buf.hover,
desc = "[L]sp: Hover",
},
},
config = function()
vim.opt.signcolumn = "yes"
local navic = require "nvim-navic"
local on_attach = function(client, bufnr)
if client.server_capabilities.documentSymbolProvider then
navic.attach(client, bufnr)
end
end
vim.filetype.add {
extension = {
hlsl = "hlsl",
},
}
if not require("lspconfig.configs").hlsl_tools then
require("lspconfig.configs").hlsl_tools = {
default_config = {
cmd = "/home/hstasonis/.config/nvim/vendor/shader-language-server",
on_new_config = function(new_config, _)
new_config.cmd_env.LD_LIBRARY_PATH = "/home/hstasonis/.config/nvim/vendor"
end,
},
single_file_support = true,
filetypes = { "hlsl" },
}
end
-- Set it up as usual
require("lspconfig.configs").hlsl_tools.setup {
on_attach = on_attach,
}
end,
},
{
"williamboman/mason.nvim",
config = function()
require("mason").setup {}
end,
},
{
"SmiteshP/nvim-navic",
config = function()
vim.o.winbar = "%{%v:lua.require'nvim-navic'.get_location()%}"
end,
},
{
"j-hui/fidget.nvim",
opts = {},
},
{
"xzbdmw/colorful-menu.nvim",
config = function()
-- You don't need to set these options.
require("colorful-menu").setup {}
end,
},
}

11
lua/plugins/mini.lua Normal file
View file

@ -0,0 +1,11 @@
return {
{
"echasnovski/mini.nvim",
enabled = true,
config = function()
require("mini.statusline").setup()
require("mini.pairs").setup()
require("mini.ai").setup()
end,
},
}

13
lua/plugins/notes.lua Normal file
View file

@ -0,0 +1,13 @@
return {
{
"stevearc/oil.nvim",
---@module 'oil'
---@type oil.SetupOpts
opts = {},
-- Optional dependencies
dependencies = { { "echasnovski/mini.icons", opts = {} } },
-- dependencies = { "nvim-tree/nvim-web-devicons" }, -- use if you prefer nvim-web-devicons
-- Lazy loading is not recommended because it is very tricky to make it work correctly in all situations.
lazy = false,
},
}

106
lua/plugins/telescope.lua Normal file
View file

@ -0,0 +1,106 @@
return {
{
"folke/trouble.nvim",
keys = {
{
"<leader><Tab>",
function()
require("trouble").next { jump = true, skip_groups = true }
end,
},
{
"<leader><esc>",
function()
require("trouble").prev { jump = true, skip_groups = true }
end,
},
},
},
{
"nvim-telescope/telescope.nvim",
tag = "0.1.8",
dependencies = { "nvim-lua/plenary.nvim" },
keys = {
{
"<leader>dd",
function()
require("telescope.builtin").diagnostics()
end,
desc = "[D]iagnostics",
},
{
"gd",
function()
require("telescope.builtin").lsp_definitions()
end,
desc = "LSP def",
},
{
"gr",
function()
require("telescope.builtin").lsp_references()
end,
desc = "[L]SP, Find [R]eferences",
},
{
"<leader>ws",
function()
require("telescope.builtin").lsp_workspace_symbols()
end,
desc = "LSP, [W]orkspace [S]ymbols",
},
{
"gi",
function()
require("telescope.builtin").lsp_implementations()
end,
desc = "[L]sp, [I]mplementations",
},
{
"gt",
function()
require("telescope.builtin").lsp_type_definitions()
end,
desc = "[L]SP, Type Definitions",
},
{
"<leader>ff",
function()
local builtin = require "telescope.builtin"
builtin.find_files()
end,
desc = "Telescope: Find files",
},
{
"<leader>fg",
function()
local builtin = require "telescope.builtin"
builtin.buffers()
end,
},
{
"<leader>fg",
function()
local builtin = require "telescope.builtin"
builtin.live_grep()
end,
},
},
config = function()
local builtin = require "telescope.builtin"
local open_with_trouble = require("trouble.sources.telescope").open
-- Search with telescope and open with trouble
local telescope = require "telescope"
telescope.setup {
defaults = {
mappings = {
i = { ["<c-t>"] = open_with_trouble },
n = { ["<c-t>"] = open_with_trouble },
},
},
}
end,
},
}

View file

@ -0,0 +1,28 @@
return {
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
local configs = require "nvim-treesitter.configs"
configs.setup {
ensure_installed = {
"c",
"lua",
"vim",
"vimdoc",
"query",
"markdown",
"json",
"javascript",
"cpp",
"hlsl",
"jsdoc",
},
sync_install = false,
highlight = { enable = true },
indent = { enable = true },
}
end,
},
}

95
lua/plugins/ui.lua Normal file
View file

@ -0,0 +1,95 @@
return {
{
"ramojus/mellifluous.nvim",
lazy = false,
priority = 1000,
enabled = true,
config = function()
require("mellifluous").setup {
colorset = "alduin",
} -- optional, see configuration section.
vim.cmd [[ colorscheme mellifluous ]]
end,
},
{
"datsfilipe/vesper.nvim",
lazy = false,
priority = 1000,
enabled = false,
config = function()
require("vesper").setup {
transparent = false,
}
vim.cmd [[ colorscheme vesper ]]
end,
},
{
"AlexvZyl/nordic.nvim",
lazy = false,
priority = 1000,
enabled = false,
config = function()
require("nordic").load {
bright_border = true,
}
end,
},
{
"akinsho/bufferline.nvim",
version = "*",
lazy = false,
dependencies = { "nvim-tree/nvim-web-devicons", "datsfilipe/vesper.nvim" },
keys = {
{
"<leader>[",
":BufferLineCyclePrev<CR>",
desc = "Go back a buffer",
},
{
"<leader>]",
":BufferLineCycleNext<CR>",
desc = "Go to the next buffer",
},
{
"<leader>-",
":BufferLineCloseLeft<CR>",
desc = "Bufferline: Close left",
},
{
"<leader>+",
":BufferLineCloseOthers<CR>",
desc = "Bufferline: Close others",
},
{
"<leader>_",
":BufferLineCloseRight<CR>",
desc = "Bufferline: Close right",
},
{
"<leader>=",
":BufDel<CR>",
desc = "Close current buffer",
},
},
opts = {
diagnostics = "nvim_lsp",
diagnostics_indicator = function(count, level, diagnostics_dict, context)
local icon = level:match "error" and "" or ""
return " " .. icon .. count
end,
},
config = function(_, opts)
require("bufferline").setup {
options = opts,
}
end,
},
{
"ojroques/nvim-bufdel",
opts = {},
},
}