aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/home/.config/nvim/init.lua
blob: f7ceb480bb52bdd905d90ea528aeae8b70f27ca1 (plain) (blame)
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
vim.loader.enable()

require("config.options")

_G.P = function(v)
  print(vim.inspect(v))
  return v
end

-- Pre-load globals (must be set before plugins load)
vim.g.copilot_nes_debounce = 500

-- Build hooks for plugins that need post-install steps
vim.api.nvim_create_autocmd("User", {
  pattern = "PackChanged",
  callback = function(ev)
    if ev.data.kind ~= "install" and ev.data.kind ~= "update" then
      return
    end
    if ev.data.spec.name == "markdown-preview.nvim" then
      vim.system({ "yarn", "install" }, { cwd = ev.data.path .. "/app" })
    end
  end,
})

local gh = function(x)
  return "https://github.com/" .. x
end

vim.pack.add({
  -- UI
  gh("ellisonleao/gruvbox.nvim"),
  gh("saghen/blink.indent"),
  gh("nvim-lualine/lualine.nvim"),
  gh("AndreM222/copilot-lualine"),

  -- Treesitter
  { src = gh("nvim-treesitter/nvim-treesitter"), version = "main" },
  gh("RRethy/nvim-treesitter-endwise"),
  gh("nvim-treesitter/nvim-treesitter-context"),
  gh("JoosepAlviste/nvim-ts-context-commentstring"),
  gh("aaronik/treewalker.nvim"),
  gh("LiadOz/nvim-dap-repl-highlights"),

  -- Completion
  gh("saghen/blink.compat"),
  { src = gh("saghen/blink.cmp"), version = vim.version.range("*") },
  gh("rafamadriz/friendly-snippets"),
  gh("fang2hou/blink-copilot"),
  gh("rcarriga/cmp-dap"),
  gh("xzbdmw/colorful-menu.nvim"),
  { src = gh("saghen/blink.pairs"), version = vim.version.range("*") },
  { src = gh("saghen/blink.download"), version = "main" },

  -- Editing
  gh("nmac427/guess-indent.nvim"),
  gh("kylechui/nvim-surround"),
  gh("chrisgrieser/nvim-various-textobjs"),
  gh("monaqa/dial.nvim"),
  gh("ThePrimeagen/refactoring.nvim"),
  gh("nvim-lua/plenary.nvim"),

  -- Git
  gh("akinsho/git-conflict.nvim"),
  gh("NeogitOrg/neogit"),
  gh("ruifm/gitlinker.nvim"),
  gh("lewis6991/gitsigns.nvim"),

  -- LSP
  gh("folke/lazydev.nvim"),
  gh("neovim/nvim-lspconfig"),
  gh("j-hui/fidget.nvim"),
  gh("williamboman/mason.nvim"),
  gh("williamboman/mason-lspconfig.nvim"),
  gh("WhoIsSethDaniel/mason-tool-installer.nvim"),
  gh("stevearc/conform.nvim"),
  gh("mrcjkb/rustaceanvim"),
  gh("mfussenegger/nvim-lint"),
  gh("rachartier/tiny-inline-diagnostic.nvim"),

  -- Debug
  { src = gh("miroshQa/debugmaster.nvim"), version = "dashboard" },
  gh("mfussenegger/nvim-dap"),
  gh("theHamsta/nvim-dap-virtual-text"),
  gh("jay-babu/mason-nvim-dap.nvim"),

  -- Runner
  gh("stevearc/overseer.nvim"),

  -- Search
  { src = gh("ibhagwan/fzf-lua"), version = "main" },

  -- Session
  gh("rmagatti/auto-session"),

  -- AI
  gh("zbirenbaum/copilot.lua"),
  gh("copilotlsp-nvim/copilot-lsp"),

  -- Misc
  gh("iamcco/markdown-preview.nvim"),
  gh("aserowy/tmux.nvim"),
  gh("folke/which-key.nvim"),
  gh("stevearc/quicker.nvim"),
  gh("stevearc/oil.nvim"),
}, { confirm = false })

-- Colorscheme (must be set immediately after plugins are on rtp)
require("gruvbox").setup({})
vim.o.background = "dark"
vim.cmd.colorscheme("gruvbox")

-- Plugin configurations (order matters for dependencies)
require("plugins.ui")
require("plugins.treesitter")
require("plugins.completion")
require("plugins.editing")
require("plugins.git")
require("plugins.lsp")
require("plugins.debug")
require("plugins.runner")
require("plugins.search")
require("plugins.session")
require("plugins.ai")
require("plugins.init")

require("config.keymaps")
require("config.autocmds")