Merge branch 'master' into feat/add-plugins-and-oil-config
This commit is contained in:
commit
c1c53aa117
|
|
@ -10,9 +10,11 @@ assignees: ''
|
||||||
<!-- Any bug report not following this template will be immediately closed. Thanks -->
|
<!-- Any bug report not following this template will be immediately closed. Thanks -->
|
||||||
|
|
||||||
## Before Reporting an Issue
|
## Before Reporting an Issue
|
||||||
|
|
||||||
- I have read the kickstart.nvim README.md.
|
- I have read the kickstart.nvim README.md.
|
||||||
- I have read the appropriate plugin's documentation.
|
- I have read the appropriate plugin's documentation.
|
||||||
- I have searched that this issue has not been reported before.
|
- I have searched that this issue has not been reported before.
|
||||||
|
- I have ran `:checkhealth` and so no obvious issue.
|
||||||
|
|
||||||
- [ ] **By checking this, I confirm that the above steps are completed. I understand leaving this unchecked will result in this report being closed immediately.**
|
- [ ] **By checking this, I confirm that the above steps are completed. I understand leaving this unchecked will result in this report being closed immediately.**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
blank_issues_enabled: false
|
||||||
|
|
||||||
|
contact_links:
|
||||||
|
- name: Help
|
||||||
|
url: https://github.com/nvim-lua/kickstart.nvim/discussions/categories/q-a
|
||||||
|
about: Ask the community for help
|
||||||
|
|
||||||
|
- name: Ideas
|
||||||
|
url: https://github.com/nvim-lua/kickstart.nvim/discussions/categories/ideas
|
||||||
|
about: Share ideas for new features
|
||||||
349
init.lua
349
init.lua
|
|
@ -85,7 +85,7 @@ P.S. You can delete this when you're done too. It's your config now! :)
|
||||||
--]]
|
--]]
|
||||||
|
|
||||||
-- ============================================================
|
-- ============================================================
|
||||||
-- SECTION 1: FOUNDATION
|
-- SECTION 1: OPTIONS
|
||||||
-- Core Neovim settings, leaders, options, basic keymaps, basic autocmds
|
-- Core Neovim settings, leaders, options, basic keymaps, basic autocmds
|
||||||
-- ============================================================
|
-- ============================================================
|
||||||
do
|
do
|
||||||
|
|
@ -171,7 +171,13 @@ do
|
||||||
-- instead raise a dialog asking if you wish to save the current file(s)
|
-- instead raise a dialog asking if you wish to save the current file(s)
|
||||||
-- See `:help 'confirm'`
|
-- See `:help 'confirm'`
|
||||||
vim.o.confirm = true
|
vim.o.confirm = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 2: KEYMAPS
|
||||||
|
-- basic keymaps
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
-- [[ Basic Keymaps ]]
|
-- [[ Basic Keymaps ]]
|
||||||
-- See `:help vim.keymap.set()`
|
-- See `:help vim.keymap.set()`
|
||||||
|
|
||||||
|
|
@ -278,6 +284,45 @@ require('lazy').setup({
|
||||||
{
|
{
|
||||||
'nvim-tree/nvim-web-devicons',
|
'nvim-tree/nvim-web-devicons',
|
||||||
cond = vim.g.have_nerd_font,
|
cond = vim.g.have_nerd_font,
|
||||||
|
---Because most plugins are hosted on GitHub, you can use the helper
|
||||||
|
---function to have less repetition in the following sections.
|
||||||
|
---@param repo string
|
||||||
|
---@return string
|
||||||
|
local function gh(repo) return 'https://github.com/' .. repo end
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 4: UI / CORE UX PLUGINS
|
||||||
|
-- guess-indent, gitsigns, which-key, colorscheme, todo-comments, mini modules
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- [[ Installing and Configuring Plugins ]]
|
||||||
|
--
|
||||||
|
-- To install a plugin simply call `vim.pack.add` with its git url.
|
||||||
|
-- This will download the default branch of the plugin, which will usually be `main` or `master`
|
||||||
|
-- You can also have more advanced specs, which we will talk about later.
|
||||||
|
--
|
||||||
|
-- For most plugins its not enough to install them, you also need to call their `.setup()` to start them.
|
||||||
|
--
|
||||||
|
-- For example, lets say we want to install `guess-indent.nvim` - a plugin for
|
||||||
|
-- automatically detecting and setting the indentation.
|
||||||
|
--
|
||||||
|
-- We first install it from https://github.com/NMAC427/guess-indent.nvim
|
||||||
|
-- and then call its `setup()` function to start it with default settings.
|
||||||
|
vim.pack.add { gh 'NMAC427/guess-indent.nvim' }
|
||||||
|
require('guess-indent').setup {}
|
||||||
|
|
||||||
|
-- Here is a more advanced configuration example that passes options to `gitsigns.nvim`
|
||||||
|
--
|
||||||
|
-- See `:help gitsigns` to understand what each configuration key does.
|
||||||
|
-- Adds git related signs to the gutter, as well as utilities for managing changes
|
||||||
|
vim.pack.add { gh 'lewis6991/gitsigns.nvim' }
|
||||||
|
require('gitsigns').setup {
|
||||||
|
signs = {
|
||||||
|
add = { text = '+' }, ---@diagnostic disable-line: missing-fields
|
||||||
|
change = { text = '~' }, ---@diagnostic disable-line: missing-fields
|
||||||
|
delete = { text = '_' }, ---@diagnostic disable-line: missing-fields
|
||||||
|
topdelete = { text = '‾' }, ---@diagnostic disable-line: missing-fields
|
||||||
|
changedelete = { text = '~' }, ---@diagnostic disable-line: missing-fields
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -381,6 +426,27 @@ require('lazy').setup({
|
||||||
vim.keymap.set('n', '<leader>/', function()
|
vim.keymap.set('n', '<leader>/', function()
|
||||||
builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { winblend = 10, previewer = false })
|
builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { winblend = 10, previewer = false })
|
||||||
end, { desc = '[/] Fuzzily search in current buffer' })
|
end, { desc = '[/] Fuzzily search in current buffer' })
|
||||||
|
-- If a nerd font is available, load the icons module for pretty icons in various plugins.
|
||||||
|
if vim.g.have_nerd_font then
|
||||||
|
require('mini.icons').setup()
|
||||||
|
-- Used for backwards compatibility with plugins that require `nvim-web-devicons` (e.g. telescope.nvim)
|
||||||
|
MiniIcons.mock_nvim_web_devicons()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Better Around/Inside textobjects
|
||||||
|
--
|
||||||
|
-- Examples:
|
||||||
|
-- - va) - [V]isually select [A]round [)]paren
|
||||||
|
-- - yiiq - [Y]ank [I]nside [I]+1 [Q]uote
|
||||||
|
-- - ci' - [C]hange [I]nside [']quote
|
||||||
|
require('mini.ai').setup {
|
||||||
|
-- NOTE: Avoid conflicts with the built-in incremental selection mappings on Neovim>=0.12 (see `:help treesitter-incremental-selection`)
|
||||||
|
mappings = {
|
||||||
|
around_next = 'aa',
|
||||||
|
inside_next = 'ii',
|
||||||
|
},
|
||||||
|
n_lines = 500,
|
||||||
|
}
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>s/', function()
|
vim.keymap.set('n', '<leader>s/', function()
|
||||||
builtin.live_grep { grep_open_files = true, prompt_title = 'Live Grep in Open Files' }
|
builtin.live_grep { grep_open_files = true, prompt_title = 'Live Grep in Open Files' }
|
||||||
|
|
@ -388,6 +454,59 @@ require('lazy').setup({
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' })
|
vim.keymap.set('n', '<leader>sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' })
|
||||||
end,
|
end,
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 5: SEARCH & NAVIGATION
|
||||||
|
-- Telescope setup, keymaps, LSP picker mappings
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- [[ Fuzzy Finder (files, lsp, etc) ]]
|
||||||
|
--
|
||||||
|
-- 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!
|
||||||
|
--
|
||||||
|
-- There are lots of other alternative pickers (like snacks.picker, or fzf-lua)
|
||||||
|
-- so feel free to experiment and see what you like!
|
||||||
|
--
|
||||||
|
-- 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: <c-/>
|
||||||
|
-- - 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!
|
||||||
|
|
||||||
|
---@type (string|vim.pack.Spec)[]
|
||||||
|
local telescope_plugins = {
|
||||||
|
gh 'nvim-lua/plenary.nvim',
|
||||||
|
gh 'nvim-telescope/telescope.nvim',
|
||||||
|
gh 'nvim-telescope/telescope-ui-select.nvim',
|
||||||
|
}
|
||||||
|
if vim.fn.executable 'make' == 1 then table.insert(telescope_plugins, gh 'nvim-telescope/telescope-fzf-native.nvim') end
|
||||||
|
|
||||||
|
-- NOTE: You can install multiple plugins at once
|
||||||
|
vim.pack.add(telescope_plugins)
|
||||||
|
|
||||||
|
-- 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 = { ['<c-enter>'] = 'to_fuzzy_refine' },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- pickers = {}
|
||||||
|
extensions = {
|
||||||
|
['ui-select'] = { require('telescope.themes').get_dropdown() },
|
||||||
},
|
},
|
||||||
|
|
||||||
-- ============================================================
|
-- ============================================================
|
||||||
|
|
@ -442,6 +561,109 @@ require('lazy').setup({
|
||||||
map('<leader>th', function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) end, '[T]oggle Inlay [H]ints')
|
map('<leader>th', function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) end, '[T]oggle Inlay [H]ints')
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
-- Override default behavior and theme when searching
|
||||||
|
vim.keymap.set('n', '<leader>/', 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',
|
||||||
|
'<leader>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', '<leader>sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config', follow = true } end, { desc = '[S]earch [N]eovim files' })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 6: LSP
|
||||||
|
-- LSP keymaps, server configuration, Mason tools installations
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- [[ LSP Configuration ]]
|
||||||
|
-- Brief aside: **What is LSP?**
|
||||||
|
--
|
||||||
|
-- LSP is an initialism you've probably heard, but might not understand what it is.
|
||||||
|
--
|
||||||
|
-- LSP stands for Language Server Protocol. It's a protocol that helps editors
|
||||||
|
-- and language tooling communicate in a standardized fashion.
|
||||||
|
--
|
||||||
|
-- In general, you have a "server" which is some tool built to understand a particular
|
||||||
|
-- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers
|
||||||
|
-- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone
|
||||||
|
-- processes that communicate with some "client" - in this case, Neovim!
|
||||||
|
--
|
||||||
|
-- LSP provides Neovim with features like:
|
||||||
|
-- - Go to definition
|
||||||
|
-- - Find references
|
||||||
|
-- - Autocompletion
|
||||||
|
-- - Symbol Search
|
||||||
|
-- - and more!
|
||||||
|
--
|
||||||
|
-- Thus, Language Servers are external tools that must be installed separately from
|
||||||
|
-- Neovim. This is where `mason` and related plugins come into play.
|
||||||
|
--
|
||||||
|
-- If you're wondering about lsp vs treesitter, you can check out the wonderfully
|
||||||
|
-- and elegantly composed help section, `:help lsp-vs-treesitter`
|
||||||
|
|
||||||
|
-- Useful status updates for LSP.
|
||||||
|
vim.pack.add { gh 'j-hui/fidget.nvim' }
|
||||||
|
require('fidget').setup {}
|
||||||
|
|
||||||
|
-- This function gets run when an LSP attaches to a particular buffer.
|
||||||
|
-- That is to say, every time a new file is opened that is associated with
|
||||||
|
-- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this
|
||||||
|
-- function will be executed to configure the current buffer
|
||||||
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }),
|
||||||
|
callback = function(event)
|
||||||
|
-- NOTE: Remember that Lua is a real programming language, and as such it is possible
|
||||||
|
-- to define small helper and utility functions so you don't have to repeat yourself.
|
||||||
|
--
|
||||||
|
-- In this case, we create a function that lets us more easily define mappings specific
|
||||||
|
-- for LSP related items. It sets the mode, buffer and description for us each time.
|
||||||
|
local map = function(keys, func, desc, mode)
|
||||||
|
mode = mode or 'n'
|
||||||
|
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' })
|
||||||
|
|
||||||
|
-- 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')
|
||||||
|
|
||||||
|
-- The following two autocommands are used to highlight references of the
|
||||||
|
-- word under your cursor when your cursor rests there for a little while.
|
||||||
|
-- See `:help CursorHold` for information about when this is executed
|
||||||
|
--
|
||||||
|
-- When you move your cursor, the highlights will be cleared (the second autocommand).
|
||||||
|
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||||
|
if client and client:supports_method('textDocument/documentHighlight', event.buf) then
|
||||||
|
local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false })
|
||||||
|
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
||||||
|
buffer = event.buf,
|
||||||
|
group = highlight_augroup,
|
||||||
|
callback = vim.lsp.buf.document_highlight,
|
||||||
})
|
})
|
||||||
|
|
||||||
---@type table<string, vim.lsp.Config>
|
---@type table<string, vim.lsp.Config>
|
||||||
|
|
@ -542,6 +764,38 @@ require('lazy').setup({
|
||||||
}
|
}
|
||||||
vim.keymap.set({ 'n', 'v' }, '<leader>f', function() require('conform').format { async = true } end, { desc = '[F]ormat buffer' })
|
vim.keymap.set({ 'n', 'v' }, '<leader>f', function() require('conform').format { async = true } end, { desc = '[F]ormat buffer' })
|
||||||
end,
|
end,
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 7: FORMATTING
|
||||||
|
-- conform.nvim setup and keymap
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- [[ Formatting ]]
|
||||||
|
vim.pack.add { gh 'stevearc/conform.nvim' }
|
||||||
|
require('conform').setup {
|
||||||
|
notify_on_error = false,
|
||||||
|
format_on_save = function(bufnr)
|
||||||
|
-- You can specify filetypes to autoformat on save here:
|
||||||
|
local enabled_filetypes = {
|
||||||
|
-- lua = true,
|
||||||
|
-- python = true,
|
||||||
|
}
|
||||||
|
if enabled_filetypes[vim.bo[bufnr].filetype] then
|
||||||
|
return { timeout_ms = 500 }
|
||||||
|
else
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
default_format_opts = {
|
||||||
|
lsp_format = 'fallback', -- Use external formatters if configured below, otherwise use LSP formatting. Set to `false` to disable LSP formatting entirely.
|
||||||
|
},
|
||||||
|
-- You can also specify external formatters in here.
|
||||||
|
formatters_by_ft = {
|
||||||
|
-- rust = { 'rustfmt' },
|
||||||
|
-- Conform can also run multiple formatters sequentially
|
||||||
|
-- python = { "isort", "black" },
|
||||||
|
--
|
||||||
|
-- You can use 'stop_after_first' to run the first available formatter from the list
|
||||||
|
-- javascript = { "prettierd", "prettier", stop_after_first = true },
|
||||||
},
|
},
|
||||||
|
|
||||||
-- ============================================================
|
-- ============================================================
|
||||||
|
|
@ -557,6 +811,54 @@ require('lazy').setup({
|
||||||
-- vim.pack.add { gh 'rafamadriz/friendly-snippets' }
|
-- vim.pack.add { gh 'rafamadriz/friendly-snippets' }
|
||||||
-- require('luasnip.loaders.from_vscode').lazy_load()
|
-- require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
end,
|
end,
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 8: AUTOCOMPLETE & SNIPPETS
|
||||||
|
-- blink.cmp and luasnip setup
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- [[ Snippet Engine ]]
|
||||||
|
|
||||||
|
-- NOTE: You can also specify plugin using a version range for its git tag.
|
||||||
|
-- See `:help vim.version.range()` for more info
|
||||||
|
vim.pack.add { { src = gh 'L3MON4D3/LuaSnip', version = vim.version.range '2.*' } }
|
||||||
|
require('luasnip').setup {}
|
||||||
|
|
||||||
|
-- `friendly-snippets` contains a variety of premade snippets.
|
||||||
|
-- See the README about individual language/framework/plugin snippets:
|
||||||
|
-- https://github.com/rafamadriz/friendly-snippets
|
||||||
|
--
|
||||||
|
-- vim.pack.add { gh 'rafamadriz/friendly-snippets' }
|
||||||
|
-- require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
|
|
||||||
|
-- [[ Autocomplete Engine ]]
|
||||||
|
vim.pack.add { { src = gh 'saghen/blink.cmp', version = vim.version.range '1.*' } }
|
||||||
|
require('blink.cmp').setup {
|
||||||
|
keymap = {
|
||||||
|
-- 'default' (recommended) for mappings similar to built-in completions
|
||||||
|
-- <c-y> to accept ([y]es) the completion.
|
||||||
|
-- This will auto-import if your LSP supports it.
|
||||||
|
-- This will expand snippets if the LSP sent a snippet.
|
||||||
|
-- 'super-tab' for tab to accept
|
||||||
|
-- 'enter' for enter to accept
|
||||||
|
-- 'none' for no mappings
|
||||||
|
--
|
||||||
|
-- For an understanding of why the 'default' preset is recommended,
|
||||||
|
-- you will need to read `:help ins-completion`
|
||||||
|
--
|
||||||
|
-- No, but seriously. Please read `:help ins-completion`, it is really good!
|
||||||
|
--
|
||||||
|
-- All presets have the following mappings:
|
||||||
|
-- <tab>/<s-tab>: move to right/left of your snippet expansion
|
||||||
|
-- <c-space>: Open menu or open docs if already open
|
||||||
|
-- <c-n>/<c-p> or <up>/<down>: Select next/previous item
|
||||||
|
-- <c-e>: Hide menu
|
||||||
|
-- <c-k>: Toggle signature help
|
||||||
|
--
|
||||||
|
-- See `:help blink-cmp-config-keymap` for defining your own keymap
|
||||||
|
preset = 'default',
|
||||||
|
|
||||||
|
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
|
||||||
|
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -641,6 +943,43 @@ require('lazy').setup({
|
||||||
|
|
||||||
{ import = 'custom.plugins' },
|
{ import = 'custom.plugins' },
|
||||||
},
|
},
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 9: TREESITTER
|
||||||
|
-- Parser installation, syntax highlighting, folds, indentation
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- [[ Configure Treesitter ]]
|
||||||
|
-- Used to highlight, edit, and navigate code
|
||||||
|
--
|
||||||
|
-- See `:help nvim-treesitter-intro`
|
||||||
|
|
||||||
|
-- NOTE: You can also specify a branch or a specific commit
|
||||||
|
vim.pack.add { { src = gh 'nvim-treesitter/nvim-treesitter', version = 'main' } }
|
||||||
|
|
||||||
|
-- Ensure basic parsers are installed
|
||||||
|
local parsers = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }
|
||||||
|
require('nvim-treesitter').install(parsers)
|
||||||
|
|
||||||
|
---@param buf integer
|
||||||
|
---@param language string
|
||||||
|
local function treesitter_try_attach(buf, language)
|
||||||
|
-- Check if a parser exists and load it
|
||||||
|
if not vim.treesitter.language.add(language) then return end
|
||||||
|
-- Enable syntax highlighting and other treesitter features
|
||||||
|
vim.treesitter.start(buf, language)
|
||||||
|
|
||||||
|
-- Enable treesitter based folds
|
||||||
|
-- For more info on folds see `:help folds`
|
||||||
|
-- vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
|
||||||
|
-- vim.wo.foldmethod = 'expr'
|
||||||
|
|
||||||
|
-- Check if treesitter indentation is available for this language, and if so enable it
|
||||||
|
-- in case there is no indent query, the indentexpr will fallback to the vim's built in one
|
||||||
|
local has_indent_query = vim.treesitter.query.get(language, 'indents') ~= nil
|
||||||
|
|
||||||
|
-- Enable treesitter based indentation
|
||||||
|
if has_indent_query then vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" end
|
||||||
|
end
|
||||||
|
|
||||||
install = { colorscheme = { 'gruvbox-medium', 'habamax' } },
|
install = { colorscheme = { 'gruvbox-medium', 'habamax' } },
|
||||||
checker = { enabled = false },
|
checker = { enabled = false },
|
||||||
|
|
@ -648,6 +987,14 @@ require('lazy').setup({
|
||||||
|
|
||||||
-- Open Oil in a floating window
|
-- Open Oil in a floating window
|
||||||
vim.keymap.set("n", "<leader>of", "<CMD>Oil --float<CR>", { desc = "Open Oil float" })
|
vim.keymap.set("n", "<leader>of", "<CMD>Oil --float<CR>", { desc = "Open Oil float" })
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 10: OPTIONAL EXAMPLES / NEXT STEPS
|
||||||
|
-- kickstart.plugins.* examples
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the
|
||||||
|
-- init.lua. If you want these files, they are in the repository, so you can just download them and
|
||||||
|
-- place them in the correct locations.
|
||||||
|
|
||||||
|
|
||||||
-- The line beneath this is called `modeline`. See `:help modeline`
|
-- The line beneath this is called `modeline`. See `:help modeline`
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,12 @@
|
||||||
-- Neo-tree is a Neovim plugin to browse the file system
|
-- Neo-tree is a Neovim plugin to browse the file system
|
||||||
-- https://github.com/nvim-neo-tree/neo-tree.nvim
|
-- https://github.com/nvim-neo-tree/neo-tree.nvim
|
||||||
|
|
||||||
local plugins = {
|
vim.pack.add {
|
||||||
{ src = 'https://github.com/nvim-neo-tree/neo-tree.nvim', version = vim.version.range '*' },
|
{ src = 'https://github.com/nvim-neo-tree/neo-tree.nvim', version = vim.version.range '*' },
|
||||||
'https://github.com/nvim-lua/plenary.nvim',
|
'https://github.com/nvim-lua/plenary.nvim',
|
||||||
'https://github.com/MunifTanjim/nui.nvim',
|
'https://github.com/MunifTanjim/nui.nvim',
|
||||||
}
|
}
|
||||||
|
|
||||||
if vim.g.have_nerd_font then
|
|
||||||
table.insert(plugins, 'https://github.com/nvim-tree/nvim-web-devicons') -- not strictly required, but recommended
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.pack.add(plugins)
|
|
||||||
|
|
||||||
vim.keymap.set('n', '\\', '<Cmd>Neotree reveal<CR>', { desc = 'NeoTree reveal', silent = true })
|
vim.keymap.set('n', '\\', '<Cmd>Neotree reveal<CR>', { desc = 'NeoTree reveal', silent = true })
|
||||||
|
|
||||||
require('neo-tree').setup {
|
require('neo-tree').setup {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue