-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.lua.example
More file actions
168 lines (141 loc) · 7.89 KB
/
init.lua.example
File metadata and controls
168 lines (141 loc) · 7.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
-- noethervim-template-version: 2
-- NoetherVim user config template.
-- Copy this file to ~/.config/nvim/init.lua
--
-- Quick start (see README):
--
-- mkdir -p ~/.config/nvim
-- cp /path/to/NoetherVim/init.lua.example ~/.config/nvim/init.lua
-- nvim
--
-- Personal overrides go in lua/user/ -- see :help noethervim-user-config.
-- To debug without your overrides: NOETHERVIM_NO_USER=1 nvim
-- ── 1. Leaders -- must come before lazy.nvim loads ──────────────────────────
-- Plugins register keymaps at spec-load time using these globals.
vim.g.mapleader = "\\" -- <Leader> -- global actions
vim.g.maplocalleader = "," -- <LocalLeader> -- filetype actions
vim.g.mapsearchleader = "<space>" -- search/navigation prefix (default: <Space>)
-- Opt-out of the Snacks dashboard shown on empty-arg startup.
-- Uncomment to open straight into an empty buffer instead.
-- vim.g.noethervim_dashboard = false
-- ── 2. Bootstrap lazy.nvim and NoetherVim ─────────────────────────────────
-- Both must be on the rtp BEFORE lazy.setup() so that
-- `import = "noethervim.plugins"` resolves on first launch.
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.uv.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)
local noethervimpath = vim.fn.stdpath("data") .. "/lazy/NoetherVim"
if not vim.uv.fs_stat(noethervimpath) then
vim.fn.system({
"git", "clone", "--filter=blob:none",
"https://github.com/Chiarandini/NoetherVim.git",
noethervimpath,
})
end
vim.opt.rtp:prepend(noethervimpath)
-- Route lazy.nvim's startup notifications through `vim.notify` after
-- VimEnter so a stale bundle import in the spec below -- or any other
-- error lazy emits while resolving the spec -- surfaces as a snacks
-- toast instead of an ErrorMsg on the cmdline (which fires the
-- hit-enter prompt on top of the dashboard).
require("noethervim.util").buffer_notify()
-- ── 3. Start NoetherVim ────────────────────────────────────────────────────
require("lazy").setup({
spec = {
-- ── Distro core ──────────────────────────────────────────────────
-- Installs NoetherVim as a lazy plugin and imports all core plugins.
-- Update with :Lazy update (or :Lazy sync).
{
"Chiarandini/NoetherVim",
import = "noethervim.plugins",
opts = {
colorscheme = "gruvbox", -- default colorscheme
-- statusline = { -- statusline overrides
-- colors = {},
-- extra_right = {},
-- },
},
config = function(_, opts)
require("noethervim").setup(opts)
end,
},
-- ── Bundles (opt-in) ─────────────────────────────────────────────
-- Uncomment the bundles you want. Categories are filesystem-derived:
-- lua/noethervim/bundles/<category>/<name>.lua.
-- languages/
-- { import = "noethervim.bundles.languages.rust" }, -- rustaceanvim (beyond plain rust-analyzer)
-- { import = "noethervim.bundles.languages.go" }, -- go.nvim (test gen, struct tags, fill struct)
-- { import = "noethervim.bundles.languages.java" }, -- nvim-jdtls (proper Java LSP support)
-- { import = "noethervim.bundles.languages.python" }, -- venv-selector (virtual environment switching)
-- { import = "noethervim.bundles.languages.latex" }, -- VimTeX + snippets/textobjects
-- { import = "noethervim.bundles.languages.latex-zotero" }, -- Zotero citation picker (needs Zotero + Better BibTeX)
-- { import = "noethervim.bundles.languages.web-dev" }, -- JS/TS template string + color preview
-- tools/
-- { import = "noethervim.bundles.tools.debug" }, -- nvim-dap + UI (Python, Lua, JS/TS, Go)
-- { import = "noethervim.bundles.tools.test" }, -- neotest test runner
-- { import = "noethervim.bundles.tools.repl" }, -- iron.nvim REPL
-- { import = "noethervim.bundles.tools.task-runner" }, -- overseer + compiler.nvim
-- { import = "noethervim.bundles.tools.database" }, -- vim-dadbod + UI + SQL completion
-- { import = "noethervim.bundles.tools.http" }, -- kulala.nvim HTTP/REST client
-- { import = "noethervim.bundles.tools.git" }, -- Fugit2, diffview, git-conflict
-- { import = "noethervim.bundles.tools.ai" }, -- CodeCompanion (needs ANTHROPIC_API_KEY)
-- { import = "noethervim.bundles.tools.smart-actions" }, -- AI code actions on grA (Claude Code / Anthropic)
-- { import = "noethervim.bundles.tools.refactoring" }, -- extract function/variable/block
-- navigation/
-- { import = "noethervim.bundles.navigation.harpoon" }, -- fast per-project file marks
-- { import = "noethervim.bundles.navigation.flash" }, -- enhanced f/t and / motions
-- lighter alternative: drop yorickpeterse/nvim-jump into user/plugins/
-- { import = "noethervim.bundles.navigation.projects" }, -- project switcher (snacks.picker)
-- { import = "noethervim.bundles.navigation.editing-extras" }, -- argmark + comment boxes
-- writing/
-- { import = "noethervim.bundles.writing.markdown" }, -- render, preview, tables, math, image paste
-- { import = "noethervim.bundles.writing.obsidian" }, -- Obsidian vault (also enable markdown bundle)
-- { import = "noethervim.bundles.writing.neorg" }, -- .norg wiki / note-taking
-- terminal/
-- { import = "noethervim.bundles.terminal.better-term" }, -- named terminal windows
-- { import = "noethervim.bundles.terminal.tmux" }, -- tmux window naming
-- { import = "noethervim.bundles.terminal.remote-dev" }, -- distant.nvim SSH editing
-- ui/
-- { import = "noethervim.bundles.ui.colorscheme" }, -- 10 popular themes + persistence
-- { import = "noethervim.bundles.ui.eye-candy" }, -- animations, scrollbar, block display
-- { import = "noethervim.bundles.ui.minimap" }, -- sidebar minimap
-- { import = "noethervim.bundles.ui.helpview" }, -- rendered :help pages
-- { import = "noethervim.bundles.ui.tableaux" }, -- noethervim-tableaux -- animated math dashboard scenes
-- practice/
-- { import = "noethervim.bundles.practice.training" }, -- vim-be-good, speedtyper, typr
-- { import = "noethervim.bundles.practice.dev-tools" }, -- StartupTime, Luapad
-- { import = "noethervim.bundles.practice.presentation" }, -- presenting.nvim + showkeys
-- { import = "noethervim.bundles.practice.hardtime" }, -- motion habit trainer
-- ── Your personal plugins & plugin overrides ─────────────────────
-- Drop .lua files in lua/user/plugins/ to add new plugins or
-- override existing plugin opts. See templates/user/plugins/example.lua.
-- Skipped when NOETHERVIM_NO_USER is set, vim.g.noethervim_no_user is
-- true, or lua/user/plugins/ doesn't exist.
not vim.env.NOETHERVIM_NO_USER
and not vim.g.noethervim_no_user
and vim.uv.fs_stat(vim.fn.stdpath("config") .. "/lua/user/plugins")
and { import = "user.plugins" } or nil,
},
-- lazy-lock.json lives in your config dir (the default).
-- :Lazy update pins versions there; :Lazy restore reverts to them.
install = { colorscheme = { "gruvbox", "habamax" } },
checker = { enabled = true },
performance = {
rtp = {
-- Keep the user config dir on the rtp after lazy's reset,
-- so that user.plugins and user.configs are importable.
paths = { vim.fn.stdpath("config") },
disabled_plugins = {
"gzip", "matchit", "matchparen", "netrwPlugin",
"tarPlugin", "tutor", "zipPlugin",
},
},
},
})