about summary refs log tree commit diff
path: root/.config/nvim/lua
diff options
context:
space:
mode:
authorvenomade <venomade@venomade.com>2026-01-18 16:07:54 +0000
committervenomade <venomade@venomade.com>2026-01-18 16:07:54 +0000
commit8d688d1107c46b6dfdcaf02fa5c9c4c8a4640e65 (patch)
tree76edfeb78094eb8491b1f32a2acd45b6ba95ffa2 /.config/nvim/lua
parentedcf5dd381c26274a939f4e703539b15c0058e99 (diff)
KDE & Emacs
Diffstat (limited to '.config/nvim/lua')
-rw-r--r--.config/nvim/lua/config/colemak.lua32
-rw-r--r--.config/nvim/lua/config/keymaps.lua53
-rw-r--r--.config/nvim/lua/config/options.lua110
-rw-r--r--.config/nvim/lua/manager.lua26
-rw-r--r--.config/nvim/lua/plugins/autopairs.lua8
-rw-r--r--.config/nvim/lua/plugins/cmp.lua64
-rw-r--r--.config/nvim/lua/plugins/compile.lua20
-rw-r--r--.config/nvim/lua/plugins/flutter.lua11
-rw-r--r--.config/nvim/lua/plugins/fterm.lua14
-rw-r--r--.config/nvim/lua/plugins/init.lua14
-rw-r--r--.config/nvim/lua/plugins/lastplace.lua6
-rw-r--r--.config/nvim/lua/plugins/lazygit.lua20
-rw-r--r--.config/nvim/lua/plugins/lualine.lua26
-rw-r--r--.config/nvim/lua/plugins/markdown.lua7
-rw-r--r--.config/nvim/lua/plugins/oil.lua28
-rw-r--r--.config/nvim/lua/plugins/orgmode.lua31
-rw-r--r--.config/nvim/lua/plugins/rainbow-delimiters.lua6
-rw-r--r--.config/nvim/lua/plugins/statuscol.lua6
-rw-r--r--.config/nvim/lua/plugins/telescope.lua42
-rw-r--r--.config/nvim/lua/plugins/theme.lua29
-rw-r--r--.config/nvim/lua/plugins/todo-comments.lua7
-rw-r--r--.config/nvim/lua/plugins/treesitter.lua53
-rw-r--r--.config/nvim/lua/plugins/which-key.lua17
-rw-r--r--.config/nvim/lua/plugins/zen.lua24
24 files changed, 654 insertions, 0 deletions
diff --git a/.config/nvim/lua/config/colemak.lua b/.config/nvim/lua/config/colemak.lua
new file mode 100644
index 0000000..e6ce33b
--- /dev/null
+++ b/.config/nvim/lua/config/colemak.lua
@@ -0,0 +1,32 @@
+local function map(mode, lhs, rhs, opts)
+  local options = { noremap = true, silent = true }
+  if opts then
+    options = vim.tbl_extend("force", options, opts)
+  end
+  vim.keymap.set(mode, lhs, rhs, options)
+end
+
+map("", "n", "j")
+map("", "e", "k")
+map("", "i", "l")
+map("", "j", "n")
+map("", "k", "e")
+map("", "l", "i")
+map("", "K", "E")
+map("", "N", "J")
+map("", "E", "K") -- As in 'Explore' documentation
+map("", "L", "I")
+map("", "I", "L")
+map("", "J", "N")
+
+map("n", "<c-w>h", "<c-w>h")
+map("n", "<c-w>n", "<c-w>j")
+map("n", "<c-w>e", "<c-w>k")
+map("n", "<C-w>i", "<c-w>l")
+
+map ("", "gn", "gj")
+map ("", "ge", "gk")
+
+-- Kakoune Holdover
+map ("", "gh", "0")
+map ("", "gi", "$")
diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
new file mode 100644
index 0000000..9764772
--- /dev/null
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -0,0 +1,53 @@
+vim.g.mapleader = " "
+vim.keymap.set("n", "<leader>bk", vim.cmd.bdelete,
+  { desc = "Kill Buffer" })
+vim.keymap.set("n", "<leader>bn", vim.cmd.bnext,
+  { desc = "Next Buffer" })
+vim.keymap.set("n", "<leader>bp", vim.cmd.bprev,
+  { desc = "Previous Buffer" })
+
+vim.keymap.set("n", "E", vim.lsp.buf.hover)
+vim.keymap.set("n", "<C-e>", vim.diagnostic.open_float)
+vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition,
+  { desc = "Go to Definition" })
+vim.keymap.set("n", "<leader>lt", vim.lsp.buf.type_definition,
+  { desc = "Go to Type Definition"} )
+vim.keymap.set("n", "<leader>li", vim.lsp.buf.implementation,
+  { desc = "Go to Implementation" })
+vim.keymap.set("n", "<leader>la", vim.lsp.buf.code_action,
+  { desc = "Show Code Actions" })
+vim.keymap.set("n", "<leader>lf", vim.lsp.buf.format,
+  { desc = "Format Document" })
+vim.keymap.set("n", "<leader>lr", vim.lsp.buf.rename,
+  { desc = "Rename" })
+vim.keymap.set("n", "<leader>le", function()
+  vim.diagnostic.jump({ count = 1, float = true })
+end,
+  { desc = "Next Error" })
+vim.keymap.set("n", "<leader>lh", vim.lsp.buf.hover,
+  { desc = "Hover Diagnostics" })
+
+vim.keymap.set("n", "<leader>wh", vim.cmd.split,
+  { desc = "Split Window Horizontally" })
+vim.keymap.set("n", "<leader>wv", vim.cmd.vsplit,
+  { desc = "Split Window Vertically" })
+vim.keymap.set("n", "<leader>wc", "<C-w>q",
+  { desc = "Close Window" })
+vim.keymap.set("n", "<leader>ww", "<C-w>w",
+  { desc = "Next Window" })
+
+vim.keymap.set("n", "<leader>foc", function()
+  vim.cmd('edit ~/.config/nvim/init.lua')
+end, { desc = "Open Config File" })
+
+vim.keymap.set("n", "<leader>fot", function()
+  vim.cmd('edit ~/Documents/TODO.org')
+end, { desc = "Open Todo File" })
+
+vim.keymap.set("n", "<leader>fon", function()
+  vim.cmd('edit ~/Documents/Notes.org')
+end, { desc = "Open Notes File" })
+
+vim.keymap.set('n', '<Tab>', '==', { noremap = true, silent = true })
+
+vim.keymap.set('n', 'q:', ':q<CR>', { noremap = true })
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
new file mode 100644
index 0000000..fd1de92
--- /dev/null
+++ b/.config/nvim/lua/config/options.lua
@@ -0,0 +1,110 @@
+vim.opt.nu = true
+vim.opt.rnu = true
+
+vim.opt.tabstop = 2
+vim.opt.softtabstop = 2
+vim.opt.shiftwidth = 2
+vim.opt.expandtab = true
+vim.opt.autoindent = true
+
+vim.opt.smartindent = true
+
+vim.opt.wrap = false
+
+vim.opt.swapfile = false
+vim.opt.backup = false
+vim.opt.undodir = os.getenv("HOME") .. "/.nvim/undodir"
+vim.opt.undofile = true
+
+vim.opt.hlsearch = false
+vim.opt.incsearch = true
+
+vim.opt.termguicolors = true
+
+vim.opt.scrolloff = 12
+
+vim.opt.updatetime = 50
+
+vim.opt.splitbelow = true
+vim.opt.splitright = true
+
+vim.opt.encoding = "utf-8"
+
+vim.opt.shell = "zsh"
+
+vim.opt.mouse = "a"
+
+vim.opt.ignorecase = true
+vim.opt.smartcase = true
+vim.opt.incsearch = true
+
+-- vim.opt.cursorline = true
+
+vim.opt.title = true
+
+vim.opt.clipboard = "unnamedplus"
+
+vim.opt.colorcolumn = "80"
+
+vim.opt.signcolumn = 'no'
+
+vim.cmd "set showtabline=0 | set laststatus=0"
+
+vim.wo.fillchars='eob: '
+
+vim.opt.conceallevel = 3
+
+-- Window Borders
+vim.o.winborder = 'rounded'
+
+-- Remove Whitespaces on File Save
+vim.api.nvim_create_autocmd({ "BufWritePre" }, {
+  pattern = { "*" },
+  command = [[%s/\s\+$//e]],
+})
+
+-- Define highlight groups for line numbers with diagnostics
+vim.api.nvim_set_hl(0, "LineNrDiagnosticError", { bg = "#3f1d1d", fg = "#ff6c6b" })
+vim.api.nvim_set_hl(0, "LineNrDiagnosticWarn",  { bg = "#3f311d", fg = "#ECBE7B" })
+vim.api.nvim_set_hl(0, "LineNrDiagnosticInfo",  { bg = "#1d2d3f", fg = "#51afef" })
+vim.api.nvim_set_hl(0, "LineNrDiagnosticHint",  { bg = "#1d3f2d", fg = "#98be65" })
+
+local function set_line_number_highlight()
+  -- Clear existing highlights
+  vim.fn.sign_unplace("LineNrDiagnostics")
+
+  -- Get diagnostics per buffer
+  for _, diag in ipairs(vim.diagnostic.get(0)) do
+    local hl_group = nil
+    if diag.severity == vim.diagnostic.severity.ERROR then
+      hl_group = "LineNrDiagnosticError"
+    elseif diag.severity == vim.diagnostic.severity.WARN then
+      hl_group = "LineNrDiagnosticWarn"
+    elseif diag.severity == vim.diagnostic.severity.INFO then
+      hl_group = "LineNrDiagnosticInfo"
+    elseif diag.severity == vim.diagnostic.severity.HINT then
+      hl_group = "LineNrDiagnosticHint"
+    end
+
+    if hl_group then
+      vim.fn.sign_place(0, "LineNrDiagnostics", hl_group, vim.api.nvim_get_current_buf(), {
+        lnum = diag.lnum + 1, -- diagnostics are 0-indexed
+        priority = 10,
+      })
+    end
+  end
+end
+
+-- Create the sign definitions
+vim.fn.sign_define("LineNrDiagnosticError", { text = "", texthl = "LineNrDiagnosticError", numhl = "LineNrDiagnosticError" })
+vim.fn.sign_define("LineNrDiagnosticWarn",  { text = "", texthl = "LineNrDiagnosticWarn",  numhl = "LineNrDiagnosticWarn"  })
+vim.fn.sign_define("LineNrDiagnosticInfo",  { text = "", texthl = "LineNrDiagnosticInfo",  numhl = "LineNrDiagnosticInfo"  })
+vim.fn.sign_define("LineNrDiagnosticHint",  { text = "", texthl = "LineNrDiagnosticHint",  numhl = "LineNrDiagnosticHint"  })
+
+-- Update line numbers when diagnostics change
+vim.api.nvim_create_autocmd({ "DiagnosticChanged", "BufEnter", "CursorHold" }, {
+  callback = set_line_number_highlight,
+})
+
+-- TODO: Put somewhere else (for llm.nvim)
+vim.fn.setenv("LLM_KEY", "NONE")
diff --git a/.config/nvim/lua/manager.lua b/.config/nvim/lua/manager.lua
new file mode 100644
index 0000000..da5a221
--- /dev/null
+++ b/.config/nvim/lua/manager.lua
@@ -0,0 +1,26 @@
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not (vim.uv or vim.loop).fs_stat(lazypath) then
+  local lazyrepo = "https://github.com/folke/lazy.nvim.git"
+  local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
+  if vim.v.shell_error ~= 0 then
+    vim.api.nvim_echo({
+      { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
+      { out, "WarningMsg" },
+      { "\nPress any key to exit..." },
+    }, true, {})
+    vim.fn.getchar()
+    os.exit(1)
+  end
+end
+vim.opt.rtp:prepend(lazypath)
+
+vim.g.mapleader = " "
+vim.g.maplocalleader = "\\"
+
+require("lazy").setup({
+  spec = {
+    { import = "plugins" },
+  },
+  install = { colorscheme = { "habamax" } },
+  checker = { enabled = true, notify = false },
+})
diff --git a/.config/nvim/lua/plugins/autopairs.lua b/.config/nvim/lua/plugins/autopairs.lua
new file mode 100644
index 0000000..c37e301
--- /dev/null
+++ b/.config/nvim/lua/plugins/autopairs.lua
@@ -0,0 +1,8 @@
+return {
+  "windwp/nvim-autopairs",
+  config = function()
+    require("nvim-autopairs").setup({
+      disable_filetype = { "TelescopePrompt" , "vim" }
+    })
+  end,
+}
diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua
new file mode 100644
index 0000000..79bf9ac
--- /dev/null
+++ b/.config/nvim/lua/plugins/cmp.lua
@@ -0,0 +1,64 @@
+return {
+  'hrsh7th/nvim-cmp',
+  dependencies = {
+    'neovim/nvim-lspconfig',
+    'hrsh7th/cmp-nvim-lsp',
+    'hrsh7th/cmp-buffer',
+    'hrsh7th/cmp-path',
+    'lukas-reineke/cmp-rg',
+    'onsails/lspkind.nvim'
+  },
+  config = function()
+    local cmp = require('cmp')
+    local lspkind = require('lspkind')
+    cmp.setup({
+      preselect = 'none',
+      window = {
+        completion = cmp.config.window.bordered({}),
+        documentation = cmp.config.window.bordered({}),
+      },
+      snippet = {
+        expand = function(arg)
+          vim.snippet.expand(arg.body)
+        end
+      },
+      mapping = cmp.mapping.preset.insert({
+        -- ['<CR>'] = cmp.mapping.confirm({ select = true }),
+        ['<C-t>'] = cmp.mapping.complete(),
+        ['<CR>'] = cmp.mapping.confirm(),
+        ['<Tab>'] = cmp.mapping.select_next_item(),
+        ['<S-Tab>'] = cmp.mapping.select_prev_item(),
+      }),
+      sources = cmp.config.sources(
+        {
+          { name = 'nvim_lsp' },
+        },
+        {
+          { name = 'path' },
+        },
+        {
+          { name = 'buffer' },
+          { name = 'rg',    keyword_length = 3 }
+        }
+      ),
+      formatting = {
+        format = lspkind.cmp_format({
+          mode = 'symbol'
+        })
+      },
+      -- view = {
+      --   entries = 'native'
+      -- },
+    })
+
+    local capabilities = require('cmp_nvim_lsp').default_capabilities()
+    vim.lsp.config('lua_ls', {
+      capabilities = capabilities
+    })
+    vim.lsp.enable('lua_ls')
+    vim.lsp.config('clangd', {
+      capabilities = capabilities
+    })
+    vim.lsp.enable('clangd')
+  end
+}
diff --git a/.config/nvim/lua/plugins/compile.lua b/.config/nvim/lua/plugins/compile.lua
new file mode 100644
index 0000000..8d824de
--- /dev/null
+++ b/.config/nvim/lua/plugins/compile.lua
@@ -0,0 +1,20 @@
+return {
+  "ej-shafran/compile-mode.nvim",
+  branch = "latest",
+  dependencies = {
+    "nvim-lua/plenary.nvim",
+  },
+  config = function()
+    vim.g.compile_mode = {}
+
+    local compile_mode = require("compile-mode")
+
+    vim.keymap.set("n", "<leader>cc", compile_mode.compile,
+      { desc = "Compile" })
+    vim.keymap.set("n", "<leader>cr", compile_mode.recompile,
+      { desc = "Recompile" })
+    vim.keymap.set("n", "<leader>cq", compile_mode.interrupt,
+      { desc = "Quit Compile (Interrupt)" })
+
+  end
+}
diff --git a/.config/nvim/lua/plugins/flutter.lua b/.config/nvim/lua/plugins/flutter.lua
new file mode 100644
index 0000000..a6d3506
--- /dev/null
+++ b/.config/nvim/lua/plugins/flutter.lua
@@ -0,0 +1,11 @@
+return {
+    'nvim-flutter/flutter-tools.nvim',
+    lazy = false,
+    dependencies = {
+        'nvim-lua/plenary.nvim',
+        -- 'stevearc/dressing.nvim', -- optional for vim.ui.select
+    },
+    config = function ()
+      require('flutter-tools').setup({})
+    end,
+}
diff --git a/.config/nvim/lua/plugins/fterm.lua b/.config/nvim/lua/plugins/fterm.lua
new file mode 100644
index 0000000..dfc9375
--- /dev/null
+++ b/.config/nvim/lua/plugins/fterm.lua
@@ -0,0 +1,14 @@
+return {
+  "numToStr/FTerm.nvim",
+  config = function()
+    require("FTerm").setup({
+      border = "bold",
+      dimensions = {
+        height = 0.9,
+        width = 0.9,
+      },
+    })
+    vim.keymap.set('n', '<A-i>', '<CMD>lua require("FTerm").toggle()<CR>')
+    vim.keymap.set('t', '<A-i>', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>')
+  end,
+}
diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua
new file mode 100644
index 0000000..4c12912
--- /dev/null
+++ b/.config/nvim/lua/plugins/init.lua
@@ -0,0 +1,14 @@
+return {
+  require('plugins.theme'),
+  require('plugins.autopairs'),
+  require('plugins.treesitter'),
+  require('plugins.rainbow-delimiters'),
+  require('plugins.telescope'),
+  require('plugins.lualine'),
+  require('plugins.statuscol'),
+  require('plugins.oil'),
+  require('plugins.cmp'),
+  require('plugins.lastplace'),
+  require('plugins.orgmode'),
+  require('plugins.which-key'),
+}
diff --git a/.config/nvim/lua/plugins/lastplace.lua b/.config/nvim/lua/plugins/lastplace.lua
new file mode 100644
index 0000000..6c9f074
--- /dev/null
+++ b/.config/nvim/lua/plugins/lastplace.lua
@@ -0,0 +1,6 @@
+return {
+  'ethanholz/nvim-lastplace',
+  config = function()
+    require'nvim-lastplace'.setup({})
+  end
+}
diff --git a/.config/nvim/lua/plugins/lazygit.lua b/.config/nvim/lua/plugins/lazygit.lua
new file mode 100644
index 0000000..f9ddc84
--- /dev/null
+++ b/.config/nvim/lua/plugins/lazygit.lua
@@ -0,0 +1,20 @@
+return {
+    "kdheepak/lazygit.nvim",
+    lazy = true,
+    cmd = {
+        "LazyGit",
+        "LazyGitConfig",
+        "LazyGitCurrentFile",
+        "LazyGitFilter",
+        "LazyGitFilterCurrentFile",
+    },
+    -- optional for floating window border decoration
+    dependencies = {
+        "nvim-lua/plenary.nvim",
+    },
+    -- setting the keybinding for LazyGit with 'keys' is recommended in
+    -- order to load the plugin when the command is run for the first time
+    keys = {
+        { "<leader>g", "<cmd>LazyGit<cr>", desc = "LazyGit" }
+    }
+}
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
new file mode 100644
index 0000000..cd3d6f1
--- /dev/null
+++ b/.config/nvim/lua/plugins/lualine.lua
@@ -0,0 +1,26 @@
+return {
+  "nvim-lualine/lualine.nvim",
+  dependencies = { 'nvim-tree/nvim-web-devicons' },
+  config = function()
+    require("lualine").setup({
+      options = {
+        icons_enabled = true,
+        component_separators = { left = '|', right = '|'},
+        section_separators = { left = '', right = ''},
+      },
+      sections = {
+        lualine_a = {"mode", {
+          "filetype",
+          icon_only = true,
+          separator = "",
+          padding = { right = 0, left = 1 },
+        }, "filename" },
+        lualine_b = {},
+        lualine_c = {},
+        lualine_x = {"diagnostics"},
+        lualine_y = {},
+        lualine_z = {}
+      }
+    })
+  end,
+}
diff --git a/.config/nvim/lua/plugins/markdown.lua b/.config/nvim/lua/plugins/markdown.lua
new file mode 100644
index 0000000..b003495
--- /dev/null
+++ b/.config/nvim/lua/plugins/markdown.lua
@@ -0,0 +1,7 @@
+return {
+    'MeanderingProgrammer/render-markdown.nvim',
+    dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' },
+    ---@module 'render-markdown'
+    ---@type render.md.UserConfig
+    opts = {},
+}
diff --git a/.config/nvim/lua/plugins/oil.lua b/.config/nvim/lua/plugins/oil.lua
new file mode 100644
index 0000000..3eb396d
--- /dev/null
+++ b/.config/nvim/lua/plugins/oil.lua
@@ -0,0 +1,28 @@
+return {
+  'stevearc/oil.nvim',
+  dependencies = { "nvim-tree/nvim-web-devicons" },
+  config = function()
+
+    function _G.get_oil_winbar()
+      local bufnr = vim.api.nvim_win_get_buf(vim.g.statusline_winid)
+      local dir = require("oil").get_current_dir(bufnr)
+      if dir then
+        return vim.fn.fnamemodify(dir, ":~")
+      else
+        -- If there is no current directory (e.g. over ssh), just show the buffer name
+        return vim.api.nvim_buf_get_name(0)
+      end
+    end
+
+    require('oil').setup({
+      win_options = {
+        winbar = "%!v:lua.get_oil_winbar()",
+      },
+      view_options = {
+        show_hidden = true
+      }
+    })
+    vim.keymap.set('n', '-', '<CMD>Oil<CR>', {desc = "Open Dir in Oil"})
+  end,
+  lazy = false,
+}
diff --git a/.config/nvim/lua/plugins/orgmode.lua b/.config/nvim/lua/plugins/orgmode.lua
new file mode 100644
index 0000000..f35d7b4
--- /dev/null
+++ b/.config/nvim/lua/plugins/orgmode.lua
@@ -0,0 +1,31 @@
+return {
+  'nvim-orgmode/orgmode',
+  event = 'VeryLazy',
+  ft = { 'org' },
+  config = function()
+    -- Setup orgmode
+    require('orgmode').setup({
+      org_agenda_files = '~/orgfiles/**/*',
+      org_default_notes_file = '~/orgfiles/refile.org',
+      org_hide_emphasis_markers = true,
+    })
+
+    -- Enable line wrapping and line breaking for Org files
+    vim.api.nvim_create_augroup("OrgMode", { clear = true })
+    vim.api.nvim_create_autocmd("FileType", {
+      pattern = "org",
+      callback = function()
+        vim.opt_local.wrap = true
+        vim.opt_local.linebreak = true
+        vim.opt_local.textwidth = 80
+      end,
+    })
+
+    -- AUTHORS_NOTE: If you are using nvim-treesitter with ~ensure_installed = "all"~ option
+    -- add ~org~ to ignore_install
+    -- require('nvim-treesitter.configs').setup({
+    --   ensure_installed = 'all',
+    --   ignore_install = { 'org' },
+    -- })
+  end,
+}
diff --git a/.config/nvim/lua/plugins/rainbow-delimiters.lua b/.config/nvim/lua/plugins/rainbow-delimiters.lua
new file mode 100644
index 0000000..9fe4a06
--- /dev/null
+++ b/.config/nvim/lua/plugins/rainbow-delimiters.lua
@@ -0,0 +1,6 @@
+return {
+  "hiphish/rainbow-delimiters.nvim",
+  config =  function()
+    require('rainbow-delimiters.setup').setup({})
+  end,
+}
diff --git a/.config/nvim/lua/plugins/statuscol.lua b/.config/nvim/lua/plugins/statuscol.lua
new file mode 100644
index 0000000..15ccef9
--- /dev/null
+++ b/.config/nvim/lua/plugins/statuscol.lua
@@ -0,0 +1,6 @@
+return {
+  "luukvbaal/statuscol.nvim",
+  config = function()
+    require("statuscol").setup({relculright = true})
+  end,
+}
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
new file mode 100644
index 0000000..f942dc8
--- /dev/null
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -0,0 +1,42 @@
+return {
+  "nvim-telescope/telescope.nvim",
+  dependencies = { "nvim-lua/plenary.nvim" },
+  config = function()
+    require("telescope").setup({})
+
+    local tscope = require('telescope.builtin')
+    vim.keymap.set("n", "<leader>ff", function()
+      local cwd
+      if vim.bo.filetype == "oil" then
+        -- For Oil buffers
+        cwd = require("oil").get_current_dir()
+      else
+        cwd = vim.fn.expand("%:p:h")
+      end
+      tscope.find_files({ cwd = cwd })
+    end, { desc = "Find File" })
+
+    vim.keymap.set("n", "<leader>fp", function()
+      tscope.find_files({
+        cwd = vim.loop.cwd(),
+      })
+    end, { desc = "Find Project File" })
+    vim.keymap.set('n', '<leader>bb', tscope.buffers,
+      { desc = "Find Buffer" })
+    vim.keymap.set('n', '<leader>fh', tscope.help_tags,
+      { desc = "Find Help" })
+    -- vim.keymap.set('n', '<leader>fg', function()
+    --   tscope.grep_string(
+    --     { search = vim.fn.input("Grep > "),
+    --     desc = "Find by Grep" });
+    -- end)
+    vim.keymap.set('n', '<leader>fg', tscope.live_grep,
+      { desc = "Find by Grep" })
+    vim.keymap.set('n', '<leader>fr', tscope.oldfiles,
+      { desc = "Find Recent Files" })
+    vim.keymap.set('n', '<leader>lw', tscope.diagnostics,
+      { desc = "Search Diagnostics" })
+    vim.keymap.set('n', '<leader>lg', tscope.lsp_references,
+      { desc = "Search References" })
+  end,
+}
diff --git a/.config/nvim/lua/plugins/theme.lua b/.config/nvim/lua/plugins/theme.lua
new file mode 100644
index 0000000..995c3dc
--- /dev/null
+++ b/.config/nvim/lua/plugins/theme.lua
@@ -0,0 +1,29 @@
+-- return {
+--   "rose-pine/neovim",
+--   as = "rose-pine",
+--   config = function()
+--     require("rose-pine").setup({
+--       variant = "main",
+--       palette = {
+--         main = {
+--           base = "#000000",
+--           surface = "#000000",
+--         }
+--       }
+--     })
+--     vim.opt.termguicolors = true
+--     vim.cmd.colorscheme("rose-pine")
+--   end,
+-- }
+
+return {
+  "catppuccin/nvim",
+  priority = 1000,
+  config = function ()
+    require("catppuccin").setup({
+      flavour = "mocha"
+    })
+    vim.cmd.colorscheme("catppuccin")
+  end,
+  opts = {}
+}
diff --git a/.config/nvim/lua/plugins/todo-comments.lua b/.config/nvim/lua/plugins/todo-comments.lua
new file mode 100644
index 0000000..64f12b7
--- /dev/null
+++ b/.config/nvim/lua/plugins/todo-comments.lua
@@ -0,0 +1,7 @@
+return {
+  "folke/todo-comments.nvim",
+  dependencies = { "nvim-lua/plenary.nvim" },
+  opts = {
+  }
+}
+-- TODO: Add a bind to :TodoTelescope at '<leader>ft'
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
new file mode 100644
index 0000000..88b699b
--- /dev/null
+++ b/.config/nvim/lua/plugins/treesitter.lua
@@ -0,0 +1,53 @@
+-- return {
+--   "nvim-treesitter/nvim-treesitter",
+--   config = function()
+--     require("nvim-treesitter.configs").setup({
+--       ensure_installed = {"c", "vimdoc", "markdown", "jsonc", "lua"},
+--       sync_install = false,
+--       highlight = { enable = true },
+--       indent = { enable = true },
+--     })
+--   end,
+-- }
+
+return {
+  "nvim-treesitter/nvim-treesitter",
+  opts = {
+    highlight = { enable = true },
+    indent = { enable = true },
+    ensure_installed = {
+      "bash",
+      "c",
+      "dart",
+      "diff",
+      "go",
+      "html",
+      "javascript",
+      "jsdoc",
+      "json",
+      "jsonc",
+      "lua",
+      "luadoc",
+      "luap",
+      "make",
+      "markdown",
+      "markdown_inline",
+      "printf",
+      "python",
+      "query",
+      "regex",
+      "rust",
+      "toml",
+      "tsx",
+      "typescript",
+      "vim",
+      "vimdoc",
+      "xml",
+      "yaml",
+    },
+  },
+  ---@param opts TSConfig
+  config = function(_, opts)
+    require("nvim-treesitter.configs").setup(opts)
+  end,
+}
diff --git a/.config/nvim/lua/plugins/which-key.lua b/.config/nvim/lua/plugins/which-key.lua
new file mode 100644
index 0000000..746b399
--- /dev/null
+++ b/.config/nvim/lua/plugins/which-key.lua
@@ -0,0 +1,17 @@
+return {
+  "folke/which-key.nvim",
+  event = "VeryLazy",
+  opts = {
+    icons = { mappings = false },
+    delay = 1000
+  },
+  keys = {
+    {
+      "<leader>?",
+      function()
+        require("which-key").show({ global = false })
+      end,
+      desc = "Buffer Local Keymaps",
+    },
+  },
+}
diff --git a/.config/nvim/lua/plugins/zen.lua b/.config/nvim/lua/plugins/zen.lua
new file mode 100644
index 0000000..004aa8c
--- /dev/null
+++ b/.config/nvim/lua/plugins/zen.lua
@@ -0,0 +1,24 @@
+return {
+  "Pocco81/true-zen.nvim",
+  config = function()
+    require('true-zen').setup({
+      modes = {
+        ataraxis = {
+          padding = {
+            left = 100,
+            right = 100,
+          }
+        },
+        minimalist = {
+          options = {
+            -- Some weird bug fix :/
+            cmdheight = 1
+          }
+        }
+      }
+    })
+
+    vim.keymap.set('n', '<leader>z', require('true-zen.ataraxis').toggle,
+      { desc = "Toggle Zen Mode" })
+  end,
+}