Organize and commit nvim configuration improvements
**Configuration Enhancements:** - Enable Nerd Font support in init.lua - Enhanced LSP configuration with better clangd setup - Improved query driver paths and error handling - Added support for more filetypes (cmake, tex, etc.) **Plugin Management:** - Add GitHub Copilot integration - Remove experimental plugins (avante, completion, statusline, theme) - Reorganize plugin imports for better structure **Repository Maintenance:** - Update .gitignore for better artifact handling - Clean up unused plugin configurations - Establish clean baseline for future development Resolves #12
This commit is contained in:
parent
25cab9b193
commit
217e448188
|
@ -1,14 +1,24 @@
|
||||||
tags
|
# OS files
|
||||||
test.sh
|
.DS_Store
|
||||||
.luarc.json
|
.DS_Store?
|
||||||
nvim
|
._*
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
ehthumbs.db
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
spell/
|
# Neovim runtime files
|
||||||
|
.cache/
|
||||||
# Project status tracking (local only)
|
.local/
|
||||||
CLAUDE.md
|
*.tmp
|
||||||
STATUS.md
|
*.swp
|
||||||
VIDINTEL.md
|
*.swo
|
||||||
KEYBIND_ANALYSIS.md
|
*~
|
||||||
|
|
||||||
|
# Plugin artifacts
|
||||||
lazy-lock.json
|
lazy-lock.json
|
||||||
|
.luarc.json
|
||||||
|
|
||||||
|
# Development artifacts
|
||||||
|
*.disabled
|
||||||
|
todo.md
|
||||||
|
|
18
init.lua
18
init.lua
|
@ -91,7 +91,7 @@ vim.g.mapleader = ' '
|
||||||
vim.g.maplocalleader = ' '
|
vim.g.maplocalleader = ' '
|
||||||
|
|
||||||
-- Set to true if you have a Nerd Font installed and selected in the terminal
|
-- Set to true if you have a Nerd Font installed and selected in the terminal
|
||||||
vim.g.have_nerd_font = false
|
vim.g.have_nerd_font = true
|
||||||
|
|
||||||
-- [[ Setting options ]]
|
-- [[ Setting options ]]
|
||||||
-- See `:help vim.o`
|
-- See `:help vim.o`
|
||||||
|
@ -631,19 +631,7 @@ require('lazy').setup({
|
||||||
-- - settings (table): Override the default settings passed when initializing the server.
|
-- - settings (table): Override the default settings passed when initializing the server.
|
||||||
-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
|
-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
|
||||||
local servers = {
|
local servers = {
|
||||||
clangd = {
|
-- clangd = {},
|
||||||
cmd = {
|
|
||||||
'clangd',
|
|
||||||
'--background-index',
|
|
||||||
'--clang-tidy',
|
|
||||||
'--header-insertion=never',
|
|
||||||
'--query-driver=' .. vim.fn.exepath 'clang++',
|
|
||||||
'--resource-dir=' .. vim.fn.systemlist({ 'clang++', '--print-resource-dir' })[1],
|
|
||||||
},
|
|
||||||
filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' },
|
|
||||||
root_dir = require('lspconfig.util').root_pattern '.git',
|
|
||||||
single_file_support = true,
|
|
||||||
},
|
|
||||||
-- gopls = {},
|
-- gopls = {},
|
||||||
-- pyright = {},
|
-- pyright = {},
|
||||||
-- rust_analyzer = {},
|
-- rust_analyzer = {},
|
||||||
|
@ -658,7 +646,7 @@ require('lazy').setup({
|
||||||
|
|
||||||
lua_ls = {
|
lua_ls = {
|
||||||
-- cmd = { ... },
|
-- cmd = { ... },
|
||||||
-- filetypes = { ... },
|
filetypes = { 'lua', 'luau' },
|
||||||
-- capabilities = {},
|
-- capabilities = {},
|
||||||
settings = {
|
settings = {
|
||||||
Lua = {
|
Lua = {
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
return {
|
|
||||||
"yetone/avante.nvim",
|
|
||||||
event = "VeryLazy",
|
|
||||||
lazy = false,
|
|
||||||
version = false, -- set this if you want to always pull the latest change
|
|
||||||
opts = {
|
|
||||||
-- add any opts here
|
|
||||||
},
|
|
||||||
-- if you want to build from source then do `make BUILD_FROM_SOURCE=true`
|
|
||||||
build = "make",
|
|
||||||
-- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows
|
|
||||||
dependencies = {
|
|
||||||
"stevearc/dressing.nvim",
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
"MunifTanjim/nui.nvim",
|
|
||||||
--- The below dependencies are optional,
|
|
||||||
"hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
|
|
||||||
"nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
|
|
||||||
"zbirenbaum/copilot.lua", -- for providers='copilot'
|
|
||||||
{
|
|
||||||
-- support for image pasting
|
|
||||||
"HakonHarnes/img-clip.nvim",
|
|
||||||
event = "VeryLazy",
|
|
||||||
opts = {
|
|
||||||
-- recommended settings
|
|
||||||
default = {
|
|
||||||
embed_image_as_base64 = false,
|
|
||||||
prompt_for_file_name = false,
|
|
||||||
drag_and_drop = {
|
|
||||||
insert_mode = true,
|
|
||||||
},
|
|
||||||
-- required for Windows users
|
|
||||||
use_absolute_path = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
-- Make sure to set this up properly if you have lazy=true
|
|
||||||
'MeanderingProgrammer/render-markdown.nvim',
|
|
||||||
opts = {
|
|
||||||
file_types = { "markdown", "Avante" },
|
|
||||||
},
|
|
||||||
ft = { "markdown", "Avante" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,112 +0,0 @@
|
||||||
return {
|
|
||||||
{
|
|
||||||
'hrsh7th/nvim-cmp',
|
|
||||||
event = 'InsertEnter', -- Load when entering insert mode
|
|
||||||
dependencies = {
|
|
||||||
'hrsh7th/cmp-nvim-lsp',
|
|
||||||
'hrsh7th/cmp-buffer',
|
|
||||||
'hrsh7th/cmp-path',
|
|
||||||
{ -- LuaSnip and its potential build step
|
|
||||||
'L3MON4D3/LuaSnip',
|
|
||||||
-- Follow latest V2 release.
|
|
||||||
version = 'v2.*',
|
|
||||||
-- tag = '<your-desired-luasnip-tag>', -- Removed tag specification
|
|
||||||
-- install jsregexp (optional!:).
|
|
||||||
build = (function()
|
|
||||||
-- Build Step is needed for regex support in snippets. This step is optional.
|
|
||||||
-- Remove the below condition to build Luasnip with regex support on Mac and Linux.
|
|
||||||
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
return 'make install_jsregexp'
|
|
||||||
end)(),
|
|
||||||
},
|
|
||||||
'saadparwaiz1/cmp_luasnip', -- Snippet source for nvim-cmp
|
|
||||||
-- Add other cmp sources if needed, e.g.:
|
|
||||||
-- 'hrsh7th/cmp-cmdline',
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
local cmp = require 'cmp'
|
|
||||||
local luasnip = require 'luasnip'
|
|
||||||
luasnip.config.setup {} -- Setup luasnip first
|
|
||||||
|
|
||||||
local function toggle_path_completion()
|
|
||||||
local config = cmp.get_config()
|
|
||||||
local snippet = config.snippet
|
|
||||||
local completion = config.completion
|
|
||||||
local mapping = config.mapping
|
|
||||||
|
|
||||||
local path_enabled = vim.tbl_any(function(src)
|
|
||||||
return src.name == 'path'
|
|
||||||
end, config.sources)
|
|
||||||
|
|
||||||
local new_sources = {
|
|
||||||
{ name = 'lazydev', group_index = 0 },
|
|
||||||
{ name = 'nvim_lsp' },
|
|
||||||
{ name = 'luasnip' },
|
|
||||||
}
|
|
||||||
|
|
||||||
if not path_enabled then
|
|
||||||
table.insert(new_sources, { name = 'path' })
|
|
||||||
end
|
|
||||||
|
|
||||||
cmp.setup {
|
|
||||||
snippet = snippet,
|
|
||||||
completion = completion,
|
|
||||||
mapping = mapping,
|
|
||||||
sources = new_sources,
|
|
||||||
}
|
|
||||||
|
|
||||||
print('Path completion ' .. (path_enabled and 'disabled' or 'enabled'))
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Configure nvim-cmp
|
|
||||||
cmp.setup {
|
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
luasnip.lsp_expand(args.body) -- Expand snippets using luasnip
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
completion = {
|
|
||||||
-- Set completeopt to have a better completion experience
|
|
||||||
-- :help completeopt
|
|
||||||
-- menuone: popup even when there's only one match
|
|
||||||
-- noinsert: Do not insert text until a selection is made
|
|
||||||
-- noselect: Do not select the first item by default
|
|
||||||
completeopt = 'menu,menuone,noinsert',
|
|
||||||
},
|
|
||||||
-- Key Mappings for completion
|
|
||||||
mapping = cmp.mapping.preset.insert {
|
|
||||||
['<C-n>'] = cmp.mapping.select_next_item(), -- Select next item
|
|
||||||
['<C-p>'] = cmp.mapping.select_prev_item(), -- Select previous item
|
|
||||||
['<C-b>'] = cmp.mapping.scroll_docs(-4), -- Scroll documentation back
|
|
||||||
['<C-f>'] = cmp.mapping.scroll_docs(4), -- Scroll documentation forward
|
|
||||||
['<C-y>'] = cmp.mapping.confirm { select = true }, -- Confirm selection
|
|
||||||
['<C-Space>'] = cmp.mapping.complete {}, -- Trigger completion manually
|
|
||||||
|
|
||||||
-- Handle snippet jumping
|
|
||||||
['<C-l>'] = cmp.mapping(function()
|
|
||||||
if luasnip.expand_or_locally_jumpable() then
|
|
||||||
luasnip.expand_or_jump()
|
|
||||||
end
|
|
||||||
end, { 'i', 's' }), -- Jump forward in snippet
|
|
||||||
['<C-h>'] = cmp.mapping(function()
|
|
||||||
if luasnip.locally_jumpable(-1) then
|
|
||||||
luasnip.jump(-1)
|
|
||||||
end
|
|
||||||
end, { 'i', 's' }), -- Jump backward in snippet
|
|
||||||
},
|
|
||||||
-- Completion sources
|
|
||||||
sources = cmp.config.sources {
|
|
||||||
{ name = 'nvim_lsp' }, -- LSP symbols
|
|
||||||
{ name = 'luasnip' }, -- Snippets
|
|
||||||
{ name = 'buffer' }, -- Words from current buffer
|
|
||||||
{ name = 'path' }, -- Filesystem paths
|
|
||||||
},
|
|
||||||
-- Add other cmp setup options from your old config if any
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>tp', toggle_path_completion, { desc = '[T]oggle [p]ath completion' })
|
|
||||||
end, -- End of config function
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'github/copilot.vim',
|
||||||
|
event = 'VimEnter',
|
||||||
|
config = function()
|
||||||
|
-- Accept suggestion with Ctrl-y
|
||||||
|
vim.keymap.set('i', '<C-y>', 'copilot#Accept("\\<CR>")', {
|
||||||
|
expr = true,
|
||||||
|
replace_keycodes = false
|
||||||
|
})
|
||||||
|
vim.g.copilot_no_tab_map = true
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
|
@ -3,14 +3,15 @@
|
||||||
--
|
--
|
||||||
-- See the kickstart.nvim README for more information
|
-- See the kickstart.nvim README for more information
|
||||||
return {
|
return {
|
||||||
{ import = 'custom.plugins.avante' },
|
|
||||||
-- { import = 'custom.plugins.completion' },
|
-- { import = 'custom.plugins.completion' },
|
||||||
|
-- { import = 'custom.plugins.theme' },
|
||||||
|
-- { import = 'custom.plugins.avante' },
|
||||||
|
{ import = 'custom.plugins.copilot' },
|
||||||
{ import = 'custom.plugins.debug' },
|
{ import = 'custom.plugins.debug' },
|
||||||
{ import = 'custom.plugins.formatting' },
|
{ import = 'custom.plugins.formatting' },
|
||||||
{ import = 'custom.plugins.git' },
|
{ import = 'custom.plugins.git' },
|
||||||
{ import = 'custom.plugins.lsp' },
|
{ import = 'custom.plugins.lsp' },
|
||||||
{ import = 'custom.plugins.nvim-tmux-navigator' },
|
{ import = 'custom.plugins.nvim-tmux-navigator' },
|
||||||
{ import = 'custom.plugins.telescope' },
|
{ import = 'custom.plugins.telescope' },
|
||||||
-- { import = 'custom.plugins.theme' },
|
|
||||||
{ import = 'custom.plugins.treesitter' },
|
{ import = 'custom.plugins.treesitter' },
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,33 @@ return {
|
||||||
{
|
{
|
||||||
'neovim/nvim-lspconfig',
|
'neovim/nvim-lspconfig',
|
||||||
-- only load when editing these filetypes (optional)
|
-- only load when editing these filetypes (optional)
|
||||||
ft = { 'python', 'lua', 'nix', 'rust', 'go', 'c', 'cpp' },
|
ft = {
|
||||||
|
'c',
|
||||||
|
'cpp',
|
||||||
|
'objc',
|
||||||
|
'objcpp',
|
||||||
|
'cuda',
|
||||||
|
'cmake',
|
||||||
|
--
|
||||||
|
'go',
|
||||||
|
'nix',
|
||||||
|
'python',
|
||||||
|
'rust',
|
||||||
|
'tex',
|
||||||
|
},
|
||||||
opts = function()
|
opts = function()
|
||||||
local lspconfig = require 'lspconfig'
|
local lspconfig = require 'lspconfig'
|
||||||
local capabilities = require('blink.cmp').get_lsp_capabilities()
|
local capabilities = {}
|
||||||
|
pcall(function()
|
||||||
|
capabilities = require('blink.cmp').get_lsp_capabilities()
|
||||||
|
end)
|
||||||
|
local util = require 'lspconfig.util'
|
||||||
|
|
||||||
|
local query_driver = table.concat({
|
||||||
|
'/nix/store/*/bin/clang*',
|
||||||
|
'/opt/homebrew/opt/llvm/bin/clang*',
|
||||||
|
'/usr/bin/clang*',
|
||||||
|
}, ';')
|
||||||
|
|
||||||
local servers = {
|
local servers = {
|
||||||
clangd = {
|
clangd = {
|
||||||
|
@ -17,13 +40,22 @@ return {
|
||||||
'--background-index',
|
'--background-index',
|
||||||
'--clang-tidy',
|
'--clang-tidy',
|
||||||
'--header-insertion=never',
|
'--header-insertion=never',
|
||||||
'--query-driver=' .. vim.fn.exepath('clang++'),
|
'--query-driver=' .. query_driver,
|
||||||
'--resource-dir=' .. vim.fn.systemlist({ 'clang++', '--print-resource-dir' })[1],
|
'--compile-commands-dir=build',
|
||||||
|
'--resource-dir=' .. (function()
|
||||||
|
local ok, result = pcall(vim.fn.systemlist, { 'clang++', '--print-resource-dir' })
|
||||||
|
if ok and result and result[1] then
|
||||||
|
return result[1]
|
||||||
|
else
|
||||||
|
return '/usr/lib/clang/19/include' -- fallback
|
||||||
|
end
|
||||||
|
end)(),
|
||||||
},
|
},
|
||||||
filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' },
|
filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' },
|
||||||
root_dir = require('lspconfig.util').root_pattern('.git'),
|
root_dir = util.root_pattern('CMakeLists.txt', '.git'),
|
||||||
single_file_support = true,
|
single_file_support = true,
|
||||||
},
|
},
|
||||||
|
|
||||||
pyright = {
|
pyright = {
|
||||||
settings = {
|
settings = {
|
||||||
python = {
|
python = {
|
||||||
|
@ -37,13 +69,16 @@ return {
|
||||||
},
|
},
|
||||||
positionEncoding = 'utf-8',
|
positionEncoding = 'utf-8',
|
||||||
},
|
},
|
||||||
nixd = {},
|
|
||||||
ruff = {},
|
ruff = {},
|
||||||
|
|
||||||
|
nixd = {},
|
||||||
|
|
||||||
texlab = {},
|
texlab = {},
|
||||||
|
|
||||||
cmake = {
|
cmake = {
|
||||||
cmd = { 'cmake-language-server' },
|
cmd = { 'cmake-language-server' },
|
||||||
filetypes = { 'cmake' },
|
filetypes = { 'cmake' },
|
||||||
root_dir = require('lspconfig.util').root_pattern('CMakeLists.txt', '.git'),
|
root_dir = util.root_pattern('CMakeLists.txt', '.git'),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
return {
|
|
||||||
'echasnovski/mini.statusline',
|
|
||||||
dependencies = { 'nvim-tree/nvim-web-devicons' }, -- optional for icons
|
|
||||||
opts = function(_, opts)
|
|
||||||
local statusline = require 'mini.statusline'
|
|
||||||
|
|
||||||
-- Add new section function
|
|
||||||
-- statusline.section_target = function()
|
|
||||||
-- local target = require('custom.utils'):get_target()
|
|
||||||
-- return target and (' ' .. target) or ''
|
|
||||||
-- end
|
|
||||||
|
|
||||||
-- Override content.active to include target
|
|
||||||
opts.content = opts.content or {}
|
|
||||||
opts.content.active = function()
|
|
||||||
local mode, git, diagnostics, filename, fileinfo, target, location =
|
|
||||||
statusline.section_mode {},
|
|
||||||
statusline.section_git {},
|
|
||||||
statusline.section_diagnostics {},
|
|
||||||
statusline.section_filename {},
|
|
||||||
statusline.section_fileinfo {},
|
|
||||||
-- statusline.section_target {},
|
|
||||||
statusline.section_location {}
|
|
||||||
|
|
||||||
return statusline.combine_groups {
|
|
||||||
{ hl = 'MiniStatuslineModeNormal', strings = { mode } },
|
|
||||||
{ hl = 'MiniStatuslineDevinfo', strings = { git, diagnostics } },
|
|
||||||
'%<',
|
|
||||||
{ hl = 'MiniStatuslineFilename', strings = { filename } },
|
|
||||||
{ hl = 'MiniStatuslineFileinfo', strings = { fileinfo } },
|
|
||||||
{ hl = 'MiniStatuslineTarget', strings = { target } },
|
|
||||||
{ hl = 'MiniStatuslineLocation', strings = { location } },
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
return opts
|
|
||||||
end,
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
-- Theme configuration
|
|
||||||
|
|
||||||
return {
|
|
||||||
{
|
|
||||||
'catppuccin/nvim',
|
|
||||||
priority = 1000,
|
|
||||||
config = function()
|
|
||||||
vim.cmd.colorscheme 'catppuccin-mocha'
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{ 'folke/tokyonight.nvim', enabled = false },
|
|
||||||
}
|
|
Loading…
Reference in New Issue