|
| 1 | +-- ~/.config/nvim/init.lua |
1 | 2 | require 'core.options' -- Load general options |
2 | 3 | require 'core.keymaps' -- Load general keymaps |
3 | 4 | require 'core.snippets' -- Custom code snippets |
4 | 5 |
|
5 | | --- Install package manager |
6 | | -local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' |
| 6 | +-- Install package manager (lazy.nvim) |
| 7 | +local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim' |
7 | 8 | if not vim.loop.fs_stat(lazypath) then |
8 | | - vim.fn.system { |
9 | | - 'git', |
10 | | - 'clone', |
11 | | - '--filter=blob:none', |
| 9 | + vim.fn.system({ |
| 10 | + 'git', 'clone', '--filter=blob:none', |
12 | 11 | 'https://github.com/folke/lazy.nvim.git', |
13 | | - '--branch=stable', -- latest stable release |
14 | | - lazypath, |
15 | | - } |
| 12 | + '--branch=stable', lazypath, |
| 13 | + }) |
16 | 14 | end |
17 | 15 | vim.opt.rtp:prepend(lazypath) |
| 16 | + |
| 17 | +-- Filetypes |
18 | 18 | vim.filetype.add({ |
19 | | - extension = { |
20 | | - templ = "templ", |
21 | | - } |
| 19 | + extension = { templ = 'templ' }, |
22 | 20 | }) |
23 | 21 |
|
24 | | --- Import color theme based on environment variable NVIM_THEME |
| 22 | +-- Theme selection (robust against unknown NVIM_THEME) |
25 | 23 | local default_color_scheme = 'quantum' |
26 | | -local env_var_nvim_theme = os.getenv 'NVIM_THEME' or default_color_scheme |
27 | | - |
28 | | --- Define a table of theme modules |
| 24 | +local env_var_nvim_theme = os.getenv('NVIM_THEME') or default_color_scheme |
29 | 25 | local themes = { |
30 | 26 | quantum = 'plugins.themes.quantum', |
31 | | - nord = 'plugins.themes.nord', |
| 27 | + nord = 'plugins.themes.nord', |
32 | 28 | onedark = 'plugins.themes.onedark', |
33 | 29 | } |
| 30 | +local theme_module = themes[env_var_nvim_theme] or themes[default_color_scheme] |
34 | 31 |
|
35 | | --- Setup plugins |
| 32 | +-- Plugins |
36 | 33 | require('lazy').setup({ |
37 | | - require(themes[env_var_nvim_theme]), |
| 34 | + require(theme_module), |
38 | 35 | require 'core.ui', |
39 | 36 |
|
40 | | - require 'plugins.aaa', -- Mason setup |
41 | | - require 'plugins.aerial', |
42 | | - require 'plugins.flash', |
43 | | - require 'plugins.autocompletion', |
44 | | - require 'plugins.bufferline', |
45 | | - require 'plugins.comment', |
46 | | - require 'plugins.conform', |
47 | | - require 'plugins.database', |
48 | | - require 'plugins.debug', |
49 | | - require 'plugins.gitsigns', |
50 | | - require 'plugins.harpoon', |
51 | | - require 'plugins.lazygit', |
52 | | - require 'plugins.lsp', |
| 37 | + -- Load mason early so tools are ready for LSP configs |
| 38 | + require 'plugins.mason', |
| 39 | + |
| 40 | + -- Core dev UX |
| 41 | + require 'plugins.treesitter', |
| 42 | + require 'plugins.telescope', |
53 | 43 | require 'plugins.lualine', |
54 | | - require 'plugins.none-ls', |
| 44 | + require 'plugins.bufferline', |
55 | 45 | require 'plugins.indent-blankline', |
56 | 46 | require 'plugins.neo-tree', |
57 | | - require 'plugins.misc', |
58 | | - require 'plugins.snack', |
59 | | - require 'plugins.telescope', |
60 | 47 | require 'plugins.toggleterm', |
61 | | - require 'plugins.treesitter', |
62 | 48 | require 'plugins.vim-tmux-navigator', |
63 | 49 | require 'plugins.zellij', |
| 50 | + require 'plugins.flash', |
| 51 | + require 'plugins.comment', |
| 52 | + require 'plugins.harpoon', |
| 53 | + require 'plugins.gitsigns', |
| 54 | + require 'plugins.lazygit', |
| 55 | + require 'plugins.aerial', |
| 56 | + require 'plugins.misc', |
64 | 57 |
|
| 58 | + -- LSP & companions |
| 59 | + require 'plugins.autocompletion', |
| 60 | + require 'plugins.lsp', |
| 61 | + require 'plugins.none-ls', -- none-ls/null-ls sources & setup |
| 62 | + require 'plugins.autoformat', -- your autoformat-on-save/idle logic |
| 63 | + |
| 64 | + -- Optional: pick one formatter stack. If you keep Conform, |
| 65 | + -- ensure it doesn't also format Go on save to avoid double-format. |
| 66 | + require 'plugins.conform', |
| 67 | + |
| 68 | + -- Debugging / DB (as you had) |
| 69 | + require 'plugins.debug', |
| 70 | + require 'plugins.database', |
65 | 71 | }, { |
66 | 72 | ui = { |
67 | | - -- If you have a Nerd Font, set icons to an empty table which will use the |
68 | | - -- default lazy.nvim defined Nerd Font icons otherwise define a unicode icons table |
69 | 73 | icons = vim.g.have_nerd_font and {} or { |
70 | | - cmd = '⌘', |
71 | | - config = '🛠', |
72 | | - event = '📅', |
73 | | - ft = '📂', |
74 | | - init = '⚙', |
75 | | - keys = '🗝', |
76 | | - plugin = '🔌', |
77 | | - runtime = '💻', |
78 | | - require = '🌙', |
79 | | - source = '📄', |
80 | | - start = '🚀', |
81 | | - task = '📌', |
82 | | - lazy = '💤 ', |
| 74 | + cmd = '⌘', config = '🛠', event = '📅', ft = '📂', init = '⚙', |
| 75 | + keys = '🗝', plugin = '🔌', runtime = '💻', require = '🌙', |
| 76 | + source = '📄', start = '🚀', task = '📌', lazy = '💤 ', |
83 | 77 | }, |
84 | 78 | }, |
85 | 79 | }) |
86 | 80 |
|
87 | | --- Function to check if a file exists |
| 81 | +-- (Optional) tiny helper if you ever want to source a session file |
88 | 82 | local function file_exists(file) |
89 | 83 | local f = io.open(file, 'r') |
90 | | - if f then |
91 | | - f:close() |
92 | | - return true |
93 | | - else |
94 | | - return false |
95 | | - end |
| 84 | + if f then f:close(); return true end |
| 85 | + return false |
96 | 86 | end |
97 | 87 |
|
98 | | --- Path to the session file |
99 | | -local session_file = '.session.vim' |
| 88 | +-- local session_file = '.session.vim' |
| 89 | +-- if file_exists(session_file) then vim.cmd('source ' .. session_file) end |
100 | 90 |
|
101 | | --- Check if the session file exists in the current directory |
102 | | --- if file_exists(session_file) then |
103 | | --- -- Source the session file |
104 | | --- vim.cmd('source ' .. session_file) |
105 | | --- end |
106 | | - |
107 | | --- The line beneath this is called `modeline`. See `:help modeline` |
108 | 91 | -- vim: ts=2 sts=2 sw=2 et |
| 92 | + |
0 commit comments