Compare commits
72 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a517625e1d | |||
| 95828a8abe | |||
| 75a5dd8f9c | |||
| d9157328ef | |||
| 9c871ccf40 | |||
| ce4238004b | |||
| 4c8248f323 | |||
| f77acb5f33 | |||
| 1d13bc8a07 | |||
| 353b462aaf | |||
| a806dc285f | |||
| 8ce88a35bc | |||
| 918d3654c5 | |||
| f434feba89 | |||
| f2b10ec900 | |||
| 7526d2795b | |||
| 3e7fce3e14 | |||
| 69e5a05062 | |||
| ea80295aee | |||
| 018d32bfbb | |||
| fb6302a74d | |||
| 68b0466153 | |||
| 2e011ea5e5 | |||
| 92170fa726 | |||
| 404091736f | |||
| 94d2979dfe | |||
| 6decc3c2f4 | |||
| f3c9154822 | |||
| 6b1f619fed | |||
| e9982ccc25 | |||
| ba3510d2a6 | |||
| 3c4df59b53 | |||
| 413d614440 | |||
| 126a7eba9d | |||
| 7c77b19b23 | |||
| acc5a78c30 | |||
| 8628becd46 | |||
| 8b69d3665f | |||
| 88fe6627c0 | |||
| 1659e1b09e | |||
| 5a2e823bca | |||
| e407d58cb1 | |||
| d87b6964b5 | |||
| 2ac5fc926a | |||
| 9e53ed6666 | |||
| 35b951e1b6 | |||
| d3465ff5cd | |||
| f41c99a565 | |||
| db5175472a | |||
| ceb03fada6 | |||
| 56468e82c5 | |||
| 8b359f0b34 | |||
| 8107eac37c | |||
| a0ecbb3dc8 | |||
| 3d77af4231 | |||
| 0a39f5e33e | |||
| 50b00eb8b6 | |||
| c894fa32a7 | |||
| defb94df57 | |||
| ff64a15776 | |||
| bcbd05db9f | |||
| 22de8b4674 | |||
| 63ba472698 | |||
| 4d86e52dca | |||
| b579384ef2 | |||
| 8834ca26cc | |||
| cbbee45c48 | |||
| 6f5292d290 | |||
| c864505309 | |||
| 654bd0038d | |||
| 24bbfbda9f | |||
| d7a6942b3c |
+1
-8
@@ -1,8 +1 @@
|
||||
tt.*
|
||||
.tests
|
||||
doc/tags
|
||||
debug
|
||||
.repro
|
||||
foo.*
|
||||
*.log
|
||||
data
|
||||
lazy-lock.json
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": true
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
column_width = 120
|
||||
line_endings = "Unix"
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
quote_style = "AutoPreferDouble"
|
||||
call_parentheses = "None"
|
||||
@@ -1,201 +0,0 @@
|
||||
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.
|
||||
@@ -1,4 +1,21 @@
|
||||
# 💤 LazyVim
|
||||
### The infamous windows/linux Neovim config
|
||||
|
||||
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
|
||||
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
|
||||
## windows
|
||||
|
||||
# Powershell
|
||||
|
||||
Make use of the powershell script to solve a bunch of issues beforehand.
|
||||
|
||||
```pwsh
|
||||
.\scripts\windows_dependencies.ps1
|
||||
```
|
||||
|
||||
To Do powershell script:
|
||||
|
||||
- [] Add binaries to PATH
|
||||
|
||||
## Remove lines containing regex
|
||||
|
||||
```
|
||||
:%g/{regex}/d
|
||||
```
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
function! neoformat#formatters#qml#enabled() abort
|
||||
return ['qmlformat']
|
||||
endfunction
|
||||
|
||||
function! neoformat#formatters#qml#qmlformat() abort
|
||||
return {
|
||||
\ 'exe': '/usr/lib/qt6/bin/qmlformat',
|
||||
\ 'args': ['-t', '-n', '--objects-spacing', '--functions-spacing', '-i'],
|
||||
\ 'replace': 1,
|
||||
\ 'stderr': 1,
|
||||
\ 'stdin': 0
|
||||
\ }
|
||||
endfunction
|
||||
@@ -0,0 +1,2 @@
|
||||
let it_SI = "\e[5 q"
|
||||
let &t_EI = "\e[2 q"
|
||||
@@ -0,0 +1,5 @@
|
||||
local ionfig = {
|
||||
cmd = {'/usr/bin/jdtls'},
|
||||
root_dir = vim.fs.dirname(vim.fs.find({'gradlew', '.git', 'mvnw'}, { upward = true })[1]),
|
||||
}
|
||||
require('jdtls').start_or_attach(config)
|
||||
@@ -0,0 +1,11 @@
|
||||
local gen_hook = MiniSplitjoin.gen_hook
|
||||
|
||||
local curly = { brackets = { '%b{}' }}
|
||||
local add_comma_curly = gen_hook.add_trailing_separator(curly)
|
||||
local remove_comma_curly = gen_hook.del_trailing_separator(curly)
|
||||
local pad_curly = gen_hook.pad_brackets(curly)
|
||||
|
||||
vim.b.minisplitjoin_config = {
|
||||
split = { hooks_post = { add_comma_curly }},
|
||||
join = { hooks_post = { remove_comma_curly, pad_curly }},
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
local gen_hook = MiniSplitjoin.gen_hook
|
||||
|
||||
local curly = { brackets = { "%b{}" }, separator = ";" }
|
||||
local curly_semi = { brackets = { "%b{}" }, separator = ";" }
|
||||
local add_semicolon_curly = gen_hook.add_trailing_separator(curly)
|
||||
local remove_semicolon_curly = gen_hook.del_trailing_separator(curly)
|
||||
local pad_curly = gen_hook.pad_brackets(curly_semi)
|
||||
|
||||
vim.b.minisplitjoin_config = {
|
||||
split = { hooks_post = { remove_semicolon_curly } },
|
||||
join = { hooks_pre = { add_semicolon_curly }, hooks_post = { pad_curly } },
|
||||
}
|
||||
@@ -1,2 +1,29 @@
|
||||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||
require("config.lazy")
|
||||
require("options")
|
||||
require("globals")
|
||||
require("mappings")
|
||||
require("autocmd")
|
||||
require("minimodules").load_modules()
|
||||
vim.cmd('source ' .. vim.fn.stdpath("config") .. "/cursor.vim")
|
||||
|
||||
if vim.g.neovide then
|
||||
require("config.neovide")
|
||||
end
|
||||
|
||||
vim.filetype.add({
|
||||
pattern = {
|
||||
[".*/hypr/.*%.conf"] = "hyprlang",
|
||||
[".*/uwsm/env.*"] = "zsh",
|
||||
}
|
||||
})
|
||||
|
||||
if vim.env.PROF then
|
||||
local snacks = vim.fn.stdpath("data") .. "/lazy/snacks.nvim"
|
||||
|
||||
vim.opt.rtp:append( snacks )
|
||||
require("snacks.profiler").startup({
|
||||
startup = {
|
||||
event = "UIEnter",
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
{
|
||||
"CopilotChat.nvim": { "branch": "main", "commit": "23162ada224e858d0d60bbbf2a35f9b6c98427ce" },
|
||||
"LazyVim": { "branch": "main", "commit": "3f034d0a7f58031123300309f2efd3bb0356ee21" },
|
||||
"LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" },
|
||||
"SchemaStore.nvim": { "branch": "main", "commit": "e659e0c6ca06727ed898aaaeea3850f528898684" },
|
||||
"auto-session": { "branch": "main", "commit": "0a1318557c03845f2e0dde347bc54507d1d8c34d" },
|
||||
"base46-colors": { "branch": "main", "commit": "131ca742f6e8d1eb4c938a2519a94840ba129c2f" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||
"catppuccin": { "branch": "main", "commit": "5b5e3aef9ad7af84f463d17b5479f06b87d5c429" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
|
||||
"cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"conform.nvim": { "branch": "master", "commit": "b1a75324ddf96b7bb84963a297b1ed334db087c0" },
|
||||
"copilot-cmp": { "branch": "master", "commit": "15fc12af3d0109fa76b60b5cffa1373697e261d1" },
|
||||
"copilot.lua": { "branch": "master", "commit": "13ae71875457d25b92cb13cb43aae5a43972dd36" },
|
||||
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
|
||||
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "3c76f7fabac723aa682365ef782f88a83ccdb4ac" },
|
||||
"grug-far.nvim": { "branch": "main", "commit": "9411a99390014231753bbb7a2afe6886fda99257" },
|
||||
"harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "1517caa8fff05e4b4999857319d3b0609a7f57fa" },
|
||||
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
|
||||
"mason-nvim-dap.nvim": { "branch": "main", "commit": "ea387e0819ab189d536bb4067e4d8ece3801a292" },
|
||||
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
|
||||
"mini.ai": { "branch": "main", "commit": "e139eb1101beb0250fea322f8c07a42f0f175688" },
|
||||
"mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" },
|
||||
"mini.pairs": { "branch": "main", "commit": "69864a2efb36c030877421634487fd90db1e4298" },
|
||||
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
|
||||
"nui.nvim": { "branch": "main", "commit": "8d3bce9764e627b62b07424e0df77f680d47ffdb" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "059e89495b3ec09395262f16b1ad441a38081d04" },
|
||||
"nvim-dap": { "branch": "master", "commit": "7aade9e99bef5f0735cf966e715b3ce45515d786" },
|
||||
"nvim-dap-ui": { "branch": "master", "commit": "bc81f8d3440aede116f821114547a476b082b319" },
|
||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "df66808cd78b5a97576bbaeee95ed5ca385a9750" },
|
||||
"nvim-lint": { "branch": "master", "commit": "81e8ba7655cc4395b1092ef4e1b6e83f54cd54ad" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "40f120c10ea4b87311175539a183c3b75eab95a3" },
|
||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||
"nvim-snippets": { "branch": "main", "commit": "56b4052f71220144689caaa2e5b66222ba5661eb" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "997288c55253e27f782d991099490f80205d65bf" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "9937e5e356e5b227ec56d83d0a9d0a0f6bc9cad4" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
|
||||
"persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||
"presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" },
|
||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "de39919a57e1a40a4c7dc5bae0de276f9c616ef3" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "d2285137fa4fbc0b4152cb444008166962b727b5" },
|
||||
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
|
||||
"tmux.nvim": { "branch": "main", "commit": "2c1c3be0ef287073cef963f2aefa31a15c8b9cd8" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
|
||||
"ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" },
|
||||
"undotree": { "branch": "main", "commit": "eab459ab87dd249617b5f7187bb69e614a083047" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
|
||||
}
|
||||
+1
-9
@@ -1,15 +1,7 @@
|
||||
{
|
||||
"extras": [
|
||||
"lazyvim.plugins.extras.ai.copilot",
|
||||
"lazyvim.plugins.extras.ai.copilot-chat",
|
||||
"lazyvim.plugins.extras.coding.nvim-cmp",
|
||||
"lazyvim.plugins.extras.dap.core",
|
||||
"lazyvim.plugins.extras.lang.json",
|
||||
"lazyvim.plugins.extras.lang.markdown",
|
||||
"lazyvim.plugins.extras.lang.toml",
|
||||
"lazyvim.plugins.extras.vscode"
|
||||
|
||||
],
|
||||
"install_version": 8,
|
||||
"news": {
|
||||
"NEWS.md": "10960"
|
||||
},
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
local M = {}
|
||||
|
||||
M.icons = {
|
||||
misc = {
|
||||
dots = "",
|
||||
},
|
||||
ft = {
|
||||
octo = " ",
|
||||
gh = " ",
|
||||
["markdown.gh"] = " ",
|
||||
},
|
||||
dap = {
|
||||
Stopped = { " ", "DiagnosticWarn", "DapStoppedLine" },
|
||||
Breakpoint = " ",
|
||||
BreakpointCondition = " ",
|
||||
BreakpointRejected = { " ", "DiagnosticError" },
|
||||
LogPoint = ".>",
|
||||
},
|
||||
diagnostics = {
|
||||
Error = " ",
|
||||
Warn = " ",
|
||||
Hint = " ",
|
||||
Info = " ",
|
||||
},
|
||||
git = {
|
||||
added = " ",
|
||||
modified = " ",
|
||||
removed = " ",
|
||||
},
|
||||
kinds = {
|
||||
Array = " ",
|
||||
Boolean = " ",
|
||||
Class = " ",
|
||||
Codeium = " ",
|
||||
Color = " ",
|
||||
Control = " ",
|
||||
Collapsed = " ",
|
||||
Constant = " ",
|
||||
Constructor = " ",
|
||||
Copilot = " ",
|
||||
Enum = " ",
|
||||
EnumMember = " ",
|
||||
Event = " ",
|
||||
Field = " ",
|
||||
File = " ",
|
||||
Folder = " ",
|
||||
Function = " ",
|
||||
Interface = " ",
|
||||
Key = " ",
|
||||
Keyword = " ",
|
||||
Method = " ",
|
||||
Module = " ",
|
||||
Namespace = " ",
|
||||
Null = " ",
|
||||
Number = " ",
|
||||
Object = " ",
|
||||
Operator = " ",
|
||||
Package = " ",
|
||||
Property = " ",
|
||||
Reference = " ",
|
||||
Snippet = " ",
|
||||
String = " ",
|
||||
Struct = " ",
|
||||
Supermaven = " ",
|
||||
TabNine = " ",
|
||||
Text = " ",
|
||||
TypeParameter = " ",
|
||||
Unit = " ",
|
||||
Value = " ",
|
||||
Variable = " ",
|
||||
},
|
||||
}
|
||||
|
||||
return M
|
||||
@@ -0,0 +1,42 @@
|
||||
local autocmd = vim.api.nvim_create_autocmd
|
||||
|
||||
autocmd("LspAttach", {
|
||||
callback = function(args)
|
||||
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
||||
if client and vim.lsp.document_color and vim.lsp.document_color.enable then
|
||||
vim.lsp.document_color.enable(false, args.buf, { "background" })
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
autocmd("VimLeave", {
|
||||
command = "set guicursor=a:ver25-Cursor",
|
||||
})
|
||||
|
||||
autocmd("BufWritePre", {
|
||||
callback = function()
|
||||
local ok = pcall(function()
|
||||
vim.cmd "undojoin"
|
||||
end)
|
||||
vim.cmd "Neoformat"
|
||||
end,
|
||||
})
|
||||
|
||||
-- fWindows
|
||||
autocmd("VimLeavePre", {
|
||||
group = vim.api.nvim_create_augroup('fuck_shada_temp', { clear = true }),
|
||||
pattern = { '*' },
|
||||
callback = function()
|
||||
local status = 0
|
||||
for _, f in ipairs(vim.fn.globpath(vim.fn.stdpath('data') .. '/shada', '*tmp*', false, true)) do
|
||||
if vim.tbl_isempty(vim.fn.readfile(f)) then
|
||||
status = status + vim.fn.delete(f)
|
||||
end
|
||||
end
|
||||
if status ~= 0 then
|
||||
vim.notify('Could not delete empty temporary ShaDa files.', vim.log.levels.ERROR)
|
||||
vim.fn.getchar()
|
||||
end
|
||||
end,
|
||||
desc = "Delete empty temp ShaDa files"
|
||||
})
|
||||
@@ -0,0 +1,73 @@
|
||||
require("actions-preview").setup {
|
||||
-- options for vim.diff(): https://neovim.io/doc/user/lua.html#vim.diff()
|
||||
diff = {
|
||||
ctxlen = 3,
|
||||
},
|
||||
|
||||
highlight_command = {
|
||||
-- require("actions-preview.highlight").delta(),
|
||||
-- require("actions-preview.highlight").diff_so_fancy(),
|
||||
-- require("actions-preview.highlight").diff_highlight(),
|
||||
},
|
||||
|
||||
-- priority list of preferred backend
|
||||
backend = { "snacks", "nui" },
|
||||
|
||||
-- options related to telescope.nvim
|
||||
telescope = vim.tbl_extend(
|
||||
"force",
|
||||
require("telescope.themes").get_dropdown(),
|
||||
-- a table for customizing content
|
||||
{
|
||||
-- a function to make a table containing the values to be displayed.
|
||||
-- fun(action: Action): { title: string, client_name: string|nil }
|
||||
make_value = nil,
|
||||
|
||||
-- a function to make a function to be used in `display` of a entry.
|
||||
-- see also `:h telescope.make_entry` and `:h telescope.pickers.entry_display`.
|
||||
-- fun(values: { index: integer, action: Action, title: string, client_name: string }[]): function
|
||||
make_make_display = nil,
|
||||
}
|
||||
),
|
||||
|
||||
-- options for nui.nvim components
|
||||
nui = {
|
||||
-- component direction. "col" or "row"
|
||||
dir = "col",
|
||||
-- keymap for selection component: https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/menu#keymap
|
||||
keymap = nil,
|
||||
-- options for nui Layout component: https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/layout
|
||||
layout = {
|
||||
position = "50%",
|
||||
size = {
|
||||
width = "60%",
|
||||
height = "100%",
|
||||
},
|
||||
min_width = 40,
|
||||
min_height = 10,
|
||||
relative = "editor",
|
||||
},
|
||||
-- options for preview area: https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/popup
|
||||
preview = {
|
||||
size = "80%",
|
||||
border = {
|
||||
style = "rounded",
|
||||
padding = { 0, 1 },
|
||||
},
|
||||
},
|
||||
-- options for selection area: https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/menu
|
||||
select = {
|
||||
size = "20%",
|
||||
border = {
|
||||
style = "rounded",
|
||||
padding = { 0, 1 },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
--- options for snacks picker
|
||||
---@type snacks.picker.Config
|
||||
snacks = {
|
||||
layout = { rpreset = "default" },
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
local is_windows = package.config:sub(1,1) == "\\"
|
||||
require("copilot").setup({
|
||||
|
||||
panel = {
|
||||
enabled = true,
|
||||
auto_refresh = true,
|
||||
keymap = {
|
||||
jump_prev = "[[",
|
||||
jump_next = "]]",
|
||||
accept = "<CR>",
|
||||
refresh = "gr",
|
||||
open = "<M-CR>"
|
||||
},
|
||||
layout = {
|
||||
position = "bottom", -- | top | left | right | horizontal | vertical
|
||||
ratio = 0.4
|
||||
},
|
||||
},
|
||||
suggestion = {
|
||||
enabled = true,
|
||||
auto_trigger = true,
|
||||
hide_during_completion = false,
|
||||
debounce = 75,
|
||||
keymap = {
|
||||
accept = is_windows and "<A-a>" or "<A-a>",
|
||||
accept_word = false,
|
||||
accept_line = false,
|
||||
next = "<M-]>",
|
||||
prev = "<M-[>",
|
||||
dismiss = "<C-]>",
|
||||
},
|
||||
},
|
||||
filetypes = {
|
||||
-- yaml = false,
|
||||
-- markdown = false,
|
||||
-- help = false,
|
||||
-- gitcommit = false,
|
||||
-- gitrebase = false,
|
||||
-- hgcommit = false,
|
||||
-- svn = false,
|
||||
-- cvs = false,
|
||||
-- python = false,
|
||||
-- html = false,
|
||||
-- css = false,
|
||||
-- sh = false,
|
||||
-- tex = false,
|
||||
-- typescript = false,
|
||||
-- java = false,
|
||||
-- swift = false,
|
||||
-- cpp = false,
|
||||
-- hypr = false,
|
||||
-- ["."] = false,
|
||||
},
|
||||
copilot_node_command = 'node',
|
||||
server_opts_overrides = {},
|
||||
vim.api.nvim_create_autocmd({ "VimLeavePre" }, {
|
||||
callback = function()
|
||||
vim.cmd( "CopilotChatSave AutoSave" )
|
||||
end,
|
||||
}),
|
||||
})
|
||||
@@ -0,0 +1,4 @@
|
||||
require("copilot_cmp").setup {
|
||||
event = { "InsertEnter", "LspAttach" },
|
||||
fix_pairs = true,
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
require("CopilotChat").setup {
|
||||
-- system_prompt = "You are an assistant helping the user with whatever they need, but you are also a bit of an asshole.",
|
||||
prompts = {
|
||||
},
|
||||
|
||||
headers = {
|
||||
user = ' You: ',
|
||||
assistant = ' Copilot: ',
|
||||
tool = ' Tool: ',
|
||||
},
|
||||
|
||||
temperature = 0.2,
|
||||
|
||||
providers = {
|
||||
tabby = {
|
||||
prepare_input = require('CopilotChat.config.providers').copilot.prepare_input,
|
||||
prepare_output = require('CopilotChat.config.providers').copilot.prepare_output,
|
||||
|
||||
get_models = function(headers)
|
||||
local response, err = require('CopilotChat.utils').curl_get('http://localhost:5000/v1/models', {
|
||||
headers = headers,
|
||||
json_response = true
|
||||
})
|
||||
|
||||
if err then
|
||||
error(err)
|
||||
end
|
||||
|
||||
return vim.tbl_map(function(model)
|
||||
return {
|
||||
id = model.id,
|
||||
name = model.id,
|
||||
}
|
||||
end, response.body.data)
|
||||
end,
|
||||
|
||||
get_url = function()
|
||||
return 'http://localhost:5000/v1/chat/completions'
|
||||
end,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
local autocmd = vim.api.nvim_create_autocmd
|
||||
|
||||
-- autocmd({ "BufEnter", "QuitPre" }, {
|
||||
-- nested = false,
|
||||
-- callback = function(e)
|
||||
-- local tree = require("nvim-tree.api").tree
|
||||
--
|
||||
-- -- Nothing to do if tree is not opened
|
||||
-- if not tree.is_visible() then
|
||||
-- return
|
||||
-- end
|
||||
--
|
||||
-- local winCount = 0
|
||||
-- for _, winId in ipairs(vim.api.nvim_list_wins()) do
|
||||
-- if vim.api.nvim_win_get_config(winId).focusable then
|
||||
-- winCount = winCount + 1
|
||||
-- end
|
||||
-- end
|
||||
--
|
||||
-- -- We want to quit and only one window besides tree is left
|
||||
-- if e.event == "QuitPre" and winCount == 2 then
|
||||
-- vim.api.nvim_cmd({ cmd = "qall" }, {})
|
||||
-- end
|
||||
--
|
||||
-- -- :bd was probably issued an only tree window is left
|
||||
-- -- Behave as if tree was closed (see `:h :bd`)
|
||||
-- if e.event == "BufEnter" and winCount == 1 then
|
||||
-- -- Required to avoid "Vim:E444: Cannot close last window"
|
||||
-- vim.defer_fn(function()
|
||||
-- -- close nvim-tree: will go to the last buffer used before closing
|
||||
-- tree.toggle({ find_file = true, focus = true })
|
||||
-- -- re-open nivm-tree
|
||||
-- tree.toggle({ find_file = true, focus = false })
|
||||
-- end, 10)
|
||||
-- end
|
||||
-- end,
|
||||
-- })
|
||||
|
||||
autocmd("VimEnter", {
|
||||
callback = function()
|
||||
--NVIM_ENTER=1
|
||||
vim.cmd([[call chansend(v:stderr, "\033]1337;SetUserVar=NVIM_ENTER=MQ==\007")]])
|
||||
end,
|
||||
})
|
||||
|
||||
autocmd("VimLeavePre", {
|
||||
callback = function()
|
||||
--NVIM_ENTER=0
|
||||
vim.cmd([[call chansend(v:stderr, "\033]1337;SetUserVar=NVIM_ENTER=MA==\007")]])
|
||||
end,
|
||||
})
|
||||
|
||||
autocmd("VimLeave", {
|
||||
pattern = "*",
|
||||
command = "set guicursor=a:ver25",
|
||||
})
|
||||
@@ -0,0 +1,3 @@
|
||||
local npairs = require('nvim-autopairs')
|
||||
|
||||
npairs.setup({})
|
||||
@@ -0,0 +1,38 @@
|
||||
require("auto-session").setup ({
|
||||
{
|
||||
enabled = true,
|
||||
root_dir = vim.fn.stdpath "data" .. "/sessions/",
|
||||
auto_save = true,
|
||||
auto_restore = true,
|
||||
auto_create = true,
|
||||
suppressed_dirs = nil,
|
||||
allowed_dirs = nil,
|
||||
auto_restore_last_session = false,
|
||||
use_git_branch = false,
|
||||
lazy_support = true,
|
||||
bypass_save_filetypes = nil,
|
||||
close_unsupported_windows = true,
|
||||
args_allow_single_directory = true,
|
||||
args_allow_files_auto_save = false,
|
||||
continue_restore_on_error = true,
|
||||
show_auto_restore_notif = false,
|
||||
cwd_change_handling = false,
|
||||
lsp_stop_on_restore = false,
|
||||
log_level = "error",
|
||||
session_lens = {
|
||||
load_on_setup = true,
|
||||
theme_conf = {
|
||||
},
|
||||
previewer = false,
|
||||
mappings = {
|
||||
delete_session = { "i", "<C-D>" },
|
||||
alternate_session = { "i", "<C-S>" },
|
||||
copy_session = { "i", "<C-Y>" },
|
||||
},
|
||||
session_control = {
|
||||
control_dir = vim.fn.stdpath "data" .. "/auto_session/",
|
||||
control_filename = "session_control.json",
|
||||
},
|
||||
},
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,34 @@
|
||||
require("bufferline").setup ({
|
||||
options = {
|
||||
diagnostics = "nvim_lsp",
|
||||
diagnostics_indicator = function(count, level, diagnostics_dict, context)
|
||||
local s = " "
|
||||
for e, n in pairs(diagnostics_dict) do
|
||||
local sym = e == "error" and " "
|
||||
or (e == "warning" and " " or " ")
|
||||
s = s .. n .. sym
|
||||
end
|
||||
return s
|
||||
end,
|
||||
show_close_icon = false,
|
||||
show_buffer_close_icons = false,
|
||||
always_show_bufferline = true,
|
||||
offsets = {
|
||||
{
|
||||
filetype = "NvimTree",
|
||||
text = "Explorer",
|
||||
text_align = "center",
|
||||
},
|
||||
{
|
||||
filetype = "snacks_layout_box",
|
||||
},
|
||||
},
|
||||
vim.api.nvim_create_autocmd({ "BufAdd", "BufDelete" }, {
|
||||
callback = function()
|
||||
vim.schedule(function()
|
||||
pcall(nvim_bufferline)
|
||||
end)
|
||||
end,
|
||||
})
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,106 @@
|
||||
local dap = require('dap')
|
||||
dap.adapters.python = function(cb, config)
|
||||
if config.request == 'attach' then
|
||||
---@diagnostic disable-next-line: undefined-field
|
||||
local port = (config.connect or config).port
|
||||
---@diagnostic disable-next-line: undefined-field
|
||||
local host = (config.connect or config).host or '127.0.0.1'
|
||||
cb({
|
||||
type = 'server',
|
||||
port = assert(port, '`connect.port` is required for a python `attach` configuration'),
|
||||
host = host,
|
||||
options = {
|
||||
source_filetype = 'python',
|
||||
},
|
||||
})
|
||||
else
|
||||
cb({
|
||||
type = 'executable',
|
||||
command = 'path/to/virtualenvs/debugpy/bin/python',
|
||||
args = { '-m', 'debugpy.adapter' },
|
||||
options = {
|
||||
source_filetype = 'python',
|
||||
},
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
dap.configurations.python = {
|
||||
{
|
||||
-- The first three options are required by nvim-dap
|
||||
type = 'python'; -- the type here established the link to the adapter definition: `dap.adapters.python`
|
||||
request = 'launch';
|
||||
name = "Launch file";
|
||||
|
||||
-- Options below are for debugpy, see https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings for supported options
|
||||
|
||||
program = "${file}"; -- This configuration will launch the current file if used.
|
||||
pythonPath = function()
|
||||
-- debugpy supports launching an application with a different interpreter then the one used to launch debugpy itself.
|
||||
-- The code below looks for a `venv` or `.venv` folder in the current directly and uses the python within.
|
||||
-- You could adapt this - to for example use the `VIRTUAL_ENV` environment variable.
|
||||
local cwd = vim.fn.getcwd()
|
||||
if vim.fn.executable(cwd .. '/venv/bin/python') == 1 then
|
||||
return cwd .. '/venv/bin/python'
|
||||
elseif vim.fn.executable(cwd .. '/.venv/bin/python') == 1 then
|
||||
return cwd .. '/.venv/bin/python'
|
||||
else
|
||||
return '/home/zach/miniconda3/bin/python'
|
||||
end
|
||||
end;
|
||||
},
|
||||
}
|
||||
|
||||
dap.adapters.lldb = {
|
||||
type = 'executable',
|
||||
command = '/usr/bin/lldb-vscode', -- adjust as needed, must be absolute path
|
||||
name = 'lldb'
|
||||
}
|
||||
|
||||
dap.configurations.cpp = {
|
||||
{
|
||||
name = 'Launch',
|
||||
type = 'lldb',
|
||||
request = 'launch',
|
||||
program = function()
|
||||
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
||||
end,
|
||||
cwd = '${workspaceFolder}',
|
||||
stopOnEntry = false,
|
||||
args = {},
|
||||
|
||||
-- 💀
|
||||
-- if you change `runInTerminal` to true, you might need to change the yama/ptrace_scope setting:
|
||||
--
|
||||
-- echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
|
||||
--
|
||||
-- Otherwise you might get the following error:
|
||||
--
|
||||
-- Error on launch: Failed to attach to the target process
|
||||
--
|
||||
-- But you should be aware of the implications:
|
||||
-- https://www.kernel.org/doc/html/latest/admin-guide/LSM/Yama.html
|
||||
-- runInTerminal = false,
|
||||
},
|
||||
}
|
||||
|
||||
dap.adapters["pwa-node"] = {
|
||||
type = "server",
|
||||
host = "localhost",
|
||||
port = "${port}",
|
||||
executable = {
|
||||
command = "node",
|
||||
-- 💀 Make sure to update this path to point to your installation
|
||||
args = {"/home/zach/.config/nvim/java-dap/js-debug/src/dapDebugServer.js", "${port}"},
|
||||
}
|
||||
}
|
||||
|
||||
dap.configurations.javascript = {
|
||||
{
|
||||
type = "pwa-node",
|
||||
request = "launch",
|
||||
name = "Launch file",
|
||||
program = "${file}",
|
||||
cwd = "${workspaceFolder}",
|
||||
},
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
vim.keymap.del("n", "<leader>ur")
|
||||
vim.keymap.del("n", "<leader>uf")
|
||||
vim.keymap.del("n", "<leader>uF")
|
||||
vim.keymap.del("n", "<leader>us")
|
||||
vim.keymap.del("n", "<leader>uw")
|
||||
vim.keymap.del("n", "<leader>uL")
|
||||
vim.keymap.del("n", "<leader>ud")
|
||||
vim.keymap.del("n", "<leader>ul")
|
||||
vim.keymap.del("n", "<leader>uc")
|
||||
vim.keymap.del("n", "<leader>uA")
|
||||
vim.keymap.del("n", "<leader>uT")
|
||||
vim.keymap.del("n", "<leader>ub")
|
||||
vim.keymap.del("n", "<leader>uD")
|
||||
vim.keymap.del("n", "<leader>ua")
|
||||
vim.keymap.del("n", "<leader>ug")
|
||||
-- vim.keymap.del("n", "<leader>uG")
|
||||
vim.keymap.del("n", "<leader>up")
|
||||
vim.keymap.del("n", "<leader>uS")
|
||||
vim.keymap.del("n", "<leader>uh")
|
||||
vim.keymap.del("n", "<leader>ui")
|
||||
vim.keymap.del("n", "<leader>uI")
|
||||
vim.keymap.del("n", "<leader>uZ")
|
||||
vim.keymap.del("n", "<leader>uz")
|
||||
@@ -0,0 +1 @@
|
||||
require("tiny-inline-diagnostic").setup({})
|
||||
@@ -0,0 +1,40 @@
|
||||
local cmp_kinds = {
|
||||
Text = ' ',
|
||||
Method = ' ',
|
||||
Function = ' ',
|
||||
Constructor = ' ',
|
||||
Field = ' ',
|
||||
Variable = ' ',
|
||||
Class = ' ',
|
||||
Interface = ' ',
|
||||
Module = ' ',
|
||||
Property = ' ',
|
||||
Unit = ' ',
|
||||
Value = ' ',
|
||||
Enum = ' ',
|
||||
Keyword = ' ',
|
||||
Snippet = ' ',
|
||||
Color = ' ',
|
||||
File = ' ',
|
||||
Reference = ' ',
|
||||
Folder = ' ',
|
||||
EnumMember = ' ',
|
||||
Constant = ' ',
|
||||
Struct = ' ',
|
||||
Event = ' ',
|
||||
Operator = ' ',
|
||||
TypeParameter = ' ',
|
||||
}
|
||||
|
||||
local cmp = require('cmp')
|
||||
|
||||
cmp.setup({
|
||||
preselect = 'None',
|
||||
formatting = {
|
||||
fields = { 'kind', 'abbr' },
|
||||
format = function(_, vim_item)
|
||||
vim_item.kind = cmp_kinds[vim_item.kind] or ''
|
||||
return vim_item
|
||||
end,
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,29 @@
|
||||
local highlight = {
|
||||
"RainbowRed",
|
||||
"RainbowYellow",
|
||||
"RainbowBlue",
|
||||
"RainbowOrange",
|
||||
"RainbowGreen",
|
||||
"RainbowViolet",
|
||||
"RainbowCyan",
|
||||
}
|
||||
local hooks = require "ibl.hooks"
|
||||
-- create the highlight groups in the highlight setup hook, so they are reset
|
||||
-- every time the colorscheme changes
|
||||
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
|
||||
vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#E06C75" })
|
||||
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#E5C07B" })
|
||||
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#61AFEF" })
|
||||
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#D19A66" })
|
||||
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#98C379" })
|
||||
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C678DD" })
|
||||
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" })
|
||||
end)
|
||||
|
||||
vim.g.rainbow_delimiters = { highlight = highlight }
|
||||
require("ibl").setup {
|
||||
indent = { char = "▏" },
|
||||
scope = { highlight = highlight },
|
||||
}
|
||||
|
||||
hooks.register(hooks.type.SCOPE_HIGHLIGHT, hooks.builtin.scope_highlight_from_extmark)
|
||||
@@ -0,0 +1,298 @@
|
||||
local cmp = require "cmp"
|
||||
local cmp_lsp = require "cmp_nvim_lsp"
|
||||
local cmp_kinds = require("assets.icons").icons.kinds
|
||||
|
||||
local function flatten_to_array(t)
|
||||
local res = {}
|
||||
local function _flatten(tbl)
|
||||
for _, v in ipairs(tbl) do
|
||||
if type(v) == "table" then
|
||||
_flatten(v)
|
||||
else
|
||||
table.insert(res, v)
|
||||
end
|
||||
end
|
||||
end
|
||||
_flatten(t)
|
||||
return res
|
||||
end
|
||||
|
||||
local capabilities = vim.tbl_deep_extend(
|
||||
"force",
|
||||
{},
|
||||
vim.lsp.protocol.make_client_capabilities(),
|
||||
cmp_lsp.default_capabilities()
|
||||
)
|
||||
|
||||
require("fidget").setup {}
|
||||
require("mason").setup()
|
||||
require("mason-lspconfig").setup {
|
||||
automatic_enable = true,
|
||||
ensure_installed = {
|
||||
"lua_ls",
|
||||
"qmlls",
|
||||
"rust_analyzer",
|
||||
"gopls",
|
||||
},
|
||||
handlers = {
|
||||
function(server_name) -- default handler (optional)
|
||||
require("lspconfig")[server_name].setup {
|
||||
capabilities = capabilities,
|
||||
}
|
||||
end,
|
||||
|
||||
["tailwindcss"] = function()
|
||||
local lspconfig = require "lspconfig"
|
||||
lspconfig.tailwindcss.setup {
|
||||
capabilities = capabilities,
|
||||
}
|
||||
end,
|
||||
|
||||
["css-lsp"] = function()
|
||||
local lspconfig = require "lspconfig"
|
||||
lspconfig.cssls.setup {
|
||||
capabilities = capabilities,
|
||||
}
|
||||
end,
|
||||
|
||||
zls = function()
|
||||
local lspconfig = require "lspconfig"
|
||||
lspconfig.zls.setup {
|
||||
capabilities = capabilities,
|
||||
root_dir = lspconfig.util.root_pattern(
|
||||
".git",
|
||||
"build.zig",
|
||||
"zls.json"
|
||||
),
|
||||
settings = {
|
||||
zls = {
|
||||
enable_inlay_hints = true,
|
||||
enable_snippets = true,
|
||||
warn_style = true,
|
||||
},
|
||||
},
|
||||
}
|
||||
vim.g.zig_fmt_parse_errors = 0
|
||||
vim.g.zig_fmt_autosave = 0
|
||||
end,
|
||||
["lua_ls"] = function()
|
||||
local lspconfig = require "lspconfig"
|
||||
lspconfig.lua_ls.setup {
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = { version = "Lua 5.1" },
|
||||
diagnostics = {
|
||||
globals = {
|
||||
"bit",
|
||||
"vim",
|
||||
"it",
|
||||
"describe",
|
||||
"before_each",
|
||||
"after_each",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
cmp.setup {
|
||||
preselect = "None",
|
||||
formatting = {
|
||||
fields = { "kind", "abbr" },
|
||||
format = function(entry, vim_item)
|
||||
vim_item.kind = cmp_kinds[vim_item.kind] or ""
|
||||
if entry.completion_item.detail then
|
||||
vim_item.menu = entry.completion_item.detail
|
||||
end
|
||||
return vim_item
|
||||
end,
|
||||
},
|
||||
completion = { completeopt = "menu,menuone" },
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require("luasnip").lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
|
||||
view = {
|
||||
entries = "custom",
|
||||
},
|
||||
|
||||
mapping = {
|
||||
["<C-p>"] = cmp.mapping.select_prev_item(),
|
||||
["<C-n>"] = cmp.mapping.select_next_item(),
|
||||
["<C-d>"] = cmp.mapping.scroll_docs(-4),
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<C-e>"] = cmp.mapping.close(),
|
||||
["<CR>"] = cmp.mapping.confirm {
|
||||
behavior = cmp.ConfirmBehavior.Insert,
|
||||
select = true,
|
||||
},
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif require("luasnip").expand_or_jumpable() then
|
||||
require("luasnip").expand_or_jump()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif require("luasnip").jumpable(-1) then
|
||||
require("luasnip").jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
},
|
||||
|
||||
sources = cmp.config.sources {
|
||||
{ name = "path" },
|
||||
{ name = "nvim_lsp" },
|
||||
{ name = "luasnip" },
|
||||
{ name = "buffer" },
|
||||
{ name = "nvim_lua" },
|
||||
{ name = "copilot" },
|
||||
},
|
||||
}
|
||||
|
||||
vim.diagnostic.config {
|
||||
virtual_text = false,
|
||||
virtual_lines = false,
|
||||
signs = true,
|
||||
underline = true,
|
||||
float = {
|
||||
focusable = false,
|
||||
style = "minimal",
|
||||
border = "rounded",
|
||||
source = true,
|
||||
header = "",
|
||||
prefix = "",
|
||||
},
|
||||
}
|
||||
|
||||
local lspconfig = vim.lsp.config
|
||||
|
||||
lspconfig("texlab", {
|
||||
cmd = { "texlab" },
|
||||
filetypes = { "tex", "bib", "plaintex" },
|
||||
root_markers = {
|
||||
".git",
|
||||
".latexmkrc",
|
||||
"latexmkrc",
|
||||
".texlabroot",
|
||||
"texlabroot",
|
||||
"Tectonic.toml",
|
||||
},
|
||||
settings = {
|
||||
texlab = {
|
||||
rootDirectory = nil,
|
||||
build = {
|
||||
executable = "latexmk",
|
||||
args = {
|
||||
"-pdf",
|
||||
"-interaction=nonstopmode",
|
||||
"-synctex=1",
|
||||
"%f",
|
||||
},
|
||||
onSave = true,
|
||||
forwardSearchAfter = true,
|
||||
},
|
||||
forwardSearch = {
|
||||
executable = "zathura",
|
||||
args = {
|
||||
"--synctex-editor-command",
|
||||
[[ nvim-texlabconfig -file '%%%{input}' -line %%%{line} -server ]]
|
||||
.. vim.v.servername,
|
||||
"--synctex-forward",
|
||||
"%l:1:%f",
|
||||
"%p",
|
||||
},
|
||||
},
|
||||
chktex = {
|
||||
onEdit = false,
|
||||
onOpenAndSave = true,
|
||||
},
|
||||
diagnosticsDelay = 300,
|
||||
latexFormatter = "latexindent",
|
||||
latexindent = {
|
||||
["local"] = nil,
|
||||
modifyLineBreaks = false,
|
||||
},
|
||||
bibtexFormatter = "texlab",
|
||||
formatterLineLength = 80,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
lspconfig("qmlls", {
|
||||
cmd = { "qmlls6", "qmlls" },
|
||||
filetypes = { "qml", "qmljs" },
|
||||
root_markers = { ".git" },
|
||||
})
|
||||
|
||||
lspconfig("jsonls", {
|
||||
settings = {
|
||||
json = {
|
||||
schemas = require("schemastore").json.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
lspconfig("yamlls", {
|
||||
settings = {
|
||||
yaml = {
|
||||
schemaStore = {
|
||||
enable = false,
|
||||
url = "",
|
||||
},
|
||||
schemas = require("schemastore").yaml.schemas(),
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
local lspenable = vim.lsp.enable
|
||||
local servers = {
|
||||
"html",
|
||||
"bashls",
|
||||
"pyright",
|
||||
"ts_ls",
|
||||
"texlab",
|
||||
"sourcekit",
|
||||
"qmlls",
|
||||
"tailwindcss",
|
||||
"systemd-lsp",
|
||||
require("mason-lspconfig").get_installed_servers(),
|
||||
}
|
||||
|
||||
local flat_servers = flatten_to_array(servers)
|
||||
|
||||
for _, server in ipairs(flat_servers) do
|
||||
lspconfig(server, {
|
||||
on_attach = function(client, bufnr)
|
||||
if client.name == "typos_lsp" or client.name == "copilot" then
|
||||
return
|
||||
end
|
||||
|
||||
require("workspace-diagnostics").populate_workspace_diagnostics(
|
||||
client,
|
||||
bufnr
|
||||
)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
})
|
||||
lspenable(server)
|
||||
end
|
||||
@@ -0,0 +1,55 @@
|
||||
local opts = {}
|
||||
|
||||
opts = {
|
||||
file_types = { "markdown" },
|
||||
completions = {
|
||||
lsp = {
|
||||
enabled = true,
|
||||
},
|
||||
},
|
||||
render_modes = true,
|
||||
|
||||
anti_conceal = {
|
||||
enabled = true,
|
||||
above = 1,
|
||||
below = 1,
|
||||
},
|
||||
|
||||
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 = 0,
|
||||
width = "full",
|
||||
left_margin = 0,
|
||||
left_pad = 2,
|
||||
right_pad = 0,
|
||||
min_width = 40,
|
||||
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",
|
||||
style = "full",
|
||||
},
|
||||
}
|
||||
|
||||
return opts
|
||||
@@ -0,0 +1,19 @@
|
||||
local M = {}
|
||||
|
||||
M.plugin = {
|
||||
"sbdchd/neoformat",
|
||||
config = function()
|
||||
vim.g.neoformat_enabled_lua = { "luaformatter" }
|
||||
vim.g.neoformat_enabled_python = { "black" }
|
||||
vim.g.neoformat_enabled_javascript = { "prettier" }
|
||||
vim.g.neoformat_enabled_typescript = { "prettier" }
|
||||
vim.g.neoformat_enabled_qml = { "qmlformat" }
|
||||
vim.g.neoformat_enabled_go = { "gofmt" }
|
||||
vim.g.neoformat_enabled_sh = { "shfmt" }
|
||||
vim.g.neoformat_enabled_bash = { "shfmt" }
|
||||
vim.g.neoformat_enabled_zsh = { "shfmt" }
|
||||
vim.g.neoformat_enabled_powershell = { "pwshfmt" } -- experimental
|
||||
end,
|
||||
}
|
||||
|
||||
return M
|
||||
@@ -0,0 +1,29 @@
|
||||
require("noice").setup({
|
||||
lsp = {
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = true,
|
||||
},
|
||||
},
|
||||
presets = {
|
||||
bottom_search = true,
|
||||
command_palette = true,
|
||||
long_message_to_split = true,
|
||||
inc_rename = false,
|
||||
lsp_doc_border = false,
|
||||
},
|
||||
views = {
|
||||
popupmenu = {
|
||||
enabled = true,
|
||||
backend = "nui",
|
||||
win_options = {
|
||||
winblend = 0.5,
|
||||
},
|
||||
border = {
|
||||
style = "shadow",
|
||||
padding = { 1, 2 },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,19 @@
|
||||
local prettier = require("prettier")
|
||||
|
||||
prettier.setup({
|
||||
bin = 'prettier',
|
||||
filetypes = {
|
||||
"css",
|
||||
"graphql",
|
||||
"html",
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"json",
|
||||
"less",
|
||||
"markdown",
|
||||
"scss",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
"yaml",
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,26 @@
|
||||
require('refactoring').setup({
|
||||
prompt_func_return_type = {
|
||||
go = true,
|
||||
java = true,
|
||||
|
||||
cpp = true,
|
||||
c = true,
|
||||
h = true,
|
||||
hpp = true,
|
||||
cxx = true,
|
||||
},
|
||||
prompt_func_param_type = {
|
||||
go = true,
|
||||
java = true,
|
||||
|
||||
cpp = true,
|
||||
c = true,
|
||||
h = true,
|
||||
hpp = true,
|
||||
cxx = true,
|
||||
},
|
||||
printf_statements = {},
|
||||
print_var_statements = {},
|
||||
show_success_message = true, -- shows a message with information about the refactor on success
|
||||
-- i.e. [Refactor] Inlined 3 variable occurrences
|
||||
})
|
||||
@@ -0,0 +1 @@
|
||||
require("texlabconfig").setup({})
|
||||
@@ -0,0 +1,51 @@
|
||||
local icons = require("assets.icons").icons
|
||||
|
||||
require('gitsigns').setup {
|
||||
signs = {
|
||||
add = { text = icons.git.added },
|
||||
change = { text = icons.git.modified },
|
||||
delete = { text = icons.git.removed },
|
||||
topdelete = { text = icons.git.removed },
|
||||
changedelete = { text = icons.git.modified },
|
||||
untracked = { text = '┆' },
|
||||
},
|
||||
signs_staged = {
|
||||
add = { text = icons.git.added },
|
||||
change = { text = icons.git.modified },
|
||||
delete = { text = icons.git.removed },
|
||||
topdelete = { text = icons.git.removed },
|
||||
changedelete = { text = icons.git.modified },
|
||||
untracked = { text = '┆' },
|
||||
},
|
||||
signs_staged_enable = true,
|
||||
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
||||
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
||||
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
||||
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
||||
watch_gitdir = {
|
||||
follow_files = true
|
||||
},
|
||||
auto_attach = true,
|
||||
attach_to_untracked = false,
|
||||
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
|
||||
current_line_blame_opts = {
|
||||
virt_text = true,
|
||||
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
|
||||
delay = 1000,
|
||||
ignore_whitespace = false,
|
||||
virt_text_priority = 100,
|
||||
use_focus = true,
|
||||
},
|
||||
current_line_blame_formatter = '<author>, <author_time:%R> - <summary>',
|
||||
sign_priority = 6,
|
||||
update_debounce = 100,
|
||||
status_formatter = nil, -- Use default
|
||||
max_file_length = 40000, -- Disable if file is longer than this (in lines)
|
||||
preview_config = {
|
||||
-- Options passed to nvim_open_win
|
||||
style = 'minimal',
|
||||
relative = 'cursor',
|
||||
row = 0,
|
||||
col = 1
|
||||
},
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
vim.g.base46_cache = vim.fn.stdpath("data") .. "/base46/"
|
||||
vim.g.mapleader = " "
|
||||
vim.g.gruvbox_material_background = "medium"
|
||||
vim.g.coq_settings = { keymap = { recommended = false } }
|
||||
vim.g.gruvbox_material_foreground = "original"
|
||||
vim.api.nvim_set_hl(0, "GitGutterAdd", { fg = "#009900", ctermfg = 2 })
|
||||
vim.api.nvim_set_hl(0, "GitGutterChange", { fg = "#bbbb00", ctermfg = 3 })
|
||||
vim.api.nvim_set_hl(0, "GitGutterDelete", { fg = "#ff2222", ctermfg = 1 })
|
||||
|
||||
local bg_color = vim.api.nvim_get_hl(0, { name = "Normal" }).bg or "NONE"
|
||||
|
||||
vim.api.nvim_set_hl(
|
||||
0,
|
||||
"WinSeparator",
|
||||
{ fg = vim.api.nvim_get_hl(0, { name = "NvimTreeEndOfBuffer" }).fg or "NONE", bg = "NONE" }
|
||||
)
|
||||
vim.api.nvim_set_hl(0, "WinSeparator", { fg = bg_color, bg = "NONE" })
|
||||
vim.api.nvim_set_hl(0, "CursorLine", { bg = vim.api.nvim_get_hl(0, { name = "CursorLine" }).bg or "NONE" })
|
||||
vim.api.nvim_set_hl(0, "LspReferenceWrite", { bg = vim.api.nvim_get_hl(0, { name = "CursorLine" }).bg or "NONE" })
|
||||
vim.api.nvim_set_hl(0, "LspReferenceText", { bg = vim.api.nvim_get_hl(0, { name = "CursorLine" }).bg or "NONE" })
|
||||
vim.api.nvim_set_hl(0, "LspReferenceRead", { bg = vim.api.nvim_get_hl(0, { name = "CursorLine" }).bg or "NONE" })
|
||||
@@ -0,0 +1,34 @@
|
||||
local harpoon = require("harpoon")
|
||||
|
||||
harpoon:setup()
|
||||
|
||||
local conf = require("telescope.config").values
|
||||
local function toggle_telescope(harpoon_files)
|
||||
local file_paths = {}
|
||||
for _, item in ipairs(harpoon_files.items) do
|
||||
table.insert(file_paths, item.value)
|
||||
end
|
||||
|
||||
require("telescope.pickers").new({}, {
|
||||
prompt_title = "Harpoon",
|
||||
finder = require("telescope.finders").new_table({
|
||||
results = file_paths,
|
||||
}),
|
||||
previewer = conf.file_previewer({}),
|
||||
sorter = conf.generic_sorter({}),
|
||||
}):find()
|
||||
end
|
||||
|
||||
vim.keymap.set("n", "<C-e>", function() toggle_telescope(harpoon:list()) end,
|
||||
{ desc = "Open harpoon window" })
|
||||
|
||||
vim.keymap.set("n", "<leader>a", function() harpoon:list():add() end)
|
||||
vim.keymap.set("n", "<C-e>", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end)
|
||||
|
||||
vim.keymap.set("n", "<C-1>", function() harpoon:list():select(1) end)
|
||||
vim.keymap.set("n", "<C-2>", function() harpoon:list():select(2) end)
|
||||
vim.keymap.set("n", "<C-3>", function() harpoon:list():select(3) end)
|
||||
vim.keymap.set("n", "<C-4>", function() harpoon:list():select(4) end)
|
||||
|
||||
vim.keymap.set("n", "<C-S-P>", function() harpoon:list():prev() end)
|
||||
vim.keymap.set("n", "<C-S-N>", function() harpoon:list():next() end)
|
||||
@@ -1,79 +0,0 @@
|
||||
local map = vim.keymap.set
|
||||
require("config.disable-default-keybinds")
|
||||
|
||||
map("n", "<Tab>", "<Cmd>BufferLineCycleNext<CR>")
|
||||
map("n", "<S-Tab>", "<Cmd>BufferLineCyclePrev<CR>")
|
||||
|
||||
map("n", ";", ":", { desc = "CMD enter command mode" })
|
||||
|
||||
-- Move selected text up
|
||||
map("v", "<C-Up>", ":m '<-2<CR>gv=gv", { desc = "Move selected text up" })
|
||||
map("v", "<C-Down>", ":m '>+1<CR>gv=gv", { desc = "Move selected text down" })
|
||||
|
||||
-- Alt + Arrow Key to change buffer
|
||||
map("n", "<A-Left>", "<C-w>h", { desc = "Move to left split" })
|
||||
map("n", "<A-Down>", "<C-w>j", { desc = "Move to bottom split" })
|
||||
map("n", "<A-Up>", "<C-w>k", { desc = "Move to top split" })
|
||||
map("n", "<A-Right>", "<C-w>l", { desc = "Move to right split" })
|
||||
|
||||
-- Copilot Chat buffer
|
||||
map("n", "<A-c>", vim.cmd.CopilotChatToggle)
|
||||
map("i", "<A-c>", vim.cmd.CopilotChatToggle)
|
||||
map("v", "<A-c>", vim.cmd.CopilotChatToggle)
|
||||
|
||||
-- map('n', '<leader>e', vim.cmd.NvimTreeToggle)
|
||||
map("n", "<leader>e", function()
|
||||
Snacks.explorer()
|
||||
end)
|
||||
map("n", "<leader>u", require("undotree").toggle, { noremap = true, silent = true })
|
||||
|
||||
map("n", "<A-->", ":bdelete<CR>")
|
||||
-- map("n", "<SA-->", ":BufferRestore<CR>")
|
||||
|
||||
map("n", "<C-a>", "ggVG", { noremap = true, silent = true })
|
||||
|
||||
map("n", "<leader>pv", vim.cmd.Ex)
|
||||
|
||||
map("v", "J", ":m '>+1<CR>gv=gv")
|
||||
map("v", "K", ":m '<-2<CR>gv=gv")
|
||||
|
||||
map("n", "J", "mzJ`z")
|
||||
map("n", "<C-d>", "<C-d>zz")
|
||||
map("n", "<C-u>", "<C-u>zz")
|
||||
map("n", "n", "nzzzv")
|
||||
map("n", "N", "Nzzzv")
|
||||
map("n", "<leader>zig", "<cmd>LspRestart<cr>")
|
||||
|
||||
-- greatest remap ever
|
||||
map("x", "<leader>p", [["_dP]])
|
||||
|
||||
-- next greatest remap ever : asbjornHaland
|
||||
map({ "n", "v" }, "<leader>y", [["+y]])
|
||||
map("n", "<leader>Y", [["+Y]])
|
||||
|
||||
map({ "n", "v" }, "<leader>d", '"_d')
|
||||
|
||||
-- This is going to get me cancelled
|
||||
map("i", "<C-c>", "<Esc>")
|
||||
|
||||
map("n", "<leader>mr", "<cmd>CellularAutomaton make_it_rain<CR>")
|
||||
|
||||
map("n", "<leader><leader>", function()
|
||||
vim.cmd("so")
|
||||
end)
|
||||
|
||||
-- Tmux binds
|
||||
map("n", "<C-A-Left>", "<cmd>lua require('tmux').move_left()<CR>")
|
||||
map("n", "<C-A-Down>", "<cmd>lua require('tmux').move_bottom()<CR>")
|
||||
map("n", "<C-A-Up>", "<cmd>lua require('tmux').move_top()<CR>")
|
||||
map("n", "<C-A-Right>", "<cmd>lua require('tmux').move_right()<CR>")
|
||||
|
||||
map("n", "<A-S-Left>", "<cmd>lua require('tmux').resize_left()<CR>")
|
||||
map("n", "<A-S-Down>", "<cmd>lua require('tmux').resize_bottom()<CR>")
|
||||
map("n", "<A-S-Up>", "<cmd>lua require('tmux').resize_top()<CR>")
|
||||
map("n", "<A-S-Right>", "<cmd>lua require('tmux').resize_right()<CR>")
|
||||
|
||||
map("n", "<leader><Left>", "<cmd>lua require('tmux').swap_left()<CR>")
|
||||
map("n", "<leader><Down>", "<cmd>lua require('tmux').swap_bottom()<CR>")
|
||||
map("n", "<leader><Up>", "<cmd>lua require('tmux').swap_top()<CR>")
|
||||
map("n", "<leader><Right>", "<cmd>lua require('tmux').swap_right()<CR>")
|
||||
+23
-35
@@ -1,42 +1,30 @@
|
||||
-- bootstrap lazy.nvim
|
||||
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
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = "\\"
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||
{ import = "plugins" },
|
||||
},
|
||||
defaults = {
|
||||
lazy = false,
|
||||
version = false,
|
||||
},
|
||||
install = { colorscheme = { "tokyonight", "habamax" } },
|
||||
checker = {
|
||||
enabled = true,
|
||||
notify = false,
|
||||
},
|
||||
performance = {
|
||||
rtp = {
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
spec = {
|
||||
{ import = "plugins" },
|
||||
},
|
||||
-- Configure any other settings here. See the documentation for more details.
|
||||
-- colorscheme that will be used when installing plugins.
|
||||
install = { colorscheme = { "onedark" } },
|
||||
-- automatically check for plugin updates
|
||||
checker = { enabled = true },
|
||||
})
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
require("lazydev").setup({
|
||||
library = {
|
||||
{ path = "${3rd}/luv/library", words = { "vim%.uv" }},
|
||||
"LazyVim",
|
||||
},
|
||||
enabled = function(root_dir)
|
||||
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled
|
||||
end,
|
||||
})
|
||||
@@ -0,0 +1,7 @@
|
||||
return {
|
||||
content = {
|
||||
active = nil,
|
||||
inactive = nil,
|
||||
},
|
||||
use_icons = true,
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
require("modicator").setup({
|
||||
show_warnings = true,
|
||||
highlights = {
|
||||
defaults = {
|
||||
bold = false,
|
||||
italic = false,
|
||||
},
|
||||
use_cursorline_background = true,
|
||||
},
|
||||
integration = {
|
||||
lualine = {
|
||||
enabled = true,
|
||||
mode_section = nil,
|
||||
highlight = 'bg',
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,11 @@
|
||||
require("mini.splitjoin").setup({
|
||||
mappings = {
|
||||
toggle = "gS",
|
||||
},
|
||||
|
||||
detect = {
|
||||
brackets = { '%b()', '%b{}', '%b[]' },
|
||||
|
||||
separator = '[,;]',
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,151 @@
|
||||
vim.notify = require('notify')
|
||||
local dap = require('dap')
|
||||
|
||||
require('notify').setup({
|
||||
render = "wrapped-default",
|
||||
timeout = 6000,
|
||||
max_width = 50,
|
||||
minimum_width = 50,
|
||||
level = "info",
|
||||
fps = 60,
|
||||
icons = {
|
||||
ERROR = "",
|
||||
WARN = "",
|
||||
INFO = "",
|
||||
DEBUG = "",
|
||||
TRACE = "✎",
|
||||
},
|
||||
on_open = function(win)
|
||||
-- vim.api.nvim_win_set_option(win, 'wrap', true)
|
||||
vim.api.nvim_win_set_option(win, 'breakat', ' ')
|
||||
end,
|
||||
})
|
||||
|
||||
-- Utility functions shared between progress reports for LSP and DAP
|
||||
|
||||
local client_notifs = {}
|
||||
|
||||
local function get_notif_data(client_id, token)
|
||||
if not client_notifs[client_id] then
|
||||
client_notifs[client_id] = {}
|
||||
end
|
||||
|
||||
if not client_notifs[client_id][token] then
|
||||
client_notifs[client_id][token] = {}
|
||||
end
|
||||
|
||||
return client_notifs[client_id][token]
|
||||
end
|
||||
|
||||
|
||||
local spinner_frames = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" }
|
||||
|
||||
local function update_spinner(client_id, token)
|
||||
local notif_data = get_notif_data(client_id, token)
|
||||
|
||||
if notif_data.spinner then
|
||||
local new_spinner = (notif_data.spinner + 1) % #spinner_frames
|
||||
notif_data.spinner = new_spinner
|
||||
|
||||
notif_data.notification = vim.notify(nil, nil, {
|
||||
hide_from_history = true,
|
||||
icon = spinner_frames[new_spinner],
|
||||
replace = notif_data.notification,
|
||||
})
|
||||
|
||||
vim.defer_fn(function()
|
||||
update_spinner(client_id, token)
|
||||
end, 100)
|
||||
end
|
||||
end
|
||||
|
||||
local function format_title(title, client_name)
|
||||
return client_name .. (#title > 0 and ": " .. title or "")
|
||||
end
|
||||
|
||||
local function format_message(message, percentage)
|
||||
return (percentage and percentage .. "%\t" or "") .. (message or "")
|
||||
end
|
||||
|
||||
-- vim.lsp.handlers["$/progress"] = function(_, result, ctx)
|
||||
-- local client_id = ctx.client_id
|
||||
--
|
||||
-- local val = result.value
|
||||
--
|
||||
-- if not val.kind then
|
||||
-- return
|
||||
-- end
|
||||
--
|
||||
-- local notif_data = get_notif_data(client_id, result.token)
|
||||
--
|
||||
-- if val.kind == "begin" then
|
||||
-- local message = format_message(val.message, val.percentage)
|
||||
--
|
||||
-- notif_data.notification = vim.notify(message, "info", {
|
||||
-- title = format_title(val.title, vim.lsp.get_client_by_id(client_id).name),
|
||||
-- icon = spinner_frames[1],
|
||||
-- timeout = false,
|
||||
-- hide_from_history = false,
|
||||
-- })
|
||||
--
|
||||
-- notif_data.spinner = 1
|
||||
-- update_spinner(client_id, result.token)
|
||||
-- elseif val.kind == "report" and notif_data then
|
||||
-- notif_data.notification = vim.notify(format_message(val.message, val.percentage), "info", {
|
||||
-- replace = notif_data.notification,
|
||||
-- hide_from_history = false,
|
||||
-- })
|
||||
-- elseif val.kind == "end" and notif_data then
|
||||
-- notif_data.notification =
|
||||
-- vim.notify(val.message and format_message(val.message) or "Complete", "info", {
|
||||
-- icon = "",
|
||||
-- replace = notif_data.notification,
|
||||
-- timeout = 6000,
|
||||
-- })
|
||||
--
|
||||
-- notif_data.spinner = nil
|
||||
-- end
|
||||
-- end
|
||||
--
|
||||
-- local severity = {
|
||||
-- "error",
|
||||
-- "warn",
|
||||
-- "info",
|
||||
-- "info", -- map both hint and info to info?
|
||||
-- }
|
||||
-- vim.lsp.handlers["window/showMessage"] = function(err, method, params, client_id)
|
||||
-- vim.notify(method.message, severity[params.type])
|
||||
-- end
|
||||
--
|
||||
-- dap.listeners.before['event_progressStart']['progress-notifications'] = function(session, body)
|
||||
-- local notif_data = get_notif_data("dap", body.progressId)
|
||||
--
|
||||
-- local message = format_message(body.message, body.percentage)
|
||||
-- notif_data.notification = vim.notify(message, "info", {
|
||||
-- title = format_title(body.title, session.config.type),
|
||||
-- icon = spinner_frames[1],
|
||||
-- timeout = false,
|
||||
-- hide_from_history = false,
|
||||
-- })
|
||||
--
|
||||
-- notif_data.notification.spinner = 1,
|
||||
-- update_spinner("dap", body.progressId)
|
||||
-- end
|
||||
--
|
||||
-- dap.listeners.before['event_progressUpdate']['progress-notifications'] = function(session, body)
|
||||
-- local notif_data = get_notif_data("dap", body.progressId)
|
||||
-- notif_data.notification = vim.notify(format_message(body.message, body.percentage), "info", {
|
||||
-- replace = notif_data.notification,
|
||||
-- hide_from_history = false,
|
||||
-- })
|
||||
-- end
|
||||
--
|
||||
-- dap.listeners.before['event_progressEnd']['progress-notifications'] = function(session, body)
|
||||
-- local notif_data = client_notifs["dap"][body.progressId]
|
||||
-- notif_data.notification = vim.notify(body.message and format_message(body.message) or "Complete", "info", {
|
||||
-- icon = "",
|
||||
-- replace = notif_data.notification,
|
||||
-- timeout = 6000
|
||||
-- })
|
||||
-- notif_data.spinner = nil
|
||||
-- end
|
||||
@@ -0,0 +1,7 @@
|
||||
local popup = require('nui.popup')
|
||||
|
||||
local Popup = popup({
|
||||
border = {
|
||||
style = "shadow",
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,4 @@
|
||||
require("region-folding").setup({
|
||||
region_text = { start = "<think>", ending = "</think>" },
|
||||
fold_indicator = "▼",
|
||||
})
|
||||
@@ -0,0 +1,88 @@
|
||||
return {
|
||||
"folke/snacks.nvim",
|
||||
priority = 1000,
|
||||
lazy = false,
|
||||
---@type snacks.Config
|
||||
opts = {
|
||||
bigfile = { enabled = true },
|
||||
dashboard = { enabled = true },
|
||||
explorer = { enabled = true },
|
||||
indent = {
|
||||
enabled = true,
|
||||
scope = {
|
||||
enabled = true,
|
||||
underline = false,
|
||||
},
|
||||
chunk = {
|
||||
enabled = false,
|
||||
char = {
|
||||
corner_top = "╭",
|
||||
corner_bottom = "╰",
|
||||
vertical = "│",
|
||||
arrow = "╼",
|
||||
},
|
||||
},
|
||||
},
|
||||
input = { enabled = true },
|
||||
picker = {
|
||||
enabled = true,
|
||||
hidden = true,
|
||||
ignored = true,
|
||||
},
|
||||
image = {
|
||||
enabled = true,
|
||||
formats = {
|
||||
"png",
|
||||
"jpg",
|
||||
"jpeg",
|
||||
"gif",
|
||||
"bmp",
|
||||
"webp",
|
||||
"tiff",
|
||||
"heic",
|
||||
"avif",
|
||||
"mp4",
|
||||
"mov",
|
||||
"avi",
|
||||
"mkv",
|
||||
"webm",
|
||||
"pdf",
|
||||
"icns",
|
||||
},
|
||||
doc = {
|
||||
enabled = true,
|
||||
inline = true,
|
||||
float = true,
|
||||
max_width = 80,
|
||||
max_height = 80,
|
||||
},
|
||||
},
|
||||
notifier = { enabled = true },
|
||||
quickfile = { enabled = true },
|
||||
scope = { enabled = true },
|
||||
scroll = { enabled = true },
|
||||
statuscolumn = { enabled = true },
|
||||
words = { enabled = false },
|
||||
terminal = {
|
||||
enabled = true,
|
||||
win = { style = "terminal" },
|
||||
},
|
||||
styles = {
|
||||
terminal = {
|
||||
keys = {
|
||||
term_normal = {
|
||||
"<c-q>",
|
||||
function()
|
||||
Snacks.terminal.toggle()
|
||||
end,
|
||||
mode = "t"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
gitbrowse = {
|
||||
enabled = true,
|
||||
notify = false,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
require("telescope").setup ({
|
||||
pickers = {
|
||||
colorscheme = {
|
||||
enable_preview = true,
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,11 @@
|
||||
vim.g.neovide_cursor_trail_size = 0
|
||||
vim.g.neovide_floating_corner_radius = 0.4
|
||||
vim.o.guifont = "0xProto Nerd Font Mono:h12"
|
||||
vim.g.neovide_refresh_rate = 144
|
||||
vim.g.neovide_refresh_rate_idle = 144
|
||||
vim.g.neovide_no_idle = true
|
||||
vim.g.neovide_floating_blur_amount_x = 0
|
||||
vim.g.neovide_floating_blur_amount_y = 0
|
||||
vim.g.neovide_cursor_animation_length = 0.08
|
||||
vim.g.neovide_cursor_short_animation_length = 0.04
|
||||
vim.g.neovide_scroll_animation_length = 0.15
|
||||
@@ -0,0 +1,21 @@
|
||||
require("tmux").setup({
|
||||
copy_sync = {
|
||||
enable = true,
|
||||
redirect_to_clipboard = true,
|
||||
sync_clipboard = true,
|
||||
sync_registers = true,
|
||||
},
|
||||
navigation = {
|
||||
cycle_navigation = true,
|
||||
enable_default_keybindings = false,
|
||||
},
|
||||
resize = {
|
||||
enable_default_keybindings = false,
|
||||
resize_step_x = 5,
|
||||
resize_step_y = 5,
|
||||
},
|
||||
swap = {
|
||||
cycle_navigation = false,
|
||||
enable_default_keybindings = false,
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,11 @@
|
||||
require("zterm-navigator").setup({
|
||||
-- Default keybindings (set to false to disable)
|
||||
left = "<A-Left>",
|
||||
right = "<A-Right>",
|
||||
up = "<A-Up>",
|
||||
down = "<A-Down>",
|
||||
|
||||
statusline = {
|
||||
enabled = false
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,15 @@
|
||||
local i = {}
|
||||
|
||||
function M.foldexpr()
|
||||
local lnum = vim.v.lnum
|
||||
local line = vim.fn.getline( lnum )
|
||||
if line:find( "<think>", 1, true ) then
|
||||
return "a1"
|
||||
elseif line:find( "</think>", 1, true ) then
|
||||
return "s1"
|
||||
else
|
||||
return "="
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -0,0 +1,11 @@
|
||||
require("colorizer").setup({
|
||||
user_default_options = {
|
||||
mode = "virtualtext",
|
||||
virtualtext = "■",
|
||||
css = true,
|
||||
tailwind = true,
|
||||
sass = { enable = true, parsers = { "css" }},
|
||||
virtualtext_inline = 'before',
|
||||
AARRGGBB = true,
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1 @@
|
||||
require("gruvbox-baby").setup()
|
||||
@@ -0,0 +1,50 @@
|
||||
require("gruvbox").setup({
|
||||
variant = "hard",
|
||||
dark_variant = "medium",
|
||||
dim_inactive_windows = false,
|
||||
extend_background_behind_borders = false,
|
||||
|
||||
enable = {
|
||||
terminal = true,
|
||||
legacy_highlights = true,
|
||||
migrations = true,
|
||||
},
|
||||
|
||||
styles = {
|
||||
bold = true,
|
||||
italic = true,
|
||||
transparency = false,
|
||||
},
|
||||
|
||||
groups = {
|
||||
border = "gray",
|
||||
link = "purple_lite",
|
||||
panel = "bg_second",
|
||||
|
||||
error = "red_lite",
|
||||
hint = "aqua_lite",
|
||||
info = "blue_lite",
|
||||
ok = "green_lite",
|
||||
warn = "yellow_lite",
|
||||
note = "yellow_dark",
|
||||
todo = "aqua_dark",
|
||||
|
||||
git_add = "green_dark",
|
||||
git_change = "yellow_dark",
|
||||
git_delete = "red_dark",
|
||||
git_dirty = "orange_dark",
|
||||
git_ignore = "gray",
|
||||
git_merge = "purple_dark",
|
||||
git_rename = "blue_dark",
|
||||
git_stage = "purple_dark",
|
||||
git_text = "yellow_lite",
|
||||
git_untracked = "bg2",
|
||||
|
||||
h1 = "red_dark",
|
||||
h2 = "yellow_dark",
|
||||
h3 = "green_dark",
|
||||
h4 = "aqua_dark",
|
||||
h5 = "blue_dark",
|
||||
h6 = "purple_dark",
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,194 @@
|
||||
local fn = vim.fn
|
||||
|
||||
local icons = require("assets.icons").icons
|
||||
|
||||
local get_active_lsp = function()
|
||||
local msg = ""
|
||||
local buf_ft = vim.api.nvim_get_option_value("filetype", {})
|
||||
local clients = vim.lsp.get_clients { bufnr = 0 }
|
||||
if next(clients) == nil then
|
||||
return msg
|
||||
end
|
||||
|
||||
for _, client in ipairs(clients) do
|
||||
---@diagnostic disable-next-line: undefined-field
|
||||
local filetypes = client.config.filetypes
|
||||
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
|
||||
return client.name
|
||||
end
|
||||
end
|
||||
return msg
|
||||
end
|
||||
|
||||
local function spell()
|
||||
if vim.o.spell then
|
||||
return string.format "[SPELL]"
|
||||
end
|
||||
|
||||
return ""
|
||||
end
|
||||
|
||||
--- show indicator for Chinese IME
|
||||
local function ime_state()
|
||||
if vim.g.is_mac then
|
||||
local layout =
|
||||
fn.libcall(vim.g.XkbSwitchLib, "Xkb_Switch_getXkbLayout", "")
|
||||
local res = fn.match(layout, [[\v(Squirrel\.Rime|SCIM.ITABC)]])
|
||||
if res ~= -1 then
|
||||
return "[CN]"
|
||||
end
|
||||
end
|
||||
|
||||
return ""
|
||||
end
|
||||
|
||||
local diff = function()
|
||||
local gitsigns = vim.b.gitsigns_status_dict
|
||||
if gitsigns then
|
||||
return {
|
||||
added = gitsigns.added,
|
||||
modified = gitsigns.changed,
|
||||
removed = gitsigns.removed,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
local virtual_env = function()
|
||||
-- only show virtual env for Python
|
||||
if vim.bo.filetype ~= "python" then
|
||||
return ""
|
||||
end
|
||||
|
||||
local conda_env = os.getenv "CONDA_DEFAULT_ENV"
|
||||
local venv_path = os.getenv "VIRTUAL_ENV"
|
||||
|
||||
if venv_path == nil then
|
||||
if conda_env == nil then
|
||||
return ""
|
||||
else
|
||||
return string.format(" %s (conda)", conda_env)
|
||||
end
|
||||
else
|
||||
local venv_name = vim.fn.fnamemodify(venv_path, ":t")
|
||||
return string.format(" %s (venv)", venv_name)
|
||||
end
|
||||
end
|
||||
|
||||
local lint_progress = function()
|
||||
local linters = require("lint").get_running()
|
||||
if #linters == 0 then
|
||||
return ""
|
||||
end
|
||||
return table.concat(linters, ", ")
|
||||
end
|
||||
|
||||
require("lualine").setup {
|
||||
laststatus = 0,
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
theme = "zshell",
|
||||
globalstatus = true,
|
||||
component_separators = "",
|
||||
section_separators = { left = "", right = "" },
|
||||
disabled_filetypes = {},
|
||||
always_divide_middle = true,
|
||||
},
|
||||
sections = {
|
||||
lualine_a = {
|
||||
{
|
||||
"mode",
|
||||
},
|
||||
},
|
||||
lualine_b = {
|
||||
{
|
||||
"branch",
|
||||
fmt = function(name, _)
|
||||
-- truncate branch name in case the name is too long
|
||||
return string.sub(name, 1, 20)
|
||||
end,
|
||||
color = { gui = "italic,bold" },
|
||||
separator = { right = "" },
|
||||
},
|
||||
{
|
||||
virtual_env,
|
||||
color = { fg = "black", bg = "#F1CA81" },
|
||||
},
|
||||
},
|
||||
lualine_c = {
|
||||
{
|
||||
"filename",
|
||||
symbols = {
|
||||
readonly = "[ ]",
|
||||
},
|
||||
},
|
||||
{
|
||||
"diff",
|
||||
symbols = {
|
||||
added = icons.git.added,
|
||||
modified = icons.git.modified,
|
||||
removed = icons.git.removed,
|
||||
},
|
||||
source = diff,
|
||||
},
|
||||
{
|
||||
"%S",
|
||||
color = { gui = "bold", fg = "cyan" },
|
||||
},
|
||||
{
|
||||
spell,
|
||||
color = { fg = "black", bg = "#a7c080" },
|
||||
},
|
||||
},
|
||||
lualine_x = {
|
||||
{
|
||||
ime_state,
|
||||
color = { fg = "black", bg = "#f46868" },
|
||||
},
|
||||
{
|
||||
lint_progress,
|
||||
icon = " ",
|
||||
},
|
||||
{
|
||||
get_active_lsp,
|
||||
icon = " ",
|
||||
},
|
||||
{
|
||||
"diagnostics",
|
||||
sources = { "nvim_diagnostic" },
|
||||
symbols = {
|
||||
error = icons.diagnostics.Error,
|
||||
warn = icons.diagnostics.Warn,
|
||||
info = icons.diagnostics.Info,
|
||||
hint = icons.diagnostics.Hint,
|
||||
},
|
||||
},
|
||||
},
|
||||
lualine_y = {
|
||||
{ "encoding", fmt = string.upper },
|
||||
{
|
||||
"fileformat",
|
||||
symbols = {
|
||||
unix = "",
|
||||
dos = "",
|
||||
mac = "",
|
||||
},
|
||||
},
|
||||
"filetype",
|
||||
},
|
||||
lualine_z = {
|
||||
{
|
||||
"location",
|
||||
},
|
||||
},
|
||||
},
|
||||
inactive_sections = {
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_c = { "filename" },
|
||||
lualine_x = { "location" },
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
},
|
||||
tabline = {},
|
||||
extensions = { "quickfix", "fugitive", "nvim-tree" },
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
-- lua
|
||||
require('onedarkpro').setup({
|
||||
highlights = {
|
||||
Comment = { italic = true },
|
||||
Directory = { bold = false },
|
||||
ErrorMsg = { italic = true },
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,13 @@
|
||||
local treesitter = require "nvim-treesitter"
|
||||
|
||||
treesitter.install { "all" }
|
||||
|
||||
local parsers = treesitter.get_installed()
|
||||
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = parsers,
|
||||
callback = function()
|
||||
vim.treesitter.start()
|
||||
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
|
||||
end,
|
||||
})
|
||||
@@ -0,0 +1,19 @@
|
||||
require('undotree').setup({
|
||||
float_diff = true,
|
||||
layout = "left_bottom",
|
||||
position = "left",
|
||||
ignore_filetype = { 'undotree', 'undotreeDiff', 'qf', 'TelescopePrompt', 'spectre_panel', 'tsplayground' },
|
||||
window = {
|
||||
winblend = 30,
|
||||
},
|
||||
keymaps = {
|
||||
['j'] = "move_next",
|
||||
['k'] = "move_prev",
|
||||
['gj'] = "move2parent",
|
||||
['J'] = "move_change_next",
|
||||
['K'] = "move_change_prev",
|
||||
['<cr>'] = "action_enter",
|
||||
['p'] = "enter_diffbuf",
|
||||
['q'] = "quit",
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,12 @@
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
vim.g.base46_cache = vim.fn.stdpath "data" .. "/base46/"
|
||||
vim.g.mapleader = " "
|
||||
vim.g.coq_settings = { keymap = { recommended = false } }
|
||||
vim.g.zig_fmt_parse_errors = 0
|
||||
vim.g.zig_fmt_autosave = 0
|
||||
|
||||
vim.api.nvim_set_hl(0, "GitGutterAdd", { fg = "#009900", ctermfg = 2 })
|
||||
vim.api.nvim_set_hl(0, "GitGutterChange", { fg = "#bbbb00", ctermfg = 3 })
|
||||
vim.api.nvim_set_hl(0, "GitGutterDelete", { fg = "#ff2222", ctermfg = 1 })
|
||||
vim.api.nvim_set_hl(1, "CmpItemKindCopilot", { fg = "#6CC644" })
|
||||
@@ -0,0 +1,53 @@
|
||||
local map = vim.keymap.set
|
||||
|
||||
-- Base nvim mappings, you need this.
|
||||
map("n", "<Tab>", "<Cmd>BufferLineCycleNext<CR>")
|
||||
map("n", "<S-Tab>", "<Cmd>BufferLineCyclePrev<CR>")
|
||||
map({"n", "v"}, "<leader>ap", require("actions-preview").code_actions)
|
||||
map("n", ";", ":", { desc = "CMD enter command mode" })
|
||||
map("v", "<C-Up>", ":m '<-2<CR>gv=gv", { desc = "Move selected text up" })
|
||||
map("v", "<C-Down>", ":m '>+1<CR>gv=gv", { desc = "Move selected text down" })
|
||||
map("n", "<C-a>", "ggVG", { noremap = true, silent = true })
|
||||
map("n", "<C-j>", "<C-d>zz")
|
||||
map("n", "<C-k>", "<C-u>zz")
|
||||
map("n", "<A-->", ":bdelete<CR>")
|
||||
-- map("n", "<SA-->", ":BufferRestore<CR>")
|
||||
map('n', '<leader>e', function() Snacks.explorer() end)
|
||||
map('n', '<leader>u', require('undotree').toggle, { noremap = true, silent = true })
|
||||
map("n", "<leader>g", require("telescope.builtin").live_grep, {desc = "Telescope grep" })
|
||||
map("n", "<leader>f", require("telescope.builtin").find_files, {desc = "Telescope find files" })
|
||||
|
||||
-- Copilot Chat buffer
|
||||
map("n", "<A-c>", vim.cmd.CopilotChatToggle)
|
||||
map("i", "<A-c>", vim.cmd.CopilotChatToggle)
|
||||
map("v", "<A-c>", vim.cmd.CopilotChatToggle)
|
||||
|
||||
-- LSP Restart
|
||||
map("n", "<leader>zig", "<cmd>LspRestart<cr>")
|
||||
|
||||
-- Why?
|
||||
map("x", "<leader>p", [["_dP]])
|
||||
map({"n", "v"}, "<leader>y", [["+y]])
|
||||
map({"n", "v"}, "<leader>d", "\"_d")
|
||||
map("n", "<leader>mr", "<cmd>CellularAutomaton make_it_rain<CR>");
|
||||
map("n", "<leader><leader>", function()
|
||||
vim.cmd("so")
|
||||
end)
|
||||
|
||||
-- Greatest remap
|
||||
map("n", "<leader>Y", [["+Y]])
|
||||
map("n", "<A-q>", function() Snacks.terminal.toggle() end, { desc = "Toggle Terminal" })
|
||||
map("n", "<leader>gb", function() Snacks.gitbrowse.open() end )
|
||||
map("n", "K", require("pretty_hover").hover)
|
||||
|
||||
-- Might delete later
|
||||
map("n", "<leader>fm", "<cmd>TailwindConcealToggle<CR>", { desc = "Toggle Tailwind Conceal" })
|
||||
map("n", "<A-v>", "<cmd>ChatGPT<CR>")
|
||||
|
||||
-- Notif history
|
||||
map("n", "<leader>n", function()
|
||||
Snacks.notifier.show_history()
|
||||
end)
|
||||
|
||||
-- Actions Previewer
|
||||
map({ "n", "v" }, "<leader>ap", require("actions-preview").code_actions)
|
||||
@@ -0,0 +1,17 @@
|
||||
local M = {}
|
||||
|
||||
function M.load_modules()
|
||||
local modules_path = vim.fn.stdpath("config") .. "/lua/config/modules"
|
||||
local modules = vim.fn.globpath(modules_path, "*.lua", false, true)
|
||||
|
||||
for _, module_file in ipairs(modules) do
|
||||
local module_name = vim.fn.fnamemodify(module_file, ":t:r")
|
||||
|
||||
local ok, err = pcall(require, "config.modules." .. module_name)
|
||||
if not ok then
|
||||
vim.notify("Failed to load module: " .. module_name .. "\n" .. err, vim.log.levels.ERROR)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -1,14 +1,19 @@
|
||||
vim.o.pumblend = 50
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.tabstop = 4
|
||||
vim.opt.softtabstop = 4
|
||||
vim.opt.shiftwidth = 4
|
||||
vim.opt.expandtab = true
|
||||
vim.opt.smartindent = true
|
||||
vim.opt.smartindent = false
|
||||
|
||||
vim.o.list = true
|
||||
vim.opt.listchars = { tab = "··", trail = "·", nbsp = "_" }
|
||||
|
||||
vim.opt.wrap = true
|
||||
vim.opt.linebreak = true
|
||||
vim.opt.swapfile = false
|
||||
vim.opt.backup = false
|
||||
vim.opt.undodir = os.getenv("HOME") .. "/.nvim/undodir"
|
||||
vim.opt.undodir = vim.fn.stdpath('data') .. '/undodir'
|
||||
vim.opt.undofile = true
|
||||
vim.opt.hlsearch = false
|
||||
vim.opt.incsearch = true
|
||||
@@ -19,9 +24,8 @@ vim.opt.isfname:append("@-@")
|
||||
vim.opt.updatetime = 50
|
||||
vim.opt.colorcolumn = "80"
|
||||
vim.opt.textwidth = 80
|
||||
vim.opt.formatoptions = "tcrqnj"
|
||||
vim.opt.formatoptions = "rqnj"
|
||||
vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
|
||||
vim.o.laststatus = 3
|
||||
vim.o.clipboard = "unnamedplus"
|
||||
vim.o.cursorline = true
|
||||
vim.o.cursorlineopt = "number"
|
||||
@@ -30,23 +34,24 @@ vim.o.ignorecase = true
|
||||
vim.o.smartcase = true
|
||||
vim.o.mouse = "a"
|
||||
vim.o.number = true
|
||||
vim.o.termguicolors = true
|
||||
vim.o.numberwidth = 3
|
||||
vim.o.ruler = false
|
||||
vim.o.showmode = false
|
||||
vim.opt.shortmess:append("sI")
|
||||
vim.opt.shortmess:append "sI"
|
||||
vim.o.splitbelow = true
|
||||
vim.o.splitright = true
|
||||
vim.o.timeoutlen = 400
|
||||
vim.opt.whichwrap:append("<>[]hl")
|
||||
vim.opt.whichwrap:append "<>[]hl"
|
||||
vim.g.loaded_node_provider = 0
|
||||
vim.g.loaded_python3_provider = 0
|
||||
vim.g.loaded_perl_provider = 0
|
||||
vim.g.loaded_ruby_provider = 0
|
||||
local is_windows = vim.fn.has("win32") ~= 0
|
||||
local is_windows = vim.fn.has "win32" ~= 0
|
||||
local sep = is_windows and "\\" or "/"
|
||||
local delim = is_windows and ";" or ":"
|
||||
vim.env.PATH = table.concat({ vim.fn.stdpath("data"), "mason", "bin" }, sep) .. delim .. vim.env.PATH
|
||||
vim.env.PATH = table.concat({ vim.fn.stdpath "data", "mason", "bin" }, sep) .. delim .. vim.env.PATH
|
||||
|
||||
vim.g.snacks_animate = false
|
||||
vim.g.autoformat = false
|
||||
vim.g.lazyvim_cmp = "nvim-cmp"
|
||||
vim.api.nvim_set_hl( 0, "Cursor", { reverse = true })
|
||||
|
||||
vim.g.tpipeline_restore = 1
|
||||
@@ -1,38 +0,0 @@
|
||||
return {
|
||||
"rmagatti/auto-session",
|
||||
enabled = true,
|
||||
opts = {
|
||||
root_dir = vim.fn.stdpath("data") .. "/sessions/",
|
||||
auto_save = true,
|
||||
auto_restore = true,
|
||||
auto_create = true,
|
||||
suppressed_dirs = nil,
|
||||
allowed_dirs = nil,
|
||||
auto_restore_last_session = false,
|
||||
use_git_branch = false,
|
||||
lazy_support = true,
|
||||
bypass_save_filetypes = nil,
|
||||
close_unsupported_windows = true,
|
||||
args_allow_single_directory = true,
|
||||
args_allow_files_auto_save = false,
|
||||
continue_restore_on_error = true,
|
||||
show_auto_restore_notif = false,
|
||||
cwd_change_handling = false,
|
||||
lsp_stop_on_restore = false,
|
||||
log_level = "error",
|
||||
session_lens = {
|
||||
load_on_setup = true,
|
||||
theme_conf = {},
|
||||
previewer = false,
|
||||
mappings = {
|
||||
delete_session = { "i", "<C-D>" },
|
||||
alternate_session = { "i", "<C-S>" },
|
||||
copy_session = { "i", "<C-Y>" },
|
||||
},
|
||||
session_control = {
|
||||
control_dir = vim.fn.stdpath("data") .. "/auto_session/",
|
||||
control_filename = "session_control.json",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
return {
|
||||
{ "notken12/base46-colors" },
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "gruvbox",
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
return {
|
||||
{
|
||||
"CopilotC-Nvim/CopilotChat.nvim",
|
||||
cmd = "CopilotChatToggle",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"folke/flash.nvim",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"MagicDuck/grug-far.nvim",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"folke/snacks.nvim",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"ThePrimeagen/harpoon",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"L3M0N4D3/LuaSnip",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"folke/persistence.nvim",
|
||||
enabled = false,
|
||||
},
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
return {
|
||||
"andweeb/presence.nvim",
|
||||
enabled = true,
|
||||
}
|
||||
@@ -1,197 +0,0 @@
|
||||
-- since this is just an example spec, don't actually load anything here and return an empty spec
|
||||
-- stylua: ignore
|
||||
if true then return {} end
|
||||
|
||||
-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
|
||||
--
|
||||
-- In your plugin files, you can:
|
||||
-- * add extra plugins
|
||||
-- * disable/enabled LazyVim plugins
|
||||
-- * override the configuration of LazyVim plugins
|
||||
return {
|
||||
-- add gruvbox
|
||||
{ "ellisonleao/gruvbox.nvim" },
|
||||
|
||||
-- Configure LazyVim to load gruvbox
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "gruvbox",
|
||||
},
|
||||
},
|
||||
|
||||
-- change trouble config
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
-- opts will be merged with the parent spec
|
||||
opts = { use_diagnostic_signs = true },
|
||||
},
|
||||
|
||||
-- disable trouble
|
||||
{ "folke/trouble.nvim", enabled = false },
|
||||
|
||||
-- override nvim-cmp and add cmp-emoji
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = { "hrsh7th/cmp-emoji" },
|
||||
---@param opts cmp.ConfigSchema
|
||||
opts = function(_, opts)
|
||||
table.insert(opts.sources, { name = "emoji" })
|
||||
end,
|
||||
},
|
||||
|
||||
-- change some telescope options and a keymap to browse plugin files
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
keys = {
|
||||
-- add a keymap to browse plugin files
|
||||
-- stylua: ignore
|
||||
{
|
||||
"<leader>fp",
|
||||
function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
|
||||
desc = "Find Plugin File",
|
||||
},
|
||||
},
|
||||
-- change some options
|
||||
opts = {
|
||||
defaults = {
|
||||
layout_strategy = "horizontal",
|
||||
layout_config = { prompt_position = "top" },
|
||||
sorting_strategy = "ascending",
|
||||
winblend = 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- add 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",
|
||||
"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, {
|
||||
function()
|
||||
return "😄"
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- or you can return new options to override all the defaults
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = function()
|
||||
return {
|
||||
--[[add your custom lualine config here]]
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
-- use mini.starter instead of alpha
|
||||
{ import = "lazyvim.plugins.extras.ui.mini-starter" },
|
||||
|
||||
-- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
|
||||
{ import = "lazyvim.plugins.extras.lang.json" },
|
||||
|
||||
-- add any tools you want to have installed below
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"stylua",
|
||||
"shellcheck",
|
||||
"shfmt",
|
||||
"flake8",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
return {
|
||||
{
|
||||
"MeanderingProgrammer/render-markdown.nvim",
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
"nvim-mini/mini.nvim",
|
||||
},
|
||||
---@module 'render-markdown'
|
||||
---@type render.md.UserConfig
|
||||
opts = require "config.format.markdown",
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
return {
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
config = function()
|
||||
require("config.gitsigns")
|
||||
end
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
return {
|
||||
"y3owk1n/undo-glow.nvim",
|
||||
version = "*",
|
||||
opts = {
|
||||
animation = {
|
||||
enabled = true,
|
||||
duration = 300,
|
||||
animation_type = "fade",
|
||||
window_scoped = true,
|
||||
},
|
||||
highlights = {
|
||||
undo = {
|
||||
hl_color = { bg = "#693232" }, -- Dark muted red
|
||||
},
|
||||
redo = {
|
||||
hl_color = { bg = "#2F4640" }, -- Dark muted green
|
||||
},
|
||||
yank = {
|
||||
hl_color = { bg = "#7A683A" }, -- Dark muted yellow
|
||||
},
|
||||
paste = {
|
||||
hl_color = { bg = "#325B5B" }, -- Dark muted cyan
|
||||
},
|
||||
search = {
|
||||
hl_color = { bg = "#5C475C" }, -- Dark muted purple
|
||||
},
|
||||
comment = {
|
||||
hl_color = { bg = "#7A5A3D" }, -- Dark muted orange
|
||||
},
|
||||
cursor = {
|
||||
hl_color = { bg = "#793D54" }, -- Dark muted pink
|
||||
},
|
||||
},
|
||||
priority = 2048 * 3,
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"u",
|
||||
function()
|
||||
require("undo-glow").undo()
|
||||
end,
|
||||
mode = "n",
|
||||
desc = "Undo with highlight",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"U",
|
||||
function()
|
||||
require("undo-glow").redo()
|
||||
end,
|
||||
mode = "n",
|
||||
desc = "Redo with highlight",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"p",
|
||||
function()
|
||||
require("undo-glow").paste_below()
|
||||
end,
|
||||
mode = "n",
|
||||
desc = "Paste below with highlight",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"P",
|
||||
function()
|
||||
require("undo-glow").paste_above()
|
||||
end,
|
||||
mode = "n",
|
||||
desc = "Paste above with highlight",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"n",
|
||||
function()
|
||||
require("undo-glow").search_next {
|
||||
animation = {
|
||||
animation_type = "strobe",
|
||||
},
|
||||
}
|
||||
end,
|
||||
mode = "n",
|
||||
desc = "Search next with highlight",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"N",
|
||||
function()
|
||||
require("undo-glow").search_prev {
|
||||
animation = {
|
||||
animation_type = "strobe",
|
||||
},
|
||||
}
|
||||
end,
|
||||
mode = "n",
|
||||
desc = "Search prev with highlight",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"*",
|
||||
function()
|
||||
require("undo-glow").search_star {
|
||||
animation = {
|
||||
animation_type = "strobe",
|
||||
},
|
||||
}
|
||||
end,
|
||||
mode = "n",
|
||||
desc = "Search star with highlight",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"#",
|
||||
function()
|
||||
require("undo-glow").search_hash {
|
||||
animation = {
|
||||
animation_type = "strobe",
|
||||
},
|
||||
}
|
||||
end,
|
||||
mode = "n",
|
||||
desc = "Search hash with highlight",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"gc",
|
||||
function()
|
||||
-- This is an implementation to preserve the cursor position
|
||||
local pos = vim.fn.getpos "."
|
||||
vim.schedule(function()
|
||||
vim.fn.setpos(".", pos)
|
||||
end)
|
||||
return require("undo-glow").comment()
|
||||
end,
|
||||
mode = { "n", "x" },
|
||||
desc = "Toggle comment with highlight",
|
||||
expr = true,
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"gc",
|
||||
function()
|
||||
require("undo-glow").comment_textobject()
|
||||
end,
|
||||
mode = "o",
|
||||
desc = "Comment textobject with highlight",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"gcc",
|
||||
function()
|
||||
return require("undo-glow").comment_line()
|
||||
end,
|
||||
mode = "n",
|
||||
desc = "Toggle comment line with highlight",
|
||||
expr = true,
|
||||
noremap = true,
|
||||
},
|
||||
},
|
||||
init = function()
|
||||
vim.api.nvim_create_autocmd("TextYankPost", {
|
||||
desc = "Highlight when yanking (copying) text",
|
||||
callback = function()
|
||||
require("undo-glow").yank()
|
||||
end,
|
||||
})
|
||||
|
||||
-- This only handles neovim instance and do not highlight when switching panes in tmux
|
||||
vim.api.nvim_create_autocmd("CursorMoved", {
|
||||
desc = "Highlight when cursor moved significantly",
|
||||
callback = function()
|
||||
require("undo-glow").cursor_moved {
|
||||
animation = {
|
||||
animation_type = "slide",
|
||||
},
|
||||
}
|
||||
end,
|
||||
})
|
||||
|
||||
-- This will handle highlights when focus gained, including switching panes in tmux
|
||||
vim.api.nvim_create_autocmd("FocusGained", {
|
||||
desc = "Highlight when focus gained",
|
||||
callback = function()
|
||||
---@type UndoGlow.CommandOpts
|
||||
local opts = {
|
||||
animation = {
|
||||
animation_type = "slide",
|
||||
},
|
||||
}
|
||||
|
||||
opts = require("undo-glow.utils").merge_command_opts(
|
||||
"UgCursor",
|
||||
opts
|
||||
)
|
||||
local pos = require("undo-glow.utils").get_current_cursor_row()
|
||||
|
||||
require("undo-glow").highlight_region(
|
||||
vim.tbl_extend("force", opts, {
|
||||
s_row = pos.s_row,
|
||||
s_col = pos.s_col,
|
||||
e_row = pos.e_row,
|
||||
e_col = pos.e_col,
|
||||
force_edge = opts.force_edge == nil and true
|
||||
or opts.force_edge,
|
||||
})
|
||||
)
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("CmdlineLeave", {
|
||||
desc = "Highlight when search cmdline leave",
|
||||
callback = function()
|
||||
require("undo-glow").search_cmd {
|
||||
animation = {
|
||||
animation_type = "fade",
|
||||
},
|
||||
}
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -0,0 +1,261 @@
|
||||
return {
|
||||
{
|
||||
require("config.snacks")
|
||||
},
|
||||
{
|
||||
"nvim-mini/mini.nvim",
|
||||
version = false,
|
||||
|
||||
modules = function()
|
||||
require("config.mini-modules")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
lazy = false,
|
||||
build = ":TSUpdate",
|
||||
branch = "main",
|
||||
config = function()
|
||||
require "config.treesitter"
|
||||
end,
|
||||
},
|
||||
{
|
||||
"sainnhe/edge",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
vim.g.edge_enable_italic = 1
|
||||
vim.g.edge_style = "default"
|
||||
vim.g.edge_menu_selection_background = "purple"
|
||||
end,
|
||||
},
|
||||
{
|
||||
"rmagatti/auto-session",
|
||||
config = function()
|
||||
require("config.autosession")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"lambdalisue/vim-suda",
|
||||
init = function()
|
||||
vim.g.suda_smart_edit = 1
|
||||
end,
|
||||
},
|
||||
{
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
},
|
||||
{
|
||||
"akinsho/bufferline.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("config.barbar")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"mawkler/modicator.nvim",
|
||||
config = function()
|
||||
require("config.modicator")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"shinchu/lightline-gruvbox.vim",
|
||||
},
|
||||
{
|
||||
"jiaoshijie/undotree",
|
||||
config = function()
|
||||
require("config.undotree")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"hiphish/rainbow-delimiters.nvim",
|
||||
enabled = true,
|
||||
},
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
event = "InsertEnter",
|
||||
config = function()
|
||||
require("config.autopairs")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"tpope/vim-fugitive",
|
||||
},
|
||||
{
|
||||
"rcarriga/nvim-notify",
|
||||
config = function()
|
||||
require "config.notify"
|
||||
end,
|
||||
},
|
||||
{
|
||||
"zbirenbaum/copilot.lua",
|
||||
cmd = "Copilot",
|
||||
event = "InsertEnter",
|
||||
config = function()
|
||||
require "config.ai.copilot"
|
||||
end,
|
||||
},
|
||||
{
|
||||
"zbirenbaum/copilot-cmp",
|
||||
config = function ()
|
||||
require "config.ai.copilot_cmp"
|
||||
end,
|
||||
},
|
||||
{
|
||||
"CopilotC-Nvim/CopilotChat.nvim",
|
||||
dependencies = {
|
||||
{ "zbirenbaum/copilot.lua" },
|
||||
{ "nvim-lua/plenary.nvim", branch = "master" },
|
||||
},
|
||||
build = "make tiktoken",
|
||||
config = function()
|
||||
require "config.ai.copilotchat"
|
||||
end,
|
||||
},
|
||||
{
|
||||
"mfussenegger/nvim-dap",
|
||||
config = function()
|
||||
require("config.dapconf")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"mason-org/mason-lspconfig.nvim",
|
||||
opts = {},
|
||||
dependencies = {
|
||||
{ "mason-org/mason.nvim", opts = {} },
|
||||
"neovim/nvim-lspconfig",
|
||||
},
|
||||
},
|
||||
{
|
||||
"folke/lazydev.nvim",
|
||||
ft = "lua",
|
||||
opts = function()
|
||||
require("config.lazydev")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
enabled = true,
|
||||
dependencies = {
|
||||
"williamboman/mason.nvim",
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
"hrsh7th/cmp-buffer",
|
||||
"hrsh7th/cmp-path",
|
||||
"hrsh7th/cmp-cmdline",
|
||||
"hrsh7th/nvim-cmp",
|
||||
"L3MON4D3/LuaSnip",
|
||||
"saadparwaiz1/cmp_luasnip",
|
||||
"j-hui/fidget.nvim",
|
||||
"b0o/schemastore.nvim",
|
||||
"saghen/blink.cmp",
|
||||
},
|
||||
config = function()
|
||||
require("config.format.lspconfig")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"smolck/command-completion.nvim",
|
||||
opts = {
|
||||
border = nil,
|
||||
highlight_selection = true,
|
||||
use_matchfuzzy = true,
|
||||
tab_completion = true,
|
||||
},
|
||||
},
|
||||
{
|
||||
"andweeb/presence.nvim",
|
||||
},
|
||||
{
|
||||
"mfussenegger/nvim-jdtls",
|
||||
},
|
||||
{
|
||||
"ziglang/zig.vim",
|
||||
},
|
||||
{
|
||||
"mg979/vim-visual-multi",
|
||||
branch = "master",
|
||||
},
|
||||
{
|
||||
"elkowar/yuck.vim",
|
||||
},
|
||||
{
|
||||
"f3fora/nvim-texlabconfig",
|
||||
config = function()
|
||||
require("config.format.texlab")
|
||||
end,
|
||||
build = "go build",
|
||||
},
|
||||
{
|
||||
"lancewilhelm/horizon-extended.nvim",
|
||||
},
|
||||
{
|
||||
"vimpostor/vim-tpipeline",
|
||||
},
|
||||
{
|
||||
"yazeed1s/minimal.nvim",
|
||||
config = function()
|
||||
vim.g.minimal_italic_comments = true
|
||||
end,
|
||||
},
|
||||
{
|
||||
"ThePrimeagen/refactoring.nvim",
|
||||
config = function()
|
||||
require("config.format.refactoring")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"Yazeed1s/minimal.nvim",
|
||||
config = function()
|
||||
vim.g.minimal_italic_comments = true
|
||||
vim.g.minimal_italic_functions = true
|
||||
end,
|
||||
},
|
||||
{
|
||||
"aserowy/tmux.nvim",
|
||||
config = function()
|
||||
require("config.terminal.tmux")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"rachartier/tiny-inline-diagnostic.nvim",
|
||||
config = function ()
|
||||
require("config.format.TID")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"ThePrimeagen/harpoon",
|
||||
branch = "harpoon2",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("config.harpoon")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"aznhe21/actions-preview.nvim",
|
||||
config = function()
|
||||
require("config.actions-preview")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"sbdchd/neoformat",
|
||||
config = function()
|
||||
require("config.format.neoformat")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"Zacharias-Brohn/zterm-navigator.nvim",
|
||||
config = function()
|
||||
require("config.terminal.zterm-navigator")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"Fildo7525/pretty_hover",
|
||||
event = "LspAttach",
|
||||
opts = {},
|
||||
},
|
||||
{
|
||||
"artemave/workspace-diagnostics.nvim",
|
||||
},
|
||||
}
|
||||
@@ -1,139 +0,0 @@
|
||||
local cmp = require("cmp")
|
||||
local cmp_lsp = require("cmp_nvim_lsp")
|
||||
local capabilities =
|
||||
vim.tbl_deep_extend("force", {}, vim.lsp.protocol.make_client_capabilities(), cmp_lsp.default_capabilities())
|
||||
|
||||
return {
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = {
|
||||
"williamboman/mason.nvim",
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
"hrsh7th/cmp-buffer",
|
||||
"hrsh7th/cmp-path",
|
||||
"hrsh7th/cmp-cmdline",
|
||||
"hrsh7th/nvim-cmp",
|
||||
"L3MON4D3/LuaSnip",
|
||||
"saadparwaiz1/cmp_luasnip",
|
||||
"j-hui/fidget.nvim",
|
||||
},
|
||||
init = function()
|
||||
require("mason").setup()
|
||||
require("mason-lspconfig").setup({
|
||||
ensure_installed = {
|
||||
"lua_ls",
|
||||
"pyright",
|
||||
"tsserver",
|
||||
"gopls",
|
||||
"rust_analyzer",
|
||||
"clangd",
|
||||
"jsonls",
|
||||
"yamlls",
|
||||
"html",
|
||||
"cssls",
|
||||
},
|
||||
handlers = {
|
||||
function(server_name) -- default handler (optional)
|
||||
require("lspconfig")[server_name].setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
end,
|
||||
|
||||
zls = function()
|
||||
local lspconfig = require("lspconfig")
|
||||
lspconfig.zls.setup({
|
||||
root_dir = lspconfig.util.root_pattern(".git", "build.zig", "zls.json"),
|
||||
settings = {
|
||||
zls = {
|
||||
enable_inlay_hints = true,
|
||||
enable_snippets = true,
|
||||
warn_style = true,
|
||||
},
|
||||
},
|
||||
})
|
||||
vim.g.zig_fmt_parse_errors = 0
|
||||
vim.g.zig_fmt_autosave = 0
|
||||
end,
|
||||
["lua_ls"] = function()
|
||||
local lspconfig = require("lspconfig")
|
||||
lspconfig.lua_ls.setup({
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = { version = "Lua 5.1" },
|
||||
diagnostics = {
|
||||
globals = { "bit", "vim", "it", "describe", "before_each", "after_each" },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
})
|
||||
cmp.setup({
|
||||
completion = { completeopt = "menu,menuone" },
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require("luasnip").lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
|
||||
mapping = {
|
||||
["<C-p>"] = cmp.mapping.select_prev_item(),
|
||||
["<C-n>"] = cmp.mapping.select_next_item(),
|
||||
["<C-d>"] = cmp.mapping.scroll_docs(-4),
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<C-e>"] = cmp.mapping.close(),
|
||||
["<CR>"] = cmp.mapping.confirm({
|
||||
behavior = cmp.ConfirmBehavior.Insert,
|
||||
select = true,
|
||||
}),
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif require("luasnip").expand_or_jumpable() then
|
||||
require("luasnip").expand_or_jump()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif require("luasnip").jumpable(-1) then
|
||||
require("luasnip").jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
-- ["<Up>"] = cmp.mapping(function()
|
||||
-- vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Up>", true, true, true), "n", true)
|
||||
-- end, { "i", "s" }),
|
||||
-- ["<Down>"] = cmp.mapping(function()
|
||||
-- vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Down>", true, true, true), "n", true)
|
||||
-- end, { "i", "s" }),
|
||||
},
|
||||
|
||||
sources = cmp.config.sources({
|
||||
{ name = "path" },
|
||||
{ name = "nvim_lsp" },
|
||||
{ name = "luasnip" },
|
||||
{ name = "buffer" },
|
||||
{ name = "nvim_lua" },
|
||||
}),
|
||||
})
|
||||
|
||||
vim.diagnostic.config({
|
||||
-- update_in_insert = true,
|
||||
float = {
|
||||
focusable = false,
|
||||
style = "minimal",
|
||||
border = "rounded",
|
||||
source = "always",
|
||||
header = "",
|
||||
prefix = "",
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -1,165 +0,0 @@
|
||||
local fn = vim.fn
|
||||
|
||||
local get_active_lsp = function()
|
||||
local msg = "🚫"
|
||||
local buf_ft = vim.api.nvim_get_option_value("filetype", {})
|
||||
local clients = vim.lsp.get_clients({ bufnr = 0 })
|
||||
if next(clients) == nil then
|
||||
return msg
|
||||
end
|
||||
|
||||
for _, client in ipairs(clients) do
|
||||
---@diagnostic disable-next-line: undefined-field
|
||||
local filetypes = client.config.filetypes
|
||||
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
|
||||
return client.name
|
||||
end
|
||||
end
|
||||
return msg
|
||||
end
|
||||
|
||||
local function spell()
|
||||
if vim.o.spell then
|
||||
return string.format("[SPELL]")
|
||||
end
|
||||
|
||||
return ""
|
||||
end
|
||||
|
||||
--- show indicator for Chinese IME
|
||||
local function ime_state()
|
||||
if vim.g.is_mac then
|
||||
local layout = fn.libcall(vim.g.XkbSwitchLib, "Xkb_Switch_getXkbLayout", "")
|
||||
local res = fn.match(layout, [[\v(Squirrel\.Rime|SCIM.ITABC)]])
|
||||
if res ~= -1 then
|
||||
return "[CN]"
|
||||
end
|
||||
end
|
||||
|
||||
return ""
|
||||
end
|
||||
|
||||
local diff = function()
|
||||
local git_status = vim.b.gitsigns_status_dict
|
||||
if git_status == nil then
|
||||
return
|
||||
end
|
||||
|
||||
local modify_num = git_status.changed
|
||||
local remove_num = git_status.removed
|
||||
local add_num = git_status.added
|
||||
|
||||
local info = { added = add_num, modified = modify_num, removed = remove_num }
|
||||
-- vim.print(info)
|
||||
return info
|
||||
end
|
||||
|
||||
local virtual_env = function()
|
||||
-- only show virtual env for Python
|
||||
if vim.bo.filetype ~= "python" then
|
||||
return ""
|
||||
end
|
||||
|
||||
local conda_env = os.getenv("CONDA_DEFAULT_ENV")
|
||||
local venv_path = os.getenv("VIRTUAL_ENV")
|
||||
|
||||
if venv_path == nil then
|
||||
if conda_env == nil then
|
||||
return ""
|
||||
else
|
||||
return string.format(" %s (conda)", conda_env)
|
||||
end
|
||||
else
|
||||
local venv_name = vim.fn.fnamemodify(venv_path, ":t")
|
||||
return string.format(" %s (venv)", venv_name)
|
||||
end
|
||||
end
|
||||
|
||||
return {
|
||||
"nvim-lualine/lualine.nvim",
|
||||
opts = function(_, opts)
|
||||
-- Merge or replace LazyVim's opts with your custom settings
|
||||
opts.options = {
|
||||
icons_enabled = true,
|
||||
theme = "auto",
|
||||
globalstatus = true,
|
||||
component_separators = "",
|
||||
section_separators = { left = "", right = "" },
|
||||
disabled_filetypes = {},
|
||||
always_divide_middle = true,
|
||||
}
|
||||
opts.sections = {
|
||||
lualine_a = { { "mode" } },
|
||||
lualine_b = {
|
||||
{
|
||||
"branch",
|
||||
fmt = function(name, _)
|
||||
return string.sub(name, 1, 20)
|
||||
end,
|
||||
color = { gui = "italic,bold" },
|
||||
separator = { right = "" },
|
||||
},
|
||||
{
|
||||
virtual_env,
|
||||
color = { fg = "black", bg = "#F1CA81" },
|
||||
},
|
||||
},
|
||||
lualine_c = {
|
||||
{
|
||||
"filename",
|
||||
symbols = { readonly = "[🔒]" },
|
||||
},
|
||||
{
|
||||
"diff",
|
||||
source = diff,
|
||||
},
|
||||
{
|
||||
"%S",
|
||||
color = { gui = "bold", fg = "cyan" },
|
||||
},
|
||||
{
|
||||
spell,
|
||||
color = { fg = "black", bg = "#a7c080" },
|
||||
},
|
||||
},
|
||||
lualine_x = {
|
||||
{
|
||||
ime_state,
|
||||
color = { fg = "black", bg = "#f46868" },
|
||||
},
|
||||
{
|
||||
get_active_lsp,
|
||||
icon = " LSP:",
|
||||
},
|
||||
{
|
||||
"diagnostics",
|
||||
sources = { "nvim_diagnostic" },
|
||||
symbols = { error = "🆇 ", warn = "⚠️ ", info = "ℹ️ ", hint = " " },
|
||||
},
|
||||
},
|
||||
lualine_y = {
|
||||
{ "encoding", fmt = string.upper },
|
||||
{
|
||||
"fileformat",
|
||||
symbols = {
|
||||
unix = "",
|
||||
dos = "",
|
||||
mac = "",
|
||||
},
|
||||
},
|
||||
"filetype",
|
||||
},
|
||||
lualine_z = { "progress" },
|
||||
}
|
||||
opts.inactive_sections = {
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_c = { "filename" },
|
||||
lualine_x = { "location" },
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
}
|
||||
opts.tabline = {}
|
||||
opts.extensions = { "quickfix", "fugitive", "nvim-tree" }
|
||||
end,
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
return {
|
||||
"hiphish/rainbow-delimiters.nvim",
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
return {
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("config.telescope")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"propet/colorscheme-persist.nvim",
|
||||
enable = false,
|
||||
dependencies = {
|
||||
"nvim-telescope/telescope.nvim",
|
||||
},
|
||||
lazy = false,
|
||||
config = true,
|
||||
keys = {
|
||||
{
|
||||
"<leader>sp",
|
||||
function()
|
||||
require("colorscheme-persist").picker()
|
||||
end,
|
||||
mode = "n",
|
||||
},
|
||||
},
|
||||
opts = function() -- ✅ Changed to function
|
||||
return {
|
||||
picker_opts = require("telescope.themes").get_dropdown({
|
||||
enable_preview = true,
|
||||
}),
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
return {
|
||||
{
|
||||
"notken12/base46-colors",
|
||||
},
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function ()
|
||||
if vim.env.TMUX then
|
||||
vim.api.nvim_create_autocmd({ "FocusGained", "ColorScheme", "VimEnter" }, {
|
||||
callback = function()
|
||||
vim.defer_fn( function()
|
||||
vim.opt.laststatus = 0
|
||||
end, 100)
|
||||
end,
|
||||
})
|
||||
vim.o.laststatus = 0
|
||||
end
|
||||
require("config.theme.lualine")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"catgoose/nvim-colorizer.lua",
|
||||
config = function()
|
||||
require("config.theme.colorizer")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"olimorris/onedarkpro.nvim",
|
||||
enabled = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
require("config.theme.onedarkpro-light")
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
return {
|
||||
"aserowy/tmux.nvim",
|
||||
navigation = {
|
||||
cycle_navigation = true,
|
||||
enable_default_keybindings = false,
|
||||
},
|
||||
resize = {
|
||||
enable_default_keybindings = false,
|
||||
},
|
||||
swap = {
|
||||
cycle_navigation = true,
|
||||
enable_default_keybindings = false,
|
||||
},
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
return {
|
||||
"jiaoshijie/undotree",
|
||||
opts = {
|
||||
float_diff = true,
|
||||
layout = "left_bottom",
|
||||
position = "left",
|
||||
ignore_filetype = { "undotree", "undotreeDiff", "qf", "TelescopePrompt", "spectre_panel", "tsplayground" },
|
||||
window = {
|
||||
winblend = 30,
|
||||
},
|
||||
keymaps = {
|
||||
["j"] = "move_next",
|
||||
["k"] = "move_prev",
|
||||
["gj"] = "move2parent",
|
||||
["J"] = "move_change_next",
|
||||
["K"] = "move_change_prev",
|
||||
["<cr>"] = "action_enter",
|
||||
["p"] = "enter_diffbuf",
|
||||
["q"] = "quit",
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
Write-Host "NVIM setup script for Windows" -ForegroundColor Green
|
||||
Write-Host "Installing winget packages" -foregroundcolor cyan
|
||||
|
||||
$packages = @(
|
||||
"Neovim.Neovim",
|
||||
"MartinStorsjo.LLVM-MinGW.MSVCRT",
|
||||
"zig.zig",
|
||||
"GnuWin32.Make",
|
||||
"Rustlang.Rust.MSVC",
|
||||
"GoLang.Go",
|
||||
"Kitware.Cmake",
|
||||
"Ninja-build.Ninja",
|
||||
"LuaLS.lua-language-server",
|
||||
"GitHub.cli",
|
||||
"GNU.Wget2",
|
||||
"GnuWin32.UnZip",
|
||||
"GnuWin32.Gzip",
|
||||
"7zip.7zip"
|
||||
)
|
||||
|
||||
for ($i = 0; $i -lt $packages.Count; $i++) {
|
||||
$index = $i + 1
|
||||
Write-Host ("{0,4}) {1}" -f $index, $packages[$i]) -foreground yellow
|
||||
winget install $package
|
||||
}
|
||||
|
||||
if ( !(Get-Command cargo -ErrorAction SilentlyContinue) ) {
|
||||
Write-Host "Cargo is not installed. Please install Rust to proceed." -ForegroundColor Red
|
||||
return
|
||||
} else {
|
||||
Write-Host "Installing cargo package treesitter-cli" -foregroundcolor cyan
|
||||
cargo install --locked tree-sitter-cli
|
||||
}
|
||||
|
||||
$list = @(
|
||||
"Git.Git",
|
||||
"ajeetdsouza.zoxide"
|
||||
)
|
||||
|
||||
Write-Host "`nOptional packages to install:`n" -ForegroundColor Magenta
|
||||
|
||||
for ($i = 0; $i -lt $list.Count; $i++) {
|
||||
$index = $i + 1
|
||||
Write-Host "$index) $($list[$i])" -ForegroundColor Magenta
|
||||
}
|
||||
|
||||
Write-Host "`nInstall all packages? [Y]es / [N]o / [E]dit list: " -ForegroundColor Green -NoNewLine
|
||||
$answer = Read-Host
|
||||
|
||||
switch ($answer.ToLower()) {
|
||||
|
||||
"y" {
|
||||
$selected = $list
|
||||
}
|
||||
|
||||
"n" {
|
||||
Write-Host "No packages will be installed." -ForegroundColor Red
|
||||
return
|
||||
}
|
||||
|
||||
"e" {
|
||||
Write-Host "`nEnter numbers to EXCLUDE (space separated, e.g. 2 3): " -ForegroundColor Yellow -NoNewLine
|
||||
$excludeInput = Read-Host
|
||||
|
||||
$excludeIndexes = $excludeInput -split "\s+" | ForEach-Object { [int]$_ - 1 }
|
||||
|
||||
$selected = @()
|
||||
for ($i = 0; $i -lt $list.Count; $i++) {
|
||||
if ($excludeIndexes -notcontains $i) {
|
||||
$selected += $list[$i]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
default {
|
||||
Write-Host "Invalid option. Exiting." -ForegroundColor Red
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if ($selected.Count -eq 0) {
|
||||
Write-Host "Nothing to install." -ForegroundColor Red
|
||||
return
|
||||
}
|
||||
|
||||
Write-Host "`nInstalling selected packages:`n" -ForegroundColor Cyan
|
||||
|
||||
foreach ($module in $selected) {
|
||||
Write-Host "Installing $module..." -ForegroundColor Yellow
|
||||
winget install --id $module
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
column_width = 120
|
||||
Reference in New Issue
Block a user