summaryrefslogtreecommitdiff
path: root/ar/.config/LazyVim/lua/plugins
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-01-24 20:35:27 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-01-24 20:35:27 +0900
commitc80a54e42b52ce297f0f2f71af23c562832025c7 (patch)
treedcce8bb977a770f473325d48f6f70b21d9818a40 /ar/.config/LazyVim/lua/plugins
init
Diffstat (limited to 'ar/.config/LazyVim/lua/plugins')
-rw-r--r--ar/.config/LazyVim/lua/plugins/better-escape.lua6
-rw-r--r--ar/.config/LazyVim/lua/plugins/bqf.lua9
-rw-r--r--ar/.config/LazyVim/lua/plugins/catppuccin.lua92
-rw-r--r--ar/.config/LazyVim/lua/plugins/cmp.lua50
-rw-r--r--ar/.config/LazyVim/lua/plugins/colorscheme.lua11
-rw-r--r--ar/.config/LazyVim/lua/plugins/comment.lua23
-rw-r--r--ar/.config/LazyVim/lua/plugins/dadbod.lua25
-rw-r--r--ar/.config/LazyVim/lua/plugins/dashboard-nvim.lua68
-rw-r--r--ar/.config/LazyVim/lua/plugins/example.lua265
-rw-r--r--ar/.config/LazyVim/lua/plugins/file-browser.lua15
-rw-r--r--ar/.config/LazyVim/lua/plugins/glow.lua8
-rw-r--r--ar/.config/LazyVim/lua/plugins/goyo.lua53
-rw-r--r--ar/.config/LazyVim/lua/plugins/harpoon.lua19
-rw-r--r--ar/.config/LazyVim/lua/plugins/impatient.lua6
-rw-r--r--ar/.config/LazyVim/lua/plugins/jukit.lua79
-rw-r--r--ar/.config/LazyVim/lua/plugins/jupyter.lua345
-rw-r--r--ar/.config/LazyVim/lua/plugins/lspconfig.lua77
-rw-r--r--ar/.config/LazyVim/lua/plugins/lualine.lua105
-rw-r--r--ar/.config/LazyVim/lua/plugins/magma.lua23
-rw-r--r--ar/.config/LazyVim/lua/plugins/markdown-preview.lua23
-rw-r--r--ar/.config/LazyVim/lua/plugins/mason.lua92
-rw-r--r--ar/.config/LazyVim/lua/plugins/neogen.lua33
-rw-r--r--ar/.config/LazyVim/lua/plugins/notify.lua6
-rw-r--r--ar/.config/LazyVim/lua/plugins/nvim-neo-tree.lua16
-rw-r--r--ar/.config/LazyVim/lua/plugins/obsidian.lua319
-rw-r--r--ar/.config/LazyVim/lua/plugins/oil.lua13
-rw-r--r--ar/.config/LazyVim/lua/plugins/playground.lua38
-rw-r--r--ar/.config/LazyVim/lua/plugins/project.lua6
-rw-r--r--ar/.config/LazyVim/lua/plugins/refactoring.lua35
-rw-r--r--ar/.config/LazyVim/lua/plugins/seoul256.lua3
-rw-r--r--ar/.config/LazyVim/lua/plugins/tagbar.lua12
-rw-r--r--ar/.config/LazyVim/lua/plugins/telescope.lua24
-rw-r--r--ar/.config/LazyVim/lua/plugins/tmux-navigator.lua19
-rw-r--r--ar/.config/LazyVim/lua/plugins/tokyonight.lua10
-rw-r--r--ar/.config/LazyVim/lua/plugins/treesj.lua32
-rw-r--r--ar/.config/LazyVim/lua/plugins/vimwiki.lua37
-rw-r--r--ar/.config/LazyVim/lua/plugins/which-key.lua55
-rw-r--r--ar/.config/LazyVim/lua/plugins/yanky.lua31
-rw-r--r--ar/.config/LazyVim/lua/plugins/zen-mode.lua11
39 files changed, 2094 insertions, 0 deletions
diff --git a/ar/.config/LazyVim/lua/plugins/better-escape.lua b/ar/.config/LazyVim/lua/plugins/better-escape.lua
new file mode 100644
index 0000000..8980a09
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/better-escape.lua
@@ -0,0 +1,6 @@
+return {
+ "max397574/better-escape.nvim",
+ config = function()
+ require("better_escape").setup()
+ end,
+}
diff --git a/ar/.config/LazyVim/lua/plugins/bqf.lua b/ar/.config/LazyVim/lua/plugins/bqf.lua
new file mode 100644
index 0000000..529c06d
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/bqf.lua
@@ -0,0 +1,9 @@
+return {
+ "kevinhwang91/nvim-bqf",
+ ft = "qf",
+ keys = {
+ -- { "zn", false },
+ -- { "zN", false },
+ -- { "zf", false },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/catppuccin.lua b/ar/.config/LazyVim/lua/plugins/catppuccin.lua
new file mode 100644
index 0000000..fa451bd
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/catppuccin.lua
@@ -0,0 +1,92 @@
+return {
+ "catppuccin/nvim",
+ lazy = true,
+ name = "catppuccin",
+ priority = 1000,
+ opts = {
+ integrations = {
+ aerial = true,
+ alpha = true,
+ cmp = true,
+ dashboard = true,
+ flash = true,
+ gitsigns = true,
+ headlines = true,
+ illuminate = true,
+ indent_blankline = { enabled = true },
+ leap = true,
+ lsp_trouble = true,
+ mason = true,
+ markdown = true,
+ mini = true,
+ native_lsp = {
+ enabled = true,
+ underlines = {
+ errors = { "undercurl" },
+ hints = { "undercurl" },
+ warnings = { "undercurl" },
+ information = { "undercurl" },
+ },
+ },
+ navic = { enabled = true, custom_bg = "lualine" },
+ neotest = true,
+ neotree = true,
+ noice = true,
+ notify = true,
+ semantic_tokens = true,
+ telescope = true,
+ treesitter = true,
+ treesitter_context = true,
+ which_key = true,
+ },
+ },
+ config = function()
+ require("catppuccin").setup({
+ transparent_background = true, -- disables setting the background color.
+ styles = { -- Handles the styles of general hi groups (see `:h highlight-args`):
+ comments = { "italic" }, -- Change the style of comments
+ conditionals = {},
+ loops = {},
+ functions = {},
+ keywords = { "bold" },
+ strings = {},
+ variables = {},
+ numbers = {},
+ booleans = {},
+ properties = {},
+ types = {},
+ operators = {},
+ },
+ color_overrides = {
+ mocha = {
+ rosewater = "#f5e0dc",
+ flamingo = "#f2cdcd",
+ pink = "#f5c2e7",
+ mauve = "#cba6f7",
+ red = "#f38ba8",
+ maroon = "#eba0ac",
+ peach = "#fab387",
+ yellow = "#f9e2af",
+ green = "#a6e3a1",
+ teal = "#94e2d5",
+ sky = "#89dceb",
+ sapphire = "#74c7ec",
+ blue = "#89b4fa",
+ lavender = "#b4befe",
+ text = "#cdd6f4",
+ subtext1 = "#bac2de",
+ subtext0 = "#a6adc8",
+ overlay2 = "#9399b2",
+ overlay1 = "#7f849c",
+ overlay0 = "#696D86",
+ surface2 = "#585b70",
+ surface1 = "#45475a",
+ surface0 = "#232728",
+ base = "#282828",
+ mantle = "#181825",
+ crust = "#11111b",
+ },
+ },
+ })
+ end,
+}
diff --git a/ar/.config/LazyVim/lua/plugins/cmp.lua b/ar/.config/LazyVim/lua/plugins/cmp.lua
new file mode 100644
index 0000000..3121e90
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/cmp.lua
@@ -0,0 +1,50 @@
+return {
+ {
+ "L3MON4D3/LuaSnip",
+ keys = function()
+ return {}
+ end,
+ },
+ {
+ "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,
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/colorscheme.lua b/ar/.config/LazyVim/lua/plugins/colorscheme.lua
new file mode 100644
index 0000000..6acb3d3
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/colorscheme.lua
@@ -0,0 +1,11 @@
+return {
+ { "catppuccin/nvim", name = "catppuccin", opts = { transparent_background = true }, priority = 1000 },
+ {
+ "LazyVim/LazyVim",
+ opts = {
+ -- colorscheme = "tokyonight",
+ colorscheme = "catppuccin",
+ -- colorscheme = "gruvbox",
+ },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/comment.lua b/ar/.config/LazyVim/lua/plugins/comment.lua
new file mode 100644
index 0000000..1979d56
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/comment.lua
@@ -0,0 +1,23 @@
+return {
+ "numToStr/Comment.nvim",
+ lazy = "false",
+ keys = {
+ {
+ mode = "n",
+ "<leader>/",
+ function()
+ require("Comment.api").toggle.linewise.current()
+ end,
+ desc = "Toggle comment",
+ },
+ {
+ mode = "v",
+ "<leader>/",
+ "<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>",
+ desc = "Toggle comment",
+ },
+ },
+ config = function(_, opts)
+ require("Comment").setup(opts)
+ end,
+}
diff --git a/ar/.config/LazyVim/lua/plugins/dadbod.lua b/ar/.config/LazyVim/lua/plugins/dadbod.lua
new file mode 100644
index 0000000..b3e8275
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/dadbod.lua
@@ -0,0 +1,25 @@
+return {
+ "kristijanhusak/vim-dadbod-ui",
+ dependencies = {
+ { "tpope/vim-dadbod", lazy = true },
+ { "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true },
+ },
+ cmd = {
+ "DBUI",
+ "DBUIToggle",
+ "DBUIAddConnection",
+ "DBUIFindBuffer",
+ },
+ init = function()
+ -- Your DBUI configuration
+ vim.g.db_ui_use_nerd_fonts = 1
+ end,
+ keys = {
+ { "<leader>ddb", "<cmd>DBUI<cr>", desc = "DB UI" },
+ { "<leader>ddu", "<cmd>DBUIToggle<cr>", desc = "Toggle DB UI" },
+ { "<leader>dda", "<cmd>DBUIAddConnection<cr>", desc = "Add Connection" },
+ { "<leader>ddf", "<cmd>DBUIFindBuffer<cr>", desc = "Find buffer" },
+ { "<leader>ddr", "<cmd>DBUIRenameBuffer<cr>", desc = "Rename buffer" },
+ { "<leader>ddl", "<cmd>DBUILastQueryInfo<cr>", desc = "Last query info" },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/dashboard-nvim.lua b/ar/.config/LazyVim/lua/plugins/dashboard-nvim.lua
new file mode 100644
index 0000000..8a1ffd6
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/dashboard-nvim.lua
@@ -0,0 +1,68 @@
+local Util = require("lazyvim.util")
+return {
+ "nvimdev/dashboard-nvim",
+ opts = function(_, opts)
+ local logo = [[
+ ┌──────────────────────────────────────────────────────┐
+ │ │
+ │ ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ │
+ │ ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ │
+ │ ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ │
+ │ ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ │
+ │ ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ │
+ │ ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ │
+ └──────────────────────────────────────────────────────┘
+ ]]
+
+ logo = string.rep("\n", 5) .. logo .. "\n"
+
+ local opts = {
+ theme = "doom",
+ hide = {
+ -- this is taken care of by lualine
+ -- enabling this messes up the actual laststatus setting after loading a file
+ statusline = false,
+ },
+
+ config = {
+ header = vim.split(logo, "\n"),
+ -- stylua: ignore
+ center = {
+ { action = "ene | startinsert", desc = " New file", icon = " ", key = "n" },
+ { action = "Telescope oldfiles", desc = " Recent files", icon = " ", key = "r" },
+ { action = "Telescope projects", desc = " Projects", icon = " ", key = "p" },
+ { action = Util.telescope("files"), desc = " Find file", icon = " ", key = "f" },
+ { action = "Telescope live_grep", desc = " Find word", icon = " ", key = "g" },
+ { action = [[lua require("lazyvim.util").telescope.config_files()()]], desc = " Config", icon = " ", key = "c" },
+ { action = 'lua require("persistence").load()', desc = " Restore Session", icon = " ", key = "s" },
+ { action = "LazyExtras", desc = " Lazy Extras", icon = " ", key = "e" },
+ { action = "Lazy", desc = " Lazy", icon = "󰒲 ", key = "l" },
+ { action = "Mason", desc = " Mason", icon = "◍ ", key = "m" },
+ { action = "qa", desc = " Quit", icon = " ", key = "q" },
+ },
+ footer = function()
+ local stats = require("lazy").stats()
+ local ms = (math.floor(stats.startuptime * 100 + 0.5) / 100)
+ return { "⚡ Neovim loaded " .. stats.loaded .. "/" .. stats.count .. " plugins in " .. ms .. "ms" }
+ end,
+ },
+ }
+
+ for _, button in ipairs(opts.config.center) do
+ button.desc = button.desc .. string.rep(" ", 43 - #button.desc)
+ button.key_format = " %s"
+ end
+
+ -- close Lazy and re-open when the dashboard is ready
+ if vim.o.filetype == "lazy" then
+ vim.cmd.close()
+ vim.api.nvim_create_autocmd("User", {
+ pattern = "DashboardLoaded",
+ callback = function()
+ require("lazy").show()
+ end,
+ })
+ end
+ return opts
+ end,
+}
diff --git a/ar/.config/LazyVim/lua/plugins/example.lua b/ar/.config/LazyVim/lua/plugins/example.lua
new file mode 100644
index 0000000..f84ebdc
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/example.lua
@@ -0,0 +1,265 @@
+-- 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)
+ table.insert(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,
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/file-browser.lua b/ar/.config/LazyVim/lua/plugins/file-browser.lua
new file mode 100644
index 0000000..9a9ea2f
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/file-browser.lua
@@ -0,0 +1,15 @@
+return {
+ "nvim-telescope/telescope-file-browser.nvim",
+ dependencies = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" },
+ keys = {
+ {
+ mode = "n",
+ "<leader>sB",
+ ":Telescope file_browser path=%:p:h=%:p:h<cr>",
+ desc = "Browse Files",
+ },
+ },
+ config = function()
+ require("telescope").load_extension("file_browser")
+ end,
+}
diff --git a/ar/.config/LazyVim/lua/plugins/glow.lua b/ar/.config/LazyVim/lua/plugins/glow.lua
new file mode 100644
index 0000000..e4702d2
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/glow.lua
@@ -0,0 +1,8 @@
+return {
+ "ellisonleao/glow.nvim",
+ cmd = "Glow",
+ config = true,
+ keys = {
+ { mode = "n", "<leader>mf", "<cmd>Glow<cr>", desc = "Markdown Preview float" },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/goyo.lua b/ar/.config/LazyVim/lua/plugins/goyo.lua
new file mode 100644
index 0000000..9d0f860
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/goyo.lua
@@ -0,0 +1,53 @@
+vim.g.is_goyo_active = false
+
+vim.g.goyo_enter = function()
+ if vim.fn.executable("tmux") == 1 and vim.fn.strlen(vim.env.TMUX) > 0 then
+ vim.fn.system("tmux set status off")
+ if not string.find(vim.fn.system("tmux list-panes -F '#F'"), "Z") then
+ vim.fn.system("tmux resize-pane -Z")
+ end
+ end
+
+ vim.g.default_colorscheme = vim.g.colors_name or "default"
+ vim.o.background = "light"
+ vim.wo.linebreak = true
+ vim.wo.wrap = true
+ vim.bo.textwidth = 0
+ vim.bo.wrapmargin = 0
+ vim.cmd("Goyo 80x85%")
+ vim.cmd("colorscheme seoul256")
+ vim.g.is_goyo_active = true
+end
+
+vim.g.goyo_leave = function()
+ if vim.fn.executable("tmux") == 1 and vim.fn.strlen(vim.env.TMUX) > 0 then
+ vim.fn.system("tmux set status on")
+ if string.find(vim.fn.system("tmux list-panes -F '#F'"), "Z") then
+ vim.fn.system("tmux resize-pane -Z")
+ end
+ end
+ vim.cmd("Goyo!")
+ vim.cmd("colorscheme " .. vim.g.default_colorscheme)
+ vim.g.is_goyo_active = false
+end
+
+vim.g.toggle_goyo = function()
+ if vim.g.is_goyo_active then
+ vim.g.goyo_leave()
+ else
+ vim.g.goyo_enter()
+ end
+end
+
+return {
+ "junegunn/goyo.vim",
+ cmd = "Goyo",
+ keys = {
+ vim.api.nvim_set_keymap(
+ "n",
+ "<leader>gy",
+ "<cmd>lua vim.g.toggle_goyo()<CR>",
+ { noremap = true, silent = true, desc = "Toggle Goyo" }
+ ),
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/harpoon.lua b/ar/.config/LazyVim/lua/plugins/harpoon.lua
new file mode 100644
index 0000000..a156e1d
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/harpoon.lua
@@ -0,0 +1,19 @@
+return {
+ "ThePrimeagen/harpoon",
+ branch = "harpoon2",
+ opts = {
+ menu = {
+ width = vim.api.nvim_win_get_width(0) - 4,
+ },
+ },
+ keys = {
+ {
+ "<C-e>",
+ function()
+ local harpoon = require("harpoon")
+ harpoon.ui:toggle_quick_menu(harpoon:list())
+ end,
+ desc = "Harpoon quick menu",
+ },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/impatient.lua b/ar/.config/LazyVim/lua/plugins/impatient.lua
new file mode 100644
index 0000000..d0877c9
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/impatient.lua
@@ -0,0 +1,6 @@
+return {
+ "lewis6991/impatient.nvim",
+ config = function()
+ require("impatient")
+ end,
+}
diff --git a/ar/.config/LazyVim/lua/plugins/jukit.lua b/ar/.config/LazyVim/lua/plugins/jukit.lua
new file mode 100644
index 0000000..f5ad24f
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/jukit.lua
@@ -0,0 +1,79 @@
+return {
+ -- "luk400/vim-jukit",
+ -- lazy = false,
+ -- keys = {
+ -- { "<leader>os", false },
+ -- { "<leader>ts", false },
+ -- { "<leader>hs", false },
+ -- { "<leader>ohs", false },
+ -- { "<leader>hd", false },
+ -- { "<leader>od", false },
+ -- { "<leader>ohd", false },
+ -- { "<leader>so", false },
+ -- { "<leader>j", false },
+ -- { "<leader>k", false },
+ -- { "<leader>ah", false },
+ -- { "<leader>sl", false },
+ -- { "<space>", false },
+ -- { "<cr>", false },
+ -- { "<cr>", false },
+ -- { "<leader>cc", false },
+ -- { "<leader>all", false },
+ -- { "<leader>co", false },
+ -- { "<leader>cO", false },
+ -- { "<leader>ct", false },
+ -- { "<leader>cT", false },
+ -- { "<leader>cd", false },
+ -- { "<leader>cs", false },
+ -- { "<leader>cM", false },
+ -- { "<leader>cm", false },
+ -- { "<leader>ck", false },
+ -- { "<leader>cj", false },
+ -- { "<leader>J", false },
+ -- { "<leader>K", false },
+ -- { "<leader>ddo", false },
+ -- { "<leader>dda", false },
+ -- { "<leader>np", false },
+ -- { "<leader>ht", false },
+ -- { "<leader>rht", false },
+ -- { "<leader>pd", false },
+ -- { "<leader>rpd", false },
+ --
+ -- { "<localleader>os", ":call jukit#splits#output()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>ts", ":call jukit#splits#term()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>hs", ":call jukit#splits#history()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>ohs", ":call jukit#splits#output_and_history()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>hd", ":call jukit#splits#close_history()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>od", ":call jukit#splits#close_output_split()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>ohd", ":call jukit#splits#close_output_and_history(1)<cr>", desc = "", mode = "n" },
+ -- { "<localleader>so", ":call jukit#splits#show_last_cell_output(1)<cr>", desc = "", mode = "n" },
+ -- { "<localleader>j", ":call jukit#splits#out_hist_scroll(1)<cr>", desc = "", mode = "n" },
+ -- { "<localleader>k", ":call jukit#splits#out_hist_scroll(0)<cr>", desc = "", mode = "n" },
+ -- { "<localleader>ah", ":call jukit#splits#toggle_auto_hist()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>sl", ":call jukit#layouts#set_layout()<cr>", desc = "", mode = "n" },
+ -- { "<localleader><space>", ":call jukit#send#section(0)<cr>", desc = "", mode = "n" },
+ -- { "<localleader><cr>", ":call jukit#send#line()<cr>", desc = "", mode = "n" },
+ -- { "<localleader><cr>", ":<C-U>call jukit#send#selection()<cr>", desc = "", mode = "v" },
+ -- { "<localleader>cc", ":call jukit#send#until_current_section()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>all", ":call jukit#send#all()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>co", ":call jukit#cells#create_below(0)<cr>", desc = "", mode = "n" },
+ -- { "<localleader>cO", ":call jukit#cells#create_above(0)<cr>", desc = "", mode = "n" },
+ -- { "<localleader>ct", ":call jukit#cells#create_below(1)<cr>", desc = "", mode = "n" },
+ -- { "<localleader>cT", ":call jukit#cells#create_above(1)<cr>", desc = "", mode = "n" },
+ -- { "<localleader>cd", ":call jukit#cells#delete()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>cs", ":call jukit#cells#split()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>cM", ":call jukit#cells#merge_above()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>cm", ":call jukit#cells#merge_below()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>ck", ":call jukit#cells#move_up()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>cj", ":call jukit#cells#move_down()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>J", ":call jukit#cells#jump_to_next_cell()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>K", ":call jukit#cells#jump_to_previous_cell()<cr>", desc = "", mode = "n" },
+ -- { "<localleader>ddo", ":call jukit#cells#delete_outputs(0)<cr>", desc = "", mode = "n" },
+ -- { "<localleader>dda", ":call jukit#cells#delete_outputs(1)<cr>", desc = "", mode = "n" },
+ -- { "<localleader>np", ":call jukit#convert#notebook_convert('jupyter-notebook')<cr>", desc = "", mode = "n" },
+ -- { "<localleader>ht", ":call jukit#convert#save_nb_to_file(0,1,'html')<cr>", desc = "", mode = "n" },
+ -- { "<localleader>rht", ":call jukit#convert#save_nb_to_file(1,1,'html')<cr>", desc = "", mode = "n" },
+ -- { "<localleader>pd", ":call jukit#convert#save_nb_to_file(0,1,'pdf')<cr>", desc = "", mode = "n" },
+ -- { "<localleader>rpd", ":call jukit#convert#save_nb_to_file(1,1,'pdf')<cr>", desc = "", mode = "n" },
+ -- },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/jupyter.lua b/ar/.config/LazyVim/lua/plugins/jupyter.lua
new file mode 100644
index 0000000..0cb684b
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/jupyter.lua
@@ -0,0 +1,345 @@
+local function get_commenter()
+ local commenter = { python = "# ", lua = "-- ", julia = "# ", fennel = ";; ", scala = "// ", r = "# " }
+ local bufnr = vim.api.nvim_get_current_buf()
+ local ft = vim.api.nvim_buf_get_option(bufnr, "filetype")
+ if ft == nil or ft == "" then
+ return commenter["python"]
+ elseif commenter[ft] == nil then
+ return commenter["python"]
+ end
+
+ return commenter[ft]
+end
+
+local CELL_MARKER = get_commenter() .. "%%"
+vim.api.nvim_set_hl(0, "CellMarkerHl", { default = true, bg = "#c5c5c5", fg = "#111111" })
+
+local function miniai_spec(mode)
+ local start_line = vim.fn.search("^" .. CELL_MARKER, "bcnW")
+
+ if start_line == 0 then
+ start_line = 1
+ else
+ if mode == "i" then
+ start_line = start_line + 1
+ end
+ end
+
+ local end_line = vim.fn.search("^" .. CELL_MARKER, "nW") - 1
+ if end_line == -1 then
+ end_line = vim.fn.line("$")
+ end
+
+ local last_col = math.max(vim.fn.getline(end_line):len(), 1)
+
+ local from = { line = start_line, col = 1 }
+ local to = { line = end_line, col = last_col }
+
+ return { from = from, to = to }
+end
+
+local function show_cell_markers()
+ require("mini.hipatterns").enable(0, {
+ highlighters = {
+ marker = { pattern = "^" .. get_commenter() .. "%%%%", group = "CellMarkerHl" },
+ },
+ })
+end
+
+local function select_cell()
+ local bufnr = vim.api.nvim_get_current_buf()
+ local current_row = vim.api.nvim_win_get_cursor(0)[1]
+ local current_col = vim.api.nvim_win_get_cursor(0)[2]
+
+ local start_line = nil
+ local end_line = nil
+
+ for line = current_row, 1, -1 do
+ local line_content = vim.api.nvim_buf_get_lines(bufnr, line - 1, line, false)[1]
+ if line_content:find("^" .. CELL_MARKER) then
+ start_line = line
+ break
+ end
+ end
+ local line_count = vim.api.nvim_buf_line_count(bufnr)
+ for line = current_row + 1, line_count do
+ local line_content = vim.api.nvim_buf_get_lines(bufnr, line - 1, line, false)[1]
+ if line_content:find("^" .. CELL_MARKER) then
+ end_line = line
+ break
+ end
+ end
+
+ if not start_line then
+ start_line = 1
+ end
+ if not end_line then
+ end_line = line_count
+ end
+ return current_row, current_col, start_line, end_line
+end
+
+local function execute_cell()
+ local current_row, current_col, start_line, end_line = select_cell()
+ if start_line and end_line then
+ vim.fn.setpos("'<", { 0, start_line + 1, 0, 0 })
+ vim.fn.setpos("'>", { 0, end_line - 1, 0, 0 })
+ require("iron.core").visual_send()
+ vim.api.nvim_win_set_cursor(0, { current_row, current_col })
+ end
+end
+
+local function delete_cell()
+ local _, _, start_line, end_line = select_cell()
+ if start_line and end_line then
+ local rows_to_select = end_line - start_line - 1
+ vim.api.nvim_win_set_cursor(0, { start_line, 0 })
+ vim.cmd("normal!V " .. rows_to_select .. "j")
+ vim.cmd("normal!d")
+ vim.cmd("normal!k")
+ end
+end
+
+local function navigate_cell(up)
+ local is_up = up or false
+ local _, _, start_line, end_line = select_cell()
+ if is_up and start_line ~= 1 then
+ vim.api.nvim_win_set_cursor(0, { start_line - 1, 0 })
+ elseif end_line then
+ local bufnr = vim.api.nvim_get_current_buf()
+ local line_count = vim.api.nvim_buf_line_count(bufnr)
+ if end_line ~= line_count then
+ vim.api.nvim_win_set_cursor(0, { end_line + 1, 0 })
+ _, _, start_line, end_line = select_cell()
+ vim.api.nvim_win_set_cursor(0, { end_line - 1, 0 })
+ end
+ end
+end
+
+local function move_cell(dir)
+ local search_res
+ local result
+ if dir == "d" then
+ search_res = vim.fn.search("^" .. CELL_MARKER, "W")
+ if search_res == 0 then
+ result = "last"
+ end
+ else
+ search_res = vim.fn.search("^" .. CELL_MARKER, "bW")
+ if search_res == 0 then
+ result = "first"
+ vim.api.nvim_win_set_cursor(0, { 1, 0 })
+ end
+ end
+
+ return result
+end
+
+local function insert_cell_before(content)
+ content = content or CELL_MARKER
+ local cell_object = miniai_spec("a")
+ vim.api.nvim_buf_set_lines(0, cell_object.from.line - 1, cell_object.from.line - 1, false, { content, "" })
+ move_cell("u")
+end
+
+local function insert_cell_after(content)
+ content = content or CELL_MARKER
+ vim.print(content)
+ local cell_object = miniai_spec("a")
+ vim.api.nvim_buf_set_lines(0, cell_object.to.line, cell_object.to.line, false, { content, "" })
+ move_cell("d")
+end
+
+local function insert_markdown_cell()
+ insert_cell_after(CELL_MARKER .. " [markdown]")
+end
+
+local function repl_menu()
+ local cmd = require("hydra.keymap-util").cmd
+
+ local hint = [[
+ ^
+ _a_: Insert Cell After
+ _b_: Insert Cell Before
+ _e_: Execute Cell
+ _j_: Next Cell
+ _k_: Previous Cell
+ _m_: Insert Markdown Cell
+ _x_: Delete Cell
+ ^
+ _s_: Send Motion
+ _l_: Send Line
+ _t_: Send Until Cursor
+ _f_: Send File
+ ^
+ _R_: Show REPL
+ _C_: Close REPL
+ _S_: Restart REPL
+ _F_: Focus
+ _H_: Hide
+ ^
+ _c_: Clear
+ _L_: Clear Highlight
+ _<CR>_: ENTER
+ _I_: Interrupt
+ ^
+ ^ ^ _q_: Quit
+]]
+
+ return {
+ name = "REPL",
+ hint = hint,
+ config = {
+ color = "pink",
+ invoke_on_body = true,
+ hint = {
+ border = "rounded",
+ position = "bottom-middle",
+ },
+ },
+ mode = "n",
+ body = "<A-n>",
+ -- stylua: ignore
+ heads = {
+ { "a", insert_cell_after, desc = "Insert Cell After", },
+ { "b", insert_cell_before, desc = "Insert Cell Before", },
+ { "e", execute_cell, desc = "Execute Cell", },
+ { "j", navigate_cell , desc = "Next Cell", },
+ { "k", function() navigate_cell(true) end, desc = "Previous Cell", },
+ { "m", insert_markdown_cell, desc = "Insert Markdown Cell", },
+ { "x", delete_cell, desc = "Delete Cell", },
+ { "s", function() require("iron.core").run_motion("send_motion") end, desc = "Send Motion" },
+ { "l", function() require("iron.core").send_line() end, desc = "Send Line" },
+ { "t", function() require("iron.core").send_until_cursor() end, desc = "Send Until Cursor" },
+ { "f", function() require("iron.core").send_file() end, desc = "Send File" },
+ { "L", function() require("iron.marks").clear_hl() end, mode = {"v"}, desc = "Clear Highlight" },
+ { "<CR>", function() require("iron.core").send(nil, string.char(13)) end, desc = "ENTER" },
+ { "I", function() require("iron.core").send(nil, string.char(03)) end, desc = "Interrupt" },
+ { "C", function() require("iron.core").close_repl() end, desc = "Close REPL" },
+ { "c", function() require("iron.core").send(nil, string.char(12)) end, desc = "Clear" },
+ { "R", cmd("IronRepl"), desc = "REPL" },
+ { "S", cmd("IronRestart"), desc = "Restart" },
+ { "F", cmd("IronFocus"), desc = "Focus" },
+ { "H", cmd("IronHide"), desc = "Hide" },
+ { "q", nil, { exit = true, nowait = true, desc = "Exit" } },
+ },
+ }
+end
+
+return {
+ {
+ "goerz/jupytext.vim",
+ build = "pip install jupytext",
+ event = "VeryLazy",
+ dependencies = { "neovim/nvim-lspconfig" },
+ opts = {},
+ config = function()
+ -- The destination format: 'ipynb', 'markdown' or 'script', or a file extension: 'md', 'Rmd', 'jl', 'py', 'R', ..., 'auto' (script
+ -- extension matching the notebook language), or a combination of an extension and a format name, e.g. md:markdown, md:pandoc,
+ -- md:myst or py:percent, py:light, py:nomarker, py:hydrogen, py:sphinx. The default format for scripts is the 'light' format,
+ -- which uses few cell markers (none when possible). Alternatively, a format compatible with many editors is the 'percent' format,
+ -- which uses '# %%' as cell markers. The main formats (markdown, light, percent) preserve notebooks and text documents in a
+ -- roundtrip. Use the --test and and --test-strict commands to test the roundtrip on your files. Read more about the available
+ -- formats at https://jupytext.readthedocs.io/en/latest/formats.html (default: None)
+ vim.g.jupytext_fmt = "py:percent"
+
+ -- Autocmd to set cell markers
+ vim.api.nvim_create_autocmd({ "BufEnter" }, { -- "BufWriteCmd"
+ group = vim.api.nvim_create_augroup("au_show_cell_markers", { clear = true }),
+ pattern = { "*.py", "*.r", "*.ipynb", "*.jl", "*.scala", "*.lua", "*.fnl" },
+ callback = function(event)
+ show_cell_markers()
+ end,
+ })
+ end,
+ },
+ {
+ "Vigemus/iron.nvim",
+ event = "VeryLazy",
+ opts = function()
+ return {
+ config = {
+ -- Whether a repl should be discarded or not
+ scratch_repl = true,
+ -- Your repl definitions come here
+
+ repl_definition = {
+ python = require("iron.fts.python").ipython,
+ scala = require("iron.fts.scala").scala,
+ },
+ -- How the repl window will be displayed
+ -- See below for more information
+ repl_open_cmd = require("iron.view").right("50%"),
+ },
+ -- If the highliht is on, you can change how it looks
+ -- For the available options, check nvim_set_hl
+ highlight = {
+ italic = true,
+ },
+ ignore_blank_lines = true, -- ignore blank lines when sending visual select lines
+ }
+ end,
+ -- stylua: ignore
+ keys = {
+ { "<leader>i", function() end, mode = {"n", "x"}, desc = "+REPL" },
+ { "<leader>im", function() end, mode = {"n", "x"}, desc = "+Mark" },
+ { "<leader>ire>", execute_cell, desc = "Execute Cell" },
+ { "<leader>irx", delete_cell, desc = "Delete Cell" },
+ { "<leader>ir]", navigate_cell, desc = "Next Cell" },
+ { "<leader>ir[", function() navigate_cell(true) end, desc = "Previous Cell" },
+ { "<leader>is", function() require("iron.core").run_motion("send_motion") end, desc = "Send Motion" },
+ { "<leader>is", function() require("iron.core").visual_send() end, mode = {"v"}, desc = "Send" },
+ { "<leader>il", function() require("iron.core").send_line() end, desc = "Send Line" },
+ { "<leader>it", function() require("iron.core").send_until_cursor() end, desc = "Send Until Cursor" },
+ { "<leader>if", function() require("iron.core").send_file() end, desc = "Send File" },
+ { "<leader>iL", function() require("iron.marks").clear_hl() end, mode = {"v"}, desc = "Clear Highlight" },
+ { "<leader>i<cr>", function() require("iron.core").send(nil, string.char(13)) end, desc = "ENTER" },
+ { "<leader>iI", function() require("iron.core").send(nil, string.char(03)) end, desc = "Interrupt" },
+ { "<leader>iC", function() require("iron.core").close_repl() end, desc = "Close REPL" },
+ { "<leader>ic", function() require("iron.core").send(nil, string.char(12)) end, desc = "Clear" },
+ { "<leader>ims", function() require("iron.core").send_mark() end, desc = "Send Mark" },
+ { "<leader>imm", function() require("iron.core").run_motion("mark_motion") end, desc = "Mark Motion" },
+ { "<leader>imv", function() require("iron.core").mark_visual() end, mode = {"v"}, desc = "Mark Visual" },
+ { "<leader>imr", function() require("iron.marks").drop_last() end, desc = "Remove Mark" },
+ { "<leader>iR", "<cmd>IronRepl<cr>", desc = "REPL" },
+ { "<leader>iS", "<cmd>IronRestart<cr>", desc = "Restart" },
+ { "<leader>iF", "<cmd>IronFocus<cr>", desc = "Focus" },
+ { "<leader>iH", "<cmd>IronHide<cr>", desc = "Hide" },
+ },
+ config = function(_, opts)
+ local iron = require("iron.core")
+ iron.setup(opts)
+ end,
+ },
+ {
+ "folke/which-key.nvim",
+ event = "VeryLazy",
+ opts = {
+ defaults = {
+ ["<leader>i"] = { name = "+REPL" },
+ ["<leader>im"] = { name = "+Mark" },
+ },
+ },
+ },
+ {
+ "anuvyklack/hydra.nvim",
+ event = { "VeryLazy" },
+ opts = {
+ specs = {
+ repl = repl_menu,
+ },
+ },
+ config = function(_, opts)
+ local hydra = require("hydra")
+ for s, _ in pairs(opts.specs) do
+ hydra(opts.specs[s]())
+ end
+ end,
+ },
+ {
+ "echasnovski/mini.ai",
+ opts = function(_, opts)
+ opts.custom_textobjects = vim.tbl_extend("force", opts.custom_textobjects, { h = miniai_spec })
+ end,
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/lspconfig.lua b/ar/.config/LazyVim/lua/plugins/lspconfig.lua
new file mode 100644
index 0000000..4d8db1c
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/lspconfig.lua
@@ -0,0 +1,77 @@
+return {
+ "neovim/nvim-lspconfig",
+ init = function()
+ local keys = require("lazyvim.plugins.lsp.keymaps").get()
+ -- change a keymap
+ -- keys[#keys + 1] = { "K", "<cmd>echo 'hello'<cr>" }
+ -- keys[#keys + 1] = { "<c-k>", mode = { "i" }, false }
+
+ -- disable a keymap
+ -- keys[#keys + 1] = { "K", false }
+ keys[#keys + 1] = { mode = { "i" }, "<c-k>", false }
+
+ -- add a keymap
+ -- keys[#keys + 1] = { "H", "<cmd>echo 'hello'<cr>" }
+ end,
+ opts = {
+ servers = {
+ -- Ensure mason installs the server
+ clangd = {
+ keys = {
+ { "<leader>cR", "<cmd>ClangdSwitchSourceHeader<cr>", desc = "Switch Source/Header (C/C++)" },
+ },
+ root_dir = function(fname)
+ return require("lspconfig.util").root_pattern(
+ "Makefile",
+ "configure.ac",
+ "configure.in",
+ "config.h.in",
+ "meson.build",
+ "meson_options.txt",
+ "build.ninja"
+ )(fname) or require("lspconfig.util").root_pattern("compile_commands.json", "compile_flags.txt")(
+ fname
+ ) or require("lspconfig.util").find_git_ancestor(fname)
+ end,
+ capabilities = {
+ offsetEncoding = { "utf-16" },
+ },
+ cmd = {
+ "clangd",
+ "--background-index",
+ "--clang-tidy",
+ "--header-insertion=iwyu",
+ "--completion-style=detailed",
+ "--function-arg-placeholders",
+ "--fallback-style=llvm",
+ },
+ init_options = {
+ usePlaceholders = true,
+ completeUnimported = true,
+ clangdFileStatus = true,
+ },
+ },
+ },
+ setup = {
+ clangd = function(_, opts)
+ local clangd_ext_opts = require("lazyvim.util").opts("clangd_extensions.nvim")
+ require("clangd_extensions").setup(vim.tbl_deep_extend("force", clangd_ext_opts or {}, { server = opts }))
+ return false
+ end,
+ },
+ },
+ keys = {
+ {
+ -- mode = "n",
+ "<leader>rr",
+ ":w | :TermExec cmd='compiler \"%\"' size=50 direction=tab go_back=0<cr>",
+ desc = "Run Code",
+ },
+ {
+ -- mode = "n",
+ "<leader>rd",
+ ":w | :TermExec cmd='compiler \"%\" -d' size=50 direction=tab go_back=0<cr>",
+ desc = "Debug Code",
+ },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/lualine.lua b/ar/.config/LazyVim/lua/plugins/lualine.lua
new file mode 100644
index 0000000..7c64086
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/lualine.lua
@@ -0,0 +1,105 @@
+return {
+ "nvim-lualine/lualine.nvim",
+ event = "VeryLazy",
+ init = function()
+ vim.g.lualine_laststatus = vim.o.laststatus
+ if vim.fn.argc(-1) > 0 then
+ -- set an empty statusline till lualine loads
+ vim.o.statusline = " "
+ else
+ -- hide the statusline on the starter page
+ vim.o.laststatus = 0
+ end
+ end,
+ opts = function()
+ -- PERF: we don't need this lualine require madness 🤷
+ local lualine_require = require("lualine_require")
+ lualine_require.require = require
+
+ local icons = require("lazyvim.config").icons
+
+ vim.o.laststatus = vim.g.lualine_laststatus
+
+ return {
+ options = {
+ theme = "auto",
+ component_separators = { left = " ", right = " " },
+ section_separators = { left = " ", right = " " },
+ globalstatus = true,
+ disabled_filetypes = { statusline = { "dashboard", "alpha", "starter" } },
+ },
+ sections = {
+ lualine_a = { "mode" },
+ lualine_b = { "branch" },
+
+ lualine_c = {
+ LazyVim.lualine.root_dir(),
+ {
+ "diagnostics",
+ symbols = {
+ error = icons.diagnostics.Error,
+ warn = icons.diagnostics.Warn,
+ info = icons.diagnostics.Info,
+ hint = icons.diagnostics.Hint,
+ },
+ },
+ { "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
+ { LazyVim.lualine.pretty_path() },
+ },
+ lualine_x = {
+ -- stylua: ignore
+ {
+ function() return require("noice").api.status.command.get() end,
+ cond = function() return package.loaded["noice"] and require("noice").api.status.command.has() end,
+ color = LazyVim.ui.fg("Statement"),
+ },
+ -- stylua: ignore
+ {
+ function() return require("noice").api.status.mode.get() end,
+ cond = function() return package.loaded["noice"] and require("noice").api.status.mode.has() end,
+ color = LazyVim.ui.fg("Constant"),
+ },
+ -- stylua: ignore
+ {
+ function() return " " .. require("dap").status() end,
+ cond = function () return package.loaded["dap"] and require("dap").status() ~= "" end,
+ color = LazyVim.ui.fg("Debug"),
+ },
+ {
+ require("lazy.status").updates,
+ cond = require("lazy.status").has_updates,
+ color = LazyVim.ui.fg("Special"),
+ },
+ {
+ "diff",
+ symbols = {
+ added = icons.git.added,
+ modified = icons.git.modified,
+ removed = icons.git.removed,
+ },
+ source = function()
+ local gitsigns = vim.b.gitsigns_status_dict
+ if gitsigns then
+ return {
+ added = gitsigns.added,
+ modified = gitsigns.changed,
+ removed = gitsigns.removed,
+ }
+ end
+ end,
+ },
+ },
+ lualine_y = {
+ { "progress", separator = " ", padding = { left = 1, right = 0 } },
+ { "location", padding = { left = 0, right = 1 } },
+ },
+ lualine_z = {
+ function()
+ return " " .. os.date("%R")
+ end,
+ },
+ },
+ extensions = { "neo-tree", "lazy" },
+ }
+ end,
+}
diff --git a/ar/.config/LazyVim/lua/plugins/magma.lua b/ar/.config/LazyVim/lua/plugins/magma.lua
new file mode 100644
index 0000000..f648762
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/magma.lua
@@ -0,0 +1,23 @@
+return {
+ "dccsillag/magma-nvim",
+ build = ":UpdateRemotePlugins",
+ keys = {
+ {
+ "<LocalLeader>r",
+ ":MagmaEvaluateOperator<CR>",
+ expr = true,
+ silent = true,
+ desc = "Evaluate Operator",
+ mode = "n",
+ },
+ { "<LocalLeader>rr", ":MagmaEvaluateLine<CR>", silent = true, desc = "Evaluate Line", mode = "n" },
+ { "<LocalLeader>rv", ":<C-u>MagmaEvaluateVisual<CR>", silent = true, desc = "Evaluate Visual", mode = "x" },
+ { "<LocalLeader>rc", ":MagmaReevaluateCell<CR>", silent = true, desc = "Reevaluate Cell", mode = "n" },
+ { "<LocalLeader>rd", ":MagmaDelete<CR>", silent = true, desc = "Delete", mode = "n" },
+ { "<LocalLeader>ro", ":MagmaShowOutput<CR>", silent = true, desc = "Show Output", mode = "n" },
+ { "<LocalLeader>ri", ":MagmaInit python3<CR>", silent = true, desc = "Init", mode = "n" },
+ -- let g:magma_automatically_open_output = v:false
+ -- let g:magma_image_provider = "ueberzug"
+ -- let g:magma_image_provider = "kitty"
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/markdown-preview.lua b/ar/.config/LazyVim/lua/plugins/markdown-preview.lua
new file mode 100644
index 0000000..328f2e9
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/markdown-preview.lua
@@ -0,0 +1,23 @@
+return {
+ "iamcco/markdown-preview.nvim",
+ cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
+ -- build = function()
+ -- vim.fn["mkdp#util#install"]()
+ -- end,
+ keys = {
+ {
+ "<leader>cp",
+ false,
+ },
+ {
+ mode = "n",
+ "<leader>mp",
+ ft = "markdown",
+ "<cmd>MarkdownPreviewToggle<cr>",
+ desc = "Markdown Preview",
+ },
+ },
+ -- config = function()
+ -- vim.cmd([[do FileType]])
+ -- end,
+}
diff --git a/ar/.config/LazyVim/lua/plugins/mason.lua b/ar/.config/LazyVim/lua/plugins/mason.lua
new file mode 100644
index 0000000..96e320d
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/mason.lua
@@ -0,0 +1,92 @@
+local options = {
+ ensure_installed = {
+ "black",
+ "clangd",
+ "codelldb",
+ "debugpy",
+ "docker-compose-language-service",
+ "dockerfile-language-server",
+ "eslint-lsp",
+ "hadolint",
+ "java-debug-adapter",
+ "java-test",
+ "jdtls",
+ "json-lsp",
+ "lua-language-server",
+ "markdownlint",
+ "marksman",
+ "prettier",
+ "pyright",
+ "ruff",
+ "shfmt",
+ "stylua",
+ "yaml-language-server",
+ },
+
+ max_concurrent_installers = 10,
+}
+
+return {
+ "williamboman/mason.nvim",
+ cmd = { "Mason", "MasonInstall", "MasonInstallAll", "MasonUpdate" },
+ opts = function()
+ return options
+ end,
+ build = ":MasonUpdate",
+ ---@param opts MasonSettings | {ensure_installed: string[]}
+ config = function(_, opts)
+ require("mason").setup(opts)
+ local mr = require("mason-registry")
+ mr:on("package:install:success", function()
+ vim.defer_fn(function()
+ -- trigger FileType event to possibly load this newly installed LSP server
+ require("lazy.core.handler.event").trigger({
+ event = "FileType",
+ buf = vim.api.nvim_get_current_buf(),
+ })
+ end, 100)
+ end)
+ local function ensure_installed()
+ for _, tool in ipairs(opts.ensure_installed) do
+ local p = mr.get_package(tool)
+ if not p:is_installed() then
+ p:install()
+ end
+ end
+ end
+ if mr.refresh then
+ mr.refresh(ensure_installed)
+ else
+ ensure_installed()
+ end
+ require("mason").setup(opts)
+ vim.api.nvim_create_user_command("MasonInstallAll", function()
+ if opts.ensure_installed and #opts.ensure_installed > 0 then
+ vim.cmd("MasonInstall " .. table.concat(opts.ensure_installed, " "))
+ end
+ end, {})
+
+ vim.g.mason_binaries_list = opts.ensure_installed
+ end,
+ keys = {
+ { "<leader>cm", false },
+ {
+ mode = "n",
+ "<leader>ms",
+ "<cmd>Mason<cr>",
+ desc = "Mason",
+ },
+ {
+ mode = "n",
+ "<leader>mu",
+ "<cmd>MasonUpdate<cr>",
+ desc = "Mason Update",
+ },
+ {
+ mode = "n",
+ "<leader>mi",
+ "<cmd>MasonInstallAll<cr>",
+ desc = "Mason Install All",
+ },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/neogen.lua b/ar/.config/LazyVim/lua/plugins/neogen.lua
new file mode 100644
index 0000000..0fbe48a
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/neogen.lua
@@ -0,0 +1,33 @@
+local opts = { noremap = true, silent = true }
+return {
+ "danymat/neogen",
+ dependencies = "nvim-treesitter/nvim-treesitter",
+ config = true,
+ version = "*",
+ keys = {
+ vim.api.nvim_set_keymap(
+ "n",
+ "<Leader>nf",
+ ":lua require('neogen').generate({type = 'file'})<CR>",
+ { desc = "generate file", noremap = true, silent = true }
+ ),
+ vim.api.nvim_set_keymap(
+ "n",
+ "<Leader>nn",
+ ":lua require('neogen').generate({type = 'func'})<CR>",
+ { desc = "generate function", noremap = true, silent = true }
+ ),
+ vim.api.nvim_set_keymap(
+ "n",
+ "<Leader>nc",
+ ":lua require('neogen').generate({ type = 'class' })<CR>",
+ { desc = "generate class", noremap = true, silent = true }
+ ),
+ vim.api.nvim_set_keymap(
+ "n",
+ "<Leader>nt",
+ ":lua require('neogen').generate({ type = 'type' })<CR>",
+ { desc = "generate type", noremap = true, silent = true }
+ ),
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/notify.lua b/ar/.config/LazyVim/lua/plugins/notify.lua
new file mode 100644
index 0000000..828aaf1
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/notify.lua
@@ -0,0 +1,6 @@
+return {
+ "rcarriga/nvim-notify",
+ opts = {
+ background_colour = "#000000",
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/nvim-neo-tree.lua b/ar/.config/LazyVim/lua/plugins/nvim-neo-tree.lua
new file mode 100644
index 0000000..ebb7387
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/nvim-neo-tree.lua
@@ -0,0 +1,16 @@
+local Util = require("lazyvim.util")
+return {
+ "nvim-neo-tree/neo-tree.nvim",
+ branch = "v3.x",
+ cmd = "Neotree",
+ opts = {},
+ keys = {
+ {
+ "<C-n>",
+ function()
+ require("neo-tree.command").execute({ toggle = false })
+ end,
+ desc = "Focus Explorer NeoTree (root dir)",
+ },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/obsidian.lua b/ar/.config/LazyVim/lua/plugins/obsidian.lua
new file mode 100644
index 0000000..ed09f64
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/obsidian.lua
@@ -0,0 +1,319 @@
+return {
+ "epwalsh/obsidian.nvim",
+ version = "*", -- recommended, use latest release instead of latest commit
+ lazy = true,
+ ft = "markdown",
+ dependencies = {
+ "nvim-lua/plenary.nvim",
+ "hrsh7th/nvim-cmp",
+ "nvim-telescope/telescope.nvim",
+ "epwalsh/pomo.nvim",
+ },
+ config = function()
+ require("obsidian").setup({
+ workspaces = {
+ {
+ name = "SI",
+ path = "~/Obsidian/SI",
+ },
+ },
+ notes_subdir = "/Resource/Unsorted notes",
+ log_level = vim.log.levels.INFO,
+ daily_notes = {
+ folder = "Area/Journal/Daily",
+ date_format = "%Y-%m-%d",
+ alias_format = "%B %e, %Y",
+ template = "nvim-todo-daily-template.md",
+ },
+ templates = {
+ subdir = "Resource/Templates/Notes",
+ date_format = "%Y-%m-%d",
+ time_format = "%H:%M",
+ substitutions = {
+ date_alias = function()
+ return os.date("%B %-e, %Y")
+ end,
+ folder_name = function()
+ local currentFilePath = vim.fn.expand("%:p:h")
+ local _, _, currentFolderName = currentFilePath:find("([^/]+)$")
+ currentFolderName = currentFolderName:gsub(" ", "-")
+ return currentFolderName
+ end,
+ },
+ },
+ completion = {
+ nvim_cmp = true,
+ min_chars = 2,
+ },
+ note_id_func = function(title)
+ local suffix = ""
+ if title ~= nil then
+ suffix = title:gsub(" ", "-"):gsub("[^A-Za-z0-9-]", ""):lower()
+ else
+ for _ = 1, 4 do
+ -- suffix = suffix .. string.char(math.random(65, 90))
+ suffix = tostring(os.date("%Y-%m-%d"))
+ end
+ end
+ -- return tostring(os.date("%Y-%M-%d")) .. "-" .. suffix
+ -- return tostring(os.date("%Y-%m-%d"))
+ return suffix
+ end,
+ disable_frontmatter = true,
+ note_frontmatter_func = function(note)
+ local currentDate = os.date("%B %d, %Y")
+ -- local _, _, filename, parentPath = note.id:find("([^/]+)[^/]*$")
+ local _, _, parentPath = note.id:find(".*/(.*)/[^/]*$")
+
+ parentPath = parentPath or "unsorted_notes"
+ note:add_alias(currentDate)
+ -- note:add_tag(filename)
+ note:add_tag(parentPath)
+
+ local out = { id = os.date("%Y-%m-%d"), aliases = note.aliases, tags = note.tags }
+ if note.metadata ~= nil and not vim.tbl_isempty(note.metadata) then
+ for k, v in pairs(note.metadata) do
+ out[k] = v
+ end
+ end
+
+ return out
+ end,
+ follow_url_func = function(url)
+ vim.fn.jobstart({ "open", url }) -- Mac OS
+ -- vim.fn.jobstart({"xdg-open", url}) -- linux
+ end,
+ use_advanced_uri = false,
+ open_app_foreground = true,
+ finder = "telescope.nvim",
+ finder_mappings = {},
+ sort_by = "modified",
+ sort_reversed = true,
+ open_notes_in = "current",
+ ui = {
+ tick = 0,
+ enable = true, -- set to false to disable all additional syntax features
+ update_debounce = 200, -- update delay after a text change (in milliseconds)
+ checkboxes = {
+ [" "] = { char = "󰄱", hl_group = "ObsidianTodo" },
+ ["x"] = { char = "", hl_group = "ObsidianDone" },
+ [">"] = { char = "", hl_group = "ObsidianRightArrow" },
+ ["~"] = { char = "󰰱", hl_group = "ObsidianTilde" },
+ },
+ external_link_icon = { char = "", hl_group = "ObsidianExtLinkIcon" },
+ reference_text = { hl_group = "ObsidianRefText" },
+ highlight_text = { hl_group = "ObsidianHighlightText" },
+ tags = { hl_group = "ObsidianTag" },
+ hl_groups = {
+ ObsidianTodo = { bold = true, fg = "#f78c6c" },
+ ObsidianDone = { bold = true, fg = "#89ddff" },
+ ObsidianRightArrow = { bold = true, fg = "#f78c6c" },
+ ObsidianTilde = { bold = true, fg = "#ff5370" },
+ ObsidianRefText = { underline = true, fg = "#c792ea" },
+ ObsidianExtLinkIcon = { fg = "#c792ea" },
+ ObsidianTag = { italic = true, fg = "#89ddff" },
+ ObsidianHighlightText = { bg = "#75662e" },
+ },
+ },
+ attachments = {
+ img_folder = "assets/imgs", -- This is the default
+ ---@param client obsidian.Client
+ ---@param path Path the absolute path to the image file
+ ---@return string
+ img_text_func = function(client, path)
+ local link_path
+ local vault_relative_path = client:vault_relative_path(path)
+ if vault_relative_path ~= nil then
+ link_path = vault_relative_path
+ else
+ link_path = tostring(path)
+ end
+ local display_name = vim.fs.basename(link_path)
+ return string.format("![%s](%s)", display_name, link_path)
+ end,
+ },
+ yaml_parser = "native",
+ mappings = {},
+ })
+ end,
+ cmd = {
+ "ObsidianOpen",
+ "ObsidianNew",
+ "ObsidianQuickSwitch",
+ "ObsidianFollowLink",
+ "ObsidianBacklinks",
+ "ObsidianToday",
+ "ObsidianYesterday",
+ "ObsidianTomorrow",
+ "ObsidianTemplate",
+ "ObsidianSearch",
+ "ObsidianWorkspace",
+ "ObsidianPasteImg",
+ "ObsidianRename",
+ "ObsidianLink",
+ "ObsidianLinkNew",
+ },
+ keys = {
+ {
+ mode = { "i", "n" },
+ "gf",
+ function()
+ return require("obsidian").util.gf_passthrough()
+ end,
+ desc = "goto file",
+ noremap = false,
+ expr = true,
+ buffer = true,
+ },
+ {
+ mode = "n",
+ "<leader>cb",
+ function()
+ return require("obsidian").util.toggle_checkbox()
+ end,
+ buffer = true,
+ desc = "Check Box",
+ },
+ {
+ mode = "n",
+ "<leader>ono",
+ function()
+ local query = vim.fn.input("Enter query: ")
+ if query and #query > 0 then
+ vim.cmd("ObsidianOpen " .. query)
+ end
+ end,
+ desc = "Open Note",
+ },
+ {
+ mode = "n",
+ "<leader>onn",
+ function()
+ local title = vim.fn.input("Enter title: ")
+ if title and #title > 0 then
+ vim.cmd("ObsidianNew " .. title)
+ end
+ end,
+ desc = "New Note",
+ },
+ {
+ mode = "n",
+ "<leader>os",
+ "<cmd> ObsidianQuickSwitch <CR>",
+ desc = "Quick Switch",
+ },
+ {
+ mode = "n",
+ "<leader>o]",
+ "<cmd> ObsidianFollowLink <CR>",
+ desc = "Follow Link",
+ },
+ {
+ mode = "n",
+ "<leader>o[",
+ "<cmd> ObsidianBacklinks <CR>",
+ desc = "Back Link",
+ },
+ {
+ mode = "n",
+ "<leader>ont",
+ function()
+ local offset = vim.fn.input("Enter offset: ")
+ if offset and #offset > 0 then
+ vim.cmd("ObsidianToday " .. offset)
+ else
+ vim.cmd("ObsidianToday")
+ end
+ end,
+ desc = "Today Note",
+ },
+ {
+ mode = "n",
+ "<leader>onh",
+ "<cmd> ObsidianYesterday <cr>",
+ desc = "Yesterday Note",
+ },
+ {
+ mode = "n",
+ "<leader>onl",
+ "<cmd> ObsidianTomorrow <cr>",
+ desc = "Tomorrow Note",
+ },
+ {
+ mode = "n",
+ "<leader>oti",
+ "<cmd>ObsidianTemplate<cr>",
+ desc = "Insert Templates",
+ },
+ {
+ mode = "n",
+ "<leader>onf",
+ function()
+ local note = vim.fn.input("Enter note: ")
+ if note and #note > 0 then
+ vim.cmd("ObsidianSearch " .. note)
+ end
+ end,
+ desc = "Search Note",
+ },
+ {
+ mode = "n",
+ "<leader>ow",
+ function()
+ local name = vim.fn.input("Enter name: ")
+ if name and #name > 0 then
+ vim.cmd("ObsidianWorkspace " .. name)
+ end
+ end,
+ desc = "Workspace Name",
+ },
+ {
+ mode = "n",
+ "<leader>opi",
+ function()
+ local image = vim.fn.input("Enter image: ")
+ if image and #image > 0 then
+ vim.cmd("ObsidianPasteImg " .. image)
+ end
+ end,
+ desc = "Paste Image",
+ },
+ {
+ mode = "n",
+ "<leader>onr",
+ function()
+ local name = vim.fn.input("Enter name: ")
+ if name and #name > 0 then
+ vim.cmd("ObsidianRename " .. name)
+ end
+ end,
+ desc = "Rename Note",
+ },
+ {
+ mode = "v",
+ "<leader>ol",
+ function()
+ local query = vim.fn.input("Enter query: ")
+ if query and #query > 0 then
+ vim.cmd("ObsidianLink " .. query)
+ else
+ vim.cmd("ObsidianLink")
+ end
+ end,
+ desc = "Link Query",
+ },
+ {
+ mode = "v",
+ "<leader>onl",
+ function()
+ local note = vim.fn.input("Enter note: ")
+ if note and #note > 0 then
+ vim.cmd("ObsidianLinkNew " .. note)
+ else
+ vim.cmd("ObsidianLinkNew")
+ end
+ end,
+ desc = "New Link Note",
+ },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/oil.lua b/ar/.config/LazyVim/lua/plugins/oil.lua
new file mode 100644
index 0000000..ffbbfe9
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/oil.lua
@@ -0,0 +1,13 @@
+return {
+ "stevearc/oil.nvim",
+ opts = {},
+ -- Optional dependencies
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ cmd = { "Oil" },
+ config = function()
+ require("oil").setup()
+ end,
+ keys = {
+ vim.keymap.set("n", "-", "<cmd>Oil<cr>", { desc = "Open parent directory" }),
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/playground.lua b/ar/.config/LazyVim/lua/plugins/playground.lua
new file mode 100644
index 0000000..e696828
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/playground.lua
@@ -0,0 +1,38 @@
+return {
+ "nvim-treesitter/playground",
+ dependencies = { "nvim-treesitter/nvim-treesitter" },
+ cmd = { "TSPlaygroundToggle" },
+ config = function()
+ require("nvim-treesitter.configs").setup({
+ playground = {
+ enable = true,
+ disable = {},
+ updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
+ persist_queries = false, -- Whether the query persists across vim sessions
+ keybindings = {
+ toggle_query_editor = "o",
+ toggle_hl_groups = "i",
+ toggle_injected_languages = "t",
+ toggle_anonymous_nodes = "a",
+ toggle_language_display = "I",
+ focus_language = "f",
+ unfocus_language = "F",
+ update = "R",
+ goto_node = "<cr>",
+ show_help = "?",
+ },
+ },
+
+ query_linter = {
+ enable = true,
+ use_virtual_text = true,
+ lint_events = { "BufWrite", "CursorHold" },
+ },
+ })
+ end,
+ keys = {
+ { mode = "n", "<leader>pg", "<cmd> TSPlaygroundToggle <cr>", desc = "Toggle Playground" },
+ { mode = "n", "<leader>pc", "<cmd> TSHighlightCapturesUnderCurso <cr>", desc = "Highlight Captures" },
+ { mode = "n", "<leader>pn", "<cmd> TSNodeUnderCursor <cr>", desc = "Node Under Cursor" },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/project.lua b/ar/.config/LazyVim/lua/plugins/project.lua
new file mode 100644
index 0000000..313c8f8
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/project.lua
@@ -0,0 +1,6 @@
+return {
+ "ahmedkhalf/project.nvim",
+ keys = {
+ { "<leader>pr", "<Cmd>ProjectRoot<CR>", desc = "Project Root" },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/refactoring.lua b/ar/.config/LazyVim/lua/plugins/refactoring.lua
new file mode 100644
index 0000000..a7bdf99
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/refactoring.lua
@@ -0,0 +1,35 @@
+return {
+ "ThePrimeagen/refactoring.nvim",
+ dependencies = {
+ "nvim-lua/plenary.nvim",
+ "nvim-treesitter/nvim-treesitter",
+ },
+ config = function()
+ require("refactoring").setup()
+ end,
+ keys = {
+ vim.keymap.set("x", "<leader>re", function()
+ require("refactoring").refactor("Extract Function")
+ end, { desc = "Extract Function" }),
+ vim.keymap.set({ "x", "n" }, "<leader>rf", function()
+ require("refactoring").refactor("Extract Function To File")
+ end, { desc = "Extract Function To File" }),
+ -- Extract function supports only visual mode
+ vim.keymap.set("x", "<leader>rv", function()
+ require("refactoring").refactor("Extract Variable")
+ end, { desc = "Extract Variable" }),
+ -- Extract variable supports only visual mode
+ vim.keymap.set("n", "<leader>rI", function()
+ require("refactoring").refactor("Inline Function")
+ end, { desc = "Inline Function" }),
+ -- Inline func supports only normal
+ vim.keymap.set({ "n", "x" }, "<leader>ri", function()
+ require("refactoring").refactor("Inline Variable")
+ end, { desc = "Inline Variable" }),
+ -- Inline var supports both normal and visual mode
+
+ vim.keymap.set("n", "<leader>rb", function()
+ require("refactoring").refactor("Extract Block")
+ end, { desc = "Extract Block" }),
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/seoul256.lua b/ar/.config/LazyVim/lua/plugins/seoul256.lua
new file mode 100644
index 0000000..ddbc87b
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/seoul256.lua
@@ -0,0 +1,3 @@
+return {
+ "junegunn/seoul256.vim",
+}
diff --git a/ar/.config/LazyVim/lua/plugins/tagbar.lua b/ar/.config/LazyVim/lua/plugins/tagbar.lua
new file mode 100644
index 0000000..3824cfd
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/tagbar.lua
@@ -0,0 +1,12 @@
+return {
+ "preservim/tagbar",
+ cmd = "TagbarToggle",
+ keys = {
+ {
+ mode = "n",
+ "<leader>tb",
+ "TagbarToggle",
+ desc = "Toggle Tagbar",
+ },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/telescope.lua b/ar/.config/LazyVim/lua/plugins/telescope.lua
new file mode 100644
index 0000000..0a96a09
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/telescope.lua
@@ -0,0 +1,24 @@
+return {
+ "nvim-telescope/telescope.nvim",
+ keys = {
+ { "<leader>/", false },
+ { "<C-f>", false },
+ { "<C-b>", false },
+ },
+ opts = function()
+ local actions = require("telescope.actions")
+
+ return {
+ defaults = {
+ mappings = {
+ i = {
+ ["<C-j>"] = actions.preview_scrolling_down,
+ ["<C-k>"] = actions.preview_scrolling_up,
+ ["<C-h>"] = actions.preview_scrolling_left,
+ ["<C-l>"] = actions.preview_scrolling_right,
+ },
+ },
+ },
+ }
+ end,
+}
diff --git a/ar/.config/LazyVim/lua/plugins/tmux-navigator.lua b/ar/.config/LazyVim/lua/plugins/tmux-navigator.lua
new file mode 100644
index 0000000..7b37cf7
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/tmux-navigator.lua
@@ -0,0 +1,19 @@
+return {
+ {
+ "christoomey/vim-tmux-navigator",
+ cmd = {
+ "TmuxNavigateLeft",
+ "TmuxNavigateDown",
+ "TmuxNavigateUp",
+ "TmuxNavigateRight",
+ "TmuxNavigatePrevious",
+ },
+ keys = {
+ { "<c-h>", "<cmd><C-U>TmuxNavigateLeft<cr>", desc = "Tmux Navigate Left" },
+ { "<c-j>", "<cmd><C-U>TmuxNavigateDown<cr>", desc = "Tmux Navigate Down" },
+ { "<c-k>", "<cmd><C-U>TmuxNavigateUp<cr>", desc = "Tmux Navigate Up" },
+ { "<c-l>", "<cmd><C-U>TmuxNavigateRight<cr>", desc = "Tmux Navigate Right" },
+ { "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>", desc = "Tmux Navigate Previous" },
+ },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/tokyonight.lua b/ar/.config/LazyVim/lua/plugins/tokyonight.lua
new file mode 100644
index 0000000..6dcb72f
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/tokyonight.lua
@@ -0,0 +1,10 @@
+return {
+ "folke/tokyonight.nvim",
+ opts = {
+ transparent = true,
+ styles = {
+ sidebars = "transparent",
+ floats = "transparent",
+ },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/treesj.lua b/ar/.config/LazyVim/lua/plugins/treesj.lua
new file mode 100644
index 0000000..9cfb3ff
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/treesj.lua
@@ -0,0 +1,32 @@
+return {
+ "Wansmer/treesj",
+ dependencies = { "nvim-treesitter/nvim-treesitter" },
+ config = function()
+ require("treesj").setup({
+ ---@type boolean Use default keymaps (<space>m - toggle, <space>j - join, <space>s - split)
+ use_default_keymaps = false,
+ ---@type boolean Node with syntax error will not be formatted
+ check_syntax_error = true,
+ ---If line after join will be longer than max value,
+ ---@type number If line after join will be longer than max value, node will not be formatted
+ max_join_length = 300,
+ ---Cursor behavior:
+ ---hold - cursor follows the node/place on which it was called
+ ---start - cursor jumps to the first symbol of the node being formatted
+ ---end - cursor jumps to the last symbol of the node being formatted
+ ---@type 'hold'|'start'|'end'
+ cursor_behavior = "hold",
+ ---@type boolean Notify about possible problems or not
+ notify = true,
+ ---@type boolean Use `dot` for repeat action
+ dot_repeat = true,
+ ---@type nil|function Callback for treesj error handler. func (err_text, level, ...other_text)
+ on_error = nil,
+ ---@type table Presets for languages
+ -- langs = {}, -- See the default presets in lua/treesj/langs
+ })
+ end,
+ keys = {
+ { "<leader>j", "<cmd>TSJToggle<cr>", desc = "Toggle Treesj" },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/vimwiki.lua b/ar/.config/LazyVim/lua/plugins/vimwiki.lua
new file mode 100644
index 0000000..697ef70
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/vimwiki.lua
@@ -0,0 +1,37 @@
+return {
+ "vimwiki/vimwiki",
+ cmd = { "VimwikiIndex", "Vimwiki2HTML", "VimwikiAll2HTML" },
+ keys = {
+ vim.api.nvim_set_keymap("n", "<leader>|", ":VimwikiSplitLink<CR>", { silent = true, desc = "Horizontal Split" }),
+ vim.api.nvim_set_keymap("n", "<leader>-", ":VimwikiVSplitLink<CR>", { silent = true, desc = "Vertical Split" }),
+ vim.api.nvim_set_keymap("n", "<leader>va", ":VimwikiAll2HTML<CR>", { silent = true, desc = "All Vimwiki to HTML" }),
+ vim.api.nvim_set_keymap(
+ "n",
+ "<leader>vc",
+ ":VimwikiColorize<CR>",
+ { silent = true, desc = "Colorize line or selection" }
+ ),
+ vim.api.nvim_set_keymap("n", "<leader>vd", ":VimwikiDeleteFile<CR>", { silent = true, desc = "Delete Wiki Page" }),
+ vim.api.nvim_set_keymap("n", "<leader>vh", ":Vimwiki2HTML<CR>", { silent = true, desc = "Vimwiki to HTML" }),
+ vim.api.nvim_set_keymap(
+ "n",
+ "<leader>vH",
+ ":Vimwiki2HTMLBrowse<CR>",
+ { silent = true, desc = "Convert current wiki to HTML" }
+ ),
+ vim.api.nvim_set_keymap("n", "<leader>vw", ":VimwikiIndex<CR>", { silent = true, desc = "Vimwiki Index" }),
+ vim.api.nvim_set_keymap(
+ "n",
+ "<leader>vn",
+ ":VimwikiGoto<CR>",
+ { silent = true, desc = "Goto or Create New Wiki Page" }
+ ),
+ vim.api.nvim_set_keymap("n", "<leader>vr", ":VimwikiRenameFile<CR>", { silent = true, desc = "Rename Wiki Page" }),
+ vim.api.nvim_set_keymap(
+ "n",
+ "<leader>vu",
+ ":VimwikiDiaryGenerateLinks<CR>",
+ { silent = true, desc = "Update Diary" }
+ ),
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/which-key.lua b/ar/.config/LazyVim/lua/plugins/which-key.lua
new file mode 100644
index 0000000..94a6b3f
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/which-key.lua
@@ -0,0 +1,55 @@
+return {
+ "folke/which-key.nvim",
+ opts = {
+ plugins = { spelling = true },
+ defaults = {
+ mode = { "n", "v" },
+ ["g"] = { name = "+goto" },
+ ["gz"] = { name = "+surround" },
+ ["z"] = { name = "+fold" },
+ ["]"] = { name = "+next" },
+ ["["] = { name = "+prev" },
+ ["="] = { name = "+line paste" },
+ ["\\"] = { name = "+local leader" },
+ ["<leader>"] = { name = "+leader" },
+ ["<leader><"] = { name = "+B/A paste & L/R indent" },
+ ["<leader>="] = { name = "+paste & B/A filtter" },
+ ["<leader>>"] = { name = "+B/A paste & L/R indent" },
+ ["<leader>["] = { name = "+indent B/A cursor" },
+ ["<leader>]"] = { name = "+indent B/A cursor" },
+ ["<leader><tab>"] = { name = "+tabs" },
+ ["<leader>b"] = { name = "+buffer" },
+ ["<leader>c"] = { name = "+code" },
+ ["<leader>cp"] = { name = "+copy" },
+ ["<leader>dd"] = { name = "+db" },
+ ["<leader>dP"] = { name = "+class/method" },
+ ["<leader>f"] = { name = "+file/find" },
+ ["<leader>h"] = { name = "+harpoon" },
+ ["<leader>g"] = { name = "+git" },
+ ["<leader>gh"] = { name = "+hunks" },
+ ["<leader>gz"] = { name = "+surround" },
+ ["<leader>m"] = { name = "+mason" },
+ ["<leader>n"] = { name = "+annotation" },
+ ["<leader>o"] = { name = "+obsidian" },
+ ["<leader>on"] = { name = "+note" },
+ ["<leader>op"] = { name = "+paste" },
+ ["<leader>ot"] = { name = "+template" },
+ ["<leader>p"] = { name = "+playground" },
+ ["<leader>q"] = { name = "+quit/session" },
+ ["<leader>r"] = { name = "+refactoring" },
+ ["<leader>s"] = { name = "+search" },
+ ["<leader>u"] = { name = "+ui" },
+ ["<leader>w"] = { name = "+windows/which-key" },
+ ["<leader>x"] = { name = "+trouble/quickfix" },
+ },
+ },
+ keys = {
+ vim.keymap.set("n", "<leader>wK", function()
+ vim.cmd("WhichKey")
+ end, { desc = "Which-key All Key" }),
+ vim.keymap.set("n", "<leader>wk", function()
+ local input = vim.fn.input("WhichKey: ")
+ vim.cmd("WhichKey " .. input)
+ end, { desc = "Which-key Query Lookup" }),
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/yanky.lua b/ar/.config/LazyVim/lua/plugins/yanky.lua
new file mode 100644
index 0000000..fb8ac2d
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/yanky.lua
@@ -0,0 +1,31 @@
+return {
+ {
+ "gbprod/yanky.nvim",
+ dependencies = not jit.os:find("Windows") and { "kkharji/sqlite.lua" } or {},
+ opts = {
+ highlight = { timer = 250 },
+ ring = { storage = jit.os:find("Windows") and "shada" or "sqlite" },
+ },
+ keys = {
+ -- stylua: ignore
+ { "<leader>h", function() require("telescope").extensions.yank_history.yank_history({ }) end, desc = "Open Yank History" },
+ { "<leader>y", "<Plug>(YankyYank)", mode = { "n", "x" }, desc = "Yank text" },
+ { "<leader>p", "<Plug>(YankyPutAfter)", mode = { "n", "x" }, desc = "Put yanked text after cursor" },
+ { "<leader>P", "<Plug>(YankyPutBefore)", mode = { "n", "x" }, desc = "Put yanked text before cursor" },
+ { "<leader>gp", "<Plug>(YankyGPutAfter)", mode = { "n", "x" }, desc = "Put yanked text after selection" },
+ { "<leader>gP", "<Plug>(YankyGPutBefore)", mode = { "n", "x" }, desc = "Put yanked text before selection" },
+ { "<leader>[y", "<Plug>(YankyCycleForward)", desc = "Cycle forward through yank history" },
+ { "<leader>]y", "<Plug>(YankyCycleBackward)", desc = "Cycle backward through yank history" },
+ { "<leader>]p", "<Plug>(YankyPutIndentAfterLinewise)", desc = "Put indented after cursor (linewise)" },
+ { "<leader>[p", "<Plug>(YankyPutIndentBeforeLinewise)", desc = "Put indented before cursor (linewise)" },
+ { "<leader>]P", "<Plug>(YankyPutIndentAfterLinewise)", desc = "Put indented after cursor (linewise)" },
+ { "<leader>[P", "<Plug>(YankyPutIndentBeforeLinewise)", desc = "Put indented before cursor (linewise)" },
+ { "<leader>>p", "<Plug>(YankyPutIndentAfterShiftRight)", desc = "Put and indent right" },
+ { "<leader><p", "<Plug>(YankyPutIndentAfterShiftLeft)", desc = "Put and indent left" },
+ { "<leader>>P", "<Plug>(YankyPutIndentBeforeShiftRight)", desc = "Put before and indent right" },
+ { "<leader><P", "<Plug>(YankyPutIndentBeforeShiftLeft)", desc = "Put before and indent left" },
+ { "<leader>=p", "<Plug>(YankyPutAfterFilter)", desc = "Put after applying a filter" },
+ { "<leader>=P", "<Plug>(YankyPutBeforeFilter)", desc = "Put before applying a filter" },
+ },
+ },
+}
diff --git a/ar/.config/LazyVim/lua/plugins/zen-mode.lua b/ar/.config/LazyVim/lua/plugins/zen-mode.lua
new file mode 100644
index 0000000..823aa94
--- /dev/null
+++ b/ar/.config/LazyVim/lua/plugins/zen-mode.lua
@@ -0,0 +1,11 @@
+return {
+ "folke/zen-mode.nvim",
+ opts = {
+ -- your configuration comes here
+ -- or leave it empty to use the default settings
+ -- refer to the configuration section below
+ },
+ keys = {
+ { "<leader><cr>", "<cmd>ZenMode<cr>", desc = "Zen mode" },
+ },
+}