summaryrefslogtreecommitdiff
path: root/lua/plugins
diff options
context:
space:
mode:
authorMichiel Schuurmans <michielschuurmans@gmail.com>2025-11-12 10:01:42 +0100
committerMichiel Schuurmans <michielschuurmans@gmail.com>2025-11-12 10:01:42 +0100
commited8094042fcab613771b1ee74883828d1a7310b3 (patch)
tree8d27fad322fb606fcced7359e49a5a7f8435a7d2 /lua/plugins
downloadnvim-ed8094042fcab613771b1ee74883828d1a7310b3.tar.xz
nvim-ed8094042fcab613771b1ee74883828d1a7310b3.zip
Base config
Diffstat (limited to 'lua/plugins')
-rw-r--r--lua/plugins/fugitive.lua38
-rw-r--r--lua/plugins/telescope.lua29
-rw-r--r--lua/plugins/treesitter.lua86
3 files changed, 153 insertions, 0 deletions
diff --git a/lua/plugins/fugitive.lua b/lua/plugins/fugitive.lua
new file mode 100644
index 0000000..1739932
--- /dev/null
+++ b/lua/plugins/fugitive.lua
@@ -0,0 +1,38 @@
+return {
+ "tpope/vim-fugitive",
+ config = function()
+ vim.keymap.set("n", "<leader>gs", vim.cmd.Git)
+
+ local ThePrimeagen_Fugitive = vim.api.nvim_create_augroup("ThePrimeagen_Fugitive", {})
+
+ local autocmd = vim.api.nvim_create_autocmd
+ autocmd("BufWinEnter", {
+ group = ThePrimeagen_Fugitive,
+ pattern = "*",
+ callback = function()
+ if vim.bo.ft ~= "fugitive" then
+ return
+ end
+
+ local bufnr = vim.api.nvim_get_current_buf()
+ local opts = {buffer = bufnr, remap = false}
+ vim.keymap.set("n", "<leader>p", function()
+ vim.cmd.Git('push')
+ end, opts)
+
+ -- rebase always
+ vim.keymap.set("n", "<leader>P", function()
+ vim.cmd.Git({'pull', '--rebase'})
+ end, opts)
+
+ -- NOTE: It allows me to easily set the branch i am pushing and any tracking
+ -- needed if i did not set the branch up correctly
+ vim.keymap.set("n", "<leader>t", ":Git push -u origin ", opts);
+ end,
+ })
+
+
+ vim.keymap.set("n", "gu", "<cmd>diffget //2<CR>")
+ vim.keymap.set("n", "gh", "<cmd>diffget //3<CR>")
+ end
+}
diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua
new file mode 100644
index 0000000..3b861b9
--- /dev/null
+++ b/lua/plugins/telescope.lua
@@ -0,0 +1,29 @@
+return {
+ "nvim-telescope/telescope.nvim",
+
+ tag = "0.1.5",
+
+ dependencies = {
+ "nvim-lua/plenary.nvim"
+ },
+
+ config = function()
+ require('telescope').setup({})
+
+ local builtin = require('telescope.builtin')
+ vim.keymap.set('n', '<leader>pf', builtin.find_files, {})
+ vim.keymap.set('n', '<C-p>', builtin.git_files, {})
+ vim.keymap.set('n', '<leader>pws', function()
+ local word = vim.fn.expand("<cword>")
+ builtin.grep_string({ search = word })
+ end)
+ vim.keymap.set('n', '<leader>pWs', function()
+ local word = vim.fn.expand("<cWORD>")
+ builtin.grep_string({ search = word })
+ end)
+ vim.keymap.set('n', '<leader>ps', function()
+ builtin.grep_string({ search = vim.fn.input("Grep > ") })
+ end)
+ vim.keymap.set('n', '<leader>vh', builtin.help_tags, {})
+ end
+}
diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua
new file mode 100644
index 0000000..d0f3f4e
--- /dev/null
+++ b/lua/plugins/treesitter.lua
@@ -0,0 +1,86 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ config = function()
+ require("nvim-treesitter.configs").setup({
+ -- A list of parser names, or "all"
+ ensure_installed = {
+ "vimdoc", "javascript", "typescript", "c", "lua", "rust",
+ "jsdoc", "bash", "go",
+ },
+
+ -- Install parsers synchronously (only applied to `ensure_installed`)
+ sync_install = false,
+
+ -- Automatically install missing parsers when entering buffer
+ -- Recommendation: set to false if you don"t have `tree-sitter` CLI installed locally
+ auto_install = true,
+
+ indent = {
+ enable = true
+ },
+
+ highlight = {
+ -- `false` will disable the whole extension
+ enable = true,
+ disable = function(lang, buf)
+ if lang == "html" then
+ print("disabled")
+ return true
+ end
+
+ local max_filesize = 100 * 1024 -- 100 KB
+ local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
+ if ok and stats and stats.size > max_filesize then
+ vim.notify(
+ "File larger than 100KB treesitter disabled for performance",
+ vim.log.levels.WARN,
+ {title = "Treesitter"}
+ )
+ return true
+ end
+ end,
+
+ -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
+ -- Set this to `true` if you depend on "syntax" being enabled (like for indentation).
+ -- Using this option may slow down your editor, and you may see some duplicate highlights.
+ -- Instead of true it can also be a list of languages
+ additional_vim_regex_highlighting = { "markdown" },
+ },
+ })
+
+ local treesitter_parser_config = require("nvim-treesitter.parsers").get_parser_configs()
+ treesitter_parser_config.templ = {
+ install_info = {
+ url = "https://github.com/vrischmann/tree-sitter-templ.git",
+ files = {"src/parser.c", "src/scanner.c"},
+ branch = "master",
+ },
+ }
+
+ vim.treesitter.language.register("templ", "templ")
+ end
+ },
+
+ {
+ "nvim-treesitter/nvim-treesitter-context",
+ after = "nvim-treesitter",
+ config = function()
+ require'treesitter-context'.setup{
+ enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
+ multiwindow = false, -- Enable multiwindow support.
+ max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit.
+ min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
+ line_numbers = true,
+ multiline_threshold = 20, -- Maximum number of lines to show for a single context
+ trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
+ mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline'
+ -- Separator between context and content. Should be a single character string, like '-'.
+ -- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
+ separator = nil,
+ zindex = 20, -- The Z-index of the context window
+ on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching
+ }
+ end
+ }
+}