summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.lua1
-rw-r--r--lazy-lock.json8
-rw-r--r--lua/config/init.lua3
-rw-r--r--lua/config/lazy.lua35
-rw-r--r--lua/config/remap.lua10
-rw-r--r--lua/plugins/fugitive.lua38
-rw-r--r--lua/plugins/telescope.lua29
-rw-r--r--lua/plugins/treesitter.lua86
8 files changed, 210 insertions, 0 deletions
diff --git a/init.lua b/init.lua
new file mode 100644
index 0000000..dbc863e
--- /dev/null
+++ b/init.lua
@@ -0,0 +1 @@
+require("config")
diff --git a/lazy-lock.json b/lazy-lock.json
new file mode 100644
index 0000000..8e33aad
--- /dev/null
+++ b/lazy-lock.json
@@ -0,0 +1,8 @@
+{
+ "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
+ "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
+ "nvim-treesitter-context": { "branch": "master", "commit": "660861b1849256398f70450afdf93908d28dc945" },
+ "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
+ "telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
+ "vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" }
+}
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
+ }
+}