From a81dc224bdcf9c10cee17c307116cc3146273e88 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 21 Jan 2025 10:55:56 +0100 Subject: [PATCH] feat(initial): add all dotfiles --- .gitignore | 5 ++ github-copilot/versions.json | 1 + glab-cli/aliases.yml | 2 + iterm2/AppSupport | 1 + nvim/.gitignore | 2 + nvim/README.md | 15 ++++ nvim/init.lua | 1 + nvim/lua/lspconfig/prolog_lsp.lua | 21 +++++ nvim/lua/olinpin/commands.lua | 38 +++++++++ nvim/lua/olinpin/init.lua | 10 +++ nvim/lua/olinpin/lazy.lua | 14 ++++ nvim/lua/olinpin/plugins/avante.lua | 87 ++++++++++++++++++++ nvim/lua/olinpin/plugins/barbecue.lua | 14 ++++ nvim/lua/olinpin/plugins/blankline.lua | 8 ++ nvim/lua/olinpin/plugins/color.lua | 25 ++++++ nvim/lua/olinpin/plugins/colorizer.lua | 7 ++ nvim/lua/olinpin/plugins/comment.lua | 17 ++++ nvim/lua/olinpin/plugins/copilot.lua | 22 +++++ nvim/lua/olinpin/plugins/dadbod.lua | 17 ++++ nvim/lua/olinpin/plugins/diagrams.lua | 3 + nvim/lua/olinpin/plugins/duck.lua | 11 +++ nvim/lua/olinpin/plugins/fugitive.lua | 11 +++ nvim/lua/olinpin/plugins/git-conflict.lua | 56 +++++++++++++ nvim/lua/olinpin/plugins/gitsigns.lua | 19 +++++ nvim/lua/olinpin/plugins/harpoon.lua | 65 +++++++++++++++ nvim/lua/olinpin/plugins/leap.lua | 24 ++++++ nvim/lua/olinpin/plugins/lsp.lua | 49 +++++++++++ nvim/lua/olinpin/plugins/lualine.lua | 11 +++ nvim/lua/olinpin/plugins/mason.lua | 6 ++ nvim/lua/olinpin/plugins/null-ls.lua | 33 ++++++++ nvim/lua/olinpin/plugins/range-highlight.lua | 7 ++ nvim/lua/olinpin/plugins/surround.lua | 4 + nvim/lua/olinpin/plugins/tabline.lua | 24 ++++++ nvim/lua/olinpin/plugins/telescope.lua | 57 +++++++++++++ nvim/lua/olinpin/plugins/todo.lua | 9 ++ nvim/lua/olinpin/plugins/treesitter.lua | 58 +++++++++++++ nvim/lua/olinpin/plugins/trouble.lua | 22 +++++ nvim/lua/olinpin/plugins/undotree.lua | 7 ++ nvim/lua/olinpin/plugins/vinegar.lua | 3 + nvim/lua/olinpin/plugins/which-key.lua | 32 +++++++ nvim/lua/olinpin/remap.lua | 80 ++++++++++++++++++ nvim/lua/olinpin/set.lua | 44 ++++++++++ tmux/plugins/tmux-fzf | 1 + tmux/plugins/tmux-resurrect | 1 + tmux/plugins/tmux-sessionx | 1 + tmux/plugins/tmux-which-key | 1 + tmux/plugins/tpm | 1 + tmux/tmux.conf | 69 ++++++++++++++++ 48 files changed, 1016 insertions(+) create mode 100644 github-copilot/versions.json create mode 100644 glab-cli/aliases.yml create mode 120000 iterm2/AppSupport create mode 100644 nvim/.gitignore create mode 100644 nvim/README.md create mode 100644 nvim/init.lua create mode 100644 nvim/lua/lspconfig/prolog_lsp.lua create mode 100644 nvim/lua/olinpin/commands.lua create mode 100644 nvim/lua/olinpin/init.lua create mode 100644 nvim/lua/olinpin/lazy.lua create mode 100644 nvim/lua/olinpin/plugins/avante.lua create mode 100644 nvim/lua/olinpin/plugins/barbecue.lua create mode 100644 nvim/lua/olinpin/plugins/blankline.lua create mode 100644 nvim/lua/olinpin/plugins/color.lua create mode 100644 nvim/lua/olinpin/plugins/colorizer.lua create mode 100644 nvim/lua/olinpin/plugins/comment.lua create mode 100644 nvim/lua/olinpin/plugins/copilot.lua create mode 100644 nvim/lua/olinpin/plugins/dadbod.lua create mode 100644 nvim/lua/olinpin/plugins/diagrams.lua create mode 100644 nvim/lua/olinpin/plugins/duck.lua create mode 100644 nvim/lua/olinpin/plugins/fugitive.lua create mode 100644 nvim/lua/olinpin/plugins/git-conflict.lua create mode 100644 nvim/lua/olinpin/plugins/gitsigns.lua create mode 100644 nvim/lua/olinpin/plugins/harpoon.lua create mode 100644 nvim/lua/olinpin/plugins/leap.lua create mode 100644 nvim/lua/olinpin/plugins/lsp.lua create mode 100644 nvim/lua/olinpin/plugins/lualine.lua create mode 100644 nvim/lua/olinpin/plugins/mason.lua create mode 100644 nvim/lua/olinpin/plugins/null-ls.lua create mode 100644 nvim/lua/olinpin/plugins/range-highlight.lua create mode 100644 nvim/lua/olinpin/plugins/surround.lua create mode 100644 nvim/lua/olinpin/plugins/tabline.lua create mode 100644 nvim/lua/olinpin/plugins/telescope.lua create mode 100644 nvim/lua/olinpin/plugins/todo.lua create mode 100644 nvim/lua/olinpin/plugins/treesitter.lua create mode 100644 nvim/lua/olinpin/plugins/trouble.lua create mode 100644 nvim/lua/olinpin/plugins/undotree.lua create mode 100644 nvim/lua/olinpin/plugins/vinegar.lua create mode 100644 nvim/lua/olinpin/plugins/which-key.lua create mode 100644 nvim/lua/olinpin/remap.lua create mode 100644 nvim/lua/olinpin/set.lua create mode 160000 tmux/plugins/tmux-fzf create mode 160000 tmux/plugins/tmux-resurrect create mode 160000 tmux/plugins/tmux-sessionx create mode 160000 tmux/plugins/tmux-which-key create mode 160000 tmux/plugins/tpm create mode 100644 tmux/tmux.conf diff --git a/.gitignore b/.gitignore index 7937828..d290d57 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ op +glab-cli/config.yml +glab-cli/**/mr.json +**/.DS_Store +**/lazy-lock.json +github-copilot/hosts.json diff --git a/github-copilot/versions.json b/github-copilot/versions.json new file mode 100644 index 0000000..eb14056 --- /dev/null +++ b/github-copilot/versions.json @@ -0,0 +1 @@ +{"copilot.lua":"1.13.0"} diff --git a/glab-cli/aliases.yml b/glab-cli/aliases.yml new file mode 100644 index 0000000..0121550 --- /dev/null +++ b/glab-cli/aliases.yml @@ -0,0 +1,2 @@ +ci: pipeline ci +co: mr checkout diff --git a/iterm2/AppSupport b/iterm2/AppSupport new file mode 120000 index 0000000..a795daf --- /dev/null +++ b/iterm2/AppSupport @@ -0,0 +1 @@ +/Users/oliverhnat/Library/Application Support/iTerm2 \ No newline at end of file diff --git a/nvim/.gitignore b/nvim/.gitignore new file mode 100644 index 0000000..78f465c --- /dev/null +++ b/nvim/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +lazy-lock.json diff --git a/nvim/README.md b/nvim/README.md new file mode 100644 index 0000000..66a5fde --- /dev/null +++ b/nvim/README.md @@ -0,0 +1,15 @@ +# Info +On the master branch is my current nvim configuration. On v2.0 is the nvchad configuration that I used to use before. + +## Todo: +- [x] When scrolling too much right, and then coming back, the screen doesn't come back as quickly +- [x] Add null-ls for formatting +- [x] Choose a theme +- [x] Change the color of the autocomplete +- [x] Make comments work +- [x] Delete tab when navigating out if it's not saved in harpoon +- [x] Add git to signcolumn +- [x] gitsigns not working +- [x] change ctrl L to ctrl ; for copilot, because clashing with ctrl l for moving in insert mode +- [ ] change my default lsp to something else +- [ ] figure out how to use emmet snips and autocomplete for commonly used functions like `if __name__ == "__main__":` etc diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..d5948f6 --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1 @@ +require("olinpin") diff --git a/nvim/lua/lspconfig/prolog_lsp.lua b/nvim/lua/lspconfig/prolog_lsp.lua new file mode 100644 index 0000000..e6134f8 --- /dev/null +++ b/nvim/lua/lspconfig/prolog_lsp.lua @@ -0,0 +1,21 @@ +local configs = require 'lspconfig.configs' +local util = require 'lspconfig.util' + +configs.prolog_lsp = { + default_config = { + cmd = {"swipl", + "-g", "use_module(library(lsp_server)).", + "-g", "lsp_server:main", + "-t", "halt", + "--", "stdio"}; + filetypes = {"prolog"}; + root_dir = util.root_pattern("pack.pl"); + }; + docs = { + description = [[ + https://github.com/jamesnvc/prolog_lsp + + Prolog Language Server + ]]; + } +} diff --git a/nvim/lua/olinpin/commands.lua b/nvim/lua/olinpin/commands.lua new file mode 100644 index 0000000..7fcc65f --- /dev/null +++ b/nvim/lua/olinpin/commands.lua @@ -0,0 +1,38 @@ +function InsertDebugPrint() + local ft = vim.bo.filetype + local filename = vim.fn.expand("%:t") + local lineno = vim.fn.line(".") + local current_line = vim.fn.getline(".") + local indent = string.match(current_line, "^%s*") + local print_statement = "" + local cursor_pos = #print_statement + + if ft == "go" then + print_statement = string.format('log.Printf("DEBUG: %s:%d - %%v", )', filename, lineno) + cursor_pos = #print_statement - 1 + elseif ft == "python" then + print_statement = string.format('print(f"DEBUG: %s:%d")', filename, lineno) + cursor_pos = #print_statement + 2 + elseif ft == "php" then + print_statement = string.format('dd("DEBUG: %s:%d ");', filename, lineno) + cursor_pos = #print_statement - 1 + elseif ft == "javascript" or ft == "typescript" then + print_statement = string.format('console.log("DEBUG: %s:%d: ", );', filename, lineno) + cursor_pos = #print_statement - 1 + else + return + end + + -- Insert the statement with the same indentation + print_statement = indent .. print_statement + vim.api.nvim_put({ print_statement }, 'l', true, true) + + -- Move the cursor to the right position & go into insert mode + local cursor_line = vim.fn.line(".") + vim.fn.cursor(cursor_line, cursor_pos) + -- vim.api.nvim_command('startinsert') +end + +vim.api.nvim_set_keymap('n', 'ic', ':lua InsertDebugPrint()', { noremap = true, silent = true }) + + diff --git a/nvim/lua/olinpin/init.lua b/nvim/lua/olinpin/init.lua new file mode 100644 index 0000000..60d6e9d --- /dev/null +++ b/nvim/lua/olinpin/init.lua @@ -0,0 +1,10 @@ +require("olinpin.set") +require("olinpin.lazy") +require("olinpin.remap") +require("olinpin.commands") + +-- this needs to be set after lazy +vim.o.timeoutlen = 0 +-- setup prolog +require('lspconfig/prolog_lsp') +require('lspconfig').prolog_lsp.setup{} diff --git a/nvim/lua/olinpin/lazy.lua b/nvim/lua/olinpin/lazy.lua new file mode 100644 index 0000000..1c14abf --- /dev/null +++ b/nvim/lua/olinpin/lazy.lua @@ -0,0 +1,14 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup("olinpin.plugins") diff --git a/nvim/lua/olinpin/plugins/avante.lua b/nvim/lua/olinpin/plugins/avante.lua new file mode 100644 index 0000000..13704a9 --- /dev/null +++ b/nvim/lua/olinpin/plugins/avante.lua @@ -0,0 +1,87 @@ +return { + "yetone/avante.nvim", + event = "VeryLazy", + lazy = false, + config = function(_, opts) + -- Let the plugin load first + require("avante").setup(opts) + -- Then remove the default mappings + vim.schedule(function() + vim.keymap.del({ "n", "v" }, "aa") + vim.keymap.del("n", "ar") + vim.keymap.del("v", "ae") + vim.keymap.del("n", "ah") + vim.keymap.del("n", "ad") + vim.keymap.del("n", "af") + vim.keymap.del("n", "aR") + vim.keymap.del("n", "as") + vim.keymap.del("n", "at") + end) + end, + opts = { + -- add any opts here + provider = "copilot", + copilot = { + model = "claude-3.5-sonnet", + -- max_tokens = 4096, + }, + }, + build = "make", + keys = { + { + "ca", + function() + require("avante.api").ask() + end, + desc = "avante: ask", + mode = { "n", "v" }, + }, + { + "cr", + function() + require("avante.api").refresh() + end, + desc = "avante: refresh", + }, + { + "ce", + function() + require("avante.api").edit() + end, + desc = "avante: edit", + mode = "v", + }, + { + "ch", + function() + require("avante.api").hint() + end, + desc = "avante: hint", + mode = "n", + }, + { + "cd", + function() + require("avante.api").debug() + end, + desc = "avante: debug", + mode = "n", + }, + }, + dependencies = { + "stevearc/dressing.nvim", + "nvim-lua/plenary.nvim", + "MunifTanjim/nui.nvim", + --- The below dependencies are optional, + -- "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons + { + -- Make sure to setup it properly if you have lazy=true + "MeanderingProgrammer/render-markdown.nvim", + -- "zbirenbaum/copilot.lua", -- for providers='copilot' + opts = { + file_types = { "markdown", "Avante" }, + }, + ft = { "markdown", "Avante" }, + }, + }, +} diff --git a/nvim/lua/olinpin/plugins/barbecue.lua b/nvim/lua/olinpin/plugins/barbecue.lua new file mode 100644 index 0000000..c89195a --- /dev/null +++ b/nvim/lua/olinpin/plugins/barbecue.lua @@ -0,0 +1,14 @@ +return { + "utilyre/barbecue.nvim", + name = "barbecue", + event = { "VeryLazy"}, + version = "*", + dependencies = { + "SmiteshP/nvim-navic", + "nvim-tree/nvim-web-devicons", -- optional dependency + }, + opts = { + -- configurations go here + } +} + diff --git a/nvim/lua/olinpin/plugins/blankline.lua b/nvim/lua/olinpin/plugins/blankline.lua new file mode 100644 index 0000000..1e2f99e --- /dev/null +++ b/nvim/lua/olinpin/plugins/blankline.lua @@ -0,0 +1,8 @@ +return { + "lukas-reineke/indent-blankline.nvim", + event = "VeryLazy", + config = function () + require("ibl").setup { + } + end +} diff --git a/nvim/lua/olinpin/plugins/color.lua b/nvim/lua/olinpin/plugins/color.lua new file mode 100644 index 0000000..39023a0 --- /dev/null +++ b/nvim/lua/olinpin/plugins/color.lua @@ -0,0 +1,25 @@ +function ColorMe(color) + color = color or "OceanicNext" + vim.cmd.colorscheme(color) + + vim.api.nvim_set_hl(0, "Normal", { bg = "none" }) + vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" }) +end + +return { + { + 'mhartington/oceanic-next', + config = function () + -- require('oceanic-next').setup() + vim.cmd.colorscheme('OceanicNext') + vim.cmd("highlight! EndOfBuffer guibg=background guifg=background") + end + } + -- { + -- 'nxvu699134/vn-night.nvim', + -- config = function () + -- vim.cmd.colorscheme('vn-night') + -- vim.cmd("highlight! EndOfBuffer guibg=background guifg=background") + -- end + -- } +} diff --git a/nvim/lua/olinpin/plugins/colorizer.lua b/nvim/lua/olinpin/plugins/colorizer.lua new file mode 100644 index 0000000..fd072d0 --- /dev/null +++ b/nvim/lua/olinpin/plugins/colorizer.lua @@ -0,0 +1,7 @@ +return { + 'norcalli/nvim-colorizer.lua', + event = "VeryLazy", + config = function() + require('colorizer').setup() + end +} diff --git a/nvim/lua/olinpin/plugins/comment.lua b/nvim/lua/olinpin/plugins/comment.lua new file mode 100644 index 0000000..efa47bc --- /dev/null +++ b/nvim/lua/olinpin/plugins/comment.lua @@ -0,0 +1,17 @@ +return { + "numToStr/Comment.nvim", + event = "VeryLazy", + lazy = false, + + config = function () + require('Comment').setup({ + opleader = { + -- Line-comment toggle keymap + line = '/' + }, + toggler = { + line = "/" + } + }) + end +} diff --git a/nvim/lua/olinpin/plugins/copilot.lua b/nvim/lua/olinpin/plugins/copilot.lua new file mode 100644 index 0000000..34d90a8 --- /dev/null +++ b/nvim/lua/olinpin/plugins/copilot.lua @@ -0,0 +1,22 @@ +return { + "zbirenbaum/copilot.lua", + cmd = "Copilot", + event = "InsertEnter", + config = function () + require("copilot").setup({ + suggestion = { + enabled = true, + auto_trigger = true, + keymap = { + accept = "…" + } + }, + panel = { + enabled = false, + }, + filetypes = { + ["."] = false, + } + }) + end +} diff --git a/nvim/lua/olinpin/plugins/dadbod.lua b/nvim/lua/olinpin/plugins/dadbod.lua new file mode 100644 index 0000000..082b954 --- /dev/null +++ b/nvim/lua/olinpin/plugins/dadbod.lua @@ -0,0 +1,17 @@ +return { + 'kristijanhusak/vim-dadbod-ui', + dependencies = { + { 'tpope/vim-dadbod', lazy = true }, + { 'kristijanhusak/vim-dadbod-completion', ft = { 'sql', 'mysql' }, lazy = true }, + }, + cmd = { + 'DBUI', + 'DBUIToggle', + 'DBUIAddConnection', + 'DBUIFindBuffer', + }, + init = function() + -- Your DBUI configuration + vim.g.db_ui_use_nerd_fonts = 1 + end +} diff --git a/nvim/lua/olinpin/plugins/diagrams.lua b/nvim/lua/olinpin/plugins/diagrams.lua new file mode 100644 index 0000000..9cbaf19 --- /dev/null +++ b/nvim/lua/olinpin/plugins/diagrams.lua @@ -0,0 +1,3 @@ +return { + "xavierchow/vim-sequence-diagram" +} diff --git a/nvim/lua/olinpin/plugins/duck.lua b/nvim/lua/olinpin/plugins/duck.lua new file mode 100644 index 0000000..4435ec3 --- /dev/null +++ b/nvim/lua/olinpin/plugins/duck.lua @@ -0,0 +1,11 @@ +return { + 'tamton-aquib/duck.nvim', + config = function() + local duck = require("duck") + vim.keymap.set('n', 'dd', function() duck.hatch() end, {}) + vim.keymap.set('n', 'dc', function() duck.hatch("🐿️", 20) end, {}) + vim.keymap.set('n', 'dk', function() duck.cook() end, {}) + vim.keymap.set('n', 'dk', function() duck.cook("🐿️") end, {}) + -- duck.hatch("🐿️", 20) + end +} diff --git a/nvim/lua/olinpin/plugins/fugitive.lua b/nvim/lua/olinpin/plugins/fugitive.lua new file mode 100644 index 0000000..3836b96 --- /dev/null +++ b/nvim/lua/olinpin/plugins/fugitive.lua @@ -0,0 +1,11 @@ +return { + 'tpope/vim-fugitive', + event = "VeryLazy", + config = function() + vim.keymap.set("n", "gs", vim.cmd.Git) + vim.keymap.set("n", "gpl", ":G pull", { desc = "Git pull" }) + vim.keymap.set("n", "gps", ":G push", { desc = "Git push" }) + vim.keymap.set("n", "gc", ":Git commit", { desc = "Git commit" }) + vim.keymap.set("n", "ga", ":Gwrite", { desc = "Git add current file" }) + end +} diff --git a/nvim/lua/olinpin/plugins/git-conflict.lua b/nvim/lua/olinpin/plugins/git-conflict.lua new file mode 100644 index 0000000..680e6ae --- /dev/null +++ b/nvim/lua/olinpin/plugins/git-conflict.lua @@ -0,0 +1,56 @@ +return { +-- "akinsho/git-conflict.nvim", +-- version = "*", +-- lazy = true, +-- config = function() +-- require("git-conflict").setup({ +-- default_mappings = false, +-- default_commands = true, -- disable commands created by this plugin +-- disable_diagnostics = false, -- This will disable the diagnostics in a buffer whilst it is conflicted +-- list_opener = "copen", -- command or function to open the conflicts list +-- -- highlights = { -- They must have background color, otherwise the default color will be used +-- -- incoming = "DiffAdd", +-- -- current = "DiffText", +-- -- ancestor = "DiffChange", +-- -- }, +-- }) +-- +-- local function conflict_choose(choice) +-- return function() +-- vim.cmd("GitConflictChoose" .. choice) +-- vim.cmd("AvanteConflictChoose" .. choice) +-- end +-- end +-- +-- local function resolve_conflict(action) +-- if vim.fn.exists(":GitConflict") == 2 and vim.fn["git_conflict#is_conflicted"]() then +-- if action == "ours" then +-- return vim.cmd("GitConflictChooseOurs") +-- elseif action == "theirs" then +-- return vim.cmd("GitConflictChooseTheirs") +-- elseif action == "both" then +-- return vim.cmd("GitConflictChooseBoth") +-- elseif action == "none" then +-- return vim.cmd("GitConflictChooseNone") +-- end +-- elseif vim.fn.exists(":Avante") == 2 then +-- if action == "ours" then +-- return vim.cmd("AvanteChooseOurs") +-- elseif action == "theirs" then +-- return vim.cmd("AvanteChooseTheirs") +-- elseif action == "both" then +-- return vim.cmd("AvanteChooseBoth") +-- elseif action == "none" then +-- return vim.cmd("AvanteChooseNone") +-- end +-- else +-- return "" +-- end +-- end +-- +-- vim.keymap.set("n", "co", resolve_conflict("ours"), { desc = "Choose Ours (Avante & Git Conflict)" }) +-- vim.keymap.set("n", "ct", resolve_conflict("theirs"), { desc = "Choose Theirs (Avante & Git Conflict)"}) +-- vim.keymap.set("n", "cb", resolve_conflict("both"), { desc = "Choose Both (Avante & Git Conflict)" }) +-- vim.keymap.set("n", "cn", resolve_conflict("none"), { desc = "Choose None (Avante & Git Conflict)" }) +-- end, +} diff --git a/nvim/lua/olinpin/plugins/gitsigns.lua b/nvim/lua/olinpin/plugins/gitsigns.lua new file mode 100644 index 0000000..5f9a6ea --- /dev/null +++ b/nvim/lua/olinpin/plugins/gitsigns.lua @@ -0,0 +1,19 @@ +return { + "lewis6991/gitsigns.nvim", + event = "VeryLazy", + opts = function() + return { + signs = { + add = { text = "│" }, + change = { text = "│" }, + delete = { text = "󰍵" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + untracked = { text = "│" }, + } + } + end, + config = function() + require("gitsigns").setup() + end +} diff --git a/nvim/lua/olinpin/plugins/harpoon.lua b/nvim/lua/olinpin/plugins/harpoon.lua new file mode 100644 index 0000000..e14b73e --- /dev/null +++ b/nvim/lua/olinpin/plugins/harpoon.lua @@ -0,0 +1,65 @@ +return { + + 'ThePrimeagen/harpoon', + event = "VeryLazy", + dependencies = 'nvim-lua/plenary.nvim', + config = function() + require("harpoon").setup({ + tabline = true, + tabline_prefix = " ", + tabline_suffix = " ", + menu = { + width = vim.api.nvim_win_get_width(0) - 20, + } + }) + local mark = require("harpoon.mark") + local ui = require("harpoon.ui") + local harpoon = require("harpoon") + + vim.keymap.set("n", "a", mark.add_file) + vim.keymap.set("n", "x", function() + -- remove current file + mark.rm_file(vim.fn.expand('%')) + + local new_marks = {} + local config = harpoon.get_mark_config() + + -- loop over the current marks + for idx = 1, mark.get_length() do + local filename = config.marks[idx].filename + -- if the mark is not empty, add it to the new marks table (removes the '(empty)' file) + if filename ~= "" then + table.insert(new_marks, { + filename = filename, + row = config.marks[idx].row, + col = config.marks[idx].col, + }) + end + end + config.marks = new_marks + + ui.nav_prev() + + end) + vim.keymap.set("n", "h", ui.toggle_quick_menu) + + vim.keymap.set("n", "1", function() ui.nav_file(1) end) + vim.keymap.set("n", "2", function() ui.nav_file(2) end) + vim.keymap.set("n", "3", function() ui.nav_file(3) end) + vim.keymap.set("n", "4", function() ui.nav_file(4) end) + vim.keymap.set("n", "5", function() ui.nav_file(5) end) + vim.keymap.set("n", "6", function() ui.nav_file(6) end) + vim.keymap.set("n", "7", function() ui.nav_file(7) end) + vim.keymap.set("n", "8", function() ui.nav_file(8) end) + vim.keymap.set("n", "9", function() ui.nav_file(9) end) + + + vim.keymap.set("n", "", ui.nav_next) + vim.keymap.set("n", "", ui.nav_prev) + vim.cmd('highlight! HarpoonInactive guibg=NONE guifg=#63698c') + vim.cmd('highlight! HarpoonActive guibg=NONE guifg=white') + vim.cmd('highlight! HarpoonNumberActive guibg=NONE guifg=#7aa2f7') + vim.cmd('highlight! HarpoonNumberInactive guibg=NONE guifg=#7aa2f7') + vim.cmd('highlight! TabLineFill guibg=NONE guifg=background') + end +} diff --git a/nvim/lua/olinpin/plugins/leap.lua b/nvim/lua/olinpin/plugins/leap.lua new file mode 100644 index 0000000..851e926 --- /dev/null +++ b/nvim/lua/olinpin/plugins/leap.lua @@ -0,0 +1,24 @@ +return { + "ggandor/leap.nvim", + config = function () + require('leap') + vim.keymap.set("n", "s", "(leap-forward-to)", { desc = "Leap forward to" }) + -- default mapping: `s` + + vim.keymap.set("n", "S", "(leap-backward-to)", { desc = "Leap backward to" }) + -- arguments: `{ backward = true }` + -- default mapping: `S` + + vim.keymap.set("n", "b", "(leap-forward-till)", { desc = "Leap forward till" } ) + -- arguments: `{ offset = -1, inclusive_op = true }` + -- default mapping: `x` (Visual and Operator-pending mode only) + + vim.keymap.set("n", "B", "(leap-backward-till)", { desc = "Leap backward till" }) + -- arguments: `{ backward = true, offset = 2 }` + -- default mapping: `X` (Visual and Operator-pending mode only) + + -- (leap-from-window) + -- arguments: `{ target_windows = require('leap.util').get_enterable_windows() }` + -- default mapping: `gs` + end +} diff --git a/nvim/lua/olinpin/plugins/lsp.lua b/nvim/lua/olinpin/plugins/lsp.lua new file mode 100644 index 0000000..63863f3 --- /dev/null +++ b/nvim/lua/olinpin/plugins/lsp.lua @@ -0,0 +1,49 @@ +return { + 'VonHeikemen/lsp-zero.nvim', + branch = 'v2.x', + dependencies = { + -- LSP Support + {'neovim/nvim-lspconfig'}, -- Required + {'williamboman/mason.nvim'}, -- Optional + {'williamboman/mason-lspconfig.nvim'}, -- Optional + + -- Autocompletion + {'hrsh7th/nvim-cmp'}, -- Required + {'hrsh7th/cmp-nvim-lsp'}, -- Required + {'L3MON4D3/LuaSnip'}, -- Required + }, + config = function() + local lsp = require('lsp-zero') + + lsp.preset('recommended') + + lsp.on_attach(function(client, bufnr) + -- see :help lsp-zero-keybindings + -- to learn the available actions + lsp.default_keymaps({buffer = bufnr}) + end) + + lsp.setup_servers({'ts_ls', 'eslint', 'html', 'hls', 'gopls'}) + + -- require("lspconfig").html.setup({ + -- filetypes = { "html", "htmldjango" }, + -- init_options = { + -- configurationSection = { "html", "css", "javascript" }, + -- embeddedLanguages = { + -- css = true, + -- javascript = true, + -- }, + -- provideFormatter = true, + -- }, + -- }) + + require('lspconfig').lua_ls.setup(lsp.nvim_lua_ls()) + lsp.set_sign_icons({ + error = '✘', + warn = '▲', + hint = '⚑', + info = '»' + }) + lsp.setup() + end +} diff --git a/nvim/lua/olinpin/plugins/lualine.lua b/nvim/lua/olinpin/plugins/lualine.lua new file mode 100644 index 0000000..b19d81c --- /dev/null +++ b/nvim/lua/olinpin/plugins/lualine.lua @@ -0,0 +1,11 @@ +return { + 'nvim-lualine/lualine.nvim', + requires = { 'nvim-tree/nvim-web-devicons', opt = true }, + config = function () + require('lualine').setup({ + options = { + theme = 'ayu_mirage' + } + }) + end +} diff --git a/nvim/lua/olinpin/plugins/mason.lua b/nvim/lua/olinpin/plugins/mason.lua new file mode 100644 index 0000000..946625b --- /dev/null +++ b/nvim/lua/olinpin/plugins/mason.lua @@ -0,0 +1,6 @@ +return { + "williamboman/mason.nvim", + config = function() + require("mason").setup() + end +} diff --git a/nvim/lua/olinpin/plugins/null-ls.lua b/nvim/lua/olinpin/plugins/null-ls.lua new file mode 100644 index 0000000..a610211 --- /dev/null +++ b/nvim/lua/olinpin/plugins/null-ls.lua @@ -0,0 +1,33 @@ +return { + "jay-babu/mason-null-ls.nvim", + event = { "BufReadPre", "BufNewFile" }, + dependencies = { + "williamboman/mason.nvim", + "jose-elias-alvarez/null-ls.nvim", + }, + config = function () + + require("mason-null-ls").setup({ + ensure_installed = { + "stylua", + "jq", + "php-cs-fixer", + "intelephense", + "black", + "prettier", + } + }) + + local null_ls = require("null-ls") + local format = null_ls.builtins.formatting + + null_ls.setup({ + sources = { + format.black, + format.stylua, + format.prettier + } + }) + vim.keymap.set({"n", "x"}, "=", function() vim.cmd('LspZeroFormat') end, { desc = "Format" }) + end +} diff --git a/nvim/lua/olinpin/plugins/range-highlight.lua b/nvim/lua/olinpin/plugins/range-highlight.lua new file mode 100644 index 0000000..5d2637d --- /dev/null +++ b/nvim/lua/olinpin/plugins/range-highlight.lua @@ -0,0 +1,7 @@ +return { + "winston0410/range-highlight.nvim", + dependencies = "winston0410/cmd-parser.nvim", + config = function () + require("range-highlight").setup() + end +} diff --git a/nvim/lua/olinpin/plugins/surround.lua b/nvim/lua/olinpin/plugins/surround.lua new file mode 100644 index 0000000..83b2df3 --- /dev/null +++ b/nvim/lua/olinpin/plugins/surround.lua @@ -0,0 +1,4 @@ +return { + "tpope/vim-surround", + event = "VeryLazy" +} diff --git a/nvim/lua/olinpin/plugins/tabline.lua b/nvim/lua/olinpin/plugins/tabline.lua new file mode 100644 index 0000000..917a965 --- /dev/null +++ b/nvim/lua/olinpin/plugins/tabline.lua @@ -0,0 +1,24 @@ +return { + 'kdheepak/tabline.nvim', + config = function() + require('tabline').setup({ + -- Defaults configuration options + enable = true, + options = { + -- If lualine is installed tabline will use separators configured in lualine by default. + -- These options can be used to override those settings. + section_separators = {'', ''}, + component_separators = {'', ''}, + max_bufferline_percent = 66, -- set to nil by default, and it uses vim.o.columns * 2/3 + show_tabs_always = true, -- this shows tabs only when there are more than one tab or if the first tab is named + show_devicons = true, -- this shows devicons in buffer section + show_bufnr = false, -- this appends [bufnr] to buffer section, + show_filename_only = true, -- shows base filename only instead of relative path in filename + modified_icon = "+ ", -- change the default modified icon + modified_italic = false, -- set to true by default; this determines whether the filename turns italic if modified + show_tabs_only = false, -- this shows only tabs instead of tabs + buffers + } + }) + end, + requires = { { 'hoob3rt/lualine.nvim', opt=true }, {'kyazdani42/nvim-web-devicons', opt = true} } +} diff --git a/nvim/lua/olinpin/plugins/telescope.lua b/nvim/lua/olinpin/plugins/telescope.lua new file mode 100644 index 0000000..421f161 --- /dev/null +++ b/nvim/lua/olinpin/plugins/telescope.lua @@ -0,0 +1,57 @@ +local _bad = { ".*%.min.css", ".*%.min.js" } -- remove minified results crashing the previewer +local bad_files = function(filepath) + for _, v in ipairs(_bad) do + if filepath:match(v) then + return false + end + end + + return true +end + +local new_maker = function(filepath, bufnr, opts) + local previewers = require("telescope.previewers") + opts = opts or {} + if opts.use_ft_detect == nil then + opts.use_ft_detect = true + end + opts.use_ft_detect = opts.use_ft_detect == false and false or bad_files(filepath) + previewers.buffer_previewer_maker(filepath, bufnr, opts) +end + +return { + "nvim-telescope/telescope.nvim", + event = "VeryLazy", + tag = "0.1.8", + dependencies = { "nvim-lua/plenary.nvim" }, + init = function() + local builtin = require("telescope.builtin") + local telescope = require("telescope") + + telescope.setup({ + defaults = { + buffer_previewer_maker = new_maker, + }, + pickers = { + find_files = { + -- `hidden = true` will still show the inside of `.git/` as it's not `.gitignore`d. + find_command = { "rg", "--files", "--hidden", "--no-ignore", + "--glob", "!**/.git/*", "--glob", "!**/venv/*", "--glob", "!**/.venv/*", "--glob", + "!**/node_modules/*", + "--glob", "!**/vendor/*", "--glob", "!**/var/cache/*", + "--glob", "!**/.next/*", "--glob", "!**/out/*", "--glob", "!**/dist/*", "--glob", "!**.min.js" + }, + }, + }, + preview = { + filesize_limit = 0.5, -- MB + }, + }) + vim.keymap.set('n', '*', builtin.grep_string, {desc = "Grep current string"}) + vim.keymap.set('n', 'ff', builtin.find_files, {desc = "Find files"}) + vim.keymap.set('n', 'fg', builtin.git_branches, {desc = "Find Git branches" }) + vim.keymap.set('n', 'fc', builtin.git_commits, {desc = "Find Commits" }) + vim.keymap.set('n', 'fw', builtin.live_grep, {desc = "Find Words" }) + + end, +} diff --git a/nvim/lua/olinpin/plugins/todo.lua b/nvim/lua/olinpin/plugins/todo.lua new file mode 100644 index 0000000..da395da --- /dev/null +++ b/nvim/lua/olinpin/plugins/todo.lua @@ -0,0 +1,9 @@ +return { + "folke/todo-comments.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + opts = { + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + } +} diff --git a/nvim/lua/olinpin/plugins/treesitter.lua b/nvim/lua/olinpin/plugins/treesitter.lua new file mode 100644 index 0000000..8f39fdd --- /dev/null +++ b/nvim/lua/olinpin/plugins/treesitter.lua @@ -0,0 +1,58 @@ +return { + 'nvim-treesitter/nvim-treesitter', + event = "VeryLazy", + cmd = 'TSUpdate', + config = function() + require'nvim-treesitter.configs'.setup { + -- A list of parser names, or "all" (the five listed parsers should always be installed) + ensure_installed = { + "vimdoc", + "bash", + "css", + "javascript", + "python", + "c", + "lua", + "vim", + "vimdoc", + "query", + "go", + "markdown", + "markdown_inline", + "regex", + "swift", + "php", + "kotlin", + "rust", + "haskell", + "html" + }, + + -- 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, + + highlight = { + enable = true, + + -- 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"} + }, + } + require'lspconfig'.sourcekit.setup{ + cmd = {'/usr/bin/sourcekit-lsp'} + } + require('lspconfig')['hls'].setup{ + filetypes = { 'haskell', 'lhaskell', 'cabal' }, + } + + -- vim.keymap.set('n','gd',vim.lsp.buf.definition) + end + +} diff --git a/nvim/lua/olinpin/plugins/trouble.lua b/nvim/lua/olinpin/plugins/trouble.lua new file mode 100644 index 0000000..0c3ac53 --- /dev/null +++ b/nvim/lua/olinpin/plugins/trouble.lua @@ -0,0 +1,22 @@ +return { + "folke/trouble.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + opts = { + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + }, + event = "VeryLazy", + keys = { + { + "", + "Trouble diagnostics toggle", + desc = "Diagnostics (Trouble)", + }, + { + "", + "Trouble diagnostics toggle filter.buf=0", + desc = "Buffer Diagnostics (Trouble)", + }, + } +} diff --git a/nvim/lua/olinpin/plugins/undotree.lua b/nvim/lua/olinpin/plugins/undotree.lua new file mode 100644 index 0000000..ea52adc --- /dev/null +++ b/nvim/lua/olinpin/plugins/undotree.lua @@ -0,0 +1,7 @@ +return { + 'mbbill/undotree', + event = "VeryLazy", + init = function() + vim.keymap.set("n", "u", vim.cmd.UndotreeToggle) + end +} diff --git a/nvim/lua/olinpin/plugins/vinegar.lua b/nvim/lua/olinpin/plugins/vinegar.lua new file mode 100644 index 0000000..65ee036 --- /dev/null +++ b/nvim/lua/olinpin/plugins/vinegar.lua @@ -0,0 +1,3 @@ +return { + "tpope/vim-vinegar" +} diff --git a/nvim/lua/olinpin/plugins/which-key.lua b/nvim/lua/olinpin/plugins/which-key.lua new file mode 100644 index 0000000..9093c50 --- /dev/null +++ b/nvim/lua/olinpin/plugins/which-key.lua @@ -0,0 +1,32 @@ +return { + "folke/which-key.nvim", + event = "VeryLazy", + init = function() + -- vim.o.timeout = true + vim.o.timeoutlen = 500 + end, + config = function() + local wk = require("which-key") + wk.add({ + { "1", desc = "Openf harpoon buffer 1" }, + { "2", hidden = true }, + { "3", hidden = true }, + { "4", hidden = true }, + { "5", hidden = true }, + { "6", hidden = true }, + { "7", hidden = true }, + { "8", hidden = true }, + { "9", hidden = true }, + { "a", desc = "Add file to harpoon" }, + { "dd", desc = "duck hatch" }, + { "dk", desc = "duck cook" }, + { "f", group = "Find" }, + { "g", group = "Git" }, + { "gs", desc = "Open Git status" }, + { "h", desc = "Open Harpoon quick menu" }, + { "u", desc = "Toggle Undotree" }, + { "w", desc = "Replace all current words" }, + { "x", desc = "Close and remove buffer from harpoon" }, + }) + end, +} diff --git a/nvim/lua/olinpin/remap.lua b/nvim/lua/olinpin/remap.lua new file mode 100644 index 0000000..329fc68 --- /dev/null +++ b/nvim/lua/olinpin/remap.lua @@ -0,0 +1,80 @@ +vim.keymap.set("n", "", vim.cmd.Ex, { desc = "Open explorer" }) +vim.keymap.set("n", ";", ":") + + +-- window nav remaps +vim.keymap.set("n", "", "h", { desc = "Move window left" }) +vim.keymap.set("n", "", "j", { desc = "Move window down" }) +vim.keymap.set("n", "", "k", { desc = "Move window up" }) +vim.keymap.set("n", "", "l", { desc = "Move window right" }) + +-- window split remaps + +-- move selected lines +vim.keymap.set("v", "J", ":m '>+1gv=gv", { desc = "Move selected down" }) +vim.keymap.set("v", "K", ":m '<-2gv=gv", { desc = "Move selected up" }) + +-- keep cursor in middle when searching +vim.keymap.set("n", "n", "nzzzv") +vim.keymap.set("n", "N", "Nzzzv") + + +-- keep copied text when pasting over selected text +vim.keymap.set("x", "p", "\"_dP", { desc = "Paste over selected text" }) + +-- replace the word you're on everywhere in buffer +vim.keymap.set("n", "w", ":%s/\\<\\>//gI", { desc = "Replace word" }) + + +-- move within insert mode +-- go to beginning and end +vim.keymap.set("i", "", "^i", { desc = "Beginning of line" }) +vim.keymap.set("i", "", "", { desc = "End of line" }) + +-- navigate within insert mode +vim.keymap.set("i", "", "", { desc = "Move left" }) +vim.keymap.set("i", "", "", { desc = "Move right" }) +vim.keymap.set("i", "", "", { desc = "Move down" }) +vim.keymap.set("i", "", "", { desc = "Move up" }) + +vim.keymap.set("x", "Y", "\"*y", { desc = "Copy to clipboard" }) -- copy to clipboard + +vim.keymap.set("n", "", ":noh", { desc = "Clear highlights" }) + +-- copy file path +vim.keymap.set("n", "cfp", [[:let @+ = expand("%:p")]], { desc = "Copy file path" }) + +vim.keymap.set("n", "ff", "za", { desc = "Fold" }) + +-- remap parentheses to add end parenthese +-- vim.keymap.set("i", "(", "()") +-- vim.keymap.set("i", "{", "{}") +-- vim.keymap.set("i", "[", "[]") + +-- remap to add end quotes +-- vim.keymap.set("i", "'", "''") +-- vim.keymap.set("i", "\"", "\"\"") +-- vim.keymap.set("i", "`", "``") + +-- remove mappings for avante +-- vim.keymap.del("n", "aa") +-- vim.keymap.del("v", "aa") +-- vim.keymap.del("n", "ar") +-- vim.keymap.del("v", "ae") +-- vim.keymap.del("n", "ah") +-- vim.keymap.del("n", "ad") + +-- remove mappings from which-key +-- local wk = require("which-key") +-- wk.add({ +-- { "aa", hidden = true }, +-- { "ad", hidden = true }, +-- { "ae", hidden = true }, +-- { "ah", hidden = true }, +-- { "ar", hidden = true }, +-- }) + + + +vim.api.nvim_set_keymap("n", "ys", "Ysurround", {}) + diff --git a/nvim/lua/olinpin/set.lua b/nvim/lua/olinpin/set.lua new file mode 100644 index 0000000..cd6a5cf --- /dev/null +++ b/nvim/lua/olinpin/set.lua @@ -0,0 +1,44 @@ +-- keep cursor in middle +vim.o.scrolloff = 800 +-- keep cursor on the left +vim.o.sidescrolloff = 30 +-- set relative line numbering +vim.opt.nu = true +vim.wo.relativenumber = true +-- turn off line wrap +vim.wo.wrap = false +-- make commands case insensitive +vim.o.ignorecase = true + +-- indenting +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 +vim.opt.expandtab = true +vim.opt.smartindent = true + + +-- use undotree instead of vim backups +vim.opt.swapfile = false +vim.opt.backup = false +vim.undodir = os.getenv("HOME") .. "/.vim/undodir" +vim.opt.undofile = true + +-- make vim update fast +vim.opt.updatetime = 50 + + +-- vim.opt.colorcolumn = "80" + +vim.g.mapleader = " " + +vim.opt.signcolumn = "yes" + +vim.opt.termguicolors = true + +vim.opt.fillchars = { fold = " " } +vim.opt.foldmethod = "indent" +vim.opt.foldenable = false +vim.opt.foldlevel = 99 +-- g.markdown_folding = 1 -- enable markdown folding + diff --git a/tmux/plugins/tmux-fzf b/tmux/plugins/tmux-fzf new file mode 160000 index 0000000..1547f18 --- /dev/null +++ b/tmux/plugins/tmux-fzf @@ -0,0 +1 @@ +Subproject commit 1547f18083ead1b235680aa5f98427ccaf5beb21 diff --git a/tmux/plugins/tmux-resurrect b/tmux/plugins/tmux-resurrect new file mode 160000 index 0000000..cff343c --- /dev/null +++ b/tmux/plugins/tmux-resurrect @@ -0,0 +1 @@ +Subproject commit cff343cf9e81983d3da0c8562b01616f12e8d548 diff --git a/tmux/plugins/tmux-sessionx b/tmux/plugins/tmux-sessionx new file mode 160000 index 0000000..c2eb0e1 --- /dev/null +++ b/tmux/plugins/tmux-sessionx @@ -0,0 +1 @@ +Subproject commit c2eb0e19bf3ffba2b64e1ab63cdf37cb61f53e3c diff --git a/tmux/plugins/tmux-which-key b/tmux/plugins/tmux-which-key new file mode 160000 index 0000000..545831e --- /dev/null +++ b/tmux/plugins/tmux-which-key @@ -0,0 +1 @@ +Subproject commit 545831eb95e402658b2899174cebcefeac0e922a diff --git a/tmux/plugins/tpm b/tmux/plugins/tpm new file mode 160000 index 0000000..99469c4 --- /dev/null +++ b/tmux/plugins/tpm @@ -0,0 +1 @@ +Subproject commit 99469c4a9b1ccf77fade25842dc7bafbc8ce9946 diff --git a/tmux/tmux.conf b/tmux/tmux.conf new file mode 100644 index 0000000..e4475c5 --- /dev/null +++ b/tmux/tmux.conf @@ -0,0 +1,69 @@ +### COLORS +set -g default-terminal screen-256color + +# visuals +set-option -g status-style fg=colour250 + +set -g status-justify left +set -g status-position bottom + +set -g status-left '' +set -g status-right '#S' + +setw -g window-status-current-format ' #I#[fg=colour250]:#[fg=colour255]#W#[fg=#ffada2]#F ' +setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F ' + + +# remap prefix from 'C-b' to 'C-a' +unbind C-b +set-option -g prefix C-a +bind-key C-a send-prefix + +# split panes using s and v +# use vim-like keys for splits and windows +# bind-key v split-window -h +# bind-key s split-window -v + +# use vim-like keys for splits and windows +# bind C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim$' && tmux send-keys C-h) || tmux select-pane -L" +bind-key j select-pane -D +bind-key k select-pane -U +bind-key h select-pane -L +bind-key l select-pane -R +unbind-key C-l + +# reload config file (change file location to your the tmux.conf you want to use) +bind r source-file ~/.tmux.conf + +# vim like navigation +set-window-option -g mode-keys vi + +# vim health check recommends the options below +set-option -sg escape-time 10 +set-option -g focus-events on +set-option -sa terminal-overrides ',xterm-256color:RGB' + +# bind V to select and Y to copy +unbind -T copy-mode-vi Space; #Default for begin-selection +unbind -T copy-mode-vi Enter; #Default for copy-selection + +bind -T copy-mode-vi v send-keys -X begin-selection +bind -T copy-mode-vi y send-keys -X copy-selection + + +# increase history +set-option -g history-limit 5000 + +# set mouse support on +set -g mouse on + + + +set -g @plugin 'tmux-plugins/tmux-resurrect' +set -g @plugin 'alexwforsythe/tmux-which-key' + +set -g @plugin 'omerxx/tmux-sessionx' + + +# Initialise tmux plugin manager (needs to be at the bottom of the file) +run '~/.config/tmux/plugins/tpm/tpm'