feat(nix): nix and back again

I tried Nix, but it had too many downsides so I removed it.

1. Didn't like that all files are immutable and simple config changes
need a complete rebuild.
2. Setting up a new Mac didn't work as smoothly as promised. Not worth
the effort.
3. It sucked a lot to always have to type in the password twice on each
darwin-rebuild
4. It solves problems I never had.
This commit is contained in:
Stefan Imhoff
2024-08-05 20:55:54 +02:00
parent 2d3988b7e6
commit a41290c297
285 changed files with 6965 additions and 2517 deletions

8
.config/nvim/.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
tt.*
.tests
doc/tags
debug
.repro
foo.*
*.log
data

View File

@@ -0,0 +1,15 @@
{
"neodev": {
"library": {
"enabled": true,
"plugins": true
}
},
"neoconf": {
"plugins": {
"sumneko_lua": {
"enabled": true
}
}
}
}

202
.config/nvim/LICENSE Normal file
View File

@@ -0,0 +1,202 @@
Apache License
Test
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.

4
.config/nvim/README.md Normal file
View File

@@ -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.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
kogakure
Imhoff

File diff suppressed because it is too large Load Diff

8
.config/nvim/init.lua Normal file
View File

@@ -0,0 +1,8 @@
-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")
-- Custom Highlight
vim.api.nvim_set_hl(0, "WinSeparator", { fg = "#1F2334" })
vim.api.nvim_set_hl(0, "DashboardHeader", { fg = "#A8CD76" })
vim.api.nvim_set_hl(0, "DashboardFooter", { fg = "#A8CD76" })
vim.api.nvim_set_hl(0, "DashboardIcon", { fg = "#A8CD76" })

156
.config/nvim/lazy-lock.json Normal file
View File

@@ -0,0 +1,156 @@
{
"ChatGPT.nvim": { "branch": "main", "commit": "f081338f07216a46d3915ce46c1fcb083bcb5016" },
"CopilotChat.nvim": { "branch": "canary", "commit": "4a5e07185b37d3132e5541d8fa42aa874b774476" },
"LazyVim": { "branch": "main", "commit": "12818a6cb499456f4903c5d8e68af43753ebc869" },
"SchemaStore.nvim": { "branch": "main", "commit": "a86e7a0ecaf09fdb0b58ca09f34cd1e2b2b1fd75" },
"aerial.nvim": { "branch": "master", "commit": "e75a3df2c20b3a98c786f5e61587d74a7a6b61d6" },
"auto-save.nvim": { "branch": "main", "commit": "979b6c82f60cfa80f4cf437d77446d0ded0addf0" },
"baleia.nvim": { "branch": "main", "commit": "1b25eac3ac03659c3d3af75c7455e179e5f197f7" },
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
"base16-vim": { "branch": "master", "commit": "3be3cd82cd31acfcab9a41bad853d9c68d30478d" },
"blamer.nvim": { "branch": "master", "commit": "e0d43c11697300eb68f00d69df8b87deb0bf52dc" },
"bufferline.nvim": { "branch": "main", "commit": "0b2fd861eee7595015b6561dade52fb060be10c4" },
"catppuccin": { "branch": "main", "commit": "e1268d1c0351aa5a42ea00a680ce84de2ba080fc" },
"chafa.nvim": { "branch": "main", "commit": "792c8f4f0e86b5e27c3602be4614f886f3a12a5a" },
"cheatsheet.nvim": { "branch": "master", "commit": "9716f9aaa94dd1fd6ce59b5aae0e5f25e2a463ef" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-npm": { "branch": "main", "commit": "2337f109f51a09297596dd6b538b70ccba92b4e4" },
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"codeium.nvim": { "branch": "main", "commit": "f6a2ef32a9e923cb0104a19d3e426b0e40e49505" },
"codewindow.nvim": { "branch": "master", "commit": "dd7017617962943eb1d152fc58940f11c6775a4a" },
"committia.vim": { "branch": "master", "commit": "a187b8633694027ab5ef8a834527d33093282f95" },
"conform.nvim": { "branch": "master", "commit": "25d48271e3d4404ba017cb92a37d3a681c1ad149" },
"copilot-cmp": { "branch": "master", "commit": "b6e5286b3d74b04256d0a7e3bd2908eabec34b44" },
"copilot.lua": { "branch": "master", "commit": "86537b286f18783f8b67bccd78a4ef4345679625" },
"dashboard-nvim": { "branch": "master", "commit": "fabf5feec96185817c732d47d363f34034212685" },
"dial.nvim": { "branch": "master", "commit": "ed4d6a5bbd5e479b4c4a3019d148561a2e6c1490" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
"dressing.nvim": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" },
"editorconfig-vim": { "branch": "master", "commit": "8b7da79e9daee7a3f3a8d4fe29886b9756305aff" },
"emmet-vim": { "branch": "master", "commit": "3fb2f63799e1922f7647ed9ff3b32154031a76ee" },
"export-to-vscode.nvim": { "branch": "main", "commit": "7746bb67d03f6a6891cdedc8c760c95a5714fe8c" },
"flash.nvim": { "branch": "main", "commit": "34c7be146a91fec3555c33fe89c7d643f6ef5cf1" },
"fm-nvim": { "branch": "master", "commit": "8e6a77049330e7c797eb9e63affd75eb796fe75e" },
"friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" },
"fzf": { "branch": "master", "commit": "4e85f72f0ee237bef7a1617e0cf8c811a4091d72" },
"fzf-lua": { "branch": "main", "commit": "73bdec9ac5da578376bdc5a705ea80a19baa4942" },
"fzf.vim": { "branch": "master", "commit": "6f28c8c7bb551161a0315a76488522204f39c1f4" },
"gen.nvim": { "branch": "main", "commit": "07fb74cf1bc533791e2c7cfca7bd3f45a3b597f9" },
"gh.nvim": { "branch": "main", "commit": "ebbaac254ef7dd6f85b439825fbce82d0dc84515" },
"gitsigns.nvim": { "branch": "main", "commit": "58bd9e98d8e3c5a1c98af312e85247ee1afd3ed2" },
"grug-far.nvim": { "branch": "main", "commit": "3e491ca05c50f87d02543adb010aed9dfb1e12c1" },
"harpoon": { "branch": "harpoon2", "commit": "0378a6c428a0bed6a2781d459d7943843f374bce" },
"harpoon-lualine": { "branch": "master", "commit": "d1b873c19b701fd80d60a67d086dbb3bcc4eb00e" },
"highlight-undo.nvim": { "branch": "main", "commit": "1ea1c79372d7d93c88fd97543880927b7635e3d2" },
"inc-rename.nvim": { "branch": "main", "commit": "8ba77017ca468f3029bf88ef409c2d20476ea66b" },
"indent-blankline.nvim": { "branch": "master", "commit": "3fe94b8034dd5241cb882bb73847303b58857ecf" },
"lazy.nvim": { "branch": "main", "commit": "077102c5bfc578693f12377846d427f49bc50076" },
"lazydev.nvim": { "branch": "main", "commit": "491452cf1ca6f029e90ad0d0368848fac717c6d2" },
"lazygit.nvim": { "branch": "main", "commit": "dc56df433bfbf107fee0139e187eb9750878fa84" },
"legendary.nvim": { "branch": "master", "commit": "c89be94fe96dc5eaba67ad9371263bc1eac75044" },
"lf.nvim": { "branch": "master", "commit": "69ab1efcffee6928bf68ac9bd0c016464d9b2c8b" },
"litee.nvim": { "branch": "main", "commit": "4efaf373322d9e71eaff31164abb393417cc6f6a" },
"lsp-progress.nvim": { "branch": "main", "commit": "d5f4d28efe75ce636bfbe271eb45f39689765aab" },
"lualine.nvim": { "branch": "master", "commit": "544dd1583f9bb27b393f598475c89809c4d5e86b" },
"lush.nvim": { "branch": "main", "commit": "6a254139d077ad53be7e4f3602c8da0c84447fd9" },
"luvit-meta": { "branch": "main", "commit": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "62360f061d45177dda8afc1b0fd1327328540301" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "8b9363d83b5d779813cdd2819b8308651cec2a09" },
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
"mini.ai": { "branch": "main", "commit": "45587078f323eaf41b9f701bbc04f8d1ab008979" },
"mini.animate": { "branch": "main", "commit": "320fb35460238c436407cd779f63abad98e84870" },
"mini.icons": { "branch": "main", "commit": "fe63fe080e76d80713557e5f0c65bc15b14b152d" },
"mini.pairs": { "branch": "main", "commit": "927d19cbdd0e752ab1c7eed87072e71d2cd6ff51" },
"mini.surround": { "branch": "main", "commit": "57caca9525cec0ea771a67326b0ee637d056078a" },
"neo-tree.nvim": { "branch": "main", "commit": "206241e451c12f78969ff5ae53af45616ffc9b72" },
"neogit": { "branch": "master", "commit": "2b74a777b963dfdeeabfabf84d5ba611666adab4" },
"neotest": { "branch": "master", "commit": "32ff2ac21135a372a42b38ae131e531e64833bd3" },
"neotest-golang": { "branch": "main", "commit": "f71d2494726c529c5d5c43813b24b3dd91ade981" },
"neotest-jest": { "branch": "main", "commit": "514fd4eae7da15fd409133086bb8e029b65ac43f" },
"neotest-rspec": { "branch": "main", "commit": "53fc108a06ae43d7f873d42ee5189c2301e33623" },
"neotest-vitest": { "branch": "main", "commit": "353364aa05b94b09409cbef21b79c97c5564e2ce" },
"night-owl.nvim": { "branch": "main", "commit": "131641a516085c5b3cacc8022581902e9f2f14af" },
"noctis.nvim": { "branch": "main", "commit": "0b9336e39c686a7e58de06e4dd38c2bd862a7b33" },
"noice.nvim": { "branch": "main", "commit": "448bb9c524a7601035449210838e374a30153172" },
"nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" },
"nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" },
"nvim-colorizer.lua": { "branch": "master", "commit": "194ec600488f7c7229668d0e80bd197f3a2b84ff" },
"nvim-cursorline": { "branch": "main", "commit": "804f0023692653b2b2368462d67d2a87056947f9" },
"nvim-dap": { "branch": "master", "commit": "dcc85d12d6e2c18c5fa0f9a304d9f5e767e1401a" },
"nvim-dap-go": { "branch": "main", "commit": "5030d53097fed7b75524a04048d8dbf417fa0140" },
"nvim-dap-ruby": { "branch": "main", "commit": "4176405d186a93ebec38a6344df124b1689cfcfd" },
"nvim-dap-ui": { "branch": "master", "commit": "a5606bc5958db86f8d92803bea7400ee26a8d7e4" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "484995d573c0f0563f6a66ebdd6c67b649489615" },
"nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" },
"nvim-lspconfig": { "branch": "master", "commit": "81a19de18990208b678be084597613e2dbe66912" },
"nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
"nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" },
"nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
"nvim-silicon": { "branch": "main", "commit": "feb882f04c992b797daa118101a239fb3bedfc04" },
"nvim-snippets": { "branch": "main", "commit": "56b4052f71220144689caaa2e5b66222ba5661eb" },
"nvim-transparent": { "branch": "main", "commit": "fd35a46f4b7c1b244249266bdcb2da3814f01724" },
"nvim-treesitter": { "branch": "master", "commit": "1aad04ecde5ebf8f2b3eea5c6f39d38b251757f5" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "33a17515b79ddb10d750320fa994098bdc3e93ef" },
"nvim-ts-autotag": { "branch": "main", "commit": "dc5e1687ab76ee02e0f11c5ce137f530b36e98b3" },
"nvim-ufo": { "branch": "main", "commit": "76f6b1d7c3f254567dc583124318e52305e3b111" },
"nvim-various-textobjs": { "branch": "main", "commit": "52343c70e2487095cafd4a5000d0465a2b992b03" },
"nvim-web-devicons": { "branch": "master", "commit": "3722e3d1fb5fe1896a104eb489e8f8651260b520" },
"oatmeal.nvim": { "branch": "master", "commit": "c8cdd0a182cf77f88ea5fa4703229ddb3f47c1f7" },
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
"oil.nvim": { "branch": "master", "commit": "fcca212c2e966fc3dec1d4baf888e670631d25d1" },
"persistence.nvim": { "branch": "main", "commit": "f6aad7dde7fcf54148ccfc5f622c6d5badd0cc3d" },
"plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
"project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"rainbow_csv": { "branch": "master", "commit": "3dbbfd7d17536aebfb80f571255548495574c32b" },
"remote-nvim.nvim": { "branch": "main", "commit": "66fc20fd259401c7bb6ac5189ecb6283c2eb65d2" },
"smart-open.nvim": { "branch": "0.2.x", "commit": "87626ee8748b9bba22093adec7bb58c63e7214f0" },
"smart-splits.nvim": { "branch": "master", "commit": "dbd4d7212d6e9d180ab4197a52cee2ba31b2b749" },
"sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
"symbols-outline.nvim": { "branch": "master", "commit": "564ee65dfc9024bdde73a6621820866987cbb256" },
"tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" },
"tailwind-sorter.nvim": { "branch": "main", "commit": "1b60096635a1a1bef6b36b6c88a61ff437df5a15" },
"tailwind-tools.nvim": { "branch": "master", "commit": "72f01ba654ffaf382c1df996b77cc53ec7860f70" },
"tailwindcss-colorizer-cmp.nvim": { "branch": "main", "commit": "3d3cd95e4a4135c250faf83dd5ed61b8e5502b86" },
"telescope-file-browser.nvim": { "branch": "master", "commit": "a46780830b576049c675680650f773bedfa8677a" },
"telescope-frecency.nvim": { "branch": "master", "commit": "25d01edae8a2d74bcaa706c003b2712bce1e3301" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" },
"telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
"telescope-github.nvim": { "branch": "master", "commit": "ee95c509901c3357679e9f2f9eaac3561c811736" },
"telescope-heading.nvim": { "branch": "main", "commit": "e85c0f69cb64048f56e76548dcb2f10277576df9" },
"telescope-import.nvim": { "branch": "main", "commit": "baa2d50be46c769a1cc942a9d5be049f314f4206" },
"telescope-live-grep-args.nvim": { "branch": "master", "commit": "649b662a8f476fd2c0289570764459e95ebaa3f3" },
"telescope-node-modules.nvim": { "branch": "main", "commit": "b846d33ff5763176dc14fc74c30941a2067c82fd" },
"telescope-undo.nvim": { "branch": "main", "commit": "51be9ae7c42fc27c0b05505e3a0162e0f05fbb6a" },
"telescope.nvim": { "branch": "master", "commit": "3b1600d0fd5172ad9fae00987362ca0ef3d8895d" },
"tmux-awesome-manager.nvim": { "branch": "master", "commit": "f266ba588249965a16df77bca3f8e9a241156d37" },
"todo-comments.nvim": { "branch": "main", "commit": "8f45f353dc3649cb9b44cecda96827ea88128584" },
"toggleterm.nvim": { "branch": "main", "commit": "8ed0f52006d3207ec6c94de7db62da840937ef2a" },
"tokyonight.nvim": { "branch": "main", "commit": "b0e7c7382a7e8f6456f2a95655983993ffda745e" },
"trouble.nvim": { "branch": "main", "commit": "6efc446226679fda0547c0fd6a7892fd5f5b15d8" },
"ts-comments.nvim": { "branch": "main", "commit": "98d7d4dec0af1312d38e288f800bbf6ff562b6ab" },
"twilight.nvim": { "branch": "main", "commit": "1584c0b0a979b71fd86b18d302ba84e9aba85b1b" },
"vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" },
"vim-astro": { "branch": "main", "commit": "9b4674ecfe1dd84b5fb9b4de1653975de6e8e2e1" },
"vim-bookmarks": { "branch": "master", "commit": "9cc5fa7ecc23b052bd524d07c85356c64b92aeef" },
"vim-fugitive": { "branch": "master", "commit": "0444df68cd1cdabc7453d6bd84099458327e5513" },
"vim-gh-line": { "branch": "master", "commit": "731751fdfa4f64a061dbc7088cb7b2f12e0828ad" },
"vim-grammarous": { "branch": "master", "commit": "db46357465ce587d5325e816235b5e92415f8c05" },
"vim-markdown": { "branch": "master", "commit": "a657e697376909c41475a686eeef7fc7a4972d94" },
"vim-mundo": { "branch": "master", "commit": "2ceda8c65f7b3f9066820729fc02003a09df91f9" },
"vim-nix": { "branch": "master", "commit": "e25cd0f2e5922f1f4d3cd969f92e35a9a327ffb0" },
"vim-table-mode": { "branch": "master", "commit": "e4365bde024f73e205eefa2fb78e3029ddb92ea9" },
"vim-tmux-navigator": { "branch": "master", "commit": "5b3c701686fb4e6629c100ed32e827edf8dad01e" },
"vim-visincr": { "branch": "master", "commit": "57cd943a31b0b5ec36a884b5b5b8758843c74c1a" },
"vim-visual-multi": { "branch": "master", "commit": "38b0e8d94a5499ccc17d6159763d32c79f53417b" },
"vim-wakatime": { "branch": "master", "commit": "53bba6bb8342de9cbdafc82142a9b5e82008d858" },
"vim-xtract": { "branch": "master", "commit": "65e47be935080f112f219b5f0bc1bf411c783f27" },
"vimux": { "branch": "master", "commit": "c4ffa0b992798f3362b27642088dccb251aaef1e" },
"which-key.nvim": { "branch": "main", "commit": "6c1584eb76b55629702716995cca4ae2798a9cca" },
"worktrees.nvim": { "branch": "main", "commit": "9b705e702b29297009702e492c28c0277a5bb8fa" },
"wrapping.nvim": { "branch": "master", "commit": "3a823200c297885b70515fa8d974e1763c578e26" },
"zen-mode.nvim": { "branch": "main", "commit": "29b292bdc58b76a6c8f294c961a8bf92c5a6ebd6" }
}

15
.config/nvim/lazyvim.json Normal file
View File

@@ -0,0 +1,15 @@
{
"extras": [
"lazyvim.plugins.extras.coding.copilot",
"lazyvim.plugins.extras.dap.core",
"lazyvim.plugins.extras.editor.aerial",
"lazyvim.plugins.extras.formatting.prettier",
"lazyvim.plugins.extras.lang.go",
"lazyvim.plugins.extras.lang.tailwind",
"lazyvim.plugins.extras.lang.yaml"
],
"news": {
"NEWS.md": "6520"
},
"version": 6
}

View File

@@ -0,0 +1,55 @@
-- 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
-- Reload tmux config on save
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = { "*tmux.conf" },
command = "execute 'silent !tmux source <afile> --silent'",
})
-- Reload gitmux config on save
vim.api.nvim_create_autocmd({ "BufRead" }, {
pattern = { "gitmux.conf" },
callback = function()
vim.cmd([[set filetype=sh]])
end,
})
-- Restart yabai on config save
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = { ".yabairc" },
command = "!yabai --restart-service",
})
-- Add specific settings for Markdown files
vim.api.nvim_create_autocmd({ "BufNewFile", "BufFilePre", "BufRead" }, {
pattern = { "*.mdx", "*.md" },
callback = function()
vim.cmd([[set wrap linebreak nolist]])
vim.cmd([[SoftWrapMode]])
end,
})
-- Evenly resize windows after resizing
vim.api.nvim_create_autocmd({ "VimResized" }, {
pattern = { "*" },
callback = function()
vim.cmd([[tabdo wincmd =]])
end,
})
-- Turn off paste mode when leaving insert mode
vim.api.nvim_create_autocmd("InsertLeave", {
pattern = { "*" },
command = "set nopaste",
})
-- Change conceallevel for JSON files
vim.api.nvim_create_autocmd("FileType", {
pattern = { "json", "jsonc" },
callback = function()
vim.wo.spell = false
vim.wo.conceallevel = 0
end,
})

View File

@@ -0,0 +1,51 @@
-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
-- Add any additional keymaps here
rawset(_G, "vim", vim or {})
vim.keymap.set("n", "<leader>j", ":b#<CR>", { desc = "Toggle between buffers", noremap = true, silent = true })
vim.keymap.set("n", ";;", "A;<ESC>", { desc = "Add semicolon to the end of the line", noremap = true, silent = true })
vim.keymap.set("n", ",,", "A,<ESC>", { desc = "Add comma to the end of the line", noremap = true, silent = true })
-- stylua: ignore
vim.keymap.set("v", "y", "myy`y", { desc = "Maintain the cursor position when yanking a visual selection", noremap = true, silent = true })
vim.keymap.set("n", "+", "<C-a>", { desc = "Increment", noremap = true, silent = true })
vim.keymap.set("n", "-", "<C-x>", { desc = "Decrement", noremap = true, silent = true })
vim.keymap.set("n", "<leader>bx", ":bufdo bdelete<CR>", { desc = "Delete all buffers", noremap = true, silent = true })
vim.keymap.set("n", "<leader>bsd", "<cmd>%bd|e#|bd#<cr>|'<cr>", { desc = "Delete surrounding buffers" })
vim.keymap.set("n", "<leader>ut", ":set list!<CR>", { desc = "Toggle list", noremap = true, silent = true })
vim.keymap.set("n", "Y", "yg$", { desc = "Copy to the end of the line", noremap = true, silent = true })
-- stylua: ignore
vim.keymap.set("n", "n", "nzzzv", { desc = "Keep the window centered (next search result)", noremap = true, silent = true })
-- stylua: ignore
vim.keymap.set("n", "N", "Nzzzv", { desc = "Keep the window centered (previous search result)", noremap = true, silent = true })
-- stylua: ignore
vim.keymap.set("n", "<expr> j", "(v:count == 0 ? 'gj' : 'j')", { desc = "Move by rows in wrapped mode (down)", noremap = true, silent = true })
-- stylua: ignore
vim.keymap.set("n", "<expr> k", "(v:count == 0 ? 'gk' : 'k')", { desc = "Move by rows in wrapped mode (up)", noremap = true, silent = true })
vim.keymap.set("n", "gP", "`[v`]", { desc = "Visually select of just pasted content", noremap = true, silent = true })
vim.keymap.set("n", "gy", "`[v`]y", { desc = "Visually select of just pasted content", noremap = true, silent = true })
-- stylua: ignore
vim.keymap.set("n", "<leader>wi", ":silent !open -a iA\\ Writer.app '%:p'<CR>", { desc = "Open in iA Writer", noremap = true, silent = true })
vim.keymap.set("n", "-", "<CMD>foldclose<CR>", { desc = "Close code fold" })
vim.keymap.set("n", "+", "<CMD>foldopen<CR>", { desc = "Open code fold" })
vim.keymap.set("n", "<C-h>", function()
require("smart-splits").move_cursor_left()
end)
vim.keymap.set("n", "<C-j>", function()
require("smart-splits").move_cursor_down()
end)
vim.keymap.set("n", "<C-k>", function()
require("smart-splits").move_cursor_up()
end)
vim.keymap.set("n", "<C-l>", function()
require("smart-splits").move_cursor_right()
end)
vim.keymap.set("n", "[b", "<cmd>bprevious<cr>", { desc = "Prev buffer" })
vim.keymap.set("n", "]b", "<cmd>bnext<cr>", { desc = "Next buffer" })
-- Visual Mode
vim.keymap.set("v", "<", "<gv", { desc = "Stay in indent mode (left)", noremap = true, silent = true })
vim.keymap.set("v", ">", ">gv", { desc = "Stay in indent mode (right)", noremap = true, silent = true })

View File

@@ -0,0 +1,67 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
-- bootstrap lazy.nvim
-- stylua: ignore
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
end
vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
vim.cmd([[command! -nargs=0 GoToFile :Telescope find_files]])
vim.cmd([[command! -nargs=0 GoToCommand :Telescope commands]])
vim.cmd([[command! -nargs=0 Grep :Telescope live_grep]])
require("lazy").setup({
spec = {
-- add LazyVim and import its plugins
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
-- import any extras modules here
{ import = "lazyvim.plugins.extras.coding.codeium" },
{ import = "lazyvim.plugins.extras.coding.copilot" },
{ import = "lazyvim.plugins.extras.coding.mini-surround" },
{ import = "lazyvim.plugins.extras.dap.core" },
{ import = "lazyvim.plugins.extras.editor.aerial" },
{ import = "lazyvim.plugins.extras.editor.harpoon2" },
{ import = "lazyvim.plugins.extras.formatting.prettier" },
{ import = "lazyvim.plugins.extras.lang.go" },
{ import = "lazyvim.plugins.extras.lang.json" },
{ import = "lazyvim.plugins.extras.lang.ruby" },
{ import = "lazyvim.plugins.extras.lang.tailwind" },
{ import = "lazyvim.plugins.extras.lang.typescript" },
{ import = "lazyvim.plugins.extras.lang.yaml" },
{ import = "lazyvim.plugins.extras.linting.eslint" },
{ import = "lazyvim.plugins.extras.test.core" },
{ import = "lazyvim.plugins.extras.ui.mini-animate" },
-- 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
},
install = { colorscheme = { "tokyonight", "habamax" } },
checker = {
enabled = true,
notify = false,
frequency = 86400,
},
performance = {
rtp = {
-- disable some rtp plugins
disabled_plugins = {
"gzip",
-- "matchit",
-- "matchparen",
-- "netrwPlugin",
"tarPlugin",
"tohtml",
"tutor",
"zipPlugin",
},
},
},
})

View File

@@ -0,0 +1,48 @@
-- Options are automatically loaded before lazy.nvim startup
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
-- Add any additional options here
vim.opt.autowrite = true
vim.opt.backspace = { "indent", "eol", "start" } -- Intuitive backspacing
vim.opt.copyindent = true
vim.opt.foldlevel = 2
vim.opt.fillchars = "fold: "
vim.opt.cursorline = false
vim.opt.foldlevelstart = 99
vim.opt.foldmethod = "indent"
vim.opt.foldnestmax = 10
vim.opt.grepprg = "rg --vimgrep --no-heading --smart-case"
vim.opt.listchars = { tab = "", trail = "·", nbsp = ".", extends = "", precedes = "" }
vim.opt.showbreak = ""
vim.opt.shiftwidth = 2
vim.opt.softtabstop = 2
vim.opt.tabstop = 2
vim.opt.title = true
vim.opt.swapfile = false
vim.opt.virtualedit = "block,insert"
vim.opt.conceallevel = 2
vim.opt.iskeyword:append("-") -- Add dashes to words
vim.opt.wildignore:append({ "*/node_modules/*" }) -- Wildignore
vim.opt.complete:append({ "i", "k", "s", "kspell" })
-- Only the project root should be the root
vim.g.root_spec = { ".git" }
-- Undercurl
vim.cmd([[let &t_Cs = "\e[4:3m"]])
vim.cmd([[let &t_Ce = "\e[4:0m"]])
-- FIXME: When using "vim.opt.spellfile:append("~/.config/…) the file is not writable"
vim.cmd([[
" Spell Checker
set spellfile+=~/.config/nvim/spell/en.utf-8.add
" Custom Dictionaries (<C-x> <C-k>)
set dictionary+=~/.config/nvim/dictionary/de_user.txt
set dictionary+=~/.config/nvim/dictionary/de_neu.txt
set dictionary+=~/.config/nvim/dictionary/en_us.txt
" Custom Thesauri (Synonyms) (<C-x> <C-t>)
set thesaurus+=~/.config/nvim/thesaurus/de_user.txt
set thesaurus+=~/.config/nvim/thesaurus/de_openthesaurus.txt
]])

View File

@@ -0,0 +1,177 @@
-- Copyright (c) 2020-2021 shadmansaleh
-- MIT license, see LICENSE for more details.
local utils = require("lualine.utils.utils")
local loader = require("lualine.utils.loader")
local custom = {
A = "#1F2335",
B = "#24283B",
}
local color_name = vim.g.colors_name
if color_name then
-- All base16 colorschemes share the same theme
if "base16" == color_name:sub(1, 6) then
color_name = "base16"
end
-- Check if there's a theme for current colorscheme
-- If there is load that instead of generating a new one
local ok, theme = pcall(loader.load_theme, color_name)
if ok and theme then
return theme
end
end
---------------
-- Constants --
---------------
-- fg and bg must have this much contrast range 0 < contrast_threshold < 0.5
local contrast_threshold = 0.3
-- how much brightness is changed in percentage for light and dark themes
local brightness_modifier_parameter = 10
-- Turns #rrggbb -> { red, green, blue }
local function rgb_str2num(rgb_color_str)
if rgb_color_str:find("#") == 1 then
rgb_color_str = rgb_color_str:sub(2, #rgb_color_str)
end
local red = tonumber(rgb_color_str:sub(1, 2), 16)
local green = tonumber(rgb_color_str:sub(3, 4), 16)
local blue = tonumber(rgb_color_str:sub(5, 6), 16)
return { red = red, green = green, blue = blue }
end
-- Turns { red, green, blue } -> #rrggbb
local function rgb_num2str(rgb_color_num)
local rgb_color_str = string.format("#%02x%02x%02x", rgb_color_num.red, rgb_color_num.green, rgb_color_num.blue)
return rgb_color_str
end
-- Returns brightness level of color in range 0 to 1
-- arbitrary value it's basically an weighted average
local function get_color_brightness(rgb_color)
local color = rgb_str2num(rgb_color)
local brightness = (color.red * 2 + color.green * 3 + color.blue) / 6
return brightness / 256
end
-- returns average of colors in range 0 to 1
-- used to determine contrast level
local function get_color_avg(rgb_color)
local color = rgb_str2num(rgb_color)
return (color.red + color.green + color.blue) / 3 / 256
end
-- Clamps the val between left and right
local function clamp(val, left, right)
if val > right then
return right
end
if val < left then
return left
end
return val
end
-- Changes brightness of rgb_color by percentage
local function brightness_modifier(rgb_color, parcentage)
local color = rgb_str2num(rgb_color)
color.red = clamp(color.red + (color.red * parcentage / 100), 0, 255)
color.green = clamp(color.green + (color.green * parcentage / 100), 0, 255)
color.blue = clamp(color.blue + (color.blue * parcentage / 100), 0, 255)
return rgb_num2str(color)
end
-- Changes contrast of rgb_color by amount
local function contrast_modifier(rgb_color, amount)
local color = rgb_str2num(rgb_color)
color.red = clamp(color.red + amount, 0, 255)
color.green = clamp(color.green + amount, 0, 255)
color.blue = clamp(color.blue + amount, 0, 255)
return rgb_num2str(color)
end
-- Changes brightness of foreground color to achieve contrast
-- without changing the color
local function apply_contrast(highlight)
local hightlight_bg_avg = get_color_avg(highlight.bg)
local contrast_threshold_config = clamp(contrast_threshold, 0, 0.5)
local contranst_change_step = 5
if hightlight_bg_avg > 0.5 then
contranst_change_step = -contranst_change_step
end
-- Don't waste too much time here max 25 iteration should be more than enough
local iteration_count = 1
while math.abs(get_color_avg(highlight.fg) - hightlight_bg_avg) < contrast_threshold_config and iteration_count < 25 do
highlight.fg = contrast_modifier(highlight.fg, contranst_change_step)
iteration_count = iteration_count + 1
end
end
-- Get the colors to create theme
-- stylua: ignore
local colors = {
normal = utils.extract_color_from_hllist('bg', { 'PmenuSel', 'PmenuThumb', 'TabLineSel' }, '#000000'),
insert = utils.extract_color_from_hllist('fg', { 'String', 'MoreMsg' }, '#000000'),
replace = utils.extract_color_from_hllist('fg', { 'Number', 'Type' }, '#000000'),
visual = utils.extract_color_from_hllist('fg', { 'Special', 'Boolean', 'Constant' }, '#000000'),
command = utils.extract_color_from_hllist('fg', { 'Identifier' }, '#000000'),
back1 = utils.extract_color_from_hllist('bg', { 'Normal', 'StatusLineNC' }, '#000000'),
fore = utils.extract_color_from_hllist('fg', { 'Normal', 'StatusLine' }, '#000000'),
back2 = utils.extract_color_from_hllist('bg', { 'StatusLine' }, '#000000'),
}
-- Change brightness of colors
-- Darken if light theme (or) Lighten if dark theme
local normal_color = utils.extract_highlight_colors("Normal", "bg")
if normal_color ~= nil then
if get_color_brightness(normal_color) > 0.5 then
brightness_modifier_parameter = -brightness_modifier_parameter
end
for name, color in pairs(colors) do
colors[name] = brightness_modifier(color, brightness_modifier_parameter)
end
end
-- Basic theme definition
local M = {
normal = {
a = { bg = colors.normal, fg = colors.back1, gui = "bold" },
b = { bg = custom.B, fg = colors.normal },
c = { bg = custom.A, fg = colors.fore },
},
insert = {
a = { bg = colors.insert, fg = colors.back1, gui = "bold" },
b = { bg = custom.B, fg = colors.insert },
c = { bg = colors.back2, fg = colors.fore },
},
replace = {
a = { bg = colors.replace, fg = colors.back1, gui = "bold" },
b = { bg = custom.B, fg = colors.replace },
c = { bg = colors.back2, fg = colors.fore },
},
visual = {
a = { bg = colors.visual, fg = colors.back1, gui = "bold" },
b = { bg = custom.B, fg = colors.visual },
c = { bg = colors.back2, fg = colors.fore },
},
command = {
a = { bg = colors.command, fg = colors.back1, gui = "bold" },
b = { bg = custom.B, fg = colors.command },
c = { bg = colors.back2, fg = colors.fore },
},
}
M.terminal = M.command
M.inactive = M.normal
-- Apply proper contrast so text is readable
for _, section in pairs(M) do
for _, highlight in pairs(section) do
apply_contrast(highlight)
end
end
return M

View File

@@ -0,0 +1,42 @@
local colors = {
white = "#ffffff",
blue = "#88A1BB",
green = "#b7d670",
magenta = "#a889d2",
orange = "#fd9f4d",
yellow = "#f3fa9b",
transparent = "None",
}
return {
normal = {
a = { bg = colors.transparent, fg = colors.blue, gui = "bold" },
b = { bg = colors.transparent, fg = colors.white },
c = { bg = colors.transparent, fg = colors.white },
},
insert = {
a = { bg = colors.transparent, fg = colors.green, gui = "bold" },
b = { bg = colors.transparent, fg = colors.white },
c = { bg = colors.transparent, fg = colors.white },
},
visual = {
a = { bg = colors.transparent, fg = colors.magenta, gui = "bold" },
b = { bg = colors.transparent, fg = colors.white },
c = { bg = colors.transparent, fg = colors.white },
},
replace = {
a = { bg = colors.transparent, fg = colors.orange, gui = "bold" },
b = { bg = colors.transparent, fg = colors.white },
c = { bg = colors.transparent, fg = colors.white },
},
command = {
a = { bg = colors.transparent, fg = colors.yellow, gui = "bold" },
b = { bg = colors.transparent, fg = colors.white },
c = { bg = colors.transparent, fg = colors.white },
},
inactive = {
a = { bg = colors.transparent, fg = colors.white, gui = "bold" },
b = { bg = colors.transparent, fg = colors.white },
c = { bg = colors.transparent, fg = colors.white },
},
}

View File

@@ -0,0 +1,9 @@
-- Automatically fix spelling mistakes
-- https://github.com/tpope/vim-abolish
return {
"tpope/vim-abolish",
config = function()
vim.api.nvim_command("Abolish teh the")
vim.api.nvim_command("Abolish {despa,sepe}rat{e,es,ed,ing,ely,ion,ions,or} {despe,sepa}rat{}")
end,
}

View File

@@ -0,0 +1,22 @@
-- aerical.nvim
-- https://github.com/stevearc/aerial.nvim
return {
"stevearc/aerial.nvim",
event = "VeryLazy",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-tree/nvim-web-devicons",
},
config = function()
require("aerial").setup({
on_attach = function(bufnr)
-- Jump forwards/backwards with '{' and '}'
vim.keymap.set("n", "{", "<cmd>AerialPrev<CR>", { buffer = bufnr })
vim.keymap.set("n", "}", "<cmd>AerialNext<CR>", { buffer = bufnr })
end,
})
end,
keys = {
{ "<leader>A", "<cmd>AerialToggle!<CR>", desc = "Aerial" },
},
}

View File

@@ -0,0 +1,8 @@
-- Astro support
-- https://github.com/wuelnerdotexe/vim-astro
return {
"wuelnerdotexe/vim-astro",
config = function()
vim.g.astro_typescript = "enable"
end,
}

View File

@@ -0,0 +1,8 @@
-- 🧶 Automatically save your changes in NeoVim
-- https://github.com/pocco81/auto-save.nvim
return {
"Pocco81/auto-save.nvim",
keys = {
{ "<leader>as", "<Cmd>ASToggle<CR>", desc = "Autosave Toggle" },
},
}

View File

@@ -0,0 +1,10 @@
-- Use treesitter to auto close and auto rename HTML tags
-- https://github.com/windwp/nvim-ts-autotag
return {
"windwp/nvim-ts-autotag",
config = function()
require("nvim-ts-autotag").setup({
disable_filetype = { "TelescopePrompt", "vim" },
})
end,
}

View File

@@ -0,0 +1,15 @@
-- barbecue.nvim
-- https://github.com/utilyre/barbecue.nvim
return {
"utilyre/barbecue.nvim",
name = "barbecue",
version = "*",
dependencies = {
"SmiteshP/nvim-navic",
"nvim-tree/nvim-web-devicons",
},
config = function()
require("barbecue").setup()
require("barbecue.ui").toggle(true)
end,
}

View File

@@ -0,0 +1,4 @@
-- https://github.com/chriskempson/base16-vim
return {
"chriskempson/base16-vim",
}

View File

@@ -0,0 +1,14 @@
-- Show Git blame inline
-- https://github.com/APZelos/blamer.nvim
return {
"APZelos/blamer.nvim",
keys = {
-- stylua: ignore
{ "<leader>gB", "<cmd>BlamerToggle<cr>", desc = "Git Blame" },
},
config = function()
vim.g.blamer_enabled = 0
vim.g.blamer_relative_time = 1
vim.g.blamer_delay = 200
end,
}

View File

@@ -0,0 +1,5 @@
-- Vim bookmark plugin
-- https://github.com/MattesGroeger/vim-bookmarks
return {
"MattesGroeger/vim-bookmarks",
}

View File

@@ -0,0 +1,17 @@
-- A snazzy bufferline for Neovim
-- https://github.com/akinsho/bufferline.nvim
return {
"akinsho/bufferline.nvim",
dependencies = "nvim-tree/nvim-web-devicons",
keys = {
{ "<Tab>", "<Cmd>BufferLineCycleNext<CR>", desc = "Next tab" },
{ "<S-Tab>", "<Cmd>BufferLineCyclePrev<CR>", desc = "Prev tab" },
},
opts = {
options = {
mode = "tabs",
show_buffer_close_icons = false,
show_close_icon = false,
},
},
}

View File

@@ -0,0 +1,7 @@
-- https://github.com/catppuccin/nvim
return {
{
"catppuccin/nvim",
name = "catppuccin",
},
}

View File

@@ -0,0 +1,20 @@
-- View images in Neovim
-- https://github.com/princejoogie/chafa.nvim
return {
"princejoogie/chafa.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"m00qek/baleia.nvim",
},
config = function()
require("chafa").setup({
render = {
min_padding = 5,
show_label = true,
},
events = {
update_on_nvim_resize = true,
},
})
end,
}

View File

@@ -0,0 +1,29 @@
-- ChatGPT Neovim Plugin
-- https://github.com/jackMort/ChatGPT.nvim
return {
"jackMort/ChatGPT.nvim",
event = "VeryLazy",
keys = {
{
mode = "v",
"<leader>e",
function()
require("chatgpt").edit_with_instructions()
end,
desc = "Edit with instructions",
},
},
config = function()
local home = vim.fn.expand("$HOME")
local file_path = home .. "/.config/nvim/lua/plugins/chatgpg.txt.gpg"
require("chatgpt").setup({
api_key_cmd = "gpg --decrypt --use-agent " .. file_path,
})
end,
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"folke/trouble.nvim",
"nvim-telescope/telescope.nvim",
},
}

Binary file not shown.

View File

@@ -0,0 +1,16 @@
-- Searchable Cheatsheet
-- https://github.com/sudormrfbin/cheatsheet.nvim
return {
"sudormrfbin/cheatsheet.nvim",
dependencies = {
"nvim-telescope/telescope.nvim",
"nvim-lua/popup.nvim",
"nvim-lua/plenary.nvim",
},
keys = {
{ "<leader>C", "<cmd>Cheatsheet<cr>", desc = "Cheatsheet" },
},
config = function()
require("cheatsheet").setup()
end,
}

View File

@@ -0,0 +1,47 @@
return {
"hrsh7th/nvim-cmp",
dependencies = {
{ "roobert/tailwindcss-colorizer-cmp.nvim", config = true },
"zbirenbaum/copilot-cmp",
"David-Kunz/cmp-npm",
},
opts = function(_, opts)
local cmp = require("cmp")
opts.sources = cmp.config.sources(vim.list_extend(opts.sources, {
{ name = "copilot" },
{ name = "npm", keyword_length = 4 },
}))
opts.formatting = {
fields = { "kind", "abbr", "menu" },
format = function(_, item)
local icons = require("lazyvim.config").icons.kinds
if icons[item.kind] then
item.kind = icons[item.kind]
end
return item
end,
}
opts.window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
}
vim.api.nvim_set_hl(0, "CmpItemKindCopilot", { fg = "#6CC644" })
vim.api.nvim_set_hl(0, "CmpItemAbbrMatch", { fg = "NONE", bg = "#000000" })
vim.cmd([[highlight! link CmpItemAbbrMatchFuzzy CmpItemAbbrMatch]])
vim.cmd([[highlight! CmpItemAbbrDeprecated guibg=NONE gui=strikethrough guifg=#808080]])
vim.cmd([[highlight! CmpItemAbbrMatch guibg=NONE guifg=#569CD6]])
vim.cmd([[highlight! link CmpItemAbbrMatchFuzzy CmpItemAbbrMatch]])
vim.cmd([[highlight! CmpItemKindVariable guibg=NONE guifg=#9CDCFE]])
vim.cmd([[highlight! link CmpItemKindInterface CmpItemKindVariable]])
vim.cmd([[highlight! link CmpItemKindText CmpItemKindVariable]])
vim.cmd([[highlight! CmpItemKindFunction guibg=NONE guifg=#C586C0]])
vim.cmd([[highlight! link CmpItemKindMethod CmpItemKindFunction]])
vim.cmd([[highlight! CmpItemKindKeyword guibg=NONE guifg=#D4D4D4]])
vim.cmd([[highlight! link CmpItemKindProperty CmpItemKindKeyword]])
vim.cmd([[highlight! link CmpItemKindUnit CmpItemKindKeyword]])
end,
}

View File

@@ -0,0 +1,12 @@
-- Minimap
-- https://github.com/gorbit99/codewindow.nvim
return {
"gorbit99/codewindow.nvim",
config = function()
local codewindow = require("codewindow")
codewindow.setup({
window_border = "none",
})
codewindow.apply_default_keybinds()
end,
}

View File

@@ -0,0 +1,29 @@
-- The fastest Neovim colorizer
-- https://github.com/NvChad/nvim-colorizer.lua
return {
"NvChad/nvim-colorizer.lua",
opts = {
filetypes = {
"css",
"html",
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"yaml",
"conf",
"lua",
},
user_default_options = {
RGB = true,
RRGGBB = true,
names = true,
RRGGBBAA = true,
rgb_fn = true,
hsl_fn = true,
css = true,
css_fn = true,
mode = "background",
},
},
}

View File

@@ -0,0 +1,7 @@
-- https://github.com/catppuccin/nvim
return {
"catppuccin/nvim",
lazy = false,
priority = 1000,
name = "catppuccin",
}

View File

@@ -0,0 +1,10 @@
-- 🦉 🌌 Night Owl colorscheme implementation for Neovim with support for Treesitter and semantic tokens
-- https://github.com/oxfist/night-owl.nvim
return {
"oxfist/night-owl.nvim",
lazy = true,
config = function()
require("night-owl").setup()
vim.cmd.colorscheme("night-owl")
end,
}

View File

@@ -0,0 +1,6 @@
-- https://github.com/folke/tokyonight.nvim
return {
"folke/tokyonight.nvim",
lazy = true,
opts = { style = "night" },
}

View File

@@ -0,0 +1,9 @@
-- Configure LazyVim to load colorscheme
return {
{
"LazyVim/LazyVim",
opts = {
colorscheme = "catppuccin",
},
},
}

View File

@@ -0,0 +1,5 @@
-- More pleasant editing on commit messages
-- https://github.com/rhysd/committia.vim
return {
"rhysd/committia.vim",
}

View File

@@ -0,0 +1,13 @@
-- Chat with GitHub Copilot in Neovim
-- https://github.com/CopilotC-Nvim/CopilotChat.nvim
return {
{
"CopilotC-Nvim/CopilotChat.nvim",
branch = "canary",
dependencies = {
{ "zbirenbaum/copilot.lua" }, -- or github/copilot.vim
{ "nvim-lua/plenary.nvim" }, -- for curl, log wrapper
},
opts = {},
},
}

View File

@@ -0,0 +1,10 @@
-- Copilot replacement
-- https://github.com/zbirenbaum/copilot.lua
-- https://github.com/zbirenbaum/copilot-cmp
return {
"zbirenbaum/copilot-cmp",
dependencies = "zbirenbaum/copilot.lua",
opts = function()
require("copilot").setup()
end,
}

View File

@@ -0,0 +1,19 @@
-- Highlight cursor words and lines
-- https://github.com/yamatsum/nvim-cursorline
return {
"yamatsum/nvim-cursorline",
config = function()
require("nvim-cursorline").setup({
cursorline = {
enable = false,
timeout = 1000,
number = false,
},
cursorword = {
enable = true,
min_length = 3,
hl = { underline = true },
},
})
end,
}

View File

@@ -0,0 +1,110 @@
return {
"nvimdev/dashboard-nvim",
event = "VimEnter",
opts = function()
local logo = "\n"
.. "\n"
.. "┌─╮╭─╮╭─╮▖ ▖▖▄▄▗▄ \n"
.. "│ │├─┘│ │▝▖▞ ▌▌ ▌ ▌\n"
.. "╵ ╵╰─╯╰─╯ ▝ ▘▘ ▘ ▘\n"
.. "\n"
logo = string.rep("\n", 5) .. logo .. "\n\n"
local opts = {
theme = "doom",
hide = {
statusline = false,
},
config = {
header = vim.split(logo, "\n"),
center = {
{
action = "Telescope find_files",
desc = " Find file",
icon = "",
key = "f",
},
{
action = "ene | startinsert",
desc = " New file",
icon = "",
key = "n",
},
{
action = "Telescope oldfiles",
desc = " Recent files",
icon = "",
key = "r",
},
{
action = "Telescope live_grep",
desc = " Find text",
icon = "",
key = "g",
},
{
action = "Telescope projects",
desc = " Find project",
icon = "",
key = "p",
},
{
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)
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,
}

View File

@@ -0,0 +1,32 @@
-- Enhanced increment/decrement
-- https://github.com/monaqa/dial.nvim
return {
"monaqa/dial.nvim",
config = function()
local augend = require("dial.augend")
local opts = { noremap = true, silent = true }
require("dial.config").augends:register_group({
default = {
augend.constant.alias.bool,
augend.constant.alias.de_weekday,
augend.constant.alias.de_weekday_full,
augend.constant.new({ elements = { "before", "after" } }),
augend.constant.new({ elements = { "left", "right" } }),
augend.constant.new({ elements = { "let", "const" } }),
augend.constant.new({ elements = { "start", "end" } }),
augend.date.alias["%d.%m.%Y"],
augend.hexcolor.new({ case = "lower" }),
augend.integer.alias.decimal_int,
augend.semver.alias.semver,
},
})
vim.keymap.set("n", "<C-a>", require("dial.map").inc_normal(), opts)
vim.keymap.set("n", "<C-x>", require("dial.map").dec_normal(), opts)
vim.keymap.set("v", "<C-a>", require("dial.map").inc_visual(), opts)
vim.keymap.set("v", "<C-x>", require("dial.map").dec_visual(), opts)
vim.keymap.set("v", "g<C-a>", require("dial.map").inc_gvisual(), opts)
vim.keymap.set("v", "g<C-x>", require("dial.map").dec_gvisual(), opts)
end,
}

View File

@@ -0,0 +1,20 @@
-- Easily cycle through diffs
-- https://github.com/sindrets/diffview.nvim
return {
"sindrets/diffview.nvim",
lazy = false,
dependencies = "nvim-lua/plenary.nvim",
keys = {
{ "<leader>gd", "<cmd>DiffviewOpen<cr>", desc = "Diffview Open" },
{ "<leader>gD", "<cmd>DiffviewClose<cr>", desc = "Diffview Close" },
},
opts = {
view = {
use_icons = true,
default = {
layout = "diff2_horizontal",
winbar_info = false,
},
},
},
}

View File

@@ -0,0 +1,5 @@
-- Editorconfig
-- https://github.com/editorconfig/editorconfig-vim
return {
"editorconfig/editorconfig-vim",
}

View File

@@ -0,0 +1,6 @@
-- Emmet
-- https://github.com/mattn/emmet-vim
-- <c-y>, to extend
return {
"mattn/emmet-vim",
}

View File

@@ -0,0 +1,267 @@
-- 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 config.plugins will be loaded automatically by lazy.nvim
--
-- In your plugin files, you can:
-- * add extra plugins
-- * disable/enabled LazyVim plugins
-- * override the configuration of LazyVim plugins
return {
-- add gruvbox
{ "ellisonleao/gruvbox.nvim" },
-- Configure LazyVim to load gruvbox
{
"LazyVim/LazyVim",
opts = {
colorscheme = "gruvbox",
},
},
-- change trouble config
{
"folke/trouble.nvim",
-- opts will be merged with the parent spec
opts = { use_diagnostic_signs = true },
},
-- disable trouble
{ "folke/trouble.nvim", enabled = false },
-- add symbols-outline
{
"simrat39/symbols-outline.nvim",
cmd = "SymbolsOutline",
keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
config = true,
},
-- override nvim-cmp and add cmp-emoji
{
"hrsh7th/nvim-cmp",
dependencies = { "hrsh7th/cmp-emoji" },
---@param opts cmp.ConfigSchema
opts = function(_, opts)
local cmp = require("cmp")
opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } }))
end,
},
-- change some telescope options and a keymap to browse plugin files
{
"nvim-telescope/telescope.nvim",
keys = {
-- add a keymap to browse plugin files
-- stylua: ignore
{
"<leader>fp",
function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
desc = "Find Plugin File",
},
},
-- change some options
opts = {
defaults = {
layout_strategy = "horizontal",
layout_config = { prompt_position = "top" },
sorting_strategy = "ascending",
winblend = 0,
},
},
},
-- add telescope-fzf-native
{
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
config = function()
require("telescope").load_extension("fzf")
end,
},
},
-- add pyright to lspconfig
{
"neovim/nvim-lspconfig",
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
-- pyright will be automatically installed with mason and loaded with lspconfig
pyright = {},
},
},
},
-- add tsserver and setup with typescript.nvim instead of lspconfig
{
"neovim/nvim-lspconfig",
dependencies = {
"jose-elias-alvarez/typescript.nvim",
init = function()
require("lazyvim.util").lsp.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",
"help",
"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 ans 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()
-- they 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,
},
}

View File

@@ -0,0 +1,9 @@
-- Export active buffers to VS Code
-- https://github.com/elijahmanor/export-to-vscode.nvim
return {
"elijahmanor/export-to-vscode.nvim",
keys = {
-- stylua: ignore
{ "<leader>code", function() require("export-to-vscode").launch() end, desc = "Export to VS Code" },
},
}

View File

@@ -0,0 +1,33 @@
-- flash.nvim
-- https://github.com/folke/flash.nvim
return {
"folke/flash.nvim",
event = "VeryLazy",
opts = {},
keys = {
{
"s",
mode = { "n", "x", "o" },
function()
require("flash").jump()
end,
desc = "Flash",
},
{
"S",
mode = { "n", "o", "x" },
function()
require("flash").treesitter()
end,
desc = "Flash Treesitter",
},
{
"r",
mode = "o",
function()
require("flash").remote()
end,
desc = "Remote Flash",
},
},
}

View File

@@ -0,0 +1,60 @@
-- Use favorite terminal file managers in Neovim
-- https://github.com/is0n/fm-nvim
return {
"is0n/fm-nvim",
keys = {
{ "<M-g>", "<cmd>Lazygit<cr>", desc = "Lazygit" },
{ "<M-l>", "<cmd>Lf<cr>", desc = "Lf" },
},
opts = {
edit_cmd = "edit",
on_close = {},
on_open = {},
ui = {
default = "float",
float = {
border = "rounded",
float_hl = "Normal",
border_hl = "FloatBorder",
blend = 0,
height = 0.9,
width = 0.9,
x = 0.5,
y = 0.5,
},
split = {
direction = "topleft",
size = 24,
},
},
cmds = {
lf_cmd = "lf",
fm_cmd = "fm",
nnn_cmd = "nnn",
fff_cmd = "fff",
twf_cmd = "twf",
fzf_cmd = "fzf",
fzy_cmd = "find . | fzy",
xplr_cmd = "xplr",
vifm_cmd = "vifm",
skim_cmd = "sk",
broot_cmd = "broot",
gitui_cmd = "gitui",
ranger_cmd = "ranger",
joshuto_cmd = "joshuto",
lazygit_cmd = "lazygit",
neomutt_cmd = "neomutt",
taskwarrior_cmd = "taskwarrior-tui",
},
mappings = {
vert_split = "<C-v>",
horz_split = "<C-h>",
tabedit = "<C-t>",
edit = "<C-e>",
ESC = "<ESC>",
},
},
config = function()
require("fm-nvim").setup()
end,
}

View File

@@ -0,0 +1,56 @@
-- Lightweight yet powerful formatter plugin for Neovim
-- https://github.com/stevearc/conform.nvim
return {
"stevearc/conform.nvim",
event = { "BufWritePre", "BufNewFile" },
keys = {
{
"<leader>mp",
mode = { "n", "v" },
function()
require("conform").format({
lsp_fallback = true,
async = false,
timeout_ms = 500,
})
end,
desc = "Format file or range (in visual mode)",
},
},
opts = {
formatters = {
eslint_d = {
command = "eslint_d",
args = { "--fix-to-stdout", "--stdin", "--stdin-filename", "$FILENAME" },
stdin = true,
},
nixpkgs_fmt = {
command = "nixpkgs-fmt",
},
},
formatters_by_ft = {
-- ["*"] = { "codespell" },
["_"] = { "trim_whitespace" },
astro = { { "prettierd", "prettier" } },
css = { { "prettierd", "prettier" }, "stylelint" },
fish = { "fish_indent" },
go = { "goimports", "gofumpt" },
graphql = { { "prettierd", "prettier" } },
html = { { "prettierd", "prettier" } },
javascript = { { "prettierd", "prettier" }, "eslint_d" },
javascriptreact = { { "prettierd", "prettier" }, "eslint_d" },
json = { { "prettierd", "prettier" } },
lua = { "stylua" },
markdown = { { "prettierd", "prettier" } },
mdx = { { "prettierd", "prettier" } },
nix = { "nixpkgs_fmt" },
python = { "isort", "black" },
ruby = { "rubyfmt", "rubocop" },
eruby = { "htmlbeautifier" },
svelte = { { "prettierd", "prettier" } },
typescript = { { "prettierd", "prettier" }, "eslint_d" },
typescriptreact = { { "prettierd", "prettier" }, "eslint_d" },
yaml = { { "prettierd", "prettier" } },
},
},
}

View File

@@ -0,0 +1,5 @@
-- fugitive.vim: A Git wrapper so awesome, it should be illegal
-- https://github.com/tpope/vim-fugitive
return {
"tpope/vim-fugitive",
}

View File

@@ -0,0 +1,9 @@
-- Open the link of current line on GitHub
-- https://github.com/ruanyl/vim-gh-line
-- <leader>gh (line) or <leader>gb (blame)
return {
"ruanyl/vim-gh-line",
config = function()
vim.g.gh_github_domain = "source.xing.com"
end,
}

View File

@@ -0,0 +1,28 @@
-- A fully featured GitHub integration for performing code reviews
-- https://github.com/ldelossa/gh.nvim
return {
"ldelossa/gh.nvim",
dependencies = { "ldelossa/litee.nvim" },
config = function()
require("litee.lib").setup()
require("litee.gh").setup({
jump_mode = "invoking",
map_resize_keys = false,
disable_keymaps = false,
icon_set = "default",
icon_set_custom = nil,
git_buffer_completion = true,
keymaps = {
open = "<CR>",
expand = "zo",
collapse = "zc",
goto_issue = "gd",
details = "d",
submit_comment = "<C-s>",
actions = "<C-a>",
resolve_thread = "<C-r>",
goto_web = "gx",
},
})
end,
}

View File

@@ -0,0 +1,5 @@
-- A powerful grammar checker using LanguageTool
-- https://github.com/rhysd/vim-grammarous
return {
"rhysd/vim-grammarous",
}

View File

@@ -0,0 +1,11 @@
-- Harpoon2 for lualine
-- https://github.com/letieu/harpoon-lualine
return {
"letieu/harpoon-lualine",
dependencies = {
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
},
},
}

View File

@@ -0,0 +1,63 @@
-- Getting you where you want with the fewest keystrokes
-- https://github.com/ThePrimeagen/harpoon
return {
"ThePrimeagen/harpoon",
branch = "harpoon2",
keys = {
{
"<leader>a",
function()
require("harpoon"):list():add()
end,
desc = "Harpoon Add File",
},
{
"<leader>;",
function()
local harpoon = require("harpoon")
harpoon.ui:toggle_quick_menu(harpoon:list())
end,
desc = "Harpoon Quickmenu",
},
{
"<leader>1",
function()
require("harpoon"):list():select(1)
end,
desc = "Harpoon Buffer 1",
},
{
"<leader>2",
function()
require("harpoon"):list():select(2)
end,
desc = "Harpoon Buffer 2",
},
{
"<leader>3",
function()
require("harpoon"):list():select(3)
end,
desc = "Harpoon Buffer 3",
},
{
"<leader>4",
function()
require("harpoon"):list():select(4)
end,
desc = "Harpoon Buffer 4",
},
{
"<leader>5",
function()
require("harpoon"):list():select(5)
end,
desc = "Harpoon Buffer 5",
},
},
opts = {
menu = {
width = vim.api.nvim_win_get_width(0) - 4,
},
},
}

View File

@@ -0,0 +1,15 @@
-- highlight-undo.nvim
-- https://github.com/tzachar/highlight-undo.nvim
return {
"tzachar/highlight-undo.nvim",
config = function()
require("highlight-undo").setup({
hlgroup = "HighlightUndo",
duration = 300,
keymaps = {
{ "n", "u", "undo", {} },
{ "n", "<C-r>", "redo", {} },
},
})
end,
}

View File

@@ -0,0 +1,7 @@
-- Incremental LSP renaming based on Neovim's command-preview feature.
-- https://github.com/smjonas/inc-rename.nvim
return {
"smjonas/inc-rename.nvim",
cmd = "IncRename",
config = true,
}

View File

@@ -0,0 +1,18 @@
-- Plugin for calling lazygit from within neovim.
-- https://github.com/kdheepak/lazygit.nvim
return {
"kdheepak/lazygit.nvim",
cmd = {
"LazyGit",
"LazyGitConfig",
"LazyGitCurrentFile",
"LazyGitFilter",
"LazyGitFilterCurrentFile",
},
dependencies = {
"nvim-lua/plenary.nvim",
},
keys = {
{ "<leader>lg", "<cmd>LazyGit<cr>", desc = "LazyGit" },
},
}

View File

@@ -0,0 +1,17 @@
-- A legend for your keymaps, commands, and autocmds
-- https://github.com/mrjones2014/legendary.nvim
return {
"mrjones2014/legendary.nvim",
dependencies = {
"kkharji/sqlite.lua",
},
keys = {
-- stylua: ignore
-- { "<leader>L", "<cmd>Legendary<cr>", desc = "Legendary" },
},
config = function()
require("legendary").setup({
which_key = { auto_register = true },
})
end,
}

View File

@@ -0,0 +1,19 @@
-- Lf file manager for Neovim
-- https://github.com/lmburns/lf.nvim
return {
"lmburns/lf.nvim",
cmd = "Lf",
dependencies = {
"nvim-lua/plenary.nvim",
"akinsho/toggleterm.nvim",
},
keys = {
{ "<leader>fl", "<cmd>Lf<cr>", desc = "Lf File Manager" },
},
opts = {
winblend = 0,
highlights = { NormalFloat = { guibg = "NONE" } },
border = "curved",
escape_quit = true,
},
}

View File

@@ -0,0 +1,34 @@
-- Linting
-- https://github.com/mfussenegger/nvim-lint
return {
"mfussenegger/nvim-lint",
event = {
"BufWritePre",
"BufNewFile",
},
keys = {
{
"<leader>L",
mode = { "n" },
function()
require("lint").try_lint()
end,
desc = "Trigger linting for current file",
},
},
opts = {
events = { "BufEnter", "BufWritePost", "BufReadPost", "InsertLeave" },
linters_by_ft = {
["*"] = { "codespell" },
astro = { "eslint_d", "cspell" },
fish = { "fish" },
javascript = { "eslint_d", "cspell" },
javascriptreact = { "eslint_d", "cspell" },
python = { "pylint" },
ruby = { "rubocop" },
svelte = { "eslint_d" },
typescript = { "eslint_d", "cspell" },
typescriptreact = { "eslint_d", "cspell" },
},
},
}

View File

@@ -0,0 +1,7 @@
return {
"linrongbin16/lsp-progress.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("lsp-progress").setup()
end,
}

View File

@@ -0,0 +1,52 @@
-- Quickstart configs for Nvim LSP
-- https://github.com/neovim/nvim-lspconfig
return {
"neovim/nvim-lspconfig",
init = function()
require("lazyvim.util").lsp.on_attach(function(_, buffer)
-- stylua: ignore
vim.keymap.set("n", "g0", "<cmd>Telescope lsp_document_symbols<cr>", { buffer = buffer, desc = "Document Symbols" })
vim.keymap.set("n", "cc", "<cmd>lua vim.lsp.buf.code_action()<cr>", { buffer = buffer, desc = "Code Action" })
end)
end,
opts = {
inlay_hints = { enabled = false },
servers = {
astro = {},
cssls = {},
cssmodules_ls = {},
diagnosticls = {},
emmet_ls = {},
graphql = {},
html = {},
jsonls = {},
lua_ls = {},
nixd = {},
svelte = {},
tsserver = {},
yamlls = {},
},
},
setup = function()
local nvim_lsp = require("lspconfig")
nvim_lsp.nixd.setup({
cmd = { "nixd" },
setttings = {
nixd = {
expr = "import <nixpkgs> { }",
},
formattting = {
command = { "nixpkgs-fmt" },
},
options = {
nixos = {
expr = '(builtins.getFlake ("git+file://" + toString ./.)).nixosConfigurations.k-on.options',
},
home_manager = {
expr = '(builtins.getFlake ("git+file://" + toString ./.)).homeConfigurations."ruixi@k-on".options',
},
},
},
})
end,
}

View File

@@ -0,0 +1,105 @@
-- A blazing fast and easy to configure neovim statusline plugin written in pure lua.
-- https://github.com/nvim-lualine/lualine.nvim
return {
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
dependencies = {
"nvim-tree/nvim-web-devicons",
"linrongbin16/lsp-progress.nvim",
},
opts = function()
local icons = require("lazyvim.config").icons
local function fg(name)
return function()
---@type {foreground?:number}?
local hl = vim.api.nvim_get_hl_by_name(name, true)
return hl and hl.foreground and { fg = string.format("#%06x", hl.foreground) }
end
end
return {
options = {
icons_enabled = true,
theme = "transparent",
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
disabled_filetypes = { "alpha", "dashboard", "lazy " },
always_divide_middle = true,
globalstatus = true,
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch" },
lualine_c = {
{
"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 } },
{ "filename", path = 3, symbols = { modified = "", readonly = "", unnamed = "" } },
{
"harpoon2",
indicators = { "1", "2", "3", "4", "5" },
active_indicators = { "[1]", "[2]", "[3]", "[4]", "[5]" },
separator = " ",
},
},
lualine_x = {
{ require("lsp-progress").progress },
{
function()
return require("noice").api.status.command.get()
end,
cond = function()
return package.loaded["noice"] and require("noice").api.status.command.has()
end,
color = fg("Statement"),
},
{
function()
return require("noice").api.status.mode.get()
end,
cond = function()
return package.loaded["noice"] and require("noice").api.status.mode.has()
end,
color = fg("Constant"),
},
{ require("lazy.status").updates, cond = require("lazy.status").has_updates, color = fg("Special") },
{
"diff",
symbols = {
added = icons.git.added,
modified = icons.git.modified,
removed = icons.git.removed,
},
},
},
lualine_y = {
{ "progress", separator = "", padding = { left = 1, right = 0 } },
{ "location", padding = { left = 0, right = 1 } },
},
lualine_z = {
function()
return "" .. os.date("%R")
end,
},
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { "filename" },
lualine_x = { "location" },
lualine_y = {},
lualine_z = {},
},
tabline = {},
extensions = { "neo-tree" },
}
end,
}

View File

@@ -0,0 +1,10 @@
-- Markdown Preview
-- https://github.com/iamcco/markdown-preview.nvim
return {
"iamcco/markdown-preview.nvim",
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
ft = { "markdown" },
build = function()
vim.fn["mkdp#util#install"]()
end,
}

View File

@@ -0,0 +1,53 @@
-- Package manager for LSP servers, DAP servers, linters, and formatters
-- https://github.com/williamboman/mason.nvim
return {
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"astro-language-server",
"black",
"codespell",
"cspell",
"css-lsp",
"cssmodules-language-server",
"delve",
"diagnostic-languageserver",
"emmet-ls",
"eslint-lsp",
"eslint_d",
"gofumpt",
"goimports",
"gomodifytags",
"html-lsp",
"htmlbeautifier",
"impl",
"isort",
"json-lsp",
"lua-language-server",
"markdown-oxide",
"nixpkgs-fmt",
"prettier",
"prettierd",
"pyright",
"rubocop",
"rubyfmt",
"shellcheck",
"stylua",
"svelte-language-server",
"tailwindcss-language-server",
"typescript-language-server",
"typos-lsp",
"vale",
"yaml-language-server",
"yamlfmt",
},
ui = {
border = "rounded",
icons = {
package_installed = "",
package_pending = "",
package_uninstalled = "",
},
},
},
}

View File

@@ -0,0 +1,5 @@
-- Vim undo tree visualizer
-- https://github.com/simnalamburt/vim-mundo
return {
"simnalamburt/vim-mundo",
}

View File

@@ -0,0 +1,20 @@
-- An interactive and powerful Git interface for Neovim
-- https://github.com/NeogitOrg/neogit
return {
"NeogitOrg/neogit",
dependencies = {
"nvim-lua/plenary.nvim",
"sindrets/diffview.nvim",
"nvim-telescope/telescope.nvim",
},
keys = {
{
"<leader>gn",
function()
require("neogit").open()
end,
desc = "Neogit",
},
},
config = true,
}

View File

@@ -0,0 +1,56 @@
-- Neotest
-- https://github.com/nvim-neotest/neotest
return {
{
"nvim-neotest/neotest",
dependencies = {
"haydenmeade/neotest-jest",
"marilari88/neotest-vitest",
},
keys = {
{
"<leader>tl",
function()
require("neotest").run.run_last()
end,
desc = "Run Last Test",
},
{
"<leader>tL",
function()
require("neotest").run.run_last({
strategy = "dap",
})
end,
desc = "Debug Last Test",
},
{
"<leader>tw",
"<cmd>lua require('neotest').run.run({ jestCommand = 'jest --watch ' })<cr>",
desc = "Run Watch",
},
},
opts = function(_, opts)
table.insert(
opts.adapters,
require("neotest-jest")({
jestCommand = "npm test --",
jestConfigFile = "custom.jest.config.ts",
env = {
CI = true,
},
cwd = function()
return vim.fn.getcwd()
end,
})
)
table.insert(opts.adapters, require("neotest-vitest"))
table.insert(
opts.adapters,
require("neotest-go")({
recursive_run = true,
})
)
end,
},
}

View File

@@ -0,0 +1,7 @@
-- https://github.com/kartikp10/noctis.nvim
return {
{
"kartikp10/noctis.nvim",
dependencies = "rktjmp/lush.nvim",
}, -- Noctis color scheme
}

View File

@@ -0,0 +1,25 @@
-- Experimental UI plugin
-- https://github.com/folke/noice.nvim
return {
"folke/noice.nvim",
opts = {
lsp = {
progress = {
enabled = false,
},
},
routes = {
{
filter = {
event = "notify",
find = "No information available",
},
opts = { skip = true },
},
},
presets = {
inc_rename = true,
lsp_doc_border = true,
},
},
}

View File

@@ -0,0 +1,10 @@
-- A fancy, configurable notification manager
-- https://github.com/rcarriga/nvim-notify
return {
"rcarriga/nvim-notify",
opts = {
render = "minimal",
stages = "static",
timeout = 2000,
},
}

View File

@@ -0,0 +1,11 @@
return {
"dustinblackman/oatmeal.nvim",
cmd = { "Oatmeal" },
keys = {
{ "<leader>om", mode = "n", desc = "Start Oatmeal session" },
},
opts = {
backend = "ollama",
model = "codellama:latest",
},
}

View File

@@ -0,0 +1,71 @@
-- Obsidian
-- https://github.com/epwalsh/obsidian.nvim
return {
"epwalsh/obsidian.nvim",
version = "*",
lazy = true,
ft = "markdown",
dependencies = {
-- required
"nvim-lua/plenary.nvim",
-- optional
"hrsh7th/nvim-cmp",
"nvim-telescope/telescope.nvim",
"ibhagwan/fzf-lua",
"junegunn/fzf",
"junegunn/fzf.vim",
"godlygeek/tabular",
"preservim/vim-markdown",
},
opts = {
workspaces = {
{
name = "zettelkasten",
path = "~/Code/GitHub/obsidian/zettelkasten",
overrides = {
notes_subdir = "pages",
},
},
{
name = "highlights",
path = "~/Code/GitHub/obsidian/highlights",
},
},
completion = {
nvim_cmp = true,
min_chars = 2,
use_path_only = false,
},
mappings = {
-- Overrides the 'gf' mapping to work on markdown/wiki links within your vault.
["gf"] = {
action = function()
return require("obsidian").util.gf_passthrough()
end,
opts = { noremap = false, expr = true, buffer = true },
},
-- Toggle check-boxes.
["<leader>ch"] = {
action = function()
return require("obsidian").util.toggle_checkbox()
end,
opts = { buffer = true },
},
},
disable_frontmatter = true,
note_id_func = function(title)
local suffix = ""
if title ~= nil and title ~= "" then
suffix = title
else
suffix = tostring(os.date("%Y%m%d%H%M"))
end
return suffix
end,
templates = {
subdir = "templates",
date_format = "%Y-%m-%d",
time_format = "%H:%M",
},
},
}

View File

@@ -0,0 +1,11 @@
return {
"stevearc/oil.nvim",
opts = {},
dependencies = { "nvim-tree/nvim-web-devicons" },
keys = {
{ "<leader>-", "<CMD>lua require('oil').open()<CR>", desc = "Oil" },
},
config = function()
require("oil").setup()
end,
}

View File

@@ -0,0 +1,12 @@
-- Generate text using LLMs with customizable prompts
-- https://github.com/David-Kunz/gen.nvim
return {
"David-Kunz/gen.nvim",
opts = {
model = "codellama", -- The default model to use.
display_mode = "split", -- The display mode. Can be "float" or "split".
show_prompt = true, -- Shows the Prompt submitted to Ollama.
show_model = true, -- Displays which model you are using at the beginning of your chat session.
no_auto_close = false, -- Never closes the window automatically.
},
}

View File

@@ -0,0 +1,24 @@
-- The superior project management solution for neovim
-- https://github.com/ahmedkhalf/project.nvim
return {
"ahmedkhalf/project.nvim",
lazy = false,
keys = {
-- stylua: ignore
{ "<leader>p", ":Telescope projects<cr>", desc = "Search Projects" },
},
config = function()
require("project_nvim").setup({
active = true,
on_config_done = nil,
manual_mode = false,
detection_methods = { "pattern" },
patterns = { ".git", "Makefile", ".gitignore", "package.json", "!node_modules" },
show_hidden = false,
silent_chdir = true,
ignore_lsp = {},
datapath = vim.fn.stdpath("data"),
})
require("telescope").load_extension("projects")
end,
}

View File

@@ -0,0 +1,5 @@
-- Highlight columns in CSV files
-- https://github.com/mechatroner/rainbow_csv
return {
"mechatroner/rainbow_csv",
}

View File

@@ -0,0 +1,12 @@
-- Remote development in Neovim 🔥
-- https://github.com/amitds1997/remote-nvim.nvim?tab=readme-ov-file
return {
"amitds1997/remote-nvim.nvim",
version = "*", -- Pin to GitHub releases
dependencies = {
"nvim-lua/plenary.nvim", -- For standard functions
"MunifTanjim/nui.nvim", -- To build the plugin UI
"nvim-telescope/telescope.nvim", -- For picking b/w different remote methods
},
config = true,
}

View File

@@ -0,0 +1,33 @@
-- Create code images using the external silicon tool
-- https://github.com/michaelrommel/nvim-silicon
return {
"michaelrommel/nvim-silicon",
lazy = true,
cmd = "Silicon",
config = function()
require("silicon").setup({
font = "Fira Code=34;Noto Emoji=34",
theme = "Catppuccin-mocha",
background = "#68677b",
pad_horiz = 100,
pad_vert = 80,
no_round_corner = false,
no_window_controls = false,
no_line_number = false,
line_pad = 0,
tab_width = 2,
language = function()
return vim.bo.filetype
end,
shadow_blur_radius = 16,
shadow_offset_x = 8,
shadow_offset_y = 8,
shadow_color = "#100808",
gobble = true,
to_clipboard = true,
window_title = function()
return vim.fn.fnamemodify(vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf()), ":t")
end,
})
end,
}

View File

@@ -0,0 +1,36 @@
return {
"mrjones2014/smart-splits.nvim",
enabled = true,
event = "VeryLazy",
keys = {
{ "<leader>wr", "<cmd>SmartResizeMode<cr>", desc = "Toggle Smart Resize Mode" },
},
config = function()
require("smart-splits").setup({
ignored_filetypes = {
"nofile",
"quickfix",
"prompt",
},
ignored_buftypes = { "NvimTree" },
default_amount = 3,
at_edge = "wrap",
move_cursor_same_row = false,
resize_mode = {
quit_key = "<ESC>",
resize_keys = { "h", "j", "k", "l" },
silent = false,
hooks = {
on_enter = nil,
on_leave = nil,
},
},
ignored_events = {
"BufEnter",
"WinEnter",
},
multiplexer_integration = "tmux",
disable_multiplexer_nav_when_zoomed = true,
})
end,
}

View File

@@ -0,0 +1,10 @@
-- A tree view for symbols
-- https://github.com/simrat39/symbols-outline.nvim
return {
"simrat39/symbols-outline.nvim",
config = function()
require("symbols-outline").setup({
width = 25,
})
end,
}

View File

@@ -0,0 +1,5 @@
-- Table Mode for instant table creation
-- https://github.com/dhruvasagar/vim-table-mode
return {
"dhruvasagar/vim-table-mode",
}

View File

@@ -0,0 +1,48 @@
-- Tailwind CSS
return {
{
"neovim/nvim-lspconfig",
opts = {
servers = {
tailwindcss = {},
},
},
},
{
"NvChad/nvim-colorizer.lua",
opts = {
user_default_options = {
tailwind = true,
},
},
{
"hrsh7th/nvim-cmp",
dependencies = {
{ "roobert/tailwindcss-colorizer-cmp.nvim", config = true },
},
opts = function(_, opts)
-- original LazyVim kind icon formatter
local format_kinds = opts.formatting.format
opts.formatting.format = function(entry, item)
format_kinds(entry, item) -- add icons
return require("tailwindcss-colorizer-cmp").formatter(entry, item)
end
end,
},
"laytan/tailwind-sorter.nvim",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-lua/plenary.nvim",
},
build = "cd formatter && npm i && npm run build",
config = {
on_save_enabled = true,
on_save_pattern = { "*.html", "*.jsx", "*.tsx", "*.astro", "*.svelte" },
},
},
{
"luckasRanarison/tailwind-tools.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter" },
opts = {},
},
}

View File

@@ -0,0 +1,21 @@
-- Telescope extention to switch between Headlines
-- https://github.com/crispgm/telescope-heading.nvim
return {
"telescope.nvim",
dependencies = {
"crispgm/telescope-heading.nvim",
keys = {
{ ";h", "<cmd>Telescope heading<cr>", desc = "Headlines" },
},
opts = {
extensions = {
heading = {
treesitter = true,
},
},
},
config = function()
require("telescope").load_extension("heading")
end,
},
}

View File

@@ -0,0 +1,26 @@
-- Telescope extension for a File Browser
-- https://github.com/nvim-telescope/telescope-file-browser.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-file-browser.nvim",
keys = {
{
";t",
"<cmd>Telescope file_browser respect_gitignore=false hidden=true grouped=true<cr>",
desc = "File Browser",
},
},
opts = {
extensions = {
file_browser = {
theme = "ivy",
hijack_netrw = true,
},
},
},
config = function()
require("telescope").load_extension("file_browser")
end,
},
}

View File

@@ -0,0 +1,27 @@
-- Telescope extensionn that offers intelligent priorization
-- https://github.com/nvim-telescope/telescope-frecency.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-frecency.nvim",
dependencies = {
"kkharji/sqlite.lua",
},
keys = {
{ ";mr", "<cmd>Telescope frecency<cr>", desc = "Most recently used files" },
},
opts = {
extensions = {
frecency = {
show_scores = false,
show_unindexed = true,
ignore_patterns = { "*.git/*", "*/tmp/*" },
disable_devicons = false,
},
},
},
config = function()
require("telescope").load_extension("frecency")
end,
},
}

View File

@@ -0,0 +1,21 @@
-- Telescope extension for a FZY style sorter that is compiled
-- https://github.com/nvim-telescope/telescope-fzy-native.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-fzy-native.nvim",
opts = {
extensions = {
fzy_native = {
fuzzy = true,
override_generic_sorter = true,
override_file_sorter = true,
case_mode = "smart_case",
},
},
},
config = function()
require("telescope").load_extension("fzy_native")
end,
},
}

View File

@@ -0,0 +1,15 @@
-- Telescope extension to integrate with GitHub CLI
-- https://github.com/nvim-telescope/telescope-github.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope-github.nvim",
keys = {
{ ";p", "<cmd>Telescope gh pull_request<cr>", desc = "GitHub Pull Requests" },
},
config = function()
require("telescope").load_extension("gh")
end,
},
}

View File

@@ -0,0 +1,12 @@
-- Import modules with ease
-- https://github.com/piersolenski/telescope-import.nvim
return {
"piersolenski/telescope-import.nvim",
dependencies = "nvim-telescope/telescope.nvim",
keys = {
{ ";i", "<cmd>Telescope import<cr>", desc = "Import Modules" },
},
config = function()
require("telescope").load_extension("import")
end,
}

View File

@@ -0,0 +1,21 @@
-- Telescope extension to search with arguments
-- https://github.com/nvim-telescope/telescope-live-grep-args.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-live-grep-args.nvim",
opts = {
extensions = {
live_grep_args = {
auto_quoting = true,
},
},
},
keys = {
{ ";s", "<cmd>Telescope live_grep_args<cr>", desc = "Live Grep" },
},
config = function()
require("telescope").load_extension("live_grep_args")
end,
},
}

View File

@@ -0,0 +1,14 @@
-- Telescope plugin to search the node_modules directory
-- https://github.com/nvim-telescope/telescope-node-modules.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-node-modules.nvim",
keys = {
{ ";N", "<cmd>Telescope node_modules list<cr>", desc = "Node Modules" },
},
config = function()
require("telescope").load_extension("node_modules")
end,
},
}

View File

@@ -0,0 +1,16 @@
-- Neovim plugin for fast file-finding
-- https://github.com/danielfalk/smart-open.nvim
return {
"danielfalk/smart-open.nvim",
branch = "0.2.x",
keys = {
{ ";o", "<cmd>Telescope smart_open<cr>", desc = "Smart Open" },
},
config = function()
require("telescope").load_extension("smart_open")
end,
dependencies = {
"kkharji/sqlite.lua",
{ "nvim-telescope/telescope-fzy-native.nvim" },
},
}

View File

@@ -0,0 +1,26 @@
-- Telescope extension to view and search the undo tree
-- https://github.com/debugloop/telescope-undo.nvim
return {
"nvim-telescope/telescope.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"debugloop/telescope-undo.nvim",
},
keys = {
{ ";u", "<cmd>Telescope undo<cr>", desc = "Undo Tree" },
},
opts = {
extensions = {
undo = {
side_by_side = true,
layout_strategy = "vertical",
layout_config = {
preview_height = 0.8,
},
},
},
},
config = function()
require("telescope").load_extension("undo")
end,
}

View File

@@ -0,0 +1,19 @@
-- Find, Filter, Preview, Pick
-- https://github.com/nvim-telescope/telescope.nvim
return {
"telescope.nvim",
keys = {
{ ";a", "<cmd>Telescope find_files hidden=true<cr>", desc = "Find Files (hidden)" },
{ ";b", "<cmd>Telescope buffers previewer=false shorten_path=true theme=dropdown<cr>", desc = "Buffers" },
{ ";cs", "<cmd>Telescope spell_suggest<cr>", desc = "Spell Suggest" },
{ ";d", "<cmd>Telescope diagnostics<cr>", desc = "Diagnostics" },
{ ";f", "<cmd>Telescope find_files<cr>", desc = "Find Files" },
{ ";n", "<cmd>Telescope notify<cr>", desc = "Notify" },
{ ";r", "<cmd>Telescope resume<cr>", desc = "Resume" },
{ "<C-p>", "<cmd>Telescope find_files<cr>", desc = "Find Files" },
{ "<C-t>", "<cmd>Telescope<cr>", desc = "Telescope" },
{ "<M-b>", "<cmd>Telescope buffers previewer=false shorten_path=true theme=dropdown<cr>", desc = "Buffers" },
{ "<M-p>", "<cmd>Telescope find_files hidden=true<cr>", desc = "Find Files (hidden)" },
{ "\\\\", "<cmd>Telescope buffers previewer=false shorten_path=true theme=dropdown<cr>", desc = "Buffers" },
},
}

View File

@@ -0,0 +1,28 @@
-- TMUX commands manager
-- https://github.com/otavioschwanck/tmux-awesome-manager.nvim
return {
"otavioschwanck/tmux-awesome-manager.nvim",
keys = {
-- stylua: ignore
{ "<leader>sT", function() vim.cmd(":Telescope tmux-awesome-manager list_terms") end, desc = "TMUX Awesome Manager" },
},
config = function()
local tmux = require("tmux-awesome-manager")
tmux.setup({
per_project_commands = {
astro = { { cmd = "pnpm dev", name = "Astro Dev" } },
},
session_name = "Neovim Terminals",
project_open_as = "window",
default_size = "30%",
open_new_as = "window",
})
tmux.run_wk({ cmd = "pnpm dev", name = "Astro Development Server" })
tmux.run_wk({ cmd = "yarn develop", name = "Brewery Server" })
tmux.run_wk({ cmd = "MD=${PWD}/packages/xdl/ yarn dev", name = "Brewery Fast Server" })
tmux.run_wk({ cmd = "yarn test:unit -u", name = "Brewery Unit Tests" })
end,
}

View File

@@ -0,0 +1,6 @@
-- Seamless navigation between tmux panes and vim splits
-- https://github.com/christoomey/vim-tmux-navigator
return {
"christoomey/vim-tmux-navigator",
event = "VeryLazy",
}

Some files were not shown because too many files have changed in this diff Show More