Compare commits
865 Commits
Author | SHA1 | Date | |
---|---|---|---|
ab21a47e90 | |||
a1f6780715 | |||
342d6ceb71 | |||
8c7abef745 | |||
ce4d61699a | |||
9b4a1f350b | |||
3f05e24237 | |||
04ebc12b2e | |||
a8afb47638 | |||
4191a22ba4 | |||
8fd8136ef4 | |||
45c6579704 | |||
2c3a45e455 | |||
389645576a | |||
5dd002497d | |||
3d032689fa | |||
9d9e645544 | |||
7b67983b69 | |||
a71d0c02f6 | |||
49978655ae | |||
412a16b28a | |||
5c01002344 | |||
6b5f89632c | |||
0264be4c7c | |||
e570d1d51b | |||
6860da39b0 | |||
232f4df97a | |||
946c9a8a85 | |||
df0db24702 | |||
23dd1811ee | |||
9914c9bd88 | |||
46272b5e46 | |||
f882a43f0b | |||
58ad88736c | |||
5b6177042d | |||
4692812dd9 | |||
68a8642302 | |||
8b99910bb4 | |||
92ec6976c5 | |||
39d973b28b | |||
2e1386a781 | |||
db93b002c1 | |||
af38ccadc5 | |||
b690aa49e6 | |||
13eddb6b56 | |||
0830d8cd5c | |||
1c828c6e89 | |||
f8ebdf8963 | |||
2b21ea5e4e | |||
584ad307d6 | |||
f6c84d7d5b | |||
ee5de708e0 | |||
473a877089 | |||
1b892ce287 | |||
88c1f1b9ed | |||
abc79b2970 | |||
8966af7289 | |||
e1ade38e04 | |||
fec3bf1ed5 | |||
cdfc208d3a | |||
353553c167 | |||
a1ce67e857 | |||
0d24406fa9 | |||
18a85dd239 | |||
0699d2a3a8 | |||
8dedf49447 | |||
cf05586a00 | |||
e835520de0 | |||
942111542b | |||
088f951461 | |||
12d2dd05b5 | |||
07487ff91a | |||
6f56fa264c | |||
08ec2a4579 | |||
1393c83f4f | |||
4e5b974350 | |||
0ccaeed2e5 | |||
345147cc91 | |||
0f83d58058 | |||
aff6baa61e | |||
405cf6e7ac | |||
ed4a7f86b5 | |||
2f6ba7cd62 | |||
2eb6baa626 | |||
9498c776b9 | |||
a1b2f4da15 | |||
028ca26b08 | |||
9c904b2f84 | |||
497429a1c3 | |||
725721af8b | |||
9b58d16e6e | |||
e97c34d65d | |||
54e224ee75 | |||
4604fde5d1 | |||
aca5a2c858 | |||
7b1d7ef35e | |||
89c5cdb7f5 | |||
8020b6efc9 | |||
55423e5964 | |||
b8db9122eb | |||
cc2d3b770a | |||
3a079ee728 | |||
3be7150ca7 | |||
c63bf6b008 | |||
58a98904ac | |||
0c8520dd91 | |||
fcc007ff75 | |||
8bad13c702 | |||
c52ee91856 | |||
d992b11610 | |||
c8c795e65b | |||
8d553071dd | |||
36afa8eb81 | |||
59ae868284 | |||
d5e60bf5ef | |||
c14f537921 | |||
abc1a1367c | |||
5ec3e6623d | |||
fff9f428f9 | |||
6a96a1f273 | |||
3b88285fc1 | |||
eac29c96f3 | |||
ff9d07518c | |||
0e3f5dd9d2 | |||
a2a67558c0 | |||
0c777ffad4 | |||
a2ff3fa50f | |||
ed7efcc18e | |||
7b81bf1dd1 | |||
af6a028aa5 | |||
72154419eb | |||
c94599346a | |||
dc4e43aec4 | |||
eb27bfb343 | |||
787ec2764f | |||
24bb5db0ff | |||
2a72ba7b33 | |||
18a711ec56 | |||
bf5afab3ab | |||
d13360cad6 | |||
45f3998474 | |||
18c0f0063a | |||
1c0e7f6d14 | |||
7726b043d1 | |||
c6a6997667 | |||
71b603512c | |||
bdee2b0401 | |||
f45d6ebb13 | |||
ea7760b0ff | |||
000a7051f1 | |||
faf9573534 | |||
3836f866d6 | |||
1783d82fe2 | |||
30005980ea | |||
5ed8c43e8e | |||
470eee2e4e | |||
a06663a682 | |||
117c865017 | |||
2cc3afb6ee | |||
ed34613fe5 | |||
0e0308a42d | |||
a404864548 | |||
8de05c209e | |||
dd3e41ab6b | |||
9dcaa0def9 | |||
9becf1cfcb | |||
041d681f7a | |||
de5b9c3cf7 | |||
affffaeabe | |||
a69d5ccd89 | |||
dd52da19ff | |||
010acd113f | |||
2cfa266df3 | |||
0ce702e204 | |||
2554ed57cb | |||
8b58c302c1 | |||
ae40f9c438 | |||
8c586aa58d | |||
5ae060e30e | |||
f305c8be6c | |||
cb8be9c3d2 | |||
39c648bbbe | |||
5101091fe7 | |||
eee5d5bbf5 | |||
4b5207e43d | |||
426501b814 | |||
e308de510a | |||
7fe27982d5 | |||
6ec12aabbb | |||
5caf3af08e | |||
f639158d37 | |||
09e126899a | |||
5866008436 | |||
a01e7f84ad | |||
56865bb023 | |||
e20757dfff | |||
6dc6e2a2d3 | |||
5fdc9e902d | |||
561f56d6a2 | |||
1b180e0567 | |||
5e902d667b | |||
92001c6537 | |||
c7fc189175 | |||
3c3e174dad | |||
3860fb3d73 | |||
7cc886c641 | |||
d1ae784c93 | |||
24994a4dba | |||
0a23e9529e | |||
48e0a8f399 | |||
51812867b2 | |||
afae40cd40 | |||
d864aef15a | |||
ac1318acd2 | |||
d4037f677e | |||
45e25283f1 | |||
02fe760d39 | |||
c5d0d9b6ad | |||
1c9eea9dca | |||
97e4abc26b | |||
7548554a89 | |||
02182b7711 | |||
ae5b5fd06b | |||
d57eca961d | |||
82ccaa9c53 | |||
ca3279c762 | |||
0977f89286 | |||
f5ae4bd731 | |||
f9365da441 | |||
01b44d37be | |||
3fe8d4f86d | |||
b8e9373c79 | |||
42c45af705 | |||
638293d7a8 | |||
68562ea1be | |||
87858ea0de | |||
3d3f4e72e2 | |||
89eef9e104 | |||
0d5b0ca292 | |||
e6879ea135 | |||
3b17c39a61 | |||
1137f6c0ab | |||
220fe9ce0f | |||
c4581bfc84 | |||
3e8eb94237 | |||
6eff3343b5 | |||
3442de38f5 | |||
951b772f57 | |||
8e2604d30a | |||
b8b8b02098 | |||
1d1f123a1b | |||
d139425947 | |||
bbd5ddce17 | |||
97eba08fc8 | |||
b17849a136 | |||
c298be4bfd | |||
01d5a598bb | |||
ce098ba0b0 | |||
4131ef418b | |||
57eb3586d9 | |||
4dc7351d8b | |||
79ddb6faca | |||
42de9ba4d8 | |||
cc87de752b | |||
5c5b29a5df | |||
eedf6b26bf | |||
a4818de18e | |||
9c14a43efb | |||
9d9689df95 | |||
1bd3db5a20 | |||
e4604d3a08 | |||
0a37abcc6b | |||
efd30083a8 | |||
1b764b9f0e | |||
657a638309 | |||
2b8d4bfff7 | |||
e0d85e7cbd | |||
d248b8866f | |||
eaada06d1a | |||
9441307921 | |||
aaac8b374c | |||
25ba85d778 | |||
e5fa429a75 | |||
f541e3d193 | |||
2e0c412f67 | |||
a6c3075787 | |||
dffa118b80 | |||
19512716ec | |||
2f1c347a24 | |||
31858bea16 | |||
90cd7ee928 | |||
819fc00188 | |||
a1f501a27d | |||
6d1bfd3e83 | |||
6bbf6325e0 | |||
ee05d192bc | |||
4582fd0c9a | |||
768807cbfe | |||
f25db8737d | |||
db11ddc6c5 | |||
f76909ecf4 | |||
e829e4b1be | |||
cbeffa9b6d | |||
563f74965d | |||
75b5dc1963 | |||
d37abaf353 | |||
38d34d0e86 | |||
1e8eaf3840 | |||
8a801d4b73 | |||
ce4a7ef05e | |||
f26ec9e154 | |||
3ae7846485 | |||
4a21b07bf6 | |||
cbe9c23df0 | |||
9af61291c3 | |||
943f29a165 | |||
34b7cd6167 | |||
4cdf787491 | |||
3c2781930f | |||
eae5c634d9 | |||
41d9095aae | |||
3f24c9a0f8 | |||
b790381843 | |||
89086b70d0 | |||
90173c2e25 | |||
33e27206de | |||
a251c74619 | |||
e3d31b3978 | |||
2ebe9240fa | |||
4fb7e309b2 | |||
404ce56cb5 | |||
81f8b66de4 | |||
713a7072b1 | |||
02e55b113b | |||
5dd9bd87ec | |||
5fff121742 | |||
4e0c89a4c8 | |||
66d9f8d837 | |||
544c4814a8 | |||
0338d00fb5 | |||
b33b0eecea | |||
8894b967f8 | |||
e354f90577 | |||
ea5a1aee44 | |||
bc8ef09a51 | |||
dd7fe850d8 | |||
284000e988 | |||
356a87f4b4 | |||
3e818ddef9 | |||
f631f2ad86 | |||
62411eb1cc | |||
cfc6aaa447 | |||
beecfef93e | |||
2244cd7066 | |||
3b16b57c21 | |||
0792b8274b | |||
ae5247f81c | |||
0691b19e47 | |||
6b1d57e28a | |||
8a8ea01a2f | |||
22d518adcd | |||
5c81abeb5e | |||
f0b4587db4 | |||
4a11883ee4 | |||
5964e8428a | |||
1eaaeeeaad | |||
47279796fc | |||
ed4ad9305e | |||
d5b129b373 | |||
8003a2df42 | |||
48621f8887 | |||
9aea25954f | |||
62e90c9279 | |||
9a5f079e85 | |||
ada6d55021 | |||
c09e59d3e5 | |||
de16bd101c | |||
3ea31df293 | |||
fe7f9a7860 | |||
3bcd87638d | |||
f15e1d7cf4 | |||
a119d0a39a | |||
872e2b4c80 | |||
e488888320 | |||
41bcb301c8 | |||
36a6d599eb | |||
c966acfbe8 | |||
341c5f402b | |||
1df0872c44 | |||
048aef0a7f | |||
9060e1dbb3 | |||
b6b7b5826e | |||
fded32158b | |||
89ba490991 | |||
eefa3b6087 | |||
9150964742 | |||
cf54f4bd90 | |||
32be5a0ce6 | |||
c5f3e71fc3 | |||
493b712291 | |||
6d26280753 | |||
d7f21fb86f | |||
91e8fc21f2 | |||
f303013a15 | |||
088286f87b | |||
1c359f02fe | |||
cc6dd28886 | |||
e72c2f9c6b | |||
242ae277fd | |||
d362ccd264 | |||
3be2ddf908 | |||
1a3a965f41 | |||
cdb768ec25 | |||
086ba55c4a | |||
4978435b1f | |||
0f3ae65892 | |||
cd49c9dfe3 | |||
a3925adf46 | |||
7f6817c852 | |||
3c7148431f | |||
d34858bbc3 | |||
832a09e031 | |||
a10d5bccf4 | |||
bb792a23c8 | |||
87f96d8209 | |||
83f61683bf | |||
6b50294119 | |||
07e8a7b526 | |||
29df2f32b2 | |||
82b12e599c | |||
b1c2599b9e | |||
bf17d5d108 | |||
80e3c762f5 | |||
44376422e0 | |||
851238e0b9 | |||
a5b0466f17 | |||
eb87655ced | |||
99008719e2 | |||
f77d8674be | |||
3dfbd9b8b6 | |||
62ffea7b57 | |||
148a870385 | |||
9207bbe62a | |||
d1900be2af | |||
c72644682d | |||
4665a3b753 | |||
5819910aee | |||
df73cb06c6 | |||
fcd0795561 | |||
6879b11ffa | |||
2ed815894f | |||
476c83e7a8 | |||
90494dfad6 | |||
6b020335df | |||
5f17610dbf | |||
5542c5b564 | |||
bbdfe3d6e8 | |||
903112b0bb | |||
a11811019c | |||
8b373ff24f | |||
03e2166f57 | |||
8bd2e43052 | |||
e725e4deee | |||
f5f903620f | |||
7c8bf66b37 | |||
e8f5e62439 | |||
a94b098588 | |||
4ee5f69566 | |||
a0086b4380 | |||
0139368180 | |||
63ff84fae1 | |||
1e15ac6637 | |||
170aa9c79f | |||
56357acccf | |||
506583b78a | |||
04c9200050 | |||
9e8d143b24 | |||
849cb2a2c7 | |||
3324cb1fff | |||
ebefdb64ff | |||
3e49aa40a5 | |||
6e3a2f931c | |||
4240bd1bde | |||
8f6caa96e5 | |||
97c469b1ef | |||
70a06005fe | |||
dcf6d687b8 | |||
eca6376d79 | |||
33e497133c | |||
bc278c2a62 | |||
99690477af | |||
5b4001d7e8 | |||
02aa672af8 | |||
480b9c5db1 | |||
91faa6b627 | |||
2670f4f656 | |||
7a2c6ecd29 | |||
656ff601a3 | |||
2b592e82ad | |||
a15e7cba84 | |||
d62c914ea5 | |||
1792e54500 | |||
b9cf3aadef | |||
b87bbaee74 | |||
fa0d4ffd8f | |||
c60cf314be | |||
2b0d14d7a1 | |||
7bdf105fac | |||
045a1af8dc | |||
c911f288c6 | |||
c81d9e0bda | |||
561b99ac1b | |||
cfa7b243f3 | |||
6c51bce00d | |||
a7a4319243 | |||
4565a3aabd | |||
413a11e741 | |||
b4e5f2b7b4 | |||
70d6dbda37 | |||
100b358acb | |||
c5e740a70b | |||
7f00267ec8 | |||
9e8672038e | |||
4f5bd49e70 | |||
7d318b2512 | |||
beba8b3c51 | |||
e2c55680ee | |||
a5ceececb5 | |||
ec07710b24 | |||
b9c4ea5413 | |||
520858f6ac | |||
2b48e24a28 | |||
ee1033a856 | |||
1983373ba0 | |||
f2f51655a0 | |||
8de574df32 | |||
ed78b61632 | |||
35552af831 | |||
874cb95f01 | |||
2d3f05b6be | |||
06b46caf29 | |||
42fb43f54b | |||
b35136bae4 | |||
5a1a8e8f3e | |||
78cbde972f | |||
e3c8a5ddd4 | |||
c8e1906f22 | |||
4aa3048e23 | |||
3a70a67737 | |||
2c57a134e3 | |||
0c5f81d6d4 | |||
54e87b448e | |||
1e7fd727c2 | |||
b6e811ab23 | |||
98d3f5cac7 | |||
b0918760d4 | |||
9055e4e876 | |||
4916c4eca2 | |||
ce61facff9 | |||
fd16ef223a | |||
5dd99d7085 | |||
9361934d8a | |||
4f0bab54b5 | |||
e562f3b996 | |||
17b3f53e11 | |||
c136b87b7b | |||
1adb3c8ff2 | |||
b7167a3a47 | |||
62734cac5c | |||
fa41d32ae1 | |||
c52f6304d4 | |||
e1e32cf52c | |||
a62b9ca215 | |||
6b9089ee85 | |||
8fb7e9ad0a | |||
738bcabefe | |||
dc534b5a38 | |||
51183ffd55 | |||
58ae25ee12 | |||
1d9f94e650 | |||
5d7231efa2 | |||
1d436a3df7 | |||
b91b0b48b4 | |||
15f8c3ecf7 | |||
d7705f1dec | |||
74c87cee88 | |||
8fa2f0f0e1 | |||
49edb9e202 | |||
2d5f71805e | |||
45ea60d689 | |||
186052c31a | |||
11b954ff33 | |||
bce0373dfb | |||
e111deabc9 | |||
c5073fe73e | |||
62a276a336 | |||
a188cf2c9f | |||
64f65a1d57 | |||
814ebfa3ce | |||
cdd13eeccc | |||
f638d730ad | |||
c0dc96fd9d | |||
3546f84367 | |||
8ef35063dd | |||
0fcdf98cf3 | |||
78544dcdbf | |||
d8dee9c878 | |||
fa5c5f32a4 | |||
4c3fce3ba2 | |||
8f26b25bef | |||
e93e47bd69 | |||
2ff32c06fd | |||
fb5373f0a7 | |||
0b17bf0cfb | |||
11140c602e | |||
c8f9050caf | |||
51eab5c6ea | |||
9c86c2a32e | |||
9b8097dc36 | |||
15b03ee11f | |||
4b3bc84837 | |||
861b60e4f7 | |||
ff7a190162 | |||
a2f360ddb4 | |||
66477e10a0 | |||
c8bbbe4057 | |||
f7536e94ae | |||
a09b75f16e | |||
56797a2564 | |||
a64aeb9dd6 | |||
350d42333a | |||
45f61cf7fe | |||
4b532e698f | |||
9fc33c2b44 | |||
474fe4cb44 | |||
ea267d690f | |||
c23240ab03 | |||
8c672f19db | |||
476205ce47 | |||
837a273774 | |||
3d0b66c7ab | |||
0dfcf42beb | |||
8ea3ed7a79 | |||
518f32d3bb | |||
db1ad041ab | |||
76249b2a8a | |||
e2460a2425 | |||
5b6ae54763 | |||
3272e4067f | |||
1e8201cd13 | |||
7629d6d57e | |||
d0c31ea3b7 | |||
570b9fe329 | |||
739b2154eb | |||
edc73d3639 | |||
d91ae17970 | |||
f9d34430ae | |||
74e6cc3bb4 | |||
7e31d668ee | |||
4bbf17633d | |||
a7a5a41f8d | |||
a3942972d8 | |||
ea6e95aca8 | |||
67067bde77 | |||
d3e3bbc903 | |||
dbfd744f97 | |||
b4d08255a5 | |||
827adacc68 | |||
89b1d53451 | |||
4ba64948eb | |||
48acab5f4b | |||
0115553f37 | |||
a85b634110 | |||
a24b928433 | |||
4c9b016540 | |||
e32ff73562 | |||
774fdda969 | |||
612ec0cbe6 | |||
c19072c4cd | |||
e72eaa724e | |||
e6d1091430 | |||
59d9b95eb9 | |||
ebd55ecc55 | |||
41ce8f2063 | |||
652a1c2aa7 | |||
988db59976 | |||
54e6d1b844 | |||
bf80f95a9a | |||
99e1139337 | |||
382871be03 | |||
1ba7731c16 | |||
4a21802429 | |||
087e0faad2 | |||
14fd19bde6 | |||
8030c44a93 | |||
49f8494072 | |||
69b5cace69 | |||
5a22a03eba | |||
c9c630ce61 | |||
c792c0839b | |||
80cff42519 | |||
d019626efb | |||
8953d89f3c | |||
860b97c24c | |||
deb6dea93b | |||
b396169fca | |||
6a8c84250f | |||
894dba3337 | |||
8ebf953ec7 | |||
3aea401281 | |||
98a9f00bd6 | |||
03c102be95 | |||
3b3bc5b937 | |||
5d4cf9bfdc | |||
219a8c3e81 | |||
d7b2cc3156 | |||
f9888e9c2a | |||
8b79b38ca0 | |||
d6f71c8ab2 | |||
23a3a8f7c6 | |||
d525388f3f | |||
4bd385dd55 | |||
f9d9bbd258 | |||
c607af6115 | |||
b12a673ba1 | |||
3c9ecc9d53 | |||
be42757e5e | |||
8020639f31 | |||
ec56132c85 | |||
3392ebe270 | |||
ad480c4d35 | |||
49bb25aec6 | |||
c27b582b89 | |||
9e2890aed9 | |||
0a31d71c0c | |||
7b776c7e9f | |||
1f60a85098 | |||
688493d39d | |||
b099ba7efd | |||
0c66846e4e | |||
d609883ff7 | |||
5ad1c4be90 | |||
5f357b0db5 | |||
0a60ff63bd | |||
a1bff62966 | |||
3a0e386252 | |||
37b7a68c45 | |||
607245c47d | |||
2c277ee846 | |||
37d7e60eef | |||
2951e86e06 | |||
228171561f | |||
b1754cf7db | |||
1f8ef76f81 | |||
9b4fcca0ce | |||
d9f90a1f4b | |||
5b4878f76d | |||
c6d9e5b891 | |||
b31bd343fa | |||
c6bdb676aa | |||
2bdc01b56f | |||
6eba3c6f3a | |||
3b66cc0b3c | |||
db6d89471c | |||
892ac617ee | |||
c54a515556 | |||
20cb51e2b5 | |||
d6930cbb2f | |||
76a7aad423 | |||
c921ae0f4f | |||
8db95a1880 | |||
4a6de72626 | |||
6c8531b67a | |||
e34744b677 | |||
8cafa90c01 | |||
2da1322e7f | |||
c65f2c543b | |||
7bd0f10847 | |||
2c4617f462 | |||
5dde3be206 | |||
4fbe1c4174 | |||
d7b49c4c4b | |||
8a000f811c | |||
7f99415c02 | |||
257d2fffcf | |||
3dc493ff7e | |||
651d1d0d2f | |||
579cdff054 | |||
96e1f3f6ed | |||
99e257dbc1 | |||
f0f1c35740 | |||
2425d5f29d | |||
ab1de6c1de | |||
595a4d287b | |||
641d2e0c9e | |||
1c10794866 | |||
204f38c947 | |||
ee3b97648a | |||
4462d4af5c | |||
f307fb2124 | |||
d23279a4a4 | |||
8220799933 | |||
752814db02 | |||
d57067ea70 | |||
198141f63f | |||
018c25d0d7 | |||
04d69955d7 | |||
434611abf4 | |||
f9d0bf5366 | |||
479c8686eb | |||
aa7bc38af6 | |||
e3a6774b76 | |||
d219e43cc7 | |||
cb2b0e521f | |||
c3deaa45c6 | |||
4c543d7f44 | |||
8860d92ed1 | |||
a3d76bbd15 | |||
a1d6d33b34 | |||
fbdad999cd | |||
cf9b76d0e0 | |||
c0aa5e03d0 | |||
86b8b65c99 | |||
61a052b960 | |||
7e1182a11b | |||
d1b14f05c1 | |||
961ec74fbd | |||
f8ff3b647f | |||
79486cd892 | |||
da4f4674a5 | |||
4a076eacd9 | |||
7e40d7732f | |||
b259a2ae23 | |||
c643e834e0 | |||
ff41531888 | |||
3a700044c4 | |||
3209e01c99 | |||
9bf991c537 | |||
b8bca37446 | |||
86b5aeb691 | |||
464644246c | |||
6689c9b523 | |||
4c5aa10996 | |||
29b32edada | |||
667e42fe57 | |||
4dd3918382 | |||
bec752c6b7 | |||
ab444ed7d9 | |||
bd3af2a9a4 | |||
e72fa7324b | |||
577a3cd1a7 | |||
0d93bc8fa5 | |||
9325519929 | |||
71321b1d16 | |||
faeea7fb5f | |||
5c4e7a4000 | |||
cfff367b83 | |||
25a5283cd6 | |||
3f9a7f38fb | |||
0e13e43fc3 | |||
0e92584aaf | |||
b7020671d7 | |||
31ca3a6d00 | |||
8fabdb2d07 | |||
6db33686b5 |
115
.clang-tidy
Normal file
115
.clang-tidy
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
Checks: 'readability-*,
|
||||||
|
bsl-*,
|
||||||
|
cppcoreguidelines-*,
|
||||||
|
cppcoreguidelines-prefer-member-initializer,
|
||||||
|
clang-analyzer-core.*,
|
||||||
|
clang-analyzer-core.StackAddressEscape,
|
||||||
|
bugprone-assert-side-effect,
|
||||||
|
bugprone-assignment-in-if-condition,
|
||||||
|
bugprone-branch-clone,
|
||||||
|
bugprone-copy-constructor-init,
|
||||||
|
bugprone-exception-escape,
|
||||||
|
bugprone-forward-declaration-namespace,
|
||||||
|
bugprone-incorrect-roundings,
|
||||||
|
bugprone-infinite-loop,
|
||||||
|
bugprone-integer-division,
|
||||||
|
bugprone-macro-parentheses,
|
||||||
|
bugprone-multiple-statement-macro,
|
||||||
|
bugprone-parent-virtual-call,
|
||||||
|
bugprone-redundant-branch-condition,
|
||||||
|
bugprone-reserved-identifier,
|
||||||
|
bugprone-sizeof-container,
|
||||||
|
bugprone-sizeof-expression,
|
||||||
|
bugprone-string-constructor,
|
||||||
|
bugprone-string-integer-assignment,
|
||||||
|
bugprone-suspicious-enum-usage,
|
||||||
|
bugprone-suspicious-include,
|
||||||
|
bugprone-suspicious-missing-comma,
|
||||||
|
bugprone-suspicious-semicolon,
|
||||||
|
bugprone-swapped-arguments,
|
||||||
|
bugprone-terminating-continue,
|
||||||
|
bugprone-too-small-loop-variable,
|
||||||
|
bugprone-use-after-move,
|
||||||
|
misc-redundant-expression,
|
||||||
|
misc-unused-parameters,
|
||||||
|
misc-const-correctness,
|
||||||
|
misc-confusable-identifiers,
|
||||||
|
misc-definitions-in-headers,
|
||||||
|
misc-header-include-cycle,
|
||||||
|
misc-include-cleaner,
|
||||||
|
misc-misplaced-const,
|
||||||
|
misc-static-assert,
|
||||||
|
modernize-use-default-member-init,
|
||||||
|
modernize-loop-convert,
|
||||||
|
modernize-min-max-use-initializer-list,
|
||||||
|
modernize-pass-by-value,
|
||||||
|
modernize-return-braced-init-list,
|
||||||
|
modernize-use-default-member-init,
|
||||||
|
modernize-use-designated-initializers,
|
||||||
|
modernize-use-equals-default,
|
||||||
|
modernize-use-equals-delete,
|
||||||
|
modernize-use-nullptr,
|
||||||
|
modernize-use-override,
|
||||||
|
modernize-use-starts-ends-with,
|
||||||
|
modernize-use-using,
|
||||||
|
readability-identifier-naming,
|
||||||
|
readability-duplicate-include,
|
||||||
|
readability-braces-around-statements,
|
||||||
|
readability-implicit-bool-conversion,
|
||||||
|
readability-inconsistent-declaration-parameter-name,
|
||||||
|
readability-make-member-function-const,
|
||||||
|
readability-misleading-indentation,
|
||||||
|
readability-redundant-declaration,
|
||||||
|
readability-redundant-preprocessor,
|
||||||
|
readability-redundant-member-init,
|
||||||
|
readability-simplify-boolean-expr,
|
||||||
|
readability-static-accessed-through-instance,
|
||||||
|
readability-uppercase-literal-suffix,
|
||||||
|
readability-identifier-naming,
|
||||||
|
readability-duplicate-include,
|
||||||
|
readability-braces-around-statements,
|
||||||
|
readability-implicit-bool-conversion,
|
||||||
|
readability-inconsistent-declaration-parameter-name,
|
||||||
|
readability-make-member-function-const,
|
||||||
|
readability-const-return-type,
|
||||||
|
readability-non-const-parameter,
|
||||||
|
hicpp-signed-bitwise,
|
||||||
|
-readability-avoid-const-params-in-decls,
|
||||||
|
-readability-function-cognitive-complexity,
|
||||||
|
-readability-magic-numbers,
|
||||||
|
-readability-identifier-length,
|
||||||
|
-cppcoreguidelines-explicit-virtual-functions,
|
||||||
|
-cppcoreguidelines-init-variables,
|
||||||
|
-cppcoreguidelines-non-private-member-variables-in-classes,
|
||||||
|
-cppcoreguidelines-avoid-magic-numbers,
|
||||||
|
-cppcoreguidelines-owning-memory,
|
||||||
|
-cppcoreguidelines-pro-bounds-constant-array-index,
|
||||||
|
-cppcoreguidelines-special-member-functions,
|
||||||
|
-cppcoreguidelines-avoid-c-arrays,
|
||||||
|
-cppcoreguidelines-pro-type-reinterpret-cast,
|
||||||
|
-cppcoreguidelines-avoid-non-const-global-variables,
|
||||||
|
-cppcoreguidelines-pro-bounds-pointer-arithmetic'
|
||||||
|
CheckOptions:
|
||||||
|
- key: readability-identifier-naming.NamespaceCase
|
||||||
|
value: lower_case
|
||||||
|
- key: readability-identifier-naming.ClassCase
|
||||||
|
value: CamelCase
|
||||||
|
- key: readability-identifier-naming.PrivateMemberPrefix
|
||||||
|
value: m_
|
||||||
|
- key: readability-identifier-naming.StructCase
|
||||||
|
value: CamelCase
|
||||||
|
- key: readability-identifier-naming.FunctionCase
|
||||||
|
value: camelBack
|
||||||
|
- key: readability-identifier-naming.VariableCase
|
||||||
|
value: camelBack
|
||||||
|
- key: readability-identifier-naming.GlobalConstantCase
|
||||||
|
value: UPPER_CASE
|
||||||
|
- key: readability-identifier-naming.EnumConstant
|
||||||
|
value: UPPER_CASE
|
||||||
|
- key: bugprone-argument-comment.StrictMode
|
||||||
|
value: 1
|
||||||
|
- key: bugprone-exception-escape.FunctionsThatShouldNotThrow
|
||||||
|
value: WinMain,SDL_main
|
||||||
|
- key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
|
||||||
|
value: 1
|
||||||
|
|
71
.clangd
Normal file
71
.clangd
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
Diagnostics:
|
||||||
|
UnusedIncludes: Strict
|
||||||
|
ClangTidy:
|
||||||
|
Add:
|
||||||
|
- cppcoreguidelines-*
|
||||||
|
- clang-analyzer-core.*
|
||||||
|
- bugprone-assert-side-effect
|
||||||
|
- bugprone-branch-clone
|
||||||
|
- bugprone-copy-constructor-init
|
||||||
|
- bugprone-exception-escape
|
||||||
|
- bugprone-forward-declaration-namespace
|
||||||
|
- bugprone-incorrect-roundings
|
||||||
|
- bugprone-infinite-loop
|
||||||
|
- bugprone-integer-division
|
||||||
|
- bugprone-macro-parentheses
|
||||||
|
- bugprone-multiple-statement-macro
|
||||||
|
- bugprone-parent-virtual-call
|
||||||
|
- bugprone-redundant-branch-condition
|
||||||
|
- bugprone-reserved-identifier
|
||||||
|
- bugprone-sizeof-container
|
||||||
|
- bugprone-sizeof-expression
|
||||||
|
- bugprone-string-constructor
|
||||||
|
- bugprone-string-integer-assignment
|
||||||
|
- bugprone-suspicious-enum-usage
|
||||||
|
- bugprone-suspicious-include
|
||||||
|
- bugprone-suspicious-missing-comma
|
||||||
|
- bugprone-suspicious-semicolon
|
||||||
|
- bugprone-swapped-arguments
|
||||||
|
- bugprone-terminating-continue
|
||||||
|
- bugprone-too-small-loop-variable
|
||||||
|
- llvm-namespace-comment
|
||||||
|
- misc-definitions-in-headers
|
||||||
|
- misc-redundant-expression
|
||||||
|
- misc-unused-parameters
|
||||||
|
- hicpp-signed-bitwise
|
||||||
|
- readability-identifier-naming
|
||||||
|
- readability-duplicate-include
|
||||||
|
- readability-braces-around-statements
|
||||||
|
- readability-implicit-bool-conversion
|
||||||
|
- readability-inconsistent-declaration-parameter-name
|
||||||
|
- readability-make-member-function-const
|
||||||
|
- readability-misleading-indentation
|
||||||
|
- readability-redundant-declaration
|
||||||
|
- readability-redundant-preprocessor
|
||||||
|
- readability-redundant-member-init
|
||||||
|
- readability-simplify-boolean-expr
|
||||||
|
- readability-static-accessed-through-instance
|
||||||
|
- readability-uppercase-literal-suffix
|
||||||
|
Remove:
|
||||||
|
- readability-avoid-const-params-in-decls
|
||||||
|
- readability-function-cognitive-complexity
|
||||||
|
- readability-magic-numbers
|
||||||
|
- readability-identifier-length
|
||||||
|
- cppcoreguidelines-explicit-virtual-functions
|
||||||
|
- cppcoreguidelines-init-variables
|
||||||
|
- cppcoreguidelines-non-private-member-variables-in-classes
|
||||||
|
- cppcoreguidelines-avoid-magic-numbers
|
||||||
|
- cppcoreguidelines-owning-memory
|
||||||
|
- cppcoreguidelines-pro-bounds-constant-array-index
|
||||||
|
- cppcoreguidelines-special-member-functions
|
||||||
|
- cppcoreguidelines-avoid-c-arrays
|
||||||
|
- cppcoreguidelines-pro-type-reinterpret-cast
|
||||||
|
CheckOptions:
|
||||||
|
readability-identifier-naming.FunctionCase: camelBack
|
||||||
|
readability-identifier-naming.NamespaceCase: lower_case
|
||||||
|
readability-identifier-naming.ClassCase: CamelCase
|
||||||
|
readability-identifier-naming.PrivateMemberPrefix: m_
|
||||||
|
readability-identifier-naming.StructCase: CamelCase
|
||||||
|
readability-identifier-naming.VariableCase: camelBack
|
||||||
|
readability-identifier-naming.GlobalConstantCase: UPPER_CASE
|
||||||
|
readability-identifier-naming.EnumConstant: UPPER_CASE
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -5,3 +5,7 @@ vim.bundle
|
|||||||
plugged
|
plugged
|
||||||
rplugin.vim
|
rplugin.vim
|
||||||
plugin/packer_compiled.lua
|
plugin/packer_compiled.lua
|
||||||
|
venv_debugpy
|
||||||
|
.luarc.json
|
||||||
|
.luarc.json
|
||||||
|
Session.vim
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json",
|
|
||||||
"Lua.diagnostics.disable": ["undefined-global"]
|
|
||||||
}
|
|
||||||
|
|
5
.pre-commit-config.yaml
Normal file
5
.pre-commit-config.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
repos:
|
||||||
|
- repo: https://github.com/JohnnyMorganz/stylua
|
||||||
|
rev: v2.0.2
|
||||||
|
hooks:
|
||||||
|
- id: stylua-system
|
7
after/lsp/basedpyright.lua
Normal file
7
after/lsp/basedpyright.lua
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
settings = {
|
||||||
|
basedpyright = {
|
||||||
|
typeCheckingMode = 'standard',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
21
after/lsp/clangd.lua
Normal file
21
after/lsp/clangd.lua
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
return {
|
||||||
|
cmd = {
|
||||||
|
'clangd',
|
||||||
|
'--compile-commands-dir=build_nvim',
|
||||||
|
'--query-driver',
|
||||||
|
'/opt/cortex-a78-2022.08-gcc12.1-linux5.15/bin/aarch64-linux-gnu-g*',
|
||||||
|
'--clang-tidy',
|
||||||
|
'--background-index',
|
||||||
|
'--use-dirty-headers',
|
||||||
|
'--completion-style=detailed',
|
||||||
|
},
|
||||||
|
root_markers = {
|
||||||
|
'.clangd',
|
||||||
|
'.clang-tidy',
|
||||||
|
'.clang-format',
|
||||||
|
'compile_flags.txt',
|
||||||
|
'configure.ac',
|
||||||
|
'.git',
|
||||||
|
'build_nvim',
|
||||||
|
},
|
||||||
|
}
|
22
after/lsp/lua_ls.lua
Normal file
22
after/lsp/lua_ls.lua
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
return {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
workspace = {
|
||||||
|
checkThirdParty = false,
|
||||||
|
},
|
||||||
|
completion = {
|
||||||
|
callSnippet = 'Replace',
|
||||||
|
},
|
||||||
|
-- Do not send telemetry data containing a randomized but unique identifier
|
||||||
|
telemetry = {
|
||||||
|
enable = false,
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
disable = { 'missing-fields' },
|
||||||
|
},
|
||||||
|
format = {
|
||||||
|
enable = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
7
after/lsp/yamlls.lua
Normal file
7
after/lsp/yamlls.lua
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
settings = {
|
||||||
|
yaml = {
|
||||||
|
validate = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
1
after/syntax/norg.lua
Normal file
1
after/syntax/norg.lua
Normal file
@ -0,0 +1 @@
|
|||||||
|
vim.opt_local.conceallevel = 3
|
4
ftplugin/markdown.lua
Normal file
4
ftplugin/markdown.lua
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
local opts = { noremap = true, silent = false }
|
||||||
|
vim.keymap.set('n', '<CR>', vim.lsp.buf.definition, opts)
|
||||||
|
|
||||||
|
vim.opt_local.conceallevel = 0
|
141
init.lua
141
init.lua
@ -1,135 +1,8 @@
|
|||||||
local cmd = vim.cmd -- to execute Vim commands e.g. cmd('pwd')
|
vim.g.mapleader = ','
|
||||||
local fn = vim.fn -- to call Vim functions e.g. fn.bufnr()
|
vim.g.maplocalleader = ','
|
||||||
local g = vim.g -- a table to access global variables
|
if not vim.g.vscode then
|
||||||
local opt = vim.opt -- to set options
|
require('config.lazy')
|
||||||
local utils = require('utils')
|
|
||||||
|
|
||||||
-------------------- PACKER --------------------------------
|
|
||||||
-- Auto install packer.nvim if not exists
|
|
||||||
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
|
|
||||||
if fn.empty(fn.glob(install_path)) > 0 then
|
|
||||||
fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
|
|
||||||
vim.cmd 'packadd packer.nvim'
|
|
||||||
end
|
|
||||||
vim.cmd [[packadd packer.nvim]]
|
|
||||||
-------------------- EXTERNAL ------------------------------
|
|
||||||
require('my_plugins')
|
|
||||||
require('my_keymappings')
|
require('my_keymappings')
|
||||||
require('my_options')
|
require('my_autocommands')
|
||||||
require("my_autocommands")
|
require('config.options')
|
||||||
|
end
|
||||||
-- plugins
|
|
||||||
require('my_telescope')
|
|
||||||
require('my_lspinstall')
|
|
||||||
require('my_cmp')
|
|
||||||
-------------------- TREE-SITTER ---------------------------
|
|
||||||
require('nvim-treesitter.configs').setup({
|
|
||||||
ensure_installed = 'maintained',
|
|
||||||
highlight = {
|
|
||||||
enable = true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
-------------------- GITSIGNS ------------------------------
|
|
||||||
require('gitsigns').setup()
|
|
||||||
-------------------- NVIM-TREE -----------------------------
|
|
||||||
require('nvim-tree').setup({
|
|
||||||
auto_close = true,
|
|
||||||
update_cwd = true,
|
|
||||||
update_to_buf_dir = {
|
|
||||||
-- enable the feature
|
|
||||||
enable = true,
|
|
||||||
-- allow to open the tree if it was previously closed
|
|
||||||
auto_open = false,
|
|
||||||
},
|
|
||||||
update_focused_file = {
|
|
||||||
enable = true,
|
|
||||||
update_cwd = false,
|
|
||||||
ignore_list = {}
|
|
||||||
},
|
|
||||||
diagnostics = {
|
|
||||||
enable = true,
|
|
||||||
icons = {
|
|
||||||
hint = "",
|
|
||||||
info = "",
|
|
||||||
warning = "",
|
|
||||||
error = "",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
})
|
|
||||||
utils.map('n', '<leader>tt', '<cmd>NvimTreeToggle<CR>')
|
|
||||||
g.nvim_tree_highlight_opened_files = 1
|
|
||||||
g.nvim_tree_respect_buf_cwd = 1
|
|
||||||
-------------------- COMMENTED -----------------------------
|
|
||||||
require('Comment').setup({
|
|
||||||
toggler = {
|
|
||||||
---line-comment toggle
|
|
||||||
line = '<leader>cc',
|
|
||||||
},
|
|
||||||
opleader = {
|
|
||||||
---line-comment opfunc mapping
|
|
||||||
line = '<leader>c',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
-------------------- CMAKE ---------------------------------
|
|
||||||
require('telescope').load_extension('cmake')
|
|
||||||
require('cmake').setup({
|
|
||||||
parameters_file = 'neovim.json', -- JSON file to store information about selected target, run arguments and build type.
|
|
||||||
build_dir = '{cwd}/build_nvim', -- Build directory. The expressions `{cwd}`, `{os}` and `{build_type}` will be expanded with the corresponding text values.
|
|
||||||
})
|
|
||||||
utils.map('n', '<F5>', ':CMake build<CR>:copen<CR>')
|
|
||||||
|
|
||||||
-- msbuild errorformat
|
|
||||||
opt.errorformat:append("\\ %#%f(%l\\\\\\,%c):\\ %m")
|
|
||||||
-- cl.exe errorformat
|
|
||||||
-- o.errorformat:append('\ %#%f(%l) : %#%t%[A-z]%# %m')
|
|
||||||
|
|
||||||
-------------------- NEOCLIP -------------------------------
|
|
||||||
require('neoclip').setup({
|
|
||||||
default_register = '+',
|
|
||||||
})
|
|
||||||
require('telescope').load_extension('neoclip')
|
|
||||||
-------------------- LUALINE -------------------------------
|
|
||||||
require('lualine').setup {
|
|
||||||
options = {theme = 'gruvbox'},
|
|
||||||
sections = {lualine_c = {'getcwd', 'filename', 'nvim_treesitter#statusline'},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-------------------- PROJECT -------------------------------
|
|
||||||
require("project_nvim").setup {
|
|
||||||
silent_chdir = true,
|
|
||||||
}
|
|
||||||
require('telescope').load_extension('projects')
|
|
||||||
utils.map('n', '<space>p', '<cmd>Telescope projects<cr>')
|
|
||||||
-------------------- TS-RAINBOW ----------------------------
|
|
||||||
require'nvim-treesitter.configs'.setup {
|
|
||||||
rainbow = {
|
|
||||||
enable = true,
|
|
||||||
extended_mode = true, -- Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean
|
|
||||||
max_file_lines = nil, -- Do not enable for files with more than n lines, int
|
|
||||||
-- colors = {}, -- table of hex strings
|
|
||||||
-- termcolors = {} -- table of colour name strings
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-------------------- LUASNIP -------------------------------
|
|
||||||
require("luasnip.loaders.from_vscode").load()
|
|
||||||
-------------------- AUTOPAIRS -----------------------------
|
|
||||||
require('nvim-autopairs').setup{}
|
|
||||||
-------------------- FZF NATIVE ----------------------------
|
|
||||||
require('telescope').load_extension('fzf')
|
|
||||||
-------------------- TERMINAL ------------------------------
|
|
||||||
require('nvim-terminal').setup({
|
|
||||||
toggle_keymap = '<leader>z',
|
|
||||||
})
|
|
||||||
-------------------- INDENT-BLANKLINE ----------------------
|
|
||||||
opt.listchars:append("eol:↴")
|
|
||||||
-- opt.listchars:append("space: ")
|
|
||||||
opt.listchars:append("trail: ")
|
|
||||||
opt.listchars:append("tab:→ ")
|
|
||||||
|
|
||||||
require("indent_blankline").setup {
|
|
||||||
show_end_of_line = true,
|
|
||||||
use_treesitter = true,
|
|
||||||
show_current_context = true,
|
|
||||||
context_patterns = {'class', 'function', 'method', 'block', '^if', '^for', '^while'},
|
|
||||||
}
|
|
||||||
|
|
||||||
|
82
lazy-lock.json
Normal file
82
lazy-lock.json
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
{
|
||||||
|
"Comment.nvim": { "branch": "master", "commit": "e51f2b142d88bb666dcaa77d93a07f4b419aca70" },
|
||||||
|
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" },
|
||||||
|
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
|
||||||
|
"astrotheme": { "branch": "main", "commit": "f12dcf64b1f9a05839c3ac2146f550f43bae9dab" },
|
||||||
|
"avante.nvim": { "branch": "main", "commit": "adae032f5fbc611d59545792d3c5bb1c9ddc3fdb" },
|
||||||
|
"bamboo.nvim": { "branch": "master", "commit": "97124a0b81f886abc0d666ebec512b92425d67b6" },
|
||||||
|
"blink.cmp": { "branch": "main", "commit": "49f211fe5d729df53df4c042d7c3464cf47d199e" },
|
||||||
|
"cmake-tools.nvim": { "branch": "master", "commit": "1ee065c33ca777c0e03cd7c358010202ee70bb88" },
|
||||||
|
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||||
|
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
|
||||||
|
"cmp-cmdline-history": { "branch": "master", "commit": "003573b72d4635ce636234a826fa8c4ba2895ffe" },
|
||||||
|
"cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
|
||||||
|
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" },
|
||||||
|
"cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
|
||||||
|
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||||
|
"codecompanion.nvim": { "branch": "main", "commit": "d19670a44c35e9ba0674cc7a25ff3b8f22bbf062" },
|
||||||
|
"codeium.nvim": { "branch": "main", "commit": "821b570b526dbb05b57aa4ded578b709a704a38a" },
|
||||||
|
"conform.nvim": { "branch": "master", "commit": "374aaf384e2e841607b8e2fe63fa3ad01d111c91" },
|
||||||
|
"copilot-cmp": { "branch": "master", "commit": "15fc12af3d0109fa76b60b5cffa1373697e261d1" },
|
||||||
|
"copilot.lua": { "branch": "master", "commit": "2fe34db04570f6c47db0b752ca421a49b7357c03" },
|
||||||
|
"dial.nvim": { "branch": "master", "commit": "2c7e2750372918f072a20f3cf754d845e143d7c9" },
|
||||||
|
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||||
|
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
|
||||||
|
"everforest-nvim": { "branch": "main", "commit": "2eb7c348f880ba93de4d98cae049c9441f5d4d49" },
|
||||||
|
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
|
||||||
|
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||||
|
"fzf-lua": { "branch": "main", "commit": "b45881a2043d96506ba628f3bc65a4594b179c4e" },
|
||||||
|
"gitsigns.nvim": { "branch": "main", "commit": "43b0c856ae5f32a195d83f4a27fe21d63e6c966c" },
|
||||||
|
"grug-far.nvim": { "branch": "main", "commit": "78c8d27c6f3300bfa92bb535236732d8e9bcb614" },
|
||||||
|
"gruvbox-baby": { "branch": "main", "commit": "bd52e62d8134647090108189e69c8b3cd18bdbbf" },
|
||||||
|
"gruvbox-flat.nvim": { "branch": "master", "commit": "1dc35c81da30d297f82d438ff362cf1b01d36782" },
|
||||||
|
"gruvbox.nvim": { "branch": "main", "commit": "cc202a7c5e5ffca06f92a04073275dec371cbfe3" },
|
||||||
|
"img-clip.nvim": { "branch": "main", "commit": "08a02e14c8c0d42fa7a92c30a98fd04d6993b35d" },
|
||||||
|
"iron.nvim": { "branch": "master", "commit": "c005b01b779f1b6c038e11248db403bb3df6a7f3" },
|
||||||
|
"kanagawa.nvim": { "branch": "master", "commit": "4de88d695634a8776c687af8e7436cfa074aa0c0" },
|
||||||
|
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||||
|
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
|
||||||
|
"lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
|
||||||
|
"lualine-diagnostic-message": { "branch": "master", "commit": "e8244c4d1f088e21bb05021f164ed903093b168b" },
|
||||||
|
"lualine.nvim": { "branch": "master", "commit": "15884cee63a8c205334ab13ab1c891cd4d27101a" },
|
||||||
|
"luvit-meta": { "branch": "main", "commit": "1df30b60b1b4aecfebc785aa98943db6c6989716" },
|
||||||
|
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
|
||||||
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "d39a75bbce4b8aad5d627191ea915179c77c100f" },
|
||||||
|
"mason-tool-installer.nvim": { "branch": "main", "commit": "62f821a14e20f3f2ee358cd44d0b3d299a508e72" },
|
||||||
|
"mason.nvim": { "branch": "main", "commit": "7c7318e8bae7e3536ef6b9e86b9e38e74f2e125e" },
|
||||||
|
"material.nvim": { "branch": "main", "commit": "c8ff153d2c2b22f8b2c9bcce0d741ab55c00cfed" },
|
||||||
|
"mini.ai": { "branch": "main", "commit": "e139eb1101beb0250fea322f8c07a42f0f175688" },
|
||||||
|
"mini.sessions": { "branch": "main", "commit": "71c9ae596664ac110560d27eb928fc24e22bc53d" },
|
||||||
|
"mini.surround": { "branch": "main", "commit": "aa5e245829dd12d8ff0c96ef11da28681d6049aa" },
|
||||||
|
"monokai-pro.nvim": { "branch": "master", "commit": "31bad737610ec211de086d373c73025f39de93cb" },
|
||||||
|
"neogen": { "branch": "main", "commit": "d7f9461727751fb07f82011051338a9aba07581d" },
|
||||||
|
"neogit": { "branch": "master", "commit": "a58ab1befb5608b8ff36a2286360df8263791c1c" },
|
||||||
|
"neotest": { "branch": "master", "commit": "2d9011396c43fa1d40221e6b6c3be5eb001427a9" },
|
||||||
|
"neotest-python": { "branch": "master", "commit": "a2861ab3c9a0bf75a56b11835c2bfc8270f5be7e" },
|
||||||
|
"nui.nvim": { "branch": "main", "commit": "f535005e6ad1016383f24e39559833759453564e" },
|
||||||
|
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
|
||||||
|
"nvim-dap": { "branch": "master", "commit": "8df427aeba0a06c6577dc3ab82de3076964e3b8d" },
|
||||||
|
"nvim-dap-python": { "branch": "master", "commit": "34282820bb713b9a5fdb120ae8dd85c2b3f49b51" },
|
||||||
|
"nvim-dap-repl-highlights": { "branch": "master", "commit": "a7512fc0a0de0c0be8d58983939856dda6f72451" },
|
||||||
|
"nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" },
|
||||||
|
"nvim-highlight-colors": { "branch": "main", "commit": "b42a5ccec7457b44e89f7ed3b3afb1b375bb2093" },
|
||||||
|
"nvim-lint": { "branch": "master", "commit": "9dfb77ef6c5092a19502883c02dc5a02ec648729" },
|
||||||
|
"nvim-lspconfig": { "branch": "master", "commit": "61e5109c8cf24807e4ae29813a3a82b31821dd45" },
|
||||||
|
"nvim-navic": { "branch": "master", "commit": "f887d794a0f4594882814d7780980a949200a238" },
|
||||||
|
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||||
|
"nvim-rooter.lua": { "branch": "main", "commit": "7689d05e8ab95acb4b24785253d913c0aae18be9" },
|
||||||
|
"nvim-treesitter": { "branch": "master", "commit": "28d480e0624b259095e56f353ec911f9f2a0f404" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "f1420728f59843eb2ef084406b3d0201a0a0932d" },
|
||||||
|
"oil.nvim": { "branch": "master", "commit": "685cdb4ffa74473d75a1b97451f8654ceeab0f4a" },
|
||||||
|
"overseer.nvim": { "branch": "master", "commit": "72c68aab0358c92f451168b704c411c4a3e3410e" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||||
|
"rainbow-delimiters.nvim": { "branch": "master", "commit": "55ad4fb76ab68460f700599b7449385f0c4e858e" },
|
||||||
|
"render-markdown.nvim": { "branch": "main", "commit": "935c2c70c296d87ed1bcce9ce667c239c9c982b5" },
|
||||||
|
"rustaceanvim": { "branch": "master", "commit": "cb532f57c1ed2463c66df683468eb3994e554002" },
|
||||||
|
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
|
||||||
|
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
||||||
|
"toggleterm.nvim": { "branch": "main", "commit": "9a88eae817ef395952e08650b3283726786fb5fb" },
|
||||||
|
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
|
||||||
|
"which-key.nvim": { "branch": "main", "commit": "fcbf4eea17cb299c02557d576f0d568878e354a4" },
|
||||||
|
"yanky.nvim": { "branch": "main", "commit": "04775cc6e10ef038c397c407bc17f00a2f52b378" }
|
||||||
|
}
|
27
lua/config/lazy.lua
Normal file
27
lua/config/lazy.lua
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
|
||||||
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
|
vim.fn.system({
|
||||||
|
'git',
|
||||||
|
'clone',
|
||||||
|
'--filter=blob:none',
|
||||||
|
'https://github.com/folke/lazy.nvim.git',
|
||||||
|
'--branch=stable', -- latest stable release
|
||||||
|
lazypath,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
require('lazy').setup({
|
||||||
|
defaults = {
|
||||||
|
version = false,
|
||||||
|
},
|
||||||
|
spec = {
|
||||||
|
{ import = 'plugins' },
|
||||||
|
{ import = 'themes' },
|
||||||
|
},
|
||||||
|
change_detection = {
|
||||||
|
-- automatically check for config file changes and reload the ui
|
||||||
|
enabled = true,
|
||||||
|
notify = false, -- get a notification when changes are found
|
||||||
|
},
|
||||||
|
})
|
149
lua/config/options.lua
Normal file
149
lua/config/options.lua
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
vim.cmd('filetype plugin indent on')
|
||||||
|
vim.cmd('language en_US.utf-8')
|
||||||
|
|
||||||
|
local opt = vim.opt
|
||||||
|
local indent = 2
|
||||||
|
opt.termguicolors = true -- Enable colors in terminal
|
||||||
|
opt.hlsearch = true --Set highlight on search
|
||||||
|
opt.number = true --Make line numbers default
|
||||||
|
opt.listchars:append('eol:↴')
|
||||||
|
-- opt.listchars:append("space: ")
|
||||||
|
-- opt.listchars:append 'space:⋅'
|
||||||
|
opt.listchars:append('trail: ')
|
||||||
|
opt.listchars:append('tab:→ ')
|
||||||
|
opt.relativenumber = false --Make relative number default
|
||||||
|
opt.mouse = 'a' --Enable mouse mode
|
||||||
|
opt.breakindent = true --Enable break indent
|
||||||
|
opt.undofile = true --Save undo history
|
||||||
|
opt.ignorecase = true --Case insensitive searching unless /C or capital in search
|
||||||
|
opt.smartcase = true -- Smart case
|
||||||
|
opt.updatetime = 300 --Decrease update time
|
||||||
|
opt.signcolumn = 'yes' -- Always show sign column
|
||||||
|
opt.timeoutlen = 300 -- Time in milliseconds to wait for a mapped sequence to complete.
|
||||||
|
opt.ttimeoutlen = 10
|
||||||
|
opt.showmode = false -- Do not need to show the mode. We use the statusline instead.
|
||||||
|
opt.scrolloff = 999 -- Lines of context
|
||||||
|
opt.joinspaces = false -- No double spaces with join after a dot
|
||||||
|
opt.showmatch = true -- Show matching braces
|
||||||
|
opt.wrap = true -- When on, lines longer than the width of the window will wrap and displaying continues on the next line
|
||||||
|
opt.list = true
|
||||||
|
opt.hidden = true
|
||||||
|
opt.winborder = 'none'
|
||||||
|
opt.scrolloff = 4
|
||||||
|
opt.shiftround = true
|
||||||
|
opt.relativenumber = false
|
||||||
|
opt.splitbelow = true
|
||||||
|
opt.splitright = true
|
||||||
|
opt.wildmode = 'longest:full,full'
|
||||||
|
opt.pumheight = 15
|
||||||
|
opt.splitbelow = true
|
||||||
|
opt.splitright = true
|
||||||
|
opt.shiftwidth = indent
|
||||||
|
opt.tabstop = indent
|
||||||
|
if vim.fn.has('wsl') == 1 then
|
||||||
|
vim.g.clipboard = {
|
||||||
|
name = 'WslClipboard',
|
||||||
|
copy = {
|
||||||
|
['+'] = 'clip.exe',
|
||||||
|
['*'] = 'clip.exe',
|
||||||
|
},
|
||||||
|
paste = {
|
||||||
|
['+'] = 'powershell.exe -c [Console]::Out.Write($(Get-Clipboard -Raw).tostring().replace("`r", ""))',
|
||||||
|
['*'] = 'powershell.exe -c [Console]::Out.Write($(Get-Clipboard -Raw).tostring().replace("`r", ""))',
|
||||||
|
},
|
||||||
|
cache_enabled = 0,
|
||||||
|
}
|
||||||
|
-- opt.guifont = 'Hack Nerd Font Mono:h10'
|
||||||
|
opt.guifont = 'RobotoMono Nerd Font:h10'
|
||||||
|
elseif vim.loop.os_uname().sysname == 'Linux' then
|
||||||
|
opt.guifont = 'Iosevka NFM:h11'
|
||||||
|
if vim.env.SSH_TTY or vim.env.SSH_CLIENT or vim.env.SSH_CONNECTION then
|
||||||
|
function no_paste(reg)
|
||||||
|
return function(lines)
|
||||||
|
-- Do nothing! We can't paste with OSC52
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.g.clipboard = {
|
||||||
|
name = 'OSC 52',
|
||||||
|
copy = {
|
||||||
|
['+'] = require('vim.ui.clipboard.osc52').copy('+'),
|
||||||
|
['*'] = require('vim.ui.clipboard.osc52').copy('*'),
|
||||||
|
},
|
||||||
|
paste = {
|
||||||
|
-- ['+'] = require('vim.ui.clipboard.osc52').paste('+'),
|
||||||
|
-- ['*'] = require('vim.ui.clipboard.osc52').paste('*'),
|
||||||
|
['+'] = no_paste('+'), -- Pasting disabled
|
||||||
|
['*'] = no_paste('*'), -- Pasting disabled
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
-- opt.guifont = 'Hack Nerd Font:h10'
|
||||||
|
-- opt.guifont = 'JetBrainsMono Nerd Font:h10'
|
||||||
|
-- opt.guifont = 'FiraCode Nerd Font:h10'
|
||||||
|
-- opt.guifont = 'RobotoMono Nerd Font:h10'
|
||||||
|
opt.guifont = 'IosevkaTerm Nerd Font Mono:h11'
|
||||||
|
-- opt.guifont = 'Cousine Nerd Font Mono:h10'
|
||||||
|
-- opt.guifont = 'DroidSansM Nerd Font Propo:h10'
|
||||||
|
-- opt.guifont = 'AnonymicePro Nerd Font:h11'
|
||||||
|
-- opt.guifont = 'SauceCodePro Nerd Font:h10'
|
||||||
|
-- opt.guifont = 'Monoid Nerd Font Propo:h10'
|
||||||
|
end
|
||||||
|
opt.swapfile = false
|
||||||
|
opt.backup = false
|
||||||
|
opt.spelllang = 'en'
|
||||||
|
opt.completeopt = 'menu,menuone,noselect'
|
||||||
|
opt.expandtab = true
|
||||||
|
opt.smartindent = true
|
||||||
|
opt.title = true
|
||||||
|
opt.titlestring = '%(%{fnamemodify(getcwd(),":t")}%) Neovim'
|
||||||
|
opt.laststatus = 3 -- for lualine
|
||||||
|
opt.background = 'dark'
|
||||||
|
|
||||||
|
-- go to previous/next line with h,l,left arrow and right arrow
|
||||||
|
-- when cursor reaches end/beginning of line
|
||||||
|
-- opt.whichwrap:append('<>[]hl')
|
||||||
|
|
||||||
|
-- disable nvim intro
|
||||||
|
opt.shortmess:append('sI')
|
||||||
|
|
||||||
|
-- Treesitter based folding
|
||||||
|
opt.foldlevel = 20
|
||||||
|
opt.foldmethod = 'expr'
|
||||||
|
opt.foldexpr = 'nvim_treesitter#foldexpr()'
|
||||||
|
opt.foldexpr = 'nvim_treesitter#foldexpr()'
|
||||||
|
|
||||||
|
vim.diagnostic.config({
|
||||||
|
signs = {
|
||||||
|
text = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = '', -- Nerd Font Error Icon
|
||||||
|
[vim.diagnostic.severity.WARN] = '', -- Nerd Font Warning Icon
|
||||||
|
[vim.diagnostic.severity.INFO] = '', -- Nerd Font Info Icon
|
||||||
|
[vim.diagnostic.severity.HINT] = '', -- Nerd Font Hint Icon (example)
|
||||||
|
},
|
||||||
|
-- Define the highlight group to use for the sign text for each severity
|
||||||
|
texthl = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = 'DiagnosticSignError',
|
||||||
|
[vim.diagnostic.severity.WARN] = 'DiagnosticSignWarn',
|
||||||
|
[vim.diagnostic.severity.INFO] = 'DiagnosticSignInfo',
|
||||||
|
[vim.diagnostic.severity.HINT] = 'DiagnosticSignHint',
|
||||||
|
},
|
||||||
|
-- Optional: Highlight the line number column
|
||||||
|
numhl = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = 'DiagnosticLineNrError',
|
||||||
|
-- Add others for WARN, INFO, HINT if desired
|
||||||
|
},
|
||||||
|
-- Optional: Highlight the whole line
|
||||||
|
linehl = {
|
||||||
|
-- Define highlight groups like 'DiagnosticLineError', 'DiagnosticLineWarn', etc.
|
||||||
|
[vim.diagnostic.severity.ERROR] = 'DiagnosticLineError',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Other diagnostic configurations (optional examples)
|
||||||
|
virtual_text = false,
|
||||||
|
virtual_lines = false,
|
||||||
|
underline = true, -- Enable underlining diagnostics
|
||||||
|
update_in_insert = false, -- Don't update diagnostics in insert mode
|
||||||
|
severity_sort = true, -- Sort diagnostics by severity
|
||||||
|
})
|
@ -1,45 +1,65 @@
|
|||||||
function nvim_create_augroups(definitions)
|
local api = vim.api
|
||||||
for group_name, definition in pairs(definitions) do
|
|
||||||
vim.cmd('augroup ' .. group_name)
|
|
||||||
vim.cmd('autocmd!')
|
|
||||||
for _, def in ipairs(definition) do
|
|
||||||
local command = table.concat(vim.tbl_flatten{'autocmd', def}, ' ')
|
|
||||||
vim.cmd(command)
|
|
||||||
end
|
|
||||||
vim.cmd('augroup END')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local autocmds = {
|
-- Highlight on yank
|
||||||
packer = {
|
local yankGrp = api.nvim_create_augroup('YankHighlight', { clear = true })
|
||||||
{ 'BufWritePost', 'plugins.lua', 'PackerCompile' };
|
api.nvim_create_autocmd('TextYankPost', {
|
||||||
};
|
command = 'silent! lua vim.highlight.on_yank()',
|
||||||
restore_cursor = {
|
group = yankGrp,
|
||||||
{ 'BufRead', '*', [[call setpos(".", getpos("'\""))]] };
|
})
|
||||||
};
|
|
||||||
save_shada = {
|
|
||||||
{'FocusGained,FocusLost', '*', 'rshada|wshada'};
|
|
||||||
};
|
|
||||||
resize_windows_proportionally = {
|
|
||||||
{ 'VimResized', '*', ':wincmd =' };
|
|
||||||
};
|
|
||||||
lua_highlight = {
|
|
||||||
{ 'TextYankPost', '*', [[silent! lua vim.highlight.on_yank() {higroup='IncSearch', timeout=400}]] };
|
|
||||||
};
|
|
||||||
file_type = {
|
|
||||||
{'BufRead,BufNewFile', '*.simvis', 'set filetype=xml'};
|
|
||||||
{'BufRead,BufNewFile', '*.simcfg,*.simcon,*.simudex', 'set filetype=cfg'};
|
|
||||||
{'BufRead,BufNewFile', 'Jenkinsfile*', 'set filetype=groovy'};
|
|
||||||
{'BufRead,BufNewFile', '*.manifest', 'set filetype=xml'};
|
|
||||||
{'BufRead,BufNewFile', 'SConstruct,SConscript', 'set filetype=python'};
|
|
||||||
};
|
|
||||||
file_changed = {
|
|
||||||
{'BufEnter,FocusGained', '*', 'checktime'};
|
|
||||||
};
|
|
||||||
no_auto_comment = {
|
|
||||||
{'BufEnter', '*', 'set fo-=c fo-=r fo-=o'}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nvim_create_augroups(autocmds)
|
vim.filetype.add({
|
||||||
|
extension = {
|
||||||
|
simvis = 'xml',
|
||||||
|
manifest = 'xml',
|
||||||
|
simcfg = 'xml',
|
||||||
|
simcon = 'xml',
|
||||||
|
simudex = 'xml'
|
||||||
|
},
|
||||||
|
filename = {
|
||||||
|
['JenkinsFile'] = 'groovy',
|
||||||
|
['SConstruct'] = 'python',
|
||||||
|
['SConscript'] = 'python',
|
||||||
|
['doskey'] = 'dosini',
|
||||||
|
['.clangd'] = 'yaml',
|
||||||
|
['.clang-tidy'] = 'yaml',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Read and write shada file
|
||||||
|
api.nvim_create_autocmd({ 'FocusLost' }, { command = [[wshada]] })
|
||||||
|
|
||||||
|
-- go to last loc when opening a buffer
|
||||||
|
-- api.nvim_create_autocmd(
|
||||||
|
-- 'BufReadPost',
|
||||||
|
-- { command = [[if line("'\"") > 1 && line("'\"") <= line("$") | execute "normal! g`\"" | endif]] }
|
||||||
|
-- )
|
||||||
|
|
||||||
|
-- When editing a file, always jump to the last known cursor position.
|
||||||
|
-- Don't do it when the position is invalid, when inside an event handler
|
||||||
|
-- (happens when dropping a file on gvim) and for a commit message (it's
|
||||||
|
-- likely a different one than last time).
|
||||||
|
local userGrp = api.nvim_create_augroup('UserGroup', { clear = true })
|
||||||
|
vim.api.nvim_create_autocmd('BufReadPost', {
|
||||||
|
group = userGrp,
|
||||||
|
callback = function(args)
|
||||||
|
local valid_line = vim.fn.line([['"]]) >= 1 and vim.fn.line([['"]]) < vim.fn.line('$')
|
||||||
|
local not_commit = vim.b[args.buf].filetype ~= 'commit'
|
||||||
|
|
||||||
|
if valid_line and not_commit then
|
||||||
|
vim.cmd([[normal! g`"]])
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Check if we need to reload the file when it changed
|
||||||
|
api.nvim_create_autocmd({ 'FocusGained', 'BufEnter' }, { command = [[if !bufexists("[Command Line]") | checktime | endif]] })
|
||||||
|
|
||||||
|
-- windows to close with "q"
|
||||||
|
api.nvim_create_autocmd('FileType', { pattern = { 'help', 'startuptime', 'qf', 'lspinfo' }, command = [[nnoremap <buffer><silent> q :close<CR>]] })
|
||||||
|
api.nvim_create_autocmd('FileType', { pattern = 'man', command = [[nnoremap <buffer><silent> q :quit<CR>]] })
|
||||||
|
|
||||||
|
-- don't auto comment new line
|
||||||
|
api.nvim_create_autocmd('BufEnter', { command = [[set formatoptions-=cro]] })
|
||||||
|
|
||||||
|
-- Keep window ratio when resize
|
||||||
|
api.nvim_create_autocmd('VimResized', { command = [[wincmd =]] })
|
||||||
|
118
lua/my_cmp.lua
118
lua/my_cmp.lua
@ -1,118 +0,0 @@
|
|||||||
local cmp = require('cmp')
|
|
||||||
local luasnip = require("luasnip")
|
|
||||||
|
|
||||||
local t = function(str)
|
|
||||||
return vim.api.nvim_replace_termcodes(str, true, true, true)
|
|
||||||
end
|
|
||||||
|
|
||||||
local check_back_space = function()
|
|
||||||
local col = vim.fn.col(".") - 1
|
|
||||||
return col == 0 or vim.fn.getline("."):sub(col, col):match("%s") ~= nil
|
|
||||||
end
|
|
||||||
|
|
||||||
cmp.setup {
|
|
||||||
|
|
||||||
formatting = {
|
|
||||||
format = function(entry, vim_item)
|
|
||||||
-- fancy icons and a name of kind
|
|
||||||
vim_item.kind = require("lspkind").presets.default[vim_item.kind] ..
|
|
||||||
" " .. vim_item.kind
|
|
||||||
-- set a name for each source
|
|
||||||
vim_item.menu = ({
|
|
||||||
buffer = "[Buffer]",
|
|
||||||
nvim_lsp = "[LSP]",
|
|
||||||
ultisnips = "[UltiSnips]",
|
|
||||||
nvim_lua = "[Lua]",
|
|
||||||
cmp_tabnine = "[TabNine]",
|
|
||||||
look = "[Look]",
|
|
||||||
path = "[Path]",
|
|
||||||
spell = "[Spell]",
|
|
||||||
calc = "[Calc]",
|
|
||||||
emoji = "[Emoji]"
|
|
||||||
})[entry.source.name]
|
|
||||||
return vim_item
|
|
||||||
end
|
|
||||||
},
|
|
||||||
mapping = {
|
|
||||||
['<Up>'] = cmp.mapping(cmp.mapping.select_prev_item(), { 'i', 'c', 's'}),
|
|
||||||
['<Down>'] = cmp.mapping(cmp.mapping.select_next_item(), { 'i', 'c', 's' }),
|
|
||||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
|
||||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
|
||||||
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c', 's' }),
|
|
||||||
['<C-e>'] = cmp.mapping(cmp.mapping.close(), { 'i', 'c', 's' }),
|
|
||||||
['<CR>'] = cmp.mapping({
|
|
||||||
i = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true }),
|
|
||||||
c = cmp.mapping.confirm({ select = false }),
|
|
||||||
s = cmp.mapping.confirm({ select = false }),
|
|
||||||
}),
|
|
||||||
["<Tab>"] = cmp.mapping(function(fallback)
|
|
||||||
if luasnip.expand_or_jumpable() then
|
|
||||||
vim.api.nvim_feedkeys(t("<Plug>luasnip-expand-or-jump"), "", true)
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end, {
|
|
||||||
"i",
|
|
||||||
"s",
|
|
||||||
}),
|
|
||||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
|
||||||
if luasnip.jumpable(-1) then
|
|
||||||
vim.api.nvim_feedkeys(t("<Plug>luasnip-jump-prev"), "", true)
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end, {
|
|
||||||
"i",
|
|
||||||
"s",
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
require'luasnip'.lsp_expand(args.body)
|
|
||||||
end
|
|
||||||
},
|
|
||||||
sources = {
|
|
||||||
{name = 'nvim_lsp'}, {name = 'buffer'}, {name = "luasnip"},
|
|
||||||
{name = "nvim_lua"}, {name = "look"}, {name = "path"},
|
|
||||||
{name = 'cmp_tabnine'}, {name = "calc"}, {name = "spell"},
|
|
||||||
{name = "emoji"}
|
|
||||||
},
|
|
||||||
completion = {completeopt = 'menu,menuone,noinsert, noselect'},
|
|
||||||
-- experimental = { native_menu = true }
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
|
||||||
cmp.setup.cmdline('/', {
|
|
||||||
sources = {
|
|
||||||
{ name = 'buffer' }
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
|
||||||
cmp.setup.cmdline(':', {
|
|
||||||
sources = cmp.config.sources({
|
|
||||||
{ name = 'path' }
|
|
||||||
}, {
|
|
||||||
{ name = 'cmdline' }
|
|
||||||
}, {
|
|
||||||
{ name = 'buffer' }
|
|
||||||
}),
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Autopairs
|
|
||||||
--require("nvim-autopairs.completion.cmp").setup({
|
|
||||||
-- map_cr = true,
|
|
||||||
-- map_complete = true,
|
|
||||||
-- auto_select = true
|
|
||||||
--})
|
|
||||||
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
|
|
||||||
cmp.event:on( 'confirm_done', cmp_autopairs.on_confirm_done({ map_char = { tex = '' } }))
|
|
||||||
|
|
||||||
-- TabNine
|
|
||||||
--local tabnine = require('cmp_tabnine.config')
|
|
||||||
--tabnine:setup({max_lines = 1000, max_num_results = 20, sort = true})
|
|
||||||
|
|
||||||
-- Database completion
|
|
||||||
vim.api.nvim_exec([[
|
|
||||||
autocmd FileType sql,mysql,plsql lua require('cmp').setup.buffer({ sources = {{ name = 'vim-dadbod-completion' }} })
|
|
||||||
]], false)
|
|
@ -1,90 +1,85 @@
|
|||||||
local utils = require('utils')
|
local opts = { noremap = true, silent = true }
|
||||||
vim.g.mapleader = ','
|
|
||||||
-- Paste from clipboard
|
|
||||||
utils.map('n', '<leader>p', '"+p')
|
|
||||||
utils.map('n', '<leader>P', '"+P')
|
|
||||||
utils.map('v', '<leader>p', '"+p')
|
|
||||||
utils.map('v', '<leader>P', '"+P')
|
|
||||||
|
|
||||||
-- Yank to clipboard
|
|
||||||
utils.map('v', '<leader>y', '"+y')
|
|
||||||
utils.map('n', '<leader>Y', '"+yg_')
|
|
||||||
utils.map('n', '<leader>y', '"+y')
|
|
||||||
utils.map('n', '<leader>yy', '"+yy')
|
|
||||||
|
|
||||||
-- Tabs
|
-- Tabs
|
||||||
utils.map('n', '<F2>', ':tabnew .<CR>', { noremap = true, silent = true })
|
vim.keymap.set('n', '<S-Right>', ':tabnext<CR>', opts)
|
||||||
utils.map('i', '<F2>', '<Esc>:tabnew .<CR>', { noremap = true, silent = true })
|
vim.keymap.set('n', '<S-Left>', ':tabprevious<CR>', opts)
|
||||||
-- utils.map('n', '<S-Right>', ':BufferLineCycleNext<CR>')
|
vim.keymap.set('n', '<S-l>', ':tabnext<CR>', opts)
|
||||||
-- utils.map('n', '<S-Left>', ':BufferLineCyclePrev<CR>')
|
vim.keymap.set('n', '<S-h>', ':tabprevious<CR>', opts)
|
||||||
utils.map('n', '<S-Right>', ':tabnext<CR>', { noremap = true, silent = true })
|
|
||||||
utils.map('n', '<S-Left>', ':tabprevious<CR>', { noremap = true, silent = true })
|
|
||||||
-- Split movement
|
-- Split movement
|
||||||
utils.map('n', '<A-Up>', ':wincmd k<CR>', { noremap = true, silent = true })
|
vim.keymap.set('n', '<A-Up>', ':wincmd k<CR>', opts)
|
||||||
utils.map('n', '<A-Down>', ':wincmd j<CR>', { noremap = true, silent = true })
|
vim.keymap.set('n', '<A-Down>', ':wincmd j<CR>', opts)
|
||||||
utils.map('n', '<A-Left>', ':wincmd h<CR>', { noremap = true, silent = true })
|
vim.keymap.set('n', '<A-Left>', ':wincmd h<CR>', opts)
|
||||||
utils.map('n', '<A-Right>', ':wincmd l<CR>', { noremap = true, silent = true })
|
vim.keymap.set('n', '<A-Right>', ':wincmd l<CR>', opts)
|
||||||
-- Open a new vertical split window with Ctrl - F2
|
vim.keymap.set('n', '<A-k>', ':wincmd k<CR>', opts)
|
||||||
utils.map('n', '<C-F2>', ':vsplit .<CR>', { noremap = true, silent = true })
|
vim.keymap.set('n', '<A-j>', ':wincmd j<CR>', opts)
|
||||||
utils.map('i', '<C-F2>', '<Esc>:vsplit .<CR>', { noremap = true, silent = true })
|
vim.keymap.set('n', '<A-h>', ':wincmd h<CR>', opts)
|
||||||
-- Open a new horizontal split window with Shift - F2
|
vim.keymap.set('n', '<A-l>', ':wincmd l<CR>', opts)
|
||||||
utils.map('n', '<S-F2>', ':split .<CR>', { noremap = true, silent = true })
|
|
||||||
utils.map('i', '<S-F2>', '<Esc>:split .<CR>', { noremap = true, silent = true })
|
|
||||||
|
|
||||||
utils.map('n', '<C-S>', ':wa<CR>')
|
vim.keymap.set('n', '<C-S>', ':wa | wshada<CR>')
|
||||||
|
|
||||||
-- Linewrap and jumping
|
-- Linewrap and jumping
|
||||||
utils.map('n', 'k', 'gk')
|
vim.keymap.set({ 'n', 'x' }, 'k', 'gk', opts)
|
||||||
utils.map('n', 'j', 'gj')
|
vim.keymap.set({ 'n', 'x' }, 'j', 'gj', opts)
|
||||||
utils.map('n', '0', 'g0')
|
vim.keymap.set({ 'n', 'x' }, '0', 'g0', opts)
|
||||||
utils.map('n', '$', 'g$')
|
vim.keymap.set({ 'n', 'x' }, '$', 'g$', opts)
|
||||||
utils.map('n', '<Up>', 'gk')
|
vim.keymap.set({ 'n', 'x' }, '<Up>', 'gk', opts)
|
||||||
utils.map('n', '<Down>', 'gj')
|
vim.keymap.set({ 'n', 'x' }, '<Down>', 'gj', opts)
|
||||||
utils.map('n', '<Home>', 'g<Home>')
|
vim.keymap.set({ 'n', 'x' }, '<Home>', 'g<Home>', opts)
|
||||||
utils.map('n', '<End>', 'g<End>')
|
vim.keymap.set({ 'n', 'x' }, '<End>', 'g<End>', opts)
|
||||||
utils.map('v', 'k', 'gk')
|
vim.keymap.set({ 'i' }, '<C-k>', '<C-o>gk', opts)
|
||||||
utils.map('v', 'j', 'gj')
|
vim.keymap.set({ 'i' }, '<C-h>', '<Left>', opts)
|
||||||
utils.map('v', '0', 'g0')
|
vim.keymap.set({ 'i' }, '<C-l>', '<Right>', opts)
|
||||||
utils.map('v', '$', 'g$')
|
vim.keymap.set({ 'i' }, '<C-j>', '<C-o>gj', opts)
|
||||||
utils.map('v', '<Up>', 'gk')
|
-- vim.keymap.set({'n', 'x', 'i'}, '<Up>', '')
|
||||||
utils.map('v', '<Down>', 'gj')
|
-- vim.keymap.set({'n', 'x', 'i'}, '<Down>', '')
|
||||||
utils.map('v', '<Home>', 'g<Home>')
|
-- vim.keymap.set({'n', 'x', 'i'}, '<Left>', '')
|
||||||
utils.map('v', '<End>', 'g<End>')
|
-- vim.keymap.set({'n', 'x', 'i'}, '<Right>', '')
|
||||||
|
|
||||||
utils.map('v', '<', '<gv')
|
vim.keymap.set('x', '<', '<gv')
|
||||||
utils.map('v', '>', '>gv')
|
vim.keymap.set('x', '>', '>gv')
|
||||||
|
|
||||||
|
local function hlWord()
|
||||||
|
local current_word = vim.call('expand', '<cword>')
|
||||||
|
vim.fn.setreg('/', '\\<' .. current_word .. '\\>')
|
||||||
|
vim.opt.hlsearch = true
|
||||||
|
end
|
||||||
|
|
||||||
-- Highlight word under cursor
|
-- Highlight word under cursor
|
||||||
utils.map('n', 'ü', ":let @/='\\<<C-R>=expand(\"<cword>\")<CR>\\>'<CR>:set hls<CR>", { noremap = true, silent = true })
|
vim.keymap.set('n', "'", hlWord, { noremap = true, silent = true, desc = 'Higlight word under cursor' })
|
||||||
utils.map('v', 'ü', "y:let @/='<C-R>=escape(@\",'/\\')<CR>'<CR>:set hls<CR>") utils.map('v', 'ü', "y:let @/='<C-R>=escape(@\",'/\\')<CR>'<CR>:set hls<CR>", { noremap = true, silent = true })
|
vim.keymap.set('x', "'", 'y/\\V<C-R>"<CR>N', { noremap = true, silent = true, desc = 'Highlight visual' })
|
||||||
|
|
||||||
-- Close Buffer
|
-- Close Buffer
|
||||||
utils.map('n', '<C-w>', ':bd<CR>')
|
-- vim.keymap.set('n', '<C-w>', ':bd<CR>', { desc = 'Close buffer' })
|
||||||
|
|
||||||
-- <Tab> to navigate the completion menu
|
vim.keymap.set('n', '<space>x', 'za', { desc = 'Toggle fold' })
|
||||||
utils.map('i', '<S-Tab>', 'pumvisible() ? "\\<C-p>" : "\\<Tab>"', {expr = true})
|
|
||||||
utils.map('i', '<Tab>', 'pumvisible() ? "\\<C-n>" : "\\<Tab>"', {expr = true})
|
|
||||||
|
|
||||||
-- Telescope
|
vim.keymap.set({ 'n', 'x' }, '<leader>y', '"+y', { desc = 'Copy from system clipboard' })
|
||||||
utils.map('n', '<leader>f', '<cmd>Telescope find_files<cr>')
|
vim.keymap.set({ 'n', 'x' }, '<leader>Y', '"+yg_', { desc = 'Copy from system clipboard' })
|
||||||
utils.map('n', '<C-p>', '<cmd>Telescope find_files<cr>')
|
vim.keymap.set({ 'n', 'x' }, '<leader>p', '"+p', { desc = 'Paste from system clipboard' })
|
||||||
utils.map('n', '<leader>g', '<cmd>Telescope git_files<cr>')
|
vim.keymap.set({ 'n', 'x' }, '<leader>P', '"+P', { desc = 'Paste from system clipboard' })
|
||||||
utils.map('n', '<leader>o', '<cmd>Telescope oldfiles<cr>')
|
|
||||||
utils.map('n', '<leader>h', '<cmd>Telescope command_history<cr>')
|
|
||||||
utils.map('v', '<leader>h', '<cmd>Telescope command_history<cr>')
|
|
||||||
utils.map('n', '<C-S-p>', '<cmd>Telescope commands<cr>')
|
|
||||||
utils.map('n', '<leader>b', '<cmd>Telescope buffers<cr>')
|
|
||||||
utils.map('n', '<leader>q', '<cmd>Telescope quickfix<cr>')
|
|
||||||
utils.map('n', '<leader>l', '<cmd>Telescope live_grep<cr>')
|
|
||||||
utils.map('n', '<space>r', '<cmd>Telescope lsp_references<cr>')
|
|
||||||
utils.map('n', '<C-S-o>', '<cmd>Telescope lsp_document_symbols<cr>')
|
|
||||||
utils.map('n', '<A-m>', '<cmd>Telescope lsp_document_symbols<cr>')
|
|
||||||
utils.map('n', '<space>v', '<cmd>Telescope diagnostics bufnr=0<cr>')
|
|
||||||
utils.map('n', '<C-y>', '<cmd>Telescope neoclip<cr>')
|
|
||||||
utils.map('n', '<leader>j', '<cmd>Telescope jumplist<cr>')
|
|
||||||
|
|
||||||
-- wildmode
|
vim.keymap.set('v', 'v', function()
|
||||||
|
local mode = vim.fn.mode()
|
||||||
|
if mode == 'v' then
|
||||||
|
vim.api.nvim_feedkeys('V', 'n', true) -- Switch to Visual Line mode
|
||||||
|
elseif mode == 'V' then
|
||||||
|
vim.api.nvim_feedkeys('v', 'n', true) -- Switch to regular Visual mode
|
||||||
|
end
|
||||||
|
end, { noremap = true, silent = true })
|
||||||
|
|
||||||
-- Symbols Outline
|
vim.keymap.set('x', '/', '<Esc>/\\%V') --search within visual selection
|
||||||
utils.map('n', '<leader>s', '<cmd>SymbolsOutline<cr>')
|
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command('WinFont', 'set guifont=JetBrainsMonoNL\\ NF:h9', {})
|
||||||
|
vim.api.nvim_create_user_command('LinuxFont', 'set guifont=JetBrainsMono\\ Nerd\\ Font\\ Mono:h7', {})
|
||||||
|
|
||||||
|
if vim.g.neovide then
|
||||||
|
vim.g.neovide_scale_factor = 1.0
|
||||||
|
local change_scale_factor = function(delta)
|
||||||
|
vim.g.neovide_scale_factor = vim.g.neovide_scale_factor * delta
|
||||||
|
print(string.format('scaling: %f', vim.g.neovide_scale_factor))
|
||||||
|
end
|
||||||
|
vim.keymap.set('n', '<C-=>', function() change_scale_factor(1.25) end)
|
||||||
|
vim.keymap.set('n', '<C-->', function() change_scale_factor(1 / 1.25) end)
|
||||||
|
vim.keymap.set('n', '<C-ScrollWheelUp>', function() change_scale_factor(1.25) end)
|
||||||
|
vim.keymap.set('n', '<C-ScrollWheelDown>', function() change_scale_factor(1 / 1.25) end)
|
||||||
|
end
|
||||||
|
@ -1,108 +0,0 @@
|
|||||||
local utils = require('utils')
|
|
||||||
|
|
||||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
||||||
capabilities.textDocument.completion.completionItem.documentationFormat = { 'markdown', 'plaintext' }
|
|
||||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
|
||||||
capabilities.textDocument.completion.completionItem.preselectSupport = true
|
|
||||||
capabilities.textDocument.completion.completionItem.insertReplaceSupport = true
|
|
||||||
capabilities.textDocument.completion.completionItem.labelDetailsSupport = true
|
|
||||||
capabilities.textDocument.completion.completionItem.deprecatedSupport = true
|
|
||||||
capabilities.textDocument.completion.completionItem.commitCharactersSupport = true
|
|
||||||
capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } }
|
|
||||||
capabilities.textDocument.completion.completionItem.resolveSupport = {
|
|
||||||
properties = {
|
|
||||||
'documentation',
|
|
||||||
'detail',
|
|
||||||
'additionalTextEdits',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local on_attach = function(client, bufnr)
|
|
||||||
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
|
|
||||||
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
|
|
||||||
|
|
||||||
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
|
|
||||||
|
|
||||||
-- Mappings.
|
|
||||||
local opts = { noremap=true, silent=true }
|
|
||||||
utils.map('n', '<space>,', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
|
|
||||||
utils.map('n', '<space>;', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
|
|
||||||
utils.map('n', '<space>a', '<cmd>Telescope lsp_code_actions<CR>', opts)
|
|
||||||
utils.map('n', '<space>d', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
|
|
||||||
utils.map('n', '<space>e', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
|
|
||||||
utils.map('n', '<space>h', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
|
||||||
utils.map('n', '<space>c', '<cmd>lua vim.lsp.buf.outgoing_calls()<CR>', opts)
|
|
||||||
utils.map('n', '<space>C', '<cmd>lua vim.lsp.buf.incoming_calls()<CR>', opts)
|
|
||||||
utils.map('n', '<space>m', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
|
|
||||||
-- utils.map('n', '<space>r', '<cmd>lua vim.lsp.buf.references()<CR, opts>')
|
|
||||||
utils.map('n', '<space>s', '<cmd>lua vim.lsp.buf.document_symbol()<CR>', opts)
|
|
||||||
utils.map('n', '<C-t>', '<cmd>Telescope lsp_dynamic_workspace_symbols<CR>', opts)
|
|
||||||
utils.map('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
|
|
||||||
utils.map('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
|
|
||||||
utils.map('n', '<space>r', '<cmd>Telescope lsp_references<cr>')
|
|
||||||
utils.map('n', '<C-S-o>', '<cmd>Telescope lsp_document_symbols<cr>')
|
|
||||||
utils.map('n', '<A-m>', '<cmd>Telescope lsp_document_symbols<cr>')
|
|
||||||
utils.map('n', '<space>v', '<cmd>Telescope diagnostics bufnr=0<cr>')
|
|
||||||
utils.map('n', '<A-o>', ':ClangdSwitchSourceHeader<CR>', opts)
|
|
||||||
|
|
||||||
-- Set some keybinds conditional on server capabilities
|
|
||||||
if client.resolved_capabilities.document_formatting then
|
|
||||||
utils.map('n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
|
|
||||||
end
|
|
||||||
if client.resolved_capabilities.document_range_formatting then
|
|
||||||
utils.map('v', '<space>f', '<esc><cmd>lua vim.lsp.buf.range_formatting()<CR>', opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Set autocommands conditional on server_capabilities
|
|
||||||
if client.resolved_capabilities.document_highlight then
|
|
||||||
vim.api.nvim_exec([[
|
|
||||||
hi LspReferenceRead cterm=bold ctermbg=red guibg=DarkGreen
|
|
||||||
hi LspReferenceText cterm=bold ctermbg=Black guibg=DarkYellow guifg=Black
|
|
||||||
hi LspReferenceWrite cterm=bold ctermbg=red guibg=DarkRed
|
|
||||||
augroup lsp_document_highlight
|
|
||||||
autocmd! * <buffer>
|
|
||||||
autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
|
|
||||||
autocmd CursorHoldI <buffer> lua vim.lsp.buf.document_highlight()
|
|
||||||
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
|
|
||||||
augroup END
|
|
||||||
]], false)
|
|
||||||
end
|
|
||||||
require "lsp_signature".on_attach({
|
|
||||||
bind = true, -- This is mandatory, otherwise border config won't get registered.
|
|
||||||
handler_opts = {
|
|
||||||
border = "single"
|
|
||||||
},
|
|
||||||
hi_parameter = "IncSearch"
|
|
||||||
}, bufnr)
|
|
||||||
end
|
|
||||||
|
|
||||||
local lsp_installer = require("nvim-lsp-installer")
|
|
||||||
lsp_installer.on_server_ready(function(server)
|
|
||||||
local opts = {
|
|
||||||
on_attach = on_attach,
|
|
||||||
capabilities = capabilities,
|
|
||||||
}
|
|
||||||
|
|
||||||
-- (optional) Customize the options passed to the server
|
|
||||||
-- if server.name == "tsserver" then
|
|
||||||
-- opts.root_dir = function() ... end
|
|
||||||
-- end
|
|
||||||
|
|
||||||
-- This setup() function is exactly the same as lspconfig's setup function (:help lspconfig-quickstart)
|
|
||||||
server:setup(opts)
|
|
||||||
vim.cmd [[ do User LspAttachBuffers ]]
|
|
||||||
end)
|
|
||||||
|
|
||||||
local null_ls = require("null-ls")
|
|
||||||
null_ls.setup {
|
|
||||||
sources = {
|
|
||||||
null_ls.builtins.code_actions.gitsigns,
|
|
||||||
null_ls.builtins.formatting.autopep8,
|
|
||||||
null_ls.builtins.formatting.prettier,
|
|
||||||
null_ls.builtins.formatting.stylua,
|
|
||||||
null_ls.builtins.diagnostics.flake8,
|
|
||||||
null_ls.builtins.formatting.isort
|
|
||||||
},
|
|
||||||
on_attach = on_attach,
|
|
||||||
capabilities = capabilities
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
local utils = require('utils')
|
|
||||||
vim.cmd 'colorscheme gruvbox-material' -- Put your favorite colorscheme here
|
|
||||||
vim.cmd 'syntax enable'
|
|
||||||
vim.cmd 'filetype plugin indent on'
|
|
||||||
vim.cmd 'language en_US.utf-8'
|
|
||||||
utils.opt('o', 'hlsearch', true)
|
|
||||||
utils.opt('o', 'guifont', 'Hack NF:h9')
|
|
||||||
utils.opt('o', 'swapfile', false)
|
|
||||||
utils.opt('o', 'backup', false)
|
|
||||||
utils.opt('o', 'spelllang', 'en,de')
|
|
||||||
local indent = 2
|
|
||||||
utils.opt('b', 'expandtab', true)
|
|
||||||
utils.opt('b', 'shiftwidth', indent)
|
|
||||||
utils.opt('b', 'smartindent', true)
|
|
||||||
utils.opt('b', 'tabstop', indent)
|
|
||||||
utils.opt('o', 'hidden', true)
|
|
||||||
utils.opt('o', 'ignorecase', true)
|
|
||||||
utils.opt('o', 'scrolloff', 4 )
|
|
||||||
utils.opt('o', 'shiftround', true)
|
|
||||||
utils.opt('o', 'relativenumber', false)
|
|
||||||
utils.opt('o', 'smartcase', true)
|
|
||||||
utils.opt('o', 'splitbelow', true)
|
|
||||||
utils.opt('o', 'splitright', true)
|
|
||||||
utils.opt('o', 'wildmode', 'longest:full,full')
|
|
||||||
utils.opt('w', 'number', true)
|
|
||||||
utils.opt('o', 'clipboard', 'unnamed,unnamedplus')
|
|
||||||
utils.opt('o', 'mouse', 'a')
|
|
||||||
utils.opt('o', 'wrap', false)
|
|
||||||
utils.opt('o', 'termguicolors', true)
|
|
||||||
utils.opt('o', 'splitbelow', true)
|
|
||||||
utils.opt('o', 'splitright', true)
|
|
||||||
utils.opt('o', 'list', true)
|
|
||||||
utils.opt('o', 'updatetime', 300)
|
|
||||||
utils.opt('o', 'wrap', true)
|
|
||||||
utils.opt('o', 'showmatch', true)
|
|
@ -1,55 +0,0 @@
|
|||||||
return require('packer').startup(function()
|
|
||||||
|
|
||||||
-- Packer can manage itself as an optional plugin
|
|
||||||
use {'wbthomason/packer.nvim'}
|
|
||||||
use {'neovim/nvim-lspconfig'}
|
|
||||||
use {'nvim-treesitter/nvim-treesitter'}
|
|
||||||
use {
|
|
||||||
'nvim-telescope/telescope.nvim',
|
|
||||||
requires = {{'nvim-lua/popup.nvim'}, {'nvim-lua/plenary.nvim'}, {'kyazdani42/nvim-web-devicons'}}
|
|
||||||
}
|
|
||||||
use {'sainnhe/gruvbox-material'}
|
|
||||||
use {'lukas-reineke/indent-blankline.nvim'}
|
|
||||||
use {'nvim-lua/plenary.nvim'}
|
|
||||||
use {'lewis6991/gitsigns.nvim'}
|
|
||||||
use {
|
|
||||||
'kyazdani42/nvim-tree.lua',
|
|
||||||
requires = 'kyazdani42/nvim-web-devicons'
|
|
||||||
}
|
|
||||||
use{'numToStr/Comment.nvim'}
|
|
||||||
use {
|
|
||||||
'hrsh7th/nvim-cmp',
|
|
||||||
requires = {
|
|
||||||
'hrsh7th/cmp-buffer', 'hrsh7th/cmp-nvim-lsp',
|
|
||||||
'L3MON4D3/LuaSnip', 'saadparwaiz1/cmp_luasnip', 'hrsh7th/cmp-nvim-lua',
|
|
||||||
'octaltree/cmp-look', 'hrsh7th/cmp-path', 'hrsh7th/cmp-calc',
|
|
||||||
'f3fora/cmp-spell', 'hrsh7th/cmp-emoji', 'hrsh7th/cmp-cmdline'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
use {'rafamadriz/friendly-snippets'}
|
|
||||||
use {'onsails/lspkind-nvim'}
|
|
||||||
use {'Shatur/neovim-cmake',
|
|
||||||
requires = {'mfussenegger/nvim-dap'}
|
|
||||||
}
|
|
||||||
use {'AckslD/nvim-neoclip.lua'}
|
|
||||||
use {
|
|
||||||
'hoob3rt/lualine.nvim',
|
|
||||||
requires = {'kyazdani42/nvim-web-devicons', opt = true}
|
|
||||||
}
|
|
||||||
use {'ahmedkhalf/project.nvim'}
|
|
||||||
use {'p00f/nvim-ts-rainbow'}
|
|
||||||
use {'simrat39/symbols-outline.nvim'}
|
|
||||||
use {'f-person/git-blame.nvim'}
|
|
||||||
use {'windwp/nvim-autopairs'}
|
|
||||||
use {'nvim-telescope/telescope-fzf-native.nvim', run = 'make'}
|
|
||||||
use {'ray-x/lsp_signature.nvim'}
|
|
||||||
use {'s1n7ax/nvim-terminal'}
|
|
||||||
use {
|
|
||||||
'williamboman/nvim-lsp-installer',
|
|
||||||
requires = {'neovim/nvim-lspconfig'}
|
|
||||||
}
|
|
||||||
use {
|
|
||||||
'jose-elias-alvarez/null-ls.nvim',
|
|
||||||
requires = {'nvim-lua/plenary.nvim'}
|
|
||||||
}
|
|
||||||
end)
|
|
@ -1,48 +0,0 @@
|
|||||||
local actions = require('telescope.actions')
|
|
||||||
|
|
||||||
local mappingTab = {
|
|
||||||
i = {
|
|
||||||
['<cr>'] = actions.select_tab,
|
|
||||||
['<C-b>'] = actions.select_default,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
require('telescope').setup {
|
|
||||||
defaults = {
|
|
||||||
mappings = {
|
|
||||||
i = {
|
|
||||||
['<esc>'] = actions.close,
|
|
||||||
['<cr>'] = actions.select_default + actions.center,
|
|
||||||
['<C-l>'] = actions.send_selected_to_loclist,
|
|
||||||
['<C-q>'] = actions.smart_send_to_qflist
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
pickers = {
|
|
||||||
-- Your special builtin config goes in here
|
|
||||||
buffers = {
|
|
||||||
sort_lastused = true,
|
|
||||||
theme = 'ivy',
|
|
||||||
mappings = {
|
|
||||||
i = {
|
|
||||||
['<c-w>'] = actions.delete_buffer,
|
|
||||||
['<cr>'] = actions.select_default,
|
|
||||||
},
|
|
||||||
n = {
|
|
||||||
['<c-w>'] = actions.delete_buffer,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
find_files = {
|
|
||||||
theme = 'ivy',
|
|
||||||
},
|
|
||||||
oldfiles = {
|
|
||||||
theme = 'ivy',
|
|
||||||
},
|
|
||||||
git_files = {
|
|
||||||
theme = 'ivy',
|
|
||||||
},
|
|
||||||
lsp_dynamic_workspace_symbols = {
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
24
lua/overseer/template/user/clang/clang-tidy.lua
Normal file
24
lua/overseer/template/user/clang/clang-tidy.lua
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
return {
|
||||||
|
name = 'clang-tidy',
|
||||||
|
builder = function()
|
||||||
|
-- Full path to current file (see :help expand())
|
||||||
|
local dir = vim.loop.cwd()
|
||||||
|
local file = vim.fn.expand('%:p')
|
||||||
|
return {
|
||||||
|
cmd = { 'clang-tidy' },
|
||||||
|
-- cmd = { 'c:/Users/uid40528/scoop/apps/llvm/current/bin/clang-tidy.exe' },
|
||||||
|
args = { file, '-p', 'build_nvim', '--quiet', '--config-file', dir .. '/.clang-tidy' },
|
||||||
|
cwd = dir,
|
||||||
|
components = {
|
||||||
|
{ 'on_result_diagnostics_quickfix', open = false },
|
||||||
|
{ 'on_output_parse', problem_matcher = '$gcc' },
|
||||||
|
{ 'on_result_diagnostics', remove_on_restart = true },
|
||||||
|
{ 'restart_on_save' },
|
||||||
|
'default',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
condition = {
|
||||||
|
filetype = { 'cpp' },
|
||||||
|
},
|
||||||
|
}
|
28
lua/overseer/template/user/cmake/build.lua
Normal file
28
lua/overseer/template/user/cmake/build.lua
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
return {
|
||||||
|
name = 'CMake Build for nvim',
|
||||||
|
builder = function()
|
||||||
|
return {
|
||||||
|
cmd = { 'cmake' },
|
||||||
|
args = { '--build', '.', '--', '-j8' },
|
||||||
|
cwd = 'build_nvim',
|
||||||
|
-- components = {"on_output_parse", problem_matcher = "$gcc"}
|
||||||
|
-- components = {'on_output_quickfix', set_diagnostics = true, open = true}
|
||||||
|
components = {
|
||||||
|
{ 'on_output_quickfix', open = true, open_on_match = true },
|
||||||
|
{ 'on_output_parse', problem_matcher = '$gcc' },
|
||||||
|
'default',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
condition = {
|
||||||
|
callback = function(opts)
|
||||||
|
if vim.fn.executable('cmake') == 0 then
|
||||||
|
return false, 'Command "cmake" not found'
|
||||||
|
end
|
||||||
|
if vim.fn.findfile('CMakeLists.txt', opts.dir .. ';') == '' then
|
||||||
|
return false, 'No CMakeLists.txt found'
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
21
lua/overseer/template/user/cmake/clean.lua
Normal file
21
lua/overseer/template/user/cmake/clean.lua
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
return {
|
||||||
|
name = 'CMake Clean for nvim',
|
||||||
|
builder = function()
|
||||||
|
return {
|
||||||
|
cmd = { 'cmake' },
|
||||||
|
args = { '--build', '.', '-t', 'clean' },
|
||||||
|
cwd = 'build_nvim',
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
condition = {
|
||||||
|
callback = function(opts)
|
||||||
|
if vim.fn.executable('cmake') == 0 then
|
||||||
|
return false, 'Command "cmake" not found'
|
||||||
|
end
|
||||||
|
if vim.fn.findfile('CMakeLists.txt', opts.dir .. ';') == '' then
|
||||||
|
return false, 'No CMakeLists.txt found'
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
7
lua/overseer/template/user/cmake/cmake.lua
Normal file
7
lua/overseer/template/user/cmake/cmake.lua
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
'builtin',
|
||||||
|
'user.cmake.configure',
|
||||||
|
'user.cmake.build',
|
||||||
|
'user.cmake.clean',
|
||||||
|
}
|
||||||
|
-- https://gitlab.com/ranjithshegde/dotbare/-/tree/master/.config/nvim/lua/overseer
|
22
lua/overseer/template/user/cmake/configure.lua
Normal file
22
lua/overseer/template/user/cmake/configure.lua
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
return {
|
||||||
|
name = 'CMake Configure for nvim',
|
||||||
|
builder = function()
|
||||||
|
local cwd = vim.fn.getcwd()
|
||||||
|
return {
|
||||||
|
cmd = { 'cmake' },
|
||||||
|
args = { '-B', 'build_nvim', '-S', cwd, '-G', 'Ninja' },
|
||||||
|
cwd = build_nvim,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
condition = {
|
||||||
|
callback = function(opts)
|
||||||
|
if vim.fn.executable('cmake') == 0 then
|
||||||
|
return false, 'Command "cmake" not found'
|
||||||
|
end
|
||||||
|
if vim.fn.findfile('CMakeLists.txt', opts.dir .. ';') == '' then
|
||||||
|
return false, 'No CMakeLists.txt found'
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
32
lua/plugins/aider.lua
Normal file
32
lua/plugins/aider.lua
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
return {
|
||||||
|
'GeorgesAlkhouri/nvim-aider',
|
||||||
|
cmd = {
|
||||||
|
'AiderTerminalToggle',
|
||||||
|
'AiderHealth',
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{ '<leader>a/', '<cmd>AiderTerminalToggle<cr>', desc = 'Open Aider' },
|
||||||
|
{ '<leader>as', '<cmd>AiderTerminalSend<cr>', desc = 'Send to Aider', mode = { 'n', 'v' } },
|
||||||
|
{ '<leader>ac', '<cmd>AiderQuickSendCommand<cr>', desc = 'Send Command To Aider' },
|
||||||
|
{ '<leader>ab', '<cmd>AiderQuickSendBuffer<cr>', desc = 'Send Buffer To Aider' },
|
||||||
|
{ '<leader>a+', '<cmd>AiderQuickAddFile<cr>', desc = 'Add File to Aider' },
|
||||||
|
{ '<leader>a-', '<cmd>AiderQuickDropFile<cr>', desc = 'Drop File from Aider' },
|
||||||
|
{ '<leader>ar', '<cmd>AiderQuickReadOnlyFile<cr>', desc = 'Add File as Read-Only' },
|
||||||
|
-- Example nvim-tree.lua integration if needed
|
||||||
|
{ '<leader>a+', '<cmd>AiderTreeAddFile<cr>', desc = 'Add File from Tree to Aider', ft = 'NvimTree' },
|
||||||
|
{ '<leader>a-', '<cmd>AiderTreeDropFile<cr>', desc = 'Drop File from Tree from Aider', ft = 'NvimTree' },
|
||||||
|
},
|
||||||
|
dependencies = {
|
||||||
|
'folke/snacks.nvim',
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
args = {
|
||||||
|
'--model gemini-2.5-pro',
|
||||||
|
'--no-auto-commits',
|
||||||
|
'--pretty',
|
||||||
|
'--stream',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = true,
|
||||||
|
enabled = false,
|
||||||
|
}
|
58
lua/plugins/avante.lua
Normal file
58
lua/plugins/avante.lua
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
return {
|
||||||
|
'yetone/avante.nvim',
|
||||||
|
version = false, -- Set this to "*" to always pull the latest release version, or set it to false to update to the latest code changes.
|
||||||
|
opts = {
|
||||||
|
debug = false,
|
||||||
|
provider = 'gemini',
|
||||||
|
auto_suggestions_provider = 'openai', -- Since auto-suggestions are a high-frequency operation and therefore expensive, it is recommended to specify an inexpensive provider or even a free provider: copilot
|
||||||
|
openai = {
|
||||||
|
endpoint = 'https://api.openai.com/v1',
|
||||||
|
-- model = 'o3-mini',
|
||||||
|
timeout = 30000, -- Timeout in milliseconds
|
||||||
|
temperature = 0,
|
||||||
|
max_tokens = 4096,
|
||||||
|
},
|
||||||
|
gemini = {
|
||||||
|
api_key_name = 'GEMINI_API_KEY',
|
||||||
|
model = 'gemini-2.5-flash-preview-04-17',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- if you want to build from source then do `make BUILD_FROM_SOURCE=true`
|
||||||
|
build = 'make',
|
||||||
|
-- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows
|
||||||
|
dependencies = {
|
||||||
|
'stevearc/dressing.nvim',
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
'MunifTanjim/nui.nvim',
|
||||||
|
'nvim-tree/nvim-web-devicons', -- or echasnovski/mini.icons
|
||||||
|
'zbirenbaum/copilot.lua', -- for providers='copilot'
|
||||||
|
{
|
||||||
|
'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cmd = {
|
||||||
|
'AvanteAsk',
|
||||||
|
'AvanteBuild',
|
||||||
|
'AvanteChat',
|
||||||
|
'AvanteChatNew',
|
||||||
|
'AvanteHistory',
|
||||||
|
'AvanteClear',
|
||||||
|
'AvanteEdit',
|
||||||
|
'AvanteFocus',
|
||||||
|
'AvanteRefresh',
|
||||||
|
'AvanteStop',
|
||||||
|
'AvanteSwitchProvider',
|
||||||
|
'AvanteShowRepoMap',
|
||||||
|
'AvanteToggle',
|
||||||
|
'AvanteModels',
|
||||||
|
'AvanteSwitchSelectorProvider',
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'<leader>aa',
|
||||||
|
'<cmd>AvanteAsk<CR>',
|
||||||
|
desc = 'Avante Ask',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
enabled = false,
|
||||||
|
}
|
235
lua/plugins/blink.lua
Normal file
235
lua/plugins/blink.lua
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
return {
|
||||||
|
'saghen/blink.cmp',
|
||||||
|
lazy = false, -- lazy loading handled internally
|
||||||
|
-- optional: provides snippets for the snippet source
|
||||||
|
dependencies = {
|
||||||
|
'rafamadriz/friendly-snippets',
|
||||||
|
'giuxtaposition/blink-cmp-copilot',
|
||||||
|
{
|
||||||
|
'fang2hou/blink-copilot',
|
||||||
|
opts = {
|
||||||
|
max_completions = 1, -- Global default for max completions
|
||||||
|
max_attempts = 2, -- Global default for max attempts
|
||||||
|
-- `kind` is not set, so the default value is "Copilot"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'dmitmel/cmp-cmdline-history',
|
||||||
|
'onsails/lspkind.nvim',
|
||||||
|
'folke/lazydev.nvim',
|
||||||
|
'L3MON4D3/LuaSnip',
|
||||||
|
{
|
||||||
|
'saghen/blink.compat',
|
||||||
|
-- use the latest release, via version = '*', if you also use the latest release for blink.cmp
|
||||||
|
version = '*',
|
||||||
|
-- lazy.nvim will automatically load the plugin when it's required by blink.cmp
|
||||||
|
lazy = true,
|
||||||
|
-- make sure to set opts so that lazy.nvim calls blink.compat's setup
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
'rcarriga/cmp-dap',
|
||||||
|
},
|
||||||
|
|
||||||
|
-- use a release tag to download pre-built binaries
|
||||||
|
version = '*',
|
||||||
|
-- OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust
|
||||||
|
-- build = 'cargo build --release',
|
||||||
|
-- If you use nix, you can build from source using latest nightly rust with:
|
||||||
|
-- build = 'nix run .#build-plugin',
|
||||||
|
|
||||||
|
opts = {
|
||||||
|
-- 'default' for mappings similar to built-in completion
|
||||||
|
-- 'super-tab' for mappings similar to vscode (tab to accept, arrow keys to navigate)
|
||||||
|
-- 'enter' for mappings similar to 'super-tab' but with 'enter' to accept
|
||||||
|
-- see the "default configuration" section below for full documentation on how to define
|
||||||
|
-- your own keymap.
|
||||||
|
keymap = { preset = 'enter' },
|
||||||
|
|
||||||
|
appearance = {
|
||||||
|
-- Sets the fallback highlight groups to nvim-cmp's highlight groups
|
||||||
|
-- Useful for when your theme doesn't support blink.cmp
|
||||||
|
-- will be removed in a future release
|
||||||
|
use_nvim_cmp_as_default = true,
|
||||||
|
-- Set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
|
||||||
|
-- Adjusts spacing to ensure icons are aligned
|
||||||
|
nerd_font_variant = 'mono',
|
||||||
|
},
|
||||||
|
|
||||||
|
enabled = function() return (vim.bo.buftype ~= 'prompt' and vim.b.completion ~= false) or require('cmp_dap').is_dap_buffer() end,
|
||||||
|
-- default list of enabled providers defined so that you can extend it
|
||||||
|
-- elsewhere in your config, without redefining it, via `opts_extend`
|
||||||
|
sources = {
|
||||||
|
default = { 'copilot', 'lazydev', 'lsp', 'path', 'snippets', 'buffer', 'codeium' },
|
||||||
|
|
||||||
|
per_filetype = {
|
||||||
|
['dap-repl'] = {
|
||||||
|
'copilot',
|
||||||
|
'dap',
|
||||||
|
'snippets',
|
||||||
|
'path',
|
||||||
|
'buffer',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
providers = {
|
||||||
|
copilot = {
|
||||||
|
name = 'copilot',
|
||||||
|
module = 'blink-copilot',
|
||||||
|
score_offset = 100,
|
||||||
|
async = true,
|
||||||
|
opts = {
|
||||||
|
-- Local options override global ones
|
||||||
|
-- Final settings: max_completions = 3, max_attempts = 2, kind = "Copilot"
|
||||||
|
max_completions = 3, -- Override global max_completions
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lazydev = {
|
||||||
|
name = 'LazyDev',
|
||||||
|
module = 'lazydev.integrations.blink',
|
||||||
|
-- make lazydev completions top priority (see `:h blink.cmp`)
|
||||||
|
score_offset = 100,
|
||||||
|
},
|
||||||
|
codeium = { -- TODO: Replace with https://github.com/Exafunction/codeium.nvim/pull/264
|
||||||
|
name = 'codeium', -- IMPORTANT: use the same name as you would for nvim-cmp
|
||||||
|
module = 'blink.compat.source',
|
||||||
|
async = true,
|
||||||
|
},
|
||||||
|
cmdline_history = {
|
||||||
|
name = 'cmdline_history',
|
||||||
|
module = 'blink.compat.source',
|
||||||
|
score_offset = -50,
|
||||||
|
},
|
||||||
|
dap = {
|
||||||
|
name = 'dap',
|
||||||
|
module = 'blink.compat.source',
|
||||||
|
async = false,
|
||||||
|
enabled = function() return require('cmp_dap').is_dap_buffer() end,
|
||||||
|
},
|
||||||
|
buffer = {
|
||||||
|
name = 'Buffer',
|
||||||
|
module = 'blink.cmp.sources.buffer',
|
||||||
|
opts = {
|
||||||
|
-- default to all visible buffers
|
||||||
|
get_bufnrs = function()
|
||||||
|
return vim
|
||||||
|
.iter(vim.api.nvim_list_wins())
|
||||||
|
:map(function(win) return vim.api.nvim_win_get_buf(win) end)
|
||||||
|
:filter(function(buf) return vim.bo[buf].buftype ~= 'nofile' end)
|
||||||
|
:totable()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
cmdline = {
|
||||||
|
sources = function()
|
||||||
|
local type = vim.fn.getcmdtype()
|
||||||
|
-- Search forward and backward
|
||||||
|
if type == '/' or type == '?' then
|
||||||
|
return { 'buffer' }
|
||||||
|
end
|
||||||
|
-- Commands
|
||||||
|
if type == ':' or type == '@' then
|
||||||
|
return { 'cmdline', 'buffer', 'cmdline_history' }
|
||||||
|
end
|
||||||
|
return {}
|
||||||
|
end,
|
||||||
|
completion = {
|
||||||
|
trigger = {
|
||||||
|
show_on_blocked_trigger_characters = {},
|
||||||
|
show_on_x_blocked_trigger_characters = nil, -- Inherits from top level `completion.trigger.show_on_blocked_trigger_characters` config when not set
|
||||||
|
},
|
||||||
|
list = {
|
||||||
|
selection = {
|
||||||
|
auto_insert = false,
|
||||||
|
preselect = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
menu = {
|
||||||
|
auto_show = true, -- Inherits from top level `completion.menu.auto_show` config when not set
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keymap = {
|
||||||
|
['<down>'] = { 'select_next', 'fallback' },
|
||||||
|
['<up>'] = { 'select_prev', 'fallback' },
|
||||||
|
['<CR>'] = { 'accept', 'fallback' },
|
||||||
|
['<C-e>'] = { 'cancel' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
completion = {
|
||||||
|
list = {
|
||||||
|
selection = {
|
||||||
|
auto_insert = false,
|
||||||
|
preselect = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
accept = {
|
||||||
|
dot_repeat = false,
|
||||||
|
},
|
||||||
|
menu = {
|
||||||
|
max_height = 25,
|
||||||
|
draw = {
|
||||||
|
padding = 1,
|
||||||
|
gap = 1,
|
||||||
|
-- treesitter = { 'lsp' },
|
||||||
|
components = {
|
||||||
|
kind_icon = {
|
||||||
|
ellipsis = false,
|
||||||
|
text = function(ctx)
|
||||||
|
local lspkind = require('lspkind')
|
||||||
|
local icon = ctx.kind_icon
|
||||||
|
if ctx.source_name == 'cmdline_history' then
|
||||||
|
icon = require('nvim-web-devicons').get_icon('log')
|
||||||
|
elseif vim.tbl_contains({ 'Path' }, ctx.source_name) then
|
||||||
|
local dev_icon, _ = require('nvim-web-devicons').get_icon(ctx.label)
|
||||||
|
if dev_icon then
|
||||||
|
icon = dev_icon
|
||||||
|
end
|
||||||
|
else
|
||||||
|
icon = lspkind.symbolic(ctx.kind, {
|
||||||
|
mode = 'symbol',
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
return icon .. ctx.icon_gap
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- Optionally, use the highlight groups from nvim-web-devicons
|
||||||
|
-- You can also add the same function for `kind.highlight` if you want to
|
||||||
|
-- keep the highlight groups in sync with the icons.
|
||||||
|
highlight = function(ctx)
|
||||||
|
local hl = ctx.kind_hl
|
||||||
|
if ctx.source_name == 'cmdline_history' then
|
||||||
|
_, hl = require('nvim-web-devicons').get_icon('log')
|
||||||
|
elseif ctx.source_name == 'cmdline' then
|
||||||
|
_, hl = require('nvim-web-devicons').get_icon('cc')
|
||||||
|
elseif vim.tbl_contains({ 'Path' }, ctx.source_name) then
|
||||||
|
local dev_icon, dev_hl = require('nvim-web-devicons').get_icon(ctx.label)
|
||||||
|
if dev_icon then
|
||||||
|
hl = dev_hl
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return hl
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
documentation = {
|
||||||
|
auto_show = true,
|
||||||
|
auto_show_delay_ms = 500,
|
||||||
|
treesitter_highlighting = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- experimental signature help support
|
||||||
|
signature = { enabled = true },
|
||||||
|
snippets = {
|
||||||
|
preset = 'luasnip',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- allows extending the providers array elsewhere in your config
|
||||||
|
-- without having to redefine it
|
||||||
|
enabled = false,
|
||||||
|
}
|
35
lua/plugins/cmake-tools.lua
Normal file
35
lua/plugins/cmake-tools.lua
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
return {
|
||||||
|
'Civitasv/cmake-tools.nvim',
|
||||||
|
opts = {
|
||||||
|
cmake_command = 'cmake',
|
||||||
|
cmake_generate_options = { '-D', 'CMAKE_EXPORT_COMPILE_COMMANDS=1', '-G', 'Ninja' },
|
||||||
|
cmake_show_console = 'always',
|
||||||
|
cmake_build_directory = 'build_nvim',
|
||||||
|
cmake_dap_configuration = { name = 'cpp', type = 'codelldb', request = 'launch' }, -- dap configuration, optional
|
||||||
|
},
|
||||||
|
cmd = {
|
||||||
|
'CMakeGenerate',
|
||||||
|
'CMakeBuild',
|
||||||
|
'CMakeRun',
|
||||||
|
'CMakeDebug',
|
||||||
|
'CMakeSelectBuildType',
|
||||||
|
'CMakeSelectBuildTarget',
|
||||||
|
'CMakeSelectLaunchTarget',
|
||||||
|
'CMakeSelectKit',
|
||||||
|
'CMakeSelectConfigurePreset',
|
||||||
|
'CMakeSelectBuildPreset',
|
||||||
|
'CMakeSelectLaunchTarget',
|
||||||
|
'CMakeOpen',
|
||||||
|
'CMakeClose',
|
||||||
|
'CMakeInstall',
|
||||||
|
'CMakeClean',
|
||||||
|
'CMakeStop',
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'<S-F6>',
|
||||||
|
function() require('cmake-tools').debug({}) end,
|
||||||
|
desc = 'Run and debug target from cmake',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
151
lua/plugins/cmp.lua
Normal file
151
lua/plugins/cmp.lua
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
return {
|
||||||
|
'hrsh7th/nvim-cmp',
|
||||||
|
branch = 'main',
|
||||||
|
lazy = false,
|
||||||
|
dependencies = {
|
||||||
|
'neovim/nvim-lspconfig',
|
||||||
|
'hrsh7th/cmp-nvim-lsp',
|
||||||
|
'hrsh7th/cmp-buffer',
|
||||||
|
'hrsh7th/cmp-path',
|
||||||
|
'hrsh7th/cmp-cmdline',
|
||||||
|
'L3MON4D3/LuaSnip',
|
||||||
|
'saadparwaiz1/cmp_luasnip',
|
||||||
|
'onsails/lspkind.nvim',
|
||||||
|
'zbirenbaum/copilot-cmp',
|
||||||
|
'hrsh7th/cmp-path',
|
||||||
|
'dmitmel/cmp-cmdline-history',
|
||||||
|
'hrsh7th/cmp-nvim-lsp-signature-help',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local t = function(str) return vim.api.nvim_replace_termcodes(str, true, true, true) end
|
||||||
|
|
||||||
|
local cmp = require('cmp')
|
||||||
|
local lspkind = require('lspkind')
|
||||||
|
local luasnip = require('luasnip')
|
||||||
|
lspkind.init({
|
||||||
|
symbol_map = {
|
||||||
|
Copilot = '',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require('copilot_cmp').setup()
|
||||||
|
|
||||||
|
cmp.setup({
|
||||||
|
preselect = cmp.PreselectMode.None,
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = {
|
||||||
|
['<Up>'] = cmp.mapping(cmp.mapping.select_prev_item(), { 'i', 'c', 's' }),
|
||||||
|
['<Down>'] = cmp.mapping(cmp.mapping.select_next_item(), { 'i', 'c', 's' }),
|
||||||
|
['<C-p>'] = cmp.mapping(cmp.mapping.select_prev_item(), { 'i', 'c', 's' }),
|
||||||
|
['<C-n>'] = cmp.mapping(cmp.mapping.select_next_item(), { 'i', 'c', 's' }),
|
||||||
|
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||||
|
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c', 's' }),
|
||||||
|
['<C-e>'] = cmp.mapping(cmp.mapping.close(), { 'i', 'c', 's' }),
|
||||||
|
['<CR>'] = cmp.mapping({
|
||||||
|
i = function(fallback)
|
||||||
|
if cmp.visible() and cmp.get_active_entry() then
|
||||||
|
cmp.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = false })
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
c = cmp.mapping.confirm({ select = false }),
|
||||||
|
s = cmp.mapping.confirm({ select = false }),
|
||||||
|
}),
|
||||||
|
['<Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
if luasnip.expand_or_jumpable() then
|
||||||
|
vim.api.nvim_feedkeys(t('<Plug>luasnip-expand-or-jump'), '', true)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
'i',
|
||||||
|
's',
|
||||||
|
}),
|
||||||
|
['<S-Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
if luasnip.jumpable(-1) then
|
||||||
|
vim.api.nvim_feedkeys(t('<Plug>luasnip-jump-prev'), '', true)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { 'i', 's' }),
|
||||||
|
['<c-x>'] = cmp.mapping(
|
||||||
|
cmp.mapping.complete({
|
||||||
|
config = {
|
||||||
|
sources = {
|
||||||
|
{
|
||||||
|
name = 'cmdline_history',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
{ 'c' }
|
||||||
|
),
|
||||||
|
},
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'copilot' },
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'nvim_lsp_signature_help' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
{
|
||||||
|
name = 'buffer',
|
||||||
|
option = {
|
||||||
|
get_bufnrs = function() return vim.api.nvim_list_bufs() end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ name = 'path' },
|
||||||
|
}),
|
||||||
|
|
||||||
|
window = {
|
||||||
|
documentation = {
|
||||||
|
winhighlight = 'Normal:CmpDocumentation',
|
||||||
|
},
|
||||||
|
completion = {
|
||||||
|
winhighlight = 'Normal:Pmenu,FloatBorder:Pmenu,Search:None',
|
||||||
|
col_offset = -3,
|
||||||
|
side_padding = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formatting = {
|
||||||
|
fields = { 'kind', 'abbr', 'menu' },
|
||||||
|
expandable_indicator = false,
|
||||||
|
format = function(entry, vim_item)
|
||||||
|
local kind = require('lspkind').cmp_format({ mode = 'symbol_text', maxwidth = 50, show_labelDetails = true })(entry, vim_item)
|
||||||
|
local strings = vim.split(kind.kind, '%s', { trimempty = true })
|
||||||
|
kind.kind = ' ' .. (strings[1] or '') .. ' '
|
||||||
|
kind.menu = ' (' .. (strings[2] or '') .. ')'
|
||||||
|
|
||||||
|
return kind
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
|
||||||
|
cmp.setup.cmdline({ '/', '?' }, {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = {
|
||||||
|
{ name = 'buffer' },
|
||||||
|
{ name = 'cmdline_history' },
|
||||||
|
{ name = 'path' },
|
||||||
|
{ name = 'buffer' },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||||
|
cmp.setup.cmdline(':', {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = {
|
||||||
|
{ name = 'cmdline', priority = 200 },
|
||||||
|
{ name = 'path', priority = 3 },
|
||||||
|
{ name = 'cmdline_history', priority = 3 },
|
||||||
|
{ name = 'buffer', priority = 3 },
|
||||||
|
},
|
||||||
|
matching = { disallow_symbol_nonprefix_matching = false },
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
enabled = true,
|
||||||
|
}
|
35
lua/plugins/codecompanion.lua
Normal file
35
lua/plugins/codecompanion.lua
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
return {
|
||||||
|
'olimorris/codecompanion.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
},
|
||||||
|
branch = 'main',
|
||||||
|
config = function()
|
||||||
|
require('codecompanion').setup({
|
||||||
|
strategies = {
|
||||||
|
chat = {
|
||||||
|
adapter = 'copilot',
|
||||||
|
},
|
||||||
|
inline = {
|
||||||
|
adapter = 'copilot',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- adapters = {
|
||||||
|
-- anthropic = function()
|
||||||
|
-- return require('codecompanion.adapters').extend('copilot', {
|
||||||
|
-- env = {
|
||||||
|
-- api_key = 'ghu_8hbMItSdtNIrzMI4svd94dem3ZCsk23VG446',
|
||||||
|
-- },
|
||||||
|
-- })
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
cmd = {
|
||||||
|
'CodeCompanion',
|
||||||
|
'CodeCompanionChat',
|
||||||
|
'CodeCompanionCmd',
|
||||||
|
'CodeCompanionActions ',
|
||||||
|
},
|
||||||
|
}
|
11
lua/plugins/comment.lua
Normal file
11
lua/plugins/comment.lua
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
return {
|
||||||
|
'numToStr/Comment.nvim',
|
||||||
|
version = '*',
|
||||||
|
opts = {
|
||||||
|
mappings = false,
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{ '<c-c>', '<Plug>(comment_toggle_linewise_current)', desc = 'Toggle comment' },
|
||||||
|
{ '<c-c>', '<Plug>(comment_toggle_linewise_visual)gv', mode = 'v', desc = 'Toggle comment' },
|
||||||
|
},
|
||||||
|
}
|
27
lua/plugins/conform.lua
Normal file
27
lua/plugins/conform.lua
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
return {
|
||||||
|
'stevearc/conform.nvim',
|
||||||
|
cmd = { 'ConformInfo' },
|
||||||
|
opts = {
|
||||||
|
default_format_opts = {
|
||||||
|
lsp_format = 'fallback',
|
||||||
|
},
|
||||||
|
log_level = vim.log.levels.ERROR,
|
||||||
|
formatters_by_ft = {
|
||||||
|
lua = { 'stylua' },
|
||||||
|
python = { 'ruff_format' },
|
||||||
|
yaml = { 'prettier', timeout_ms = 5000 },
|
||||||
|
cmake = { 'gersemi' },
|
||||||
|
markdown = { 'prettier' },
|
||||||
|
json = { 'fixjson' },
|
||||||
|
toml = { 'taplo' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'<space>f',
|
||||||
|
mode = { 'n', 'x', 'v' },
|
||||||
|
function() require('conform').format() end,
|
||||||
|
desc = 'Format with Conform',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
24
lua/plugins/copilot.lua
Normal file
24
lua/plugins/copilot.lua
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
return {
|
||||||
|
'zbirenbaum/copilot.lua',
|
||||||
|
cmd = 'Copilot',
|
||||||
|
event = 'InsertEnter',
|
||||||
|
config = function()
|
||||||
|
require('copilot').setup({
|
||||||
|
filetypes = {
|
||||||
|
yaml = false,
|
||||||
|
markdown = false,
|
||||||
|
python = true,
|
||||||
|
help = false,
|
||||||
|
gitcommit = false,
|
||||||
|
gitrebase = false,
|
||||||
|
hgcommit = false,
|
||||||
|
svn = false,
|
||||||
|
cvs = false,
|
||||||
|
cpp = true,
|
||||||
|
['.'] = false,
|
||||||
|
},
|
||||||
|
suggestion = { enabled = false, auto_trigger = false },
|
||||||
|
panel = { enabled = false },
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
142
lua/plugins/dap.lua
Normal file
142
lua/plugins/dap.lua
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
return {
|
||||||
|
'mfussenegger/nvim-dap',
|
||||||
|
version = false,
|
||||||
|
dependencies = {
|
||||||
|
{
|
||||||
|
'mfussenegger/nvim-dap-python',
|
||||||
|
version = false,
|
||||||
|
},
|
||||||
|
-- 'theHamsta/nvim-dap-virtual-text',
|
||||||
|
{
|
||||||
|
'rcarriga/nvim-dap-ui',
|
||||||
|
version = false,
|
||||||
|
dependencies = {
|
||||||
|
'nvim-neotest/nvim-nio',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'LiadOz/nvim-dap-repl-highlights',
|
||||||
|
version = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{ '<F5>', function() require('dap').continue() end, desc = 'DAP start or continue' },
|
||||||
|
{ '<S-F5>', function() require('dap').run_last() end, desc = 'DAP run last' },
|
||||||
|
{ '<F6>', function() require('dap').run_last() end, desc = 'Run last' },
|
||||||
|
{ '<F7>', function() require('dap').goto_() end, desc = 'DAP goto' },
|
||||||
|
{ '<F8>', function() require('dap.ui.widgets').hover() end, desc = 'DAP Hover' },
|
||||||
|
{ '<F9>', function() require('dap').toggle_breakpoint() end, desc = 'DAP breakpoint' },
|
||||||
|
{ '<F10>', function() require('dap').step_over() end, desc = 'DAP step_over' },
|
||||||
|
{ '<F11>', function() require('dap').step_into() end, desc = 'DAP step_into' },
|
||||||
|
{ '<S-F11>', function() require('dap').step_out() end, desc = 'DAP step_out' },
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local dap = require('dap')
|
||||||
|
vim.fn.sign_define('DapBreakpoint', { text = '🛑', texthl = '', linehl = '', numhl = '' })
|
||||||
|
|
||||||
|
-- make sure we can exit the terminal with esc
|
||||||
|
vim.api.nvim_create_autocmd({ 'TermOpen' }, {
|
||||||
|
pattern = { '*dap-terminal*' },
|
||||||
|
callback = function()
|
||||||
|
local opts = { noremap = true }
|
||||||
|
vim.api.nvim_buf_set_keymap(0, 't', '<esc>', [[<C-\><C-n>]], opts)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
require('dap.ext.vscode').json_decode = require('utils.json_workaround').decode_json
|
||||||
|
|
||||||
|
local masonpath = vim.fn.stdpath('data') .. '/mason'
|
||||||
|
|
||||||
|
vim.keymap.set('x', '<leader>k', function()
|
||||||
|
local lines = vim.fn.getregion(vim.fn.getpos('.'), vim.fn.getpos('v'), { type = vim.fn.mode() })
|
||||||
|
dap.repl.execute(table.concat(lines, '\n'))
|
||||||
|
end, { desc = 'Dapl execute selection' })
|
||||||
|
vim.keymap.set('n', '<leader>k', function()
|
||||||
|
local line = vim.api.nvim_get_current_line()
|
||||||
|
dap.repl.execute(line)
|
||||||
|
end, { desc = 'DAP execute' })
|
||||||
|
|
||||||
|
local dapui = require('dapui')
|
||||||
|
dapui.setup()
|
||||||
|
dap.listeners.before.attach.dapui_config = function() dapui.open() end
|
||||||
|
dap.listeners.before.launch.dapui_config = function() dapui.open() end
|
||||||
|
dap.listeners.before.event_terminated.dapui_config = function() dapui.close() end
|
||||||
|
dap.listeners.before.event_exited.dapui_config = function() dapui.close() end
|
||||||
|
|
||||||
|
local path = require('mason-registry').get_package('debugpy'):get_install_path()
|
||||||
|
if vim.loop.os_uname().sysname:find('Windows') then
|
||||||
|
require('dap-python').setup(path .. 'dap-python' .. 'python')
|
||||||
|
else
|
||||||
|
require('dap-python').setup(path .. '/venv/bin/python')
|
||||||
|
end
|
||||||
|
|
||||||
|
-- CPP
|
||||||
|
dap.adapters.codelldb = {
|
||||||
|
type = 'server',
|
||||||
|
port = '${port}',
|
||||||
|
executable = {
|
||||||
|
command = require('mason-core.path').bin_prefix('codelldb'),
|
||||||
|
args = { '--port', '${port}' },
|
||||||
|
|
||||||
|
-- On windows you may have to uncomment this:
|
||||||
|
detached = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
dap.adapters.cppdbg = {
|
||||||
|
id = 'cppdbg',
|
||||||
|
type = 'executable',
|
||||||
|
command = masonpath .. '/bin/OpenDebugAD7',
|
||||||
|
}
|
||||||
|
|
||||||
|
dap.adapters.lldb = {
|
||||||
|
type = 'executable',
|
||||||
|
command = function()
|
||||||
|
if vim.loop.os_uname().sysname == 'Linux' then
|
||||||
|
return 'lldb-vscode'
|
||||||
|
else
|
||||||
|
return os.getenv('SCOOP') .. '/apps/llvm/current/bin/lldb-vscode.exe'
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
name = 'lldb',
|
||||||
|
}
|
||||||
|
|
||||||
|
dap.configurations.cpp = {
|
||||||
|
{
|
||||||
|
name = 'Launch codelldb',
|
||||||
|
type = 'codelldb',
|
||||||
|
request = 'launch',
|
||||||
|
program = function() return vim.fn.input({ 'Path to executable: ', vim.fn.getcwd() .. '/build_nvim/', 'file' }) end,
|
||||||
|
cwd = '${workspaceFolder}',
|
||||||
|
stopOnEntry = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = 'Launch lldb',
|
||||||
|
type = 'lldb',
|
||||||
|
request = 'launch',
|
||||||
|
program = function() return vim.fn.input({ 'Path to executable: ', vim.fn.getcwd() .. '/build_nvim', '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,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- EXTENSIONS
|
||||||
|
|
||||||
|
require('nvim-dap-repl-highlights').setup()
|
||||||
|
-- require('nvim-dap-virtual-text').setup({})
|
||||||
|
end,
|
||||||
|
}
|
23
lua/plugins/dial.lua
Normal file
23
lua/plugins/dial.lua
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
return {
|
||||||
|
'monaqa/dial.nvim',
|
||||||
|
keys = {
|
||||||
|
{ '<C-a>', function() return require('dial.map').inc_normal() end, expr = true, desc = 'Increment' },
|
||||||
|
{ '<C-x>', function() return require('dial.map').dec_normal() end, expr = true, desc = 'Decrement' },
|
||||||
|
{ '<C-a>', function() return require('dial.map').inc_visual() end, mode = 'v', expr = true, desc = 'Increment' },
|
||||||
|
{ '<C-x>', function() return require('dial.map').dec_visual() end, mode = 'v', expr = true, desc = 'Decrement' },
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local augends = require('dial.augend')
|
||||||
|
require('dial.config').augends:register_group({
|
||||||
|
-- default augends used when no group name is specified
|
||||||
|
default = {
|
||||||
|
augends.integer.alias.decimal, -- nonnegative decimal number (0, 1, 2, 3, ...)
|
||||||
|
augends.integer.alias.hex, -- nonnegative hex number (0x0, 0x1, 0x2, ...)
|
||||||
|
augends.date.alias['%Y/%m/%d'], -- date (2027/04/15, etc.)
|
||||||
|
augends.constant.alias.bool, -- boolean value (true <-> false)
|
||||||
|
augends.constant.new({ elements = { 'True', 'False' } }),
|
||||||
|
augends.constant.new({ elements = { 'TRUE', 'FALSE' } }),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
25
lua/plugins/diffview.lua
Normal file
25
lua/plugins/diffview.lua
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
return {
|
||||||
|
'sindrets/diffview.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
keymaps = {
|
||||||
|
view = {
|
||||||
|
['<leader>b'] = false,
|
||||||
|
},
|
||||||
|
file_panel = {
|
||||||
|
['<leader>b'] = false,
|
||||||
|
},
|
||||||
|
file_history_panel = {
|
||||||
|
['<leader>b'] = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cmd = 'DiffviewOpen',
|
||||||
|
keys = {
|
||||||
|
{ '<space>bb', '<cmd>DiffviewOpen<cr>', desc = 'Diffview local' },
|
||||||
|
{ '<space>bd', '<cmd>DiffviewOpen origin/develop...<cr>', desc = 'Diffview vs develop' },
|
||||||
|
{ '<space>bm', '<cmd>DiffviewOpen origin/master...<cr>', desc = 'Diffview vs master' },
|
||||||
|
},
|
||||||
|
}
|
3
lua/plugins/dressing.lua
Normal file
3
lua/plugins/dressing.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
return {
|
||||||
|
'stevearc/dressing.nvim',
|
||||||
|
}
|
33
lua/plugins/flash.lua
Normal file
33
lua/plugins/flash.lua
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
return {
|
||||||
|
'folke/flash.nvim',
|
||||||
|
opts = {
|
||||||
|
modes = {
|
||||||
|
search = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
char = {
|
||||||
|
keys = { 'f', 'F', 't', 'T', ';' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
's',
|
||||||
|
mode = { 'n', 'x', 'o' },
|
||||||
|
function()
|
||||||
|
-- default options: exact mode, multi window, all directions, with a backdrop
|
||||||
|
require('flash').jump()
|
||||||
|
end,
|
||||||
|
desc = 'Flash jump',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'S',
|
||||||
|
mode = { 'n', 'o', 'x' },
|
||||||
|
function()
|
||||||
|
require('flash').treesitter()
|
||||||
|
vim.api.nvim_feedkeys('V', 'n', true)
|
||||||
|
end,
|
||||||
|
desc = 'Flash treesitter',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
65
lua/plugins/gitsigns.lua
Normal file
65
lua/plugins/gitsigns.lua
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
return {
|
||||||
|
'lewis6991/gitsigns.nvim',
|
||||||
|
branch = 'main',
|
||||||
|
config = function()
|
||||||
|
require('gitsigns').setup({
|
||||||
|
current_line_blame = false,
|
||||||
|
current_line_blame_opts = {
|
||||||
|
virt_text = true,
|
||||||
|
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
|
||||||
|
delay = 1000,
|
||||||
|
ignore_whitespace = false,
|
||||||
|
},
|
||||||
|
on_attach = function(bufnr)
|
||||||
|
local gitsigns = require('gitsigns')
|
||||||
|
|
||||||
|
-- Navigation
|
||||||
|
vim.keymap.set('n', ']c', function()
|
||||||
|
if vim.wo.diff then
|
||||||
|
vim.cmd.normal({ ']c', bang = true })
|
||||||
|
else
|
||||||
|
gitsigns.nav_hunk('next')
|
||||||
|
end
|
||||||
|
end, { desc = 'Next hunk' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '[c', function()
|
||||||
|
if vim.wo.diff then
|
||||||
|
vim.cmd.normal({ '[c', bang = true })
|
||||||
|
else
|
||||||
|
gitsigns.nav_hunk('prev')
|
||||||
|
end
|
||||||
|
end, { desc = 'Previous hunk' })
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
vim.keymap.set('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'Stage hunk' })
|
||||||
|
vim.keymap.set('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'Reset hunk' })
|
||||||
|
|
||||||
|
vim.keymap.set('v', '<leader>hs', function() gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) end, { desc = 'Stage hunk' })
|
||||||
|
|
||||||
|
vim.keymap.set('v', '<leader>hr', function() gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) end, { desc = 'Reset hunk' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>hS', gitsigns.stage_buffer, { desc = 'Stage buffer' })
|
||||||
|
vim.keymap.set('n', '<leader>hR', gitsigns.reset_buffer, { desc = 'Reset buffer' })
|
||||||
|
vim.keymap.set('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'Preview hunk' })
|
||||||
|
vim.keymap.set('n', '<leader>hi', gitsigns.preview_hunk_inline, { desc = 'Preview hunk inline' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>hb', function() gitsigns.blame_line({ full = true }) end, { desc = 'Blame line' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>hd', gitsigns.diffthis, { desc = 'Diff this' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>hD', function() gitsigns.diffthis('~') end, { desc = 'Diff this (cached)' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>hQ', function() gitsigns.setqflist('all') end, { desc = 'Set quickfix list all' })
|
||||||
|
vim.keymap.set('n', '<leader>hq', gitsigns.setqflist, { desc = 'Set quickfix list' })
|
||||||
|
|
||||||
|
-- Toggles
|
||||||
|
vim.keymap.set('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = 'Toggle blame' })
|
||||||
|
vim.keymap.set('n', '<leader>td', gitsigns.toggle_deleted, { desc = 'Toggle deleted' })
|
||||||
|
vim.keymap.set('n', '<leader>tw', gitsigns.toggle_word_diff, { desc = 'Toggle word diff' })
|
||||||
|
|
||||||
|
-- Text object
|
||||||
|
vim.keymap.set({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
37
lua/plugins/goose.lua
Normal file
37
lua/plugins/goose.lua
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
return {
|
||||||
|
'azorng/goose.nvim',
|
||||||
|
config = function()
|
||||||
|
require('goose').setup({
|
||||||
|
keymap = {
|
||||||
|
global = {
|
||||||
|
toggle = '<leader>xg', -- Open goose. Close if opened
|
||||||
|
open_input = '<leader>xx', -- Opens and focuses on input window on insert mode
|
||||||
|
open_input_new_session = '<leader>xX', -- Opens and focuses on input window on insert mode. Creates a new session
|
||||||
|
open_output = '<leader>xo', -- Opens and focuses on output window
|
||||||
|
toggle_focus = '<leader>xt', -- Toggle focus between goose and last window
|
||||||
|
close = '<leader>xq', -- Close UI windows
|
||||||
|
toggle_fullscreen = '<leader>xf', -- Toggle between normal and fullscreen mode
|
||||||
|
select_session = '<leader>xs', -- Select and load a goose session
|
||||||
|
goose_mode_chat = '<leader>xmc', -- Set goose mode to `chat`. (Tool calling disabled. No editor context besides selections)
|
||||||
|
goose_mode_auto = '<leader>xma', -- Set goose mode to `auto`. (Default mode with full agent capabilities)
|
||||||
|
configure_provider = '<leader>xp', -- Quick provider and model switch from predefined list
|
||||||
|
diff_open = '<leader>xd', -- Opens a diff tab of a modified file since the last goose prompt
|
||||||
|
diff_next = '<leader>x]', -- Navigate to next file diff
|
||||||
|
diff_prev = '<leader>x[', -- Navigate to previous file diff
|
||||||
|
diff_close = '<leader>xc', -- Close diff view tab and return to normal editing
|
||||||
|
diff_revert_all = '<leader>xra', -- Revert all file changes since the last goose prompt
|
||||||
|
diff_revert_this = '<leader>xrt', -- Revert current file changes since the last goose prompt
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
submit = '<C-s>',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
{
|
||||||
|
'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
12
lua/plugins/grug-far.lua
Normal file
12
lua/plugins/grug-far.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
return {
|
||||||
|
'MagicDuck/grug-far.nvim',
|
||||||
|
config = function() require('grug-far').setup({}) end,
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'<C-f>',
|
||||||
|
function() require('grug-far').open() end,
|
||||||
|
desc = 'GrugFar',
|
||||||
|
mode = { 'n', 'v' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
30
lua/plugins/incline.lua
Normal file
30
lua/plugins/incline.lua
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
return {
|
||||||
|
'b0o/incline.nvim',
|
||||||
|
config = function()
|
||||||
|
local helpers = require('incline.helpers')
|
||||||
|
local devicons = require('nvim-web-devicons')
|
||||||
|
require('incline').setup({
|
||||||
|
window = {
|
||||||
|
padding = 0,
|
||||||
|
margin = { horizontal = 0 },
|
||||||
|
},
|
||||||
|
render = function(props)
|
||||||
|
local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ':t')
|
||||||
|
if filename == '' then
|
||||||
|
filename = '[No Name]'
|
||||||
|
end
|
||||||
|
local ft_icon, ft_color = devicons.get_icon_color(filename)
|
||||||
|
local modified = vim.bo[props.buf].modified
|
||||||
|
return {
|
||||||
|
ft_icon and { ' ', ft_icon, ' ', guibg = ft_color, guifg = helpers.contrast_color(ft_color) } or '',
|
||||||
|
' ',
|
||||||
|
{ filename, gui = modified and 'bold,italic' or 'bold' },
|
||||||
|
' ',
|
||||||
|
guibg = '#44406e',
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
-- Optional: Lazy load Incline
|
||||||
|
event = 'VeryLazy',
|
||||||
|
}
|
1
lua/plugins/init.lua
Normal file
1
lua/plugins/init.lua
Normal file
@ -0,0 +1 @@
|
|||||||
|
return {}
|
63
lua/plugins/iron.lua
Normal file
63
lua/plugins/iron.lua
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
return {
|
||||||
|
'Vigemus/iron.nvim',
|
||||||
|
branch = 'master',
|
||||||
|
config = function()
|
||||||
|
local iron = require('iron.core')
|
||||||
|
|
||||||
|
iron.setup({
|
||||||
|
config = {
|
||||||
|
-- Whether a repl should be discarded or not
|
||||||
|
scratch_repl = true,
|
||||||
|
-- Your repl definitions come here
|
||||||
|
repl_definition = {
|
||||||
|
sh = {
|
||||||
|
-- Can be a table or a function that
|
||||||
|
-- returns a table (see below)
|
||||||
|
command = { 'zsh' },
|
||||||
|
},
|
||||||
|
python = {
|
||||||
|
command = { 'python3' }, -- or { "ipython", "--no-autoindent" }
|
||||||
|
format = require('iron.fts.common').bracketed_paste_python,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- How the repl window will be displayed
|
||||||
|
-- See below for more information
|
||||||
|
repl_open_cmd = require('iron.view').split.vertical('50%'),
|
||||||
|
},
|
||||||
|
-- Iron doesn't set keymaps by default anymore.
|
||||||
|
-- You can set them here or manually add keymaps to the functions in iron.core
|
||||||
|
keymaps = {
|
||||||
|
send_motion = '<space>sc',
|
||||||
|
visual_send = '<space>sc',
|
||||||
|
send_file = '<space>sf',
|
||||||
|
send_line = '<space>sl',
|
||||||
|
send_paragraph = '<space>sp',
|
||||||
|
send_until_cursor = '<space>su',
|
||||||
|
send_mark = '<space>sm',
|
||||||
|
mark_motion = '<space>mc',
|
||||||
|
mark_visual = '<space>mc',
|
||||||
|
remove_mark = '<space>md',
|
||||||
|
cr = '<space>s<cr>',
|
||||||
|
interrupt = '<space>s<space>',
|
||||||
|
exit = '<space>sq',
|
||||||
|
clear = '<space>cl',
|
||||||
|
},
|
||||||
|
-- If the highlight is on, you can change how it looks
|
||||||
|
-- For the available options, check nvim_set_hl
|
||||||
|
highlight = {
|
||||||
|
italic = true,
|
||||||
|
},
|
||||||
|
ignore_blank_lines = true, -- ignore blank lines when sending visual select lines
|
||||||
|
})
|
||||||
|
|
||||||
|
-- iron also has a list of commands, see :h iron-commands for all available commands
|
||||||
|
end,
|
||||||
|
cmd = {
|
||||||
|
'IronRepl',
|
||||||
|
'IronRestart',
|
||||||
|
'IronFocus',
|
||||||
|
'IronHide',
|
||||||
|
'IronRepl',
|
||||||
|
'IronReplHere',
|
||||||
|
},
|
||||||
|
}
|
18
lua/plugins/lazydev.lua
Normal file
18
lua/plugins/lazydev.lua
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'folke/lazydev.nvim',
|
||||||
|
ft = 'lua', -- only load on lua files
|
||||||
|
branch = 'main',
|
||||||
|
opts = {
|
||||||
|
library = {
|
||||||
|
-- See the configuration section for more details
|
||||||
|
-- Load luvit types when the `vim.uv` word is found
|
||||||
|
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'Bilal2453/luvit-meta',
|
||||||
|
lazy = true,
|
||||||
|
},
|
||||||
|
}
|
87
lua/plugins/lsp.lua
Normal file
87
lua/plugins/lsp.lua
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
local lspKeys = function(client, bufnr)
|
||||||
|
local base_opts = { noremap = true, silent = false, buffer = bufnr }
|
||||||
|
|
||||||
|
local function opts(desc) return vim.tbl_extend('error', base_opts, { desc = desc }) end
|
||||||
|
|
||||||
|
local mappings = {
|
||||||
|
{ mode = { 'n', 'x' }, key = '<space>a', fn = vim.lsp.buf.code_action, desc = 'Code action' },
|
||||||
|
{ mode = 'n', key = '<space>e', fn = vim.lsp.buf.declaration, desc = 'Declaration' },
|
||||||
|
{ mode = 'n', key = '<space>h', fn = function() vim.lsp.buf.hover({ border = 'none' }) end, desc = 'Hover' },
|
||||||
|
{ mode = 'n', key = '<space>c', fn = vim.lsp.buf.outgoing_calls, desc = 'Outgoing calls' },
|
||||||
|
{ mode = 'n', key = '<space>C', fn = vim.lsp.buf.incoming_calls, desc = 'Incoming calls' },
|
||||||
|
{ mode = 'n', key = '<space>m', fn = vim.lsp.buf.rename, desc = 'Rename' },
|
||||||
|
{ mode = 'n', key = '<space>D', fn = vim.lsp.buf.type_definition, desc = 'Type definition' },
|
||||||
|
{ mode = { 'n', 'i', 'x' }, key = '<C-k>', fn = vim.lsp.buf.signature_help, desc = 'Signature help' },
|
||||||
|
{ mode = 'n', key = '<space>v', fn = function() vim.diagnostic.open_float({ border = 'rounded' }) end, desc = 'Diagnostics Float' },
|
||||||
|
{ mode = 'n', key = '<A-o>', fn = '<cmd>ClangdSwitchSourceHeader<CR>', desc = 'Switch Source/Header' },
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, map in ipairs(mappings) do
|
||||||
|
vim.keymap.set(map.mode, map.key, map.fn, opts(map.desc))
|
||||||
|
end
|
||||||
|
|
||||||
|
if client.supports_method('inlayHintProvider') then
|
||||||
|
vim.keymap.set(
|
||||||
|
'n',
|
||||||
|
'<space>i',
|
||||||
|
function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = bufnr }), { bufnr = bufnr }) end,
|
||||||
|
opts('Toggle inlay hints')
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
'neovim/nvim-lspconfig',
|
||||||
|
dependencies = {
|
||||||
|
'williamboman/mason.nvim',
|
||||||
|
'SmiteshP/nvim-navic',
|
||||||
|
},
|
||||||
|
lazy = false,
|
||||||
|
config = function()
|
||||||
|
local servers = {
|
||||||
|
'basedpyright',
|
||||||
|
'ruff',
|
||||||
|
'clangd',
|
||||||
|
'lua_ls',
|
||||||
|
'jsonls',
|
||||||
|
'dockerls',
|
||||||
|
'yamlls',
|
||||||
|
'neocmake',
|
||||||
|
'markdown_oxide',
|
||||||
|
'taplo',
|
||||||
|
}
|
||||||
|
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||||
|
-- capabilities = require('blink.cmp').get_lsp_capabilities(capabilities)
|
||||||
|
vim.lsp.config('*', {
|
||||||
|
capabilities = capabilities,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.enable(servers)
|
||||||
|
|
||||||
|
local lsp_group = vim.api.nvim_create_augroup('UserLspAttach', { clear = true })
|
||||||
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
group = lsp_group,
|
||||||
|
desc = 'Set buffer-local keymaps and options after an LSP client attaches',
|
||||||
|
callback = function(args)
|
||||||
|
local bufnr = args.buf
|
||||||
|
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
||||||
|
if not client then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
lspKeys(client, bufnr)
|
||||||
|
|
||||||
|
if client.server_capabilities.completionProvider then
|
||||||
|
vim.bo[bufnr].omnifunc = 'v:lua.vim.lsp.omnifunc'
|
||||||
|
vim.bo[bufnr].formatexpr = 'v:lua.vim.lsp.formatexpr()'
|
||||||
|
end
|
||||||
|
|
||||||
|
if client.server_capabilities.documentSymbolProvider then
|
||||||
|
local navic = require('nvim-navic')
|
||||||
|
navic.attach(client, bufnr)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
79
lua/plugins/lualine.lua
Normal file
79
lua/plugins/lualine.lua
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
return {
|
||||||
|
'nvim-lualine/lualine.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-tree/nvim-web-devicons',
|
||||||
|
'Isrothy/lualine-diagnostic-message',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require('lualine').setup({
|
||||||
|
options = {
|
||||||
|
theme = 'auto',
|
||||||
|
disabled_filetypes = {
|
||||||
|
statusline = {},
|
||||||
|
winbar = { 'dap-repl', 'dapui_console' },
|
||||||
|
},
|
||||||
|
section_separators = { left = '', right = '' },
|
||||||
|
component_separators = { left = '', right = '' },
|
||||||
|
},
|
||||||
|
globalstatus = true,
|
||||||
|
extensions = { 'oil', 'toggleterm' },
|
||||||
|
sections = {
|
||||||
|
lualine_b = {
|
||||||
|
'branch',
|
||||||
|
'diff',
|
||||||
|
{
|
||||||
|
'diagnostics',
|
||||||
|
sources = { 'nvim_diagnostic' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lualine_c = {
|
||||||
|
{
|
||||||
|
'getcwd',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'filename',
|
||||||
|
path = 1,
|
||||||
|
file_status = true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
function() return require('nvim-navic').get_location() end,
|
||||||
|
cond = function() return package.loaded['nvim-navic'] and require('nvim-navic').is_available() end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lualine_y = {
|
||||||
|
'searchcount',
|
||||||
|
'progress',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
inactive_sections = {
|
||||||
|
lualine_c = {
|
||||||
|
'getcwd',
|
||||||
|
{
|
||||||
|
'filename',
|
||||||
|
path = 1,
|
||||||
|
file_status = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tabline = {
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_c = {
|
||||||
|
{
|
||||||
|
'tabs',
|
||||||
|
mode = 2,
|
||||||
|
tabs_color = {
|
||||||
|
-- Same values as the general color option can be used here.
|
||||||
|
active = { bg = 'orange', fg = 'black' },
|
||||||
|
inactive = { bg = 'grey', fg = 'black' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lualine_x = {},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
enabled = true,
|
||||||
|
}
|
9
lua/plugins/luasnip-snippets.lua
Normal file
9
lua/plugins/luasnip-snippets.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
'mireq/luasnip-snippets',
|
||||||
|
dependencies = { 'L3MON4D3/LuaSnip' },
|
||||||
|
init = function()
|
||||||
|
-- Mandatory setup function
|
||||||
|
require('luasnip_snippets.common.snip_utils').setup()
|
||||||
|
end,
|
||||||
|
enabled = false,
|
||||||
|
}
|
111
lua/plugins/luasnip.lua
Normal file
111
lua/plugins/luasnip.lua
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
return {
|
||||||
|
'L3MON4D3/LuaSnip',
|
||||||
|
dependencies = { 'rafamadriz/friendly-snippets' },
|
||||||
|
config = function()
|
||||||
|
local ls = require('luasnip')
|
||||||
|
ls.setup({
|
||||||
|
-- Required to automatically include base snippets, like "c" snippets for "cpp"
|
||||||
|
-- load_ft_func = require('luasnip_snippets.common.snip_utils').load_ft_func,
|
||||||
|
-- ft_func = require('luasnip_snippets.common.snip_utils').ft_func,
|
||||||
|
-- To enable auto expansin
|
||||||
|
enable_autosnippets = true,
|
||||||
|
-- Uncomment to enable visual snippets triggered using <c-x>
|
||||||
|
store_selection_keys = '<c-x>',
|
||||||
|
})
|
||||||
|
-- some shorthands...
|
||||||
|
local s = ls.snippet
|
||||||
|
local sn = ls.snippet_node
|
||||||
|
local isn = ls.indent_snippet_node
|
||||||
|
local t = ls.text_node
|
||||||
|
local i = ls.insert_node
|
||||||
|
local f = ls.function_node
|
||||||
|
local c = ls.choice_node
|
||||||
|
local d = ls.dynamic_node
|
||||||
|
local r = ls.restore_node
|
||||||
|
local l = require('luasnip.extras').lambda
|
||||||
|
local rep = require('luasnip.extras').rep
|
||||||
|
local p = require('luasnip.extras').partial
|
||||||
|
local m = require('luasnip.extras').match
|
||||||
|
local n = require('luasnip.extras').nonempty
|
||||||
|
local dl = require('luasnip.extras').dynamic_lambda
|
||||||
|
local fmt = require('luasnip.extras.fmt').fmt
|
||||||
|
local fmta = require('luasnip.extras.fmt').fmta
|
||||||
|
local types = require('luasnip.util.types')
|
||||||
|
local conds = require('luasnip.extras.expand_conditions')
|
||||||
|
|
||||||
|
local function getRegA(capitalize)
|
||||||
|
local clipboard = vim.fn.getreg('a')
|
||||||
|
clipboard = clipboard:gsub('^m_', '')
|
||||||
|
if capitalize then
|
||||||
|
clipboard = clipboard:gsub('^%l', string.upper)
|
||||||
|
end
|
||||||
|
return clipboard
|
||||||
|
end
|
||||||
|
|
||||||
|
ls.snippets = {
|
||||||
|
cpp = {
|
||||||
|
s('TEST_F_getset', {
|
||||||
|
t('TEST_F('),
|
||||||
|
i(1, 'TestClass'),
|
||||||
|
t(' ,test_'),
|
||||||
|
p(getRegA, false),
|
||||||
|
t({ '_set_get)', '{', ' ' }),
|
||||||
|
i(2, 'm_object'),
|
||||||
|
t('.set'),
|
||||||
|
p(getRegA, true),
|
||||||
|
t('('),
|
||||||
|
i(3, '32.F'),
|
||||||
|
t({ ');', ' ' }),
|
||||||
|
i(4, 'EXPECT_EQ('),
|
||||||
|
rep(3),
|
||||||
|
t(', '),
|
||||||
|
rep(2),
|
||||||
|
t('.get'),
|
||||||
|
p(getRegA, true),
|
||||||
|
t({ '());', '' }),
|
||||||
|
t({ '', '}', '' }),
|
||||||
|
}),
|
||||||
|
s('TEST_fn_getset', {
|
||||||
|
t('void '),
|
||||||
|
p(getRegA, false),
|
||||||
|
t('_'),
|
||||||
|
i(1, 'get'),
|
||||||
|
t('_'),
|
||||||
|
i(2, 'set'),
|
||||||
|
t({ '()', '{', ' ' }),
|
||||||
|
i(3, 'm_object'),
|
||||||
|
t('.set'),
|
||||||
|
p(getRegA, true),
|
||||||
|
t('('),
|
||||||
|
i(4, '32.F'),
|
||||||
|
t({ ');', ' ' }),
|
||||||
|
i(5, 'EXPECT_EQ('),
|
||||||
|
rep(4),
|
||||||
|
t(', '),
|
||||||
|
rep(3),
|
||||||
|
t('.get'),
|
||||||
|
p(getRegA, true),
|
||||||
|
t({ '());', '' }),
|
||||||
|
t({ '', '}', '', '' }),
|
||||||
|
|
||||||
|
t('TEST_F('),
|
||||||
|
i(5),
|
||||||
|
t(' ,test_'),
|
||||||
|
p(getRegA, false),
|
||||||
|
t({ '_set_get)', '{', ' ' }),
|
||||||
|
p(getRegA, false),
|
||||||
|
t('_'),
|
||||||
|
rep(1),
|
||||||
|
t('_'),
|
||||||
|
rep(2),
|
||||||
|
t({ '();' }),
|
||||||
|
t({ '', '}' }),
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
|
require('luasnip.loaders.from_vscode').lazy_load({ paths = { './my-snippets' } })
|
||||||
|
end,
|
||||||
|
cmd = 'LuaSnipListAvailable',
|
||||||
|
}
|
17
lua/plugins/markdown-preview.lua
Normal file
17
lua/plugins/markdown-preview.lua
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
return {
|
||||||
|
'iamcco/markdown-preview.nvim',
|
||||||
|
cmd = {
|
||||||
|
'MarkdownPreviewToggle',
|
||||||
|
'MarkdownPreview',
|
||||||
|
'MarkdownPreviewStop',
|
||||||
|
},
|
||||||
|
branch = 'master',
|
||||||
|
ft = { 'markdown' },
|
||||||
|
build = function() vim.fn['mkdp#util#install']() end,
|
||||||
|
init = function()
|
||||||
|
vim.g.mkdp_auto_close = 0
|
||||||
|
vim.g.mkdp_auto_start = 0
|
||||||
|
vim.g.mkdp_combine_preview = 1
|
||||||
|
vim.g.mkdp_combine_preview_auto_refresh = 1
|
||||||
|
end,
|
||||||
|
}
|
20
lua/plugins/mason.lua
Normal file
20
lua/plugins/mason.lua
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
return {
|
||||||
|
'williamboman/mason.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
||||||
|
},
|
||||||
|
build = ':MasonUpdate',
|
||||||
|
branch = 'main',
|
||||||
|
config = function()
|
||||||
|
require('mason').setup({
|
||||||
|
ui = {
|
||||||
|
border = 'rounded',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require('mason-tool-installer').setup({
|
||||||
|
|
||||||
|
-- a list of all tools you want to ensure are installed upon
|
||||||
|
-- start
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
5
lua/plugins/mini-sessions.lua
Normal file
5
lua/plugins/mini-sessions.lua
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
return {
|
||||||
|
'echasnovski/mini.sessions',
|
||||||
|
version = '*',
|
||||||
|
config = function() require('mini.sessions').setup() end,
|
||||||
|
}
|
20
lua/plugins/mini-surround.lua
Normal file
20
lua/plugins/mini-surround.lua
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
return {
|
||||||
|
'echasnovski/mini.surround',
|
||||||
|
version = '*',
|
||||||
|
config = function()
|
||||||
|
require('mini.surround').setup({
|
||||||
|
mappings = {
|
||||||
|
add = '<leader>aa', -- Add surrounding in Normal and Visual modes
|
||||||
|
delete = '<leader>ad', -- Delete surrounding
|
||||||
|
find = '<leader>af', -- Find surrounding (to the right)
|
||||||
|
find_left = '<leader>aF', -- Find surrounding (to the left)
|
||||||
|
highlight = '<leader>ah', -- Highlight surrounding
|
||||||
|
replace = '<leader>ar', -- Replace surrounding
|
||||||
|
update_n_lines = '<leader>an', -- Update `n_lines`
|
||||||
|
|
||||||
|
suffix_last = 'l', -- Suffix to search with "prev" method
|
||||||
|
suffix_next = 'n', -- Suffix to search with "next" method
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
10
lua/plugins/mini_ai.lua
Normal file
10
lua/plugins/mini_ai.lua
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
return {
|
||||||
|
'echasnovski/mini.ai',
|
||||||
|
config = function()
|
||||||
|
require('mini.ai').setup({
|
||||||
|
-- Number of lines within which textobject is searched
|
||||||
|
n_lines = 150,
|
||||||
|
search_method = 'cover',
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
32
lua/plugins/neogen.lua
Normal file
32
lua/plugins/neogen.lua
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
return {
|
||||||
|
'danymat/neogen',
|
||||||
|
dependencies = 'nvim-treesitter/nvim-treesitter',
|
||||||
|
opts = {
|
||||||
|
enabled = true,
|
||||||
|
languages = {
|
||||||
|
cpp = {
|
||||||
|
template = {
|
||||||
|
annotation_convention = 'custom',
|
||||||
|
custom = {
|
||||||
|
{ nil, '/// file', { no_results = true, type = { 'file' } } },
|
||||||
|
{ nil, '/// $1', { no_results = true, type = { 'func', 'file' } } },
|
||||||
|
{ nil, '', { no_results = true, type = { 'file' } } },
|
||||||
|
|
||||||
|
{ nil, '/// $1', { type = { 'func' } } },
|
||||||
|
{ 'tparam', '/// \\tparam %s $1' },
|
||||||
|
{ 'parameters', '/// \\param %s $1' },
|
||||||
|
{ 'return_statement', '/// \\return $1' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'<leader>n',
|
||||||
|
function() require('neogen').generate({}) end,
|
||||||
|
desc = 'Add comment',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cmd = 'Neogen',
|
||||||
|
}
|
24
lua/plugins/neogit.lua
Normal file
24
lua/plugins/neogit.lua
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
return {
|
||||||
|
branch = 'master',
|
||||||
|
'TimUntersberger/neogit',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
'sindrets/diffview.nvim',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local neogit = require('neogit')
|
||||||
|
neogit.setup({
|
||||||
|
integrations = {
|
||||||
|
diffview = true,
|
||||||
|
},
|
||||||
|
graph_style = 'unicode',
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'<space>t',
|
||||||
|
function() require('neogit').open() end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cmd = { 'Neogit ' },
|
||||||
|
}
|
35
lua/plugins/neotest.lua
Normal file
35
lua/plugins/neotest.lua
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
return {
|
||||||
|
'nvim-neotest/neotest',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
'antoinemadec/FixCursorHold.nvim',
|
||||||
|
'nvim-neotest/neotest-python',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local pythonVenv = require('utils.python_venv')
|
||||||
|
require('neotest').setup({
|
||||||
|
adapters = {
|
||||||
|
require('neotest-python')({
|
||||||
|
dap = {
|
||||||
|
justMyCode = false,
|
||||||
|
},
|
||||||
|
runner = 'pytest',
|
||||||
|
python = pythonVenv.getPythonEnv,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'<F3>',
|
||||||
|
function() require('neotest').run.run() end,
|
||||||
|
desc = 'Run nearest test',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<S-F3>',
|
||||||
|
function() require('neotest').run.run({ strategy = 'dap' }) end,
|
||||||
|
desc = 'Run nearest test',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
9
lua/plugins/nvim-highlight-colors.lua
Normal file
9
lua/plugins/nvim-highlight-colors.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
'brenoprata10/nvim-highlight-colors',
|
||||||
|
config = true,
|
||||||
|
opts = {
|
||||||
|
render = 'background', -- or 'foreground' or 'virtual',
|
||||||
|
enable_named_colors = true,
|
||||||
|
},
|
||||||
|
cmd = { 'HighlightColors' },
|
||||||
|
}
|
22
lua/plugins/nvim-lint.lua
Normal file
22
lua/plugins/nvim-lint.lua
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
return {
|
||||||
|
'mfussenegger/nvim-lint',
|
||||||
|
config = function()
|
||||||
|
require('lint').linters_by_ft = {
|
||||||
|
cpp = { 'clangtidy' },
|
||||||
|
}
|
||||||
|
vim.api.nvim_create_autocmd({ 'BufWritePost' }, {
|
||||||
|
callback = function()
|
||||||
|
-- try_lint without arguments runs the linters defined in `linters_by_ft`
|
||||||
|
-- for the current filetype
|
||||||
|
require('lint').try_lint()
|
||||||
|
|
||||||
|
-- You can call `try_lint` with a linter name or a list of names to always
|
||||||
|
-- run specific linters, independent of the `linters_by_ft` configuration
|
||||||
|
-- require('lint').try_lint('cspell')
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
ft = {
|
||||||
|
'cpp',
|
||||||
|
},
|
||||||
|
}
|
17
lua/plugins/nvim-rooter.lua
Normal file
17
lua/plugins/nvim-rooter.lua
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
return {
|
||||||
|
'notjedi/nvim-rooter.lua',
|
||||||
|
opts = {
|
||||||
|
rooter_patterns = {
|
||||||
|
'.git',
|
||||||
|
'_darcs',
|
||||||
|
'.hg',
|
||||||
|
'.bzr',
|
||||||
|
'.svn',
|
||||||
|
'Makefile',
|
||||||
|
'package.json',
|
||||||
|
'build_nvim',
|
||||||
|
'real_path.txt',
|
||||||
|
'conaninfo.txt',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
36
lua/plugins/oil.lua
Normal file
36
lua/plugins/oil.lua
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
return {
|
||||||
|
'stevearc/oil.nvim',
|
||||||
|
opts = {
|
||||||
|
delete_to_trash = true,
|
||||||
|
default_file_explorer = true,
|
||||||
|
skip_confirm_for_simple_edits = true,
|
||||||
|
view_options = {
|
||||||
|
-- Show files and directories that start with "."
|
||||||
|
show_hidden = true,
|
||||||
|
},
|
||||||
|
keymaps = {
|
||||||
|
['g?'] = 'actions.show_help',
|
||||||
|
['<CR>'] = 'actions.select',
|
||||||
|
['<C-s>'] = 'actions.select_vsplit',
|
||||||
|
['<C-h>'] = 'actions.select_split',
|
||||||
|
['<C-t>'] = 'actions.select_tab',
|
||||||
|
['<C-p>'] = 'actions.preview',
|
||||||
|
['<C-c>'] = 'actions.close',
|
||||||
|
['<C-l>'] = 'actions.refresh',
|
||||||
|
['<backspace>'] = 'actions.parent',
|
||||||
|
['_'] = 'actions.open_cwd',
|
||||||
|
['`'] = 'actions.cd',
|
||||||
|
['~'] = 'actions.tcd',
|
||||||
|
['g.'] = 'actions.toggle_hidden',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lazy = false,
|
||||||
|
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'-',
|
||||||
|
function() require('oil').open() end,
|
||||||
|
desc = 'Open oil',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
31
lua/plugins/overseer.lua
Normal file
31
lua/plugins/overseer.lua
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
return {
|
||||||
|
'stevearc/overseer.nvim',
|
||||||
|
config = function()
|
||||||
|
require('overseer').setup({
|
||||||
|
templates = { 'builtin', 'user.cmake.cmake', 'user.clang.clang-tidy' },
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'<f4>',
|
||||||
|
function() require('overseer').run_template() end,
|
||||||
|
mode = { 'n', 'x' },
|
||||||
|
desc = 'Start task (overseer)',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cmd = {
|
||||||
|
'OverseerOpen',
|
||||||
|
'OverseerClose',
|
||||||
|
'OverseerToggle',
|
||||||
|
'OverseerSaveBundle',
|
||||||
|
'OverseerLoadBundle',
|
||||||
|
'OverseerDeleteBundle',
|
||||||
|
'OverseerRunCmd',
|
||||||
|
'OverseerRun',
|
||||||
|
'OverseerInfo',
|
||||||
|
'OverseerBuild',
|
||||||
|
'OverseerQuickAction',
|
||||||
|
'OverseerTaskAction',
|
||||||
|
'OverseerClearCache',
|
||||||
|
},
|
||||||
|
}
|
6
lua/plugins/rainbow-delimiters.lua
Normal file
6
lua/plugins/rainbow-delimiters.lua
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
'HiPhish/rainbow-delimiters.nvim',
|
||||||
|
dependencies = 'nvim-treesitter/nvim-treesitter',
|
||||||
|
event = 'VeryLazy',
|
||||||
|
version = false,
|
||||||
|
}
|
11
lua/plugins/render-markdown.lua
Normal file
11
lua/plugins/render-markdown.lua
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
return {
|
||||||
|
'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
|
||||||
|
---@module 'render-markdown'
|
||||||
|
---@type render.md.UserConfig
|
||||||
|
opts = {
|
||||||
|
completions = { blink = { enabled = true } },
|
||||||
|
ft = { 'markdown', 'codecompanion', 'Avante' },
|
||||||
|
},
|
||||||
|
ft = { 'markdown', 'Avante' },
|
||||||
|
}
|
39
lua/plugins/rustaceanvim.lua
Normal file
39
lua/plugins/rustaceanvim.lua
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
return {
|
||||||
|
'mrcjkb/rustaceanvim',
|
||||||
|
ft = { 'rust' },
|
||||||
|
config = function()
|
||||||
|
vim.g.rustaceanvim = {
|
||||||
|
server = {
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
local options = { noremap = true, silent = false, buffer = bufnr }
|
||||||
|
vim.keymap.set('n', '<space>y', function() vim.cmd.RustLsp({ 'hover', 'actions' }) end, vim.tbl_extend('error', options, { desc = 'Hover' }))
|
||||||
|
|
||||||
|
local group = vim.api.nvim_create_augroup('lsp_document_highlight', { clear = false })
|
||||||
|
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
||||||
|
callback = function() vim.lsp.buf.document_highlight() end,
|
||||||
|
buffer = bufnr,
|
||||||
|
group = group,
|
||||||
|
desc = 'Document Highlight',
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd('CursorMoved', {
|
||||||
|
callback = function() vim.lsp.buf.clear_references() end,
|
||||||
|
buffer = bufnr,
|
||||||
|
group = group,
|
||||||
|
desc = 'Clear All the References',
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd({ 'LspDetach' }, {
|
||||||
|
group = group,
|
||||||
|
buffer = bufnr,
|
||||||
|
callback = function()
|
||||||
|
vim.lsp.buf.clear_references()
|
||||||
|
vim.api.nvim_clear_autocmds({
|
||||||
|
group = group,
|
||||||
|
buffer = bufnr,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
132
lua/plugins/snacks.lua
Normal file
132
lua/plugins/snacks.lua
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
return {
|
||||||
|
'folke/snacks.nvim',
|
||||||
|
priority = 1000,
|
||||||
|
version = false,
|
||||||
|
lazy = false,
|
||||||
|
---@type snacks.Config
|
||||||
|
opts = {
|
||||||
|
-- your configuration comes here
|
||||||
|
-- or leave it empty to use the default settings
|
||||||
|
-- refer to the configuration section below
|
||||||
|
bigfile = { enabled = true },
|
||||||
|
notifier = { enabled = false },
|
||||||
|
quickfile = { enabled = true },
|
||||||
|
statuscolumn = { enabled = true },
|
||||||
|
words = {
|
||||||
|
enabled = true,
|
||||||
|
modes = { 'n', 'c' },
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
indent = {
|
||||||
|
only_scope = false,
|
||||||
|
only_current = false,
|
||||||
|
},
|
||||||
|
enabled = true,
|
||||||
|
animate = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
scope = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
chunk = {
|
||||||
|
enabled = true,
|
||||||
|
hl = 'Debug',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dashboard = {
|
||||||
|
sections = {
|
||||||
|
{ section = 'header' },
|
||||||
|
{ icon = ' ', title = 'Keymaps', section = 'keys', indent = 2, padding = 1 },
|
||||||
|
{ icon = ' ', title = 'Recent Files', section = 'recent_files', indent = 2, padding = 1 },
|
||||||
|
{ icon = ' ', title = 'Projects', section = 'projects', indent = 2, padding = 1 },
|
||||||
|
{ section = 'startup' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
picker = {
|
||||||
|
matcher = {
|
||||||
|
frecency = true,
|
||||||
|
cwd_bonus = true,
|
||||||
|
filename_bonus = true,
|
||||||
|
history_bonus = true,
|
||||||
|
},
|
||||||
|
win = {
|
||||||
|
input = {
|
||||||
|
keys = {
|
||||||
|
['<c-t>'] = { 'edit_tab', mode = { 'n', 'i' } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formatters = {
|
||||||
|
file = {
|
||||||
|
truncate = 100,
|
||||||
|
filename_first = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{ '<space>g', function() Snacks.lazygit() end, desc = 'Lazygit' },
|
||||||
|
{ '<space>gf', function() Snacks.lazygit.log_file() end, desc = 'Lazygit Current File History' },
|
||||||
|
{ '<space>gl', function() Snacks.lazygit.log() end, desc = 'Lazygit Log (cwd)' },
|
||||||
|
{ 'm', function() Snacks.words.jump(vim.v.count1) end, desc = 'Next Reference', mode = { 'n' } },
|
||||||
|
{ '<S-m>', function() Snacks.words.jump(-vim.v.count1) end, desc = 'Prev Reference', mode = { 'n' } },
|
||||||
|
-- Top Pickers & Explorer
|
||||||
|
{ '<leader><space>', function() Snacks.picker.smart() end, desc = 'Smart Find Files' },
|
||||||
|
{ '<leader>b', function() Snacks.picker.buffers() end, desc = 'Buffers' },
|
||||||
|
{ '<leader>l', function() Snacks.picker.grep() end, desc = 'Grep' },
|
||||||
|
{ '<leader>:', function() Snacks.picker.command_history() end, desc = 'Command History' },
|
||||||
|
{ '<leader>n', function() Snacks.picker.notifications() end, desc = 'Notification History' },
|
||||||
|
{ '<leader>e', function() Snacks.explorer() end, desc = 'File Explorer' },
|
||||||
|
-- find
|
||||||
|
-- { "<leader>fb", function() Snacks.picker.buffers() end, desc = "Buffers" },
|
||||||
|
-- { "<leader>f", function() Snacks.picker.files({ cwd = vim.fn.stdpath("config") }) end, desc = "Find Config File" },
|
||||||
|
{ '<leader>f', function() Snacks.picker.files() end, desc = 'Find Files' },
|
||||||
|
{ '<leader>g', function() Snacks.picker.git_files() end, desc = 'Find Git Files' },
|
||||||
|
{ '<space>p', function() Snacks.picker.projects() end, desc = 'Projects' },
|
||||||
|
{ '<leader>o', function() Snacks.picker.recent() end, desc = 'Recent' },
|
||||||
|
{ '<leader>i', function() Snacks.picker.recent({ filter = { cwd = true } }) end, desc = 'Recent in cwd' },
|
||||||
|
-- git
|
||||||
|
{ '<leader>nb', function() Snacks.picker.git_branches() end, desc = 'Git Branches' },
|
||||||
|
{ '<leader>nl', function() Snacks.picker.git_log() end, desc = 'Git Log' },
|
||||||
|
{ '<leader>nL', function() Snacks.picker.git_log_line() end, desc = 'Git Log Line' },
|
||||||
|
{ '<leader>ns', function() Snacks.picker.git_status() end, desc = 'Git Status' },
|
||||||
|
{ '<leader>nS', function() Snacks.picker.git_stash() end, desc = 'Git Stash' },
|
||||||
|
{ '<leader>nd', function() Snacks.picker.git_diff() end, desc = 'Git Diff (Hunks)' },
|
||||||
|
{ '<leader>nf', function() Snacks.picker.git_log_file() end, desc = 'Git Log File' },
|
||||||
|
-- Grep
|
||||||
|
{ '<leader>sb', function() Snacks.picker.lines() end, desc = 'Buffer Lines' },
|
||||||
|
{ '<leader>sB', function() Snacks.picker.grep_buffers() end, desc = 'Grep Open Buffers' },
|
||||||
|
-- { "<leader>sg", function() Snacks.picker.grep() end, desc = "Grep" },
|
||||||
|
{ '<leader>d', function() Snacks.picker.grep_word() end, desc = 'Visual selection or word', mode = { 'n', 'x' } },
|
||||||
|
-- search
|
||||||
|
-- { '<leader>s"', function() Snacks.picker.registers() end, desc = "Registers" },
|
||||||
|
-- { '<leader>s/', function() Snacks.picker.search_history() end, desc = "Search History" },
|
||||||
|
-- { "<leader>sa", function() Snacks.picker.autocmds() end, desc = "Autocmds" },
|
||||||
|
-- { "<leader>sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" },
|
||||||
|
-- { "<leader>sc", function() Snacks.picker.command_history() end, desc = "Command History" },
|
||||||
|
-- { "<leader>sC", function() Snacks.picker.commands() end, desc = "Commands" },
|
||||||
|
{ '<leader>v', function() Snacks.picker.diagnostics() end, desc = 'Diagnostics' },
|
||||||
|
{ '<space>V', function() Snacks.picker.diagnostics_buffer() end, desc = 'Buffer Diagnostics' },
|
||||||
|
{ '<leader>sh', function() Snacks.picker.help() end, desc = 'Help Pages' },
|
||||||
|
{ '<leader>sH', function() Snacks.picker.highlights() end, desc = 'Highlights' },
|
||||||
|
{ '<leader>si', function() Snacks.picker.icons() end, desc = 'Icons' },
|
||||||
|
{ '<leader>j', function() Snacks.picker.jumps() end, desc = 'Jumps' },
|
||||||
|
{ '<leader>sk', function() Snacks.picker.keymaps() end, desc = 'Keymaps' },
|
||||||
|
{ '<leader>sl', function() Snacks.picker.loclist() end, desc = 'Location List' },
|
||||||
|
{ '<leader>sm', function() Snacks.picker.marks() end, desc = 'Marks' },
|
||||||
|
{ '<leader>sM', function() Snacks.picker.man() end, desc = 'Man Pages' },
|
||||||
|
{ '<leader>sp', function() Snacks.picker.lazy() end, desc = 'Search for Plugin Spec' },
|
||||||
|
{ '<leader>sq', function() Snacks.picker.qflist() end, desc = 'Quickfix List' },
|
||||||
|
{ '<leader>sR', function() Snacks.picker.resume() end, desc = 'Resume' },
|
||||||
|
{ '<leader>su', function() Snacks.picker.undo() end, desc = 'Undo History' },
|
||||||
|
-- { "<leader>uC", function() Snacks.picker.colorschemes() end, desc = "Colorschemes" },
|
||||||
|
-- LSP
|
||||||
|
{ '<space>d', function() Snacks.picker.lsp_definitions() end, desc = 'Goto Definition' },
|
||||||
|
{ '<space>D', function() Snacks.picker.lsp_declarations() end, desc = 'Goto Declaration' },
|
||||||
|
{ '<space>r', function() Snacks.picker.lsp_references() end, nowait = true, desc = 'References' },
|
||||||
|
{ '<space>I', function() Snacks.picker.lsp_implementations() end, desc = 'Goto Implementation' },
|
||||||
|
{ '<space>e', function() Snacks.picker.lsp_type_definitions() end, desc = 'Goto T[y]pe Definition' },
|
||||||
|
{ '<A-m>', function() Snacks.picker.lsp_symbols() end, desc = 'LSP Symbols' },
|
||||||
|
{ '<leader>sS', function() Snacks.picker.lsp_workspace_symbols() end, desc = 'LSP Workspace Symbols' },
|
||||||
|
},
|
||||||
|
}
|
9
lua/plugins/todo-comments.lua
Normal file
9
lua/plugins/todo-comments.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
'folke/todo-comments.nvim',
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||||
|
opts = {
|
||||||
|
-- your configuration comes here
|
||||||
|
-- or leave it empty to use the default settings
|
||||||
|
-- refer to the configuration section below
|
||||||
|
},
|
||||||
|
}
|
42
lua/plugins/toggleterm.lua
Normal file
42
lua/plugins/toggleterm.lua
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
return {
|
||||||
|
'akinsho/toggleterm.nvim',
|
||||||
|
config = function()
|
||||||
|
function _G.set_terminal_keymaps(term)
|
||||||
|
local opts = { noremap = true }
|
||||||
|
if term.cmd ~= 'lazygit' then
|
||||||
|
vim.api.nvim_buf_set_keymap(term.bufnr, 't', '<esc>', [[<C-\><C-n>]], opts)
|
||||||
|
end
|
||||||
|
vim.api.nvim_buf_set_keymap(term.bufnr, 't', 'jk', [[<C-\><C-n>]], opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(term.bufnr, 't', '<C-h>', [[<C-\><C-n><C-W>h]], opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(term.bufnr, 't', '<C-j>', [[<C-\><C-n><C-W>j]], opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(term.bufnr, 't', '<C-k>', [[<C-\><C-n><C-W>k]], opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(term.bufnr, 't', '<C-l>', [[<C-\><C-n><C-W>l]], opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
require('toggleterm').setup({
|
||||||
|
on_open = set_terminal_keymaps,
|
||||||
|
})
|
||||||
|
|
||||||
|
local Terminal = require('toggleterm.terminal').Terminal
|
||||||
|
|
||||||
|
function _lazygit_toggle()
|
||||||
|
local lazygit = Terminal:new({
|
||||||
|
cmd = 'lazygit',
|
||||||
|
direction = 'float',
|
||||||
|
cwd = function() return vim.fn.getcwd() end,
|
||||||
|
float_opts = {
|
||||||
|
border = 'double',
|
||||||
|
},
|
||||||
|
-- function to run on opening the terminal
|
||||||
|
on_open = function(term)
|
||||||
|
vim.cmd('startinsert!')
|
||||||
|
vim.api.nvim_buf_set_keymap(term.bufnr, 'n', 'q', '<cmd>close<CR>', { noremap = true, silent = true })
|
||||||
|
end,
|
||||||
|
-- function to run on closing the terminal
|
||||||
|
on_close = function(term) vim.cmd('startinsert!') end,
|
||||||
|
})
|
||||||
|
lazygit:open()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
cmd = 'ToggleTerm',
|
||||||
|
}
|
31
lua/plugins/treesitter.lua
Normal file
31
lua/plugins/treesitter.lua
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
return {
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
version = false,
|
||||||
|
build = ':TSUpdate',
|
||||||
|
config = function()
|
||||||
|
require('nvim-treesitter.install').compilers = { 'clang' }
|
||||||
|
require('nvim-treesitter.configs').setup({
|
||||||
|
ensure_installed = '',
|
||||||
|
modules = {},
|
||||||
|
sync_install = true,
|
||||||
|
auto_install = true,
|
||||||
|
ignore_install = {},
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
additional_vim_regex_highlighting = { 'markdown' },
|
||||||
|
},
|
||||||
|
rainbow = {
|
||||||
|
enable = true,
|
||||||
|
extended_mode = true, -- Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean
|
||||||
|
max_file_lines = nil, -- Do not enable for files with more than n lines, int
|
||||||
|
-- colors = {}, -- table of hex strings
|
||||||
|
-- termcolors = {} -- table of colour name strings
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
enable = false, -- maybe buggy
|
||||||
|
},
|
||||||
|
})
|
||||||
|
vim.treesitter.language.register('groovy', 'java')
|
||||||
|
require('nvim-treesitter.install').prefer_git = false
|
||||||
|
end,
|
||||||
|
}
|
13
lua/plugins/which-key.lua
Normal file
13
lua/plugins/which-key.lua
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
return {
|
||||||
|
'folke/which-key.nvim',
|
||||||
|
version = '*',
|
||||||
|
opts = {
|
||||||
|
plugins = {
|
||||||
|
marks = false,
|
||||||
|
registers = false,
|
||||||
|
presets = {
|
||||||
|
operators = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
25
lua/plugins/yanky.lua
Normal file
25
lua/plugins/yanky.lua
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
return {
|
||||||
|
'gbprod/yanky.nvim',
|
||||||
|
config = function()
|
||||||
|
require('yanky').setup({
|
||||||
|
ring = {
|
||||||
|
history_length = 100,
|
||||||
|
storage = 'shada',
|
||||||
|
sync_with_numbered_registers = true,
|
||||||
|
cancel_event = 'update',
|
||||||
|
ignore_registers = { '_' },
|
||||||
|
update_register_on_cycle = false,
|
||||||
|
},
|
||||||
|
system_clipboard = {
|
||||||
|
sync_with_ring = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
vim.keymap.set({ 'n', 'x' }, 'p', '<Plug>(YankyPutAfter)')
|
||||||
|
vim.keymap.set({ 'n', 'x' }, 'P', '<Plug>(YankyPutBefore)')
|
||||||
|
vim.keymap.set({ 'n', 'x' }, 'gp', '<Plug>(YankyGPutAfter)')
|
||||||
|
vim.keymap.set({ 'n', 'x' }, 'gP', '<Plug>(YankyGPutBefore)')
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<c-p>', '<Plug>(YankyPreviousEntry)')
|
||||||
|
vim.keymap.set('n', '<c-n>', '<Plug>(YankyNextEntry)')
|
||||||
|
end,
|
||||||
|
}
|
63
lua/themes/astrodark.lua
Normal file
63
lua/themes/astrodark.lua
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
return {
|
||||||
|
'AstroNvim/astrotheme',
|
||||||
|
lazy = true,
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
local C = require('astrotheme.palettes.astrodark')
|
||||||
|
require('astrotheme').setup({
|
||||||
|
palette = 'astrodark', -- String of the default palette to use when calling `:colorscheme astrotheme`
|
||||||
|
|
||||||
|
termguicolors = true, -- Bool value, toggles if termguicolors are set by AstroTheme.
|
||||||
|
|
||||||
|
terminal_color = true, -- Bool value, toggles if terminal_colors are set by AstroTheme.
|
||||||
|
|
||||||
|
plugin_default = 'auto', -- Sets how all plugins will be loaded
|
||||||
|
-- "auto": Uses lazy / packer enabled plugins to load highlights.
|
||||||
|
-- true: Enables all plugins highlights.
|
||||||
|
-- false: Disables all plugins.
|
||||||
|
|
||||||
|
plugins = { -- Allows for individual plugin overides using plugin name and value from above.
|
||||||
|
-- ['lualine'] = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
palettes = {
|
||||||
|
global = {},
|
||||||
|
astrodark = {},
|
||||||
|
},
|
||||||
|
highlights = {
|
||||||
|
global = {
|
||||||
|
modify_hl_groups = function(hl, c) end,
|
||||||
|
},
|
||||||
|
astrodark = {
|
||||||
|
modify_hl_groups = function(hl, c) -- modify_hl_groups function allows you to modify hl groups,
|
||||||
|
hl.Type = { fg = c.Yellow }
|
||||||
|
hl.Comment = { italic = true }
|
||||||
|
end,
|
||||||
|
['@lsp.mod.readonly'] = { bold = true },
|
||||||
|
['@lsp.type.namespace.cpp'] = { fg = C.rb },
|
||||||
|
['@lsp.type.variable'] = { fg = C.light_purple },
|
||||||
|
-- ['@lsp.type.variable'] = { link = '@variable' },
|
||||||
|
['@variable'] = { fg = C.light_purple, link = '' },
|
||||||
|
-- ['Function'] = { fg = C.light_cyan },
|
||||||
|
['@lsp.type.enumMember'] = { fg = C.cyan },
|
||||||
|
['Comment'] = { italic = true },
|
||||||
|
['Type'] = { fg = C.dark_orange },
|
||||||
|
['Structure'] = { link = 'Type' },
|
||||||
|
['Constant'] = { fg = 'NONE' },
|
||||||
|
['@parameter'] = { fg = C.toml },
|
||||||
|
['NormalFloat'] = { bg = C.surface0 },
|
||||||
|
['TelescopeBorder'] = { bg = C.surface0 },
|
||||||
|
['TelescopeNormal'] = { bg = C.surface0 },
|
||||||
|
['TelescopePreviewBorder'] = { link = 'TelescopeBorder' },
|
||||||
|
['TelescopeResultsBorder'] = { link = 'TelescopeResultsNormal' },
|
||||||
|
['TelescopePreviewNormal'] = { bg = C.surface0 },
|
||||||
|
['TelescopeTitle'] = { bg = C.surface0 },
|
||||||
|
['TelescopePromptNormal'] = { bg = C.surface0 },
|
||||||
|
['TelescopePromptBorder'] = { link = 'TelescopeBorder' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
vim.cmd('colorscheme astrodark')
|
||||||
|
end,
|
||||||
|
enabled = true,
|
||||||
|
}
|
82
lua/themes/bamboo.lua
Normal file
82
lua/themes/bamboo.lua
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
return {
|
||||||
|
'ribru17/bamboo.nvim',
|
||||||
|
lazy = true,
|
||||||
|
-- priority = 1000,
|
||||||
|
config = function()
|
||||||
|
local colors = require('bamboo.palette')
|
||||||
|
require('bamboo').setup({
|
||||||
|
dim_inactive = false, -- Dim inactive windows/buffers
|
||||||
|
lualine = {
|
||||||
|
transparent = false, -- lualine center bar transparency
|
||||||
|
},
|
||||||
|
code_style = {
|
||||||
|
comments = { italic = false },
|
||||||
|
conditionals = { italic = false },
|
||||||
|
keywords = {},
|
||||||
|
functions = {},
|
||||||
|
namespaces = { italic = false },
|
||||||
|
parameters = { italic = false },
|
||||||
|
strings = {},
|
||||||
|
variables = {},
|
||||||
|
},
|
||||||
|
highlights = {
|
||||||
|
['@lsp.type.comment'] = { link = '@comment', default = true },
|
||||||
|
['@comment'] = { fg = colors.vulgaris.light_grey, default = true },
|
||||||
|
['@lsp.type.parameter'] = { fg = colors.vulgaris.red },
|
||||||
|
['@lsp.mod.readonly'] = { fmt = 'bold', fg = 'NONE' },
|
||||||
|
['@lsp.typemod.parameter.readonly'] = { fmt = 'bold', fg = 'NONE' },
|
||||||
|
['@lsp.typemod.method.defaultLibrary.cpp'] = { fg = 'NONE' },
|
||||||
|
['@function.builtin'] = { fg = 'NONE' },
|
||||||
|
['LspReferenceRead'] = { bg = colors.vulgaris.green, fg = colors.vulgaris.bg1, fmt = 'nocombine' },
|
||||||
|
['LspReferenceWrite'] = { bg = colors.vulgaris.red, fg = colors.vulgaris.bg1, fmt = 'nocombine' },
|
||||||
|
['LspReferenceText'] = { bg = colors.vulgaris.cyan, fg = colors.vulgaris.bg1, fmt = 'nocombine' },
|
||||||
|
-- ['NormalFloat'] = { bg = colors.vulgaris.bg3, fmt = 'nocombine' },
|
||||||
|
-- ['FloatBorder'] = { bg = colors.vulgaris.bg_d, fmt = 'nocombine' },
|
||||||
|
['SnacksPickerList'] = { bg = colors.vulgaris.bg_d, fmt = 'nocombine' },
|
||||||
|
['SnacksPickerListCursorLine'] = { bg = colors.vulgaris.bg3, fmt = 'nocombine' },
|
||||||
|
['SnacksPickerPrompt'] = { bg = colors.vulgaris.bg_d, fmt = 'nocombine' },
|
||||||
|
['SnacksPickerInput'] = { bg = colors.vulgaris.bg_d, fmt = 'nocombine' },
|
||||||
|
['SnacksPickerPreview'] = { bg = colors.vulgaris.bg_d, fmt = 'nocombine' },
|
||||||
|
['SnacksPickerInputBorder'] = { bg = colors.vulgaris.bg_d, fmt = 'nocombine' },
|
||||||
|
['NonText'] = { fg = colors.vulgaris.blue },
|
||||||
|
['BlinkCmpMenu'] = { bg = colors.vulgaris.bg2 },
|
||||||
|
['BlinkCmpDoc'] = { bg = colors.vulgaris.bg2 },
|
||||||
|
['CmpDocumentation'] = { bg = colors.vulgaris.bg2 },
|
||||||
|
['BlinkCmpMenuSelection'] = { bg = colors.vulgaris.grey },
|
||||||
|
['PmenuSel'] = { bg = '#282C34', fg = 'NONE' },
|
||||||
|
['Pmenu'] = { fg = '#C5CDD9', bg = colors.vulgaris.bg3 },
|
||||||
|
['CmpItemAbbrDeprecated'] = { fg = '#7E8294', bg = 'NONE', strikethrough = true },
|
||||||
|
['CmpItemAbbrMatch'] = { fg = '#82AAFF', bg = 'NONE', bold = true },
|
||||||
|
['CmpItemAbbrMatchFuzzy'] = { fg = '#82AAFF', bg = 'NONE', bold = true },
|
||||||
|
['CmpItemMenu'] = { fg = '#C792EA', bg = 'NONE', italic = true },
|
||||||
|
['CmpItemKindField'] = { fg = '#EED8DA', bg = '#B5585F' },
|
||||||
|
['CmpItemKindProperty'] = { fg = '#EED8DA', bg = '#B5585F' },
|
||||||
|
['CmpItemKindEvent'] = { fg = '#EED8DA', bg = '#B5585F' },
|
||||||
|
['CmpItemKindText'] = { fg = '#C3E88D', bg = '#9FBD73' },
|
||||||
|
['CmpItemKindEnum'] = { fg = '#C3E88D', bg = '#9FBD73' },
|
||||||
|
['CmpItemKindKeyword'] = { fg = '#C3E88D', bg = '#9FBD73' },
|
||||||
|
['CmpItemKindConstant'] = { fg = '#FFE082', bg = '#D4BB6C' },
|
||||||
|
['CmpItemKindConstructor'] = { fg = '#FFE082', bg = '#D4BB6C' },
|
||||||
|
['CmpItemKindReference'] = { fg = '#FFE082', bg = '#D4BB6C' },
|
||||||
|
['CmpItemKindFunction'] = { fg = '#EADFF0', bg = '#A377BF' },
|
||||||
|
['CmpItemKindStruct'] = { fg = '#EADFF0', bg = '#A377BF' },
|
||||||
|
['CmpItemKindClass'] = { fg = '#EADFF0', bg = '#A377BF' },
|
||||||
|
['CmpItemKindModule'] = { fg = '#EADFF0', bg = '#A377BF' },
|
||||||
|
['CmpItemKindOperator'] = { fg = '#EADFF0', bg = '#A377BF' },
|
||||||
|
['CmpItemKindVariable'] = { fg = '#C5CDD9', bg = '#7E8294' },
|
||||||
|
['CmpItemKindFile'] = { fg = '#C5CDD9', bg = '#7E8294' },
|
||||||
|
['CmpItemKindUnit'] = { fg = '#F5EBD9', bg = '#D4A959' },
|
||||||
|
['CmpItemKindSnippet'] = { fg = '#F5EBD9', bg = '#D4A959' },
|
||||||
|
['CmpItemKindFolder'] = { fg = '#F5EBD9', bg = '#D4A959' },
|
||||||
|
['CmpItemKindMethod'] = { fg = '#DDE5F5', bg = '#6C8ED4' },
|
||||||
|
['CmpItemKindValue'] = { fg = '#DDE5F5', bg = '#6C8ED4' },
|
||||||
|
['CmpItemKindEnumMember'] = { fg = '#DDE5F5', bg = '#6C8ED4' },
|
||||||
|
['CmpItemKindInterface'] = { fg = '#D8EEEB', bg = '#58B5A8' },
|
||||||
|
['CmpItemKindColor'] = { fg = '#D8EEEB', bg = '#58B5A8' },
|
||||||
|
['CmpItemKindTypeParameter'] = { fg = '#D8EEEB', bg = '#58B5A8' },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require('bamboo').load()
|
||||||
|
end,
|
||||||
|
enabled = false,
|
||||||
|
}
|
15
lua/themes/everforest.lua
Normal file
15
lua/themes/everforest.lua
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
return {
|
||||||
|
'neanias/everforest-nvim',
|
||||||
|
version = false,
|
||||||
|
lazy = true,
|
||||||
|
priority = 1000, -- make sure to load this before all the other start plugins
|
||||||
|
-- Optional; default configuration will be used if setup isn't called.
|
||||||
|
config = function()
|
||||||
|
require('everforest').setup({
|
||||||
|
background = 'hard',
|
||||||
|
-- Your config here
|
||||||
|
})
|
||||||
|
require('everforest').load()
|
||||||
|
end,
|
||||||
|
enabled = true,
|
||||||
|
}
|
42
lua/themes/github-theme.lua
Normal file
42
lua/themes/github-theme.lua
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
return {
|
||||||
|
'projekt0n/github-nvim-theme',
|
||||||
|
lazy = false, -- make sure we load this during startup if it is your main colorscheme
|
||||||
|
priority = 1000, -- make sure to load this before all the other start plugins
|
||||||
|
config = function()
|
||||||
|
require('github-theme').setup({
|
||||||
|
options = {
|
||||||
|
dim_inactive = true,
|
||||||
|
modules = {
|
||||||
|
'cmp',
|
||||||
|
-- 'coc',
|
||||||
|
-- 'coc_explorer',
|
||||||
|
'dapui',
|
||||||
|
-- 'diffchar',
|
||||||
|
-- 'dashboard',
|
||||||
|
'diagnostic',
|
||||||
|
-- 'fidget',
|
||||||
|
-- 'fzf',
|
||||||
|
'gitgutter',
|
||||||
|
'gitsigns',
|
||||||
|
'indent_blankline',
|
||||||
|
'lsp_semantic_tokens',
|
||||||
|
-- 'lsp_trouble',
|
||||||
|
-- 'mini',
|
||||||
|
'native_lsp',
|
||||||
|
'neogit',
|
||||||
|
'neotree',
|
||||||
|
-- 'notify',
|
||||||
|
-- 'nvimtree',
|
||||||
|
'telescope',
|
||||||
|
'treesitter',
|
||||||
|
'treesitter_context',
|
||||||
|
'whichkey',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- vim.cmd('colorscheme github_dark')
|
||||||
|
vim.cmd('colorscheme github_dark_dimmed')
|
||||||
|
end,
|
||||||
|
enabled = false,
|
||||||
|
}
|
7
lua/themes/gruvbox-baby.lua
Normal file
7
lua/themes/gruvbox-baby.lua
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
'luisiacc/gruvbox-baby',
|
||||||
|
lazy = true,
|
||||||
|
priority = 1000, -- make sure to load this before all the other start plugins
|
||||||
|
config = function() vim.cmd('colorscheme gruvbox-baby') end,
|
||||||
|
enabled = true,
|
||||||
|
}
|
37
lua/themes/gruvbox.lua
Normal file
37
lua/themes/gruvbox.lua
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
return {
|
||||||
|
'ellisonleao/gruvbox.nvim',
|
||||||
|
priority = 1000,
|
||||||
|
lazy = true,
|
||||||
|
branch = 'main',
|
||||||
|
config = function()
|
||||||
|
-- local colors = require('gruvbox.palette').colors
|
||||||
|
|
||||||
|
require('gruvbox').setup({
|
||||||
|
undercurl = true,
|
||||||
|
underline = true,
|
||||||
|
bold = false,
|
||||||
|
italic = {
|
||||||
|
strings = false,
|
||||||
|
comments = true,
|
||||||
|
operators = false,
|
||||||
|
folds = true,
|
||||||
|
},
|
||||||
|
strikethrough = true,
|
||||||
|
invert_selection = false,
|
||||||
|
invert_signs = false,
|
||||||
|
invert_tabline = false,
|
||||||
|
invert_intend_guides = false,
|
||||||
|
palette_overrides = {},
|
||||||
|
overrides = {
|
||||||
|
-- ['@lsp.type.parameter'] = { fg = colors.faded_purple },
|
||||||
|
['@lsp.type.function'] = { fg = '#797df2' },
|
||||||
|
['@lsp.type.method'] = { fg = '#797df2' },
|
||||||
|
['@lsp.mod.readonly'] = { bold = true },
|
||||||
|
},
|
||||||
|
dim_inactive = true,
|
||||||
|
transparent_mode = false,
|
||||||
|
})
|
||||||
|
vim.cmd('colorscheme gruvbox')
|
||||||
|
end,
|
||||||
|
enabled = true,
|
||||||
|
}
|
19
lua/themes/gruvbox_flat.lua
Normal file
19
lua/themes/gruvbox_flat.lua
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
return {
|
||||||
|
'eddyekofo94/gruvbox-flat.nvim',
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
local colors = require('gruvbox.colors')
|
||||||
|
vim.g.gruvbox_flat_style = 'dark'
|
||||||
|
vim.g.gruvbox_colors = {
|
||||||
|
bg_search = 'purple',
|
||||||
|
fg_search = 'black',
|
||||||
|
}
|
||||||
|
vim.g.gruvbox_theme = {
|
||||||
|
Pmenu = { bg = 'bg_visual' },
|
||||||
|
NormalFloat = { bg = 'bg_visual' },
|
||||||
|
}
|
||||||
|
vim.g.gruvbox_dark_float = false
|
||||||
|
vim.cmd('colorscheme gruvbox-flat')
|
||||||
|
end,
|
||||||
|
enabled = false,
|
||||||
|
}
|
42
lua/themes/gruvbox_material.lua
Normal file
42
lua/themes/gruvbox_material.lua
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
return {
|
||||||
|
'sainnhe/gruvbox-material',
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
-- local colors = require('gruvbox.colors')
|
||||||
|
-- vim.g.gruvbox_flat_style = "dark"
|
||||||
|
-- vim.g.gruvbox_colors = {
|
||||||
|
-- bg_search = 'purple',
|
||||||
|
-- fg_search = 'black',
|
||||||
|
-- }
|
||||||
|
-- vim.g.gruvbox_theme = {
|
||||||
|
-- Pmenu = { bg = 'bg_visual' },
|
||||||
|
-- NormalFloat = { bg = 'bg_visual' }
|
||||||
|
-- }
|
||||||
|
-- vim.g.gruvbox_dark_float = false
|
||||||
|
vim.g.gruvbox_material_ui_contrast = 'high'
|
||||||
|
vim.g.gruvbox_material_dim_inactive_windows = 1 -- Dim inactive windows. Only works in neovim currently.
|
||||||
|
vim.g.gruvbox_material_disable_terminal_colors = 0
|
||||||
|
local links = {
|
||||||
|
['@lsp.type.namespace'] = '@namespace',
|
||||||
|
['@lsp.type.type'] = '@type',
|
||||||
|
['@lsp.type.class'] = '@type',
|
||||||
|
['@lsp.type.enum'] = '@type',
|
||||||
|
['@lsp.type.interface'] = '@type',
|
||||||
|
['@lsp.type.struct'] = '@structure',
|
||||||
|
['@lsp.type.parameter'] = '@parameter',
|
||||||
|
['@lsp.type.variable'] = '@variable',
|
||||||
|
['@lsp.type.property'] = '@property',
|
||||||
|
['@lsp.type.enumMember'] = '@constant',
|
||||||
|
['@lsp.type.function'] = '@function',
|
||||||
|
['@lsp.type.method'] = '@method',
|
||||||
|
['@lsp.type.macro'] = '@macro',
|
||||||
|
['@lsp.type.decorator'] = '@function',
|
||||||
|
}
|
||||||
|
-- for newgroup, oldgroup in pairs(links) do
|
||||||
|
-- vim.api.nvim_set_hl(0, newgroup, { link = oldgroup, default = true })
|
||||||
|
-- end
|
||||||
|
vim.cmd('colorscheme gruvbox-material')
|
||||||
|
vim.api.nvim_set_hl(0, '@lsp.mod.readonly', { italic = true, fg = 'Purple' })
|
||||||
|
end,
|
||||||
|
enabled = false,
|
||||||
|
}
|
40
lua/themes/kanagawa.lua
Normal file
40
lua/themes/kanagawa.lua
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
return {
|
||||||
|
'rebelot/kanagawa.nvim',
|
||||||
|
lazy = false,
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
require('kanagawa').setup({
|
||||||
|
compile = false, -- enable compiling the colorscheme
|
||||||
|
undercurl = true, -- enable undercurls
|
||||||
|
commentStyle = { italic = true },
|
||||||
|
functionStyle = {},
|
||||||
|
keywordStyle = { italic = true },
|
||||||
|
statementStyle = { bold = true },
|
||||||
|
typeStyle = {},
|
||||||
|
transparent = false, -- do not set background color
|
||||||
|
dimInactive = false, -- dim inactive window `:h hl-NormalNC`
|
||||||
|
terminalColors = true, -- define vim.g.terminal_color_{0,17}
|
||||||
|
colors = {
|
||||||
|
-- add/modify theme and palette colors
|
||||||
|
palette = {},
|
||||||
|
theme = { wave = {}, lotus = {}, dragon = {}, all = {} },
|
||||||
|
},
|
||||||
|
overrides = function(colors) -- add/modify highlights
|
||||||
|
return {
|
||||||
|
['@lsp.mod.readonly'] = { bold = true },
|
||||||
|
['@lsp.mod.static'] = { italic = true },
|
||||||
|
['LspReferenceRead'] = { bg = colors.palette.lotusGreen, fg = colors.palette.dragonBlack0 },
|
||||||
|
['LspReferenceWrite'] = { bg = colors.palette.samuraiRed, fg = colors.palette.dragonBlack0 },
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
theme = 'wave', -- Load "wave" theme when 'background' option is not set
|
||||||
|
background = {
|
||||||
|
-- map the value of 'background' option to a theme
|
||||||
|
dark = 'wave', -- try "dragon" !
|
||||||
|
light = 'lotus',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require('kanagawa').load('wave')
|
||||||
|
end,
|
||||||
|
enabled = true,
|
||||||
|
}
|
77
lua/themes/material.lua
Normal file
77
lua/themes/material.lua
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
return {
|
||||||
|
'marko-cerovac/material.nvim',
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
local colors = require('material.colors')
|
||||||
|
require('material').setup({
|
||||||
|
|
||||||
|
contrast = {
|
||||||
|
terminal = false, -- Enable contrast for the built-in terminal
|
||||||
|
sidebars = false, -- Enable contrast for sidebar-like windows ( for example Nvim-Tree )
|
||||||
|
floating_windows = true, -- Enable contrast for floating windows
|
||||||
|
cursor_line = false, -- Enable darker background for the cursor line
|
||||||
|
non_current_windows = true, -- Enable darker background for non-current windows
|
||||||
|
filetypes = {}, -- Specify which filetypes get the contrasted (darker) background
|
||||||
|
},
|
||||||
|
|
||||||
|
styles = { -- Give comments style such as bold, italic, underline etc.
|
||||||
|
comments = { --[[ italic = true ]]
|
||||||
|
},
|
||||||
|
strings = { --[[ bold = true ]]
|
||||||
|
},
|
||||||
|
keywords = { --[[ underline = true ]]
|
||||||
|
},
|
||||||
|
functions = { --[[ bold = true, undercurl = true ]]
|
||||||
|
},
|
||||||
|
variables = {},
|
||||||
|
operators = {},
|
||||||
|
types = {},
|
||||||
|
},
|
||||||
|
|
||||||
|
plugins = { -- Uncomment the plugins that you use to highlight them
|
||||||
|
-- Available plugins:
|
||||||
|
'dap',
|
||||||
|
-- "dashboard",
|
||||||
|
'gitsigns',
|
||||||
|
-- "hop",
|
||||||
|
'indent-blankline',
|
||||||
|
-- "lspsaga",
|
||||||
|
-- "mini",
|
||||||
|
-- "neogit",
|
||||||
|
-- "neorg",
|
||||||
|
'nvim-cmp',
|
||||||
|
'nvim-navic',
|
||||||
|
-- "nvim-tree",
|
||||||
|
'nvim-web-devicons',
|
||||||
|
-- "sneak",
|
||||||
|
'telescope',
|
||||||
|
-- "trouble",
|
||||||
|
'which-key',
|
||||||
|
},
|
||||||
|
|
||||||
|
disable = {
|
||||||
|
colored_cursor = false, -- Disable the colored cursor
|
||||||
|
borders = false, -- Disable borders between verticaly split windows
|
||||||
|
background = false, -- Prevent the theme from setting the background (NeoVim then uses your terminal background)
|
||||||
|
term_colors = false, -- Prevent the theme from setting terminal colors
|
||||||
|
eob_lines = false, -- Hide the end-of-buffer lines
|
||||||
|
},
|
||||||
|
|
||||||
|
high_visibility = {
|
||||||
|
lighter = false, -- Enable higher contrast text for lighter style
|
||||||
|
darker = true, -- Enable higher contrast text for darker style
|
||||||
|
},
|
||||||
|
|
||||||
|
lualine_style = 'default', -- Lualine style ( can be 'stealth' or 'default' )
|
||||||
|
|
||||||
|
async_loading = true, -- Load parts of the theme asyncronously for faster startup (turned on by default)
|
||||||
|
|
||||||
|
custom_colors = nil, -- If you want to everride the default colors, set this to a function
|
||||||
|
|
||||||
|
custom_highlights = {}, -- Overwrite highlights with your own
|
||||||
|
})
|
||||||
|
vim.g.material_style = 'darker'
|
||||||
|
vim.cmd('colorscheme material')
|
||||||
|
end,
|
||||||
|
enabled = false,
|
||||||
|
}
|
64
lua/themes/monokai-pro.lua
Normal file
64
lua/themes/monokai-pro.lua
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
return {
|
||||||
|
'loctvl842/monokai-pro.nvim',
|
||||||
|
lazy = true,
|
||||||
|
config = function()
|
||||||
|
require('monokai-pro').setup({
|
||||||
|
-- filter = 'spectrum'
|
||||||
|
override = function(c)
|
||||||
|
return {
|
||||||
|
['@lsp.type.class'] = { link = 'Structure' },
|
||||||
|
['@lsp.type.decorator'] = { link = 'Function' },
|
||||||
|
['@lsp.type.enum'] = { link = 'Structure' },
|
||||||
|
['@lsp.type.enumNumber'] = { link = 'Constant' },
|
||||||
|
['@lsp.type.function'] = { link = 'Function' },
|
||||||
|
['@lsp.type.interface'] = { link = 'Structure' },
|
||||||
|
['@lsp.type.macro'] = { link = 'Macro' },
|
||||||
|
-- ['@lsp.type.method'] = { link = 'Function' },
|
||||||
|
['@lsp.type.namespace'] = { link = 'Identifier' },
|
||||||
|
['@lsp.type.parameter'] = { link = '@lsp.typemod.parameter.declaration' },
|
||||||
|
['@lsp.type.property'] = { link = 'Identifier' },
|
||||||
|
['@lsp.type.struct'] = { link = 'Structure' },
|
||||||
|
['@lsp.type.type'] = { link = 'Type' },
|
||||||
|
['@lsp.type.typeParameter'] = { link = 'TypeDef' },
|
||||||
|
['@lsp.type.variable'] = { link = 'Identifier' },
|
||||||
|
|
||||||
|
-- mod
|
||||||
|
-- ["@lsp.mod.declaration"] = { fg = c.base.cyan },
|
||||||
|
-- ["@lsp.mod.definition"] = { fg = c.base.cyan },
|
||||||
|
-- ["@lsp.mod.readonly"] = { fg = c.base.magenta },
|
||||||
|
-- ["@lsp.mod.static"] = {},
|
||||||
|
['@lsp.mod.deprecated'] = { strikethrough = true },
|
||||||
|
-- ["@lsp.mod.abstract"] = {},
|
||||||
|
-- ["@lsp.mod.async"] = {},
|
||||||
|
-- ["@lsp.mod.modification"] = {},
|
||||||
|
-- ["@lsp.mod.documentation"] = {},
|
||||||
|
-- ["@lsp.mod.defaultLibrary"] = {},
|
||||||
|
|
||||||
|
['@lsp.typemod.class.defaultLibrary'] = { fg = c.base.white },
|
||||||
|
-- ["@lsp.typemod.decorator"] = {},
|
||||||
|
-- ["@lsp.typemod.enum"] = {},
|
||||||
|
-- ["@lsp.typemod.enumNumber"] = {},
|
||||||
|
['@lsp.typemod.function.declaration'] = { fg = c.base.green },
|
||||||
|
['@lsp.typemod.function.defaultLibrary'] = { fg = c.base.blue },
|
||||||
|
-- ["@lsp.typemod.interface"] = {},
|
||||||
|
-- ["@lsp.typemod.macro"] = {},
|
||||||
|
-- ["@lsp.typemod.method"] = {},
|
||||||
|
['@lsp.typemod.namespace'] = { fg = c.base.red },
|
||||||
|
-- ['@lsp.typemod.parameter.declaration'] = { fg = c.base.blue, italic = styles.parameter.italic },
|
||||||
|
['@lsp.typemod.property'] = { fg = '#9699f2' },
|
||||||
|
-- ["@lsp.typemod.struct"] = {},
|
||||||
|
-- ["@lsp.typemod.type"] = {},
|
||||||
|
-- ["@lsp.typemod.typeParameter"] = {},
|
||||||
|
['@lsp.typemod.variable.readonly'] = { fg = c.base.magenta },
|
||||||
|
|
||||||
|
-- ['@lsp.type.parameter'] = { fg = '#797df2' },
|
||||||
|
-- ['@lsp.type.function'] = { fg = '#797df2' },
|
||||||
|
-- ['@lsp.type.method'] = { fg = '#797df2' },
|
||||||
|
['@lsp.mod.readonly'] = { bold = true },
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
vim.cmd('colorscheme monokai-pro')
|
||||||
|
end,
|
||||||
|
enabled = true,
|
||||||
|
}
|
@ -4,13 +4,9 @@ local scopes = {o = vim.o, b = vim.bo, w = vim.wo}
|
|||||||
|
|
||||||
function utils.opt(scope, key, value)
|
function utils.opt(scope, key, value)
|
||||||
scopes[scope][key] = value
|
scopes[scope][key] = value
|
||||||
if scope ~= 'o' then scopes['o'][key] = value end
|
if scope ~= 'o' then
|
||||||
|
scopes['o'][key] = value
|
||||||
end
|
end
|
||||||
|
|
||||||
function utils.map(mode, lhs, rhs, opts)
|
|
||||||
local options = {noremap = true}
|
|
||||||
if opts then options = vim.tbl_extend('force', options, opts) end
|
|
||||||
vim.api.nvim_set_keymap(mode, lhs, rhs, options)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return utils
|
return utils
|
53
lua/utils/json_workaround.lua
Normal file
53
lua/utils/json_workaround.lua
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
local M = {}
|
||||||
|
local function str_splice(string, start_idx, end_idx)
|
||||||
|
local new_content = string:sub(1, start_idx - 1)
|
||||||
|
if end_idx then
|
||||||
|
return new_content .. string:sub(end_idx + 1)
|
||||||
|
else
|
||||||
|
return new_content
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function str_rfind(string, idx, needle)
|
||||||
|
for i = idx, 1, -1 do
|
||||||
|
if string:sub(i, i - 1 + needle:len()) == needle then
|
||||||
|
return i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function get_to_line_end(string, idx)
|
||||||
|
local newline = string:find('\n', idx, true)
|
||||||
|
local to_end = newline and string:sub(idx, newline - 1) or string:sub(idx)
|
||||||
|
return to_end, newline
|
||||||
|
end
|
||||||
|
|
||||||
|
M.decode_json = function(content)
|
||||||
|
local ok, data = pcall(vim.json.decode, content, { luanil = { object = true } })
|
||||||
|
while not ok do
|
||||||
|
local char = data:match('invalid token at character (%d+)$')
|
||||||
|
if char then
|
||||||
|
local to_end, newline = get_to_line_end(content, char)
|
||||||
|
if to_end:match('^//') then
|
||||||
|
content = str_splice(content, char, newline)
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
char = data:match('Expected object key string but found [^%s]+ at character (%d+)$')
|
||||||
|
char = char or data:match('Expected value but found T_ARR_END at character (%d+)')
|
||||||
|
if char then
|
||||||
|
local comma_idx = str_rfind(content, char, ',')
|
||||||
|
if comma_idx then
|
||||||
|
content = str_splice(content, comma_idx, comma_idx)
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
error(data)
|
||||||
|
::continue::
|
||||||
|
ok, data = pcall(vim.json.decode, content, { luanil = { object = true } })
|
||||||
|
end
|
||||||
|
return data
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
122
lua/utils/python_venv.lua
Normal file
122
lua/utils/python_venv.lua
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
local M = {}
|
||||||
|
function M.getVenvSuffix()
|
||||||
|
if vim.loop.os_uname().sysname == 'Linux' then
|
||||||
|
return 'bin/python'
|
||||||
|
elseif vim.loop.os_uname().sysname == 'Windows_NT' then
|
||||||
|
return 'Scripts/python.exe'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.getVenvFromJson(jsonfile)
|
||||||
|
if not vim.fn.filereadable(jsonfile) then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
local f = io.open(jsonfile, 'r')
|
||||||
|
if not f then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
local data = f:read('*a')
|
||||||
|
f:close()
|
||||||
|
if data then
|
||||||
|
local jdata = vim.json.decode(data)
|
||||||
|
if jdata['venvPath'] ~= nil and jdata['venv'] ~= nil then
|
||||||
|
return jdata['venvPath'] .. '/' .. jdata['venv']
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.getPythonEnv()
|
||||||
|
local venv = os.getenv('VIRTUAL_ENV')
|
||||||
|
if venv ~= nil then
|
||||||
|
return string.format('%s/%s', venv, M.getVenvSuffix())
|
||||||
|
end
|
||||||
|
local conda = os.getenv('CONDA_PREFIX')
|
||||||
|
if conda ~= nil then
|
||||||
|
return string.format('%s/%s', conda, 'python.exe')
|
||||||
|
end
|
||||||
|
|
||||||
|
local cwd = vim.fn.getcwd()
|
||||||
|
|
||||||
|
local jsonVenv = M.getVenvFromJson(cwd .. '/pyrightconfig.json')
|
||||||
|
if jsonVenv ~= nil then
|
||||||
|
return jsonVenv .. '/' .. M.getVenvSuffix()
|
||||||
|
end
|
||||||
|
|
||||||
|
if vim.fn.executable(cwd .. '/venv/' .. M.getVenvSuffix()) == 1 then
|
||||||
|
return cwd .. '/venv/' .. M.getVenvSuffix()
|
||||||
|
elseif vim.fn.executable(cwd .. '/.venv/' .. M.getVenvSuffix()) == 1 then
|
||||||
|
return cwd .. '/.venv/' .. M.getVenvSuffix()
|
||||||
|
else
|
||||||
|
if vim.loop.os_uname().sysname == 'Linux' then
|
||||||
|
return '/usr/bin/python'
|
||||||
|
elseif vim.loop.os_uname().sysname == 'Windows_NT' then
|
||||||
|
return os.getenv('SCOOP') .. '/apps/python/current/python.exe'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.getPythonEnvs()
|
||||||
|
local venvs = {}
|
||||||
|
local venv = os.getenv('VIRTUAL_ENV')
|
||||||
|
if venv ~= nil then
|
||||||
|
table.insert(venvs, {
|
||||||
|
name = 'VIRTUAL_ENV',
|
||||||
|
path = string.format('%s/%s', venv, M.getVenvSuffix()),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
local conda = os.getenv('CONDA_PREFIX')
|
||||||
|
if conda ~= nil then
|
||||||
|
table.insert(venvs, {
|
||||||
|
name = 'CONDA_PREFIX',
|
||||||
|
path = string.format('%s/%s', conda, 'python.exe'),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
local cwd = vim.fn.getcwd()
|
||||||
|
|
||||||
|
local jsonVenv = M.getVenvFromJson(cwd .. '/pyrightconfig.json')
|
||||||
|
if jsonVenv ~= nil then
|
||||||
|
table.insert(venvs, {
|
||||||
|
name = 'pyrightconfig.json',
|
||||||
|
path = jsonVenv .. '/' .. M.getVenvSuffix(),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
local venvDirs = { 'venv', '.venv' }
|
||||||
|
for _, envDir in pairs(venvDirs) do
|
||||||
|
if vim.fn.executable(cwd .. '/' .. envDir .. '/' .. M.getVenvSuffix()) == 1 then
|
||||||
|
table.insert(venvs, {
|
||||||
|
name = envDir,
|
||||||
|
path = cwd .. '/' .. envDir .. '/' .. M.getVenvSuffix(),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if vim.loop.os_uname().sysname == 'Linux' then
|
||||||
|
table.insert(venvs, {
|
||||||
|
name = 'system',
|
||||||
|
path = '/usr/bin/python',
|
||||||
|
})
|
||||||
|
end
|
||||||
|
if vim.loop.os_uname().sysname == 'Windows_NT' then
|
||||||
|
table.insert(venvs, {
|
||||||
|
name = 'system',
|
||||||
|
path = os.getenv('SCOOP') .. '/apps/python/current/python.exe',
|
||||||
|
})
|
||||||
|
end
|
||||||
|
return venvs
|
||||||
|
end
|
||||||
|
|
||||||
|
M.pick_venv = function()
|
||||||
|
vim.ui.select(M.getPythonEnvs(), {
|
||||||
|
prompt = 'Select python venv',
|
||||||
|
format_item = function(item) return string.format('%s (%s)', item.name, item.path) end,
|
||||||
|
}, function(choice)
|
||||||
|
if not choice then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
print(choice.path)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
0
my-snippets/all.json
Normal file
0
my-snippets/all.json
Normal file
12
my-snippets/cpp.json
Normal file
12
my-snippets/cpp.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"test_getter": {
|
||||||
|
"prefix": "test_getter",
|
||||||
|
"body": [
|
||||||
|
"TEST(${1:TestClass}, ${2:TestFunction}",
|
||||||
|
"{",
|
||||||
|
"\tget${CLIPBOARD}()",
|
||||||
|
"};"
|
||||||
|
],
|
||||||
|
"description": "Code snippet for testing the getter"
|
||||||
|
}
|
||||||
|
}
|
19
my-snippets/package.json
Normal file
19
my-snippets/package.json
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "my-snippets",
|
||||||
|
"contributes": {
|
||||||
|
"snippets": [
|
||||||
|
{
|
||||||
|
"language": [
|
||||||
|
"all"
|
||||||
|
],
|
||||||
|
"path": "all.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"language": [
|
||||||
|
"cpp"
|
||||||
|
],
|
||||||
|
"path": "cpp.json"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
14
my_snippets/cpp.json
Normal file
14
my_snippets/cpp.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"TEST_F for g/setter": {
|
||||||
|
"prefix": "TEST_F_getter",
|
||||||
|
"body": [
|
||||||
|
"TEST_F($1, test_${CLIPBOARD/m_(.*)/${1}/}_${2:setter}_${3:getter})",
|
||||||
|
"{",
|
||||||
|
" set${CLIPBOARD/m_(.)(.*)/${1:/upcase}${2}/}($4);",
|
||||||
|
" ${5:type} result = get${CLIPBOARD/m_(.)(.*)/${1:/upcase}${2}/}();",
|
||||||
|
" EXPECT_EQ($4, result);$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"description": "Generate TEST_F body for getter and setter functions"
|
||||||
|
}
|
||||||
|
}
|
14
my_snippets/package.json
Normal file
14
my_snippets/package.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "my_snippets",
|
||||||
|
"engines": {
|
||||||
|
"vscode": "^1.11.0"
|
||||||
|
},
|
||||||
|
"contributes": {
|
||||||
|
"snippets": [
|
||||||
|
{
|
||||||
|
"language": "cpp",
|
||||||
|
"path": "./cpp.json"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
19
pyproject.toml
Normal file
19
pyproject.toml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# pyproject.toml
|
||||||
|
[tool.pytest.ini_options]
|
||||||
|
minversion = "6.0"
|
||||||
|
addopts = "-ra -q"
|
||||||
|
testpaths = [
|
||||||
|
"tests",
|
||||||
|
]
|
||||||
|
[tool.pyright]
|
||||||
|
venv = "venv"
|
||||||
|
venvPath = './'
|
||||||
|
reportOptionalMemberAccess = 'warning'
|
||||||
|
reportGeneralTypeIssues = 'warning'
|
||||||
|
analyzeUnannotatedFunctions = 'false'
|
||||||
|
executionEnvironments = [
|
||||||
|
{ root = "./" }
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.black]
|
||||||
|
line-length=120
|
4
pyrightconfig.json
Normal file
4
pyrightconfig.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"venvPath": ".",
|
||||||
|
"venv": "venvVis"
|
||||||
|
}
|
9
readme.md
Normal file
9
readme.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# pre-commit
|
||||||
|
|
||||||
|
Install with
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pre-commit install
|
||||||
|
```
|
||||||
|
|
||||||
|
`stylua` has to be installed in the system
|
7
stylua.toml
Normal file
7
stylua.toml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
column_width = 160
|
||||||
|
line_endings = "Unix"
|
||||||
|
indent_type = "Spaces"
|
||||||
|
indent_width = 2
|
||||||
|
quote_style = "AutoPreferSingle"
|
||||||
|
call_parentheses = "Always"
|
||||||
|
collapse_simple_statement = "FunctionOnly"
|
Reference in New Issue
Block a user