summaryrefslogtreecommitdiff
path: root/config/nvim
diff options
context:
space:
mode:
Diffstat (limited to 'config/nvim')
-rw-r--r--config/nvim/.gitignore8
-rw-r--r--config/nvim/.neoconf.json15
-rw-r--r--config/nvim/LICENSE201
-rw-r--r--config/nvim/README.md4
-rw-r--r--config/nvim/init.lua2
-rw-r--r--config/nvim/lazy-lock.json54
-rw-r--r--config/nvim/lazyvim.json29
-rw-r--r--config/nvim/lua/config/autocmds.lua8
-rw-r--r--config/nvim/lua/config/keymaps.lua34
-rw-r--r--config/nvim/lua/config/lazy.lua52
-rw-r--r--config/nvim/lua/config/options.lua15
-rw-r--r--config/nvim/lua/plugins/checkmate.lua40
-rw-r--r--config/nvim/lua/plugins/conform.lua10
-rw-r--r--config/nvim/lua/plugins/core.lua8
-rw-r--r--config/nvim/lua/plugins/lsp.lua30
-rw-r--r--config/nvim/lua/plugins/lualine.lua73
-rw-r--r--config/nvim/lua/plugins/renderer-markdown.lua402
-rw-r--r--config/nvim/stylua.toml3
18 files changed, 988 insertions, 0 deletions
diff --git a/config/nvim/.gitignore b/config/nvim/.gitignore
new file mode 100644
index 000000000..cc5457ab8
--- /dev/null
+++ b/config/nvim/.gitignore
@@ -0,0 +1,8 @@
+tt.*
+.tests
+doc/tags
+debug
+.repro
+foo.*
+*.log
+data
diff --git a/config/nvim/.neoconf.json b/config/nvim/.neoconf.json
new file mode 100644
index 000000000..7c4808746
--- /dev/null
+++ b/config/nvim/.neoconf.json
@@ -0,0 +1,15 @@
+{
+ "neodev": {
+ "library": {
+ "enabled": true,
+ "plugins": true
+ }
+ },
+ "neoconf": {
+ "plugins": {
+ "lua_ls": {
+ "enabled": true
+ }
+ }
+ }
+}
diff --git a/config/nvim/LICENSE b/config/nvim/LICENSE
new file mode 100644
index 000000000..261eeb9e9
--- /dev/null
+++ b/config/nvim/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/config/nvim/README.md b/config/nvim/README.md
new file mode 100644
index 000000000..185280b01
--- /dev/null
+++ b/config/nvim/README.md
@@ -0,0 +1,4 @@
+# 💤 LazyVim
+
+A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
+Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
diff --git a/config/nvim/init.lua b/config/nvim/init.lua
new file mode 100644
index 000000000..2514f9ed9
--- /dev/null
+++ b/config/nvim/init.lua
@@ -0,0 +1,2 @@
+-- bootstrap lazy.nvim, LazyVim and your plugins
+require("config.lazy")
diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json
new file mode 100644
index 000000000..d10a5c625
--- /dev/null
+++ b/config/nvim/lazy-lock.json
@@ -0,0 +1,54 @@
+{
+ "LazyVim": { "branch": "main", "commit": "83d90f339defdb109a6ede333865a66ffc7ef6aa" },
+ "SchemaStore.nvim": { "branch": "main", "commit": "6d0329adb9c8cbe51b9a28299890a5eb104db7dc" },
+ "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
+ "catppuccin": { "branch": "main", "commit": "16408d203973da7e43fab87c6f9d3bf7fa98fa8b" },
+ "checkmate.nvim": { "branch": "main", "commit": "fc8edd6ecf8e4095ef878780e4bed83cc5c56c14" },
+ "cmake-tools.nvim": { "branch": "master", "commit": "e100f40b117381dadf42a34b0718f8e4350715b2" },
+ "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
+ "cmp-git": { "branch": "main", "commit": "b24309c386c9666c549a1abaedd4956541676d06" },
+ "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
+ "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
+ "conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" },
+ "flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
+ "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
+ "fzf-lua": { "branch": "main", "commit": "fea9eedc6894c44d44cbb772a5cd11c93b82d7a1" },
+ "gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" },
+ "grug-far.nvim": { "branch": "main", "commit": "5506c2f59dc9ab2ed6c233585412b24d31d51521" },
+ "inc-rename.nvim": { "branch": "main", "commit": "0074b551a17338ccdcd299bd86687cc651bcb33d" },
+ "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
+ "lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" },
+ "lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" },
+ "mason-lspconfig.nvim": { "branch": "main", "commit": "25f609e7fca78af7cede4f9fa3af8a94b1c4950b" },
+ "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
+ "mini.ai": { "branch": "main", "commit": "43eb2074843950a3a25aae56a5f41362ec043bfa" },
+ "mini.hipatterns": { "branch": "main", "commit": "a3ffba45e4119917b254c372df82e79f7d8c4aad" },
+ "mini.icons": { "branch": "main", "commit": "7fdae2443a0e2910015ca39ad74b50524ee682d3" },
+ "mini.nvim": { "branch": "main", "commit": "402ee6c6ec8ea44b22330446c8fb4e615fd3953e" },
+ "mini.pairs": { "branch": "main", "commit": "42387c7fe68fc0b6e95eaf37f1bb76e7bffaa0d9" },
+ "mini.surround": { "branch": "main", "commit": "2715e04bea3ec9244f15b421dc5b18c0fe326210" },
+ "neo-tree.nvim": { "branch": "main", "commit": "b48ed11632c8208ffb27dab6acfbf16e4f9e3376" },
+ "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
+ "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
+ "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
+ "nvim-lint": { "branch": "master", "commit": "4b03656c09c1561f89b6aa0665c15d292ba9499d" },
+ "nvim-lspconfig": { "branch": "master", "commit": "ffd2b00f8dd0ee07bd1252ef3857e28ea3272d56" },
+ "nvim-snippets": { "branch": "main", "commit": "56b4052f71220144689caaa2e5b66222ba5661eb" },
+ "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
+ "nvim-treesitter-textobjects": { "branch": "main", "commit": "93d60a475f0b08a8eceb99255863977d3a25f310" },
+ "nvim-ts-autotag": { "branch": "main", "commit": "8e1c0a389f20bf7f5b0dd0e00306c1247bda2595" },
+ "persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
+ "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
+ "render-markdown.nvim": { "branch": "main", "commit": "687de727de91a63b0bff9cff4e71d73f9d40fa77" },
+ "snacks.nvim": { "branch": "main", "commit": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e" },
+ "tailwindcss-colorizer-cmp.nvim": { "branch": "main", "commit": "3d3cd95e4a4135c250faf83dd5ed61b8e5502b86" },
+ "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
+ "tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" },
+ "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
+ "ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" },
+ "venv-selector.nvim": { "branch": "main", "commit": "bcb2f58533c59b01565285eba49693f00bc460f5" },
+ "vim-dadbod": { "branch": "master", "commit": "6d1d41da4873a445c5605f2005ad2c68c99d8770" },
+ "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" },
+ "vim-dadbod-ui": { "branch": "master", "commit": "07e92e22114cc5b1ba4938d99897d85b58e20475" },
+ "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
+}
diff --git a/config/nvim/lazyvim.json b/config/nvim/lazyvim.json
new file mode 100644
index 000000000..144c4f9d5
--- /dev/null
+++ b/config/nvim/lazyvim.json
@@ -0,0 +1,29 @@
+{
+ "extras": [
+ "lazyvim.plugins.extras.coding.mini-surround",
+ "lazyvim.plugins.extras.coding.nvim-cmp",
+ "lazyvim.plugins.extras.editor.fzf",
+ "lazyvim.plugins.extras.editor.inc-rename",
+ "lazyvim.plugins.extras.editor.neo-tree",
+ "lazyvim.plugins.extras.editor.telescope",
+ "lazyvim.plugins.extras.formatting.black",
+ "lazyvim.plugins.extras.formatting.prettier",
+ "lazyvim.plugins.extras.lang.cmake",
+ "lazyvim.plugins.extras.lang.docker",
+ "lazyvim.plugins.extras.lang.git",
+ "lazyvim.plugins.extras.lang.json",
+ "lazyvim.plugins.extras.lang.python",
+ "lazyvim.plugins.extras.lang.sql",
+ "lazyvim.plugins.extras.lang.tailwind",
+ "lazyvim.plugins.extras.lang.toml",
+ "lazyvim.plugins.extras.lang.typescript",
+ "lazyvim.plugins.extras.lang.yaml",
+ "lazyvim.plugins.extras.util.dot",
+ "lazyvim.plugins.extras.util.mini-hipatterns"
+ ],
+ "install_version": 8,
+ "news": {
+ "NEWS.md": "11866"
+ },
+ "version": 8
+} \ No newline at end of file
diff --git a/config/nvim/lua/config/autocmds.lua b/config/nvim/lua/config/autocmds.lua
new file mode 100644
index 000000000..4221e7586
--- /dev/null
+++ b/config/nvim/lua/config/autocmds.lua
@@ -0,0 +1,8 @@
+-- Autocmds are automatically loaded on the VeryLazy event
+-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
+--
+-- Add any additional autocmds here
+-- with `vim.api.nvim_create_autocmd`
+--
+-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
+-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
diff --git a/config/nvim/lua/config/keymaps.lua b/config/nvim/lua/config/keymaps.lua
new file mode 100644
index 000000000..7bd83b378
--- /dev/null
+++ b/config/nvim/lua/config/keymaps.lua
@@ -0,0 +1,34 @@
+vim.keymap.set("n", "<leader>c", function()
+ local line = vim.api.nvim_get_current_line()
+
+ if line:match("%[ %]") then
+ line = line:gsub("%[ %]", "[x]", 1)
+ elseif line:match("%[x%]") then
+ line = line:gsub("%[x%]", "[ ]", 1)
+ elseif line:match("^%s*%- ") then
+ line = line:gsub("^%s*%- ", "- [ ] ", 1)
+ else
+ return
+ end
+
+ vim.api.nvim_set_current_line(line)
+end, { desc = "Toggle markdown checkbox" })
+
+vim.keymap.set("n", "<leader>a", function()
+ local line = vim.api.nvim_get_current_line()
+
+ if line:match("^%s*%- %[[ x]%]") then
+ line = line:gsub("^%s*%- %[[ x]%]%s*", "", 1)
+ else
+ line = "- [ ] " .. line
+ end
+
+ vim.api.nvim_set_current_line(line)
+end, { desc = "Add / Remove markdown checkbox" })
+
+vim.keymap.set("t", "<C-\\>", "<C-\\><C-n>", { silent = true, desc = "Exit terminal mode" })
+vim.keymap.set("t", "<C-q>", "<C-\\><C-n>", { silent = true, desc = "Exit terminal mode" })
+
+vim.keymap.set("n", "<leader>d", '"_dd', { desc = "Delete line (no register)" })
+vim.keymap.set("n", "<leader>x", '"_x', { desc = "Delete char (no register)" })
+vim.keymap.set("i", "<Esc>", "<Esc>`^", { noremap = true, silent = true })
diff --git a/config/nvim/lua/config/lazy.lua b/config/nvim/lua/config/lazy.lua
new file mode 100644
index 000000000..285d95d28
--- /dev/null
+++ b/config/nvim/lua/config/lazy.lua
@@ -0,0 +1,52 @@
+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)
+
+require("lazy").setup({
+ spec = {
+ -- add LazyVim and import its plugins
+ { "LazyVim/LazyVim", import = "lazyvim.plugins" },
+ -- import/override with your plugins
+ { import = "plugins" },
+ },
+ defaults = {
+ -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
+ -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
+ lazy = false,
+ -- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
+ -- have outdated releases, which may break your Neovim install.
+ version = false, -- always use the latest git commit
+ -- version = "*", -- try installing the latest stable version for plugins that support semver
+ },
+ checker = {
+ enabled = true, -- check for plugin updates periodically
+ notify = false, -- notify on update
+ }, -- automatically check for plugin updates
+ performance = {
+ rtp = {
+ -- disable some rtp plugins
+ disabled_plugins = {
+ "gzip",
+ -- "matchit",
+ -- "matchparen",
+ -- "netrwPlugin",
+ "tarPlugin",
+ "tohtml",
+ "tutor",
+ "zipPlugin",
+ },
+ },
+ },
+})
diff --git a/config/nvim/lua/config/options.lua b/config/nvim/lua/config/options.lua
new file mode 100644
index 000000000..39b20e38b
--- /dev/null
+++ b/config/nvim/lua/config/options.lua
@@ -0,0 +1,15 @@
+vim.opt.number = true
+vim.opt.relativenumber = false
+vim.o.foldenable = false
+vim.o.foldmethod = "manual"
+vim.o.foldexpr = ""
+vim.api.nvim_create_autocmd("VimEnter", {
+ callback = function()
+ vim.api.nvim_set_hl(0, "IncSearch", { fg = "#1e2030", bg = "#b7bdf8" })
+ vim.api.nvim_create_autocmd("TextYankPost", {
+ callback = function()
+ vim.highlight.on_yank({ higroup = "Highlightedyank", timeout = 200 })
+ end,
+ })
+ end,
+})
diff --git a/config/nvim/lua/plugins/checkmate.lua b/config/nvim/lua/plugins/checkmate.lua
new file mode 100644
index 000000000..8cdebda4b
--- /dev/null
+++ b/config/nvim/lua/plugins/checkmate.lua
@@ -0,0 +1,40 @@
+return {
+ "bngarren/checkmate.nvim",
+ ft = { "markdown", "md" },
+ opts = {
+ files = { "*.md" },
+ default_list_marker = "-",
+ todo_states = {
+ unchecked = { marker = "□", order = 1 },
+ checked = { marker = "✔", order = 2 },
+ },
+ archive = {
+ heading = { level = 2, title = "Archive" },
+ newest_first = true,
+ parent_spacing = 0,
+ },
+ enter_insert_after_new = true,
+ use_metadata_keymaps = true,
+ smart_toggle = {
+ enabled = true,
+ include_cycle = false,
+ check_down = "direct_children",
+ uncheck_down = "none",
+ check_up = "direct_children",
+ uncheck_up = "direct_children",
+ },
+ show_todo_count = true,
+ todo_count_position = "eol",
+ todo_count_recursive = true,
+ },
+ keys = {
+ { "<leader>X", "<cmd>Checkmate toggle<CR>", desc = "Toggle todo item", mode = "n" },
+ { "<leader>C", "<cmd>Checkmate check<CR>", desc = "Check todo item", mode = "n" },
+ { "<leader>U", "<cmd>Checkmate uncheck<CR>", desc = "Uncheck todo item", mode = "n" },
+ { "<leader>N", "<cmd>Checkmate create<CR>", desc = "Create todo item", mode = "n" },
+ { "<leader>A", "<cmd>Checkmate archive<CR>", desc = "Archive completed items", mode = "n" },
+
+ { "<leader>R", "<cmd>Checkmate remove<CR>", desc = "Remove todo marker", mode = "n" },
+ { "<leader>F", "<cmd>Checkmate select_todo<CR>", desc = "Select todo", mode = "n" },
+ },
+}
diff --git a/config/nvim/lua/plugins/conform.lua b/config/nvim/lua/plugins/conform.lua
new file mode 100644
index 000000000..32ccedafe
--- /dev/null
+++ b/config/nvim/lua/plugins/conform.lua
@@ -0,0 +1,10 @@
+return {
+ "stevearc/conform.nvim",
+ opts = {
+ formatters_by_ft = {
+ python = { "ruff_organize_imports", "ruff_format" },
+
+ markdown = {},
+ },
+ },
+}
diff --git a/config/nvim/lua/plugins/core.lua b/config/nvim/lua/plugins/core.lua
new file mode 100644
index 000000000..84bb0c8f4
--- /dev/null
+++ b/config/nvim/lua/plugins/core.lua
@@ -0,0 +1,8 @@
+return {
+ {
+ "LazyVim/LazyVim",
+ opts = {
+ colorscheme = "catppuccin-macchiato",
+ },
+ },
+}
diff --git a/config/nvim/lua/plugins/lsp.lua b/config/nvim/lua/plugins/lsp.lua
new file mode 100644
index 000000000..3da2aabf2
--- /dev/null
+++ b/config/nvim/lua/plugins/lsp.lua
@@ -0,0 +1,30 @@
+return {
+ {
+ "neovim/nvim-lspconfig",
+ opts = {
+ setup = {
+ tailwindcss = function(_, opts)
+ opts.settings = {
+ tailwindCSS = {
+ validate = true,
+ lint = {
+ cssConflict = "ignore",
+ invalidApply = "error",
+ invalidConfigPath = "error",
+ invalidScreen = "error",
+ invalidTailwindDirective = "error",
+ invalidVariant = "error",
+ recommendedVariantOrder = "ignore",
+ suggestCanonicalClasses = "ignore",
+ },
+ },
+ }
+
+ require("lspconfig").tailwindcss.setup(opts)
+
+ return true
+ end,
+ },
+ },
+ },
+}
diff --git a/config/nvim/lua/plugins/lualine.lua b/config/nvim/lua/plugins/lualine.lua
new file mode 100644
index 000000000..a07bbac9a
--- /dev/null
+++ b/config/nvim/lua/plugins/lualine.lua
@@ -0,0 +1,73 @@
+return {
+ {
+ "nvim-lualine/lualine.nvim",
+ event = "VeryLazy",
+ opts = function()
+ local icons = LazyVim.config.icons
+
+ return {
+ options = {
+ theme = "auto",
+ globalstatus = vim.o.laststatus == 3,
+ disabled_filetypes = {
+ statusline = { "dashboard", "alpha", "ministarter", "snacks_dashboard" },
+ },
+ },
+ 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 = {
+ {
+ "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 = {},
+
+ lualine_z = {
+ {
+ function()
+ local l = vim.fn.line(".")
+ local c = vim.fn.col(".")
+ return string.format("%d:%d", l, c)
+ end,
+ padding = { left = 1, right = 1 },
+ },
+ },
+ },
+ extensions = { "neo-tree", "lazy", "fzf" },
+ }
+ end,
+ },
+}
diff --git a/config/nvim/lua/plugins/renderer-markdown.lua b/config/nvim/lua/plugins/renderer-markdown.lua
new file mode 100644
index 000000000..160556a35
--- /dev/null
+++ b/config/nvim/lua/plugins/renderer-markdown.lua
@@ -0,0 +1,402 @@
+return {
+ {
+ "MeanderingProgrammer/render-markdown.nvim",
+ ft = { "markdown" },
+ cmd = { "RenderMarkdown" },
+ dependencies = {
+ "nvim-treesitter/nvim-treesitter",
+ "nvim-mini/mini.nvim",
+ },
+ opts = {
+ file_types = { "markdown" },
+
+ sign = {
+ enabled = true,
+ priority = nil,
+ highlight = "RenderMarkdownSign",
+ },
+
+ heading = {
+ enabled = true,
+ render_modes = false,
+ atx = true,
+ setext = true,
+ sign = true,
+ icons = { "󰲡 ", "󰲣 ", "󰲥 ", "󰲧 ", "󰲩 ", "󰲫 " },
+ position = "overlay",
+ signs = { "󰫎 " },
+ width = "full",
+ left_margin = 0,
+ left_pad = 0,
+ right_pad = 0,
+ min_width = 0,
+ border = true,
+ border_virtual = true,
+ border_prefix = false,
+ above = "▄",
+ below = "▀",
+ backgrounds = {
+ "RenderMarkdownH1Bg",
+ "RenderMarkdownH2Bg",
+ "RenderMarkdownH3Bg",
+ "RenderMarkdownH4Bg",
+ "RenderMarkdownH5Bg",
+ "RenderMarkdownH6Bg",
+ },
+ foregrounds = {
+ "RenderMarkdownH1",
+ "RenderMarkdownH2",
+ "RenderMarkdownH3",
+ "RenderMarkdownH4",
+ "RenderMarkdownH5",
+ "RenderMarkdownH6",
+ },
+ custom = {},
+ },
+
+ code = {
+ enabled = true,
+ render_modes = false,
+ sign = true,
+ conceal_delimiters = true,
+ language = true,
+ position = "left",
+ language_icon = true,
+ language_name = true,
+ language_info = true,
+ language_pad = 2,
+ disable = {},
+ disable_background = { "diff" },
+ width = "block",
+ left_margin = 0,
+ left_pad = 2,
+ right_pad = 4,
+ min_width = 45,
+ border = "thick",
+ language_border = " ",
+ language_left = "",
+ language_right = "",
+ above = "▄",
+ below = "▀",
+ inline = true,
+ inline_left = "",
+ inline_right = "",
+ inline_pad = 0,
+ priority = 140,
+ highlight = "RenderMarkdownCode",
+ highlight_info = "RenderMarkdownCodeInfo",
+ highlight_language = nil,
+ highlight_border = "RenderMarkdownCodeBorder",
+ highlight_fallback = "RenderMarkdownCodeFallback",
+ highlight_inline = "RenderMarkdownCodeInline",
+ highlight_inline_left = nil,
+ highlight_inline_right = nil,
+ style = "language",
+ },
+
+ dash = {
+ enabled = true,
+ render_modes = false,
+ icon = "─",
+ width = "full",
+ left_margin = 0,
+ priority = nil,
+ highlight = "RenderMarkdownDash",
+ },
+
+ bullet = {
+ enabled = true,
+ render_modes = false,
+ icons = { "●", "○", "◆", "◇" },
+ ordered_icons = function(ctx)
+ local value = vim.trim(ctx.value)
+ local index = tonumber(value:sub(1, #value - 1))
+ return ("%d."):format(index > 1 and index or ctx.index)
+ end,
+ left_pad = 0,
+ right_pad = 0,
+ highlight = "RenderMarkdownBullet",
+ },
+
+ checkbox = {
+ enabled = true,
+ render_modes = false,
+ bullet = false,
+ left_pad = 0,
+ right_pad = 1,
+ unchecked = {
+ icon = "󰄱 ",
+ highlight = "RenderMarkdownUnchecked",
+ scope_highlight = nil,
+ },
+ checked = {
+ icon = "󰱒 ",
+ highlight = "RenderMarkdownChecked",
+ scope_highlight = nil,
+ },
+ },
+
+ quote = {
+ enabled = true,
+ render_modes = false,
+ icon = "▋",
+ repeat_linebreak = true,
+ highlight = {
+ "RenderMarkdownQuote1",
+ "RenderMarkdownQuote2",
+ "RenderMarkdownQuote3",
+ "RenderMarkdownQuote4",
+ "RenderMarkdownQuote5",
+ "RenderMarkdownQuote6",
+ },
+ },
+
+ pipe_table = {
+ enabled = true,
+ render_modes = false,
+ preset = "round",
+ cell = "padded",
+ cell_offset = function()
+ return 0
+ end,
+ padding = 1,
+ min_width = 12,
+ border = {
+ "┌",
+ "┬",
+ "┐",
+ "├",
+ "┼",
+ "┤",
+ "└",
+ "┴",
+ "┘",
+ "│",
+ "─",
+ },
+ border_enabled = true,
+ alignment_indicator = "┅",
+ },
+
+ callout = {
+ note = {
+ raw = "[!NOTE]",
+ rendered = "󰋽 Note",
+ highlight = "RenderMarkdownInfo",
+ category = "github",
+ },
+ tip = {
+ raw = "[!TIP]",
+ rendered = "󰌶 Tip",
+ highlight = "RenderMarkdownSuccess",
+ category = "github",
+ },
+ important = {
+ raw = "[!IMPORTANT]",
+ rendered = "󰅾 Important",
+ highlight = "RenderMarkdownHint",
+ category = "github",
+ },
+ warning = {
+ raw = "[!WARNING]",
+ rendered = "󰀪 Warning",
+ highlight = "RenderMarkdownWarn",
+ category = "github",
+ },
+ caution = {
+ raw = "[!CAUTION]",
+ rendered = "󰳦 Caution",
+ highlight = "RenderMarkdownError",
+ category = "github",
+ },
+
+ abstract = {
+ raw = "[!ABSTRACT]",
+ rendered = "󰨸 Abstract",
+ highlight = "RenderMarkdownInfo",
+ category = "obsidian",
+ },
+ summary = {
+ raw = "[!SUMMARY]",
+ rendered = "󰨸 Summary",
+ highlight = "RenderMarkdownInfo",
+ category = "obsidian",
+ },
+ tldr = {
+ raw = "[!TLDR]",
+ rendered = "󰨸 Tldr",
+ highlight = "RenderMarkdownInfo",
+ category = "obsidian",
+ },
+ info = {
+ raw = "[!INFO]",
+ rendered = "󰋽 Info",
+ highlight = "RenderMarkdownInfo",
+ category = "obsidian",
+ },
+ todo = {
+ raw = "[!TODO]",
+ rendered = "󰗡 Todo",
+ highlight = "RenderMarkdownInfo",
+ category = "obsidian",
+ },
+ hint = {
+ raw = "[!HINT]",
+ rendered = "󰌶 Hint",
+ highlight = "RenderMarkdownSuccess",
+ category = "obsidian",
+ },
+ success = {
+ raw = "[!SUCCESS]",
+ rendered = "󰄬 Success",
+ highlight = "RenderMarkdownSuccess",
+ category = "obsidian",
+ },
+ check = {
+ raw = "[!CHECK]",
+ rendered = "󰄬 Check",
+ highlight = "RenderMarkdownSuccess",
+ category = "obsidian",
+ },
+ done = {
+ raw = "[!DONE]",
+ rendered = "󰄬 Done",
+ highlight = "RenderMarkdownSuccess",
+ category = "obsidian",
+ },
+ question = {
+ raw = "[!QUESTION]",
+ rendered = "󰘥 Question",
+ highlight = "RenderMarkdownWarn",
+ category = "obsidian",
+ },
+ help = {
+ raw = "[!HELP]",
+ rendered = "󰘥 Help",
+ highlight = "RenderMarkdownWarn",
+ category = "obsidian",
+ },
+ faq = {
+ raw = "[!FAQ]",
+ rendered = "󰘥 Faq",
+ highlight = "RenderMarkdownWarn",
+ category = "obsidian",
+ },
+ attention = {
+ raw = "[!ATTENTION]",
+ rendered = "󰀪 Attention",
+ highlight = "RenderMarkdownWarn",
+ category = "obsidian",
+ },
+ failure = {
+ raw = "[!FAILURE]",
+ rendered = "󰅖 Failure",
+ highlight = "RenderMarkdownError",
+ category = "obsidian",
+ },
+ fail = {
+ raw = "[!FAIL]",
+ rendered = "󰅖 Fail",
+ highlight = "RenderMarkdownError",
+ category = "obsidian",
+ },
+ missing = {
+ raw = "[!MISSING]",
+ rendered = "󰅖 Missing",
+ highlight = "RenderMarkdownError",
+ category = "obsidian",
+ },
+ danger = {
+ raw = "[!DANGER]",
+ rendered = "󱐌 Danger",
+ highlight = "RenderMarkdownError",
+ category = "obsidian",
+ },
+ error = {
+ raw = "[!ERROR]",
+ rendered = "󱐌 Error",
+ highlight = "RenderMarkdownError",
+ category = "obsidian",
+ },
+ bug = {
+ raw = "[!BUG]",
+ rendered = "󰨰 Bug",
+ highlight = "RenderMarkdownError",
+ category = "obsidian",
+ },
+ example = {
+ raw = "[!EXAMPLE]",
+ rendered = "󰉹 Example",
+ highlight = "RenderMarkdownHint",
+ category = "obsidian",
+ },
+ quote = {
+ raw = "[!QUOTE]",
+ rendered = "󱆨 Quote",
+ highlight = "RenderMarkdownQuote",
+ category = "obsidian",
+ },
+ cite = {
+ raw = "[!CITE]",
+ rendered = "󱆨 Cite",
+ highlight = "RenderMarkdownQuote",
+ category = "obsidian",
+ },
+ },
+
+ link = {
+ enabled = true,
+ render_modes = false,
+ footnote = {
+ enabled = true,
+ icon = "󰯔 ",
+ body = function(ctx)
+ return ctx.text
+ end,
+ superscript = true,
+ prefix = "",
+ suffix = "",
+ },
+ image = "󰥶 ",
+ image_custom = true,
+ email = "󰀓 ",
+ hyperlink = "󰌹 ",
+ highlight = "RenderMarkdownLink",
+ highlight_title = "RenderMarkdownLinkTitle",
+ wiki = {
+ enabled = true,
+ icon = "󱗖 ",
+ body = function()
+ return nil
+ end,
+ highlight = "RenderMarkdownWikiLink",
+ scope_highlight = nil,
+ },
+ custom = {
+ web = { pattern = "^http", icon = "󰖟 " },
+ github = { pattern = "github%.com", icon = "󰊤 " },
+ python = { pattern = "%.py$", icon = "󰌠 " },
+ },
+ },
+
+ indent = {
+ enabled = true,
+ render_modes = false,
+ per_level = 2,
+ skip_level = 1,
+ skip_heading = false,
+ icon = "▎",
+ priority = 0,
+ highlight = "RenderMarkdownIndent",
+ },
+
+ paragraph = {
+ enabled = true,
+ render_modes = false,
+ left_margin = 0,
+ indent = 0,
+ min_width = 0,
+ },
+ },
+ },
+}
diff --git a/config/nvim/stylua.toml b/config/nvim/stylua.toml
new file mode 100644
index 000000000..5d6c50dce
--- /dev/null
+++ b/config/nvim/stylua.toml
@@ -0,0 +1,3 @@
+indent_type = "Spaces"
+indent_width = 2
+column_width = 120 \ No newline at end of file