Browse Source

first commit

Thomas 1 year ago
commit
e55daf6e5a

+ 5 - 0
.luarc.json

@@ -0,0 +1,5 @@
+{
+    "diagnostics.globals": [
+        "vim"
+    ]
+}

+ 26 - 0
init.lua

@@ -0,0 +1,26 @@
+vim.cmd("set expandtab")
+vim.cmd("set tabstop=2")
+vim.cmd("set softtabstop=2")
+vim.cmd("set shiftwidth=2")
+
+vim.cmd("set shiftwidth=2")
+
+-- disable netrw at the very start of your init.lua
+vim.g.loaded_netrw = 1
+vim.g.loaded_netrwPlugin = 1
+
+-- vim options
+local opt = vim.opt
+
+opt.relativenumber = true
+
+opt.undodir = os.getenv "HOME" .. "/.vim/undodir"
+
+-- Languages
+opt.spelllang = 'en_us,fr'
+opt.spell = true
+
+vim.cmd("autocmd BufRead,BufNewFile *.typ set filetype=typst")
+
+require("config.lazy")
+require("config.mappings")

+ 27 - 0
lazy-lock.json

@@ -0,0 +1,27 @@
+{
+  "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
+  "bufferline.nvim": { "branch": "main", "commit": "99337f63f0a3c3ab9519f3d1da7618ca4f91cffe" },
+  "conform.nvim": { "branch": "master", "commit": "cd75be867f2331b22905f47d28c0c270a69466aa" },
+  "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
+  "edgy.nvim": { "branch": "main", "commit": "9ea7b22048f08a1a0d49a4a789e36c2fe1b8579f" },
+  "fzf-lua": { "branch": "main", "commit": "3d214f8db4a4119723ab5148b7a333aab3fa9063" },
+  "image.nvim": { "branch": "master", "commit": "61c76515cfc3cdac8123ece9e9761b20c3dc1315" },
+  "lazy.nvim": { "branch": "main", "commit": "b02c9eae6a250f98908c146d1dc1a891f5019f0a" },
+  "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" },
+  "mason.nvim": { "branch": "main", "commit": "f96a31855fa8aea55599cea412fe611b85a874ed" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "29f7c215332ba95e470811c380ddbce2cebe2af4" },
+  "neogit": { "branch": "master", "commit": "a20031fb5d7d12148764764059243135085e5c9b" },
+  "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" },
+  "nvim-lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" },
+  "nvim-treesitter": { "branch": "master", "commit": "7f4ac678770175cdf0d42c015f4a5b6e18b6cb33" },
+  "nvim-web-devicons": { "branch": "master", "commit": "c0cfc1738361b5da1cd0a962dd6f774cc444f856" },
+  "onedark": { "branch": "master", "commit": "fae34f7c635797f4bf62fb00e7d0516efa8abe37" },
+  "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
+  "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
+  "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
+  "transparent.nvim": { "branch": "main", "commit": "fd35a46f4b7c1b244249266bdcb2da3814f01724" },
+  "trouble.nvim": { "branch": "main", "commit": "03c1fbf518bef683422a3be9643c3da190903488" },
+  "vim-tmux-navigator": { "branch": "master", "commit": "5b3c701686fb4e6629c100ed32e827edf8dad01e" },
+  "which-key.nvim": { "branch": "main", "commit": "4d5b8959fd2a4df065ff76ccb39019aaa70cb0dc" }
+}

+ 35 - 0
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 },
+})

+ 123 - 0
lua/config/mappings.lua

@@ -0,0 +1,123 @@
+local wk = require("which-key")
+local builtin = require("telescope.builtin")
+-- local tree = require "nvim-tree.api"
+
+function FormatBuffer(command)
+	-- Save the current cursor position
+	local cursor_position = vim.fn.getpos(".")
+
+	-- Run the formatter command on the current buffer
+	vim.cmd(":%! " .. command)
+
+	-- Restore the cursor position
+	vim.fn.setpos(".", cursor_position)
+end
+
+function ToggleTree(source)
+	require("neo-tree.command").execute({
+		toggle = true,
+		source = source,
+		position = "left",
+	})
+end
+
+wk.add({
+	{
+		mode = "n",
+		-- telescope
+		{
+			"<leader>ff",
+			function()
+				builtin.find_files()
+			end,
+			desc = "Find file",
+		},
+		{
+			"<leader>fg",
+			function()
+				builtin.live_grep()
+			end,
+			desc = "Live grep",
+		},
+		{
+			"<leader>fb",
+			function()
+				builtin.buffers()
+			end,
+			desc = "List buffers",
+		},
+		{
+			"<leader>fh",
+			function()
+				builtin.help_tags()
+			end,
+			desc = "Help",
+		},
+		{
+			"<leader>fs",
+			function()
+				builtin.lsp_document_symbols()
+			end,
+			desc = "Find symbols",
+		},
+		{
+			"zz",
+			function()
+				builtin.spell_suggest()
+			end,
+			desc = "Suggest spell",
+		},
+
+		-- Centering cursor
+		{ "n", "nzzzv", desc = "Center cursor when n (next) during search" },
+		{ "N", "Nzzzv", desc = "Center cursor when n (next) during search" },
+
+		-- tab
+		{ "<tab>", ":BufferLineCycleNext <CR>", desc = "Next tab" },
+		{ "<S-tab>", ":BufferLineCyclePrev<CR>", desc = "Previous tab" },
+
+		-- Comment
+		{ "<leader>/", "gcc", desc = "comment toggle", remap = true },
+
+		-- Format
+		{
+			"<leader>fm",
+			function()
+				require("conform").format({ lsp_fallback = true })
+			end,
+			desc = "format files",
+		},
+
+		-- nvim-tree
+		-- { "<C-n>", function() tree.tree.toggle() end, desc = "Toggle file tree" },
+		{
+			"<C-n>",
+			function()
+				ToggleTree("filesystem")
+			end,
+			desc = "Toggle file tree",
+		},
+
+		-- Typst format
+		{
+			"<leader>ft",
+			function()
+				FormatBuffer("typstfmt")
+			end,
+			desc = "Typst formater",
+		},
+
+    -- Lsp
+    { "K", function() vim.lsp.buf.hover() end, desc = "LSP toggle" },
+    { "<leader>ca", function() vim.lsp.buf.code_action() end, desc = "LSP code action" },
+    { "<leader>cd", function() vim.diagnostic.setqflist() end, desc = "LSP code diagnostic" },
+	},
+	{
+		mode = "v",
+		{ "<S-j>", ":m '>+1<CR>gv=gv", desc = "Move selection down" },
+		{ "<S-k>", ":m '<-2<CR>gv=gv", desc = "Move selection up" },
+
+		-- Comment
+		{ "<leader>/", "gc", desc = "comment toggle", remap = true },
+	},
+})

+ 10 - 0
lua/plugins/bar.lua

@@ -0,0 +1,10 @@
+return {
+  'akinsho/bufferline.nvim',
+  version = "*",
+  dependencies = 'nvim-tree/nvim-web-devicons',
+  config = function()
+    vim.opt.termguicolors = true
+    require("bufferline").setup{}
+  end
+}
+

+ 32 - 0
lua/plugins/colorscheme.lua

@@ -0,0 +1,32 @@
+return {
+  {
+    "navarasu/onedark.nvim",
+    name = "onedark",
+    lazy = false,
+    priority = 1000,
+    config = function()
+      require('onedark').setup {
+        style = 'dark',
+        transparent = true,
+
+        -- Change code style ---
+        -- Options are italic, bold, underline, none
+        -- You can configure multiple style with comma separated, For e.g., keywords = 'italic,bold'
+        code_style = {
+          comments = 'italic',
+          keywords = 'none',
+          functions = 'none',
+          strings = 'none',
+          variables = 'none'
+        },
+
+        -- Lualine options --
+        lualine = {
+          transparent = false, -- lualine center bar transparency
+        },
+
+      }
+      require('onedark').load()
+    end,
+  },
+}

+ 52 - 0
lua/plugins/comment.lua

@@ -0,0 +1,52 @@
+return {
+  -- add this to your lua/plugins.lua, lua/plugins/init.lua,  or the file you keep your other plugins:
+  'numToStr/Comment.nvim',
+  opts = {
+    -- add any options here
+  },
+  config = function()
+    require('Comment').setup {
+    ---Add a space b/w comment and the line
+    padding = true,
+    ---Whether the cursor should stay at its position
+    sticky = true,
+    ---Lines to be ignored while (un)comment
+    ignore = nil,
+    ---LHS of toggle mappings in NORMAL mode
+    toggler = {
+        ---Line-comment toggle keymap
+        line = 'gcc',
+        ---Block-comment toggle keymap
+        block = 'gbc',
+    },
+    ---LHS of operator-pending mappings in NORMAL and VISUAL mode
+    opleader = {
+        ---Line-comment keymap
+        line = 'gc',
+        ---Block-comment keymap
+        block = 'gb',
+    },
+    ---LHS of extra mappings
+    extra = {
+        ---Add comment on the line above
+        above = 'gcO',
+        ---Add comment on the line below
+        below = 'gco',
+        ---Add comment at the end of line
+        eol = 'gcA',
+    },
+    ---Enable keybindings
+    ---NOTE: If given `false` then the plugin won't create any mappings
+    mappings = {
+        ---Operator-pending mapping; `gcc` `gbc` `gc[count]{motion}` `gb[count]{motion}`
+        basic = true,
+        ---Extra mapping; `gco`, `gcO`, `gcA`
+        extra = true,
+    },
+    ---Function to call before (un)comment
+    pre_hook = nil,
+    ---Function to call after (un)comment
+    post_hook = nil,
+}
+  end,
+}

+ 14 - 0
lua/plugins/conform.lua

@@ -0,0 +1,14 @@
+return {
+  'stevearc/conform.nvim',
+  opts = {},
+  config = function()
+    require("conform").setup({
+      formatters_by_ft = {
+        lua = { "stylua" },
+        -- Conform will run multiple formatters sequentially
+        -- Use a sub-list to run only the first available formatter
+        javascript = { { "prettierd", "prettier" } },
+      },
+    })
+  end
+}

+ 187 - 0
lua/plugins/edgy.lua

@@ -0,0 +1,187 @@
+return {
+  "folke/edgy.nvim",
+  event = "VeryLazy",
+  init = function()
+    vim.opt.laststatus = 3
+    vim.opt.splitkeep = "screen"
+  end,
+  opts = {
+    bottom = {
+      -- toggleterm / lazyterm at the bottom with a height of 40% of the screen
+      {
+        ft = "toggleterm",
+        size = { height = 0.4 },
+        -- exclude floating windows
+        filter = function(buf, win)
+          return vim.api.nvim_win_get_config(win).relative == ""
+        end,
+      },
+      {
+        ft = "lazyterm",
+        title = "LazyTerm",
+        size = { height = 0.4 },
+        filter = function(buf)
+          return not vim.b[buf].lazyterm_cmd
+        end,
+      },
+      "Trouble",
+      { ft = "qf", title = "QuickFix" },
+      {
+        ft = "help",
+        size = { height = 20 },
+        -- only show help buffers
+        filter = function(buf)
+          return vim.bo[buf].buftype == "help"
+        end,
+      },
+      { ft = "spectre_panel", size = { height = 0.4 } },
+    },
+    left = {
+      -- Neo-tree filesystem always takes half the screen height
+      {
+        title = "Neo-Tree",
+        ft = "neo-tree",
+        filter = function(buf)
+          return vim.b[buf].neo_tree_source == "filesystem"
+        end,
+        size = { height = 0.2 },
+      },
+      {
+        title = "Neo-Tree Git",
+        ft = "neo-tree",
+        filter = function(buf)
+          return vim.b[buf].neo_tree_source == "git_status"
+        end,
+        pinned = true,
+        collapsed = true, -- show window as closed/collapsed on start
+        open = "Neotree position=right git_status",
+      },
+      {
+        title = "Neo-Tree Buffers",
+        ft = "neo-tree",
+        filter = function(buf)
+          return vim.b[buf].neo_tree_source == "buffers"
+        end,
+        pinned = true,
+        collapsed = true, -- show window as closed/collapsed on start
+        open = "Neotree position=top buffers",
+      },
+      {
+        title = function()
+          local buf_name = vim.api.nvim_buf_get_name(0) or "[No Name]"
+          return vim.fn.fnamemodify(buf_name, ":t")
+        end,
+        ft = "Outline",
+        pinned = true,
+        open = "SymbolsOutlineOpen",
+
+      },
+      -- any other neo-tree windows
+      "neo-tree",
+    },
+    options = {
+      left = { size = 25 },
+      bottom = { size = 10 },
+      right = { size = 30 },
+      top = { size = 10 },
+    },
+    -- edgebar animations
+    animate = {
+      enabled = true,
+      fps = 100, -- frames per second
+      cps = 120, -- cells per second
+      on_begin = function()
+        vim.g.minianimate_disable = true
+      end,
+      on_end = function()
+        vim.g.minianimate_disable = false
+      end,
+      -- Spinner for pinned views that are loading.
+      -- if you have noice.nvim installed, you can use any spinner from it, like:
+      -- spinner = require("noice.util.spinners").spinners.circleFull,
+      spinner = {
+        frames = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" },
+        interval = 80,
+      },
+    },
+    -- enable this to exit Neovim when only edgy windows are left
+    exit_when_last = false,
+    -- close edgy when all windows are hidden instead of opening one of them
+    -- disable to always keep at least one edgy split visible in each open section
+    close_when_all_hidden = true,
+    -- global window options for edgebar windows
+    ---@type vim.wo
+    wo = {
+      -- Setting to `true`, will add an edgy winbar.
+      -- Setting to `false`, won't set any winbar.
+      -- Setting to a string, will set the winbar to that string.
+      winbar = true,
+      winfixwidth = true,
+      winfixheight = false,
+      winhighlight = "WinBar:EdgyWinBar,Normal:EdgyNormal",
+      spell = false,
+      signcolumn = "no",
+    },
+    -- buffer-local keymaps to be added to edgebar buffers.
+    -- Existing buffer-local keymaps will never be overridden.
+    -- Set to false to disable a builtin.
+    ---@type table<string, fun(win:Edgy.Window)|false>
+    keys = {
+      -- close window
+      ["q"] = function(win)
+        win:close()
+      end,
+      -- hide window
+      ["<c-q>"] = function(win)
+        win:hide()
+      end,
+      -- close sidebar
+      ["Q"] = function(win)
+        win.view.edgebar:close()
+      end,
+      -- next open window
+      ["]w"] = function(win)
+        win:next({ visible = true, focus = true })
+      end,
+      -- previous open window
+      ["[w"] = function(win)
+        win:prev({ visible = true, focus = true })
+      end,
+      -- next loaded window
+      ["]W"] = function(win)
+        win:next({ pinned = false, focus = true })
+      end,
+      -- prev loaded window
+      ["[W"] = function(win)
+        win:prev({ pinned = false, focus = true })
+      end,
+      -- increase width
+      ["<c-w>>"] = function(win)
+        win:resize("width", 2)
+      end,
+      -- decrease width
+      ["<c-w><lt>"] = function(win)
+        win:resize("width", -2)
+      end,
+      -- increase height
+      ["<c-w>+"] = function(win)
+        win:resize("height", 2)
+      end,
+      -- decrease height
+      ["<c-w>-"] = function(win)
+        win:resize("height", -2)
+      end,
+      -- reset all custom sizing
+      ["<c-w>="] = function(win)
+        win.view.edgebar:equalize()
+      end,
+    },
+    icons = {
+      closed = " ",
+      open = " ",
+    },
+    -- enable this on Neovim <= 0.10.0 to properly fold edgebar windows.
+    -- Not needed on a nightly build >= June 5, 2023.
+    fix_win_height = vim.fn.has("nvim-0.10.0") == 0,
+  },
+}

+ 36 - 0
lua/plugins/file_tree.lua

@@ -0,0 +1,36 @@
+-- return {
+--   "nvim-tree/nvim-tree.lua",
+--   config = function()
+--     require("nvim-tree").setup({
+--       sort = {
+--         sorter = "case_sensitive",
+--       },
+--       view = {
+--         width = 30,
+--       },
+--       renderer = {
+--         group_empty = true,
+--       },
+--       filters = {
+--         dotfiles = true,
+--       },
+--     })
+--   end,
+-- }
+return {
+{
+    "nvim-neo-tree/neo-tree.nvim",
+    branch = "v3.x",
+    dependencies = {
+      "nvim-lua/plenary.nvim",
+      "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
+      "MunifTanjim/nui.nvim",
+      "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information
+    },
+    config = function()
+      require('lualine').setup { 
+        extensions = { "neo-tree", "lazy", "mason" } 
+      }
+    end
+  }
+}

+ 16 - 0
lua/plugins/git.lua

@@ -0,0 +1,16 @@
+return {
+	"NeogitOrg/neogit",
+	dependencies = {
+		"nvim-lua/plenary.nvim", -- required
+		"sindrets/diffview.nvim", -- optional - Diff integration
+
+		-- Only one of these is needed, not both.
+		"nvim-telescope/telescope.nvim", -- optional
+		"ibhagwan/fzf-lua", -- optional
+	},
+	config = function()
+    -- init.lua
+    local neogit = require('neogit')
+    neogit.setup {}
+  end,
+}

+ 84 - 0
lua/plugins/lualine.lua

@@ -0,0 +1,84 @@
+-- stylua: ignore
+local colors = {
+  blue   = '#80a0ff',
+  cyan   = '#79dac8',
+  black  = '#080808',
+  white  = '#c6c6c6',
+  red    = '#ff5189',
+  violet = '#d183e8',
+  grey   = '#303030',
+}
+
+local bubbles_theme = {
+  normal = {
+    a = { fg = colors.black, bg = colors.violet },
+    b = { fg = colors.white, bg = colors.grey },
+    c = { fg = colors.white },
+  },
+
+  insert = { a = { fg = colors.black, bg = colors.blue } },
+  visual = { a = { fg = colors.black, bg = colors.cyan } },
+  replace = { a = { fg = colors.black, bg = colors.red } },
+
+  inactive = {
+    a = { fg = colors.white, bg = colors.black },
+    b = { fg = colors.white, bg = colors.black },
+    c = { fg = colors.white },
+  },
+}
+
+return {
+  {
+    'nvim-lualine/lualine.nvim',
+    dependencies = { 'nvim-tree/nvim-web-devicons' },
+    config = function()
+      require('lualine').setup {
+        options = {
+          icons_enabled = true,
+          theme = bubbles_theme,
+          -- theme = 'onedark',
+          component_separators = '',
+          section_separators = { left = '', right = '' },
+          -- component_separators = { left = '', right = ''},
+          -- section_separators = { left = '', right = ''},
+          disabled_filetypes = {
+            'NvimTree',
+            statusline = {},
+            winbar = {},
+          },
+          ignore_focus = {},
+          always_divide_middle = true,
+          globalstatus = false,
+          refresh = {
+            statusline = 1000,
+            tabline = 1000,
+            winbar = 1000,
+          }
+        },
+        sections = {
+          lualine_a = { { 'mode', separator = { left = '' }, right_padding = 2 } },
+          lualine_b = { 'filename', 'branch' },
+          lualine_c = {
+            '%=', --[[ add your center compoentnts here in place of this comment ]]
+          },
+          lualine_x = {},
+          lualine_y = { 'filetype', 'progress' },
+          lualine_z = {
+            { 'location', separator = { right = '' }, left_padding = 2 },
+          },
+        },
+        inactive_sections = {
+          lualine_a = { 'filename' },
+          lualine_b = {},
+          lualine_c = {},
+          lualine_x = {},
+          lualine_y = {},
+          lualine_z = { 'location' },
+        },
+        tabline = {},
+        extensions = {},
+
+      }
+    end,
+  }
+}

+ 45 - 0
lua/plugins/mason.lua

@@ -0,0 +1,45 @@
+return {
+	{
+		"williamboman/mason.nvim",
+		config = function()
+			require("mason").setup()
+		end,
+	},
+	{
+		"williamboman/mason-lspconfig.nvim",
+		config = function()
+			require("mason-lspconfig").setup({
+				ensure_installed = {
+					"lua_ls",
+					"rust_analyzer",
+					"tsserver",
+					"typst_lsp",
+					"r_language_server", --[[ "vscode-html-language-server" ]]
+				},
+			})
+		end,
+	},
+	{
+		"neovim/nvim-lspconfig",
+		config = function()
+			-- After setting up mason-lspconfig you may set up servers via lspconfig
+			require("lspconfig").lua_ls.setup({})
+			require("lspconfig").rust_analyzer.setup({})
+			require("lspconfig").r_language_server.setup({})
+
+			require("lspconfig").tsserver.setup({
+				init_options = {
+					plugins = {},
+				},
+				filetypes = {
+					"javascript",
+					"typescript",
+				},
+			})
+
+			-- You must make sure volar is setup
+			-- e.g. require'lspconfig'.volar.setup{}
+			-- See volar's section for more information
+		end,
+	},
+}

+ 71 - 0
lua/plugins/telescope.lua

@@ -0,0 +1,71 @@
+return {
+	{
+		"nvim-telescope/telescope.nvim",
+		tag = "0.1.8",
+		dependencies = { "nvim-lua/plenary.nvim" },
+		config = function()
+			require("telescope").setup({
+				defaults = {
+					-- Default configuration for telescope goes here:
+					-- config_key = value,
+					mappings = {
+						i = {
+							-- map actions.which_key to <C-h> (default: <C-/>)
+							-- actions.which_key shows the mappings for your picker,
+							-- e.g. git_{create, delete, ...}_branch for the git_branches picker
+							["<C-h>"] = "which_key",
+						},
+					},
+				},
+				pickers = {
+					-- Default configuration for builtin pickers goes here:
+					-- picker_name = {
+					--   picker_config_key = value,
+					--   ...
+					-- }
+					-- Now the picker_config_key will be applied every time you call this
+					-- builtin picker
+				},
+				extensions = {
+					-- Your extension configuration goes here:
+					-- extension_name = {
+					--   extension_config_key = value,
+					-- }
+					-- please take a look at the readme of the extension you want to configure
+				},
+			})
+		end,
+	},
+	{
+		"nvim-telescope/telescope-ui-select.nvim",
+		config = function()
+			-- This is your opts table
+			require("telescope").setup({
+				extensions = {
+					["ui-select"] = {
+						require("telescope.themes").get_dropdown({
+							-- even more opts
+						}),
+
+						-- pseudo code / specification for writing custom displays, like the one
+						-- for "codeactions"
+						-- specific_opts = {
+						--   [kind] = {
+						--     make_indexed = function(items) -> indexed_items, width,
+						--     make_displayer = function(widths) -> displayer
+						--     make_display = function(displayer) -> function(e)
+						--     make_ordinal = function(e) -> string
+						--   },
+						--   -- for example to disable the custom builtin "codeactions" display
+						--      do the following
+						--   codeactions = false,
+						-- }
+					},
+				},
+			})
+			-- To get ui-select loaded and working with telescope, you need to call
+			-- load_extension, somewhere after setup function:
+			require("telescope").load_extension("ui-select")
+		end,
+	},
+}

+ 4 - 0
lua/plugins/tmux.lua

@@ -0,0 +1,4 @@
+return {
+  "christoomey/vim-tmux-navigator",
+  lazy = false,
+}

+ 23 - 0
lua/plugins/transparent.lua

@@ -0,0 +1,23 @@
+return {
+  "xiyaowong/transparent.nvim",
+  lazy = false,
+  config = function()
+    require("transparent").setup({ -- Optional, you don't have to run setup.
+      groups = { -- table: default groups
+        'Normal', 'NormalNC', 'Comment', 'Constant', 'Special', 'Identifier',
+        'Statement', 'PreProc', 'Type', 'Underlined', 'Todo', 'String', 'Function',
+        'Conditional', 'Repeat', 'Operator', 'Structure', 'LineNr', 'NonText',
+        'SignColumn', 'CursorLine', 'CursorLineNr', 'StatusLine', 'StatusLineNC',
+        'EndOfBuffer',
+      },
+      extra_groups = {
+        "NormalFloat", -- plugins which have float panel such as Lazy, Mason, LspInfo
+        "NvimTreeNormal", -- NvimTree}, -- table: additional groups that should be cleared
+        "WhichKeyFloat",
+      },
+      exclude_groups = {}, -- table: groups you don't want to clear
+    })
+  end
+}
+
+

+ 14 - 0
lua/plugins/treesitter.lua

@@ -0,0 +1,14 @@
+return {
+	"nvim-treesitter/nvim-treesitter",
+	build = ":TSUpdate",
+	config = function()
+		local configs = require("nvim-treesitter.configs")
+
+		configs.setup({
+			ensure_installed = { "c", "lua", "vim", "vimdoc", "javascript", "html", "rust" },
+			sync_install = false,
+			highlight = { enable = true },
+			indent = { enable = true },
+		})
+	end,
+}

+ 37 - 0
lua/plugins/trouble.lua

@@ -0,0 +1,37 @@
+return {
+  "folke/trouble.nvim",
+  opts = {}, -- for default options, refer to the configuration section for custom setup.
+  cmd = "Trouble",
+  keys = {
+    {
+      "<leader>xx",
+      "<cmd>Trouble diagnostics toggle<cr>",
+      desc = "Diagnostics (Trouble)",
+    },
+    {
+      "<leader>xX",
+      "<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
+      desc = "Buffer Diagnostics (Trouble)",
+    },
+    {
+      "<leader>cs",
+      "<cmd>Trouble symbols toggle focus=false<cr>",
+      desc = "Symbols (Trouble)",
+    },
+    {
+      "<leader>cl",
+      "<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
+      desc = "LSP Definitions / references / ... (Trouble)",
+    },
+    {
+      "<leader>xL",
+      "<cmd>Trouble loclist toggle<cr>",
+      desc = "Location List (Trouble)",
+    },
+    {
+      "<leader>xQ",
+      "<cmd>Trouble qflist toggle<cr>",
+      desc = "Quickfix List (Trouble)",
+    },
+  },
+}

+ 18 - 0
lua/plugins/which_key.lua

@@ -0,0 +1,18 @@
+return {
+  "folke/which-key.nvim",
+  event = "VeryLazy",
+  opts = {
+    -- your configuration comes here
+    -- or leave it empty to use the default settings
+    -- refer to the configuration section below
+  },
+  keys = {
+    {
+      "<leader>?",
+      function()
+        require("which-key").show({ global = false })
+      end,
+      desc = "Buffer Local Keymaps (which-key)",
+    },
+  },
+}