from-scratch rewrite (#1)
Reviewed-on: #1
This commit was merged in pull request #1.
	This commit is contained in:
		
							
								
								
									
										54
									
								
								nvim/lua/plugins/blink.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								nvim/lua/plugins/blink.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
return {
 | 
			
		||||
  "saghen/blink.cmp",
 | 
			
		||||
  -- optional: provides snippets for the snippet source
 | 
			
		||||
  dependencies = { "rafamadriz/friendly-snippets" },
 | 
			
		||||
 | 
			
		||||
  -- use a release tag to download pre-built binaries
 | 
			
		||||
  version = "1.*",
 | 
			
		||||
  -- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust
 | 
			
		||||
  -- build = 'cargo build --release',
 | 
			
		||||
  -- If you use nix, you can build from source using latest nightly rust with:
 | 
			
		||||
  -- build = 'nix run .#build-plugin',
 | 
			
		||||
 | 
			
		||||
  ---@module 'blink.cmp'
 | 
			
		||||
  ---@type blink.cmp.Config
 | 
			
		||||
  opts = {
 | 
			
		||||
    -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
 | 
			
		||||
    -- 'super-tab' for mappings similar to vscode (tab to accept)
 | 
			
		||||
    -- 'enter' for enter to accept
 | 
			
		||||
    -- 'none' for no mappings
 | 
			
		||||
    --
 | 
			
		||||
    -- All presets have the following mappings:
 | 
			
		||||
    -- C-space: Open menu or open docs if already open
 | 
			
		||||
    -- C-n/C-p or Up/Down: Select next/previous item
 | 
			
		||||
    -- C-e: Hide menu
 | 
			
		||||
    -- C-k: Toggle signature help (if signature.enabled = true)
 | 
			
		||||
    --
 | 
			
		||||
    -- See :h blink-cmp-config-keymap for defining your own keymap
 | 
			
		||||
    keymap = { preset = "super-tab" },
 | 
			
		||||
 | 
			
		||||
    appearance = {
 | 
			
		||||
      -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
 | 
			
		||||
      -- Adjusts spacing to ensure icons are aligned
 | 
			
		||||
      nerd_font_variant = "mono",
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    -- (Default) Only show the documentation popup when manually triggered
 | 
			
		||||
    completion = { documentation = { auto_show = true, auto_show_delay_ms = 500 } },
 | 
			
		||||
 | 
			
		||||
    -- Default list of enabled providers defined so that you can extend it
 | 
			
		||||
    -- elsewhere in your config, without redefining it, due to `opts_extend`
 | 
			
		||||
    sources = {
 | 
			
		||||
      default = { "lsp", "path", "snippets", "buffer" },
 | 
			
		||||
    },
 | 
			
		||||
    signature = { enabled = true },
 | 
			
		||||
 | 
			
		||||
    -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
 | 
			
		||||
    -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
 | 
			
		||||
    -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
 | 
			
		||||
    --
 | 
			
		||||
    -- See the fuzzy documentation for more information
 | 
			
		||||
    fuzzy = { implementation = "prefer_rust_with_warning" },
 | 
			
		||||
  },
 | 
			
		||||
  opts_extend = { "sources.default" },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										62
									
								
								nvim/lua/plugins/bufferline.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								nvim/lua/plugins/bufferline.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
return {
 | 
			
		||||
  "akinsho/bufferline.nvim",
 | 
			
		||||
  event = "VeryLazy",
 | 
			
		||||
  keys = {
 | 
			
		||||
    { "<leader>bp", "<Cmd>BufferLineTogglePin<CR>",            desc = "Toggle Pin" },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>bo",
 | 
			
		||||
      function()
 | 
			
		||||
        Snacks.bufdelete.other()
 | 
			
		||||
      end,
 | 
			
		||||
      desc = "Delete other buffers",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>bd",
 | 
			
		||||
      function()
 | 
			
		||||
        Snacks.bufdelete()
 | 
			
		||||
      end,
 | 
			
		||||
      desc = "Delete current buffer",
 | 
			
		||||
    },
 | 
			
		||||
    { "<leader>bP", "<Cmd>BufferLineGroupClose ungrouped<CR>", desc = "Delete Non-Pinned Buffers" },
 | 
			
		||||
    { "<leader>br", "<Cmd>BufferLineCloseRight<CR>",           desc = "Delete Buffers to the Right" },
 | 
			
		||||
    { "<leader>bl", "<Cmd>BufferLineCloseLeft<CR>",            desc = "Delete Buffers to the Left" },
 | 
			
		||||
    { "<S-h>",      "<cmd>BufferLineCyclePrev<cr>",            desc = "Prev Buffer" },
 | 
			
		||||
    { "<S-l>",      "<cmd>BufferLineCycleNext<cr>",            desc = "Next Buffer" },
 | 
			
		||||
    { "[b",         "<cmd>BufferLineCyclePrev<cr>",            desc = "Prev Buffer" },
 | 
			
		||||
    { "]b",         "<cmd>BufferLineCycleNext<cr>",            desc = "Next Buffer" },
 | 
			
		||||
    { "[B",         "<cmd>BufferLineMovePrev<cr>",             desc = "Move buffer prev" },
 | 
			
		||||
    { "]B",         "<cmd>BufferLineMoveNext<cr>",             desc = "Move buffer next" },
 | 
			
		||||
  },
 | 
			
		||||
  opts = {
 | 
			
		||||
    options = {
 | 
			
		||||
      -- stylua: ignore
 | 
			
		||||
      close_command = function(n) Snacks.bufdelete(n) end,
 | 
			
		||||
      -- stylua: ignore
 | 
			
		||||
      right_mouse_command = function(n) Snacks.bufdelete(n) end,
 | 
			
		||||
      diagnostics = "nvim_lsp",
 | 
			
		||||
      always_show_bufferline = true,
 | 
			
		||||
      offsets = {
 | 
			
		||||
        {
 | 
			
		||||
          filetype = "neo-tree",
 | 
			
		||||
          text = "Neo-tree",
 | 
			
		||||
          highlight = "Directory",
 | 
			
		||||
          text_align = "left",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          filetype = "snacks_layout_box",
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  config = function(_, opts)
 | 
			
		||||
    require("bufferline").setup(opts)
 | 
			
		||||
    -- Fix bufferline when restoring a session
 | 
			
		||||
    vim.api.nvim_create_autocmd({ "BufAdd", "BufDelete" }, {
 | 
			
		||||
      callback = function()
 | 
			
		||||
        vim.schedule(function()
 | 
			
		||||
          pcall(nvim_bufferline)
 | 
			
		||||
        end)
 | 
			
		||||
      end,
 | 
			
		||||
    })
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  {
 | 
			
		||||
    "catppuccin/nvim",
 | 
			
		||||
    name = "catppuccin",
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "LazyVim/LazyVim",
 | 
			
		||||
    opts = {
 | 
			
		||||
      colorscheme = "catppuccin-latte",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										29
									
								
								nvim/lua/plugins/conform.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								nvim/lua/plugins/conform.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
return {
 | 
			
		||||
  "stevearc/conform.nvim",
 | 
			
		||||
  keys = {
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>cf",
 | 
			
		||||
      function()
 | 
			
		||||
        require("conform").format({ lsp_format = "fallback" })
 | 
			
		||||
      end,
 | 
			
		||||
      desc = "[C]ode [F]ormat",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  opts = {
 | 
			
		||||
    formatters_by_ft = {
 | 
			
		||||
      lua = { "stylua" },
 | 
			
		||||
      -- Conform will run multiple formatters sequentially
 | 
			
		||||
      python = { "isort", "black" },
 | 
			
		||||
      -- You can customize some of the format options for the filetype (:help conform.format)
 | 
			
		||||
      rust = { "rustfmt" },
 | 
			
		||||
      -- Conform will run the first available formatter
 | 
			
		||||
      javascript = { "eslint_d", "prettierd", "prettier", stop_after_first = true },
 | 
			
		||||
      typescript = { "eslint_d", "prettierd", "prettier", stop_after_first = true },
 | 
			
		||||
      format_on_save = {
 | 
			
		||||
        -- These options will be passed to conform.format()
 | 
			
		||||
        timeout_ms = 500,
 | 
			
		||||
        lsp_format = "fallback",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								nvim/lua/plugins/dap.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								nvim/lua/plugins/dap.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
return {
 | 
			
		||||
  "mfussenegger/nvim-dap",
 | 
			
		||||
  lazy = true,
 | 
			
		||||
  dependencies = {
 | 
			
		||||
    "rcarriga/nvim-dap-ui",
 | 
			
		||||
    "nvim-neotest/nvim-nio",
 | 
			
		||||
    "theHamsta/nvim-dap-virtual-text"
 | 
			
		||||
  },
 | 
			
		||||
  keys = {
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>db",
 | 
			
		||||
      function()
 | 
			
		||||
        require("dap").toggle_breakpoint()
 | 
			
		||||
      end,
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>dc",
 | 
			
		||||
      function()
 | 
			
		||||
        require("dap").continue()
 | 
			
		||||
      end,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  config = function()
 | 
			
		||||
    require("dapui").setup()
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  "nvim-lspconfig",
 | 
			
		||||
  opts = {
 | 
			
		||||
    inlay_hints = { enabled = false },
 | 
			
		||||
    diagnostics = {
 | 
			
		||||
      virtual_text = true,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
@@ -1,266 +0,0 @@
 | 
			
		||||
-- since this is just an example spec, don't actually load anything here and return an empty spec
 | 
			
		||||
-- stylua: ignore
 | 
			
		||||
if true then return {} end
 | 
			
		||||
 | 
			
		||||
-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
 | 
			
		||||
--
 | 
			
		||||
-- In your plugin files, you can:
 | 
			
		||||
-- * add extra plugins
 | 
			
		||||
-- * disable/enabled LazyVim plugins
 | 
			
		||||
-- * override the configuration of LazyVim plugins
 | 
			
		||||
return {
 | 
			
		||||
  -- add gruvbox
 | 
			
		||||
  { "ellisonleao/gruvbox.nvim" },
 | 
			
		||||
 | 
			
		||||
  -- Configure LazyVim to load gruvbox
 | 
			
		||||
  {
 | 
			
		||||
    "LazyVim/LazyVim",
 | 
			
		||||
    opts = {
 | 
			
		||||
      colorscheme = "gruvbox",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- change trouble config
 | 
			
		||||
  {
 | 
			
		||||
    "folke/trouble.nvim",
 | 
			
		||||
    -- opts will be merged with the parent spec
 | 
			
		||||
    opts = { use_diagnostic_signs = true },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- disable trouble
 | 
			
		||||
  { "folke/trouble.nvim", enabled = false },
 | 
			
		||||
 | 
			
		||||
  -- add symbols-outline
 | 
			
		||||
  {
 | 
			
		||||
    "simrat39/symbols-outline.nvim",
 | 
			
		||||
    cmd = "SymbolsOutline",
 | 
			
		||||
    keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
 | 
			
		||||
    config = true,
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- override nvim-cmp and add cmp-emoji
 | 
			
		||||
  {
 | 
			
		||||
    "hrsh7th/nvim-cmp",
 | 
			
		||||
    dependencies = { "hrsh7th/cmp-emoji" },
 | 
			
		||||
    ---@param opts cmp.ConfigSchema
 | 
			
		||||
    opts = function(_, opts)
 | 
			
		||||
      local cmp = require("cmp")
 | 
			
		||||
      opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } }))
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- change some telescope options and a keymap to browse plugin files
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-telescope/telescope.nvim",
 | 
			
		||||
    keys = {
 | 
			
		||||
      -- add a keymap to browse plugin files
 | 
			
		||||
      -- stylua: ignore
 | 
			
		||||
      {
 | 
			
		||||
        "<leader>fp",
 | 
			
		||||
        function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
 | 
			
		||||
        desc = "Find Plugin File",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    -- change some options
 | 
			
		||||
    opts = {
 | 
			
		||||
      defaults = {
 | 
			
		||||
        layout_strategy = "horizontal",
 | 
			
		||||
        layout_config = { prompt_position = "top" },
 | 
			
		||||
        sorting_strategy = "ascending",
 | 
			
		||||
        winblend = 0,
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- add telescope-fzf-native
 | 
			
		||||
  {
 | 
			
		||||
    "telescope.nvim",
 | 
			
		||||
    dependencies = {
 | 
			
		||||
      "nvim-telescope/telescope-fzf-native.nvim",
 | 
			
		||||
      build = "make",
 | 
			
		||||
      config = function()
 | 
			
		||||
        require("telescope").load_extension("fzf")
 | 
			
		||||
      end,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- add pyright to lspconfig
 | 
			
		||||
  {
 | 
			
		||||
    "neovim/nvim-lspconfig",
 | 
			
		||||
    ---@class PluginLspOpts
 | 
			
		||||
    opts = {
 | 
			
		||||
      ---@type lspconfig.options
 | 
			
		||||
      servers = {
 | 
			
		||||
        -- pyright will be automatically installed with mason and loaded with lspconfig
 | 
			
		||||
        pyright = {},
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- add tsserver and setup with typescript.nvim instead of lspconfig
 | 
			
		||||
  {
 | 
			
		||||
    "neovim/nvim-lspconfig",
 | 
			
		||||
    dependencies = {
 | 
			
		||||
      "jose-elias-alvarez/typescript.nvim",
 | 
			
		||||
      init = function()
 | 
			
		||||
        require("lazyvim.util").on_attach(function(_, buffer)
 | 
			
		||||
          -- stylua: ignore
 | 
			
		||||
          vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
 | 
			
		||||
          vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
 | 
			
		||||
        end)
 | 
			
		||||
      end,
 | 
			
		||||
    },
 | 
			
		||||
    ---@class PluginLspOpts
 | 
			
		||||
    opts = {
 | 
			
		||||
      ---@type lspconfig.options
 | 
			
		||||
      servers = {
 | 
			
		||||
        -- tsserver will be automatically installed with mason and loaded with lspconfig
 | 
			
		||||
        tsserver = {},
 | 
			
		||||
      },
 | 
			
		||||
      -- you can do any additional lsp server setup here
 | 
			
		||||
      -- return true if you don't want this server to be setup with lspconfig
 | 
			
		||||
      ---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
 | 
			
		||||
      setup = {
 | 
			
		||||
        -- example to setup with typescript.nvim
 | 
			
		||||
        tsserver = function(_, opts)
 | 
			
		||||
          require("typescript").setup({ server = opts })
 | 
			
		||||
          return true
 | 
			
		||||
        end,
 | 
			
		||||
        -- Specify * to use this function as a fallback for any server
 | 
			
		||||
        -- ["*"] = function(server, opts) end,
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
 | 
			
		||||
  -- treesitter, mason and typescript.nvim. So instead of the above, you can use:
 | 
			
		||||
  { import = "lazyvim.plugins.extras.lang.typescript" },
 | 
			
		||||
 | 
			
		||||
  -- add more treesitter parsers
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-treesitter/nvim-treesitter",
 | 
			
		||||
    opts = {
 | 
			
		||||
      ensure_installed = {
 | 
			
		||||
        "bash",
 | 
			
		||||
        "html",
 | 
			
		||||
        "javascript",
 | 
			
		||||
        "json",
 | 
			
		||||
        "lua",
 | 
			
		||||
        "markdown",
 | 
			
		||||
        "markdown_inline",
 | 
			
		||||
        "python",
 | 
			
		||||
        "query",
 | 
			
		||||
        "regex",
 | 
			
		||||
        "tsx",
 | 
			
		||||
        "typescript",
 | 
			
		||||
        "vim",
 | 
			
		||||
        "yaml",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
 | 
			
		||||
  -- would overwrite `ensure_installed` with the new value.
 | 
			
		||||
  -- If you'd rather extend the default config, use the code below instead:
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-treesitter/nvim-treesitter",
 | 
			
		||||
    opts = function(_, opts)
 | 
			
		||||
      -- add tsx and treesitter
 | 
			
		||||
      vim.list_extend(opts.ensure_installed, {
 | 
			
		||||
        "tsx",
 | 
			
		||||
        "typescript",
 | 
			
		||||
      })
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- the opts function can also be used to change the default opts:
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-lualine/lualine.nvim",
 | 
			
		||||
    event = "VeryLazy",
 | 
			
		||||
    opts = function(_, opts)
 | 
			
		||||
      table.insert(opts.sections.lualine_x, "😄")
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- or you can return new options to override all the defaults
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-lualine/lualine.nvim",
 | 
			
		||||
    event = "VeryLazy",
 | 
			
		||||
    opts = function()
 | 
			
		||||
      return {
 | 
			
		||||
        --[[add your custom lualine config here]]
 | 
			
		||||
      }
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- use mini.starter instead of alpha
 | 
			
		||||
  { import = "lazyvim.plugins.extras.ui.mini-starter" },
 | 
			
		||||
 | 
			
		||||
  -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
 | 
			
		||||
  { import = "lazyvim.plugins.extras.lang.json" },
 | 
			
		||||
 | 
			
		||||
  -- add any tools you want to have installed below
 | 
			
		||||
  {
 | 
			
		||||
    "williamboman/mason.nvim",
 | 
			
		||||
    opts = {
 | 
			
		||||
      ensure_installed = {
 | 
			
		||||
        "stylua",
 | 
			
		||||
        "shellcheck",
 | 
			
		||||
        "shfmt",
 | 
			
		||||
        "flake8",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- Use <tab> for completion and snippets (supertab)
 | 
			
		||||
  -- first: disable default <tab> and <s-tab> behavior in LuaSnip
 | 
			
		||||
  {
 | 
			
		||||
    "L3MON4D3/LuaSnip",
 | 
			
		||||
    keys = function()
 | 
			
		||||
      return {}
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
  -- then: setup supertab in cmp
 | 
			
		||||
  {
 | 
			
		||||
    "hrsh7th/nvim-cmp",
 | 
			
		||||
    dependencies = {
 | 
			
		||||
      "hrsh7th/cmp-emoji",
 | 
			
		||||
    },
 | 
			
		||||
    ---@param opts cmp.ConfigSchema
 | 
			
		||||
    opts = function(_, opts)
 | 
			
		||||
      local has_words_before = function()
 | 
			
		||||
        unpack = unpack or table.unpack
 | 
			
		||||
        local line, col = unpack(vim.api.nvim_win_get_cursor(0))
 | 
			
		||||
        return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      local luasnip = require("luasnip")
 | 
			
		||||
      local cmp = require("cmp")
 | 
			
		||||
 | 
			
		||||
      opts.mapping = vim.tbl_extend("force", opts.mapping, {
 | 
			
		||||
        ["<Tab>"] = cmp.mapping(function(fallback)
 | 
			
		||||
          if cmp.visible() then
 | 
			
		||||
            cmp.select_next_item()
 | 
			
		||||
            -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
 | 
			
		||||
            -- this way you will only jump inside the snippet region
 | 
			
		||||
          elseif luasnip.expand_or_jumpable() then
 | 
			
		||||
            luasnip.expand_or_jump()
 | 
			
		||||
          elseif has_words_before() then
 | 
			
		||||
            cmp.complete()
 | 
			
		||||
          else
 | 
			
		||||
            fallback()
 | 
			
		||||
          end
 | 
			
		||||
        end, { "i", "s" }),
 | 
			
		||||
        ["<S-Tab>"] = cmp.mapping(function(fallback)
 | 
			
		||||
          if cmp.visible() then
 | 
			
		||||
            cmp.select_prev_item()
 | 
			
		||||
          elseif luasnip.jumpable(-1) then
 | 
			
		||||
            luasnip.jump(-1)
 | 
			
		||||
          else
 | 
			
		||||
            fallback()
 | 
			
		||||
          end
 | 
			
		||||
        end, { "i", "s" }),
 | 
			
		||||
      })
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								nvim/lua/plugins/flash.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								nvim/lua/plugins/flash.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
return {
 | 
			
		||||
  "folke/flash.nvim",
 | 
			
		||||
  event = "VeryLazy",
 | 
			
		||||
  ---@type Flash.Config
 | 
			
		||||
  opts = {},
 | 
			
		||||
  -- stylua: ignore
 | 
			
		||||
  keys = {
 | 
			
		||||
    { "s",     mode = { "n", "x", "o" }, function() require("flash").jump() end,              desc = "Flash" },
 | 
			
		||||
    { "S",     mode = { "n", "x", "o" }, function() require("flash").treesitter() end,        desc = "Flash Treesitter" },
 | 
			
		||||
    { "r",     mode = "o",               function() require("flash").remote() end,            desc = "Remote Flash" },
 | 
			
		||||
    { "R",     mode = { "o", "x" },      function() require("flash").treesitter_search() end, desc = "Treesitter Search" },
 | 
			
		||||
    { "<c-s>", mode = { "c" },           function() require("flash").toggle() end,            desc = "Toggle Flash Search" },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  "tpope/vim-fugitive",
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										23
									
								
								nvim/lua/plugins/fzflua.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								nvim/lua/plugins/fzflua.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
return {
 | 
			
		||||
  "ibhagwan/fzf-lua",
 | 
			
		||||
  dependencies = { "echasnovski/mini.icons" },
 | 
			
		||||
  opts = {
 | 
			
		||||
    winopts={
 | 
			
		||||
      height = 0.85,
 | 
			
		||||
      width = 0.95,
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  keys = {
 | 
			
		||||
    { "<leader>ff", function() require('fzf-lua').files() end, desc="Find Files in current dir"},
 | 
			
		||||
    { "<leader>fb", function() require('fzf-lua').buffers() end, desc="Find open buffers"},
 | 
			
		||||
    { "<leader><leader>", function() require('fzf-lua').buffers() end, desc="Find open buffers"},
 | 
			
		||||
    { "<leader>fgf", function() require('fzf-lua').git_files() end, desc="Find git files"},
 | 
			
		||||
    { "<leader>fgb", function() require('fzf-lua').git_branches() end, desc="Find git branches"},
 | 
			
		||||
    { "<leader>fB", function() require('fzf-lua').builtin() end, desc="Find builtin finders"},
 | 
			
		||||
    { "<leader>fr", function() require('fzf-lua').resume() end, desc="Resume last search"},
 | 
			
		||||
    { "<leader>fG", function() require('fzf-lua').live_grep() end, desc="Grep files live"},
 | 
			
		||||
    { "<leader>fw", function() require('fzf-lua').grep_cword() end, desc="Grep current word"},
 | 
			
		||||
    { "<leader>fW", function() require('fzf-lua').grep_cWORD() end, desc="Grep current WORD"},
 | 
			
		||||
    { "<leader>/", function() require('fzf-lua').lgrep_curbuf() end, desc="Grep current buffer"},
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								nvim/lua/plugins/git-blame.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								nvim/lua/plugins/git-blame.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
return {
 | 
			
		||||
  "f-person/git-blame.nvim",
 | 
			
		||||
  -- load the plugin at startup
 | 
			
		||||
  event = "VeryLazy",
 | 
			
		||||
  -- Because of the keys part, you will be lazy loading this plugin.
 | 
			
		||||
  -- The plugin will only load once one of the keys is used.
 | 
			
		||||
  -- If you want to load the plugin at startup, add something like event = "VeryLazy",
 | 
			
		||||
  -- or lazy = false. One of both options will work.
 | 
			
		||||
  keys= {
 | 
			
		||||
 | 
			
		||||
    { "<leader>gb", "<Cmd>GitBlameToggle<CR>", desc = "Toggle Git Blame Line" },
 | 
			
		||||
  },
 | 
			
		||||
  opts = {
 | 
			
		||||
    -- your configuration comes here
 | 
			
		||||
    -- for example
 | 
			
		||||
    enabled = false, -- if you want to enable the plugin
 | 
			
		||||
    message_template = " <summary> • <date> • <author> • <<sha>>", -- template for the blame message, check the Message template section for more options
 | 
			
		||||
    date_format = "%Y-%m-%d", -- template for the date, check Date format section for more options
 | 
			
		||||
    virtual_text_column = 1, -- virtual text start column, check Start virtual text at column section for more options
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								nvim/lua/plugins/git-signs.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								nvim/lua/plugins/git-signs.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
return {
 | 
			
		||||
  "lewis6991/gitsigns.nvim",
 | 
			
		||||
  opts = {
 | 
			
		||||
    signs = {
 | 
			
		||||
      add = { text = "+" },
 | 
			
		||||
      change = { text = "~" },
 | 
			
		||||
      delete = { text = "_" },
 | 
			
		||||
      topdelete = { text = "‾" },
 | 
			
		||||
      changedelete = { text = "~" },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								nvim/lua/plugins/jsontotypes.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								nvim/lua/plugins/jsontotypes.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
return {
 | 
			
		||||
  "Redoxahmii/json-to-types.nvim",
 | 
			
		||||
  build = "sh install.sh npm", -- Replace `npm` with your preferred package manager (e.g., yarn, pnpm).
 | 
			
		||||
  ft = "json",
 | 
			
		||||
  keys = {
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>cU",
 | 
			
		||||
      "<CMD>ConvertJSONtoLang typescript<CR>",
 | 
			
		||||
      desc = "Convert JSON to TS",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>ct",
 | 
			
		||||
      "<CMD>ConvertJSONtoLangBuffer typescript<CR>",
 | 
			
		||||
      desc = "Convert JSON to TS Buffer",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								nvim/lua/plugins/kanagawa.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								nvim/lua/plugins/kanagawa.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
return {
 | 
			
		||||
  "rebelot/kanagawa.nvim", 
 | 
			
		||||
  config = function()
 | 
			
		||||
    require('kanagawa').setup({
 | 
			
		||||
      compile=true,
 | 
			
		||||
      transparent=true,
 | 
			
		||||
      background = {
 | 
			
		||||
        dark = "wave",
 | 
			
		||||
        light = "lotus"
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
    vim.cmd("colorscheme kanagawa");
 | 
			
		||||
  end,
 | 
			
		||||
  build = function()
 | 
			
		||||
    vim.cmd("KanagawaCompile");
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								nvim/lua/plugins/lazydev.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								nvim/lua/plugins/lazydev.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
return {
 | 
			
		||||
  -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
 | 
			
		||||
  -- used for completion, annotations and signatures of Neovim apis
 | 
			
		||||
  'folke/lazydev.nvim',
 | 
			
		||||
  ft = 'lua',
 | 
			
		||||
  opts = {
 | 
			
		||||
    library = {
 | 
			
		||||
      -- Load luvit types when the `vim.uv` word is found
 | 
			
		||||
      { path = '${3rd}/luv/library', words = { 'vim%.uv' } },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										272
									
								
								nvim/lua/plugins/lsp.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										272
									
								
								nvim/lua/plugins/lsp.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,272 @@
 | 
			
		||||
return {
 | 
			
		||||
  "neovim/nvim-lspconfig",
 | 
			
		||||
  dependencies = {
 | 
			
		||||
    { "williamboman/mason.nvim", opts = {} },
 | 
			
		||||
    "williamboman/mason-lspconfig.nvim",
 | 
			
		||||
    "WhoIsSethDaniel/mason-tool-installer.nvim",
 | 
			
		||||
    "yioneko/nvim-vtsls",
 | 
			
		||||
    opts = {
 | 
			
		||||
      settings = {
 | 
			
		||||
        typescript = {
 | 
			
		||||
          inlayHints = {
 | 
			
		||||
            parameterNames = { enabled = "literals" },
 | 
			
		||||
            parameterTypes = { enabled = true },
 | 
			
		||||
            variableTypes = { enabled = true },
 | 
			
		||||
            propertyDeclarationTypes = { enabled = true },
 | 
			
		||||
            functionLikeReturnTypes = { enabled = true },
 | 
			
		||||
            enumMemberValues = { enabled = true },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    { "j-hui/fidget.nvim",       opts = {} },
 | 
			
		||||
 | 
			
		||||
    "saghen/blink.cmp",
 | 
			
		||||
  },
 | 
			
		||||
  opts = {
 | 
			
		||||
    inlay_hints = { enabled = true },
 | 
			
		||||
    diagnostics = { virtual_text = true },
 | 
			
		||||
  },
 | 
			
		||||
  config = function()
 | 
			
		||||
    inlay_hints = { enabled = true }
 | 
			
		||||
    diagnostics = { virtual_text = true }
 | 
			
		||||
    vim.api.nvim_create_autocmd("LspAttach", {
 | 
			
		||||
      group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }),
 | 
			
		||||
      callback = function(event)
 | 
			
		||||
        local map = function(keys, func, desc, mode)
 | 
			
		||||
          mode = mode or "n"
 | 
			
		||||
          vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = "LSP: " .. desc })
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        -- Rename the variable under your cursor.
 | 
			
		||||
        map("<leader>cr", vim.lsp.buf.rename, "([C]ode) [R]ename")
 | 
			
		||||
 | 
			
		||||
        -- Execute a code action, usually your cursor needs to be on top of an error
 | 
			
		||||
        -- or a suggestion from your LSP for this to activate.
 | 
			
		||||
        map("<leader>ca", require("fzf-lua").lsp_code_actions, "[G]oto Code [A]ction", { "n", "x" })
 | 
			
		||||
        map("<leader>cd", vim.diagnostic.open_float, "[C]ode [D]iagnostics in float")
 | 
			
		||||
        map("<leader>gwd", require("fzf-lua").diagnostics_workspace, "[G]o [W]orkspace [D]iagnostics")
 | 
			
		||||
 | 
			
		||||
        -- Find references for the word under your cursor.
 | 
			
		||||
        map("gr", require("fzf-lua").lsp_references, "[G]oto [R]eferences")
 | 
			
		||||
 | 
			
		||||
        -- Jump to the implementation of the word under your cursor.
 | 
			
		||||
        map("<leader>gi", require("fzf-lua").lsp_implementations, "[G]oto [I]mplementation")
 | 
			
		||||
 | 
			
		||||
        -- Jump to the definition of the word under your cursor.
 | 
			
		||||
        --  This is where a variable was first declared, or where a function is defined, etc.
 | 
			
		||||
        --  To jump back, press <C-t>.
 | 
			
		||||
        map("gd", require("fzf-lua").lsp_definitions, "[G]oto [D]efinition")
 | 
			
		||||
 | 
			
		||||
        -- WARN: This is not Goto Definition, this is Goto Declaration.
 | 
			
		||||
        --  For example, in C this would take you to the header.
 | 
			
		||||
        map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration")
 | 
			
		||||
 | 
			
		||||
        -- Fuzzy find all the symbols in your current document.
 | 
			
		||||
        map("<leader>gO", require("fzf-lua").lsp_document_symbols, "Open Document Symbols")
 | 
			
		||||
 | 
			
		||||
        -- Fuzzy find all the symbols in your current workspace.
 | 
			
		||||
        map("<leader>gW", require("fzf-lua").lsp_live_workspace_symbols, "Open Workspace Symbols")
 | 
			
		||||
 | 
			
		||||
        -- Jump to the type of the word under your cursor.
 | 
			
		||||
        map("<leader>gT", require("fzf-lua").lsp_typedefs, "[G]oto [T]ype Definition")
 | 
			
		||||
 | 
			
		||||
        -- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10)
 | 
			
		||||
        ---@param client vim.lsp.Client
 | 
			
		||||
        ---@param method vim.lsp.protocol.Method
 | 
			
		||||
        ---@param bufnr? integer some lsp support methods only in specific files
 | 
			
		||||
        ---@return boolean
 | 
			
		||||
        local function client_supports_method(client, method, bufnr)
 | 
			
		||||
          if vim.fn.has("nvim-0.11") == 1 then
 | 
			
		||||
            return client:supports_method(method, bufnr)
 | 
			
		||||
          else
 | 
			
		||||
            return client.supports_method(method, { bufnr = bufnr })
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        local client = vim.lsp.get_client_by_id(event.data.client_id)
 | 
			
		||||
        if
 | 
			
		||||
            client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf)
 | 
			
		||||
        then
 | 
			
		||||
          local highlight_augroup = vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false })
 | 
			
		||||
          vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
 | 
			
		||||
            buffer = event.buf,
 | 
			
		||||
            group = highlight_augroup,
 | 
			
		||||
            callback = vim.lsp.buf.document_highlight,
 | 
			
		||||
          })
 | 
			
		||||
 | 
			
		||||
          vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
 | 
			
		||||
            buffer = event.buf,
 | 
			
		||||
            group = highlight_augroup,
 | 
			
		||||
            callback = vim.lsp.buf.clear_references,
 | 
			
		||||
          })
 | 
			
		||||
 | 
			
		||||
          vim.api.nvim_create_autocmd("LspDetach", {
 | 
			
		||||
            group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }),
 | 
			
		||||
            callback = function(event2)
 | 
			
		||||
              vim.lsp.buf.clear_references()
 | 
			
		||||
              vim.api.nvim_clear_autocmds({ group = "kickstart-lsp-highlight", buffer = event2.buf })
 | 
			
		||||
            end,
 | 
			
		||||
          })
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then
 | 
			
		||||
          map("<leader>th", function()
 | 
			
		||||
            vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf }))
 | 
			
		||||
          end, "[T]oggle Inlay [H]ints")
 | 
			
		||||
        end
 | 
			
		||||
      end,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    -- Diagnostic Config
 | 
			
		||||
    -- See :help vim.diagnostic.Opts
 | 
			
		||||
    vim.diagnostic.config({
 | 
			
		||||
      severity_sort = true,
 | 
			
		||||
      float = { border = "rounded", source = "if_many" },
 | 
			
		||||
      underline = { severity = vim.diagnostic.severity.ERROR },
 | 
			
		||||
      signs = {
 | 
			
		||||
        text = {
 | 
			
		||||
          [vim.diagnostic.severity.ERROR] = " ",
 | 
			
		||||
          [vim.diagnostic.severity.WARN] = " ",
 | 
			
		||||
          [vim.diagnostic.severity.INFO] = " ",
 | 
			
		||||
          [vim.diagnostic.severity.HINT] = " ",
 | 
			
		||||
        },
 | 
			
		||||
      } or {},
 | 
			
		||||
      virtual_text = {
 | 
			
		||||
        source = "if_many",
 | 
			
		||||
        spacing = 2,
 | 
			
		||||
        format = function(diagnostic)
 | 
			
		||||
          local diagnostic_message = {
 | 
			
		||||
            [vim.diagnostic.severity.ERROR] = diagnostic.message,
 | 
			
		||||
            [vim.diagnostic.severity.WARN] = diagnostic.message,
 | 
			
		||||
            [vim.diagnostic.severity.INFO] = diagnostic.message,
 | 
			
		||||
            [vim.diagnostic.severity.HINT] = diagnostic.message,
 | 
			
		||||
          }
 | 
			
		||||
          return diagnostic_message[diagnostic.severity]
 | 
			
		||||
        end,
 | 
			
		||||
      },
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    -- LSP servers and clients are able to communicate to each other what features they support.
 | 
			
		||||
    --  By default, Neovim doesn't support everything that is in the LSP specification.
 | 
			
		||||
    --  When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities.
 | 
			
		||||
    --  So, we create new capabilities with blink.cmp, and then broadcast that to the servers.
 | 
			
		||||
    local capabilities = require("blink.cmp").get_lsp_capabilities()
 | 
			
		||||
 | 
			
		||||
    -- Enable the following language servers
 | 
			
		||||
    --  Feel free to add/remove any LSPs that you want here. They will automatically be installed.
 | 
			
		||||
    --
 | 
			
		||||
    --  Add any additional override configuration in the following tables. Available keys are:
 | 
			
		||||
    --  - cmd (table): Override the default command used to start the server
 | 
			
		||||
    --  - filetypes (table): Override the default list of associated filetypes for the server
 | 
			
		||||
    --  - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features.
 | 
			
		||||
    --  - settings (table): Override the default settings passed when initializing the server.
 | 
			
		||||
    --        For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
 | 
			
		||||
    local servers = {
 | 
			
		||||
      -- clangd = {},
 | 
			
		||||
      -- gopls = {},
 | 
			
		||||
      -- pyright = {},
 | 
			
		||||
      -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
 | 
			
		||||
      --
 | 
			
		||||
      -- Some languages (like typescript) have entire language plugins that can be useful:
 | 
			
		||||
      --    https://github.com/pmizio/typescript-tools.nvim
 | 
			
		||||
      --
 | 
			
		||||
      -- But for many setups, the LSP (`ts_ls`) will work just fine
 | 
			
		||||
      -- ts_ls = {},
 | 
			
		||||
      --
 | 
			
		||||
 | 
			
		||||
      rust_analyzer = {},
 | 
			
		||||
      vtsls = {
 | 
			
		||||
        -- explicitly add default filetypes, so that we can extend
 | 
			
		||||
        -- them in related extras
 | 
			
		||||
        filetypes = {
 | 
			
		||||
          "javascript",
 | 
			
		||||
          "javascriptreact",
 | 
			
		||||
          "javascript.jsx",
 | 
			
		||||
          "typescript",
 | 
			
		||||
          "typescriptreact",
 | 
			
		||||
          "typescript.tsx",
 | 
			
		||||
        },
 | 
			
		||||
        settings = {
 | 
			
		||||
          typescript = {
 | 
			
		||||
            updateImportsOnFileMove = { enabled = "always" },
 | 
			
		||||
            inlayHints = {
 | 
			
		||||
              parameterNames = { enabled = "literals" },
 | 
			
		||||
              parameterTypes = { enabled = true },
 | 
			
		||||
              variableTypes = { enabled = true },
 | 
			
		||||
              propertyDeclarationTypes = { enabled = true },
 | 
			
		||||
              functionLikeReturnTypes = { enabled = true },
 | 
			
		||||
              enumMemberValues = { enabled = true },
 | 
			
		||||
            },
 | 
			
		||||
            suggest = {
 | 
			
		||||
              completeFunctionCalls = true,
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      bashls = {},
 | 
			
		||||
      prismals = {},
 | 
			
		||||
      gopls = {},
 | 
			
		||||
      jsonls = {},
 | 
			
		||||
      helm_ls = {},
 | 
			
		||||
      yamlls = function()
 | 
			
		||||
        vim.lsp.on_attach(function(client, buffer)
 | 
			
		||||
          if vim.bo[buffer].filetype == "helm" then
 | 
			
		||||
            vim.schedule(function()
 | 
			
		||||
              vim.cmd("LspStop ++force yamlls")
 | 
			
		||||
            end)
 | 
			
		||||
          end
 | 
			
		||||
        end)
 | 
			
		||||
      end,
 | 
			
		||||
      eslint = {
 | 
			
		||||
        vim.api.nvim_create_autocmd("BufWritePre", {
 | 
			
		||||
          callback = function()
 | 
			
		||||
            vim.lsp.buf.format()
 | 
			
		||||
          end,
 | 
			
		||||
        }),
 | 
			
		||||
      },
 | 
			
		||||
      lua_ls = {
 | 
			
		||||
        -- cmd = { ... },
 | 
			
		||||
        -- filetypes = { ... },
 | 
			
		||||
        -- capabilities = {},
 | 
			
		||||
        settings = {
 | 
			
		||||
          Lua = {
 | 
			
		||||
            completion = {
 | 
			
		||||
              callSnippet = "Replace",
 | 
			
		||||
            },
 | 
			
		||||
            -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
 | 
			
		||||
            -- diagnostics = { disable = { 'missing-fields' } },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    local ensure_installed = vim.tbl_keys(servers or {})
 | 
			
		||||
    vim.list_extend(ensure_installed, {
 | 
			
		||||
      "stylua", -- Used to format Lua code
 | 
			
		||||
      "prettierd",
 | 
			
		||||
      "codelldb",
 | 
			
		||||
      "gitlab_ci_ls",
 | 
			
		||||
      "js-debug-adapter",
 | 
			
		||||
      "shfmt",
 | 
			
		||||
    })
 | 
			
		||||
    require("mason-tool-installer").setup({ ensure_installed = ensure_installed })
 | 
			
		||||
 | 
			
		||||
    require("mason-lspconfig").setup({
 | 
			
		||||
      ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
 | 
			
		||||
      automatic_installation = false,
 | 
			
		||||
      automatic_enable = true,
 | 
			
		||||
      handlers = {
 | 
			
		||||
        function(server_name)
 | 
			
		||||
          local server = servers[server_name] or {}
 | 
			
		||||
          -- This handles overriding only values explicitly passed
 | 
			
		||||
          -- by the server configuration above. Useful when disabling
 | 
			
		||||
          -- certain features of an LSP (for example, turning off formatting for ts_ls)
 | 
			
		||||
          server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {})
 | 
			
		||||
          require("lspconfig")[server_name].setup(server)
 | 
			
		||||
        end,
 | 
			
		||||
      },
 | 
			
		||||
    })
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								nvim/lua/plugins/mini.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								nvim/lua/plugins/mini.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
return {
 | 
			
		||||
  "echasnovski/mini.nvim",
 | 
			
		||||
  version = "*",
 | 
			
		||||
  config = function()
 | 
			
		||||
    require("mini.pairs").setup({})
 | 
			
		||||
    require("mini.surround").setup({
 | 
			
		||||
      mappings = {
 | 
			
		||||
        add = "gza", -- Add surrounding in Normal and Visual modes
 | 
			
		||||
        delete = "gzd", -- Delete surrounding
 | 
			
		||||
        find = "gzf", -- Find surrounding (to the right)
 | 
			
		||||
        find_left = "gzF", -- Find surrounding (to the left)
 | 
			
		||||
        highlight = "gzh", -- Highlight surrounding
 | 
			
		||||
        replace = "gzr", -- Replace surrounding
 | 
			
		||||
        update_n_lines = "gzn", -- Update `n_lines`
 | 
			
		||||
 | 
			
		||||
        suffix_last = "l", -- Suffix to search with "prev" method
 | 
			
		||||
        suffix_next = "n", -- Suffix to search with "next" method
 | 
			
		||||
      },
 | 
			
		||||
    })
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  { "nvim-neotest/neotest-jest" },
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-neotest/neotest",
 | 
			
		||||
    opts = function(_, opts)
 | 
			
		||||
      table.insert(
 | 
			
		||||
        opts.adapters,
 | 
			
		||||
        require("neotest-jest")({
 | 
			
		||||
          jestCommand = "npm test --",
 | 
			
		||||
          jestConfig = "jest.config.js",
 | 
			
		||||
          env = { CI = true },
 | 
			
		||||
          cwd = function()
 | 
			
		||||
            return vim.fn.getcwd()
 | 
			
		||||
          end,
 | 
			
		||||
        })
 | 
			
		||||
      )
 | 
			
		||||
    end,
 | 
			
		||||
    keys = {
 | 
			
		||||
      {
 | 
			
		||||
        "<leader>tw",
 | 
			
		||||
        "<cmd>lua require('neotest').run.run({ jestCommand = 'jest --watch ' })<cr>",
 | 
			
		||||
        desc = "Jest Watch",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  { "rouge8/neotest-rust" },
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-neotest/neotest",
 | 
			
		||||
    opts = function(_, opts)
 | 
			
		||||
      table.insert(
 | 
			
		||||
        opts.adapters,
 | 
			
		||||
        require("neotest-rust")({
 | 
			
		||||
          args = { "--no-capture" },
 | 
			
		||||
        })
 | 
			
		||||
      )
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
@@ -1,15 +1,384 @@
 | 
			
		||||
return {
 | 
			
		||||
  "nvim-neo-tree/neo-tree.nvim",
 | 
			
		||||
  opts = {
 | 
			
		||||
    require("neo-tree").setup({
 | 
			
		||||
      window = {
 | 
			
		||||
        mappings = {
 | 
			
		||||
          ["P"] = function(state)
 | 
			
		||||
            local node = state.tree:get_node()
 | 
			
		||||
            require("neo-tree.ui.renderer").focus_node(state, node:get_parent_id())
 | 
			
		||||
          end,
 | 
			
		||||
        },
 | 
			
		||||
  {
 | 
			
		||||
    "antosha417/nvim-lsp-file-operations",
 | 
			
		||||
    dependencies = {
 | 
			
		||||
      "nvim-lua/plenary.nvim",
 | 
			
		||||
      "nvim-neo-tree/neo-tree.nvim",
 | 
			
		||||
    },
 | 
			
		||||
    config = function()
 | 
			
		||||
      require("lsp-file-operations").setup()
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "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", opts = {}}, -- Optional image support in preview window: See `# Preview Mode` for more information
 | 
			
		||||
      {
 | 
			
		||||
        "s1n7ax/nvim-window-picker", -- for open_with_window_picker keymaps
 | 
			
		||||
        version = "2.*",
 | 
			
		||||
        config = function()
 | 
			
		||||
          require("window-picker").setup({
 | 
			
		||||
            filter_rules = {
 | 
			
		||||
              include_current_win = false,
 | 
			
		||||
              autoselect_one = true,
 | 
			
		||||
              -- filter using buffer options
 | 
			
		||||
              bo = {
 | 
			
		||||
                -- if the file type is one of following, the window will be ignored
 | 
			
		||||
                filetype = { "neo-tree", "neo-tree-popup", "notify" },
 | 
			
		||||
                -- if the buffer type is one of following, the window will be ignored
 | 
			
		||||
                buftype = { "terminal", "quickfix" },
 | 
			
		||||
              },
 | 
			
		||||
            },
 | 
			
		||||
          })
 | 
			
		||||
        end,
 | 
			
		||||
      },
 | 
			
		||||
    }),
 | 
			
		||||
    },
 | 
			
		||||
    lazy = false,
 | 
			
		||||
    -----Instead of using `config`, you can use `opts` instead, if you'd like:
 | 
			
		||||
    -----@module "neo-tree"
 | 
			
		||||
    -----@type neotree.Config
 | 
			
		||||
    --opts = {},
 | 
			
		||||
    config = function()
 | 
			
		||||
      -- If you want icons for diagnostic errors, you'll need to define them somewhere.
 | 
			
		||||
      -- In Neovim v0.10+, you can configure them in vim.diagnostic.config(), like:
 | 
			
		||||
      --
 | 
			
		||||
      vim.diagnostic.config({
 | 
			
		||||
        signs = {
 | 
			
		||||
          text = {
 | 
			
		||||
            [vim.diagnostic.severity.ERROR] = "",
 | 
			
		||||
            [vim.diagnostic.severity.WARN] = "",
 | 
			
		||||
            [vim.diagnostic.severity.INFO] = "",
 | 
			
		||||
            [vim.diagnostic.severity.HINT] = "",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      })
 | 
			
		||||
      --
 | 
			
		||||
      -- In older versions, you can define the signs manually:
 | 
			
		||||
      -- vim.fn.sign_define("DiagnosticSignError", { text = " ", texthl = "DiagnosticSignError" })
 | 
			
		||||
      -- vim.fn.sign_define("DiagnosticSignWarn", { text = " ", texthl = "DiagnosticSignWarn" })
 | 
			
		||||
      -- vim.fn.sign_define("DiagnosticSignInfo", { text = " ", texthl = "DiagnosticSignInfo" })
 | 
			
		||||
      -- vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
 | 
			
		||||
 | 
			
		||||
      require("neo-tree").setup({
 | 
			
		||||
        close_if_last_window = false, -- Close Neo-tree if it is the last window left in the tab
 | 
			
		||||
        popup_border_style = "NC",    -- or "" to use 'winborder' on Neovim v0.11+
 | 
			
		||||
        enable_git_status = true,
 | 
			
		||||
        enable_diagnostics = true,
 | 
			
		||||
        open_files_do_not_replace_types = { "terminal", "trouble", "qf" }, -- when opening files, do not use windows containing these filetypes or buftypes
 | 
			
		||||
        open_files_using_relative_paths = false,
 | 
			
		||||
        sort_case_insensitive = false,                                     -- used when sorting files and directories in the tree
 | 
			
		||||
        sort_function = nil,                                               -- use a custom function for sorting files and directories in the tree
 | 
			
		||||
        -- sort_function = function (a,b)
 | 
			
		||||
        --       if a.type == b.type then
 | 
			
		||||
        --           return a.path > b.path
 | 
			
		||||
        --       else
 | 
			
		||||
        --           return a.type > b.type
 | 
			
		||||
        --       end
 | 
			
		||||
        --   end , -- this sorts files and directories descendantly
 | 
			
		||||
        default_component_configs = {
 | 
			
		||||
          container = {
 | 
			
		||||
            enable_character_fade = true,
 | 
			
		||||
          },
 | 
			
		||||
          indent = {
 | 
			
		||||
            indent_size = 2,
 | 
			
		||||
            padding = 1, -- extra padding on left hand side
 | 
			
		||||
            -- indent guides
 | 
			
		||||
            with_markers = true,
 | 
			
		||||
            indent_marker = "│",
 | 
			
		||||
            last_indent_marker = "└",
 | 
			
		||||
            highlight = "NeoTreeIndentMarker",
 | 
			
		||||
            -- expander config, needed for nesting files
 | 
			
		||||
            with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders
 | 
			
		||||
            expander_collapsed = "",
 | 
			
		||||
            expander_expanded = "",
 | 
			
		||||
            expander_highlight = "NeoTreeExpander",
 | 
			
		||||
          },
 | 
			
		||||
          icon = {
 | 
			
		||||
            folder_closed = "",
 | 
			
		||||
            folder_open = "",
 | 
			
		||||
            folder_empty = "",
 | 
			
		||||
            provider = function(icon, node, state) -- default icon provider utilizes nvim-web-devicons if available
 | 
			
		||||
              if node.type == "file" or node.type == "terminal" then
 | 
			
		||||
                local success, web_devicons = pcall(require, "nvim-web-devicons")
 | 
			
		||||
                local name = node.type == "terminal" and "terminal" or node.name
 | 
			
		||||
                if success then
 | 
			
		||||
                  local devicon, hl = web_devicons.get_icon(name)
 | 
			
		||||
                  icon.text = devicon or icon.text
 | 
			
		||||
                  icon.highlight = hl or icon.highlight
 | 
			
		||||
                end
 | 
			
		||||
              end
 | 
			
		||||
            end,
 | 
			
		||||
            -- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there
 | 
			
		||||
            -- then these will never be used.
 | 
			
		||||
            default = "*",
 | 
			
		||||
            highlight = "NeoTreeFileIcon",
 | 
			
		||||
          },
 | 
			
		||||
          modified = {
 | 
			
		||||
            symbol = "[+]",
 | 
			
		||||
            highlight = "NeoTreeModified",
 | 
			
		||||
          },
 | 
			
		||||
          name = {
 | 
			
		||||
            trailing_slash = false,
 | 
			
		||||
            use_git_status_colors = true,
 | 
			
		||||
            highlight = "NeoTreeFileName",
 | 
			
		||||
          },
 | 
			
		||||
          git_status = {
 | 
			
		||||
            symbols = {
 | 
			
		||||
              -- Change type
 | 
			
		||||
              added = "", -- or "✚", but this is redundant info if you use git_status_colors on the name
 | 
			
		||||
              modified = "", -- or "", but this is redundant info if you use git_status_colors on the name
 | 
			
		||||
              deleted = "✖", -- this can only be used in the git_status source
 | 
			
		||||
              renamed = "", -- this can only be used in the git_status source
 | 
			
		||||
              -- Status type
 | 
			
		||||
              untracked = "",
 | 
			
		||||
              ignored = "",
 | 
			
		||||
              unstaged = "",
 | 
			
		||||
              staged = "",
 | 
			
		||||
              conflict = "",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          -- If you don't want to use these columns, you can set `enabled = false` for each of them individually
 | 
			
		||||
          file_size = {
 | 
			
		||||
            enabled = true,
 | 
			
		||||
            width = 12,          -- width of the column
 | 
			
		||||
            required_width = 64, -- min width of window required to show this column
 | 
			
		||||
          },
 | 
			
		||||
          type = {
 | 
			
		||||
            enabled = true,
 | 
			
		||||
            width = 10,           -- width of the column
 | 
			
		||||
            required_width = 122, -- min width of window required to show this column
 | 
			
		||||
          },
 | 
			
		||||
          last_modified = {
 | 
			
		||||
            enabled = true,
 | 
			
		||||
            width = 20,          -- width of the column
 | 
			
		||||
            required_width = 88, -- min width of window required to show this column
 | 
			
		||||
          },
 | 
			
		||||
          created = {
 | 
			
		||||
            enabled = true,
 | 
			
		||||
            width = 20,           -- width of the column
 | 
			
		||||
            required_width = 110, -- min width of window required to show this column
 | 
			
		||||
          },
 | 
			
		||||
          symlink_target = {
 | 
			
		||||
            enabled = false,
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        -- A list of functions, each representing a global custom command
 | 
			
		||||
        -- that will be available in all sources (if not overridden in `opts[source_name].commands`)
 | 
			
		||||
        -- see `:h neo-tree-custom-commands-global`
 | 
			
		||||
        commands = {},
 | 
			
		||||
        window = {
 | 
			
		||||
          position = "left",
 | 
			
		||||
          width = 40,
 | 
			
		||||
          mapping_options = {
 | 
			
		||||
            noremap = true,
 | 
			
		||||
            nowait = true,
 | 
			
		||||
          },
 | 
			
		||||
          mappings = {
 | 
			
		||||
            ["<space>"] = {
 | 
			
		||||
              "toggle_node",
 | 
			
		||||
              nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use
 | 
			
		||||
            },
 | 
			
		||||
            ["<2-LeftMouse>"] = "open",
 | 
			
		||||
            ["<cr>"] = "open",
 | 
			
		||||
            ["<esc>"] = "cancel", -- close preview or floating neo-tree window
 | 
			
		||||
            ["P"] = { "toggle_preview", config = { use_float = true, use_image_nvim = true } },
 | 
			
		||||
            -- Read `# Preview Mode` for more information
 | 
			
		||||
            ["l"] = "focus_preview",
 | 
			
		||||
            ["S"] = "open_split",
 | 
			
		||||
            ["s"] = "open_vsplit",
 | 
			
		||||
            -- ["S"] = "split_with_window_picker",
 | 
			
		||||
            -- ["s"] = "vsplit_with_window_picker",
 | 
			
		||||
            ["t"] = "open_tabnew",
 | 
			
		||||
            -- ["<cr>"] = "open_drop",
 | 
			
		||||
            -- ["t"] = "open_tab_drop",
 | 
			
		||||
            ["w"] = "open_with_window_picker",
 | 
			
		||||
            --["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing
 | 
			
		||||
            ["C"] = "close_node",
 | 
			
		||||
            -- ['C'] = 'close_all_subnodes',
 | 
			
		||||
            ["z"] = "close_all_nodes",
 | 
			
		||||
            --["Z"] = "expand_all_nodes",
 | 
			
		||||
            --["Z"] = "expand_all_subnodes",
 | 
			
		||||
            ["a"] = {
 | 
			
		||||
              "add",
 | 
			
		||||
              -- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details
 | 
			
		||||
              -- some commands may take optional config options, see `:h neo-tree-mappings` for details
 | 
			
		||||
              config = {
 | 
			
		||||
                show_path = "none", -- "none", "relative", "absolute"
 | 
			
		||||
              },
 | 
			
		||||
            },
 | 
			
		||||
            ["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion.
 | 
			
		||||
            ["d"] = "delete",
 | 
			
		||||
            ["r"] = "rename",
 | 
			
		||||
            ["b"] = "rename_basename",
 | 
			
		||||
            ["y"] = "copy_to_clipboard",
 | 
			
		||||
            ["x"] = "cut_to_clipboard",
 | 
			
		||||
            ["p"] = "paste_from_clipboard",
 | 
			
		||||
            ["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add":
 | 
			
		||||
            -- ["c"] = {
 | 
			
		||||
            --  "copy",
 | 
			
		||||
            --  config = {
 | 
			
		||||
            --    show_path = "none" -- "none", "relative", "absolute"
 | 
			
		||||
            --  }
 | 
			
		||||
            --}
 | 
			
		||||
            ["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add".
 | 
			
		||||
            ["q"] = "close_window",
 | 
			
		||||
            ["R"] = "refresh",
 | 
			
		||||
            ["?"] = "show_help",
 | 
			
		||||
            ["<"] = "prev_source",
 | 
			
		||||
            [">"] = "next_source",
 | 
			
		||||
            ["i"] = "show_file_details",
 | 
			
		||||
            -- ["i"] = {
 | 
			
		||||
            --   "show_file_details",
 | 
			
		||||
            --   -- format strings of the timestamps shown for date created and last modified (see `:h os.date()`)
 | 
			
		||||
            --   -- both options accept a string or a function that takes in the date in seconds and returns a string to display
 | 
			
		||||
            --   -- config = {
 | 
			
		||||
            --   --   created_format = "%Y-%m-%d %I:%M %p",
 | 
			
		||||
            --   --   modified_format = "relative", -- equivalent to the line below
 | 
			
		||||
            --   --   modified_format = function(seconds) return require('neo-tree.utils').relative_date(seconds) end
 | 
			
		||||
            --   -- }
 | 
			
		||||
            -- },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        nesting_rules = {},
 | 
			
		||||
        filesystem = {
 | 
			
		||||
          filtered_items = {
 | 
			
		||||
            visible = false, -- when true, they will just be displayed differently than normal items
 | 
			
		||||
            hide_dotfiles = true,
 | 
			
		||||
            hide_gitignored = true,
 | 
			
		||||
            hide_hidden = true, -- only works on Windows for hidden files/directories
 | 
			
		||||
            hide_by_name = {
 | 
			
		||||
              --"node_modules"
 | 
			
		||||
            },
 | 
			
		||||
            hide_by_pattern = { -- uses glob style patterns
 | 
			
		||||
              --"*.meta",
 | 
			
		||||
              --"*/src/*/tsconfig.json",
 | 
			
		||||
            },
 | 
			
		||||
            always_show = { -- remains visible even if other settings would normally hide it
 | 
			
		||||
              --".gitignored",
 | 
			
		||||
            },
 | 
			
		||||
            always_show_by_pattern = { -- uses glob style patterns
 | 
			
		||||
              --".env*",
 | 
			
		||||
            },
 | 
			
		||||
            never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show
 | 
			
		||||
              --".DS_Store",
 | 
			
		||||
              --"thumbs.db"
 | 
			
		||||
            },
 | 
			
		||||
            never_show_by_pattern = { -- uses glob style patterns
 | 
			
		||||
              --".null-ls_*",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          follow_current_file = {
 | 
			
		||||
            enabled = true,                   -- This will find and focus the file in the active buffer every time
 | 
			
		||||
            --               -- the current file is changed while the tree is open.
 | 
			
		||||
            leave_dirs_open = true,           -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
 | 
			
		||||
          },
 | 
			
		||||
          group_empty_dirs = false,           -- when true, empty folders will be grouped together
 | 
			
		||||
          hijack_netrw_behavior = "disabled", -- netrw disabled, opening a directory opens neo-tree
 | 
			
		||||
          -- in whatever position is specified in window.position
 | 
			
		||||
          -- "open_current",  -- netrw disabled, opening a directory opens within the
 | 
			
		||||
          -- window like netrw would, regardless of window.position
 | 
			
		||||
          -- "disabled",    -- netrw left alone, neo-tree does not handle opening dirs
 | 
			
		||||
          use_libuv_file_watcher = true, -- This will use the OS level file watchers to detect changes
 | 
			
		||||
          -- instead of relying on nvim autocmd events.
 | 
			
		||||
          window = {
 | 
			
		||||
            mappings = {
 | 
			
		||||
              ["<bs>"] = "navigate_up",
 | 
			
		||||
              ["."] = "set_root",
 | 
			
		||||
              ["H"] = "toggle_hidden",
 | 
			
		||||
              ["/"] = "fuzzy_finder",
 | 
			
		||||
              ["D"] = "fuzzy_finder_directory",
 | 
			
		||||
              ["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm
 | 
			
		||||
              -- ["D"] = "fuzzy_sorter_directory",
 | 
			
		||||
              ["f"] = "filter_on_submit",
 | 
			
		||||
              ["<c-x>"] = "clear_filter",
 | 
			
		||||
              ["[g"] = "prev_git_modified",
 | 
			
		||||
              ["]g"] = "next_git_modified",
 | 
			
		||||
              ["o"] = {
 | 
			
		||||
                "show_help",
 | 
			
		||||
                nowait = false,
 | 
			
		||||
                config = { title = "Order by", prefix_key = "o" },
 | 
			
		||||
              },
 | 
			
		||||
              ["oc"] = { "order_by_created", nowait = false },
 | 
			
		||||
              ["od"] = { "order_by_diagnostics", nowait = false },
 | 
			
		||||
              ["og"] = { "order_by_git_status", nowait = false },
 | 
			
		||||
              ["om"] = { "order_by_modified", nowait = false },
 | 
			
		||||
              ["on"] = { "order_by_name", nowait = false },
 | 
			
		||||
              ["os"] = { "order_by_size", nowait = false },
 | 
			
		||||
              ["ot"] = { "order_by_type", nowait = false },
 | 
			
		||||
              -- ['<key>'] = function(state) ... end,
 | 
			
		||||
            },
 | 
			
		||||
            fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode
 | 
			
		||||
              ["<down>"] = "move_cursor_down",
 | 
			
		||||
              ["<C-n>"] = "move_cursor_down",
 | 
			
		||||
              ["<up>"] = "move_cursor_up",
 | 
			
		||||
              ["<C-p>"] = "move_cursor_up",
 | 
			
		||||
              ["<esc>"] = "close",
 | 
			
		||||
              -- ['<key>'] = function(state, scroll_padding) ... end,
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
 | 
			
		||||
          commands = {}, -- Add a custom command or override a global one using the same function name
 | 
			
		||||
        },
 | 
			
		||||
        buffers = {
 | 
			
		||||
          follow_current_file = {
 | 
			
		||||
            enabled = true,          -- This will find and focus the file in the active buffer every time
 | 
			
		||||
            --              -- the current file is changed while the tree is open.
 | 
			
		||||
            leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
 | 
			
		||||
          },
 | 
			
		||||
          group_empty_dirs = true,   -- when true, empty folders will be grouped together
 | 
			
		||||
          show_unloaded = true,
 | 
			
		||||
          window = {
 | 
			
		||||
            mappings = {
 | 
			
		||||
              ["d"] = "buffer_delete",
 | 
			
		||||
              ["bd"] = "buffer_delete",
 | 
			
		||||
              ["<bs>"] = "navigate_up",
 | 
			
		||||
              ["."] = "set_root",
 | 
			
		||||
              ["o"] = {
 | 
			
		||||
                "show_help",
 | 
			
		||||
                nowait = false,
 | 
			
		||||
                config = { title = "Order by", prefix_key = "o" },
 | 
			
		||||
              },
 | 
			
		||||
              ["oc"] = { "order_by_created", nowait = false },
 | 
			
		||||
              ["od"] = { "order_by_diagnostics", nowait = false },
 | 
			
		||||
              ["om"] = { "order_by_modified", nowait = false },
 | 
			
		||||
              ["on"] = { "order_by_name", nowait = false },
 | 
			
		||||
              ["os"] = { "order_by_size", nowait = false },
 | 
			
		||||
              ["ot"] = { "order_by_type", nowait = false },
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        git_status = {
 | 
			
		||||
          window = {
 | 
			
		||||
            position = "float",
 | 
			
		||||
            mappings = {
 | 
			
		||||
              ["A"] = "git_add_all",
 | 
			
		||||
              ["gu"] = "git_unstage_file",
 | 
			
		||||
              ["ga"] = "git_add_file",
 | 
			
		||||
              ["gr"] = "git_revert_file",
 | 
			
		||||
              ["gc"] = "git_commit",
 | 
			
		||||
              ["gp"] = "git_push",
 | 
			
		||||
              ["gg"] = "git_commit_and_push",
 | 
			
		||||
              ["o"] = {
 | 
			
		||||
                "show_help",
 | 
			
		||||
                nowait = false,
 | 
			
		||||
                config = { title = "Order by", prefix_key = "o" },
 | 
			
		||||
              },
 | 
			
		||||
              ["oc"] = { "order_by_created", nowait = false },
 | 
			
		||||
              ["od"] = { "order_by_diagnostics", nowait = false },
 | 
			
		||||
              ["om"] = { "order_by_modified", nowait = false },
 | 
			
		||||
              ["on"] = { "order_by_name", nowait = false },
 | 
			
		||||
              ["os"] = { "order_by_size", nowait = false },
 | 
			
		||||
              ["ot"] = { "order_by_type", nowait = false },
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      vim.keymap.set("n", "<leader>e", "<Cmd>Neotree toggle<CR>")
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  "mxsdev/nvim-dap-vscode-js",
 | 
			
		||||
  opts = function()
 | 
			
		||||
    adapters = { "pwa-node", "pwa-chrome", "pwa-msedge", "node-terminal", "pwa-extensionHost" }
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4
									
								
								nvim/lua/plugins/nvim-treesitter-context.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								nvim/lua/plugins/nvim-treesitter-context.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
return {
 | 
			
		||||
  "nvim-treesitter/nvim-treesitter-context",
 | 
			
		||||
  opts = { enabled = true },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										62
									
								
								nvim/lua/plugins/nvim-treesitter-textobjects.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								nvim/lua/plugins/nvim-treesitter-textobjects.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
return {
 | 
			
		||||
  "nvim-treesitter/nvim-treesitter-textobjects",
 | 
			
		||||
  dependencies = {
 | 
			
		||||
    "nvim-treesitter/nvim-treesitter"
 | 
			
		||||
  },
 | 
			
		||||
  init = function()
 | 
			
		||||
    require'nvim-treesitter.configs'.setup {
 | 
			
		||||
      textobjects = {
 | 
			
		||||
        select = {
 | 
			
		||||
          enable = true,
 | 
			
		||||
 | 
			
		||||
          -- Automatically jump forward to textobj, similar to targets.vim
 | 
			
		||||
          lookahead = true,
 | 
			
		||||
 | 
			
		||||
          keymaps = {
 | 
			
		||||
            -- You can use the capture groups defined in textobjects.scm
 | 
			
		||||
            ["af"] = "@function.outer",
 | 
			
		||||
            ["if"] = "@function.inner",
 | 
			
		||||
            ["ac"] = "@class.outer",
 | 
			
		||||
            ["bi"] = "@block.inner",
 | 
			
		||||
            -- You can optionally set descriptions to the mappings (used in the desc parameter of
 | 
			
		||||
            -- nvim_buf_set_keymap) which plugins like which-key display
 | 
			
		||||
            ["ic"] = { query = "@class.inner", desc = "Select inner part of a class region" },
 | 
			
		||||
            -- You can also use captures from other query groups like `locals.scm`
 | 
			
		||||
            ["as"] = { query = "@local.scope", query_group = "locals", desc = "Select language scope" },
 | 
			
		||||
          },
 | 
			
		||||
          -- You can choose the select mode (default is charwise 'v')
 | 
			
		||||
          --
 | 
			
		||||
          -- Can also be a function which gets passed a table with the keys
 | 
			
		||||
          -- * query_string: eg '@function.inner'
 | 
			
		||||
          -- * method: eg 'v' or 'o'
 | 
			
		||||
          -- and should return the mode ('v', 'V', or '<c-v>') or a table
 | 
			
		||||
          -- mapping query_strings to modes.
 | 
			
		||||
          selection_modes = {
 | 
			
		||||
            ['@parameter.outer'] = 'v', -- charwise
 | 
			
		||||
            ['@function.outer'] = 'V', -- linewise
 | 
			
		||||
            ['@class.outer'] = '<c-v>', -- blockwise
 | 
			
		||||
          },
 | 
			
		||||
          -- If you set this to `true` (default is `false`) then any textobject is
 | 
			
		||||
          -- extended to include preceding or succeeding whitespace. Succeeding
 | 
			
		||||
          -- whitespace has priority in order to act similarly to eg the built-in
 | 
			
		||||
          -- `ap`.
 | 
			
		||||
          --
 | 
			
		||||
          -- Can also be a function which gets passed a table with the keys
 | 
			
		||||
          -- * query_string: eg '@function.inner'
 | 
			
		||||
          -- * selection_mode: eg 'v'
 | 
			
		||||
          -- and should return true or false
 | 
			
		||||
          include_surrounding_whitespace = true,
 | 
			
		||||
        },
 | 
			
		||||
        swap = {
 | 
			
		||||
          enable = true,
 | 
			
		||||
          swap_next = {
 | 
			
		||||
            ["<leader>a"] = "@parameter.inner",
 | 
			
		||||
          },
 | 
			
		||||
          swap_previous = {
 | 
			
		||||
            ["<leader>s"] = "@parameter.inner",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,23 @@
 | 
			
		||||
return {
 | 
			
		||||
  "nvim-treesitter/nvim-treesitter",
 | 
			
		||||
  opts = {
 | 
			
		||||
    ensure_installed = "all",
 | 
			
		||||
  },
 | 
			
		||||
  build = ":TSUpdate",
 | 
			
		||||
  config = function ()
 | 
			
		||||
    local configs = require("nvim-treesitter.configs")
 | 
			
		||||
 | 
			
		||||
    configs.setup({
 | 
			
		||||
      ensure_installed = "all",
 | 
			
		||||
      sync_install = false,
 | 
			
		||||
      highlight = { enable = true },
 | 
			
		||||
      indent = { enable = true },
 | 
			
		||||
      incremental_selection = {
 | 
			
		||||
        enable = true,
 | 
			
		||||
        keymaps = {
 | 
			
		||||
          init_selection = "<Enter>",
 | 
			
		||||
          node_incremental = "<Enter>",
 | 
			
		||||
          scope_incremental = false,
 | 
			
		||||
          node_decremental = "<Backspace>"
 | 
			
		||||
        },
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  end
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										25
									
								
								nvim/lua/plugins/oil.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								nvim/lua/plugins/oil.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
return {
 | 
			
		||||
  "stevearc/oil.nvim",
 | 
			
		||||
  ---@module 'oil'
 | 
			
		||||
  ---@type oil.SetupOpts
 | 
			
		||||
  opts = {
 | 
			
		||||
    columns = {
 | 
			
		||||
      "icon",
 | 
			
		||||
      "permissions",
 | 
			
		||||
      "size",
 | 
			
		||||
    },
 | 
			
		||||
    watch_for_changes = true,
 | 
			
		||||
    view_options = {
 | 
			
		||||
      -- Show files and directories that start with "."
 | 
			
		||||
      show_hidden = true,
 | 
			
		||||
    },
 | 
			
		||||
    float = {
 | 
			
		||||
      preview_split = "right",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  -- Optional dependencies
 | 
			
		||||
  dependencies = { { "echasnovski/mini.icons", opts = {} } },
 | 
			
		||||
  -- dependencies = { "nvim-tree/nvim-web-devicons" }, -- use if you prefer nvim-web-devicons
 | 
			
		||||
  -- Lazy loading is not recommended because it is very tricky to make it work correctly in all situations.
 | 
			
		||||
  lazy = false,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								nvim/lua/plugins/projects.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								nvim/lua/plugins/projects.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
return {
 | 
			
		||||
  "ahmedkhalf/project.nvim",
 | 
			
		||||
  init = function()
 | 
			
		||||
    require("project_nvim").setup {
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								nvim/lua/plugins/rainbow.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								nvim/lua/plugins/rainbow.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
return {
 | 
			
		||||
  "HiPhish/rainbow-delimiters.nvim",
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								nvim/lua/plugins/rustacean.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								nvim/lua/plugins/rustacean.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
return {
 | 
			
		||||
  'mrcjkb/rustaceanvim',
 | 
			
		||||
  version = '^6', -- Recommended
 | 
			
		||||
  lazy = false, -- This plugin is already lazy
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								nvim/lua/plugins/sleuth-vim.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								nvim/lua/plugins/sleuth-vim.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
return {
 | 
			
		||||
	"tpope/vim-sleuth",
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										62
									
								
								nvim/lua/plugins/snacks.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								nvim/lua/plugins/snacks.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
return {
 | 
			
		||||
  "folke/snacks.nvim",
 | 
			
		||||
  priority = 1000,
 | 
			
		||||
  lazy = false,
 | 
			
		||||
  ---@type snacks.Config
 | 
			
		||||
  opts = {
 | 
			
		||||
    -- your configuration comes here
 | 
			
		||||
    -- or leave it empty to use the default settings
 | 
			
		||||
    -- refer to the configuration section below
 | 
			
		||||
    animate = { enabled = true, easing = "cubic" },
 | 
			
		||||
    bigfile = { enabled = true },
 | 
			
		||||
    explorer = { enabled = true },
 | 
			
		||||
    indent = { enabled = true, animate = { enabled = false }, scope = { enabled = true }, chunk = { enabled = true } },
 | 
			
		||||
    input = { enabled = true },
 | 
			
		||||
    picker = { enabled = true },
 | 
			
		||||
    notifier = { enabled = true },
 | 
			
		||||
    quickfile = { enabled = true },
 | 
			
		||||
    scope = { enabled = true },
 | 
			
		||||
    scroll = { enabled = true },
 | 
			
		||||
    statuscolumn = { enabled = true },
 | 
			
		||||
    words = { enabled = true },
 | 
			
		||||
  },
 | 
			
		||||
  keys = {
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>gg",
 | 
			
		||||
      function()
 | 
			
		||||
        Snacks.lazygit()
 | 
			
		||||
      end,
 | 
			
		||||
      desc = "Lazygit",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  init = function()
 | 
			
		||||
    vim.api.nvim_create_autocmd("User", {
 | 
			
		||||
      pattern = "VeryLazy",
 | 
			
		||||
      callback = function()
 | 
			
		||||
        -- Setup some globals for debugging (lazy-loaded)
 | 
			
		||||
        _G.dd = function(...)
 | 
			
		||||
          Snacks.debug.inspect(...)
 | 
			
		||||
        end
 | 
			
		||||
        _G.bt = function()
 | 
			
		||||
          Snacks.debug.backtrace()
 | 
			
		||||
        end
 | 
			
		||||
        vim.print = _G.dd -- Override print to use snacks for `:=` command
 | 
			
		||||
 | 
			
		||||
        -- Create some toggle mappings
 | 
			
		||||
        Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us")
 | 
			
		||||
        Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw")
 | 
			
		||||
        Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("<leader>uL")
 | 
			
		||||
        Snacks.toggle.diagnostics():map("<leader>ud")
 | 
			
		||||
        Snacks.toggle.line_number():map("<leader>ul")
 | 
			
		||||
        Snacks.toggle
 | 
			
		||||
          .option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 })
 | 
			
		||||
          :map("<leader>uc")
 | 
			
		||||
        Snacks.toggle.treesitter():map("<leader>uT")
 | 
			
		||||
        Snacks.toggle.option("background", { off = "light", on = "dark", name = "Dark Background" }):map("<leader>ub")
 | 
			
		||||
        Snacks.toggle.inlay_hints():map("<leader>uh")
 | 
			
		||||
        Snacks.toggle.indent():map("<leader>ug")
 | 
			
		||||
        Snacks.toggle.dim():map("<leader>uD")
 | 
			
		||||
      end,
 | 
			
		||||
    })
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								nvim/lua/plugins/statusline.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								nvim/lua/plugins/statusline.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
return {
 | 
			
		||||
	"echasnovski/mini.statusline",
 | 
			
		||||
	version = false,
 | 
			
		||||
	opts = {}
 | 
			
		||||
}
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  "echasnovski/mini.surround",
 | 
			
		||||
  opts = {
 | 
			
		||||
    mappings = {
 | 
			
		||||
      add = "gsa", -- Add surrounding in Normal and Visual modes
 | 
			
		||||
      delete = "gsd", -- Delete surrounding
 | 
			
		||||
      find = "gsf", -- Find surrounding (to the right)
 | 
			
		||||
      find_left = "gsF", -- Find surrounding (to the left)
 | 
			
		||||
      highlight = "gsh", -- Highlight surrounding
 | 
			
		||||
      replace = "gsr", -- Replace surrounding
 | 
			
		||||
      update_n_lines = "gsn", -- Update `n_lines`
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								nvim/lua/plugins/trouble.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								nvim/lua/plugins/trouble.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
return {
 | 
			
		||||
  "folke/trouble.nvim",
 | 
			
		||||
  init = function()
 | 
			
		||||
    local config = require("fzf-lua.config")
 | 
			
		||||
    local actions = require("trouble.sources.fzf").actions
 | 
			
		||||
    config.defaults.actions.files["ctrl-t"] = actions.open
 | 
			
		||||
  end,
 | 
			
		||||
  opts={},
 | 
			
		||||
  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)",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								nvim/lua/plugins/vim-helm.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								nvim/lua/plugins/vim-helm.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
return {
 | 
			
		||||
  'towolf/vim-helm'
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								nvim/lua/plugins/which-key.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								nvim/lua/plugins/which-key.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
return {
 | 
			
		||||
	"folke/which-key.nvim",
 | 
			
		||||
	event = "VeryLazy",
 | 
			
		||||
	opts = {},
 | 
			
		||||
	keys = {
 | 
			
		||||
		{
 | 
			
		||||
			"<leader>?",
 | 
			
		||||
			function()
 | 
			
		||||
				require("which-key").show({global = false})
 | 
			
		||||
			end,
 | 
			
		||||
			desc = "Buffer local Keymaps (which-key)",
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user