diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/config/init.lua | 3 | ||||
| -rw-r--r-- | lua/config/lazy.lua | 35 | ||||
| -rw-r--r-- | lua/config/remap.lua | 10 | ||||
| -rw-r--r-- | lua/plugins/fugitive.lua | 38 | ||||
| -rw-r--r-- | lua/plugins/telescope.lua | 29 | ||||
| -rw-r--r-- | lua/plugins/treesitter.lua | 86 |
6 files changed, 201 insertions, 0 deletions
diff --git a/lua/config/init.lua b/lua/config/init.lua new file mode 100644 index 0000000..c9312a4 --- /dev/null +++ b/lua/config/init.lua @@ -0,0 +1,3 @@ +require("config.lazy") +require("config.remap") + diff --git a/lua/config/lazy.lua b/lua/config/lazy.lua new file mode 100644 index 0000000..a079dd4 --- /dev/null +++ b/lua/config/lazy.lua @@ -0,0 +1,35 @@ +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true, notify = false }, +}) diff --git a/lua/config/remap.lua b/lua/config/remap.lua new file mode 100644 index 0000000..78a17ab --- /dev/null +++ b/lua/config/remap.lua @@ -0,0 +1,10 @@ +vim.g.mapleader = " " +vim.keymap.set("n", "<leader>pv", vim.cmd.Ex) + +vim.api.nvim_set_keymap('i', 'jj', "<esc>", { noremap = true }) +vim.api.nvim_set_keymap('n', ':', ";", { noremap = true }) +vim.api.nvim_set_keymap('n', ';', ":", { noremap = true }) + +vim.opt.expandtab = false +vim.opt.tabstop = 8 +vim.opt.shiftwidth = 8 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 + } +} |
