Regenerate nvim config
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,51 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
cp -f $(readlink -f ~/.config/nvim/init.lua) ./config.lua
|
INIT_PATH="$(readlink -f ~/.config/nvim/init.lua)"
|
||||||
|
cp -f "$INIT_PATH" ./config.lua
|
||||||
|
echo "Copied $INIT_PATH to ./config.lua"
|
||||||
|
|
||||||
|
chmod +w ./config.lua
|
||||||
|
echo "Fixed permission for ./config.lua"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
rm -rf ./store/*
|
||||||
|
echo "Cleared ./store/"
|
||||||
|
|
||||||
|
STORE_PATHS=$(rg -oN "\"/nix/store/.*?(lazy-plugins|vimplugin-nvim-treesitter-.*?|treesitter-parsers)\"" config.lua | uniq | sd "\"" "")
|
||||||
|
for STORE_PATH in $STORE_PATHS
|
||||||
|
do
|
||||||
|
cp -Lr "$STORE_PATH" ./store/
|
||||||
|
echo "Copied $STORE_PATH to ./store/"
|
||||||
|
done
|
||||||
|
|
||||||
|
chmod -R +w ./store/*
|
||||||
|
echo "Fixed permissions for ./store"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
for IDENTIFIER in "treesitter-parsers" "lazy-plugins" "nvim-treesitter"
|
||||||
|
do
|
||||||
|
CURRENT_PATH=$(eza -1 ./store | grep $IDENTIFIER)
|
||||||
|
mv "./store/$CURRENT_PATH" "./store/$IDENTIFIER"
|
||||||
|
echo "Moved ./store/$CURRENT_PATH to ./store/$IDENTIFIER"
|
||||||
|
done
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
BASE_PATH="/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store"
|
||||||
|
for IDENTIFIER in "treesitter-parsers" "lazy-plugins" "nvim-treesitter"
|
||||||
|
do
|
||||||
|
REPLACE_STRINGS=$(rg -oN "\"/nix/store/.*?$IDENTIFIER.*?\"" ./config.lua | uniq | sd "\"" "")
|
||||||
|
for REPLACE_STRING in $REPLACE_STRINGS
|
||||||
|
do
|
||||||
|
if [[ $REPLACE_STRING =~ .*$IDENTIFIER/.* ]];
|
||||||
|
then
|
||||||
|
# Trailing / means not the entire string can be replaced
|
||||||
|
REPLACE_STRING=$(dirname "$REPLACE_STRING")
|
||||||
|
sd "$REPLACE_STRING" "$BASE_PATH/$IDENTIFIER" ./config.lua
|
||||||
|
echo "Substituted $REPLACE_STRING with $BASE_PATH/$IDENTIFIER"
|
||||||
|
else
|
||||||
|
# No trailing / means the entire string can be replaced
|
||||||
|
sd "$REPLACE_STRING" "$BASE_PATH/$IDENTIFIER" ./config.lua
|
||||||
|
echo "Substituted $REPLACE_STRING with $BASE_PATH/$IDENTIFIER"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|||||||
2
config/neovim/store/lazy-plugins/better-escape.nvim/.github/FUNDING.yml
vendored
Normal file
2
config/neovim/store/lazy-plugins/better-escape.nvim/.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
github: 'max397574'
|
||||||
|
custom: [ 'https://buymeacoffee.com/max397574' ]
|
||||||
1
config/neovim/store/lazy-plugins/better-escape.nvim/.gitignore
vendored
Normal file
1
config/neovim/store/lazy-plugins/better-escape.nvim/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.DS_Store
|
||||||
674
config/neovim/store/lazy-plugins/better-escape.nvim/LICENSE
Normal file
674
config/neovim/store/lazy-plugins/better-escape.nvim/LICENSE
Normal file
@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||||
@ -0,0 +1,175 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
local api = vim.api
|
||||||
|
|
||||||
|
local settings = {
|
||||||
|
timeout = vim.o.timeoutlen,
|
||||||
|
mapping = { "jk", "jj" },
|
||||||
|
clear_empty_lines = false,
|
||||||
|
---@type string|function
|
||||||
|
keys = "<Esc>",
|
||||||
|
}
|
||||||
|
|
||||||
|
local first_chars = {}
|
||||||
|
local second_chars = {}
|
||||||
|
|
||||||
|
---@class State
|
||||||
|
---@field char string
|
||||||
|
---@field modified boolean
|
||||||
|
|
||||||
|
local timer
|
||||||
|
local waiting = false
|
||||||
|
---@type State[]
|
||||||
|
local input_states = {}
|
||||||
|
|
||||||
|
---@param tbl table table to search through
|
||||||
|
---@param element any element to search in tbl
|
||||||
|
---@return table indices
|
||||||
|
--- Search for indices in tbl where element occurs
|
||||||
|
local function get_indices(tbl, element)
|
||||||
|
local indices = {}
|
||||||
|
for idx, value in ipairs(tbl) do
|
||||||
|
if element == value then
|
||||||
|
table.insert(indices, idx)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return indices
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param keys string keys to feed
|
||||||
|
--- Replace keys with termcodes and feed them
|
||||||
|
local function feed(keys, mode)
|
||||||
|
api.nvim_feedkeys(
|
||||||
|
api.nvim_replace_termcodes(keys, true, true, true),
|
||||||
|
mode or "n",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function start_timer()
|
||||||
|
waiting = true
|
||||||
|
|
||||||
|
if timer then
|
||||||
|
timer:stop()
|
||||||
|
end
|
||||||
|
|
||||||
|
timer = vim.defer_fn(function()
|
||||||
|
waiting = false
|
||||||
|
end, settings.timeout)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_keys()
|
||||||
|
-- if keys is string use it, else use it as a function
|
||||||
|
return type(settings.keys) == "string" and settings.keys or settings.keys()
|
||||||
|
end
|
||||||
|
|
||||||
|
local function check_timeout()
|
||||||
|
if waiting then
|
||||||
|
local current_line = api.nvim_get_current_line()
|
||||||
|
if settings.clear_empty_lines and current_line:match("^%s+j$") then
|
||||||
|
vim.schedule(function()
|
||||||
|
api.nvim_set_current_line("")
|
||||||
|
feed(get_keys(), "in")
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
feed("<BS><BS>" .. get_keys(), "in") -- delete the characters from the mapping
|
||||||
|
end
|
||||||
|
|
||||||
|
waiting = false -- more timely
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.check_charaters()
|
||||||
|
local char = vim.v.char
|
||||||
|
table.insert(input_states, { char = char, modified = vim.bo.modified })
|
||||||
|
|
||||||
|
local matched = false
|
||||||
|
if #input_states >= 2 then
|
||||||
|
---@type State
|
||||||
|
local prev_state = input_states[#input_states - 1]
|
||||||
|
local indices = get_indices(second_chars, char)
|
||||||
|
-- if char == second_chars[idx] and prev_char == first_chars[idx] as well
|
||||||
|
-- then matched = true
|
||||||
|
for _, idx in ipairs(indices) do
|
||||||
|
if first_chars[idx] == prev_state.char then
|
||||||
|
matched = check_timeout()
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if matched then
|
||||||
|
input_states = {}
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.bo.modified = prev_state.modified
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- if can't find a match, and the typed char is first in a mapping, start the timeout
|
||||||
|
if not matched and vim.tbl_contains(first_chars, char) then
|
||||||
|
start_timer()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function char_at(str, pos)
|
||||||
|
return vim.fn.nr2char(vim.fn.strgetchar(str, pos))
|
||||||
|
end
|
||||||
|
|
||||||
|
local function validate_settings()
|
||||||
|
assert(type(settings.mapping) == "table", "Mapping must be a table.")
|
||||||
|
|
||||||
|
for _, mapping in ipairs(settings.mapping) do
|
||||||
|
-- replace all multibyte chars to `A` char
|
||||||
|
local length = #vim.fn.substitute(mapping, ".", "A", "g")
|
||||||
|
assert(length == 2, "Mapping must be 2 keys.")
|
||||||
|
end
|
||||||
|
|
||||||
|
if settings.timeout then
|
||||||
|
assert(type(settings.timeout) == "number", "Timeout must be a number.")
|
||||||
|
assert(
|
||||||
|
settings.timeout >= 100,
|
||||||
|
"Timeout must be greater than or equal to 100."
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
assert(
|
||||||
|
vim.tbl_contains({ "string", "function" }, type(settings.keys)),
|
||||||
|
"Keys must be a function or string."
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.setup(update)
|
||||||
|
settings = vim.tbl_deep_extend("force", settings, update or {})
|
||||||
|
-- if mapping is a string (single mapping) make it a table
|
||||||
|
if type(settings.mapping) == "string" then
|
||||||
|
settings.mapping = { settings.mapping }
|
||||||
|
end
|
||||||
|
local ok, msg = pcall(validate_settings)
|
||||||
|
if ok then
|
||||||
|
-- create tables with the first and seconds chars of the mappings
|
||||||
|
for _, shortcut in ipairs(settings.mapping) do
|
||||||
|
vim.cmd("silent! iunmap " .. shortcut)
|
||||||
|
table.insert(first_chars, char_at(shortcut, 0))
|
||||||
|
table.insert(second_chars, char_at(shortcut, 1))
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.cmd([[
|
||||||
|
augroup better_escape
|
||||||
|
autocmd!
|
||||||
|
autocmd InsertCharPre * lua require"better_escape".check_charaters()
|
||||||
|
augroup END
|
||||||
|
]])
|
||||||
|
else
|
||||||
|
vim.notify("Error(better-escape.nvim): " .. msg, vim.log.levels.ERROR)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return setmetatable(M, {
|
||||||
|
__index = function(_, k)
|
||||||
|
if k == "waiting" then
|
||||||
|
return waiting
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
@ -0,0 +1,95 @@
|
|||||||
|
# 🚪better-escape.nvim
|
||||||
|
|
||||||
|
This plugin is the lua version of [better_escape.vim](https://github.com/jdhao/better-escape.vim),
|
||||||
|
with some additional features and optimizations
|
||||||
|
|
||||||
|
A lot of people have mappings like `jk` or `jj` to escape insert mode.
|
||||||
|
The problem with this mappings is that whenever you type a `j`, neovim wait about 100-500ms (depending on your timeoutlen) to see, if you type a `j` or a `k` because these are mapped.
|
||||||
|
Only after that time the `j` will be inserted.
|
||||||
|
Then you always get a delay when typing a `j`.
|
||||||
|
|
||||||
|
This looks like this (see below for a gif):
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## ✨Features
|
||||||
|
|
||||||
|
- Escape without getting delay when typing in insert mode
|
||||||
|
- Customizable mapping and timeout
|
||||||
|
- Use multiple mappings
|
||||||
|
- Really small and fast
|
||||||
|
|
||||||
|
## 📦Installation
|
||||||
|
|
||||||
|
Use your favourite package manager and call the setup function.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
-- lua with packer.nvim
|
||||||
|
use {
|
||||||
|
"max397574/better-escape.nvim",
|
||||||
|
config = function()
|
||||||
|
require("better_escape").setup()
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## ⚙️Customization
|
||||||
|
|
||||||
|
Call the setup function with your options as arguments.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
-- lua, default settings
|
||||||
|
require("better_escape").setup {
|
||||||
|
mapping = {"jk", "jj"}, -- a table with mappings to use
|
||||||
|
timeout = vim.o.timeoutlen, -- the time in which the keys must be hit in ms. Use option timeoutlen by default
|
||||||
|
clear_empty_lines = false, -- clear line after escaping if there is only whitespace
|
||||||
|
keys = "<Esc>", -- keys used for escaping, if it is a function will use the result everytime
|
||||||
|
-- example(recommended)
|
||||||
|
-- keys = function()
|
||||||
|
-- return vim.api.nvim_win_get_cursor(0)[2] > 1 and '<esc>l' or '<esc>'
|
||||||
|
-- end,
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
`require("better_escape").waiting` is a boolean indicating that it's waiting for
|
||||||
|
a mapped sequence to complete.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>statusline example</summary>
|
||||||
|
|
||||||
|
```lua
|
||||||
|
function escape_status()
|
||||||
|
local ok, m = pcall(require, 'better_escape')
|
||||||
|
return ok and m.waiting and '✺' or ""
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## 👀Demo
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 🎓How it works
|
||||||
|
|
||||||
|
With the mappings there are two tables created.
|
||||||
|
One contains all first characters and one all second characters.
|
||||||
|
Whenever you type a character the plugin checks if it's in any of the two tables
|
||||||
|
If it is in the first one, the plugin starts a timer.
|
||||||
|
If it is in the second, the plugin checks whether the character you typed before is in the table with the first characters.
|
||||||
|
|
||||||
|
If this is the case the plugin gets all the indices where the characters are in the tables, then is searches for matches.
|
||||||
|
If there is a match, that means that there is a mapping which has the typed character as second and the previous typed character as first character.
|
||||||
|
The plugin then checks if the time passed since the first character was types is smaller than `timoutlen`.
|
||||||
|
If this is the case the two characters get deleted and `keys` get feed or executed.
|
||||||
|
|
||||||
|
Like this it is possible that the characters really get inserted and therefore you have no delay after typing one of the characters of your mapping.
|
||||||
|
With the `timeoutlen` it's still possible to type the characters of your mappings.
|
||||||
|
|
||||||
|
## ❤️ Support
|
||||||
|
If you like the projects I do and they can help you in your life you can support my work with [github sponsors](https://github.com/sponsors/max397574).
|
||||||
|
Every support motivates me to continue working on my open source projects.
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
column_width = 80
|
||||||
|
indent_type = "Spaces"
|
||||||
|
indent_width = 4
|
||||||
|
quote_style = "AutoPreferDouble"
|
||||||
|
no_call_parentheses = false
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
# EditorConfig helps developers define and maintain consistent
|
||||||
|
# coding styles between different editors and IDEs
|
||||||
|
# EditorConfig is awesome: https://EditorConfig.org
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[*.lua]
|
||||||
|
indent_style = tab
|
||||||
|
|
||||||
|
[*.{diff,md}]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
93
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
93
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
name: Bug report
|
||||||
|
description: Report a problem with Catppuccin
|
||||||
|
labels: [bug]
|
||||||
|
body:
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "Description"
|
||||||
|
description: "A short description of the problem you are reporting."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "Neovim version"
|
||||||
|
description: "Output of `nvim --version` (Catppuccin requires neovim >= 0.8)"
|
||||||
|
render: markdown
|
||||||
|
placeholder: |
|
||||||
|
NVIM v0.9.0
|
||||||
|
Build type: Release
|
||||||
|
LuaJIT 2.1.0-beta3
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: "Terminal and multiplexer"
|
||||||
|
placeholder: "kitty 0.29.2 with tmux 3.3a"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
# FOR TMUX USERS
|
||||||
|
FOLLOW THESE GIST BEFORE OPENING THE ISSUE
|
||||||
|
- [Enable true color support](https://gist.github.com/andersevenrud/015e61af2fd264371032763d4ed965b6) to fix the [abnormal colors](https://github.com/catppuccin/nvim/issues/415)
|
||||||
|
- [Enable italic font support](https://gist.github.com/gyribeiro/4192af1aced7a1b555df06bd3781a722) to fix the [incorrect if, then, else, end highlights](https://github.com/catppuccin/nvim/issues/428)
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: "Catppuccin version / branch / rev"
|
||||||
|
placeholder: "catppuccin v1.4.0"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "Steps to reproduce"
|
||||||
|
description: "Steps to reproduce using the minimal config provided below."
|
||||||
|
placeholder: |
|
||||||
|
1. `nvim -u repro.lua`
|
||||||
|
2. ...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "Expected behavior"
|
||||||
|
description: "A description of the behavior you expected:"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "Actual behavior"
|
||||||
|
description: "Observed behavior (may optionally include logs, images, or videos)."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Repro
|
||||||
|
description: Minimal `init.lua` to reproduce this issue. Save as `repro.lua` and run with `nvim -u repro.lua`
|
||||||
|
value: |
|
||||||
|
-- DO NOT change the paths and don't remove the colorscheme
|
||||||
|
local root = vim.fn.fnamemodify("./.repro", ":p")
|
||||||
|
|
||||||
|
-- set stdpaths to use .repro
|
||||||
|
for _, name in ipairs({ "config", "data", "state", "cache" }) do
|
||||||
|
vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
|
||||||
|
end
|
||||||
|
|
||||||
|
-- bootstrap lazy
|
||||||
|
local lazypath = root .. "/plugins/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", lazypath })
|
||||||
|
end
|
||||||
|
vim.opt.runtimepath:prepend(lazypath)
|
||||||
|
|
||||||
|
-- install plugins
|
||||||
|
local plugins = {
|
||||||
|
"catppuccin/nvim",
|
||||||
|
-- add any other plugins here
|
||||||
|
}
|
||||||
|
require("lazy").setup(plugins, {
|
||||||
|
root = root .. "/plugins",
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.cmd.colorscheme("catppuccin")
|
||||||
|
-- add anything else here
|
||||||
|
render: Lua
|
||||||
5
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
5
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: Question
|
||||||
|
url: https://discord.com/servers/catppuccin-907385605422448742
|
||||||
|
about: Join our discord server for real-time answers and more!
|
||||||
20
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: "Suggest an idea for the project"
|
||||||
|
title: ""
|
||||||
|
labels: enhancement
|
||||||
|
assignees: ""
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is.
|
||||||
|
Ex. I'm always frustrated when [...]. My workflow is like this [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
16
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
16
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
🎉 First off, thanks for taking the time to contribute! 🎉
|
||||||
|
|
||||||
|
Here are some guidelines:
|
||||||
|
- Format code using [stylua](https://github.com/johnnymorganz/stylua).
|
||||||
|
- New plugin integration should be added in alphabetical order:
|
||||||
|
- to the [README](https://github.com/catppuccin/nvim#integrations) (vimdoc is auto-generated).
|
||||||
|
- to [types.lua](https://github.com/catppuccin/nvim/blob/main/lua/catppuccin/types.lua)
|
||||||
|
- Create a topic branch on your fork for your specific PR.
|
||||||
|
- Use [conventionalcommits.org's](https://www.conventionalcommits.org/en/v1.0.0/)
|
||||||
|
rules for explicit and meaningful commit messages.
|
||||||
|
- If it's your first time contributing to a project, then read
|
||||||
|
[About pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)
|
||||||
|
on Github's docs.
|
||||||
|
|
||||||
|
Here are some tips:
|
||||||
|
- Use `vim.g.catppuccin_debug = true` to get live config re-loading
|
||||||
14
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/scripts/update-palette.py
vendored
Normal file
14
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/scripts/update-palette.py
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import json
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
url = "https://github.com/catppuccin/palette/raw/main/palette.json"
|
||||||
|
|
||||||
|
with urllib.request.urlopen(url) as response:
|
||||||
|
flavors = json.loads(response.read().decode())
|
||||||
|
|
||||||
|
for flavor in flavors:
|
||||||
|
with open(f"lua/catppuccin/palettes/{flavor}.lua", "w") as f:
|
||||||
|
f.write("return {\n")
|
||||||
|
for color in flavors[flavor]["colors"]:
|
||||||
|
f.write(f'\t{color} = "{flavors[flavor]["colors"][color]["hex"]}",\n')
|
||||||
|
f.write("}\n")
|
||||||
20
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/formatting.yml
vendored
Normal file
20
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/formatting.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
name: StyLua
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- "*.md"
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stylua:
|
||||||
|
name: StyLua
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: JohnnyMorganz/stylua-action@v2
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
version: latest
|
||||||
|
args: --check --config-path=stylua.toml .
|
||||||
55
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/neovim.yml
vendored
Normal file
55
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/neovim.yml
vendored
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
---
|
||||||
|
name: Neovim
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- "*.md"
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ubuntu:
|
||||||
|
name: Ubuntu
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install Neovim
|
||||||
|
uses: MunifTanjim/setup-neovim-action@v1
|
||||||
|
with:
|
||||||
|
tag: nightly
|
||||||
|
- name: Run neovim
|
||||||
|
run: |
|
||||||
|
nvim --version
|
||||||
|
nvim --headless -u tests/init.lua +q
|
||||||
|
macos:
|
||||||
|
name: Macos
|
||||||
|
runs-on: macos-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install Neovim
|
||||||
|
run: |
|
||||||
|
wget -q https://github.com/neovim/neovim/releases/download/nightly/nvim-macos-x86_64.tar.gz
|
||||||
|
xattr -c ./nvim-macos-x86_64.tar.gz
|
||||||
|
tar xzvf nvim-macos-x86_64.tar.gz &> /dev/null
|
||||||
|
ln -s $(pwd)/nvim-macos-x86_64/bin/nvim /usr/local/bin/nvim
|
||||||
|
- name: Run neovim
|
||||||
|
run: |
|
||||||
|
nvim --version
|
||||||
|
nvim --headless -u tests/init.lua +q
|
||||||
|
windows:
|
||||||
|
name: Windows
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install Neovim
|
||||||
|
run: |
|
||||||
|
C:\msys64\usr\bin\wget.exe -q https://github.com/neovim/neovim/releases/download/nightly/nvim-win64.zip
|
||||||
|
7z x nvim-win64.zip
|
||||||
|
Add-Content $env:GITHUB_PATH ".\nvim-win64\bin\"
|
||||||
|
- name: Run neovim
|
||||||
|
run: |
|
||||||
|
nvim --version
|
||||||
|
nvim --headless -u tests/init.lua +q
|
||||||
30
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/palette.yml
vendored
Normal file
30
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/palette.yml
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
name: Palette
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *' # Run every day at midnight UTC
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
createPullRequest:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Make changes to pull request
|
||||||
|
run: python3 ./.github/scripts/update-palette.py
|
||||||
|
|
||||||
|
- name: Create Pull Request
|
||||||
|
id: cpr
|
||||||
|
uses: peter-evans/create-pull-request@v5
|
||||||
|
with:
|
||||||
|
commit-message: 'feat: auto-sync upstream palettes'
|
||||||
|
committer: GitHub <noreply@github.com>
|
||||||
|
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
|
||||||
|
signoff: false
|
||||||
|
branch: new-palettes
|
||||||
|
delete-branch: true
|
||||||
|
title: 'feat: auto-sync upstream palettes'
|
||||||
|
body: |
|
||||||
|
Auto-update `lua/catppuccin/palettes/` based on https://github.com/catppuccin/palette/blob/main/palette.json
|
||||||
26
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/pandocvim.yml
vendored
Normal file
26
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/pandocvim.yml
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
name: panvimdoc
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- '**.md'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docs:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: pandoc to vimdoc
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: panvimdoc
|
||||||
|
uses: kdheepak/panvimdoc@main
|
||||||
|
with:
|
||||||
|
vimdoc: catppuccin
|
||||||
|
description: "Soothing pastel theme for NeoVim"
|
||||||
|
pandoc: "README.md"
|
||||||
|
toc: true
|
||||||
|
version: "nvim >= 0.8.0"
|
||||||
|
treesitter: true
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: "docs: auto generate vimdoc"
|
||||||
|
branch: ${{ github.head_ref }}
|
||||||
29
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/release.yml
vendored
Normal file
29
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: release
|
||||||
|
if: ${{ github.ref == 'refs/heads/main' }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: google-github-actions/release-please-action@v3
|
||||||
|
id: release
|
||||||
|
with:
|
||||||
|
release-type: simple
|
||||||
|
package-name: catppuccin
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: tag stable versions
|
||||||
|
if: ${{ steps.release.outputs.release_created }}
|
||||||
|
run: |
|
||||||
|
git config user.name github-actions[bot]
|
||||||
|
git config user.email github-actions[bot]@users.noreply.github.com
|
||||||
|
git remote add gh-token "https://${{ secrets.GITHUB_TOKEN }}@github.com/google-github-actions/release-please-action.git"
|
||||||
|
git tag -d stable || true
|
||||||
|
git push origin :stable || true
|
||||||
|
git tag -a stable -m "Last Stable Release"
|
||||||
|
git push origin stable
|
||||||
42
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/tests.yml
vendored
Normal file
42
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/tests.yml
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
name: Tests
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- "*.md"
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *' # Run every day at midnight UTC
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ubuntu:
|
||||||
|
name: Plenary
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: nvim
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: user-configs
|
||||||
|
path: user-configs
|
||||||
|
- run: |
|
||||||
|
mv user-configs/tests/* nvim/tests/
|
||||||
|
- name: Install Neovim
|
||||||
|
uses: MunifTanjim/setup-neovim-action@v1
|
||||||
|
with:
|
||||||
|
tag: nightly
|
||||||
|
- name: Fetch dependencies
|
||||||
|
run: |
|
||||||
|
git clone --depth 1 https://github.com/nvim-lua/plenary.nvim ~/.local/share/nvim/site/pack/vendor/start/plenary.nvim
|
||||||
|
ln -s $(pwd) ~/.local/share/nvim/site/pack/vendor/start
|
||||||
|
- name: Run tests
|
||||||
|
working-directory: ./nvim
|
||||||
|
run: |
|
||||||
|
nvim --version
|
||||||
|
[ ! -d tests ] && exit 0
|
||||||
|
nvim --headless -u tests/minimal_init.vim -c "PlenaryBustedDirectory tests/ {minimal_init = 'tests/minimal_init.vim', sequential = true}"
|
||||||
58
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/vim.yml
vendored
Normal file
58
config/neovim/store/lazy-plugins/catppuccin-nvim/.github/workflows/vim.yml
vendored
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
name: Vim
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- "*.md"
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ubuntu:
|
||||||
|
name: Ubuntu
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install Vim
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install vim-gtk lua5.4
|
||||||
|
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
||||||
|
- name: Run vim
|
||||||
|
run: |
|
||||||
|
vim --version
|
||||||
|
vim -u tests/init.vim
|
||||||
|
macos:
|
||||||
|
name: Macos
|
||||||
|
runs-on: macos-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install Vim
|
||||||
|
run: |
|
||||||
|
brew install vim
|
||||||
|
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
||||||
|
- name: Run vim
|
||||||
|
run: |
|
||||||
|
vim --version
|
||||||
|
vim -u tests/init.vim
|
||||||
|
windows:
|
||||||
|
name: Windows
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install Vim
|
||||||
|
run: |
|
||||||
|
choco install vim
|
||||||
|
C:\msys64\usr\bin\wget.exe -q https://downloads.sourceforge.net/project/luabinaries/5.4.2/Tools%20Executables/lua-5.4.2_Win64_bin.zip
|
||||||
|
7z x lua-5.4.2_Win64_bin.zip
|
||||||
|
move lua54.dll C:\Windows\System32\
|
||||||
|
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
|
||||||
|
ni $HOME/vimfiles/autoload/plug.vim -Force
|
||||||
|
- name: Run vim
|
||||||
|
run: |
|
||||||
|
vim --version
|
||||||
|
gvim -u tests/init.vim
|
||||||
4
config/neovim/store/lazy-plugins/catppuccin-nvim/.gitignore
vendored
Normal file
4
config/neovim/store/lazy-plugins/catppuccin-nvim/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
doc/tags
|
||||||
|
.vscode/
|
||||||
|
.DS_Store
|
||||||
|
.repro
|
||||||
166
config/neovim/store/lazy-plugins/catppuccin-nvim/CHANGELOG.md
Normal file
166
config/neovim/store/lazy-plugins/catppuccin-nvim/CHANGELOG.md
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## [1.7.0](https://github.com/catppuccin/nvim/compare/v1.6.0...v1.7.0) (2024-04-13)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add ability to toggle default integrations ([#687](https://github.com/catppuccin/nvim/issues/687)) ([e60e400](https://github.com/catppuccin/nvim/commit/e60e400c411519f29e203185ddda121d4ec8ef57))
|
||||||
|
* add support for `outline.nvim` plugin ([#647](https://github.com/catppuccin/nvim/issues/647)) ([048c18f](https://github.com/catppuccin/nvim/commit/048c18fc531703815f5e10765ea46ce9b2c75ae4))
|
||||||
|
* **defaults:** enable neotree ([c536623](https://github.com/catppuccin/nvim/commit/c536623eac60f8443c93ae4ca0e03b51574b5f50))
|
||||||
|
* **defaults:** enable treesitter context ([dc392c0](https://github.com/catppuccin/nvim/commit/dc392c067739326c3cff380a8c52b0f31319e6dd)), closes [#683](https://github.com/catppuccin/nvim/issues/683)
|
||||||
|
* **feline:** fix feline integration ([#685](https://github.com/catppuccin/nvim/issues/685)) ([07679af](https://github.com/catppuccin/nvim/commit/07679af1af4f446655682ee2557b5840ac551504))
|
||||||
|
* **feline:** improve feline lsp display ([#688](https://github.com/catppuccin/nvim/issues/688)) ([f66654d](https://github.com/catppuccin/nvim/commit/f66654d5d5190865333e8e46474c1593302c558e))
|
||||||
|
* **integration:** add reactive.nvim integration ([#654](https://github.com/catppuccin/nvim/issues/654)) ([151e478](https://github.com/catppuccin/nvim/commit/151e478edf8108cfd451a3cbd44d0a20503e7b42))
|
||||||
|
* **lsp:** add highlight for `LspCodeLensSeparator` ([#693](https://github.com/catppuccin/nvim/issues/693)) ([02bdd74](https://github.com/catppuccin/nvim/commit/02bdd749931a5d739063562e57531c118e081882))
|
||||||
|
* set `[@comment](https://github.com/comment).warning` that does not affect readability in gitcommit ([#675](https://github.com/catppuccin/nvim/issues/675)) ([045e349](https://github.com/catppuccin/nvim/commit/045e3499d9ec8d84635fb08877ae44fd33f6a38d))
|
||||||
|
* **treesitter:** add styles.miscs to disable hardcoded italics ([#659](https://github.com/catppuccin/nvim/issues/659)) ([c0de3b4](https://github.com/catppuccin/nvim/commit/c0de3b46811fe1ce3912e2245a9dfbea6b41c300))
|
||||||
|
* **treesitter:** follow upstream captures ([#630](https://github.com/catppuccin/nvim/issues/630)) ([f288876](https://github.com/catppuccin/nvim/commit/f288876c6d05d3bb91b0e72b8031fe9e26ef05b8))
|
||||||
|
* **treesitter:** follow upstream captures ([#694](https://github.com/catppuccin/nvim/issues/694)) ([08c6417](https://github.com/catppuccin/nvim/commit/08c6417bdc3b29e5f8c53e2cfe4067f288d49a54))
|
||||||
|
* use a more distinguishable color for todos ([#645](https://github.com/catppuccin/nvim/issues/645)) ([657cc4f](https://github.com/catppuccin/nvim/commit/657cc4f35cf193cadac7e5471eb802c97e7a1b59))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **compile:** string.dump isn't deterministic ([836de8b](https://github.com/catppuccin/nvim/commit/836de8bc1898250b69332e66cbe993058870f849)), closes [#664](https://github.com/catppuccin/nvim/issues/664)
|
||||||
|
* **dropbar:** correct keyword highlight link ([#652](https://github.com/catppuccin/nvim/issues/652)) ([afab7ec](https://github.com/catppuccin/nvim/commit/afab7ec2a79c7127627dede79c0018b6e45663d0))
|
||||||
|
* ensure consistency between JSX and HTML markup ([#660](https://github.com/catppuccin/nvim/issues/660)) ([9703f22](https://github.com/catppuccin/nvim/commit/9703f227bfab20d04bcee62d2f08f1795723b4ae))
|
||||||
|
* **flavour:** g:catppuccin_flavour backwards compatibility ([fc98570](https://github.com/catppuccin/nvim/commit/fc98570d85ae772e56dc42cf8d7d6a497a909bdb))
|
||||||
|
* **flavour:** respect terminal's background ([#696](https://github.com/catppuccin/nvim/issues/696)) ([d5760c5](https://github.com/catppuccin/nvim/commit/d5760c53ae3b48f0f539298ec4165adc5c0afb19))
|
||||||
|
* **illuminate:** update type ([#690](https://github.com/catppuccin/nvim/issues/690)) ([30930f9](https://github.com/catppuccin/nvim/commit/30930f9656cffd068bcf52ced70cdfffd1e83a44))
|
||||||
|
* **integrations:** respect default options ([c2e6f8e](https://github.com/catppuccin/nvim/commit/c2e6f8e7eb8d0ebf55700c89bdf842809aeecf09))
|
||||||
|
* **neotree:** add `NeoTreeModified` ([#642](https://github.com/catppuccin/nvim/issues/642)) ([6853cc8](https://github.com/catppuccin/nvim/commit/6853cc8e6efc76e85e10ec153d05fc2520653508))
|
||||||
|
* **neotree:** blend sidebar with win separator ([56fb982](https://github.com/catppuccin/nvim/commit/56fb98218d22d5c326387bf9e4076227e7372e6b)), closes [#670](https://github.com/catppuccin/nvim/issues/670)
|
||||||
|
* repair treesitter underlined text (`Underline` -> `Underlined`) ([#663](https://github.com/catppuccin/nvim/issues/663)) ([42b687c](https://github.com/catppuccin/nvim/commit/42b687c42a35633366ed45e562bf921fb914048b))
|
||||||
|
* respect background variable on startup ([6b7a4df](https://github.com/catppuccin/nvim/commit/6b7a4dfdf241c8be0af6ec691b302e85cce03cab))
|
||||||
|
* **semantic_tokens:** namespace -> module ([196f301](https://github.com/catppuccin/nvim/commit/196f301de06090c40d7f98297675ac38ae7d6675))
|
||||||
|
* **treesitter:** some captures missing leading `@` ([#650](https://github.com/catppuccin/nvim/issues/650)) ([bc1f215](https://github.com/catppuccin/nvim/commit/bc1f2151f23227ba02ac203c2c59ad693352a741))
|
||||||
|
* use external index for lsp counting ([c3572a9](https://github.com/catppuccin/nvim/commit/c3572a968a79b64bd0ef16f2c3e93014f112e66d))
|
||||||
|
* wrong color shown when using color_overrides ([#658](https://github.com/catppuccin/nvim/issues/658)) ([b76ada8](https://github.com/catppuccin/nvim/commit/b76ada82bf2019d5e343018b4104cc9266900c16)), closes [#657](https://github.com/catppuccin/nvim/issues/657)
|
||||||
|
|
||||||
|
## [1.6.0](https://github.com/catppuccin/nvim/compare/v1.5.0...v1.6.0) (2023-12-28)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add `WinSeparator` highlight group ([#623](https://github.com/catppuccin/nvim/issues/623)) ([988c0b2](https://github.com/catppuccin/nvim/commit/988c0b2dde4140572ed37c6b8b5d5deac0219f9f))
|
||||||
|
* **bufferline:** support `no_underline` option ([#601](https://github.com/catppuccin/nvim/issues/601)) ([f7638a1](https://github.com/catppuccin/nvim/commit/f7638a1a65cbffdd01a9ddac0018a20ec4be29e2))
|
||||||
|
* **dashboard:** add highlight groups for `doom` theme ([#593](https://github.com/catppuccin/nvim/issues/593)) ([3bdd5e8](https://github.com/catppuccin/nvim/commit/3bdd5e8296971f8c7ba5e499dac8247c3d621508))
|
||||||
|
* **integrations:** enable dap & dap_ui by default ([64dc309](https://github.com/catppuccin/nvim/commit/64dc309bc157779691be38bbfc5123584e0a4a85))
|
||||||
|
* **lualine:** darken lualine `b` section for better readability ([#606](https://github.com/catppuccin/nvim/issues/606)) ([32ee05d](https://github.com/catppuccin/nvim/commit/32ee05d014a4611555c7f56a73283efb4718d9c5))
|
||||||
|
* **mini.indentscope:** add scope color ([#592](https://github.com/catppuccin/nvim/issues/592)) ([795f639](https://github.com/catppuccin/nvim/commit/795f639ac50d6b8400c1d5868fca54844d579f37))
|
||||||
|
* **neogit:** support new highlight groups ([#610](https://github.com/catppuccin/nvim/issues/610)) ([f90c7c0](https://github.com/catppuccin/nvim/commit/f90c7c0c467722dc7acacbae3c3904720e09efb6))
|
||||||
|
* **notify:** add `NotifyBackground` hl group ([#637](https://github.com/catppuccin/nvim/issues/637)) ([c7cf3af](https://github.com/catppuccin/nvim/commit/c7cf3afe2eb6d9058eec4abb3ace2c1da006478a))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **airline:** missing refresh function ([dcef0a0](https://github.com/catppuccin/nvim/commit/dcef0a062de380885193fb0f919217d58b979753)), closes [#594](https://github.com/catppuccin/nvim/issues/594)
|
||||||
|
* **dashboard:** `orange` -> `peach` ([54002a1](https://github.com/catppuccin/nvim/commit/54002a1adfd543f54352b3ec79d4e62c4163e9ee))
|
||||||
|
* **flash:** link `FlashPrompt` to `NormalFloat` ([#605](https://github.com/catppuccin/nvim/issues/605)) ([40dc9f0](https://github.com/catppuccin/nvim/commit/40dc9f0621c55bd40da4ad0731fac44d15bb393a))
|
||||||
|
* **lualine:** match lualine mode colors for insert and terminal ([#597](https://github.com/catppuccin/nvim/issues/597)) ([ea52fe8](https://github.com/catppuccin/nvim/commit/ea52fe8a0b1e4a820df0d0cf9a6a5a0e18c3eaa0))
|
||||||
|
* **neogit:** remove `NeogitCursorLine` from integration ([#613](https://github.com/catppuccin/nvim/issues/613)) ([5e4be43](https://github.com/catppuccin/nvim/commit/5e4be43e1a6acb044d5c55cd10f22461c40656ed))
|
||||||
|
* **neogit:** remove diff context highlight fg ([1b40f07](https://github.com/catppuccin/nvim/commit/1b40f072305be71b73c730ff5c7d881e638fd040)), closes [#627](https://github.com/catppuccin/nvim/issues/627)
|
||||||
|
* **neogit:** tweak diff context highlighting ([#614](https://github.com/catppuccin/nvim/issues/614)) ([cc717ac](https://github.com/catppuccin/nvim/commit/cc717acba29259d578548973c41448b092453c52))
|
||||||
|
* **neotree:** change color of untracked files ([#608](https://github.com/catppuccin/nvim/issues/608)) ([d7521f6](https://github.com/catppuccin/nvim/commit/d7521f6050b94cb0e23067f63829d86886f870fe))
|
||||||
|
* **neotree:** make popup titlebar text visible ([#618](https://github.com/catppuccin/nvim/issues/618)) ([919d1f7](https://github.com/catppuccin/nvim/commit/919d1f786338ebeced798afbf28cd085cd54542a))
|
||||||
|
* **noice:** respect transparency ([#632](https://github.com/catppuccin/nvim/issues/632)) ([4fbab1f](https://github.com/catppuccin/nvim/commit/4fbab1f01488718c3d54034a473d0346346b90e3))
|
||||||
|
* **selene:** allow mixed tables ([#611](https://github.com/catppuccin/nvim/issues/611)) ([9f3c13b](https://github.com/catppuccin/nvim/commit/9f3c13bbcf16fcaec3a429c03743a13e5923f3e3))
|
||||||
|
* sync focused and unfocused winbars ([#628](https://github.com/catppuccin/nvim/issues/628)) ([079500a](https://github.com/catppuccin/nvim/commit/079500a625f3ae5aa6efb758f1a17fe4c7a57e52))
|
||||||
|
* **vim:** resolve deprecation of nested [[ ([7a4bcda](https://github.com/catppuccin/nvim/commit/7a4bcdadafc59a5bedbd866c643fa486d8cca4a1))
|
||||||
|
|
||||||
|
## [1.5.0](https://github.com/catppuccin/nvim/compare/v1.4.0...v1.5.0) (2023-09-29)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add kitty detection ([d3da439](https://github.com/catppuccin/nvim/commit/d3da43907d1896ba3e68a62f18820d1d12574317))
|
||||||
|
* add ufo integration ([1f53686](https://github.com/catppuccin/nvim/commit/1f536869b1a2ca1710fc892db84d7e8bbc6ad8d9))
|
||||||
|
* add workaround for kitty transparent issue ([#579](https://github.com/catppuccin/nvim/issues/579)) ([f36fa5c](https://github.com/catppuccin/nvim/commit/f36fa5cdce162450df88298a16631eeed16b68a3))
|
||||||
|
* **compile:** use indexed cmd ([85e9360](https://github.com/catppuccin/nvim/commit/85e93601e0f0b48aa2c6bbfae4d0e9d7a1898280))
|
||||||
|
* **illuminate:** enabled by default and optional lsp option ([5b44baa](https://github.com/catppuccin/nvim/commit/5b44baa4aff0ff45c042620ee960d283a79807a1)), closes [#571](https://github.com/catppuccin/nvim/issues/571)
|
||||||
|
* **indent-blankline:** update to v3, add scope color ([#585](https://github.com/catppuccin/nvim/issues/585)) ([f04336b](https://github.com/catppuccin/nvim/commit/f04336ba4a2400ee2c5250068b39541652c0962f))
|
||||||
|
* **integrations:** add NormalNvim ([0e3c128](https://github.com/catppuccin/nvim/commit/0e3c128eea8a7de692778d52b8429817df5c9040)), closes [#580](https://github.com/catppuccin/nvim/issues/580)
|
||||||
|
* **integrations:** add notifier.nvim ([d029098](https://github.com/catppuccin/nvim/commit/d029098e124f6201a07298c0c1c499ed8d5aef76)), closes [#574](https://github.com/catppuccin/nvim/issues/574)
|
||||||
|
* **lib:** soft deprecate highlighter ([8202348](https://github.com/catppuccin/nvim/commit/82023485fec1703d6f700a4b2a92fd431d4882f4))
|
||||||
|
* **syntax:** respect style guide part 3 ([#576](https://github.com/catppuccin/nvim/issues/576)) ([81096ca](https://github.com/catppuccin/nvim/commit/81096cabe67f360acb06d64c0f7db8dd840afeba))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **coc:** improve inlay hints ([#582](https://github.com/catppuccin/nvim/issues/582)) ([3d9a5ed](https://github.com/catppuccin/nvim/commit/3d9a5ed556e289bce6c1fb0af89ec838360641b2))
|
||||||
|
* **editor:** invisible fold with transparent ([1c15c5e](https://github.com/catppuccin/nvim/commit/1c15c5e51a998c9198d63c6d2b75e9d1e4a84541)), closes [#577](https://github.com/catppuccin/nvim/issues/577)
|
||||||
|
* **template:** broken tmux italic gist link ([128e0d2](https://github.com/catppuccin/nvim/commit/128e0d27946491da979e2e04f5a4acf330ccdefd))
|
||||||
|
* **treesitter:** invalid string in type builtin ([135f9b0](https://github.com/catppuccin/nvim/commit/135f9b01386fa18da6d75c16ceb83e1aa3669430))
|
||||||
|
* **ufo:** use folded ellipsis ([846388d](https://github.com/catppuccin/nvim/commit/846388d137590e653390ce2f84fea5351a7516ac))
|
||||||
|
* **vim:** add vim.env index ([1786287](https://github.com/catppuccin/nvim/commit/17862877792db104d48c3260aec0ace92d55f863))
|
||||||
|
|
||||||
|
|
||||||
|
### Performance Improvements
|
||||||
|
|
||||||
|
* **compile:** reduce else statement ([a937d54](https://github.com/catppuccin/nvim/commit/a937d546f4783a1ff67f84043d2d7871ad4ecd83))
|
||||||
|
|
||||||
|
## [1.4.0](https://github.com/catppuccin/nvim/compare/v1.3.0...v1.4.0) (2023-08-21)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add ability to enable/disable all integrations by default ([#552](https://github.com/catppuccin/nvim/issues/552)) ([737f60a](https://github.com/catppuccin/nvim/commit/737f60a3a25c79d9bb9574092f6c6c958a3d747a))
|
||||||
|
* add flash.nvim integration ([#550](https://github.com/catppuccin/nvim/issues/550)) ([381eddd](https://github.com/catppuccin/nvim/commit/381edddc4ad12126cfa7276818bca07c3d5606ed))
|
||||||
|
* enable neogit by default ([91f9f6f](https://github.com/catppuccin/nvim/commit/91f9f6fb413caff2bd06e326ec174deee1c1b7a9)), closes [#568](https://github.com/catppuccin/nvim/issues/568)
|
||||||
|
* **flash:** enable by default ([#551](https://github.com/catppuccin/nvim/issues/551)) ([a84ee18](https://github.com/catppuccin/nvim/commit/a84ee1848bfac4601771805396552bdbaa0a0e91))
|
||||||
|
* **gitsigns:** Support GitSignsCurrentLineBlame highlights ([#567](https://github.com/catppuccin/nvim/issues/567)) ([3fdd394](https://github.com/catppuccin/nvim/commit/3fdd3942567503d23b65ccc21e7d7757334defd5))
|
||||||
|
* **lspsaga:** support v0.3 ([#543](https://github.com/catppuccin/nvim/issues/543)) ([3ffd2f5](https://github.com/catppuccin/nvim/commit/3ffd2f511f3dc6c01258923d7170ccaf1445634b))
|
||||||
|
* **lspsaga:** upstream new hl groups ([#544](https://github.com/catppuccin/nvim/issues/544)) ([e0dd3f9](https://github.com/catppuccin/nvim/commit/e0dd3f9bb1513c98ab4ef9404ea26e18babf858a))
|
||||||
|
* **neogit:** update highlights ([#545](https://github.com/catppuccin/nvim/issues/545)) ([#549](https://github.com/catppuccin/nvim/issues/549)) ([371430f](https://github.com/catppuccin/nvim/commit/371430f32f2637d2dd5796399b3982d4cada61d8))
|
||||||
|
* **telescope:** make nvchad style great again ([#538](https://github.com/catppuccin/nvim/issues/538)) ([51961da](https://github.com/catppuccin/nvim/commit/51961da41e8189ca6f9ed73f37dfa83087b4e65c))
|
||||||
|
* **treesitter-context:** add color for normal background ([#564](https://github.com/catppuccin/nvim/issues/564)) ([b1caff9](https://github.com/catppuccin/nvim/commit/b1caff988fb395c0aae585cecff58b1ffa0a21c6))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* don't highlight fg of `PmenuSel` ([#554](https://github.com/catppuccin/nvim/issues/554)) ([6425df1](https://github.com/catppuccin/nvim/commit/6425df128d46f2db2cccf9aa7a66ca2823c1d153))
|
||||||
|
* highlight NonText characters ([#547](https://github.com/catppuccin/nvim/issues/547)) ([bfe91df](https://github.com/catppuccin/nvim/commit/bfe91dfb3a19ffd4445e43611fcde68acbb3fed4))
|
||||||
|
* **integration_default:** hotfix for [#559](https://github.com/catppuccin/nvim/issues/559) ([4913a8b](https://github.com/catppuccin/nvim/commit/4913a8b47554a89a71ed44da39fc1f6e5c2841c3))
|
||||||
|
* **integration_default:** override `enabled` key only if integration has one ([#559](https://github.com/catppuccin/nvim/issues/559)) ([9709f82](https://github.com/catppuccin/nvim/commit/9709f8251a40e874238d6f9436cf4fba654b60e1))
|
||||||
|
* **noice:** set background blend to 0 for mini popups ([#556](https://github.com/catppuccin/nvim/issues/556)) ([2d50a4e](https://github.com/catppuccin/nvim/commit/2d50a4e3aecffea4144801bb3c0a3cf7b88fdd6b))
|
||||||
|
* **nvim-window-picker:** missing table keys ([#569](https://github.com/catppuccin/nvim/issues/569)) ([b9e4dae](https://github.com/catppuccin/nvim/commit/b9e4dae160bf9bc28d4ceb6d29a7e0134b107724))
|
||||||
|
* **options:** disable deprecated ts_rainbow and ts_rainbow2 by default ([096385d](https://github.com/catppuccin/nvim/commit/096385dd024ecd1332659916fd7f09d7d18d7374))
|
||||||
|
* **telescope:** keep consistency between the two styles ([#540](https://github.com/catppuccin/nvim/issues/540)) ([dfbc8e2](https://github.com/catppuccin/nvim/commit/dfbc8e2b478a65104d34556698067f2d40f1c227))
|
||||||
|
* **telescope:** respect transparency ([#542](https://github.com/catppuccin/nvim/issues/542)) ([f36af06](https://github.com/catppuccin/nvim/commit/f36af062e3242f333b12fe9b730053fdda36e000))
|
||||||
|
* **treesitter:** avoid possible nil ([17ae783](https://github.com/catppuccin/nvim/commit/17ae783b88bb7ae73dc004370473138d9d43ee46))
|
||||||
|
* **types:** make all options besides nested `enabled` optional ([#565](https://github.com/catppuccin/nvim/issues/565)) ([490078b](https://github.com/catppuccin/nvim/commit/490078b1593c6609e6a50ad5001e7902ea601824))
|
||||||
|
|
||||||
|
## [1.3.0](https://github.com/catppuccin/nvim/compare/v1.2.0...v1.3.0) (2023-07-10)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* auto-sync upstream palettes ([#507](https://github.com/catppuccin/nvim/issues/507)) ([8426d3b](https://github.com/catppuccin/nvim/commit/8426d3bfd55f4dc68ae451a82927d2ff88e47e95))
|
||||||
|
* **debug:** add auto compile on save ([c9cc5a9](https://github.com/catppuccin/nvim/commit/c9cc5a997f1dae3f35b4bdd62f35958fee363ab4))
|
||||||
|
* **dropbar:** add new highlight groups ([4f22a1e](https://github.com/catppuccin/nvim/commit/4f22a1e78460ae06e78a1085a8e0e6cc8027aef2)), closes [#503](https://github.com/catppuccin/nvim/issues/503)
|
||||||
|
* **integration:** add dropbar.nvim ([#499](https://github.com/catppuccin/nvim/issues/499)) ([e86aeb8](https://github.com/catppuccin/nvim/commit/e86aeb8ca0f03e97192074fba9dc6c836f953a83))
|
||||||
|
* **integrations:** accept both boolean and table config ([#534](https://github.com/catppuccin/nvim/issues/534)) ([f0b947a](https://github.com/catppuccin/nvim/commit/f0b947ab8cfdb9ca7ba6230b30bbc1ed48dd30a1))
|
||||||
|
* **integrations:** add rainbow_delimiters.nvim support ([#530](https://github.com/catppuccin/nvim/issues/530)) ([cc8d3ab](https://github.com/catppuccin/nvim/commit/cc8d3abc944d78cb6bf2a4cc88871ab383c4da62))
|
||||||
|
* **markdown:** add rainbow headlines ([#493](https://github.com/catppuccin/nvim/issues/493)) ([cc517bd](https://github.com/catppuccin/nvim/commit/cc517bdcb66a0f8dee90bab10ccdd651fa967bbe))
|
||||||
|
* **native_lsp:** add ability to disable background for inlay hints ([#518](https://github.com/catppuccin/nvim/issues/518)) ([b032ced](https://github.com/catppuccin/nvim/commit/b032cedb90c42a7bfbfbe2f91479505330f4a396))
|
||||||
|
* **native_lsp:** support inlay hints ([#516](https://github.com/catppuccin/nvim/issues/516)) ([d32b0bb](https://github.com/catppuccin/nvim/commit/d32b0bb5b1033920de5026e326869838aba856ee))
|
||||||
|
* **navic:** change text color ([278bfeb](https://github.com/catppuccin/nvim/commit/278bfeb61bd627dc2a8885180a0441a1ebe65a41))
|
||||||
|
* **semantic_tokens:** add some lsp semantic tokens ([#512](https://github.com/catppuccin/nvim/issues/512)) ([506a4aa](https://github.com/catppuccin/nvim/commit/506a4aa13443e0104ea49b99947cc09488d0791d))
|
||||||
|
* **telescope:** telescope flat style support ([#521](https://github.com/catppuccin/nvim/issues/521)) ([fc73faa](https://github.com/catppuccin/nvim/commit/fc73faa37bda393e3c4f846fb3e810a6ac8aae16))
|
||||||
|
* **types:** add type annotations ([#495](https://github.com/catppuccin/nvim/issues/495)) ([1d3eda1](https://github.com/catppuccin/nvim/commit/1d3eda15703ba70f57e94e6451db55914ff7017f))
|
||||||
|
* **workflows:** auto-sync upstream palettes ([e9fbeec](https://github.com/catppuccin/nvim/commit/e9fbeec106562475e82bae79304b6a421eee73f3))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* calling palette before setup ([841d8ab](https://github.com/catppuccin/nvim/commit/841d8abf3be39de833d95a592a1fbbb1b9851296))
|
||||||
|
* **feline:** disable lsp status on nightly ([#510](https://github.com/catppuccin/nvim/issues/510)) ([9aaf5b4](https://github.com/catppuccin/nvim/commit/9aaf5b4ce5cd256695d8bbddb65869d19919abde))
|
||||||
|
* **feline:** use new `vim.lsp.status()` method ([#509](https://github.com/catppuccin/nvim/issues/509)) ([57ee09d](https://github.com/catppuccin/nvim/commit/57ee09dd532bd442b53d65c2b2f35550960981ed))
|
||||||
|
* **lsp:** do not link `LspInlayHint` to `Comment` directly ([#517](https://github.com/catppuccin/nvim/issues/517)) ([5dc566c](https://github.com/catppuccin/nvim/commit/5dc566c4206f383657d67500253559d3be82c421))
|
||||||
|
* **mapper:** remove unnecessary globals ([#529](https://github.com/catppuccin/nvim/issues/529)) ([c75562c](https://github.com/catppuccin/nvim/commit/c75562cbc954136f279ced91661251543b6f2a20))
|
||||||
|
* **native_lsp:** boolean logic ([#526](https://github.com/catppuccin/nvim/issues/526)) ([8d02781](https://github.com/catppuccin/nvim/commit/8d02781a638123394f9bc160aad47a9560a113f9))
|
||||||
|
* **tests:** shadowing variable ([15043d3](https://github.com/catppuccin/nvim/commit/15043d363729f1ef20e615c41bbd8b7e92c1453e))
|
||||||
|
* **treesitter_context:** underline content if `transparent_background` is true ([#519](https://github.com/catppuccin/nvim/issues/519)) ([6ecc158](https://github.com/catppuccin/nvim/commit/6ecc158dbf365d2cd290b58993296c42b3111965))
|
||||||
|
* **which-key:** wrong separator highlight group ([d438c01](https://github.com/catppuccin/nvim/commit/d438c0141609338140b18363a9a1e8eb8bb17130))
|
||||||
|
* **workflows:** stylua format ([2df7036](https://github.com/catppuccin/nvim/commit/2df7036c5c303c9184869936e40ca18935e4afcb))
|
||||||
21
config/neovim/store/lazy-plugins/catppuccin-nvim/LICENSE.md
Normal file
21
config/neovim/store/lazy-plugins/catppuccin-nvim/LICENSE.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Catppuccin
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
1551
config/neovim/store/lazy-plugins/catppuccin-nvim/README.md
Normal file
1551
config/neovim/store/lazy-plugins/catppuccin-nvim/README.md
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,16 @@
|
|||||||
|
;; extends
|
||||||
|
[
|
||||||
|
(class_name)
|
||||||
|
] @property.class
|
||||||
|
|
||||||
|
[
|
||||||
|
(id_name)
|
||||||
|
] @property.id
|
||||||
|
|
||||||
|
[
|
||||||
|
(declaration
|
||||||
|
(plain_value) @string.plain)
|
||||||
|
]
|
||||||
|
[
|
||||||
|
(tag_name)
|
||||||
|
] @type.tag
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
;; extends
|
||||||
|
[
|
||||||
|
"export"
|
||||||
|
] @keyword.export
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
;; extends
|
||||||
|
[
|
||||||
|
"export"
|
||||||
|
] @keyword.export
|
||||||
@ -0,0 +1,72 @@
|
|||||||
|
let g:airline#themes#catppuccin#palette = {}
|
||||||
|
|
||||||
|
function! airline#themes#catppuccin#refresh()
|
||||||
|
let s:c = has("nvim") == 1 ? luaeval('require("catppuccin.palettes").get_palette()') : luaeval('vim.dict(require("catppuccin.palettes").get_palette())')
|
||||||
|
|
||||||
|
" Normal mode
|
||||||
|
" (Dark)
|
||||||
|
let s:N1 = [ s:c.mantle, s:c.blue, 59, 149 ] " guifg guibg ctermfg ctermbg
|
||||||
|
let s:N2 = [ s:c.blue, s:c.surface0, 149, 59 ] " guifg guibg ctermfg ctermbg
|
||||||
|
let s:N3 = [ s:c.text, s:c.mantle, 145, 16 ] " guifg guibg ctermfg ctermbg
|
||||||
|
|
||||||
|
" Insert mode
|
||||||
|
let s:I1 = [ s:c.mantle, s:c.teal, 59, 74 ] " guifg guibg ctermfg ctermbg
|
||||||
|
let s:I2 = [ s:c.teal, s:c.surface0, 74, 59 ] " guifg guibg ctermfg ctermbg
|
||||||
|
let s:I3 = [ s:c.text, s:c.mantle, 145, 16 ] " guifg guibg ctermfg ctermbg
|
||||||
|
|
||||||
|
" Visual mode
|
||||||
|
let s:V1 = [ s:c.mantle, s:c.mauve, 59, 209 ] " guifg guibg ctermfg ctermbg
|
||||||
|
let s:V2 = [ s:c.mauve, s:c.surface0, 209, 59 ] " guifg guibg ctermfg ctermbg
|
||||||
|
let s:V3 = [ s:c.text, s:c.mantle, 145, 16 ] " guifg guibg ctermfg ctermbg
|
||||||
|
|
||||||
|
" Replace mode
|
||||||
|
let s:R1 = [ s:c.mantle, s:c.red, 59, 203 ] " guifg guibg ctermfg ctermbg
|
||||||
|
let s:R2 = [ s:c.red, s:c.surface0, 203, 59 ] " guifg guibg ctermfg ctermbg
|
||||||
|
|
||||||
|
" Command mode
|
||||||
|
let s:C1 = [ s:c.base, s:c.peach, 59, 166 ] " guifg guibg ctermfg ctermbg
|
||||||
|
let s:C2 = [ s:c.peach, s:c.surface0, 166, 59 ] " guifg guibg ctermfg ctermbg
|
||||||
|
|
||||||
|
" Warning section
|
||||||
|
let s:WR = [s:c.mantle, s:c.peach, 232, 166 ]
|
||||||
|
|
||||||
|
" Error section
|
||||||
|
let s:ER = [s:c.mantle, s:c.red, 232, 166 ]
|
||||||
|
|
||||||
|
|
||||||
|
let g:airline#themes#catppuccin#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
|
||||||
|
|
||||||
|
let g:airline#themes#catppuccin#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
|
||||||
|
|
||||||
|
let g:airline#themes#catppuccin#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
|
||||||
|
|
||||||
|
let s:IA = [ s:N1[1], s:N3[1], s:N1[3], s:N3[3], '' ]
|
||||||
|
let g:airline#themes#catppuccin#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
|
||||||
|
|
||||||
|
let g:airline#themes#catppuccin#palette.normal.airline_warning = s:WR
|
||||||
|
let g:airline#themes#catppuccin#palette.insert.airline_warning = s:WR
|
||||||
|
let g:airline#themes#catppuccin#palette.visual.airline_warning = s:WR
|
||||||
|
|
||||||
|
let g:airline#themes#catppuccin#palette.normal.airline_warning_to_airline_error = s:WR
|
||||||
|
let g:airline#themes#catppuccin#palette.insert.airline_warning_to_airline_error = s:WR
|
||||||
|
let g:airline#themes#catppuccin#palette.visual.airline_warning_to_airline_error = s:WR
|
||||||
|
|
||||||
|
let g:airline#themes#catppuccin#palette.normal.airline_error = s:ER
|
||||||
|
let g:airline#themes#catppuccin#palette.insert.airline_error = s:ER
|
||||||
|
let g:airline#themes#catppuccin#palette.visual.airline_error = s:ER
|
||||||
|
|
||||||
|
" Fork replace mode from insert mode
|
||||||
|
let g:airline#themes#catppuccin#palette.replace = copy(g:airline#themes#catppuccin#palette.insert)
|
||||||
|
let g:airline#themes#catppuccin#palette.replace.airline_a = [ s:R1[0], s:R1[1], s:R1[2], s:R1[3], '' ]
|
||||||
|
let g:airline#themes#catppuccin#palette.replace.airline_b = [ s:R2[0], s:R2[1], s:R2[2], s:R2[3], '' ]
|
||||||
|
|
||||||
|
" Terminal mode is same as insert mode
|
||||||
|
let g:airline#themes#catppuccin#palette.terminal = copy(g:airline#themes#catppuccin#palette.insert)
|
||||||
|
|
||||||
|
" Fork command mode from normal mode
|
||||||
|
let g:airline#themes#catppuccin#palette.commandline = copy(g:airline#themes#catppuccin#palette.normal)
|
||||||
|
let g:airline#themes#catppuccin#palette.commandline.airline_a = [ s:C1[0], s:C1[1], s:C1[2], s:C1[3], '' ]
|
||||||
|
let g:airline#themes#catppuccin#palette.commandline.airline_b = [ s:C2[0], s:C2[1], s:C2[2], s:C2[3], '' ]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call airline#themes#catppuccin#refresh()
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
let s:c = has("nvim") == 1 ? luaeval('require("catppuccin.palettes").get_palette()') : luaeval('vim.dict(require("catppuccin.palettes").get_palette())')
|
||||||
|
|
||||||
|
let s:p = {}
|
||||||
|
|
||||||
|
let s:p.display = { 'guibg': s:c.mantle }
|
||||||
|
|
||||||
|
let s:p.input = s:p.display
|
||||||
|
let s:p.indicator = { 'guifg': s:c.subtext1, 'guibg': s:c.mantle }
|
||||||
|
let s:p.spinner = { 'guifg': s:c.yellow, 'guibg': s:c.mantle, 'gui': "bold" }
|
||||||
|
let s:p.search_text = { 'guifg': s:c.text, 'guibg': s:c.mantle, 'gui': "bold" }
|
||||||
|
|
||||||
|
let s:p.preview = { 'guibg': s:c.base }
|
||||||
|
|
||||||
|
let s:p.selected = { 'guifg': s:c.sapphire, 'gui': "bold,underline" }
|
||||||
|
let s:p.current_selection = { 'guibg': s:c.surface0, 'gui': "bold" }
|
||||||
|
|
||||||
|
let s:p.selected_sign = { 'guifg': s:c.red }
|
||||||
|
let s:p.current_selection_sign = copy(s:p.selected_sign)
|
||||||
|
|
||||||
|
let g:clap#themes#catppuccin#palette = s:p
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
let s:c = has("nvim") == 1 ? luaeval('require("catppuccin.palettes").get_palette()') : luaeval('vim.dict(require("catppuccin.palettes").get_palette())')
|
||||||
|
|
||||||
|
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
|
||||||
|
let s:p.normal.left = [ [ s:c.mantle, s:c.blue ], [ s:c.blue, s:c.base ] ]
|
||||||
|
let s:p.normal.middle = [ [ s:c.blue, s:c.mantle ] ]
|
||||||
|
let s:p.normal.right = [ [ s:c.overlay0, s:c.base ], [ s:c.blue, s:c.surface0 ] ]
|
||||||
|
let s:p.insert.left = [ [ s:c.mantle, s:c.teal ], [ s:c.blue, s:c.base ] ]
|
||||||
|
let s:p.visual.left = [ [ s:c.mantle, s:c.mauve ], [ s:c.blue, s:c.base ] ]
|
||||||
|
let s:p.replace.left = [ [ s:c.mantle, s:c.red ], [ s:c.blue, s:c.base ] ]
|
||||||
|
|
||||||
|
let s:p.inactive.left = [ [ s:c.blue, s:c.base ], [ s:c.overlay0, s:c.base ] ]
|
||||||
|
let s:p.inactive.middle = [ [ s:c.surface1, s:c.base ] ]
|
||||||
|
let s:p.inactive.right = [ [ s:c.surface1, s:c.base ], [ s:c.overlay0, s:c.base ] ]
|
||||||
|
|
||||||
|
let s:p.tabline.left = [ [ s:c.overlay0, s:c.base ], [ s:c.overlay0, s:c.base ] ]
|
||||||
|
let s:p.tabline.tabsel = [ [ s:c.blue, s:c.surface1 ], [ s:c.overlay0, s:c.base] ]
|
||||||
|
let s:p.tabline.middle = [ [ s:c.surface1, s:c.base ] ]
|
||||||
|
let s:p.tabline.right = copy(s:p.inactive.right)
|
||||||
|
let s:p.normal.error = [ [ s:c.mantle, s:c.red ] ]
|
||||||
|
let s:p.normal.warning = [ [ s:c.mantle, s:c.yellow ] ]
|
||||||
|
|
||||||
|
let g:lightline#colorscheme#catppuccin#palette = lightline#colorscheme#fill(s:p)
|
||||||
@ -0,0 +1 @@
|
|||||||
|
lua require("catppuccin").load "frappe"
|
||||||
@ -0,0 +1 @@
|
|||||||
|
lua require("catppuccin").load "latte"
|
||||||
@ -0,0 +1 @@
|
|||||||
|
lua require("catppuccin").load "macchiato"
|
||||||
@ -0,0 +1 @@
|
|||||||
|
lua require("catppuccin").load "mocha"
|
||||||
@ -0,0 +1 @@
|
|||||||
|
lua require("catppuccin").load()
|
||||||
@ -0,0 +1,918 @@
|
|||||||
|
*catppuccin.txt* Soothing pastel theme for NeoVim
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Table of Contents *catppuccin-table-of-contents*
|
||||||
|
|
||||||
|
1. Features |catppuccin-features|
|
||||||
|
2. Installation |catppuccin-installation|
|
||||||
|
3. Usage |catppuccin-usage|
|
||||||
|
4. Configuration |catppuccin-configuration|
|
||||||
|
5. Customize highlights |catppuccin-customize-highlights|
|
||||||
|
- Get catppuccin colors|catppuccin-customize-highlights-get-catppuccin-colors|
|
||||||
|
- Overwriting colors |catppuccin-customize-highlights-overwriting-colors|
|
||||||
|
- Overwriting highlight groups|catppuccin-customize-highlights-overwriting-highlight-groups|
|
||||||
|
6. Integrations |catppuccin-integrations|
|
||||||
|
7. Compile |catppuccin-compile|
|
||||||
|
8. FAQ |catppuccin-faq|
|
||||||
|
- Wrong treesitter highlights |catppuccin-faq-wrong-treesitter-highlights|
|
||||||
|
- Colors doesn’t match preview screenshots|catppuccin-faq-colors-doesn’t-match-preview-screenshots|
|
||||||
|
9. Thanks to |catppuccin-thanks-to|
|
||||||
|
10. Links |catppuccin-links|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
1. Features *catppuccin-features*
|
||||||
|
|
||||||
|
- Supports both vim and neovim (Requires neovim <https://github.com/neovim/neovim/> >= 0.8 or vim <https://github.com/vim/vim> >= 9 compiled with lua <https://github.com/lua/lua> >= 5.1)
|
||||||
|
- Highly configurable with 4 different flavours and ability to create your own! <https://github.com/catppuccin/nvim/discussions/323>
|
||||||
|
- Compile <https://github.com/catppuccin/nvim#Compile> user config for fastest startuptime <https://www.reddit.com/r/neovim/comments/xxfpt3/catppuccinnvim_now_startup_in_1ms/>
|
||||||
|
- Integrations with lsp, treesitter and a bunch of plugins <https://github.com/catppuccin/nvim#integrations>
|
||||||
|
- Supports for many other applications <https://github.com/catppuccin/catppuccin>
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
2. Installation *catppuccin-installation*
|
||||||
|
|
||||||
|
lazy.nvim <https://github.com/folke/lazy.nvim>
|
||||||
|
|
||||||
|
>lua
|
||||||
|
{ "catppuccin/nvim", name = "catppuccin", priority = 1000 }
|
||||||
|
<
|
||||||
|
|
||||||
|
packer.nvim <https://github.com/wbthomason/packer.nvim>
|
||||||
|
|
||||||
|
>lua
|
||||||
|
use { "catppuccin/nvim", as = "catppuccin" }
|
||||||
|
<
|
||||||
|
|
||||||
|
vim-plug <https://github.com/junegunn/vim-plug>
|
||||||
|
|
||||||
|
>vim
|
||||||
|
Plug 'catppuccin/nvim', { 'as': 'catppuccin' }
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
3. Usage *catppuccin-usage*
|
||||||
|
|
||||||
|
>vim
|
||||||
|
colorscheme catppuccin " catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha
|
||||||
|
<
|
||||||
|
|
||||||
|
>lua
|
||||||
|
vim.cmd.colorscheme "catppuccin"
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
4. Configuration *catppuccin-configuration*
|
||||||
|
|
||||||
|
There is no need to call `setup` if you don’t want to change the default
|
||||||
|
options and settings.
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("catppuccin").setup({
|
||||||
|
flavour = "auto", -- latte, frappe, macchiato, mocha
|
||||||
|
background = { -- :h background
|
||||||
|
light = "latte",
|
||||||
|
dark = "mocha",
|
||||||
|
},
|
||||||
|
transparent_background = false, -- disables setting the background color.
|
||||||
|
show_end_of_buffer = false, -- shows the '~' characters after the end of buffers
|
||||||
|
term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`)
|
||||||
|
dim_inactive = {
|
||||||
|
enabled = false, -- dims the background color of inactive window
|
||||||
|
shade = "dark",
|
||||||
|
percentage = 0.15, -- percentage of the shade to apply to the inactive window
|
||||||
|
},
|
||||||
|
no_italic = false, -- Force no italic
|
||||||
|
no_bold = false, -- Force no bold
|
||||||
|
no_underline = false, -- Force no underline
|
||||||
|
styles = { -- Handles the styles of general hi groups (see `:h highlight-args`):
|
||||||
|
comments = { "italic" }, -- Change the style of comments
|
||||||
|
conditionals = { "italic" },
|
||||||
|
loops = {},
|
||||||
|
functions = {},
|
||||||
|
keywords = {},
|
||||||
|
strings = {},
|
||||||
|
variables = {},
|
||||||
|
numbers = {},
|
||||||
|
booleans = {},
|
||||||
|
properties = {},
|
||||||
|
types = {},
|
||||||
|
operators = {},
|
||||||
|
-- miscs = {}, -- Uncomment to turn off hard-coded styles
|
||||||
|
},
|
||||||
|
color_overrides = {},
|
||||||
|
custom_highlights = {},
|
||||||
|
default_integrations = true,
|
||||||
|
integrations = {
|
||||||
|
cmp = true,
|
||||||
|
gitsigns = true,
|
||||||
|
nvimtree = true,
|
||||||
|
treesitter = true,
|
||||||
|
notify = false,
|
||||||
|
mini = {
|
||||||
|
enabled = true,
|
||||||
|
indentscope_color = "",
|
||||||
|
},
|
||||||
|
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- setup must be called before loading
|
||||||
|
vim.cmd.colorscheme "catppuccin"
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
5. Customize highlights *catppuccin-customize-highlights*
|
||||||
|
|
||||||
|
|
||||||
|
GET CATPPUCCIN COLORS *catppuccin-customize-highlights-get-catppuccin-colors*
|
||||||
|
|
||||||
|
>lua
|
||||||
|
local latte = require("catppuccin.palettes").get_palette "latte"
|
||||||
|
local frappe = require("catppuccin.palettes").get_palette "frappe"
|
||||||
|
local macchiato = require("catppuccin.palettes").get_palette "macchiato"
|
||||||
|
local mocha = require("catppuccin.palettes").get_palette "mocha"
|
||||||
|
<
|
||||||
|
|
||||||
|
Returns a table where the key is the name of the color and the value is its hex
|
||||||
|
value corresponding to each flavour.
|
||||||
|
|
||||||
|
|
||||||
|
OVERWRITING COLORS *catppuccin-customize-highlights-overwriting-colors*
|
||||||
|
|
||||||
|
Colors can be overwritten using `color_overrides` in the setting, checkout
|
||||||
|
https://github.com/catppuccin/nvim/discussions/323 for inspirations:
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("catppuccin").setup {
|
||||||
|
color_overrides = {
|
||||||
|
all = {
|
||||||
|
text = "#ffffff",
|
||||||
|
},
|
||||||
|
latte = {
|
||||||
|
base = "#ff0000",
|
||||||
|
mantle = "#242424",
|
||||||
|
crust = "#474747",
|
||||||
|
},
|
||||||
|
frappe = {},
|
||||||
|
macchiato = {},
|
||||||
|
mocha = {},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
[!Note] For more information check out our style-guide
|
||||||
|
<https://github.com/catppuccin/catppuccin/blob/main/docs/style-guide.md>
|
||||||
|
|
||||||
|
OVERWRITING HIGHLIGHT GROUPS*catppuccin-customize-highlights-overwriting-highlight-groups*
|
||||||
|
|
||||||
|
Global highlight groups can be overwritten in the setting, for example:
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("catppuccin").setup {
|
||||||
|
custom_highlights = function(colors)
|
||||||
|
return {
|
||||||
|
Comment = { fg = colors.flamingo },
|
||||||
|
TabLineSel = { bg = colors.pink },
|
||||||
|
CmpBorder = { fg = colors.surface2 },
|
||||||
|
Pmenu = { bg = colors.none },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
Per flavour highlight groups can also be overwritten in the setting, for
|
||||||
|
example:
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("catppuccin").setup {
|
||||||
|
highlight_overrides = {
|
||||||
|
all = function(colors)
|
||||||
|
return {
|
||||||
|
NvimTreeNormal = { fg = colors.none },
|
||||||
|
CmpBorder = { fg = "#3e4145" },
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
latte = function(latte)
|
||||||
|
return {
|
||||||
|
Normal = { fg = latte.base },
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
frappe = function(frappe)
|
||||||
|
return {
|
||||||
|
["@comment"] = { fg = frappe.surface2, style = { "italic" } },
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
macchiato = function(macchiato)
|
||||||
|
return {
|
||||||
|
LineNr = { fg = macchiato.overlay1 },
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
mocha = function(mocha)
|
||||||
|
return {
|
||||||
|
Comment = { fg = mocha.flamingo },
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
6. Integrations *catppuccin-integrations*
|
||||||
|
|
||||||
|
Catppuccin provides theme support for other plugins in the Neovim ecosystem and
|
||||||
|
extended Neovim functionality through _integrations_.
|
||||||
|
|
||||||
|
To enable/disable an integration you just need to set it to true/false, for
|
||||||
|
example:
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("catppuccin").setup({
|
||||||
|
integrations = {
|
||||||
|
cmp = true,
|
||||||
|
gitsigns = true,
|
||||||
|
nvimtree = true,
|
||||||
|
treesitter = true,
|
||||||
|
notify = false,
|
||||||
|
mini = {
|
||||||
|
enabled = true,
|
||||||
|
indentscope_color = "",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
<
|
||||||
|
|
||||||
|
Some integrations are enabled by default, you can control this behaviour with
|
||||||
|
`default_integrations` option.
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("catppuccin").setup({
|
||||||
|
default_integrations = false,
|
||||||
|
})
|
||||||
|
<
|
||||||
|
|
||||||
|
Below is a list of supported plugins and their corresponding integration
|
||||||
|
module.
|
||||||
|
|
||||||
|
|
||||||
|
[!Important] If you’d like to know which highlight groups are being affected
|
||||||
|
by catppuccin, check out this directory: `lua/catppuccin/groups/integrations/`
|
||||||
|
<https://github.com/catppuccin/nvim/tree/main/lua/catppuccin/groups/integrations>.
|
||||||
|
PluginDefaultaerial.nvim>lua
|
||||||
|
aerial = false
|
||||||
|
<
|
||||||
|
|
||||||
|
alpha-nvim>lua
|
||||||
|
alpha = true
|
||||||
|
<
|
||||||
|
|
||||||
|
barbar.nvim>lua
|
||||||
|
barbar = false
|
||||||
|
<
|
||||||
|
|
||||||
|
barbecue.nvim>lua
|
||||||
|
barbecue = {
|
||||||
|
dim_dirname = true, -- directory name is dimmed by default
|
||||||
|
bold_basename = true,
|
||||||
|
dim_context = false,
|
||||||
|
alt_background = false,
|
||||||
|
},
|
||||||
|
<
|
||||||
|
|
||||||
|
Special ~
|
||||||
|
|
||||||
|
Use this to set it up:
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("barbecue").setup {
|
||||||
|
theme = "catppuccin", -- catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
beacon.nvim>lua
|
||||||
|
beacon = false
|
||||||
|
<
|
||||||
|
|
||||||
|
bufferline.nvimSpecial ~
|
||||||
|
|
||||||
|
Update your bufferline config to use the Catppuccin components:
|
||||||
|
|
||||||
|
|
||||||
|
[!NOTE] bufferline needs to be loaded after setting up catppuccin or it will
|
||||||
|
highlight incorrectly
|
||||||
|
>lua
|
||||||
|
use "akinsho/bufferline.nvim" {
|
||||||
|
after = "catppuccin",
|
||||||
|
config = function()
|
||||||
|
require("bufferline").setup {
|
||||||
|
highlights = require("catppuccin.groups.integrations.bufferline").get()
|
||||||
|
}
|
||||||
|
end
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
Configurations are self-explanatory, see |bufferline-highlights| for detailed
|
||||||
|
explanations:
|
||||||
|
|
||||||
|
>lua
|
||||||
|
local mocha = require("catppuccin.palettes").get_palette "mocha"
|
||||||
|
bufferline.setup {
|
||||||
|
highlights = require("catppuccin.groups.integrations.bufferline").get {
|
||||||
|
styles = { "italic", "bold" },
|
||||||
|
custom = {
|
||||||
|
all = {
|
||||||
|
fill = { bg = "#000000" },
|
||||||
|
},
|
||||||
|
mocha = {
|
||||||
|
background = { fg = mocha.text },
|
||||||
|
},
|
||||||
|
latte = {
|
||||||
|
background = { fg = "#000000" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
coc.nvim>lua
|
||||||
|
coc_nvim = false
|
||||||
|
<
|
||||||
|
|
||||||
|
Special ~
|
||||||
|
|
||||||
|
Setting `enabled` to `true` enables this integration.
|
||||||
|
|
||||||
|
>lua
|
||||||
|
coc_nvim = true,
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
[!Note] coc.nvim by default link to native lsp highlight groups so config from
|
||||||
|
`native_lsp` will also apply to coc
|
||||||
|
In the inners tables you can set the style for the diagnostics, both
|
||||||
|
`virtual_text` (what you see on the side) and `underlines` (what points
|
||||||
|
directly at the thing (e.g. an error)).
|
||||||
|
|
||||||
|
>lua
|
||||||
|
native_lsp = {
|
||||||
|
enabled = true,
|
||||||
|
virtual_text = {
|
||||||
|
errors = { "italic" },
|
||||||
|
hints = { "italic" },
|
||||||
|
warnings = { "italic" },
|
||||||
|
information = { "italic" },
|
||||||
|
},
|
||||||
|
underlines = {
|
||||||
|
errors = { "underline" },
|
||||||
|
hints = { "underline" },
|
||||||
|
warnings = { "underline" },
|
||||||
|
information = { "underline" },
|
||||||
|
},
|
||||||
|
inlay_hints = {
|
||||||
|
background = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
<
|
||||||
|
|
||||||
|
colorful-winsep.nvim>lua
|
||||||
|
colorful_winsep = {
|
||||||
|
enabled = false,
|
||||||
|
color = "red",
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
dashboard-nvim>lua
|
||||||
|
dashboard = true
|
||||||
|
<
|
||||||
|
|
||||||
|
diffview.nvim>lua
|
||||||
|
diffview = false
|
||||||
|
<
|
||||||
|
|
||||||
|
dropbar.nvim>lua
|
||||||
|
dropbar = {
|
||||||
|
enabled = false,
|
||||||
|
color_mode = false, -- enable color for kind's texts, not just kind's icons
|
||||||
|
},
|
||||||
|
<
|
||||||
|
|
||||||
|
feline.nvimSpecial ~
|
||||||
|
|
||||||
|
Update your Feline config to use the Catppuccin components:
|
||||||
|
|
||||||
|
>lua
|
||||||
|
local ctp_feline = require('catppuccin.groups.integrations.feline')
|
||||||
|
|
||||||
|
ctp_feline.setup()
|
||||||
|
|
||||||
|
require("feline").setup({
|
||||||
|
components = ctp_feline.get(),
|
||||||
|
})
|
||||||
|
<
|
||||||
|
|
||||||
|
Notice that calling `setup()` is optional. You may pass a lua table in order to
|
||||||
|
change assets, settings and the colors per vim mode.
|
||||||
|
|
||||||
|
Here are the defaults:
|
||||||
|
|
||||||
|
>lua
|
||||||
|
local clrs = require("catppuccin.palettes").get_palette()
|
||||||
|
local ctp_feline = require('catppuccin.groups.integrations.feline')
|
||||||
|
local U = require "catppuccin.utils.colors"
|
||||||
|
|
||||||
|
ctp_feline.setup({
|
||||||
|
assets = {
|
||||||
|
left_separator = "",
|
||||||
|
right_separator = "",
|
||||||
|
mode_icon = "",
|
||||||
|
dir = "",
|
||||||
|
file = "",
|
||||||
|
lsp = {
|
||||||
|
server = "",
|
||||||
|
error = "",
|
||||||
|
warning = "",
|
||||||
|
info = "",
|
||||||
|
hint = "",
|
||||||
|
},
|
||||||
|
git = {
|
||||||
|
branch = "",
|
||||||
|
added = "",
|
||||||
|
changed = "",
|
||||||
|
removed = "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sett = {
|
||||||
|
text = U.vary_color({ latte = latte.base }, clrs.surface0),
|
||||||
|
bkg = U.vary_color({ latte = latte.crust }, clrs.surface0),
|
||||||
|
diffs = clrs.mauve,
|
||||||
|
extras = clrs.overlay1,
|
||||||
|
curr_file = clrs.maroon,
|
||||||
|
curr_dir = clrs.flamingo,
|
||||||
|
show_modified = true -- show if the file has been modified
|
||||||
|
},
|
||||||
|
mode_colors = {
|
||||||
|
["n"] = { "NORMAL", clrs.lavender },
|
||||||
|
["no"] = { "N-PENDING", clrs.lavender },
|
||||||
|
["i"] = { "INSERT", clrs.green },
|
||||||
|
["ic"] = { "INSERT", clrs.green },
|
||||||
|
["t"] = { "TERMINAL", clrs.green },
|
||||||
|
["v"] = { "VISUAL", clrs.flamingo },
|
||||||
|
["V"] = { "V-LINE", clrs.flamingo },
|
||||||
|
[""] = { "V-BLOCK", clrs.flamingo },
|
||||||
|
["R"] = { "REPLACE", clrs.maroon },
|
||||||
|
["Rv"] = { "V-REPLACE", clrs.maroon },
|
||||||
|
["s"] = { "SELECT", clrs.maroon },
|
||||||
|
["S"] = { "S-LINE", clrs.maroon },
|
||||||
|
[""] = { "S-BLOCK", clrs.maroon },
|
||||||
|
["c"] = { "COMMAND", clrs.peach },
|
||||||
|
["cv"] = { "COMMAND", clrs.peach },
|
||||||
|
["ce"] = { "COMMAND", clrs.peach },
|
||||||
|
["r"] = { "PROMPT", clrs.teal },
|
||||||
|
["rm"] = { "MORE", clrs.teal },
|
||||||
|
["r?"] = { "CONFIRM", clrs.mauve },
|
||||||
|
["!"] = { "SHELL", clrs.green },
|
||||||
|
},
|
||||||
|
view = {
|
||||||
|
lsp = {
|
||||||
|
progress = true, -- if true the status bar will display an lsp progress indicator
|
||||||
|
name = false, -- if true the status bar will display the lsp servers name, otherwise it will display the text "Lsp"
|
||||||
|
exclude_lsp_names = {}, -- lsp server names that should not be displayed when name is set to true
|
||||||
|
separator = "|", -- the separator used when there are multiple lsp servers
|
||||||
|
},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
[!Warning] Currently feline doesn’t officially support custom themes
|
||||||
|
<https://github.com/feline-nvim/feline.nvim/issues/302>. In order for
|
||||||
|
`:colorscheme catppuccin-<flavour>` to work you could add this autocmd as a
|
||||||
|
workaround:
|
||||||
|
>lua
|
||||||
|
vim.api.nvim_create_autocmd("ColorScheme", {
|
||||||
|
pattern = "*",
|
||||||
|
callback = function()
|
||||||
|
package.loaded["feline"] = nil
|
||||||
|
package.loaded["catppuccin.groups.integrations.feline"] = nil
|
||||||
|
require("feline").setup {
|
||||||
|
components = require("catppuccin.groups.integrations.feline").get(),
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
<
|
||||||
|
|
||||||
|
fern.vim>lua
|
||||||
|
fern = false
|
||||||
|
<
|
||||||
|
|
||||||
|
fidget.nvim>lua
|
||||||
|
fidget = false
|
||||||
|
<
|
||||||
|
|
||||||
|
Special ~
|
||||||
|
|
||||||
|
Set `notification.window.winblend` to `0`:
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("fidget").setup {
|
||||||
|
notification = {
|
||||||
|
window = {
|
||||||
|
winblend = 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- ... the rest of your fidget config
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
flash.nvim>lua
|
||||||
|
flash = true
|
||||||
|
<
|
||||||
|
|
||||||
|
gitsigns.nvim>lua
|
||||||
|
gitsigns = true
|
||||||
|
<
|
||||||
|
|
||||||
|
harpoon>lua
|
||||||
|
harpoon = false
|
||||||
|
<
|
||||||
|
|
||||||
|
headlines.nvim>lua
|
||||||
|
headlines = false
|
||||||
|
<
|
||||||
|
|
||||||
|
hop.nvim>lua
|
||||||
|
hop = false
|
||||||
|
<
|
||||||
|
|
||||||
|
indent-blankline.nvim>lua
|
||||||
|
indent_blankline = {
|
||||||
|
enabled = true,
|
||||||
|
scope_color = "", -- catppuccin color (eg. `lavender`) Default: text
|
||||||
|
colored_indent_levels = false,
|
||||||
|
},
|
||||||
|
<
|
||||||
|
|
||||||
|
Special ~
|
||||||
|
|
||||||
|
`colored_indent_levels` enables char highlights per indent level. Follow the
|
||||||
|
instructions here
|
||||||
|
<https://github.com/lukas-reineke/indent-blankline.nvim#multiple-indent-colors>
|
||||||
|
to set the latter up.
|
||||||
|
|
||||||
|
leap.nvim>lua
|
||||||
|
leap = false
|
||||||
|
<
|
||||||
|
|
||||||
|
lightline.vimSpecial ~
|
||||||
|
|
||||||
|
>vim
|
||||||
|
let g:lightline = {'colorscheme': 'catppuccin'}
|
||||||
|
<
|
||||||
|
|
||||||
|
lightspeed.nvim>lua
|
||||||
|
lightspeed = false
|
||||||
|
<
|
||||||
|
|
||||||
|
lspsaga.nvim>lua
|
||||||
|
lsp_saga = false
|
||||||
|
<
|
||||||
|
|
||||||
|
Special ~
|
||||||
|
|
||||||
|
For custom Lsp Kind Icon and Color
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("lspsaga").setup {
|
||||||
|
ui = {
|
||||||
|
kind = require("catppuccin.groups.integrations.lsp_saga").custom_kind(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
lualine.nvimSpecial ~
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require('lualine').setup {
|
||||||
|
options = {
|
||||||
|
theme = "catppuccin"
|
||||||
|
-- ... the rest of your lualine config
|
||||||
|
}
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
markdown>lua
|
||||||
|
markdown = true
|
||||||
|
<
|
||||||
|
|
||||||
|
mason.nvim>lua
|
||||||
|
mason = false
|
||||||
|
<
|
||||||
|
|
||||||
|
mini.nvim>lua
|
||||||
|
mini = {
|
||||||
|
enabled = true,
|
||||||
|
indentscope_color = "", -- catppuccin color (eg. `lavender`) Default: text
|
||||||
|
},
|
||||||
|
<
|
||||||
|
|
||||||
|
neo-tree.nvim>lua
|
||||||
|
neotree = false
|
||||||
|
<
|
||||||
|
|
||||||
|
neogit>lua
|
||||||
|
neogit = true
|
||||||
|
<
|
||||||
|
|
||||||
|
neotest>lua
|
||||||
|
neotest = false
|
||||||
|
<
|
||||||
|
|
||||||
|
noice.nvim>lua
|
||||||
|
noice = false
|
||||||
|
<
|
||||||
|
|
||||||
|
NormalNvim>lua
|
||||||
|
NormalNvim = false
|
||||||
|
<
|
||||||
|
|
||||||
|
notifier.nvim>lua
|
||||||
|
notifier = false
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-cmp>lua
|
||||||
|
cmp = true
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-dap>lua
|
||||||
|
dap = true
|
||||||
|
<
|
||||||
|
|
||||||
|
Special ~
|
||||||
|
|
||||||
|
>lua
|
||||||
|
local sign = vim.fn.sign_define
|
||||||
|
|
||||||
|
sign("DapBreakpoint", { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = ""})
|
||||||
|
sign("DapBreakpointCondition", { text = "●", texthl = "DapBreakpointCondition", linehl = "", numhl = ""})
|
||||||
|
sign("DapLogPoint", { text = "◆", texthl = "DapLogPoint", linehl = "", numhl = ""})
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-dap-ui>lua
|
||||||
|
dap_ui = true
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-lspconfig>lua
|
||||||
|
native_lsp = {
|
||||||
|
enabled = true,
|
||||||
|
virtual_text = {
|
||||||
|
errors = { "italic" },
|
||||||
|
hints = { "italic" },
|
||||||
|
warnings = { "italic" },
|
||||||
|
information = { "italic" },
|
||||||
|
},
|
||||||
|
underlines = {
|
||||||
|
errors = { "underline" },
|
||||||
|
hints = { "underline" },
|
||||||
|
warnings = { "underline" },
|
||||||
|
information = { "underline" },
|
||||||
|
},
|
||||||
|
inlay_hints = {
|
||||||
|
background = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
<
|
||||||
|
|
||||||
|
Special ~
|
||||||
|
|
||||||
|
In the inners tables you can set the style for the diagnostics, both
|
||||||
|
`virtual_text` (what you see on the side) and `underlines` (what points
|
||||||
|
directly at the thing (e.g. an error)).
|
||||||
|
|
||||||
|
navic>lua
|
||||||
|
navic = {
|
||||||
|
enabled = false,
|
||||||
|
custom_bg = "NONE", -- "lualine" will set background to mantle
|
||||||
|
},
|
||||||
|
<
|
||||||
|
|
||||||
|
Special ~
|
||||||
|
|
||||||
|
>lua
|
||||||
|
-- You NEED to enable highlight in nvim-navic setting or it won't work
|
||||||
|
require("nvim-navic").setup {
|
||||||
|
highlight = true
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-notify>lua
|
||||||
|
notify = false
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-semantic-tokens>lua
|
||||||
|
semantic_tokens = true
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-tree.lua>lua
|
||||||
|
nvimtree = true
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-treesitter-context>lua
|
||||||
|
treesitter_context = true
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-treesitter>lua
|
||||||
|
treesitter = true
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-ts-rainbow2>lua
|
||||||
|
ts_rainbow2 = false
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-ts-rainbow>lua
|
||||||
|
ts_rainbow = false
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-ufo>lua
|
||||||
|
ufo = true
|
||||||
|
<
|
||||||
|
|
||||||
|
nvim-window-picker>lua
|
||||||
|
window_picker = false
|
||||||
|
<
|
||||||
|
|
||||||
|
octo.nvim>lua
|
||||||
|
octo = false
|
||||||
|
<
|
||||||
|
|
||||||
|
overseer.nvim>lua
|
||||||
|
overseer = false
|
||||||
|
<
|
||||||
|
|
||||||
|
pounce.nvim>lua
|
||||||
|
pounce = false
|
||||||
|
<
|
||||||
|
|
||||||
|
rainbow-delimiters.nvim>lua
|
||||||
|
rainbow_delimiters = true
|
||||||
|
<
|
||||||
|
|
||||||
|
reactive.nvimSpecial ~
|
||||||
|
|
||||||
|
There’re 2 available presets (`cursor` and `cursorline`) for every flavour.
|
||||||
|
|
||||||
|
Here is how you can use them.
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require('reactive').setup {
|
||||||
|
load = { 'catppuccin-mocha-cursor', 'catppuccin-mocha-cursorline' }
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
To use another flavour just replace `mocha` with the one you want to use.
|
||||||
|
|
||||||
|
symbols-outline.nvim
|
||||||
|
[!NOTE] This plugin has been archived by the author, consider using
|
||||||
|
outline.nvim <https://github.com/hedyhli/outline.nvim>
|
||||||
|
>lua
|
||||||
|
symbols_outline = false
|
||||||
|
<
|
||||||
|
|
||||||
|
telekasten.nvim>lua
|
||||||
|
telekasten = false
|
||||||
|
<
|
||||||
|
|
||||||
|
telescope.nvim>lua
|
||||||
|
telescope = {
|
||||||
|
enabled = true,
|
||||||
|
-- style = "nvchad"
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
trouble.nvim>lua
|
||||||
|
lsp_trouble = false
|
||||||
|
<
|
||||||
|
|
||||||
|
vim-airlineSpecial ~
|
||||||
|
|
||||||
|
>vim
|
||||||
|
let g:airline_theme = 'catppuccin'
|
||||||
|
<
|
||||||
|
|
||||||
|
vim-clapSpecial ~
|
||||||
|
|
||||||
|
Use this to set it up:
|
||||||
|
|
||||||
|
>vim
|
||||||
|
let g:clap_theme = 'catppuccin'
|
||||||
|
<
|
||||||
|
|
||||||
|
vim-gitgutter>lua
|
||||||
|
gitgutter = false
|
||||||
|
<
|
||||||
|
|
||||||
|
vim-illuminate>lua
|
||||||
|
illuminate = {
|
||||||
|
enabled = true,
|
||||||
|
lsp = false
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
vim-sandwich>lua
|
||||||
|
sandwich = false
|
||||||
|
<
|
||||||
|
|
||||||
|
vim-sneak>lua
|
||||||
|
vim_sneak = false
|
||||||
|
<
|
||||||
|
|
||||||
|
vimwiki>lua
|
||||||
|
vimwiki = false
|
||||||
|
<
|
||||||
|
|
||||||
|
which-key.nvim>lua
|
||||||
|
which_key = false
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
7. Compile *catppuccin-compile*
|
||||||
|
|
||||||
|
|
||||||
|
**Important** As of 7/10/2022, catppuccin should be able to automatically
|
||||||
|
recompile when the setup table changed.
|
||||||
|
Catppuccin is a highly customizable and configurable colorscheme. This does
|
||||||
|
however come at the cost of complexity and execution time. Catppuccin can pre
|
||||||
|
compute the results of your configuration and store the results in a compiled
|
||||||
|
lua file. We use these precached values to set it’s highlights.
|
||||||
|
|
||||||
|
By default catppuccin writes the compiled results into the system’s cache
|
||||||
|
directory. You can change the cache dir using:
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("catppuccin").setup({ -- Note: On windows we replace `/` with `\` by default
|
||||||
|
compile_path = vim.fn.stdpath "cache" .. "/catppuccin"
|
||||||
|
})
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
8. FAQ *catppuccin-faq*
|
||||||
|
|
||||||
|
|
||||||
|
WRONG TREESITTER HIGHLIGHTS *catppuccin-faq-wrong-treesitter-highlights*
|
||||||
|
|
||||||
|
Please disable `additional_vim_regex_highlighting`
|
||||||
|
|
||||||
|
>lua
|
||||||
|
require("nvim-treesitter.configs").setup {
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
additional_vim_regex_highlighting = false
|
||||||
|
},
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
COLORS DOESN’T MATCH PREVIEW SCREENSHOTS*catppuccin-faq-colors-doesn’t-match-preview-screenshots*
|
||||||
|
|
||||||
|
Catppuccin requires true color support AKA terminals support the full range of
|
||||||
|
16 million colors
|
||||||
|
|
||||||
|
- Supported: iterm2 (macOS), kitty, wezterm, alacritty, tmux, …
|
||||||
|
|
||||||
|
Full list of support terminals can be found here:
|
||||||
|
<https://github.com/termstandard/colors#truecolor-support-in-output-devices>
|
||||||
|
|
||||||
|
- Unsupported terminal: Terminal.app (macOS), Terminus, Terminology, …
|
||||||
|
|
||||||
|
Full list of Unsupported terminals can be found here:
|
||||||
|
<https://github.com/termstandard/colors#not-supporting-truecolor>
|
||||||
|
|
||||||
|
|
||||||
|
FOR TMUX USERS ~
|
||||||
|
|
||||||
|
- Enable true color support <https://gist.github.com/andersevenrud/015e61af2fd264371032763d4ed965b6> to fix the following abnormal colors <https://github.com/catppuccin/nvim/issues/415>:
|
||||||
|
|
||||||
|
- Enable italic font support <https://gist.github.com/gyribeiro/4192af1aced7a1b555df06bd3781a722> to fix the following incorrect if, then, else, end highlights <https://github.com/catppuccin/nvim/issues/428>:
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
9. Thanks to *catppuccin-thanks-to*
|
||||||
|
|
||||||
|
- Pocco81 <https://github.com/Pocco81>
|
||||||
|
- nullchilly <https://github.com/nullchilly>
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
10. Links *catppuccin-links*
|
||||||
|
|
||||||
|
1. *image*: https://user-images.githubusercontent.com/1941785/220280749-c3ab52fb-9b8a-4f04-ab98-f8c1bb41f84b.png
|
||||||
|
2. *image*: https://user-images.githubusercontent.com/13246770/224011118-dcf0f567-650a-4eb2-8be6-0af5cf435501.png
|
||||||
|
|
||||||
|
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>
|
||||||
|
|
||||||
|
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||||
@ -0,0 +1 @@
|
|||||||
|
return require "catppuccin.utils.barbecue" "frappe"
|
||||||
@ -0,0 +1 @@
|
|||||||
|
return require "catppuccin.utils.barbecue" "latte"
|
||||||
@ -0,0 +1 @@
|
|||||||
|
return require "catppuccin.utils.barbecue" "macchiato"
|
||||||
@ -0,0 +1 @@
|
|||||||
|
return require "catppuccin.utils.barbecue" "mocha"
|
||||||
@ -0,0 +1 @@
|
|||||||
|
return require "catppuccin.utils.barbecue"()
|
||||||
@ -0,0 +1,77 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
ColorColumn = { bg = C.surface0 }, -- used for the columns set with 'colorcolumn'
|
||||||
|
Conceal = { fg = C.overlay1 }, -- placeholder characters substituted for concealed text (see 'conceallevel')
|
||||||
|
Cursor = { fg = C.base, bg = C.text }, -- character under the cursor
|
||||||
|
lCursor = { fg = C.base, bg = C.text }, -- the character under the cursor when |language-mapping| is used (see 'guicursor')
|
||||||
|
CursorIM = { fg = C.base, bg = C.text }, -- like Cursor, but used when in IME mode |CursorIM|
|
||||||
|
CursorColumn = { bg = C.mantle }, -- Screen-column at the cursor, when 'cursorcolumn' is set.
|
||||||
|
CursorLine = {
|
||||||
|
bg = U.vary_color({ latte = U.lighten(C.mantle, 0.70, C.base) }, U.darken(C.surface0, 0.64, C.base)),
|
||||||
|
}, -- Screen-line at the cursor, when 'cursorline' is set. Low-priority if forecrust (ctermfg OR guifg) is not set.
|
||||||
|
Directory = { fg = C.blue }, -- directory names (and other special names in listings)
|
||||||
|
EndOfBuffer = { fg = O.show_end_of_buffer and C.surface1 or C.base }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|.
|
||||||
|
ErrorMsg = { fg = C.red, style = { "bold", "italic" } }, -- error messages on the command line
|
||||||
|
VertSplit = { fg = O.transparent_background and C.surface1 or C.crust }, -- the column separating vertically split windows
|
||||||
|
Folded = { fg = C.blue, bg = O.transparent_background and C.none or C.surface1 }, -- line used for closed folds
|
||||||
|
FoldColumn = { fg = C.overlay0 }, -- 'foldcolumn'
|
||||||
|
SignColumn = { fg = C.surface1 }, -- column where |signs| are displayed
|
||||||
|
SignColumnSB = { bg = C.crust, fg = C.surface1 }, -- column where |signs| are displayed
|
||||||
|
Substitute = { bg = C.surface1, fg = U.vary_color({ latte = C.red }, C.pink) }, -- |:substitute| replacement text highlighting
|
||||||
|
LineNr = { fg = C.surface1 }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
|
||||||
|
CursorLineNr = { fg = C.lavender }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line. highlights the number in numberline.
|
||||||
|
MatchParen = { fg = C.peach, bg = C.surface1, style = { "bold" } }, -- The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt|
|
||||||
|
ModeMsg = { fg = C.text, style = { "bold" } }, -- 'showmode' message (e.g., "-- INSERT -- ")
|
||||||
|
-- MsgArea = { fg = C.text }, -- Area for messages and cmdline, don't set this highlight because of https://github.com/neovim/neovim/issues/17832
|
||||||
|
MsgSeparator = {}, -- Separator for scrolled messages, `msgsep` flag of 'display'
|
||||||
|
MoreMsg = { fg = C.blue }, -- |more-prompt|
|
||||||
|
NonText = { fg = C.overlay0 }, -- '@' at the end of the window, characters from 'showbreak' and other characters that do not really exist in the text (e.g., ">" displayed when a double-wide character doesn't fit at the end of the line). See also |hl-EndOfBuffer|.
|
||||||
|
Normal = { fg = C.text, bg = O.transparent_background and C.none or C.base }, -- normal text
|
||||||
|
NormalNC = {
|
||||||
|
fg = C.text,
|
||||||
|
bg = (O.transparent_background and O.dim_inactive.enabled and C.dim)
|
||||||
|
or (O.dim_inactive.enabled and C.dim)
|
||||||
|
or (O.transparent_background and C.none)
|
||||||
|
or C.base,
|
||||||
|
}, -- normal text in non-current windows
|
||||||
|
NormalSB = { fg = C.text, bg = C.crust }, -- normal text in non-current windows
|
||||||
|
NormalFloat = { fg = C.text, bg = (O.transparent_background and vim.o.winblend == 0) and C.none or C.mantle }, -- Normal text in floating windows.
|
||||||
|
FloatBorder = { fg = C.blue },
|
||||||
|
FloatTitle = { fg = C.subtext0 }, -- Title of floating windows
|
||||||
|
Pmenu = {
|
||||||
|
bg = (O.transparent_background and vim.o.pumblend == 0) and C.none or U.darken(C.surface0, 0.8, C.crust),
|
||||||
|
fg = C.overlay2,
|
||||||
|
}, -- Popup menu: normal item.
|
||||||
|
PmenuSel = { bg = C.surface1, style = { "bold" } }, -- Popup menu: selected item.
|
||||||
|
PmenuSbar = { bg = C.surface1 }, -- Popup menu: scrollbar.
|
||||||
|
PmenuThumb = { bg = C.overlay0 }, -- Popup menu: Thumb of the scrollbar.
|
||||||
|
Question = { fg = C.blue }, -- |hit-enter| prompt and yes/no questions
|
||||||
|
QuickFixLine = { bg = C.surface1, style = { "bold" } }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there.
|
||||||
|
Search = { bg = U.darken(C.sky, 0.30, C.base), fg = C.text }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
|
||||||
|
IncSearch = { bg = U.darken(C.sky, 0.90, C.base), fg = C.mantle }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
|
||||||
|
CurSearch = { bg = C.red, fg = C.mantle }, -- 'cursearch' highlighting: highlights the current search you're on differently
|
||||||
|
SpecialKey = { link = "NonText" }, -- Unprintable characters: text displayed differently from what it really is. But not 'listchars' textspace. |hl-Whitespace|
|
||||||
|
SpellBad = { sp = C.red, style = { "undercurl" } }, -- Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise.
|
||||||
|
SpellCap = { sp = C.yellow, style = { "undercurl" } }, -- Word that should start with a capital. |spell| Combined with the highlighting used otherwise.
|
||||||
|
SpellLocal = { sp = C.blue, style = { "undercurl" } }, -- Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise.
|
||||||
|
SpellRare = { sp = C.green, style = { "undercurl" } }, -- Word that is recognized by the spellchecker as one that is hardly ever used. |spell| Combined with the highlighting used otherwise.
|
||||||
|
StatusLine = { fg = C.text, bg = O.transparent_background and C.none or C.mantle }, -- status line of current window
|
||||||
|
StatusLineNC = { fg = C.surface1, bg = O.transparent_background and C.none or C.mantle }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window.
|
||||||
|
TabLine = { bg = C.mantle, fg = C.surface1 }, -- tab pages line, not active tab page label
|
||||||
|
TabLineFill = {}, -- tab pages line, where there are no labels
|
||||||
|
TabLineSel = { fg = C.green, bg = C.surface1 }, -- tab pages line, active tab page label
|
||||||
|
Title = { fg = C.blue, style = { "bold" } }, -- titles for output from ":set all", ":autocmd" etc.
|
||||||
|
Visual = { bg = C.surface1, style = { "bold" } }, -- Visual mode selection
|
||||||
|
VisualNOS = { bg = C.surface1, style = { "bold" } }, -- Visual mode selection when vim is "Not Owning the Selection".
|
||||||
|
WarningMsg = { fg = C.yellow }, -- warning messages
|
||||||
|
Whitespace = { fg = C.surface1 }, -- "nbsp", "space", "tab" and "trail" in 'listchars'
|
||||||
|
WildMenu = { bg = C.overlay0 }, -- current match in 'wildmenu' completion
|
||||||
|
WinBar = { fg = C.rosewater },
|
||||||
|
WinBarNC = { link = "WinBar" },
|
||||||
|
WinSeparator = { fg = O.transparent_background and C.surface1 or C.crust },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
MarkdownTask = { fg = C.teal, style = { "bold" } },
|
||||||
|
MarkdownTodo = { fg = C.flamingo, style = { "bold" } },
|
||||||
|
MarkdownNote = { fg = C.red, style = { "bold" } },
|
||||||
|
MarkdownSee = { fg = C.blue, style = { "bold" } },
|
||||||
|
MarkdownCheck = { fg = C.green, style = { "bold" } },
|
||||||
|
MarkdownURL = { fg = C.lavender, style = { "bold" } },
|
||||||
|
MarkdownExample = { fg = C.mauve, style = { "bold" } },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
AerialLine = { fg = C.yellow, bg = C.none },
|
||||||
|
AerialGuide = { fg = C.overlay2 },
|
||||||
|
AerialBooleanIcon = { link = "@boolean" },
|
||||||
|
AerialClassIcon = { link = "@type" },
|
||||||
|
AerialConstantIcon = { link = "@constant" },
|
||||||
|
AerialConstructorIcon = { link = "@constructor" },
|
||||||
|
AerialFieldIcon = { link = "@field" },
|
||||||
|
AerialFunctionIcon = { link = "@function" },
|
||||||
|
AerialMethodIcon = { link = "@method" },
|
||||||
|
AerialNamespaceIcon = { link = "@namespace" },
|
||||||
|
AerialNumberIcon = { link = "@number" },
|
||||||
|
AerialOperatorIcon = { link = "@operator" },
|
||||||
|
AerialTypeParameterIcon = { link = "@type" },
|
||||||
|
AerialPropertyIcon = { link = "@property" },
|
||||||
|
AerialStringIcon = { link = "@string" },
|
||||||
|
AerialVariableIcon = { link = "@constant" },
|
||||||
|
AerialEnumMemberIcon = { link = "@field" },
|
||||||
|
AerialEnumIcon = { link = "@type" },
|
||||||
|
AerialFileIcon = { link = "@text.uri" },
|
||||||
|
AerialModuleIcon = { link = "@namespace" },
|
||||||
|
AerialPackageIcon = { link = "@namespace" },
|
||||||
|
AerialInterfaceIcon = { link = "@type" },
|
||||||
|
AerialStructIcon = { link = "@type" },
|
||||||
|
AerialEventIcon = { link = "@type" },
|
||||||
|
AerialArrayIcon = { link = "@constant" },
|
||||||
|
AerialObjectIcon = { link = "@type" },
|
||||||
|
AerialKeyIcon = { link = "@type" },
|
||||||
|
AerialNullIcon = { link = "@type" },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
AlphaShortcut = { fg = C.green },
|
||||||
|
AlphaHeader = { fg = C.blue },
|
||||||
|
AlphaHeaderLabel = { fg = C.peach },
|
||||||
|
AlphaButtons = { fg = C.lavender },
|
||||||
|
AlphaFooter = { fg = C.yellow, style = { "italic" } },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
BufferCurrent = { bg = C.surface1, fg = C.text },
|
||||||
|
BufferCurrentIndex = { bg = C.surface1, fg = C.blue },
|
||||||
|
BufferCurrentMod = { bg = C.surface1, fg = C.yellow },
|
||||||
|
BufferCurrentSign = { bg = C.surface1, fg = C.blue },
|
||||||
|
BufferCurrentTarget = { bg = C.surface1, fg = C.red },
|
||||||
|
BufferVisible = { bg = C.mantle, fg = C.text },
|
||||||
|
BufferVisibleIndex = { bg = C.mantle, fg = C.blue },
|
||||||
|
BufferVisibleMod = { bg = C.mantle, fg = C.yellow },
|
||||||
|
BufferVisibleSign = { bg = C.mantle, fg = C.blue },
|
||||||
|
BufferVisibleTarget = { bg = C.mantle, fg = C.red },
|
||||||
|
BufferInactive = { bg = C.mantle, fg = C.overlay0 },
|
||||||
|
BufferInactiveIndex = { bg = C.mantle, fg = C.overlay0 },
|
||||||
|
BufferInactiveMod = { bg = C.mantle, fg = C.yellow },
|
||||||
|
BufferInactiveSign = { bg = C.mantle, fg = C.blue },
|
||||||
|
BufferInactiveTarget = { bg = C.mantle, fg = C.red },
|
||||||
|
BufferTabpages = { bg = C.mantle, fg = C.none },
|
||||||
|
BufferTabpage = { bg = C.mantle, fg = C.blue },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
Beacon = { bg = C.blue },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,117 @@
|
|||||||
|
local M = {}
|
||||||
|
local ctp = require "catppuccin"
|
||||||
|
local O = ctp.options
|
||||||
|
|
||||||
|
function M.get(user_config)
|
||||||
|
user_config = user_config or {}
|
||||||
|
-- Backward compatibility
|
||||||
|
if O.integrations.bufferline then return {} end
|
||||||
|
return function()
|
||||||
|
local C = require("catppuccin.palettes").get_palette()
|
||||||
|
local transparent_background = O.transparent_background
|
||||||
|
local bg_highlight = (transparent_background and O.dim_inactive.enabled and C.dim)
|
||||||
|
or (transparent_background and "NONE")
|
||||||
|
or (O.dim_inactive.enabled and C.dim)
|
||||||
|
or C.crust
|
||||||
|
|
||||||
|
local active_bg = transparent_background and "NONE" or C.base
|
||||||
|
local inactive_bg = transparent_background and "NONE" or C.mantle
|
||||||
|
|
||||||
|
local separator_fg = O.transparent_background and C.surface1 or C.crust
|
||||||
|
|
||||||
|
local styles = user_config.styles or { "bold", "italic" }
|
||||||
|
|
||||||
|
local highlights = {
|
||||||
|
-- buffers
|
||||||
|
background = { bg = inactive_bg },
|
||||||
|
buffer_visible = { fg = C.surface1, bg = inactive_bg },
|
||||||
|
buffer_selected = { fg = C.text, bg = active_bg, style = styles }, -- current
|
||||||
|
-- Duplicate
|
||||||
|
duplicate_selected = { fg = C.text, bg = active_bg, style = styles },
|
||||||
|
duplicate_visible = { fg = C.surface1, bg = inactive_bg, style = styles },
|
||||||
|
duplicate = { fg = C.surface1, bg = inactive_bg, style = styles },
|
||||||
|
-- tabs
|
||||||
|
tab = { fg = C.surface1, bg = inactive_bg },
|
||||||
|
tab_selected = { fg = C.sky, bg = active_bg, bold = true },
|
||||||
|
tab_separator = { fg = separator_fg, bg = inactive_bg },
|
||||||
|
tab_separator_selected = { fg = separator_fg, bg = active_bg },
|
||||||
|
|
||||||
|
tab_close = { fg = C.red, bg = inactive_bg },
|
||||||
|
indicator_selected = { fg = C.peach, bg = active_bg, style = styles },
|
||||||
|
-- separators
|
||||||
|
separator = { fg = separator_fg, bg = inactive_bg },
|
||||||
|
separator_visible = { fg = separator_fg, bg = inactive_bg },
|
||||||
|
separator_selected = { fg = separator_fg, bg = active_bg },
|
||||||
|
offset_separator = { fg = separator_fg, bg = active_bg },
|
||||||
|
-- close buttons
|
||||||
|
close_button = { fg = C.surface1, bg = inactive_bg },
|
||||||
|
close_button_visible = { fg = C.surface1, bg = inactive_bg },
|
||||||
|
close_button_selected = { fg = C.red, bg = active_bg },
|
||||||
|
-- Empty fill
|
||||||
|
fill = { bg = bg_highlight },
|
||||||
|
-- Numbers
|
||||||
|
numbers = { fg = C.subtext0, bg = inactive_bg },
|
||||||
|
numbers_visible = { fg = C.subtext0, bg = inactive_bg },
|
||||||
|
numbers_selected = { fg = C.subtext0, bg = active_bg, style = styles },
|
||||||
|
-- Errors
|
||||||
|
error = { fg = C.red, bg = inactive_bg },
|
||||||
|
error_visible = { fg = C.red, bg = inactive_bg },
|
||||||
|
error_selected = { fg = C.red, bg = active_bg, style = styles },
|
||||||
|
error_diagnostic = { fg = C.red, bg = inactive_bg },
|
||||||
|
error_diagnostic_visible = { fg = C.red, bg = inactive_bg },
|
||||||
|
error_diagnostic_selected = { fg = C.red, bg = active_bg },
|
||||||
|
-- Warnings
|
||||||
|
warning = { fg = C.yellow, bg = inactive_bg },
|
||||||
|
warning_visible = { fg = C.yellow, bg = inactive_bg },
|
||||||
|
warning_selected = { fg = C.yellow, bg = active_bg, style = styles },
|
||||||
|
warning_diagnostic = { fg = C.yellow, bg = inactive_bg },
|
||||||
|
warning_diagnostic_visible = { fg = C.yellow, bg = inactive_bg },
|
||||||
|
warning_diagnostic_selected = { fg = C.yellow, bg = active_bg },
|
||||||
|
-- Infos
|
||||||
|
info = { fg = C.sky, bg = inactive_bg },
|
||||||
|
info_visible = { fg = C.sky, bg = inactive_bg },
|
||||||
|
info_selected = { fg = C.sky, bg = active_bg, style = styles },
|
||||||
|
info_diagnostic = { fg = C.sky, bg = inactive_bg },
|
||||||
|
info_diagnostic_visible = { fg = C.sky, bg = inactive_bg },
|
||||||
|
info_diagnostic_selected = { fg = C.sky, bg = active_bg },
|
||||||
|
-- Hint
|
||||||
|
hint = { fg = C.teal, bg = inactive_bg },
|
||||||
|
hint_visible = { fg = C.teal, bg = inactive_bg },
|
||||||
|
hint_selected = { fg = C.teal, bg = active_bg, style = styles },
|
||||||
|
hint_diagnostic = { fg = C.teal, bg = inactive_bg },
|
||||||
|
hint_diagnostic_visible = { fg = C.teal, bg = inactive_bg },
|
||||||
|
hint_diagnostic_selected = { fg = C.teal, bg = active_bg },
|
||||||
|
-- Diagnostics
|
||||||
|
diagnostic = { fg = C.subtext0, bg = inactive_bg },
|
||||||
|
diagnostic_visible = { fg = C.subtext0, bg = inactive_bg },
|
||||||
|
diagnostic_selected = { fg = C.subtext0, bg = active_bg, style = styles },
|
||||||
|
-- Modified
|
||||||
|
modified = { fg = C.peach, bg = inactive_bg },
|
||||||
|
modified_selected = { fg = C.peach, bg = active_bg },
|
||||||
|
}
|
||||||
|
|
||||||
|
local user_highlights = user_config.custom or {}
|
||||||
|
highlights =
|
||||||
|
vim.tbl_deep_extend("keep", user_highlights[ctp.flavour] or {}, user_highlights.all or {}, highlights)
|
||||||
|
|
||||||
|
for _, color in pairs(highlights) do
|
||||||
|
-- Because default is gui=bold,italic
|
||||||
|
color.italic = false
|
||||||
|
color.bold = false
|
||||||
|
|
||||||
|
if color.style then
|
||||||
|
for _, style in pairs(color.style) do
|
||||||
|
color[style] = true
|
||||||
|
if O.no_italic and style == "italic" then color[style] = false end
|
||||||
|
if O.no_bold and style == "bold" then color[style] = false end
|
||||||
|
if O.no_underline and style == "underline" then color[style] = false end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
color.style = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return highlights
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
CmpItemAbbr = { fg = C.overlay2 },
|
||||||
|
CmpItemAbbrDeprecated = { fg = C.overlay0, style = { "strikethrough" } },
|
||||||
|
CmpItemKind = { fg = C.blue },
|
||||||
|
CmpItemMenu = { fg = C.text },
|
||||||
|
CmpItemAbbrMatch = { fg = C.text, style = { "bold" } },
|
||||||
|
CmpItemAbbrMatchFuzzy = { fg = C.text, style = { "bold" } },
|
||||||
|
|
||||||
|
-- kind support
|
||||||
|
CmpItemKindSnippet = { fg = C.mauve },
|
||||||
|
CmpItemKindKeyword = { fg = C.red },
|
||||||
|
CmpItemKindText = { fg = C.teal },
|
||||||
|
CmpItemKindMethod = { fg = C.blue },
|
||||||
|
CmpItemKindConstructor = { fg = C.blue },
|
||||||
|
CmpItemKindFunction = { fg = C.blue },
|
||||||
|
CmpItemKindFolder = { fg = C.blue },
|
||||||
|
CmpItemKindModule = { fg = C.blue },
|
||||||
|
CmpItemKindConstant = { fg = C.peach },
|
||||||
|
CmpItemKindField = { fg = C.green },
|
||||||
|
CmpItemKindProperty = { fg = C.green },
|
||||||
|
CmpItemKindEnum = { fg = C.green },
|
||||||
|
CmpItemKindUnit = { fg = C.green },
|
||||||
|
CmpItemKindClass = { fg = C.yellow },
|
||||||
|
CmpItemKindVariable = { fg = C.flamingo },
|
||||||
|
CmpItemKindFile = { fg = C.blue },
|
||||||
|
CmpItemKindInterface = { fg = C.yellow },
|
||||||
|
CmpItemKindColor = { fg = C.red },
|
||||||
|
CmpItemKindReference = { fg = C.red },
|
||||||
|
CmpItemKindEnumMember = { fg = C.red },
|
||||||
|
CmpItemKindStruct = { fg = C.blue },
|
||||||
|
CmpItemKindValue = { fg = C.peach },
|
||||||
|
CmpItemKindEvent = { fg = C.blue },
|
||||||
|
CmpItemKindOperator = { fg = C.blue },
|
||||||
|
CmpItemKindTypeParameter = { fg = C.blue },
|
||||||
|
CmpItemKindCopilot = { fg = C.teal },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
-- These groups are for the coc.nvim, see ":h coc-highlights"
|
||||||
|
-- Custom popup menu since coc v0.0.82
|
||||||
|
CocMenuSel = { link = "PmenuSel" },
|
||||||
|
CocPumSearch = { fg = C.sky, style = { "bold" } },
|
||||||
|
|
||||||
|
-- Inlay hints
|
||||||
|
CocInlayHint = {
|
||||||
|
-- fg of `Comment`
|
||||||
|
fg = C.overlay0,
|
||||||
|
style = { "italic" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
NvimSeparator = { bg = C.base, fg = C[O.integrations.colorful_winsep.color] },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
DapBreakpoint = { fg = C.red },
|
||||||
|
DapBreakpointCondition = { fg = C.yellow },
|
||||||
|
DapBreakpointRejected = { fg = C.mauve },
|
||||||
|
DapLogPoint = { fg = C.sky },
|
||||||
|
DapStopped = { fg = C.maroon },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
DapUIScope = { fg = C.sky },
|
||||||
|
DapUIType = { fg = C.mauve },
|
||||||
|
DapUIValue = { fg = C.sky },
|
||||||
|
DapUIVariable = { fg = C.text },
|
||||||
|
DapUIModifiedValue = { fg = C.peach },
|
||||||
|
DapUIDecoration = { fg = C.sky },
|
||||||
|
DapUIThread = { fg = C.green },
|
||||||
|
DapUIStoppedThread = { fg = C.sky },
|
||||||
|
DapUISource = { fg = C.lavender },
|
||||||
|
DapUILineNumber = { fg = C.sky },
|
||||||
|
DapUIFloatBorder = { fg = C.sky },
|
||||||
|
|
||||||
|
DapUIWatchesEmpty = { fg = C.maroon },
|
||||||
|
DapUIWatchesValue = { fg = C.green },
|
||||||
|
DapUIWatchesError = { fg = C.maroon },
|
||||||
|
|
||||||
|
DapUIBreakpointsPath = { fg = C.sky },
|
||||||
|
DapUIBreakpointsInfo = { fg = C.green },
|
||||||
|
DapUIBreakpointsCurrentLine = { fg = C.green, style = { "bold" } },
|
||||||
|
DapUIBreakpointsDisabledLine = { fg = C.surface2 },
|
||||||
|
|
||||||
|
DapUIStepOver = { fg = C.blue },
|
||||||
|
DapUIStepInto = { fg = C.blue },
|
||||||
|
DapUIStepBack = { fg = C.blue },
|
||||||
|
DapUIStepOut = { fg = C.blue },
|
||||||
|
DapUIStop = { fg = C.red },
|
||||||
|
DapUIPlayPause = { fg = C.green },
|
||||||
|
DapUIRestart = { fg = C.green },
|
||||||
|
DapUIUnavailable = { fg = C.surface1 },
|
||||||
|
|
||||||
|
DapUIWinSelect = { fg = C.peach },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
DashboardShortCut = { fg = C.pink },
|
||||||
|
DashboardHeader = { fg = C.blue },
|
||||||
|
DashboardCenter = { fg = C.green },
|
||||||
|
DashboardFooter = { fg = C.yellow, style = { "italic" } },
|
||||||
|
DashboardMruTitle = { fg = C.sky },
|
||||||
|
DashboardProjectTitle = { fg = C.sky },
|
||||||
|
DashboardFiles = { fg = C.lavender },
|
||||||
|
DashboardKey = { fg = C.peach },
|
||||||
|
DashboardDesc = { fg = C.blue },
|
||||||
|
DashboardIcon = { fg = C.pink, bold = true },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
DiffviewDim1 = { link = "Comment" },
|
||||||
|
DiffviewPrimary = { fg = C.blue },
|
||||||
|
DiffviewSecondary = { fg = C.green },
|
||||||
|
DiffviewNormal = { fg = C.text, bg = O.transparent_background and C.none or C.mantle },
|
||||||
|
DiffviewWinSeparator = {
|
||||||
|
fg = O.transparent_background and C.surface1 or C.base,
|
||||||
|
bg = O.transparent_background and C.none or C.base,
|
||||||
|
},
|
||||||
|
DiffviewFilePanelTitle = { fg = C.blue, style = { "bold" } },
|
||||||
|
DiffviewFilePanelCounter = { fg = C.text },
|
||||||
|
DiffviewFilePanelRootPath = { fg = C.lavender, style = { "bold" } },
|
||||||
|
DiffviewFilePanelFileName = { fg = C.text },
|
||||||
|
DiffviewFilePanelSelected = { fg = C.yellow },
|
||||||
|
DiffviewFilePanelPath = { link = "Comment" },
|
||||||
|
DiffviewFilePanelInsertions = { fg = C.green },
|
||||||
|
DiffviewFilePanelDeletions = { fg = C.red },
|
||||||
|
DiffviewFilePanelConflicts = { fg = C.yellow },
|
||||||
|
DiffviewFolderName = { fg = C.blue, style = { "bold" } },
|
||||||
|
DiffviewFolderSign = { fg = C.blue },
|
||||||
|
DiffviewHash = { fg = C.flamingo },
|
||||||
|
DiffviewReference = { fg = C.blue, style = { "bold" } },
|
||||||
|
DiffviewReflogSelector = { fg = C.pink },
|
||||||
|
DiffviewStatusAdded = { fg = C.green },
|
||||||
|
DiffviewStatusUntracked = { fg = C.green },
|
||||||
|
DiffviewStatusModified = { fg = C.yellow },
|
||||||
|
DiffviewStatusRenamed = { fg = C.yellow },
|
||||||
|
DiffviewStatusCopied = { fg = C.yellow },
|
||||||
|
DiffviewStatusTypeChange = { fg = C.yellow },
|
||||||
|
DiffviewStatusUnmerged = { fg = C.yellow },
|
||||||
|
DiffviewStatusUnknown = { fg = C.red },
|
||||||
|
DiffviewStatusDeleted = { fg = C.red },
|
||||||
|
DiffviewStatusBroken = { fg = C.red },
|
||||||
|
DiffviewStatusIgnored = { fg = C.overlay0 },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,69 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
local color = O.integrations.dropbar.color_mode
|
||||||
|
return {
|
||||||
|
DropBarMenuHoverEntry = { link = "Visual" },
|
||||||
|
DropBarMenuHoverIcon = { reverse = true },
|
||||||
|
DropBarMenuHoverSymbol = { bold = true },
|
||||||
|
DropBarIconUISeparator = { fg = C.overlay1 },
|
||||||
|
DropBarKindArray = color and { link = "DropBarIconKindArray" } or { fg = C.text },
|
||||||
|
DropBarKindBoolean = color and { link = "DropBarIconKindBoolean" } or { fg = C.text },
|
||||||
|
DropBarKindBreakStatement = color and { link = "DropBarIconKindBreakStatement" } or { fg = C.text },
|
||||||
|
DropBarKindCall = color and { link = "DropBarIconKindCall" } or { fg = C.text },
|
||||||
|
DropBarKindCaseStatement = color and { link = "DropBarIconKindCaseStatement" } or { fg = C.text },
|
||||||
|
DropBarKindClass = color and { link = "DropBarIconKindClass" } or { fg = C.text },
|
||||||
|
DropBarKindConstant = color and { link = "DropBarIconKindConstant" } or { fg = C.text },
|
||||||
|
DropBarKindConstructor = color and { link = "DropBarIconKindConstructor" } or { fg = C.text },
|
||||||
|
DropBarKindContinueStatement = color and { link = "DropBarIconKindContinueStatement" } or { fg = C.text },
|
||||||
|
DropBarKindDeclaration = color and { link = "DropBarIconKindDeclaration" } or { fg = C.text },
|
||||||
|
DropBarKindDelete = color and { link = "DropBarIconKindDelete" } or { fg = C.text },
|
||||||
|
DropBarKindDoStatement = color and { link = "DropBarIconKindDoStatement" } or { fg = C.text },
|
||||||
|
DropBarKindElseStatement = color and { link = "DropBarIconKindElseStatement" } or { fg = C.text },
|
||||||
|
DropBarKindEnum = color and { link = "DropBarIconKindEnum" } or { fg = C.text },
|
||||||
|
DropBarKindEnumMember = color and { link = "DropBarIconKindEnumMember" } or { fg = C.text },
|
||||||
|
DropBarKindEvent = color and { link = "DropBarIconKindEvent" } or { fg = C.text },
|
||||||
|
DropBarKindField = color and { link = "DropBarIconKindField" } or { fg = C.text },
|
||||||
|
DropBarKindFile = color and { link = "DropBarIconKindFile" } or { fg = C.text },
|
||||||
|
DropBarKindFolder = color and { link = "DropBarIconKindFolder" } or { fg = C.text },
|
||||||
|
DropBarKindForStatement = color and { link = "DropBarIconKindForStatement" } or { fg = C.text },
|
||||||
|
DropBarKindFunction = color and { link = "DropBarIconKindFunction" } or { fg = C.text },
|
||||||
|
DropBarKindIdentifier = color and { link = "DropBarIconKindIdentifier" } or { fg = C.text },
|
||||||
|
DropBarKindIfStatement = color and { link = "DropBarIconKindIfStatement" } or { fg = C.text },
|
||||||
|
DropBarKindInterface = color and { link = "DropBarIconKindInterface" } or { fg = C.text },
|
||||||
|
DropBarKindKeyword = color and { link = "DropBarIconKindKeyword" } or { fg = C.text },
|
||||||
|
DropBarKindList = color and { link = "DropBarIconKindList" } or { fg = C.text },
|
||||||
|
DropBarKindMacro = color and { link = "DropBarIconKindMacro" } or { fg = C.text },
|
||||||
|
DropBarKindMarkdownH1 = color and { link = "DropBarIconKindMarkdownH1" } or { fg = C.text },
|
||||||
|
DropBarKindMarkdownH2 = color and { link = "DropBarIconKindMarkdownH2" } or { fg = C.text },
|
||||||
|
DropBarKindMarkdownH3 = color and { link = "DropBarIconKindMarkdownH3" } or { fg = C.text },
|
||||||
|
DropBarKindMarkdownH4 = color and { link = "DropBarIconKindMarkdownH4" } or { fg = C.text },
|
||||||
|
DropBarKindMarkdownH5 = color and { link = "DropBarIconKindMarkdownH5" } or { fg = C.text },
|
||||||
|
DropBarKindMarkdownH6 = color and { link = "DropBarIconKindMarkdownH6" } or { fg = C.text },
|
||||||
|
DropBarKindMethod = color and { link = "DropBarIconKindMethod" } or { fg = C.text },
|
||||||
|
DropBarKindModule = color and { link = "DropBarIconKindModule" } or { fg = C.text },
|
||||||
|
DropBarKindNamespace = color and { link = "DropBarIconKindNamespace" } or { fg = C.text },
|
||||||
|
DropBarKindNull = color and { link = "DropBarIconKindNull" } or { fg = C.text },
|
||||||
|
DropBarKindNumber = color and { link = "DropBarIconKindNumber" } or { fg = C.text },
|
||||||
|
DropBarKindObject = color and { link = "DropBarIconKindObject" } or { fg = C.text },
|
||||||
|
DropBarKindOperator = color and { link = "DropBarIconKindOperator" } or { fg = C.text },
|
||||||
|
DropBarKindPackage = color and { link = "DropBarIconKindPackage" } or { fg = C.text },
|
||||||
|
DropBarKindProperty = color and { link = "DropBarIconKindProperty" } or { fg = C.text },
|
||||||
|
DropBarKindReference = color and { link = "DropBarIconKindReference" } or { fg = C.text },
|
||||||
|
DropBarKindRepeat = color and { link = "DropBarIconKindRepeat" } or { fg = C.text },
|
||||||
|
DropBarKindScope = color and { link = "DropBarIconKindScope" } or { fg = C.text },
|
||||||
|
DropBarKindSpecifier = color and { link = "DropBarIconKindSpecifier" } or { fg = C.text },
|
||||||
|
DropBarKindStatement = color and { link = "DropBarIconKindStatement" } or { fg = C.text },
|
||||||
|
DropBarKindString = color and { link = "DropBarIconKindString" } or { fg = C.text },
|
||||||
|
DropBarKindStruct = color and { link = "DropBarIconKindStruct" } or { fg = C.text },
|
||||||
|
DropBarKindSwitchStatement = color and { link = "DropBarIconKindSwitchStatement" } or { fg = C.text },
|
||||||
|
DropBarKindType = color and { link = "DropBarIconKindType" } or { fg = C.text },
|
||||||
|
DropBarKindTypeParameter = color and { link = "DropBarIconKindTypeParameter" } or { fg = C.text },
|
||||||
|
DropBarKindUnit = color and { link = "DropBarIconKindUnit" } or { fg = C.text },
|
||||||
|
DropBarKindValue = color and { link = "DropBarIconKindValue" } or { fg = C.text },
|
||||||
|
DropBarKindVariable = color and { link = "DropBarIconKindVariable" } or { fg = C.text },
|
||||||
|
DropBarKindWhileStatement = color and { link = "DropBarIconKindWhileStatement" } or { fg = C.text },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,501 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
local C = require("catppuccin.palettes").get_palette()
|
||||||
|
local lsp = require "feline.providers.lsp"
|
||||||
|
|
||||||
|
local assets = {
|
||||||
|
left_separator = "",
|
||||||
|
right_separator = "",
|
||||||
|
mode_icon = "",
|
||||||
|
dir = "",
|
||||||
|
file = "",
|
||||||
|
lsp = {
|
||||||
|
server = "",
|
||||||
|
error = "",
|
||||||
|
warning = "",
|
||||||
|
info = "",
|
||||||
|
hint = "",
|
||||||
|
},
|
||||||
|
git = {
|
||||||
|
branch = "",
|
||||||
|
added = "",
|
||||||
|
changed = "",
|
||||||
|
removed = "",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local sett = {
|
||||||
|
text = C.mantle,
|
||||||
|
bkg = C.crust,
|
||||||
|
diffs = C.mauve,
|
||||||
|
extras = C.overlay1,
|
||||||
|
curr_file = C.maroon,
|
||||||
|
curr_dir = C.flamingo,
|
||||||
|
show_modified = false,
|
||||||
|
}
|
||||||
|
|
||||||
|
if require("catppuccin").flavour == "latte" then
|
||||||
|
local latte = require("catppuccin.palettes").get_palette "latte"
|
||||||
|
sett.text = latte.base
|
||||||
|
sett.bkg = latte.crust
|
||||||
|
end
|
||||||
|
|
||||||
|
if require("catppuccin").options.transparent_background then sett.bkg = "NONE" end
|
||||||
|
|
||||||
|
local mode_colors = {
|
||||||
|
["n"] = { "NORMAL", C.lavender },
|
||||||
|
["no"] = { "N-PENDING", C.lavender },
|
||||||
|
["i"] = { "INSERT", C.green },
|
||||||
|
["ic"] = { "INSERT", C.green },
|
||||||
|
["t"] = { "TERMINAL", C.green },
|
||||||
|
["v"] = { "VISUAL", C.flamingo },
|
||||||
|
["V"] = { "V-LINE", C.flamingo },
|
||||||
|
[""] = { "V-BLOCK", C.flamingo },
|
||||||
|
["R"] = { "REPLACE", C.maroon },
|
||||||
|
["Rv"] = { "V-REPLACE", C.maroon },
|
||||||
|
["s"] = { "SELECT", C.maroon },
|
||||||
|
["S"] = { "S-LINE", C.maroon },
|
||||||
|
[""] = { "S-BLOCK", C.maroon },
|
||||||
|
["c"] = { "COMMAND", C.peach },
|
||||||
|
["cv"] = { "COMMAND", C.peach },
|
||||||
|
["ce"] = { "COMMAND", C.peach },
|
||||||
|
["r"] = { "PROMPT", C.teal },
|
||||||
|
["rm"] = { "MORE", C.teal },
|
||||||
|
["r?"] = { "CONFIRM", C.mauve },
|
||||||
|
["!"] = { "SHELL", C.green },
|
||||||
|
}
|
||||||
|
|
||||||
|
local view = {
|
||||||
|
lsp = {
|
||||||
|
progress = true,
|
||||||
|
name = false,
|
||||||
|
exclude_lsp_names = {},
|
||||||
|
separator = "|",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local is_lsp_in_excluded_list = function(lsp_name)
|
||||||
|
for _, excluded_lsp in ipairs(view.lsp.exclude_lsp_names) do
|
||||||
|
if lsp_name == excluded_lsp then return true end
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.setup(opts)
|
||||||
|
if opts then
|
||||||
|
opts.assets = opts.assets or {}
|
||||||
|
opts.sett = opts.sett or {}
|
||||||
|
opts.mode_colors = opts.mode_colors or {}
|
||||||
|
opts.view = opts.view or {}
|
||||||
|
else
|
||||||
|
opts = {
|
||||||
|
assets = {},
|
||||||
|
sett = {},
|
||||||
|
mode_colors = {},
|
||||||
|
view = {},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
assets = vim.tbl_deep_extend("force", assets, opts.assets)
|
||||||
|
sett = vim.tbl_deep_extend("force", sett, opts.sett)
|
||||||
|
mode_colors = vim.tbl_deep_extend("force", mode_colors, opts.mode_colors)
|
||||||
|
view = vim.tbl_deep_extend("force", view, opts.view)
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
local shortline = false
|
||||||
|
|
||||||
|
local components = {
|
||||||
|
active = { {}, {}, {} }, -- left, center, right
|
||||||
|
inactive = { {} },
|
||||||
|
}
|
||||||
|
|
||||||
|
local function is_enabled(min_width)
|
||||||
|
if shortline then return true end
|
||||||
|
|
||||||
|
return vim.api.nvim_win_get_width(0) > min_width
|
||||||
|
end
|
||||||
|
|
||||||
|
-- global components
|
||||||
|
local invi_sep = {
|
||||||
|
str = " ",
|
||||||
|
hl = {
|
||||||
|
fg = sett.bkg,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- helpers
|
||||||
|
local function any_git_changes()
|
||||||
|
local gst = vim.b.gitsigns_status_dict -- git stats
|
||||||
|
if gst then
|
||||||
|
if
|
||||||
|
gst["added"] and gst["added"] > 0
|
||||||
|
or gst["removed"] and gst["removed"] > 0
|
||||||
|
or gst["changed"] and gst["changed"] > 0
|
||||||
|
then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- #################### STATUSLINE ->
|
||||||
|
|
||||||
|
-- ######## Left
|
||||||
|
|
||||||
|
-- Current vi mode ------>
|
||||||
|
local vi_mode_hl = function()
|
||||||
|
return {
|
||||||
|
fg = sett.text,
|
||||||
|
bg = mode_colors[vim.fn.mode()][2],
|
||||||
|
style = "bold",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
components.active[1][1] = {
|
||||||
|
provider = " " .. assets.mode_icon .. " ",
|
||||||
|
hl = function()
|
||||||
|
return {
|
||||||
|
fg = sett.text,
|
||||||
|
bg = mode_colors[vim.fn.mode()][2],
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[1][2] = {
|
||||||
|
provider = function() return mode_colors[vim.fn.mode()][1] .. " " end,
|
||||||
|
hl = vi_mode_hl,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- there is a dilemma: we need to hide Diffs if there is no git info. We can do that, but this will
|
||||||
|
-- leave the right_separator colored with purple, and since we can't change the color conditonally
|
||||||
|
-- then the solution is to create two right_separators: one with a mauve sett.bkg and the other one normal
|
||||||
|
-- sett.bkg; both have the same fg (vi mode). The mauve one appears if there is git info, else the one with
|
||||||
|
-- the normal sett.bkg appears. Fixed :)
|
||||||
|
|
||||||
|
-- enable if git diffs are not available
|
||||||
|
components.active[1][3] = {
|
||||||
|
provider = assets.right_separator,
|
||||||
|
hl = function()
|
||||||
|
return {
|
||||||
|
fg = mode_colors[vim.fn.mode()][2],
|
||||||
|
bg = sett.bkg,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
enabled = function() return not any_git_changes() end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- enable if git diffs are available
|
||||||
|
components.active[1][4] = {
|
||||||
|
provider = assets.right_separator,
|
||||||
|
hl = function()
|
||||||
|
return {
|
||||||
|
fg = mode_colors[vim.fn.mode()][2],
|
||||||
|
bg = sett.diffs,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
enabled = function() return any_git_changes() end,
|
||||||
|
}
|
||||||
|
-- Current vi mode ------>
|
||||||
|
|
||||||
|
-- Diffs ------>
|
||||||
|
components.active[1][5] = {
|
||||||
|
provider = "git_diff_added",
|
||||||
|
hl = {
|
||||||
|
fg = sett.text,
|
||||||
|
bg = sett.diffs,
|
||||||
|
},
|
||||||
|
icon = " " .. assets.git.added .. " ",
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[1][6] = {
|
||||||
|
provider = "git_diff_changed",
|
||||||
|
hl = {
|
||||||
|
fg = sett.text,
|
||||||
|
bg = sett.diffs,
|
||||||
|
},
|
||||||
|
icon = " " .. assets.git.changed .. " ",
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[1][7] = {
|
||||||
|
provider = "git_diff_removed",
|
||||||
|
hl = {
|
||||||
|
fg = sett.text,
|
||||||
|
bg = sett.diffs,
|
||||||
|
},
|
||||||
|
icon = " " .. assets.git.removed .. " ",
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[1][8] = {
|
||||||
|
provider = " ",
|
||||||
|
hl = {
|
||||||
|
fg = sett.bkg,
|
||||||
|
bg = sett.diffs,
|
||||||
|
},
|
||||||
|
enabled = function() return any_git_changes() end,
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[1][9] = {
|
||||||
|
provider = assets.right_separator,
|
||||||
|
hl = {
|
||||||
|
fg = sett.diffs,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
enabled = function() return any_git_changes() end,
|
||||||
|
}
|
||||||
|
-- Diffs ------>
|
||||||
|
|
||||||
|
-- Extras ------>
|
||||||
|
|
||||||
|
-- file progress
|
||||||
|
components.active[1][10] = {
|
||||||
|
provider = function()
|
||||||
|
local current_line = vim.fn.line "."
|
||||||
|
local total_line = vim.fn.line "$"
|
||||||
|
|
||||||
|
if current_line == 1 then
|
||||||
|
return "Top"
|
||||||
|
elseif current_line == vim.fn.line "$" then
|
||||||
|
return "Bot"
|
||||||
|
end
|
||||||
|
local result, _ = math.modf((current_line / total_line) * 100)
|
||||||
|
return result .. "%%"
|
||||||
|
end,
|
||||||
|
-- enabled = shortline or function(winid)
|
||||||
|
-- return vim.api.nvim_win_get_width(winid) > 90
|
||||||
|
-- end,
|
||||||
|
hl = {
|
||||||
|
fg = sett.extras,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
left_sep = invi_sep,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- position
|
||||||
|
components.active[1][11] = {
|
||||||
|
provider = "position",
|
||||||
|
-- enabled = shortline or function(winid)
|
||||||
|
-- return vim.api.nvim_win_get_width(winid) > 90
|
||||||
|
-- end,
|
||||||
|
hl = {
|
||||||
|
fg = sett.extras,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
left_sep = invi_sep,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- macro
|
||||||
|
components.active[1][12] = {
|
||||||
|
provider = "macro",
|
||||||
|
enabled = function() return vim.api.nvim_get_option "cmdheight" == 0 end,
|
||||||
|
hl = {
|
||||||
|
fg = sett.extras,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
left_sep = invi_sep,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- search count
|
||||||
|
components.active[1][13] = {
|
||||||
|
provider = "search_count",
|
||||||
|
enabled = function() return vim.api.nvim_get_option "cmdheight" == 0 end,
|
||||||
|
hl = {
|
||||||
|
fg = sett.extras,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
left_sep = invi_sep,
|
||||||
|
}
|
||||||
|
-- Extras ------>
|
||||||
|
|
||||||
|
-- ######## Left
|
||||||
|
|
||||||
|
-- ######## Center
|
||||||
|
|
||||||
|
-- Diagnostics ------>
|
||||||
|
-- workspace loader
|
||||||
|
components.active[2][1] = {
|
||||||
|
provider = function()
|
||||||
|
if vim.lsp.status then return "" end
|
||||||
|
local Lsp = vim.lsp.util.get_progress_messages()[1]
|
||||||
|
|
||||||
|
if Lsp then
|
||||||
|
local msg = Lsp.message or ""
|
||||||
|
local percentage = Lsp.percentage
|
||||||
|
if not percentage then return "" end
|
||||||
|
local title = Lsp.title or ""
|
||||||
|
local spinners = {
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
}
|
||||||
|
local success_icon = {
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
}
|
||||||
|
local ms = vim.loop.hrtime() / 1000000
|
||||||
|
local frame = math.floor(ms / 120) % #spinners
|
||||||
|
|
||||||
|
if percentage >= 70 then
|
||||||
|
return string.format(" %%<%s %s %s (%s%%%%) ", success_icon[frame + 1], title, msg, percentage)
|
||||||
|
end
|
||||||
|
|
||||||
|
return string.format(" %%<%s %s %s (%s%%%%) ", spinners[frame + 1], title, msg, percentage)
|
||||||
|
end
|
||||||
|
|
||||||
|
return ""
|
||||||
|
end,
|
||||||
|
enabled = is_enabled(80) and view.lsp.progress == true,
|
||||||
|
hl = {
|
||||||
|
fg = C.rosewater,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- general diagnostics (errors, warnings. info and hints)
|
||||||
|
components.active[2][2] = {
|
||||||
|
provider = "diagnostic_errors",
|
||||||
|
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.ERROR) end,
|
||||||
|
|
||||||
|
hl = {
|
||||||
|
fg = C.red,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
icon = " " .. assets.lsp.error .. " ",
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[2][3] = {
|
||||||
|
provider = "diagnostic_warnings",
|
||||||
|
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.WARN) end,
|
||||||
|
hl = {
|
||||||
|
fg = C.yellow,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
icon = " " .. assets.lsp.warning .. " ",
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[2][4] = {
|
||||||
|
provider = "diagnostic_info",
|
||||||
|
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.INFO) end,
|
||||||
|
hl = {
|
||||||
|
fg = C.sky,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
icon = " " .. assets.lsp.info .. " ",
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[2][5] = {
|
||||||
|
provider = "diagnostic_hints",
|
||||||
|
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.HINT) end,
|
||||||
|
hl = {
|
||||||
|
fg = C.rosewater,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
icon = " " .. assets.lsp.hint .. " ",
|
||||||
|
}
|
||||||
|
-- Diagnostics ------>
|
||||||
|
|
||||||
|
-- ######## Center
|
||||||
|
|
||||||
|
-- ######## Right
|
||||||
|
|
||||||
|
components.active[3][1] = {
|
||||||
|
provider = "git_branch",
|
||||||
|
enabled = is_enabled(70),
|
||||||
|
hl = {
|
||||||
|
fg = sett.extras,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
icon = assets.git.branch .. " ",
|
||||||
|
right_sep = invi_sep,
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[3][2] = {
|
||||||
|
provider = function()
|
||||||
|
local active_clients = vim.lsp.get_active_clients { bufnr = 0 }
|
||||||
|
|
||||||
|
-- show an indicator that we have running lsps
|
||||||
|
if view.lsp.name == false and next(active_clients) ~= nil then return assets.lsp.server .. " " .. "Lsp" end
|
||||||
|
|
||||||
|
-- show the actual name of the runing lsps
|
||||||
|
local index = 0
|
||||||
|
local lsp_names = ""
|
||||||
|
for _, lsp_config in ipairs(active_clients) do
|
||||||
|
if is_lsp_in_excluded_list(lsp_config.name) then goto continue end
|
||||||
|
|
||||||
|
index = index + 1
|
||||||
|
if index == 1 then
|
||||||
|
lsp_names = assets.lsp.server .. " " .. lsp_config.name
|
||||||
|
else
|
||||||
|
lsp_names = lsp_names .. view.lsp.separator .. lsp_config.name
|
||||||
|
end
|
||||||
|
|
||||||
|
::continue::
|
||||||
|
end
|
||||||
|
|
||||||
|
return lsp_names
|
||||||
|
end,
|
||||||
|
|
||||||
|
hl = {
|
||||||
|
fg = sett.extras,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
|
||||||
|
right_sep = invi_sep,
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[3][3] = {
|
||||||
|
provider = function()
|
||||||
|
local filename = vim.fn.expand "%:t"
|
||||||
|
local extension = vim.fn.expand "%:e"
|
||||||
|
local present, icons = pcall(require, "nvim-web-devicons")
|
||||||
|
local icon = present and icons.get_icon(filename, extension) or assets.file
|
||||||
|
return (sett.show_modified and "%m" or "") .. " " .. icon .. " " .. filename .. " "
|
||||||
|
end,
|
||||||
|
enabled = is_enabled(70),
|
||||||
|
hl = {
|
||||||
|
fg = sett.text,
|
||||||
|
bg = sett.curr_file,
|
||||||
|
},
|
||||||
|
left_sep = {
|
||||||
|
str = assets.left_separator,
|
||||||
|
hl = {
|
||||||
|
fg = sett.curr_file,
|
||||||
|
bg = sett.bkg,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
components.active[3][4] = {
|
||||||
|
provider = function()
|
||||||
|
local dir_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":t")
|
||||||
|
return " " .. assets.dir .. " " .. dir_name .. " "
|
||||||
|
end,
|
||||||
|
enabled = is_enabled(80),
|
||||||
|
hl = {
|
||||||
|
fg = sett.text,
|
||||||
|
bg = sett.curr_dir,
|
||||||
|
},
|
||||||
|
left_sep = {
|
||||||
|
str = assets.left_separator,
|
||||||
|
hl = {
|
||||||
|
fg = sett.curr_dir,
|
||||||
|
bg = sett.curr_file,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- ######## Right
|
||||||
|
|
||||||
|
-- Inanctive components
|
||||||
|
components.inactive[1][1] = {
|
||||||
|
provider = function() return " " .. string.upper(vim.bo.ft) .. " " end,
|
||||||
|
hl = {
|
||||||
|
fg = C.overlay2,
|
||||||
|
bg = C.mantle,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return components
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
FernBranchText = { fg = C.blue },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
FidgetTask = {
|
||||||
|
bg = O.transparent_background and C.none or C.mantle,
|
||||||
|
fg = C.text,
|
||||||
|
},
|
||||||
|
FidgetTitle = { fg = C.blue },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
local bg = O.transparent_background and C.none or C.base
|
||||||
|
return {
|
||||||
|
FlashBackdrop = { fg = C.overlay0 },
|
||||||
|
FlashLabel = { fg = C.green, bg = bg, style = { "bold" } },
|
||||||
|
FlashMatch = { fg = C.lavender, bg = bg },
|
||||||
|
FlashCurrent = { fg = C.peach, bg = bg },
|
||||||
|
FlashPrompt = { link = "NormalFloat" },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
GitGutterAdd = { fg = C.green },
|
||||||
|
GitGutterChange = { fg = C.yellow },
|
||||||
|
GitGutterDelete = { fg = C.red },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
if type(O.integrations.gitsigns) == "boolean" then
|
||||||
|
O.integrations.gitsigns = { enabled = true, transparent = false }
|
||||||
|
end
|
||||||
|
|
||||||
|
if O.transparent_background then
|
||||||
|
return {
|
||||||
|
GitSignsAdd = { fg = C.green }, -- diff mode: Added line |diff.txt|
|
||||||
|
GitSignsChange = { fg = C.yellow }, -- diff mode: Changed line |diff.txt|
|
||||||
|
GitSignsDelete = { fg = C.red }, -- diff mode: Deleted line |diff.txt|
|
||||||
|
|
||||||
|
GitSignsCurrentLineBlame = { fg = C.surface1 },
|
||||||
|
|
||||||
|
GitSignsAddPreview = O.transparent_background and { fg = U.darken(C.green, 0.72, C.base), bg = C.none }
|
||||||
|
or { link = "DiffAdd" },
|
||||||
|
GitSignsDeletePreview = O.transparent_background and { fg = U.darken(C.red, 0.72, C.base), bg = C.none }
|
||||||
|
or { link = "DiffDelete" },
|
||||||
|
-- for word diff in previews
|
||||||
|
GitSignsAddInline = O.transparent_background and {
|
||||||
|
fg = C.green,
|
||||||
|
bg = C.none,
|
||||||
|
style = { "bold" },
|
||||||
|
} or { link = "DiffAdd" },
|
||||||
|
GitSignsDeleteInline = O.transparent_background and {
|
||||||
|
fg = C.red,
|
||||||
|
bg = C.none,
|
||||||
|
style = { "bold" },
|
||||||
|
} or { link = "DiffDelete" },
|
||||||
|
GitSignsChangeInline = O.transparent_background and {
|
||||||
|
fg = C.yellow,
|
||||||
|
bg = C.none,
|
||||||
|
style = { "bold" },
|
||||||
|
} or { link = "DiffChange" },
|
||||||
|
|
||||||
|
GitSignsDeleteVirtLn = O.transparent_background and { bg = C.none, fg = C.red } or { link = "DiffDelete" },
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return {
|
||||||
|
GitSignsAdd = { fg = C.green }, -- diff mode: Added line |diff.txt|
|
||||||
|
GitSignsChange = { fg = C.yellow }, -- diff mode: Changed line |diff.txt|
|
||||||
|
GitSignsDelete = { fg = C.red }, -- diff mode: Deleted line |diff.txt|
|
||||||
|
|
||||||
|
GitSignsCurrentLineBlame = { fg = C.surface1 },
|
||||||
|
|
||||||
|
GitSignsAddPreview = O.transparent_background and { fg = C.green, bg = C.none } or { link = "DiffAdd" },
|
||||||
|
GitSignsDeletePreview = O.transparent_background and { fg = C.red, bg = C.none } or { link = "DiffDelete" },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
HarpoonWindow = { fg = C.text, bg = O.transparent_background and C.none or C.base },
|
||||||
|
HarpoonBorder = { fg = C.blue },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
Dash = { fg = C.overlay2, style = { "bold" } },
|
||||||
|
Quote = { link = "@markup.strong" },
|
||||||
|
CodeBlock = { bg = C.mantle },
|
||||||
|
Headline = { link = "Headline1" },
|
||||||
|
Headline1 = { bg = C.surface0, fg = C.red },
|
||||||
|
Headline2 = { bg = C.surface0, fg = C.peach },
|
||||||
|
Headline3 = { bg = C.surface0, fg = C.yellow },
|
||||||
|
Headline4 = { bg = C.surface0, fg = C.green },
|
||||||
|
Headline5 = { bg = C.surface0, fg = C.sapphire },
|
||||||
|
Headline6 = { bg = C.surface0, fg = C.lavender },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
local bg = O.transparent_background and C.none or C.base
|
||||||
|
return {
|
||||||
|
HopNextKey = { bg = bg, fg = C.peach, style = { "bold", "underline" } },
|
||||||
|
HopNextKey1 = { bg = bg, fg = C.blue, style = { "bold" } },
|
||||||
|
HopNextKey2 = { bg = bg, fg = C.teal, style = { "bold", "italic" } },
|
||||||
|
HopUnmatched = { bg = bg, fg = C.overlay0 },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
IlluminatedWordText = { bg = U.darken(C.surface1, 0.7, C.base) },
|
||||||
|
IlluminatedWordRead = { bg = U.darken(C.surface1, 0.7, C.base) },
|
||||||
|
IlluminatedWordWrite = {
|
||||||
|
bg = U.darken(C.surface1, 0.7, C.base),
|
||||||
|
style = O.integrations.illuminate.lsp and { "standout" } or {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
local scope_color = O.integrations.indent_blankline.scope_color
|
||||||
|
|
||||||
|
local hi = {
|
||||||
|
IblIndent = { fg = C.surface0 },
|
||||||
|
IblScope = { fg = C[scope_color] or C.text },
|
||||||
|
}
|
||||||
|
|
||||||
|
if O.integrations.indent_blankline.colored_indent_levels then
|
||||||
|
hi["RainbowRed"] = { blend = 0, fg = C.red }
|
||||||
|
hi["RainbowYellow"] = { blend = 0, fg = C.yellow }
|
||||||
|
hi["RainbowBlue"] = { blend = 0, fg = C.blue }
|
||||||
|
hi["RainbowOrange"] = { blend = 0, fg = C.peach }
|
||||||
|
hi["RainbowGreen"] = { blend = 0, fg = C.green }
|
||||||
|
hi["RainbowViolet"] = { blend = 0, fg = C.mauve }
|
||||||
|
hi["RainbowCyan"] = { blend = 0, fg = C.teal }
|
||||||
|
end
|
||||||
|
|
||||||
|
return hi
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
LeapMatch = {
|
||||||
|
fg = O.transparent_background and C.pink or U.vary_color({ latte = "#222222" }, U.brighten(C.green, 0.3)),
|
||||||
|
style = { "underline", "nocombine", O.transparent_background and "bold" or nil },
|
||||||
|
},
|
||||||
|
LeapLabelPrimary = {
|
||||||
|
fg = O.transparent_background and C.green or U.vary_color({ latte = "#222222" }, C.base),
|
||||||
|
bg = O.transparent_background and C.none
|
||||||
|
or U.vary_color({ latte = U.brighten(C.red, 0.4) }, U.brighten(C.green, 0.3)),
|
||||||
|
style = { "nocombine", O.transparent_background and "bold" or nil },
|
||||||
|
},
|
||||||
|
LeapLabelSecondary = {
|
||||||
|
fg = O.transparent_background and C.blue or U.vary_color({ latte = "#222222" }, C.base),
|
||||||
|
bg = O.transparent_background and C.none or U.vary_color({ latte = U.brighten(C.sky, 0.3) }, C.sky),
|
||||||
|
style = { "nocombine", O.transparent_background and "bold" or nil },
|
||||||
|
},
|
||||||
|
LeapBackdrop = { fg = O.transparent_background and C.overlay0 or C.none },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
LightspeedLabel = { fg = C.red, style = { "bold", "underline" } },
|
||||||
|
LightspeedLabelDistant = {
|
||||||
|
fg = U.vary_color({ latte = C.blue }, C.sky),
|
||||||
|
style = { "bold", "underline" },
|
||||||
|
},
|
||||||
|
LightspeedShortcut = {
|
||||||
|
fg = "#ffffff",
|
||||||
|
bg = U.increase_saturation(C.red, 0.7),
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
LightspeedMaskedChar = {
|
||||||
|
fg = U.vary_color({ latte = U.lighten(C.pink, 0.7, C.text) }, U.darken(C.pink, 0.7, C.base)),
|
||||||
|
},
|
||||||
|
LightspeedUnlabeledMatch = { fg = C.text, style = { "bold" } },
|
||||||
|
LightspeedGreyWash = { link = "Comment" },
|
||||||
|
LightspeedUniqueChar = { link = "LightspeedUnlabeledMatch" },
|
||||||
|
LightspeedOneCharMatch = { link = "LightspeedShortcut" },
|
||||||
|
LightspeedPendingOpArea = { link = "IncSearch" },
|
||||||
|
LightspeedCursor = { link = "Cursor" },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,132 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
SagaTitle = { fg = C.teal, style = { "bold" } },
|
||||||
|
SagaBorder = { fg = C.blue, bg = C.none },
|
||||||
|
SagaNormal = { bg = O.transparent_background and C.none or C.base },
|
||||||
|
SagaToggle = { fg = C.green },
|
||||||
|
SagaCount = { fg = C.overlay1 },
|
||||||
|
SagaBeacon = { bg = U.darken(C.surface0, 0.8, C.crust) },
|
||||||
|
SagaVirtLine = { fg = C.surface2 },
|
||||||
|
SagaSpinner = { fg = C.mauve, style = { "bold" } },
|
||||||
|
SagaSpinnerTitle = { fg = C.mauve, style = { "bold" } },
|
||||||
|
SagaText = { fg = C.text },
|
||||||
|
SagaSelect = { fg = C.blue, style = { "bold" } },
|
||||||
|
SagaSearch = { link = "Search" },
|
||||||
|
SagaFinderFname = { fg = C.subtext0, style = { "bold" } },
|
||||||
|
ActionFix = { fg = C.pink },
|
||||||
|
ActionPreviewTitle = { fg = C.mauve, bg = O.transparent_background and C.none or C.base },
|
||||||
|
CodeActionText = { fg = C.green },
|
||||||
|
CodeActionNumber = { fg = C.pink },
|
||||||
|
SagaImpIcon = { fg = C.pink },
|
||||||
|
SagaLightBulb = { link = "DiagnosticSignHint" },
|
||||||
|
RenameNormal = { fg = C.text },
|
||||||
|
RenameMatch = { link = "Search" },
|
||||||
|
DiagnosticText = { fg = C.text },
|
||||||
|
SagaWinbarSep = { fg = C.flamingo },
|
||||||
|
SagaDetail = { link = "Comment" },
|
||||||
|
SagaFileName = { fg = C.overlay2, style = { "bold" } },
|
||||||
|
SagaFolderName = { fg = C.overlay2, style = { "bold" } },
|
||||||
|
SagaInCurrent = { fg = C.peach },
|
||||||
|
|
||||||
|
-- Lspkind icons support
|
||||||
|
LspKindClass = { fg = C.yellow },
|
||||||
|
LspKindConstant = { fg = C.peach },
|
||||||
|
LspKindConstructor = { fg = C.sapphire },
|
||||||
|
LspKindEnum = { fg = C.yellow },
|
||||||
|
LspKindEnumMember = { fg = C.teal },
|
||||||
|
LspKindEvent = { fg = C.yellow },
|
||||||
|
LspKindField = { fg = C.teal },
|
||||||
|
LspKindFile = { fg = C.rosewater },
|
||||||
|
LspKindFunction = { fg = C.blue },
|
||||||
|
LspKindInterface = { fg = C.yellow },
|
||||||
|
LspKindKey = { fg = C.red },
|
||||||
|
LspKindMethod = { fg = C.blue },
|
||||||
|
LspKindModule = { fg = C.blue },
|
||||||
|
LspKindNamespace = { fg = C.blue },
|
||||||
|
LspKindNumber = { fg = C.peach },
|
||||||
|
LspKindOperator = { fg = C.sky },
|
||||||
|
LspKindPackage = { fg = C.blue },
|
||||||
|
LspKindProperty = { fg = C.teal },
|
||||||
|
LspKindStruct = { fg = C.yellow },
|
||||||
|
LspKindTypeParameter = { fg = C.blue },
|
||||||
|
LspKindVariable = { fg = C.peach },
|
||||||
|
LspKindArray = { fg = C.peach },
|
||||||
|
LspKindBoolean = { fg = C.peach },
|
||||||
|
LspKindNull = { fg = C.yellow },
|
||||||
|
LspKindObject = { fg = C.yellow },
|
||||||
|
LspKindString = { fg = C.green },
|
||||||
|
-- ccls-specific icons.
|
||||||
|
LspKindTypeAlias = { fg = C.green },
|
||||||
|
LspKindParameter = { fg = C.blue },
|
||||||
|
LspKindStaticMethod = { fg = C.peach },
|
||||||
|
-- Microsoft-specific icons.
|
||||||
|
LspKindText = { fg = C.green },
|
||||||
|
LspKindSnippet = { fg = C.mauve },
|
||||||
|
LspKindFolder = { fg = C.blue },
|
||||||
|
LspKindUnit = { fg = C.green },
|
||||||
|
LspKindValue = { fg = C.peach },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.custom_kind()
|
||||||
|
return {
|
||||||
|
File = { " ", "LspKindFile" },
|
||||||
|
Module = { " ", "LspKindModule" },
|
||||||
|
Namespace = { " ", "LspKindNamespace" },
|
||||||
|
Package = { " ", "LspKindPackage" },
|
||||||
|
Class = { " ", "LspKindClass" },
|
||||||
|
Method = { " ", "LspKindMethod" },
|
||||||
|
Property = { " ", "LspKindProperty" },
|
||||||
|
Field = { " ", "LspKindField" },
|
||||||
|
Constructor = { " ", "LspKindConstructor" },
|
||||||
|
Enum = { "", "LspKindEnum" },
|
||||||
|
Interface = { " ", "LspKindInterface" },
|
||||||
|
Function = { " ", "LspKindFunction" },
|
||||||
|
Variable = { " ", "LspKindVariable" },
|
||||||
|
Constant = { " ", "LspKindConstant" },
|
||||||
|
String = { " ", "LspKindString" },
|
||||||
|
Number = { " ", "LspKindNumber" },
|
||||||
|
Boolean = { " ", "LspKindBoolean" },
|
||||||
|
Array = { " ", "LspKindArray" },
|
||||||
|
Object = { " ", "LspKindObject" },
|
||||||
|
Key = { " ", "LspKindKey" },
|
||||||
|
Null = { " ", "LspKindNull" },
|
||||||
|
EnumMember = { " ", "LspKindEnumMember" },
|
||||||
|
Struct = { " ", "LspKindStruct" },
|
||||||
|
Event = { " ", "LspKindEvent" },
|
||||||
|
Operator = { " ", "LspKindOperator" },
|
||||||
|
TypeParameter = { " ", "LspKindTypeParameter" },
|
||||||
|
TypeAlias = { " ", "LspKindTypeAlias" },
|
||||||
|
Parameter = { " ", "LspKindParameter" },
|
||||||
|
StaticMethod = { " ", "LspKindStaticMethod" },
|
||||||
|
Macro = { " ", "LspKindMacro" },
|
||||||
|
Text = { " ", "LspKindText" },
|
||||||
|
Snippet = { " ", "LspKindSnippet" },
|
||||||
|
Folder = { " ", "LspKindFolder" },
|
||||||
|
Unit = { " ", "LspKindUnit" },
|
||||||
|
Value = { " ", "LspKindValue" },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Backwards compatibility
|
||||||
|
function M.custom_colors()
|
||||||
|
local C = require("catppuccin.palettes").get_palette()
|
||||||
|
return {
|
||||||
|
normal_bg = C.base,
|
||||||
|
title_bg = C.green,
|
||||||
|
red = C.red,
|
||||||
|
magenta = C.maroon,
|
||||||
|
orange = C.peach,
|
||||||
|
yellow = C.yellow,
|
||||||
|
green = C.green,
|
||||||
|
cyan = C.sky,
|
||||||
|
blue = C.blue,
|
||||||
|
purple = C.mauve,
|
||||||
|
white = C.text,
|
||||||
|
black = C.crust,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
TroubleText = { fg = C.green },
|
||||||
|
TroubleCount = { fg = C.pink, bg = O.transparent_background and C.none or C.surface1 },
|
||||||
|
TroubleNormal = { fg = C.text, bg = O.transparent_background and C.none or C.crust },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
markdownHeadingDelimiter = { fg = C.peach, style = { "bold" } },
|
||||||
|
markdownCode = { fg = C.flamingo },
|
||||||
|
markdownCodeBlock = { fg = C.flamingo },
|
||||||
|
markdownLinkText = { fg = C.blue, style = { "underline" } },
|
||||||
|
markdownH1 = { link = "rainbow1" },
|
||||||
|
markdownH2 = { link = "rainbow2" },
|
||||||
|
markdownH3 = { link = "rainbow3" },
|
||||||
|
markdownH4 = { link = "rainbow4" },
|
||||||
|
markdownH5 = { link = "rainbow5" },
|
||||||
|
markdownH6 = { link = "rainbow6" },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
local bg = O.transparent_background and C.none or C.lavender
|
||||||
|
local fg = O.transparent_background and C.lavender or C.base
|
||||||
|
|
||||||
|
local secondary_bg = O.transparent_background and C.none or C.blue
|
||||||
|
local secondary_fg = O.transparent_background and C.blue or C.base
|
||||||
|
|
||||||
|
local muted_bg = O.transparent_background and C.none or C.overlay0
|
||||||
|
local muted_fg = O.transparent_background and C.overlay0 or C.base
|
||||||
|
|
||||||
|
return {
|
||||||
|
MasonHeader = { fg = fg, bg = bg, style = { "bold" } },
|
||||||
|
MasonHeaderSecondary = { fg = secondary_fg, bg = secondary_bg, style = { "bold" } },
|
||||||
|
|
||||||
|
MasonHighlight = { fg = C.green },
|
||||||
|
MasonHighlightBlock = {
|
||||||
|
bg = O.transparent_background and C.none or C.green,
|
||||||
|
fg = O.transparent_background and C.green or C.base,
|
||||||
|
},
|
||||||
|
MasonHighlightBlockBold = { bg = secondary_bg, fg = secondary_fg, bold = true },
|
||||||
|
|
||||||
|
MasonHighlightSecondary = { fg = C.mauve },
|
||||||
|
MasonHighlightBlockSecondary = { fg = secondary_fg, bg = secondary_bg },
|
||||||
|
MasonHighlightBlockBoldSecondary = { fg = fg, bg = bg, bold = true },
|
||||||
|
|
||||||
|
MasonMuted = { fg = C.overlay0 },
|
||||||
|
MasonMutedBlock = { bg = muted_bg, fg = muted_fg },
|
||||||
|
MasonMutedBlockBold = { bg = C.yellow, fg = C.base, bold = true },
|
||||||
|
|
||||||
|
MasonError = { fg = C.red },
|
||||||
|
|
||||||
|
MasonHeading = { fg = C.lavender, bold = true },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,63 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
local transparent_background = require("catppuccin").options.transparent_background
|
||||||
|
local bg_highlight = transparent_background and "NONE" or C.base
|
||||||
|
|
||||||
|
local inactive_bg = transparent_background and "NONE" or C.mantle
|
||||||
|
|
||||||
|
local indentscope_color = O.integrations.mini.indentscope_color
|
||||||
|
return {
|
||||||
|
MiniCompletionActiveParameter = { style = { "underline" } },
|
||||||
|
|
||||||
|
MiniCursorword = { style = { "underline" } },
|
||||||
|
MiniCursorwordCurrent = { style = { "underline" } },
|
||||||
|
|
||||||
|
MiniIndentscopeSymbol = { fg = C[indentscope_color] or C.text },
|
||||||
|
MiniIndentscopePrefix = { style = { "nocombine" } }, -- Make it invisible
|
||||||
|
|
||||||
|
MiniJump = { fg = C.overlay2, bg = C.pink },
|
||||||
|
|
||||||
|
MiniJump2dSpot = { bg = C.base, fg = C.peach, style = { "bold", "underline" } },
|
||||||
|
|
||||||
|
MiniStarterCurrent = {},
|
||||||
|
MiniStarterFooter = { fg = C.yellow, style = { "italic" } },
|
||||||
|
MiniStarterHeader = { fg = C.blue },
|
||||||
|
MiniStarterInactive = { fg = C.surface2, style = O.styles.comments },
|
||||||
|
MiniStarterItem = { fg = C.text },
|
||||||
|
MiniStarterItemBullet = { fg = C.blue },
|
||||||
|
MiniStarterItemPrefix = { fg = C.pink },
|
||||||
|
MiniStarterSection = { fg = C.flamingo },
|
||||||
|
MiniStarterQuery = { fg = C.green },
|
||||||
|
|
||||||
|
MiniStatuslineDevinfo = { fg = C.subtext1, bg = C.surface1 },
|
||||||
|
MiniStatuslineFileinfo = { fg = C.subtext1, bg = C.surface1 },
|
||||||
|
MiniStatuslineFilename = { fg = C.text, bg = C.mantle },
|
||||||
|
MiniStatuslineInactive = { fg = C.blue, bg = C.mantle },
|
||||||
|
MiniStatuslineModeCommand = { fg = C.base, bg = C.peach, style = { "bold" } },
|
||||||
|
MiniStatuslineModeInsert = { fg = C.base, bg = C.green, style = { "bold" } },
|
||||||
|
MiniStatuslineModeNormal = { fg = C.mantle, bg = C.blue, style = { "bold" } },
|
||||||
|
MiniStatuslineModeOther = { fg = C.base, bg = C.teal, style = { "bold" } },
|
||||||
|
MiniStatuslineModeReplace = { fg = C.base, bg = C.red, style = { "bold" } },
|
||||||
|
MiniStatuslineModeVisual = { fg = C.base, bg = C.mauve, style = { "bold" } },
|
||||||
|
|
||||||
|
MiniSurround = { bg = C.pink, fg = C.surface1 },
|
||||||
|
|
||||||
|
MiniTablineCurrent = { fg = C.text, bg = C.base, sp = C.red, style = { "bold", "italic", "underline" } },
|
||||||
|
MiniTablineFill = { bg = bg_highlight },
|
||||||
|
MiniTablineHidden = { fg = C.text, bg = inactive_bg },
|
||||||
|
MiniTablineModifiedCurrent = { fg = C.red, bg = C.none, style = { "bold", "italic" } },
|
||||||
|
MiniTablineModifiedHidden = { fg = C.red, bg = C.none },
|
||||||
|
MiniTablineModifiedVisible = { fg = C.red, bg = C.none },
|
||||||
|
MiniTablineTabpagesection = { fg = C.surface1, bg = C.base },
|
||||||
|
MiniTablineVisible = { bg = C.none },
|
||||||
|
|
||||||
|
MiniTestEmphasis = { style = { "bold" } },
|
||||||
|
MiniTestFail = { fg = C.red, style = { "bold" } },
|
||||||
|
MiniTestPass = { fg = C.green, style = { "bold" } },
|
||||||
|
|
||||||
|
MiniTrailspace = { bg = C.red },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,100 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
local virtual_text = O.integrations.native_lsp.virtual_text
|
||||||
|
local underlines = O.integrations.native_lsp.underlines
|
||||||
|
local inlay_hints = O.integrations.native_lsp.inlay_hints
|
||||||
|
|
||||||
|
local error = C.red
|
||||||
|
local warning = C.yellow
|
||||||
|
local info = C.sky
|
||||||
|
local hint = C.teal
|
||||||
|
local darkening_percentage = 0.095
|
||||||
|
|
||||||
|
return {
|
||||||
|
-- These groups are for the native LSP client. Some other LSP clients may
|
||||||
|
-- use these groups, or use their own. Consult your LSP client's
|
||||||
|
-- documentation.
|
||||||
|
LspReferenceText = { bg = C.surface1 }, -- used for highlighting "text" references
|
||||||
|
LspReferenceRead = { bg = C.surface1 }, -- used for highlighting "read" references
|
||||||
|
LspReferenceWrite = { bg = C.surface1 }, -- used for highlighting "write" references
|
||||||
|
-- highlight diagnostics in numberline
|
||||||
|
|
||||||
|
DiagnosticVirtualTextError = {
|
||||||
|
bg = O.transparent_background and C.none or U.darken(error, darkening_percentage, C.base),
|
||||||
|
fg = error,
|
||||||
|
style = virtual_text.errors,
|
||||||
|
}, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
|
||||||
|
DiagnosticVirtualTextWarn = {
|
||||||
|
bg = O.transparent_background and C.none or U.darken(warning, darkening_percentage, C.base),
|
||||||
|
fg = warning,
|
||||||
|
style = virtual_text.warnings,
|
||||||
|
}, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
|
||||||
|
DiagnosticVirtualTextInfo = {
|
||||||
|
bg = O.transparent_background and C.none or U.darken(info, darkening_percentage, C.base),
|
||||||
|
fg = info,
|
||||||
|
style = virtual_text.information,
|
||||||
|
}, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
|
||||||
|
DiagnosticVirtualTextHint = {
|
||||||
|
bg = O.transparent_background and C.none or U.darken(hint, darkening_percentage, C.base),
|
||||||
|
fg = hint,
|
||||||
|
style = virtual_text.hints,
|
||||||
|
}, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
|
||||||
|
|
||||||
|
DiagnosticError = { bg = C.none, fg = error, style = virtual_text.errors }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
|
||||||
|
DiagnosticWarn = { bg = C.none, fg = warning, style = virtual_text.warnings }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
|
||||||
|
DiagnosticInfo = { bg = C.none, fg = info, style = virtual_text.information }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
|
||||||
|
DiagnosticHint = { bg = C.none, fg = hint, style = virtual_text.hints }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
|
||||||
|
|
||||||
|
-- for nvim nightly
|
||||||
|
DiagnosticUnderlineError = { style = underlines.errors, sp = error }, -- Used to underline "Error" diagnostics
|
||||||
|
DiagnosticUnderlineWarn = { style = underlines.warnings, sp = warning }, -- Used to underline "Warn" diagnostics
|
||||||
|
DiagnosticUnderlineInfo = { style = underlines.information, sp = info }, -- Used to underline "Info" diagnostics
|
||||||
|
DiagnosticUnderlineHint = { style = underlines.hints, sp = hint }, -- Used to underline "Hint" diagnostics
|
||||||
|
|
||||||
|
DiagnosticFloatingError = { fg = error }, -- Used to color "Error" diagnostic messages in diagnostics float
|
||||||
|
DiagnosticFloatingWarn = { fg = warning }, -- Used to color "Warn" diagnostic messages in diagnostics float
|
||||||
|
DiagnosticFloatingInfo = { fg = info }, -- Used to color "Info" diagnostic messages in diagnostics float
|
||||||
|
DiagnosticFloatingHint = { fg = hint }, -- Used to color "Hint" diagnostic messages in diagnostics float
|
||||||
|
|
||||||
|
DiagnosticSignError = { fg = error }, -- Used for "Error" signs in sign column
|
||||||
|
DiagnosticSignWarn = { fg = warning }, -- Used for "Warn" signs in sign column
|
||||||
|
DiagnosticSignInfo = { fg = info }, -- Used for "Info" signs in sign column
|
||||||
|
DiagnosticSignHint = { fg = hint }, -- Used for "Hint" signs in sign column
|
||||||
|
|
||||||
|
LspDiagnosticsDefaultError = { fg = error }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline)
|
||||||
|
LspDiagnosticsDefaultWarning = { fg = warning }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline)
|
||||||
|
LspDiagnosticsDefaultInformation = { fg = info }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline)
|
||||||
|
LspDiagnosticsDefaultHint = { fg = hint }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline)
|
||||||
|
LspSignatureActiveParameter = { fg = C.peach },
|
||||||
|
-- LspDiagnosticsFloatingError = { }, -- Used to color "Error" diagnostic messages in diagnostics float
|
||||||
|
-- LspDiagnosticsFloatingWarning = { }, -- Used to color "Warning" diagnostic messages in diagnostics float
|
||||||
|
-- LspDiagnosticsFloatingInformation = { }, -- Used to color "Information" diagnostic messages in diagnostics float
|
||||||
|
-- LspDiagnosticsFloatingHint = { }, -- Used to color "Hint" diagnostic messages in diagnostics float
|
||||||
|
|
||||||
|
LspDiagnosticsError = { fg = error },
|
||||||
|
LspDiagnosticsWarning = { fg = warning },
|
||||||
|
LspDiagnosticsInformation = { fg = info },
|
||||||
|
LspDiagnosticsHint = { fg = hint },
|
||||||
|
LspDiagnosticsVirtualTextError = { fg = error, style = virtual_text.errors }, -- Used for "Error" diagnostic virtual text
|
||||||
|
LspDiagnosticsVirtualTextWarning = { fg = warning, style = virtual_text.warnings }, -- Used for "Warning" diagnostic virtual text
|
||||||
|
LspDiagnosticsVirtualTextInformation = { fg = info, style = virtual_text.warnings }, -- Used for "Information" diagnostic virtual text
|
||||||
|
LspDiagnosticsVirtualTextHint = { fg = hint, style = virtual_text.hints }, -- Used for "Hint" diagnostic virtual text
|
||||||
|
LspDiagnosticsUnderlineError = { style = underlines.errors, sp = error }, -- Used to underline "Error" diagnostics
|
||||||
|
LspDiagnosticsUnderlineWarning = { style = underlines.warnings, sp = warning }, -- Used to underline "Warning" diagnostics
|
||||||
|
LspDiagnosticsUnderlineInformation = { style = underlines.information, sp = info }, -- Used to underline "Information" diagnostics
|
||||||
|
LspDiagnosticsUnderlineHint = { style = underlines.hints, sp = hint }, -- Used to underline "Hint" diagnostics
|
||||||
|
LspCodeLens = { fg = C.overlay0 }, -- virtual text of the codelens
|
||||||
|
LspCodeLensSeparator = { link = "LspCodeLens" }, -- virtual text of the codelens separators
|
||||||
|
LspInlayHint = {
|
||||||
|
-- fg of `Comment`
|
||||||
|
fg = C.overlay0,
|
||||||
|
-- bg of `CursorLine`
|
||||||
|
bg = (O.transparent_background or not inlay_hints.background) and C.none
|
||||||
|
or U.vary_color({ latte = U.lighten(C.mantle, 0.70, C.base) }, U.darken(C.surface0, 0.64, C.base)),
|
||||||
|
}, -- virtual text of the inlay hints
|
||||||
|
LspInfoBorder = { link = "FloatBorder" }, -- LspInfo border
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
local background = O.integrations.navic.custom_bg and O.integrations.navic.custom_bg or C.none
|
||||||
|
if O.integrations.navic.custom_bg == "lualine" then background = C.mantle end
|
||||||
|
|
||||||
|
return {
|
||||||
|
NavicIconsFile = { fg = C.blue, bg = background },
|
||||||
|
NavicIconsModule = { fg = C.blue, bg = background },
|
||||||
|
NavicIconsNamespace = { fg = C.blue, bg = background },
|
||||||
|
NavicIconsPackage = { fg = C.blue, bg = background },
|
||||||
|
NavicIconsClass = { fg = C.yellow, bg = background },
|
||||||
|
NavicIconsMethod = { fg = C.blue, bg = background },
|
||||||
|
NavicIconsProperty = { fg = C.green, bg = background },
|
||||||
|
NavicIconsField = { fg = C.green, bg = background },
|
||||||
|
NavicIconsConstructor = { fg = C.blue, bg = background },
|
||||||
|
NavicIconsEnum = { fg = C.green, bg = background },
|
||||||
|
NavicIconsInterface = { fg = C.yellow, bg = background },
|
||||||
|
NavicIconsFunction = { fg = C.blue, bg = background },
|
||||||
|
NavicIconsVariable = { fg = C.flamingo, bg = background },
|
||||||
|
NavicIconsConstant = { fg = C.peach, bg = background },
|
||||||
|
NavicIconsString = { fg = C.green, style = O.styles.strings, bg = background },
|
||||||
|
NavicIconsNumber = { fg = C.peach, bg = background },
|
||||||
|
NavicIconsBoolean = { fg = C.peach, bg = background },
|
||||||
|
NavicIconsArray = { fg = C.peach, bg = background },
|
||||||
|
NavicIconsObject = { fg = C.peach, bg = background },
|
||||||
|
NavicIconsKey = { fg = C.pink, style = O.styles.keywords, bg = background },
|
||||||
|
NavicIconsNull = { fg = C.peach, bg = background },
|
||||||
|
NavicIconsEnumMember = { fg = C.red, bg = background },
|
||||||
|
NavicIconsStruct = { fg = C.blue, bg = background },
|
||||||
|
NavicIconsEvent = { fg = C.blue, bg = background },
|
||||||
|
NavicIconsOperator = { fg = C.sky, bg = background },
|
||||||
|
NavicIconsTypeParameter = { fg = C.blue, bg = background },
|
||||||
|
NavicText = { fg = C.sapphire, bg = background },
|
||||||
|
NavicSeparator = { fg = C.text, bg = background },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,244 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
NeogitBranch = {
|
||||||
|
fg = C.peach,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitRemote = {
|
||||||
|
fg = C.green,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitUnmergedInto = {
|
||||||
|
link = "Function",
|
||||||
|
},
|
||||||
|
NeogitUnpulledFrom = {
|
||||||
|
link = "Function",
|
||||||
|
},
|
||||||
|
NeogitObjectId = {
|
||||||
|
link = "Comment",
|
||||||
|
},
|
||||||
|
NeogitStash = {
|
||||||
|
link = "Comment",
|
||||||
|
},
|
||||||
|
NeogitRebaseDone = {
|
||||||
|
link = "Comment",
|
||||||
|
},
|
||||||
|
NeogitHunkHeader = {
|
||||||
|
bg = U.darken(C.blue, 0.095, C.base),
|
||||||
|
fg = U.darken(C.blue, 0.5, C.base),
|
||||||
|
},
|
||||||
|
NeogitHunkHeaderHighlight = {
|
||||||
|
bg = U.darken(C.blue, 0.215, C.base),
|
||||||
|
fg = C.blue,
|
||||||
|
},
|
||||||
|
NeogitDiffContextHighlight = {
|
||||||
|
bg = C.surface0,
|
||||||
|
},
|
||||||
|
NeogitDiffDeleteHighlight = {
|
||||||
|
bg = U.darken(C.red, 0.345, C.base),
|
||||||
|
fg = U.lighten(C.red, 0.850, C.text),
|
||||||
|
},
|
||||||
|
NeogitDiffAddHighlight = {
|
||||||
|
bg = U.darken(C.green, 0.345, C.base),
|
||||||
|
fg = U.lighten(C.green, 0.850, C.text),
|
||||||
|
},
|
||||||
|
NeogitDiffDelete = {
|
||||||
|
bg = U.darken(C.red, 0.095, C.base),
|
||||||
|
fg = U.darken(C.red, 0.800, C.base),
|
||||||
|
},
|
||||||
|
NeogitDiffAdd = {
|
||||||
|
bg = U.darken(C.green, 0.095, C.base),
|
||||||
|
fg = U.darken(C.green, 0.800, C.base),
|
||||||
|
},
|
||||||
|
NeogitCommitViewHeader = {
|
||||||
|
bg = U.darken(C.blue, 0.300, C.base),
|
||||||
|
fg = U.lighten(C.blue, 0.800, C.text),
|
||||||
|
},
|
||||||
|
NeogitChangeModified = {
|
||||||
|
fg = C.blue,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitChangeDeleted = {
|
||||||
|
fg = C.red,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitChangeAdded = {
|
||||||
|
fg = C.green,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitChangeRenamed = {
|
||||||
|
fg = C.mauve,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitChangeUpdated = {
|
||||||
|
fg = C.peach,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitChangeCopied = {
|
||||||
|
fg = C.pink,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitChangeBothModified = {
|
||||||
|
fg = C.yellow,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitChangeNewFile = {
|
||||||
|
fg = C.green,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitUntrackedfiles = {
|
||||||
|
fg = C.mauve,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitUnstagedchanges = {
|
||||||
|
fg = C.mauve,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitUnmergedchanges = {
|
||||||
|
fg = C.mauve,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitUnpulledchanges = {
|
||||||
|
fg = C.mauve,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitRecentcommits = {
|
||||||
|
fg = C.mauve,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitStagedchanges = {
|
||||||
|
fg = C.mauve,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitStashes = {
|
||||||
|
fg = C.mauve,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitRebasing = {
|
||||||
|
fg = C.mauve,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitNotificationInfo = {
|
||||||
|
fg = C.blue,
|
||||||
|
},
|
||||||
|
NeogitNotificationWarning = {
|
||||||
|
fg = C.yellow,
|
||||||
|
},
|
||||||
|
NeogitNotificationError = {
|
||||||
|
fg = C.red,
|
||||||
|
},
|
||||||
|
NeogitGraphRed = {
|
||||||
|
fg = C.red,
|
||||||
|
},
|
||||||
|
NeogitGraphWhite = {
|
||||||
|
fg = C.base,
|
||||||
|
},
|
||||||
|
NeogitGraphYellow = {
|
||||||
|
fg = C.yellow,
|
||||||
|
},
|
||||||
|
NeogitGraphGreen = {
|
||||||
|
fg = C.green,
|
||||||
|
},
|
||||||
|
NeogitGraphCyan = {
|
||||||
|
fg = C.blue,
|
||||||
|
},
|
||||||
|
NeogitGraphBlue = {
|
||||||
|
fg = C.blue,
|
||||||
|
},
|
||||||
|
NeogitGraphPurple = {
|
||||||
|
fg = C.lavender,
|
||||||
|
},
|
||||||
|
NeogitGraphGray = {
|
||||||
|
fg = C.subtext1,
|
||||||
|
},
|
||||||
|
NeogitGraphOrange = {
|
||||||
|
fg = C.peach,
|
||||||
|
},
|
||||||
|
NeogitGraphBoldRed = {
|
||||||
|
fg = C.red,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitGraphBoldWhite = {
|
||||||
|
fg = C.white,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitGraphBoldYellow = {
|
||||||
|
fg = C.yellow,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitGraphBoldGreen = {
|
||||||
|
fg = C.green,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitGraphBoldCyan = {
|
||||||
|
fg = C.blue,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitGraphBoldBlue = {
|
||||||
|
fg = C.blue,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitGraphBoldPurple = {
|
||||||
|
fg = C.lavender,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitGraphBoldGray = {
|
||||||
|
fg = C.subtext1,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitDiffContext = {
|
||||||
|
bg = C.base,
|
||||||
|
},
|
||||||
|
NeogitPopupBold = {
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitPopupSwitchKey = {
|
||||||
|
fg = C.lavender,
|
||||||
|
},
|
||||||
|
NeogitPopupOptionKey = {
|
||||||
|
fg = C.lavender,
|
||||||
|
},
|
||||||
|
NeogitPopupConfigKey = {
|
||||||
|
fg = C.lavender,
|
||||||
|
},
|
||||||
|
NeogitPopupActionKey = {
|
||||||
|
fg = C.lavender,
|
||||||
|
},
|
||||||
|
NeogitFilePath = {
|
||||||
|
fg = C.blue,
|
||||||
|
style = { "italic" },
|
||||||
|
},
|
||||||
|
NeogitDiffHeader = {
|
||||||
|
bg = C.base,
|
||||||
|
fg = C.blue,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitDiffHeaderHighlight = {
|
||||||
|
bg = C.base,
|
||||||
|
fg = C.peach,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitUnpushedTo = {
|
||||||
|
fg = C.lavender,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitFold = {
|
||||||
|
fg = C.none,
|
||||||
|
bg = C.none,
|
||||||
|
},
|
||||||
|
NeogitSectionHeader = {
|
||||||
|
fg = C.mauve,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
NeogitTagName = {
|
||||||
|
fg = C.yellow,
|
||||||
|
},
|
||||||
|
NeogitTagDistance = {
|
||||||
|
fg = C.blue,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
NeotestPassed = { fg = C.green },
|
||||||
|
NeotestFailed = { fg = C.red },
|
||||||
|
NeotestRunning = { fg = C.yellow },
|
||||||
|
NeotestSkipped = { fg = C.blue },
|
||||||
|
NeotestTest = { fg = C.text },
|
||||||
|
NeotestNamespace = { fg = C.mauve },
|
||||||
|
NeotestFocused = { style = { "bold", "underline" } },
|
||||||
|
NeotestFile = { fg = C.blue },
|
||||||
|
NeotestDir = { fg = C.blue },
|
||||||
|
NeotestIndent = { fg = C.overlay1 },
|
||||||
|
NeotestExpandMarker = { fg = C.overlay1 },
|
||||||
|
NeotestAdapterName = { fg = C.maroon },
|
||||||
|
NeotestWinSelect = { fg = C.blue, style = { "bold" } },
|
||||||
|
NeotestMarked = { fg = C.peach, style = { "bold" } },
|
||||||
|
NeotestTarget = { fg = C.red },
|
||||||
|
NeotestUnknown = { fg = C.text },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
local active_bg = O.transparent_background and C.none or C.mantle
|
||||||
|
local inactive_bg = O.transparent_background and C.none or C.base
|
||||||
|
return {
|
||||||
|
NeoTreeDirectoryName = { fg = C.blue },
|
||||||
|
NeoTreeDirectoryIcon = { fg = C.blue },
|
||||||
|
NeoTreeNormal = { fg = C.text, bg = active_bg },
|
||||||
|
NeoTreeNormalNC = { fg = C.text, bg = active_bg },
|
||||||
|
NeoTreeExpander = { fg = C.overlay0 },
|
||||||
|
NeoTreeIndentMarker = { fg = C.overlay0 },
|
||||||
|
NeoTreeRootName = { fg = C.blue, style = { "bold" } },
|
||||||
|
NeoTreeSymbolicLinkTarget = { fg = C.pink },
|
||||||
|
NeoTreeModified = { fg = C.peach },
|
||||||
|
|
||||||
|
NeoTreeGitAdded = { fg = C.green },
|
||||||
|
NeoTreeGitConflict = { fg = C.red },
|
||||||
|
NeoTreeGitDeleted = { fg = C.red },
|
||||||
|
NeoTreeGitIgnored = { fg = C.overlay0 },
|
||||||
|
NeoTreeGitModified = { fg = C.yellow },
|
||||||
|
NeoTreeGitUnstaged = { fg = C.red },
|
||||||
|
NeoTreeGitUntracked = { fg = C.mauve },
|
||||||
|
NeoTreeGitStaged = { fg = C.green },
|
||||||
|
|
||||||
|
NeoTreeFloatBorder = { link = "FloatBorder" },
|
||||||
|
NeoTreeFloatTitle = { link = "FloatTitle" },
|
||||||
|
NeoTreeTitleBar = { fg = C.mantle, bg = C.blue },
|
||||||
|
|
||||||
|
NeoTreeFileNameOpened = { fg = C.pink },
|
||||||
|
NeoTreeDimText = { fg = C.overlay1 },
|
||||||
|
NeoTreeFilterTerm = { fg = C.green, style = { "bold" } },
|
||||||
|
NeoTreeTabActive = { bg = active_bg, fg = C.lavender, style = { "bold" } },
|
||||||
|
NeoTreeTabInactive = { bg = inactive_bg, fg = C.overlay0 },
|
||||||
|
NeoTreeTabSeparatorActive = { fg = active_bg, bg = active_bg },
|
||||||
|
NeoTreeTabSeparatorInactive = { fg = inactive_bg, bg = inactive_bg },
|
||||||
|
NeoTreeVertSplit = { fg = C.base, bg = inactive_bg },
|
||||||
|
NeoTreeWinSeparator = {
|
||||||
|
fg = O.transparent_background and C.surface1 or C.base,
|
||||||
|
bg = O.transparent_background and C.none or C.base,
|
||||||
|
},
|
||||||
|
NeoTreeStatusLineNC = { fg = C.mantle, bg = C.mantle },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
local virtual_text = O.integrations.native_lsp.virtual_text
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return { -- Personally the default integration is already pretty good
|
||||||
|
NoiceCmdline = { fg = C.text },
|
||||||
|
NoiceCmdlineIcon = { fg = C.sky, style = virtual_text.information },
|
||||||
|
NoiceCmdlineIconSearch = { fg = C.yellow },
|
||||||
|
NoiceCmdlinePopupBorder = { fg = C.lavender },
|
||||||
|
NoiceCmdlinePopupBorderSearch = { fg = C.yellow },
|
||||||
|
NoiceConfirmBorder = { fg = C.blue },
|
||||||
|
NoiceMini = { fg = C.subtext0, blend = 0 },
|
||||||
|
NoiceFormatProgressDone = {
|
||||||
|
bg = O.transparent_background and C.none or U.darken(C.sky, 0.30, C.base),
|
||||||
|
fg = C.subtext0,
|
||||||
|
},
|
||||||
|
NoiceFormatProgressTodo = {
|
||||||
|
bg = O.transparent_background and C.none
|
||||||
|
or U.vary_color({ latte = U.lighten(C.mantle, 0.70, C.base) }, U.darken(C.surface0, 0.64, C.base)),
|
||||||
|
fg = C.subtext0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
NotifierIcon = { fg = C.mauve },
|
||||||
|
NotifierContent = { fg = C.overlay2, blend = 0, style = { "italic" } },
|
||||||
|
NotifierContentDim = { fg = C.overlay1, blend = 0, style = { "italic" } },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
NotifyBackground = { bg = (O.transparent_background and vim.o.winblend == 0) and "#000000" or C.mantle },
|
||||||
|
|
||||||
|
NotifyERRORBorder = { fg = C.red },
|
||||||
|
NotifyERRORIcon = { fg = C.red },
|
||||||
|
NotifyERRORTitle = { fg = C.red, style = { "italic" } },
|
||||||
|
NotifyWARNBorder = { fg = C.yellow },
|
||||||
|
NotifyWARNIcon = { fg = C.yellow },
|
||||||
|
NotifyWARNTitle = { fg = C.yellow, style = { "italic" } },
|
||||||
|
NotifyINFOBorder = { fg = C.blue },
|
||||||
|
NotifyINFOIcon = { fg = C.blue },
|
||||||
|
NotifyINFOTitle = { fg = C.blue, style = { "italic" } },
|
||||||
|
NotifyDEBUGBorder = { fg = C.peach },
|
||||||
|
NotifyDEBUGIcon = { fg = C.peach },
|
||||||
|
NotifyDEBUGTitle = { fg = C.peach, style = { "italic" } },
|
||||||
|
NotifyTRACEBorder = { fg = C.rosewater },
|
||||||
|
NotifyTRACEIcon = { fg = C.rosewater },
|
||||||
|
NotifyTRACETitle = { fg = C.rosewater, style = { "italic" } },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
NvimTreeFolderName = { fg = C.blue },
|
||||||
|
NvimTreeFolderIcon = { fg = C.blue },
|
||||||
|
NvimTreeNormal = { fg = C.text, bg = O.transparent_background and C.none or C.mantle },
|
||||||
|
NvimTreeOpenedFolderName = { fg = C.blue },
|
||||||
|
NvimTreeEmptyFolderName = { fg = C.blue },
|
||||||
|
NvimTreeIndentMarker = { fg = C.overlay0 },
|
||||||
|
NvimTreeWinSeparator = {
|
||||||
|
fg = O.transparent_background and C.surface1 or C.base,
|
||||||
|
bg = O.transparent_background and C.none or C.base,
|
||||||
|
},
|
||||||
|
NvimTreeRootFolder = { fg = C.lavender, style = { "bold" } },
|
||||||
|
NvimTreeSymlink = { fg = C.pink },
|
||||||
|
NvimTreeStatuslineNc = { fg = C.mantle, bg = C.mantle },
|
||||||
|
NvimTreeGitDirty = { fg = C.yellow },
|
||||||
|
NvimTreeGitNew = { fg = C.blue },
|
||||||
|
NvimTreeGitDeleted = { fg = C.red },
|
||||||
|
NvimTreeSpecialFile = { fg = C.flamingo },
|
||||||
|
NvimTreeImageFile = { fg = C.text },
|
||||||
|
NvimTreeOpenedFile = { fg = C.pink },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
-- colors
|
||||||
|
OctoGrey = { fg = C.base },
|
||||||
|
OctoBlue = { fg = C.blue },
|
||||||
|
OctoGreen = { fg = C.green },
|
||||||
|
OctoRed = { fg = C.red },
|
||||||
|
OctoPurple = { fg = C.mauve },
|
||||||
|
OctoYellow = { fg = C.yellow },
|
||||||
|
-- highlight groups
|
||||||
|
OctoDirty = { link = "ErrorMsg" },
|
||||||
|
OctoIssueTitle = { link = "PreProc" },
|
||||||
|
OctoIssueId = { link = "Question" },
|
||||||
|
OctoEmpty = { link = "Comment" },
|
||||||
|
OctoFloat = { link = "NormalNC" },
|
||||||
|
OctoDate = { link = "Comment" },
|
||||||
|
OctoSymbol = { link = "Comment" },
|
||||||
|
OctoTimelineItemHeading = { link = "Comment" },
|
||||||
|
OctoDetailsLabel = { link = "Title" },
|
||||||
|
OctoMissingDetails = { link = "Comment" },
|
||||||
|
OctoDetailsValue = { link = "Identifier" },
|
||||||
|
OctoDiffHunkPosition = { link = "NormalFloat" },
|
||||||
|
OctoCommentLine = { link = "TabLineSel" },
|
||||||
|
OctoViewer = { fg = C.base, bg = C.blue },
|
||||||
|
OctoBubble = { fg = C.text, bg = C.mantle },
|
||||||
|
OctoBubbleGrey = { fg = C.text, bg = C.mantle },
|
||||||
|
OctoBubbleDelimiterGrey = { fg = C.mantle },
|
||||||
|
OctoBubbleGreen = { fg = C.base, bg = C.green },
|
||||||
|
OctoBubbleDelimiterGreen = { fg = C.green },
|
||||||
|
OctoBubbleBlue = { fg = C.base, bg = C.sky },
|
||||||
|
OctoBubbleDelimiterBlue = { fg = C.sky },
|
||||||
|
OctoBubbleYellow = { fg = C.base, bg = C.yellow },
|
||||||
|
OctoBubbleDelimiterYellow = { fg = C.yellow },
|
||||||
|
OctoBubbleRed = { fg = C.base, bg = C.red },
|
||||||
|
OctoBubbleDelimiterRed = { fg = C.red },
|
||||||
|
OctoBubblePurple = { fg = C.base, bg = C.mauve },
|
||||||
|
OctoBubbleDelimiterPurple = { fg = C.mauve },
|
||||||
|
OctoUser = { link = "OctoBubble" },
|
||||||
|
OctoUserViewer = { link = "OctoViewer" },
|
||||||
|
OctoReaction = { link = "OctoBubble" },
|
||||||
|
OctoReactionViewer = { link = "OctoViewer" },
|
||||||
|
OctoPassingTest = { link = "OctoGreen" },
|
||||||
|
OctoFailingTest = { link = "OctoRed" },
|
||||||
|
OctoPullAdditions = { link = "OctoGreen" },
|
||||||
|
OctoPullDeletions = { link = "OctoRed" },
|
||||||
|
OctoPullModifications = { fg = C.peach },
|
||||||
|
OctoStateOpen = { fg = C.green, bg = C.mantle },
|
||||||
|
OctoStateOpenFloat = { fg = C.green, bg = C.mantle },
|
||||||
|
OctoStateClosed = { fg = C.red, bg = C.mantle },
|
||||||
|
OctoStateClosedFloat = { fg = C.red, bg = C.mantle },
|
||||||
|
OctoStateMerged = { fg = C.mauve, bg = C.mantle },
|
||||||
|
OctoStateMergedFloat = { fg = C.mauve, bg = C.mantle },
|
||||||
|
OctoStatePending = { fg = C.peach, bg = C.mantle },
|
||||||
|
OctoStatePendingFloat = { fg = C.peach, bg = C.mantle },
|
||||||
|
OctoStateApproved = { link = "OctoStateOpen" },
|
||||||
|
OctoStateApprovedFloat = { link = "OctoStateOpen" },
|
||||||
|
OctoStateChangesRequested = { fg = C.maroon, bg = C.mantle },
|
||||||
|
OctoStateChangesRequestedFloat = { fg = C.maroon, bg = C.mantle },
|
||||||
|
OctoStateCommented = { link = "Normal" },
|
||||||
|
OctoStateCommentedFloat = { link = "Normal" },
|
||||||
|
OctoStateDismissed = { link = "OctoStateClosed" },
|
||||||
|
OctoStateDismissedFloat = { link = "OctoStateClosed" },
|
||||||
|
OctoStateSubmittedBubble = { link = "OctoBubbleGreen" },
|
||||||
|
OctoFilePanelCounter = { fg = C.blue, style = { "bold" } },
|
||||||
|
OctoFilePanelTitle = { fg = C.blue, style = { "bold" } },
|
||||||
|
OctoNormalFront = { fg = C.text },
|
||||||
|
OctoYellowFloat = { fg = C.yellow, bg = C.mantle },
|
||||||
|
OctoPurpleFloat = { fg = C.mauve, bg = C.mantle },
|
||||||
|
OctoRedFloat = { fg = C.red, bg = C.mantle },
|
||||||
|
OctoGreenFloat = { fg = C.green, bg = C.mantle },
|
||||||
|
OctoGreyFloat = { fg = C.text, bg = C.mantle },
|
||||||
|
OctoBlueFloat = { fg = C.blue, bg = C.mantle },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
OverseerPENDING = { fg = C.grey },
|
||||||
|
OverseerRUNNING = { fg = C.yellow },
|
||||||
|
OverseerSUCCESS = { fg = C.green },
|
||||||
|
OverseerCANCELED = { fg = C.overlay2 },
|
||||||
|
OverseerFAILURE = { fg = C.red },
|
||||||
|
OverseerTask = { fg = C.blue },
|
||||||
|
OverseerTaskBorder = { fg = C.sky },
|
||||||
|
OverseerOutput = { fg = C.text },
|
||||||
|
OverseerComponent = { fg = C.yellow },
|
||||||
|
OverseerField = { fg = C.green },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
PounceMatch = { bg = U.lighten(C.green, 0.7), fg = C.base, style = { "bold" } },
|
||||||
|
PounceGap = { bg = U.darken(C.green, 0.7), fg = C.base, style = { "bold" } },
|
||||||
|
PounceAccept = { bg = C.peach, fg = C.base, style = { "bold" } },
|
||||||
|
PounceAcceptBest = { bg = C.teal, fg = C.base, style = { "bold" } },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
RainbowDelimiterRed = { fg = C.red },
|
||||||
|
RainbowDelimiterYellow = { fg = C.yellow },
|
||||||
|
RainbowDelimiterBlue = { fg = C.blue },
|
||||||
|
RainbowDelimiterOrange = { fg = C.peach },
|
||||||
|
RainbowDelimiterGreen = { fg = C.green },
|
||||||
|
RainbowDelimiterViolet = { fg = C.mauve },
|
||||||
|
RainbowDelimiterCyan = { fg = C.teal },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
OperatorSandwichAdd = { bg = C.blue, fg = C.base },
|
||||||
|
OperatorSandwichBuns = { bg = C.blue, fg = C.base },
|
||||||
|
OperatorSandwichChange = { bg = C.blue, fg = C.base },
|
||||||
|
OperatorSandwichDelete = { bg = C.blue, fg = C.base },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
if vim.treesitter.highlighter.hl_map then
|
||||||
|
vim.notify_once(
|
||||||
|
[[Catppuccin (info):
|
||||||
|
semantic_tokens integration requires neovim 0.8
|
||||||
|
If you want to stay on nvim 0.7, disable the integration.
|
||||||
|
]],
|
||||||
|
vim.log.levels.INFO
|
||||||
|
)
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
return {
|
||||||
|
["@lsp.type.boolean"] = { link = "@boolean" },
|
||||||
|
["@lsp.type.builtinType"] = { link = "@type.builtin" },
|
||||||
|
["@lsp.type.comment"] = { link = "@comment" },
|
||||||
|
["@lsp.type.enum"] = { link = "@type" },
|
||||||
|
["@lsp.type.enumMember"] = { link = "@constant" },
|
||||||
|
["@lsp.type.escapeSequence"] = { link = "@string.escape" },
|
||||||
|
["@lsp.type.formatSpecifier"] = { link = "@punctuation.special" },
|
||||||
|
["@lsp.type.interface"] = { fg = C.flamingo },
|
||||||
|
["@lsp.type.keyword"] = { link = "@keyword" },
|
||||||
|
["@lsp.type.namespace"] = { link = "@module" },
|
||||||
|
["@lsp.type.number"] = { link = "@number" },
|
||||||
|
["@lsp.type.operator"] = { link = "@operator" },
|
||||||
|
["@lsp.type.parameter"] = { link = "@parameter" },
|
||||||
|
["@lsp.type.property"] = { link = "@property" },
|
||||||
|
["@lsp.type.selfKeyword"] = { link = "@variable.builtin" },
|
||||||
|
["@lsp.type.typeAlias"] = { link = "@type.definition" },
|
||||||
|
["@lsp.type.unresolvedReference"] = { link = "@error" },
|
||||||
|
["@lsp.type.variable"] = {}, -- use treesitter styles for regular variables
|
||||||
|
["@lsp.typemod.class.defaultLibrary"] = { link = "@type.builtin" },
|
||||||
|
["@lsp.typemod.enum.defaultLibrary"] = { link = "@type.builtin" },
|
||||||
|
["@lsp.typemod.enumMember.defaultLibrary"] = { link = "@constant.builtin" },
|
||||||
|
["@lsp.typemod.function.defaultLibrary"] = { link = "@function.builtin" },
|
||||||
|
["@lsp.typemod.keyword.async"] = { link = "@keyword.coroutine" },
|
||||||
|
["@lsp.typemod.macro.defaultLibrary"] = { link = "@function.builtin" },
|
||||||
|
["@lsp.typemod.method.defaultLibrary"] = { link = "@function.builtin" },
|
||||||
|
["@lsp.typemod.operator.injected"] = { link = "@operator" },
|
||||||
|
["@lsp.typemod.string.injected"] = { link = "@string" },
|
||||||
|
["@lsp.typemod.type.defaultLibrary"] = { link = "@type.builtin" },
|
||||||
|
["@lsp.typemod.variable.defaultLibrary"] = { link = "@variable.builtin" },
|
||||||
|
["@lsp.typemod.variable.injected"] = { link = "@variable" },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
-- https://github.com/simrat39/symbols-outline.nvim
|
||||||
|
FocusedSymbol = { fg = C.yellow, bg = C.none },
|
||||||
|
|
||||||
|
-- https://github.com/hedyhli/outline.nvim
|
||||||
|
OutlineCurrent = { link = "FocusedSymbol" },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
tkLink = { fg = C.blue },
|
||||||
|
tkBrackets = { fg = C.pink },
|
||||||
|
tkTag = { fg = C.sky },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
if O.integrations.telescope.style == "nvchad" then
|
||||||
|
return {
|
||||||
|
TelescopeBorder = {
|
||||||
|
fg = O.transparent_background and C.blue or C.mantle,
|
||||||
|
bg = O.transparent_background and C.none or C.mantle,
|
||||||
|
},
|
||||||
|
TelescopeMatching = { fg = C.blue },
|
||||||
|
TelescopeNormal = {
|
||||||
|
bg = O.transparent_background and C.none or C.mantle,
|
||||||
|
},
|
||||||
|
TelescopePromptBorder = {
|
||||||
|
fg = O.transparent_background and C.blue or C.surface0,
|
||||||
|
bg = O.transparent_background and C.none or C.surface0,
|
||||||
|
},
|
||||||
|
TelescopePromptNormal = {
|
||||||
|
fg = C.text,
|
||||||
|
bg = O.transparent_background and C.none or C.surface0,
|
||||||
|
},
|
||||||
|
TelescopePromptPrefix = {
|
||||||
|
fg = C.flamingo,
|
||||||
|
bg = O.transparent_background and C.none or C.surface0,
|
||||||
|
},
|
||||||
|
TelescopePreviewTitle = {
|
||||||
|
fg = O.transparent_background and C.green or C.base,
|
||||||
|
bg = O.transparent_background and C.none or C.green,
|
||||||
|
},
|
||||||
|
TelescopePromptTitle = {
|
||||||
|
fg = O.transparent_background and C.red or C.base,
|
||||||
|
bg = O.transparent_background and C.none or C.red,
|
||||||
|
},
|
||||||
|
TelescopeResultsTitle = {
|
||||||
|
fg = O.transparent_background and C.lavender or C.mantle,
|
||||||
|
bg = O.transparent_background and C.none or C.lavender,
|
||||||
|
},
|
||||||
|
TelescopeSelection = {
|
||||||
|
fg = O.transparent_background and C.flamingo or C.text,
|
||||||
|
bg = O.transparent_background and C.none or C.surface0,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
TelescopeSelectionCaret = { fg = C.flamingo },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
-- TelescopeNormal = { link = "NormalFloat" }, -- Respect telescope's default float bg
|
||||||
|
TelescopeBorder = { link = "FloatBorder" },
|
||||||
|
TelescopeSelectionCaret = { fg = C.flamingo },
|
||||||
|
TelescopeSelection = {
|
||||||
|
fg = O.transparent_background and C.flamingo or C.text,
|
||||||
|
bg = O.transparent_background and C.none or C.surface0,
|
||||||
|
style = { "bold" },
|
||||||
|
},
|
||||||
|
TelescopeMatching = { fg = C.blue },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,274 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
if vim.treesitter.highlighter.hl_map then
|
||||||
|
vim.notify_once(
|
||||||
|
[[Catppuccin (info):
|
||||||
|
nvim-treesitter integration requires neovim 0.8
|
||||||
|
If you want to stay on nvim 0.7, either disable the integration or pin catppuccin tag to v0.2.4 and nvim-treesitter commit to 4cccb6f494eb255b32a290d37c35ca12584c74d0.
|
||||||
|
]],
|
||||||
|
vim.log.levels.INFO
|
||||||
|
)
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
local colors = { -- Reference: https://github.com/nvim-treesitter/nvim-treesitter/blob/master/CONTRIBUTING.md
|
||||||
|
-- Identifiers
|
||||||
|
["@variable"] = { fg = C.text, style = O.styles.variables or {} }, -- Any variable name that does not have another highlight.
|
||||||
|
["@variable.builtin"] = { fg = C.red, style = O.styles.properties or {} }, -- Variable names that are defined by the languages, like this or self.
|
||||||
|
["@variable.parameter"] = { fg = C.maroon, style = O.styles.variables or {} }, -- For parameters of a function.
|
||||||
|
["@variable.member"] = { fg = C.lavender }, -- For fields.
|
||||||
|
|
||||||
|
["@constant"] = { link = "Constant" }, -- For constants
|
||||||
|
["@constant.builtin"] = { fg = C.peach, style = O.styles.keywords or {} }, -- For constant that are built in the language: nil in Lua.
|
||||||
|
["@constant.macro"] = { link = "Macro" }, -- For constants that are defined by macros: NULL in C.
|
||||||
|
|
||||||
|
["@module"] = { fg = C.lavender, style = O.styles.miscs or { "italic" } }, -- For identifiers referring to modules and namespaces.
|
||||||
|
["@label"] = { link = "Label" }, -- For labels: label: in C and :label: in Lua.
|
||||||
|
|
||||||
|
-- Literals
|
||||||
|
["@string"] = { link = "String" }, -- For strings.
|
||||||
|
["@string.documentation"] = { fg = C.teal, style = O.styles.strings or {} }, -- For strings documenting code (e.g. Python docstrings).
|
||||||
|
["@string.regexp"] = { fg = C.peach, style = O.styles.strings or {} }, -- For regexes.
|
||||||
|
["@string.escape"] = { fg = C.pink, style = O.styles.strings or {} }, -- For escape characters within a string.
|
||||||
|
["@string.special"] = { link = "Special" }, -- other special strings (e.g. dates)
|
||||||
|
["@string.special.path"] = { link = "Special" }, -- filenames
|
||||||
|
["@string.special.symbol"] = { fg = C.flamingo }, -- symbols or atoms
|
||||||
|
["@string.special.url"] = { fg = C.rosewater, style = { "italic", "underline" } }, -- urls, links and emails
|
||||||
|
|
||||||
|
["@character"] = { link = "Character" }, -- character literals
|
||||||
|
["@character.special"] = { link = "SpecialChar" }, -- special characters (e.g. wildcards)
|
||||||
|
|
||||||
|
["@boolean"] = { link = "Boolean" }, -- For booleans.
|
||||||
|
["@number"] = { link = "Number" }, -- For all numbers
|
||||||
|
["@number.float"] = { link = "Float" }, -- For floats.
|
||||||
|
|
||||||
|
-- Types
|
||||||
|
["@type"] = { link = "Type" }, -- For types.
|
||||||
|
["@type.builtin"] = { fg = C.yellow, style = O.styles.properties or { "italic" } }, -- For builtin types.
|
||||||
|
["@type.definition"] = { link = "Type" }, -- type definitions (e.g. `typedef` in C)
|
||||||
|
|
||||||
|
["@attribute"] = { link = "Constant" }, -- attribute annotations (e.g. Python decorators)
|
||||||
|
["@property"] = { fg = C.lavender, style = O.styles.properties or {} }, -- Same as TSField.
|
||||||
|
|
||||||
|
-- Functions
|
||||||
|
["@function"] = { link = "Function" }, -- For function (calls and definitions).
|
||||||
|
["@function.builtin"] = { fg = C.peach, style = O.styles.functions or {} }, -- For builtin functions: table.insert in Lua.
|
||||||
|
["@function.call"] = { link = "Function" }, -- function calls
|
||||||
|
["@function.macro"] = { fg = C.teal, style = O.styles.functions or {} }, -- For macro defined functions (calls and definitions): each macro_rules in Rust.
|
||||||
|
|
||||||
|
["@function.method"] = { link = "Function" }, -- For method definitions.
|
||||||
|
["@function.method.call"] = { link = "Function" }, -- For method calls.
|
||||||
|
|
||||||
|
["@constructor"] = { fg = C.sapphire }, -- For constructor calls and definitions: = { } in Lua, and Java constructors.
|
||||||
|
["@operator"] = { link = "Operator" }, -- For any operator: +, but also -> and * in C.
|
||||||
|
|
||||||
|
-- Keywords
|
||||||
|
["@keyword"] = { link = "Keyword" }, -- For keywords that don't fall in previous categories.
|
||||||
|
["@keyword.modifier"] = { link = "Keyword" }, -- For keywords modifying other constructs (e.g. `const`, `static`, `public`)
|
||||||
|
["@keyword.type"] = { link = "Keyword" }, -- For keywords describing composite types (e.g. `struct`, `enum`)
|
||||||
|
["@keyword.coroutine"] = { link = "Keyword" }, -- For keywords related to coroutines (e.g. `go` in Go, `async/await` in Python)
|
||||||
|
["@keyword.function"] = { fg = C.mauve, style = O.styles.keywords or {} }, -- For keywords used to define a function.
|
||||||
|
["@keyword.operator"] = { link = "Operator" }, -- For new keyword operator
|
||||||
|
["@keyword.import"] = { link = "Include" }, -- For includes: #include in C, use or extern crate in Rust, or require in Lua.
|
||||||
|
["@keyword.repeat"] = { link = "Repeat" }, -- For keywords related to loops.
|
||||||
|
["@keyword.return"] = { fg = C.mauve, style = O.styles.keywords or {} },
|
||||||
|
["@keyword.debug"] = { link = "Exception" }, -- For keywords related to debugging
|
||||||
|
["@keyword.exception"] = { link = "Exception" }, -- For exception related keywords.
|
||||||
|
|
||||||
|
["@keyword.conditional"] = { link = "Conditional" }, -- For keywords related to conditionnals.
|
||||||
|
["@keyword.conditional.ternary"] = { link = "Operator" }, -- For ternary operators (e.g. `?` / `:`)
|
||||||
|
|
||||||
|
["@keyword.directive"] = { link = "PreProc" }, -- various preprocessor directives & shebangs
|
||||||
|
["@keyword.directive.define"] = { link = "Define" }, -- preprocessor definition directives
|
||||||
|
-- JS & derivative
|
||||||
|
["@keyword.export"] = { fg = C.sky, style = O.styles.keywords },
|
||||||
|
|
||||||
|
-- Punctuation
|
||||||
|
["@punctuation.delimiter"] = { link = "Delimiter" }, -- For delimiters (e.g. `;` / `.` / `,`).
|
||||||
|
["@punctuation.bracket"] = { fg = C.overlay2 }, -- For brackets and parenthesis.
|
||||||
|
["@punctuation.special"] = { link = "Special" }, -- For special punctuation that does not fall in the categories before (e.g. `{}` in string interpolation).
|
||||||
|
|
||||||
|
-- Comment
|
||||||
|
["@comment"] = { link = "Comment" },
|
||||||
|
["@comment.documentation"] = { link = "Comment" }, -- For comments documenting code
|
||||||
|
|
||||||
|
["@comment.error"] = { fg = C.base, bg = C.red },
|
||||||
|
["@comment.warning"] = { fg = C.base, bg = C.yellow },
|
||||||
|
["@comment.hint"] = { fg = C.base, bg = C.blue },
|
||||||
|
["@comment.todo"] = { fg = C.base, bg = C.flamingo },
|
||||||
|
["@comment.note"] = { fg = C.base, bg = C.rosewater },
|
||||||
|
|
||||||
|
-- Markup
|
||||||
|
["@markup"] = { fg = C.text }, -- For strings considerated text in a markup language.
|
||||||
|
["@markup.strong"] = { fg = C.maroon, style = { "bold" } }, -- bold
|
||||||
|
["@markup.italic"] = { fg = C.maroon, style = { "italic" } }, -- italic
|
||||||
|
["@markup.strikethrough"] = { fg = C.text, style = { "strikethrough" } }, -- strikethrough text
|
||||||
|
["@markup.underline"] = { link = "Underlined" }, -- underlined text
|
||||||
|
|
||||||
|
["@markup.heading"] = { fg = C.blue, style = { "bold" } }, -- titles like: # Example
|
||||||
|
|
||||||
|
["@markup.math"] = { fg = C.blue }, -- math environments (e.g. `$ ... $` in LaTeX)
|
||||||
|
["@markup.quote"] = { fg = C.maroon, style = { "bold" } }, -- block quotes
|
||||||
|
["@markup.environment"] = { fg = C.pink }, -- text environments of markup languages
|
||||||
|
["@markup.environment.name"] = { fg = C.blue }, -- text indicating the type of an environment
|
||||||
|
|
||||||
|
["@markup.link"] = { link = "Tag" }, -- text references, footnotes, citations, etc.
|
||||||
|
["@markup.link.label"] = { link = "Label" }, -- link, reference descriptions
|
||||||
|
["@markup.link.url"] = { fg = C.rosewater, style = { "italic", "underline" } }, -- urls, links and emails
|
||||||
|
|
||||||
|
["@markup.raw"] = { fg = C.teal }, -- used for inline code in markdown and for doc in python (""")
|
||||||
|
|
||||||
|
["@markup.list"] = { link = "Special" },
|
||||||
|
["@markup.list.checked"] = { fg = C.green }, -- todo notes
|
||||||
|
["@markup.list.unchecked"] = { fg = C.overlay1 }, -- todo notes
|
||||||
|
|
||||||
|
-- Diff
|
||||||
|
["@diff.plus"] = { link = "diffAdded" }, -- added text (for diff files)
|
||||||
|
["@diff.minus"] = { link = "diffRemoved" }, -- deleted text (for diff files)
|
||||||
|
["@diff.delta"] = { link = "diffChanged" }, -- deleted text (for diff files)
|
||||||
|
|
||||||
|
-- Tags
|
||||||
|
["@tag"] = { fg = C.mauve }, -- Tags like html tag names.
|
||||||
|
["@tag.attribute"] = { fg = C.teal, style = O.styles.miscs or { "italic" } }, -- Tags like html tag names.
|
||||||
|
["@tag.delimiter"] = { fg = C.sky }, -- Tag delimiter like < > /
|
||||||
|
|
||||||
|
-- Misc
|
||||||
|
["@error"] = { link = "Error" },
|
||||||
|
|
||||||
|
-- Language specific:
|
||||||
|
-- bash
|
||||||
|
["@function.builtin.bash"] = { fg = C.red, style = O.styles.miscs or { "italic" } },
|
||||||
|
|
||||||
|
-- markdown
|
||||||
|
["@markup.heading.1.markdown"] = { link = "rainbow1" },
|
||||||
|
["@markup.heading.2.markdown"] = { link = "rainbow2" },
|
||||||
|
["@markup.heading.3.markdown"] = { link = "rainbow3" },
|
||||||
|
["@markup.heading.4.markdown"] = { link = "rainbow4" },
|
||||||
|
["@markup.heading.5.markdown"] = { link = "rainbow5" },
|
||||||
|
["@markup.heading.6.markdown"] = { link = "rainbow6" },
|
||||||
|
|
||||||
|
-- java
|
||||||
|
["@constant.java"] = { fg = C.teal },
|
||||||
|
|
||||||
|
-- css
|
||||||
|
["@property.css"] = { fg = C.lavender },
|
||||||
|
["@property.id.css"] = { fg = C.blue },
|
||||||
|
["@property.class.css"] = { fg = C.yellow },
|
||||||
|
["@type.css"] = { fg = C.lavender },
|
||||||
|
["@type.tag.css"] = { fg = C.mauve },
|
||||||
|
["@string.plain.css"] = { fg = C.peach },
|
||||||
|
["@number.css"] = { fg = C.peach },
|
||||||
|
|
||||||
|
-- toml
|
||||||
|
["@property.toml"] = { fg = C.blue }, -- Differentiates between string and properties
|
||||||
|
|
||||||
|
-- json
|
||||||
|
["@label.json"] = { fg = C.blue }, -- For labels: label: in C and :label: in Lua.
|
||||||
|
|
||||||
|
-- lua
|
||||||
|
["@constructor.lua"] = { fg = C.flamingo }, -- For constructor calls and definitions: = { } in Lua.
|
||||||
|
|
||||||
|
-- typescript
|
||||||
|
["@property.typescript"] = { fg = C.lavender, style = O.styles.properties or {} },
|
||||||
|
["@constructor.typescript"] = { fg = C.lavender },
|
||||||
|
|
||||||
|
-- TSX (Typescript React)
|
||||||
|
["@constructor.tsx"] = { fg = C.lavender },
|
||||||
|
["@tag.attribute.tsx"] = { fg = C.teal, style = O.styles.miscs or { "italic" } },
|
||||||
|
|
||||||
|
-- yaml
|
||||||
|
["@variable.member.yaml"] = { fg = C.blue }, -- For fields.
|
||||||
|
|
||||||
|
-- Ruby
|
||||||
|
["@string.special.symbol.ruby"] = { fg = C.flamingo },
|
||||||
|
|
||||||
|
-- PHP
|
||||||
|
["@function.method.php"] = { link = "Function" },
|
||||||
|
["@function.method.call.php"] = { link = "Function" },
|
||||||
|
|
||||||
|
-- C/CPP
|
||||||
|
["@type.builtin.c"] = { fg = C.yellow, style = {} },
|
||||||
|
["@property.cpp"] = { fg = C.text },
|
||||||
|
["@type.builtin.cpp"] = { fg = C.yellow, style = {} },
|
||||||
|
|
||||||
|
-- gitcommit
|
||||||
|
["@comment.warning.gitcommit"] = { fg = C.yellow },
|
||||||
|
|
||||||
|
-- Misc
|
||||||
|
gitcommitSummary = { fg = C.rosewater, style = O.styles.miscs or { "italic" } },
|
||||||
|
zshKSHFunction = { link = "Function" },
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Legacy highlights
|
||||||
|
colors["@parameter"] = colors["@variable.parameter"]
|
||||||
|
colors["@field"] = colors["@variable.member"]
|
||||||
|
colors["@namespace"] = colors["@module"]
|
||||||
|
colors["@float"] = colors["@number.float"]
|
||||||
|
colors["@symbol"] = colors["@string.special.symbol"]
|
||||||
|
colors["@string.regex"] = colors["@string.regexp"]
|
||||||
|
|
||||||
|
colors["@text"] = colors["@markup"]
|
||||||
|
colors["@text.strong"] = colors["@markup.strong"]
|
||||||
|
colors["@text.emphasis"] = colors["@markup.italic"]
|
||||||
|
colors["@text.underline"] = colors["@markup.underline"]
|
||||||
|
colors["@text.strike"] = colors["@markup.strikethrough"]
|
||||||
|
colors["@text.uri"] = colors["@markup.link.url"]
|
||||||
|
colors["@text.math"] = colors["@markup.math"]
|
||||||
|
colors["@text.environment"] = colors["@markup.environment"]
|
||||||
|
colors["@text.environment.name"] = colors["@markup.environment.name"]
|
||||||
|
|
||||||
|
colors["@text.title"] = colors["@markup.heading"]
|
||||||
|
colors["@text.literal"] = colors["@markup.raw"]
|
||||||
|
colors["@text.reference"] = colors["@markup.link"]
|
||||||
|
|
||||||
|
colors["@text.todo.checked"] = colors["@markup.list.checked"]
|
||||||
|
colors["@text.todo.unchecked"] = colors["@markup.list.unchecked"]
|
||||||
|
|
||||||
|
colors["@comment.note"] = colors["@comment.hint"]
|
||||||
|
|
||||||
|
-- @text.todo is now for todo comments, not todo notes like in markdown
|
||||||
|
colors["@text.todo"] = colors["@comment.todo"]
|
||||||
|
colors["@text.warning"] = colors["@comment.warning"]
|
||||||
|
colors["@text.note"] = colors["@comment.note"]
|
||||||
|
colors["@text.danger"] = colors["@comment.error"]
|
||||||
|
|
||||||
|
-- @text.uri is now
|
||||||
|
-- > @markup.link.url in markup links
|
||||||
|
-- > @string.special.url outside of markup
|
||||||
|
colors["@text.uri"] = colors["@markup.link.uri"]
|
||||||
|
|
||||||
|
colors["@method"] = colors["@function.method"]
|
||||||
|
colors["@method.call"] = colors["@function.method.call"]
|
||||||
|
|
||||||
|
colors["@text.diff.add"] = colors["@diff.plus"]
|
||||||
|
colors["@text.diff.delete"] = colors["@diff.minus"]
|
||||||
|
|
||||||
|
colors["@type.qualifier"] = colors["@keyword.modifier"]
|
||||||
|
colors["@keyword.storage"] = colors["@keyword.modifier"]
|
||||||
|
colors["@define"] = colors["@keyword.directive.define"]
|
||||||
|
colors["@preproc"] = colors["@keyword.directive"]
|
||||||
|
colors["@storageclass"] = colors["@keyword.storage"]
|
||||||
|
colors["@conditional"] = colors["@keyword.conditional"]
|
||||||
|
colors["@exception"] = colors["@keyword.exception"]
|
||||||
|
colors["@include"] = colors["@keyword.import"]
|
||||||
|
colors["@repeat"] = colors["@keyword.repeat"]
|
||||||
|
|
||||||
|
colors["@symbol.ruby"] = colors["@string.special.symbol.ruby"]
|
||||||
|
|
||||||
|
colors["@variable.member.yaml"] = colors["@field.yaml"]
|
||||||
|
|
||||||
|
colors["@text.title.1.markdown"] = colors["@markup.heading.1.markdown"]
|
||||||
|
colors["@text.title.2.markdown"] = colors["@markup.heading.2.markdown"]
|
||||||
|
colors["@text.title.3.markdown"] = colors["@markup.heading.3.markdown"]
|
||||||
|
colors["@text.title.4.markdown"] = colors["@markup.heading.4.markdown"]
|
||||||
|
colors["@text.title.5.markdown"] = colors["@markup.heading.5.markdown"]
|
||||||
|
colors["@text.title.6.markdown"] = colors["@markup.heading.6.markdown"]
|
||||||
|
|
||||||
|
colors["@method.php"] = colors["@function.method.php"]
|
||||||
|
colors["@method.call.php"] = colors["@function.method.call.php"]
|
||||||
|
|
||||||
|
return colors
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return O.transparent_background and {
|
||||||
|
TreesitterContextBottom = { sp = C.dim, style = { "underline" } },
|
||||||
|
} or {
|
||||||
|
TreesitterContextBottom = {
|
||||||
|
sp = C.surface0,
|
||||||
|
style = { "underline" },
|
||||||
|
},
|
||||||
|
TreesitterContextLineNumber = {
|
||||||
|
fg = C.surface1,
|
||||||
|
bg = C.mantle,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
rainbowcol1 = { fg = C.red },
|
||||||
|
rainbowcol2 = { fg = C.teal },
|
||||||
|
rainbowcol3 = { fg = C.yellow },
|
||||||
|
rainbowcol4 = { fg = C.blue },
|
||||||
|
rainbowcol5 = { fg = C.pink },
|
||||||
|
rainbowcol6 = { fg = C.flamingo },
|
||||||
|
rainbowcol7 = { fg = C.green },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
TSRainbowRed = { fg = C.red },
|
||||||
|
TSRainbowYellow = { fg = C.yellow },
|
||||||
|
TSRainbowBlue = { fg = C.blue },
|
||||||
|
TSRainbowOrange = { fg = C.peach },
|
||||||
|
TSRainbowGreen = { fg = C.green },
|
||||||
|
TSRainbowViolet = { fg = C.mauve },
|
||||||
|
TSRainbowCyan = { fg = C.teal },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.get = function()
|
||||||
|
return {
|
||||||
|
UfoFoldedFg = { fg = C.lavender },
|
||||||
|
UfoFoldedEllipsis = { fg = C.crust, bg = C.blue },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
Sneak = { fg = C.overlay2, bg = C.pink },
|
||||||
|
SneakScope = { bg = C.text },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.get()
|
||||||
|
return {
|
||||||
|
VimwikiLink = { fg = C.sky, bg = C.none },
|
||||||
|
VimwikiHeaderChar = { fg = C.grey, bg = C.none },
|
||||||
|
VimwikiHR = { fg = C.yellow, bg = C.none },
|
||||||
|
VimwikiList = { fg = C.peach, bg = C.none },
|
||||||
|
VimwikiTag = { fg = C.peach, bg = C.none },
|
||||||
|
VimwikiMarkers = { fg = C.subtext0, bg = C.none },
|
||||||
|
VimwikiHeader1 = { fg = C.peach, bg = C.none, style = { "bold" } },
|
||||||
|
VimwikiHeader2 = { fg = C.green, bg = C.none, style = { "bold" } },
|
||||||
|
VimwikiHeader3 = { fg = C.blue, bg = C.none, style = { "bold" } },
|
||||||
|
VimwikiHeader4 = { fg = C.sky, bg = C.none, style = { "bold" } },
|
||||||
|
VimwikiHeader5 = { fg = C.yellow, bg = C.none, style = { "bold" } },
|
||||||
|
VimwikiHeader6 = { fg = C.mauve, bg = C.none, style = { "bold" } },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user