diff --git a/init.lua b/init.lua
index d91ab303..0a621c72 100644
--- a/init.lua
+++ b/init.lua
@@ -285,110 +285,6 @@ require('lazy').setup({
--
-- Use the `dependencies` key to specify the dependencies of a particular plugin
- { -- Fuzzy Finder (files, lsp, etc)
- 'nvim-telescope/telescope.nvim',
- event = 'VimEnter',
- dependencies = {
- 'nvim-lua/plenary.nvim',
- { -- If encountering errors, see telescope-fzf-native README for installation instructions
- 'nvim-telescope/telescope-fzf-native.nvim',
-
- -- `build` is used to run some command when the plugin is installed/updated.
- -- This is only run then, not every time Neovim starts up.
- build = 'make',
-
- -- `cond` is a condition used to determine whether this plugin should be
- -- installed and loaded.
- cond = function()
- return vim.fn.executable 'make' == 1
- end,
- },
- { 'nvim-telescope/telescope-ui-select.nvim' },
-
- -- Useful for getting pretty icons, but requires a Nerd Font.
- { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font },
- },
- config = function()
- -- Telescope is a fuzzy finder that comes with a lot of different things that
- -- it can fuzzy find! It's more than just a "file finder", it can search
- -- many different aspects of Neovim, your workspace, LSP, and more!
- --
- -- The easiest way to use Telescope, is to start by doing something like:
- -- :Telescope help_tags
- --
- -- After running this command, a window will open up and you're able to
- -- type in the prompt window. You'll see a list of `help_tags` options and
- -- a corresponding preview of the help.
- --
- -- Two important keymaps to use while in Telescope are:
- -- - Insert mode:
- -- - Normal mode: ?
- --
- -- This opens a window that shows you all of the keymaps for the current
- -- Telescope picker. This is really useful to discover what Telescope can
- -- do as well as how to actually do it!
-
- -- [[ Configure Telescope ]]
- -- See `:help telescope` and `:help telescope.setup()`
- require('telescope').setup {
- -- You can put your default mappings / updates / etc. in here
- -- All the info you're looking for is in `:help telescope.setup()`
- --
- -- defaults = {
- -- mappings = {
- -- i = { [''] = 'to_fuzzy_refine' },
- -- },
- -- },
- -- pickers = {}
- extensions = {
- ['ui-select'] = {
- require('telescope.themes').get_dropdown(),
- },
- },
- }
-
- -- Enable Telescope extensions if they are installed
- pcall(require('telescope').load_extension, 'fzf')
- pcall(require('telescope').load_extension, 'ui-select')
-
- -- See `:help telescope.builtin`
- local builtin = require 'telescope.builtin'
- vim.keymap.set('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' })
- vim.keymap.set('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
- vim.keymap.set('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' })
- vim.keymap.set('n', 'ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
- vim.keymap.set('n', 'sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
- vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
- vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
- vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' })
- vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
- vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' })
-
- -- Slightly advanced example of overriding default behavior and theme
- vim.keymap.set('n', '/', function()
- -- You can pass additional configuration to Telescope to change the theme, layout, etc.
- builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
- winblend = 10,
- previewer = false,
- })
- end, { desc = '[/] Fuzzily search in current buffer' })
-
- -- It's also possible to pass additional configuration options.
- -- See `:help telescope.builtin.live_grep()` for information about particular keys
- vim.keymap.set('n', 's/', function()
- builtin.live_grep {
- grep_open_files = true,
- prompt_title = 'Live Grep in Open Files',
- }
- end, { desc = '[S]earch [/] in Open Files' })
-
- -- Shortcut for searching your Neovim configuration files
- vim.keymap.set('n', 'sn', function()
- builtin.find_files { cwd = vim.fn.stdpath 'config' }
- end, { desc = '[S]earch [N]eovim files' })
- end,
- },
-
-- LSP Plugins
{
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
@@ -462,43 +358,6 @@ require('lazy').setup({
vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
end
- -- Rename the variable under your cursor.
- -- Most Language Servers support renaming across files, etc.
- map('grn', vim.lsp.buf.rename, '[R]e[n]ame')
-
- -- Execute a code action, usually your cursor needs to be on top of an error
- -- or a suggestion from your LSP for this to activate.
- map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' })
-
- -- Find references for the word under your cursor.
- map('grr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
-
- -- Jump to the implementation of the word under your cursor.
- -- Useful when your language has ways of declaring types without an actual implementation.
- map('gri', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
-
- -- Jump to the definition of the word under your cursor.
- -- This is where a variable was first declared, or where a function is defined, etc.
- -- To jump back, press .
- map('grd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
-
- -- WARN: This is not Goto Definition, this is Goto Declaration.
- -- For example, in C this would take you to the header.
- map('grD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
-
- -- Fuzzy find all the symbols in your current document.
- -- Symbols are things like variables, functions, types, etc.
- map('gO', require('telescope.builtin').lsp_document_symbols, 'Open Document Symbols')
-
- -- Fuzzy find all the symbols in your current workspace.
- -- Similar to document symbols, except searches over your entire project.
- map('gW', require('telescope.builtin').lsp_dynamic_workspace_symbols, 'Open Workspace Symbols')
-
- -- Jump to the type of the word under your cursor.
- -- Useful when you're not sure what type a variable is and you want to see
- -- the definition of its *type*, not where it was *defined*.
- map('grt', require('telescope.builtin').lsp_type_definitions, '[G]oto [T]ype Definition')
-
-- Show the signature of the symbol under your cursor.
map('gh', vim.lsp.buf.hover, 'Hover Documentation')
@@ -920,7 +779,7 @@ require('lazy').setup({
-- This is the easiest way to modularize your config.
--
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
- { import = 'custom.plugins' },
+ { import = 'plugins' },
--
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
-- Or use telescope!
diff --git a/lua/custom/plugins/git-blame.lua b/lua/plugins/git-blame.lua
similarity index 100%
rename from lua/custom/plugins/git-blame.lua
rename to lua/plugins/git-blame.lua
diff --git a/lua/custom/plugins/grug-far.lua b/lua/plugins/grug-far.lua
similarity index 100%
rename from lua/custom/plugins/grug-far.lua
rename to lua/plugins/grug-far.lua
diff --git a/lua/custom/plugins/init.lua b/lua/plugins/init.lua
similarity index 100%
rename from lua/custom/plugins/init.lua
rename to lua/plugins/init.lua
diff --git a/lua/custom/plugins/oil-git-status.lua b/lua/plugins/oil-git-status.lua
similarity index 100%
rename from lua/custom/plugins/oil-git-status.lua
rename to lua/plugins/oil-git-status.lua
diff --git a/lua/custom/plugins/oil.lua b/lua/plugins/oil.lua
similarity index 100%
rename from lua/custom/plugins/oil.lua
rename to lua/plugins/oil.lua
diff --git a/lua/plugins/snacks.lua b/lua/plugins/snacks.lua
new file mode 100644
index 00000000..23cb9416
--- /dev/null
+++ b/lua/plugins/snacks.lua
@@ -0,0 +1,54 @@
+return {
+ 'folke/snacks.nvim',
+ priority = 1000,
+ lazy = false,
+ ---@type snacks.Config
+ opts = {
+ -- your configuration comes here
+ -- or leave it empty to use the default settings
+ -- refer to the configuration section below
+ bigfile = { enabled = true },
+ dashboard = { enabled = true },
+ explorer = { enabled = true },
+ indent = { enabled = true },
+ input = { enabled = true },
+ picker = { enabled = true },
+ notifier = { enabled = true },
+ quickfile = { enabled = true },
+ scope = { enabled = true },
+ scroll = { enabled = true },
+ statuscolumn = { enabled = true },
+ words = { enabled = true },
+ },
+ keys = {
+ {
+ 'gd',
+ function()
+ Snacks.picker.lsp_definitions()
+ end,
+ desc = 'Goto Definition',
+ },
+ {
+ 'gD',
+ function()
+ Snacks.picker.lsp_declarations()
+ end,
+ desc = 'Goto Declaration',
+ },
+ {
+ 'gr',
+ function()
+ Snacks.picker.lsp_references()
+ end,
+ nowait = true,
+ desc = 'References',
+ },
+ {
+ 'gI',
+ function()
+ Snacks.picker.lsp_implementations()
+ end,
+ desc = 'Goto Implementation',
+ },
+ },
+}