112 Commits
Author SHA1 Message Date
wyj 5834ec1cdc new: add mpv conf 2025-04-13 17:39:16 -04:00
wyj 0bb1ffcaf5 update: kitty Fira Code features 2025-04-11 18:36:07 -04:00
wyj a816200bef update: add kitty cursor trail 2025-03-25 15:06:35 -04:00
wyj 3a0197c7ba update: blur waybar 2025-03-20 20:01:56 -04:00
wyj 59524e3679 update: use hyprpolkitagent instead 2025-03-20 19:58:17 -04:00
wyj 2bedd28e12 Merge branch 'upstream-custom' into dev 2025-03-11 23:04:41 -04:00
wyj 07dc9cf4e0 new: yazi 2025-03-11 23:04:22 -04:00
wyj 11092da765 Merge branch 'upstream-custom' into dev 2024-12-15 02:16:05 -05:00
wyj bd0c7eb2dd update: packages 2024-12-15 02:15:33 -05:00
wyj 64a7399ea9 fix: waybar launch 2024-11-21 14:02:46 -05:00
wyj 5b060cfe7f Merge branch 'upstream-custom' into dev 2024-11-13 14:18:07 -05:00
wyj 2eb9068b67 fix: shadow new conf 2024-11-13 14:17:44 -05:00
wyj 7e1b96eb2a update: reduce waybar update check 2024-10-20 13:08:09 -04:00
wyj 2b53e15823 Merge branch 'upstream-custom' into dev 2024-09-01 08:20:04 -04:00
wyj c8e824d8a4 fix: windowrule 2024-09-01 08:19:44 -04:00
wyj cd5cb4dd8e Merge branch 'upstream-custom' into dev 2024-08-29 01:18:09 -04:00
wyj 3e9f4e4f1f new: meow-blur-laptop theme 2024-08-28 10:41:58 -04:00
wyj b1385e585e new: time and cal drawer 2024-08-28 10:41:30 -04:00
wyj 14cdc8e93b update: rm ml4w waybar themes 2024-08-28 09:57:45 -04:00
wyj 844d08e054 Merge branch 'upstream-custom' into dev 2024-08-27 22:02:20 -04:00
wyj e7cab307ee update: opti for code-oss 2024-08-27 22:02:03 -04:00
wyj 628fe88f2a Merge branches 'upstream-custom' and 'upstream-hidpi' into dev 2024-08-27 16:51:15 -04:00
wyj 4b9e7c6175 fix: rm cursor size in hidpi.sh 2024-08-27 16:49:29 -04:00
wyj eb2d78da76 fix: set cursor size to 32, so x and way looks same 2024-08-27 16:48:04 -04:00
wyj 6faef90961 update: events module 2024-08-27 13:43:15 -04:00
wyj 38266dbf8e update: events module 2024-08-27 13:42:14 -04:00
wyj eff1f37c03 Merge branch 'upstream-custom' into dev 2024-08-27 10:56:13 -04:00
wyj c223de3de1 update: khal module 2024-08-27 10:55:40 -04:00
wyj fdcc4d5fef update: change kitty font size 2024-08-26 14:42:25 -04:00
wyj 45e20009fc fix: fastfetch 2024-08-26 14:42:02 -04:00
wyj c69e13853c Merge branch 'upstream-custom' into dev 2024-08-26 11:45:21 -04:00
wyj a8b848e3ba fix: rm xdg-desktop-portal-{gtk,hyprland} 2024-08-26 11:45:10 -04:00
wyj abef5c5f00 Merge branches 'upstream-custom' and 'zshfish' into dev 2024-08-25 10:39:37 -04:00
wyj f176886688 fix: install ohmyzsh only if haven't 2024-08-25 10:39:27 -04:00
wyj 3aac72de3b update: memory tooltip 2024-08-25 10:32:13 -04:00
wyj 30b94d192b update: network speed tooltip 2024-08-21 23:28:45 -04:00
wyj 0c738fdb67 fix: add powerlevel10k install 2024-08-21 21:03:13 -04:00
wyj 526979a9f9 fix: alsp fix kitten ssh in zinit 2024-08-18 00:23:22 -04:00
wyj 0abb920348 new: group style 2024-08-14 20:54:21 -04:00
wyj ed6d78ebb9 new: set FiraCode Nerd Font 2024-08-14 20:54:02 -04:00
wyj f7e85f9cad feat: change group active by key 2024-08-14 19:56:21 -04:00
wyj c3152df74a Merge branch 'upstream-hidpi' into dev 2024-08-14 19:44:07 -04:00
wyj 186fee59c8 fix: use QT_AUTO_SCREEN_SCALE_FACTOR 2024-08-14 19:43:48 -04:00
wyj af346ac91d Merge branch 'upstream-custom' into dev 2024-08-11 15:01:34 -04:00
wyj 6303cef74e fix: layouts master error 2024-08-11 15:01:24 -04:00
wyj b192333e01 Merge branches 'upstream-custom', 'upstream-hidpi', 'fcitx5' and 'zshfish' into dev 2024-08-11 01:45:14 -04:00
wyj adab24d93f update: zshrc 2024-08-11 01:44:58 -04:00
wyj 3940d9a2b0 update: make wechat float 2024-08-04 23:33:18 -04:00
wyj f1e2a40537 update: update fastfetch config 2024-07-29 01:38:54 -04:00
wyj dc45294051 update: update fastfetch config 2024-07-29 01:32:25 -04:00
wyj 998a22b553 update: update fastfetch config 2024-07-29 01:28:09 -04:00
wyj 4c4e029ba1 feat: add fake fullscrenns 2024-07-22 00:57:46 -04:00
wyj e78c5ce3f5 feat: add nvimdots 2024-07-21 02:51:17 -04:00
wyj f16942be42 feat: add ranger config 2024-07-20 01:37:01 -04:00
wyj 2e06bec8fa feat: add ranger config 2024-07-20 01:35:06 -04:00
wyj 9d4de4186a fix: fix dropterm class 2024-07-20 01:31:12 -04:00
wyj a3c7f5814b update: use kitty as main terminal 2024-07-20 01:27:14 -04:00
wyj 1c17d73231 update: kitty config 2024-07-20 01:26:40 -04:00
wyj 4666c1c133 update: add kitty and thunar to swallow 2024-07-20 01:20:13 -04:00
wyj 73dbcd426c feat: add qt6ct QT theme 2024-07-03 11:57:32 -04:00
wyj f631af1696 update: rm GTK_SCALE_FACTOR in default 2024-06-29 18:20:38 -04:00
wyj fe545d9d30 update: add noto cjk font, make sure cjk font works 2024-06-17 04:20:29 -04:00
wyj 7692ad3c41 update: add QT_IM_MODULE=fcitx env 2024-06-16 01:57:22 -04:00
wyj 67e2505545 Merge branch 'upstream-custom' into dev 2024-06-15 23:08:53 -04:00
wyj ef44c3b7ff update: make xdg-desktop-portal-gtk float 2024-06-15 23:08:33 -04:00
wyj 5ce679affd Merge branch 'zshfish' into dev 2024-06-13 21:30:12 -04:00
wyj 93eea9a463 Merge branch 'fcitx5' into dev 2024-06-13 21:29:56 -04:00
wyj 26c68b27ac Merge branch 'upstream-hidpi' into dev 2024-06-13 21:29:43 -04:00
wyj 198a1cd956 Merge branch 'upstream-custom' into dev 2024-06-13 21:29:27 -04:00
wyj d5051c5c96 Merge branch 'upstream-main' into zshfish 2024-06-13 21:29:08 -04:00
wyj d3277bd7fc Merge branch 'upstream-main' into fcitx5 2024-06-13 21:28:51 -04:00
wyj 13750bb854 Merge branch 'upstream-main' into upstream-hidpi 2024-06-13 21:27:55 -04:00
wyj 164e56e0b1 Merge branch 'upstream-main' into upstream-custom 2024-06-13 21:27:01 -04:00
wyj c37f2e2040 Merge branches 'upstream-custom' and 'upstream-hidpi' into dev 2024-06-12 23:26:20 -04:00
wyj fa96759ddf update: change hyprcursor size to 32 if hidpi 2024-06-12 23:26:06 -04:00
wyj 0120c08205 update: use Vimix-hyprcursors instead 2024-06-12 23:20:42 -04:00
wyj 0746e2ab13 Merge branch 'upstream-hidpi' into dev 2024-06-12 23:16:31 -04:00
wyj ea854b83e6 update: hidpi move to hyprland.conf 2024-06-12 23:15:23 -04:00
Stephan Raabe 95ff240509 Updates 2024-06-12 13:02:08 +02:00
Stephan Raabe d6fce7ecd3 Updates 2024-06-12 13:00:40 +02:00
Stephan Raabe 44b52eecb4 Updates 2024-06-12 12:32:03 +02:00
Stephan Raabe fc346fe68d Updates 2024-06-12 10:20:13 +02:00
Stephan Raabe 0a6879e9ab Updates 2024-06-12 07:26:20 +02:00
wyj 08ee7cf4dc Merge branch 'upstream-custom' into dev 2024-06-10 18:14:58 -04:00
wyj e1801c20cb fix: link of vimix hyprcursor 2024-06-10 18:05:07 -04:00
wyj 60e96faf42 Merge branch 'upstream-custom' into dev 2024-06-09 20:29:19 -04:00
wyj 8fb376e095 update: float fdm 2024-06-09 20:29:06 -04:00
wyj 34cda567b3 update: add tray on sencond display 2024-06-09 20:23:15 -04:00
wyj d1036c31c6 update: split my waybar theme as standalone meow-blur 2024-06-09 13:38:26 -04:00
wyj b156843244 fix: also set opacity for wayland vscode 2024-06-09 13:24:27 -04:00
wyj d2d71fef55 fix: disable use cursors from gtk, so hyprcursors will be used 2024-06-09 13:21:27 -04:00
Stephan Raabe e5fbdb7de0 Updates 2024-06-09 15:33:11 +02:00
Stephan Raabe 26f42750d7 Updates 2024-06-07 22:07:10 +02:00
Stephan Raabe e6c2420ef4 Updates 2024-06-07 21:25:01 +02:00
Stephan Raabe 338f34b28d Updates 2024-06-07 20:53:47 +02:00
wyj 27b802d4a0 Merge branch 'zshfish' into dev 2024-06-07 04:35:28 -04:00
wyj 6c3bef60c6 fix: fix 2024-06-07 04:35:16 -04:00
wyj ea979c58a4 Merge branch 'zshfish' into dev 2024-06-07 04:14:16 -04:00
wyj ce02d5357b fix: fix 2024-06-07 04:14:05 -04:00
wyj 6b4977e52a Merge branch 'zshfish' into dev 2024-06-07 04:08:56 -04:00
wyj 113c023b3c fix: fix 2024-06-07 04:08:43 -04:00
wyj f88efba29e Merge branch 'zshfish' into dev 2024-06-07 04:05:52 -04:00
wyj f85d049cbd fix: fix 2024-06-07 04:05:41 -04:00
wyj 12a4ccbc13 Merge branches 'upstream-custom' and 'zshfish' into dev 2024-06-07 03:09:40 -04:00
wyj 49fd73e67b update: add choice between oh my zsh and zinit 2024-06-07 03:09:21 -04:00
wyj bc97bf2569 update: change some keybings 2024-06-07 01:51:20 -04:00
wyj 16a504966c feat: complete done zsh install and swith to zinit 2024-06-07 01:04:42 -04:00
wyj 6e5fed1913 Merge branch 'upstream-custom' into dev 2024-06-06 01:03:16 -04:00
wyj 7e2f972430 update: add vimix cursor and orchis theme 2024-06-06 01:02:38 -04:00
Stephan Raabe 972d49978c Updates 2024-06-05 17:05:48 +02:00
Stephan Raabe 41b6b496c1 Updates 2024-06-05 10:40:53 +02:00
Stephan Raabe 7f945d3143 Updates 2024-06-05 08:55:24 +02:00
280 changed files with 19260 additions and 2203 deletions
+3
View File
@@ -0,0 +1,3 @@
[submodule "yazi/flavors/tokyo-night.yazi"]
path = yazi/flavors/tokyo-night.yazi
url = https://github.com/BennyOe/tokyo-night.yazi.git
+6
View File
@@ -0,0 +1,6 @@
# ------------------------------------------------------
# install fish
# ------------------------------------------------------
packagesPacman=("fish");
packagesYay=();
source .install/install-packages.sh
+5 -1
View File
@@ -11,7 +11,11 @@ hidpiconfirm="Do you want 2x hidpi scale?"
if gum confirm "$hidpiconfirm"; then if gum confirm "$hidpiconfirm"; then
sed -i -E 's/size = [0-9]+(\.[0-9]+)?/size = 16/' ~/dotfiles-versions/$version/alacritty/alacritty.toml sed -i -E 's/size = [0-9]+(\.[0-9]+)?/size = 16/' ~/dotfiles-versions/$version/alacritty/alacritty.toml
sed -i -E 's/[0-9]+(\.[0-9]+)?/16/' ~/dotfiles-versions/$version/.settings/rofi-font.rasi sed -i -E 's/[0-9]+(\.[0-9]+)?/16/' ~/dotfiles-versions/$version/.settings/rofi-font.rasi
echo -e '\n\n# hidpi scale\nsource = ~/dotfiles/hypr/conf/hidpi.conf' >> ~/dotfiles-versions/$version/hypr/conf/custom.conf echo -e '\n# -----------------------------------------------------' >> ~/dotfiles-versions/$version/hypr/hyprland.conf
echo -e '# HiDPI Scaling' >> ~/dotfiles-versions/$version/hypr/hyprland.conf
echo -e '# -----------------------------------------------------' >> ~/dotfiles-versions/$version/hypr/hyprland.conf
echo -e 'source = ~/dotfiles/hypr/conf/hidpi.conf' >> ~/dotfiles-versions/$version/hypr/hyprland.conf
sed -i -E 's/1/2/' ~/dotfiles-versions/$version/hypr/conf/monitors/default.conf sed -i -E 's/1/2/' ~/dotfiles-versions/$version/hypr/conf/monitors/default.conf
#sed -i -E 's/24/32/' ~/dotfiles-versions/$version/hypr/conf/cursor.conf
echo ":: finished hidpi patch." echo ":: finished hidpi patch."
fi fi
+6 -2
View File
@@ -40,7 +40,7 @@ fi
if [ -d ~/dotfiles-versions/$version/swappy ]; then if [ -d ~/dotfiles-versions/$version/swappy ]; then
_installSymLink swappy ~/.config/swappy ~/dotfiles/swappy/ ~/.config _installSymLink swappy ~/.config/swappy ~/dotfiles/swappy/ ~/.config
fi fi
if [ -d ~/dotfiles-versions/$version/swappy ]; then if [ -d ~/dotfiles-versions/$version/eww ]; then
_installSymLink eww ~/.config/eww ~/dotfiles/eww/ ~/.config _installSymLink eww ~/.config/eww ~/dotfiles/eww/ ~/.config
fi fi
if [ -d ~/dotfiles-versions/$version/fastfetch ]; then if [ -d ~/dotfiles-versions/$version/fastfetch ]; then
@@ -50,7 +50,11 @@ if [ -f ~/dotfiles-versions/$version/chrome-flags.conf ]; then
_installSymLink chrome-flags ~/.config/chrome-flags.conf ~/dotfiles/chrome-flags.conf ~/.config _installSymLink chrome-flags ~/.config/chrome-flags.conf ~/dotfiles/chrome-flags.conf ~/.config
fi fi
if [ -d ~/dotfiles-versions/$version/Vimix-hyprcursors ]; then if [ -d ~/dotfiles-versions/$version/Vimix-hyprcursors ]; then
_installSymLink Vimix-hyprcursors ~/.local/share/icons/Vimix-hyprcursors ~/dotfiles/Vimix-hyprcursors if [ ! -d ~/.local/share/icons ]; then mkdir -pv ~/.local/share/icons; fi
_installSymLink Vimix-hyprcursors ~/.local/share/icons/Vimix-hyprcursors ~/dotfiles/Vimix-hyprcursors ~/.local/share/icons/
fi
if [ -d ~/dotfiles-versions/$version/ranger ]; then
_installSymLink ranger ~/.config/ranger ~/dotfiles/ranger/ ~/.config
fi fi
echo ":: Symbolic links created." echo ":: Symbolic links created."
echo echo
+4 -1
View File
@@ -36,7 +36,7 @@ packagesPacman=(
"man-pages" "man-pages"
"gvfs" "gvfs"
"xdg-user-dirs" "xdg-user-dirs"
"xdg-desktop-portal-gtk" # "xdg-desktop-portal-gtk"
"xarchiver" "xarchiver"
"thunar-archive-plugin" "thunar-archive-plugin"
"zip" "zip"
@@ -47,10 +47,13 @@ packagesPacman=(
"jq" "jq"
"rofi-wayland" "rofi-wayland"
"fastfetch" "fastfetch"
"pipewire-pulse"
"wireplumber"
); );
packagesYay=( packagesYay=(
"vimix-cursors" "vimix-cursors"
"orchis-theme"
"trizen" "trizen"
"google-chrome" "google-chrome"
); );
+4 -3
View File
@@ -3,14 +3,15 @@ packagesPacman=(
"hyprpaper" "hyprpaper"
"hyprlock" "hyprlock"
"hypridle" "hypridle"
"xdg-desktop-portal-hyprland" # "xdg-desktop-portal-hyprland"
"hyprpolkitagent"
"waybar" "waybar"
"grim" "grim"
"slurp" "slurp"
"swappy" "swappy"
"cliphist" "cliphist"
"kitty" "kitty"
); )
packagesYay=( packagesYay=(
"pyprland" "pyprland"
@@ -18,4 +19,4 @@ packagesYay=(
"nwg-look" "nwg-look"
"eww" "eww"
"hyprshade" "hyprshade"
); )
+17 -9
View File
@@ -14,6 +14,14 @@ _showRestoreOptions() {
restorelist+="~/dotfiles/.bashrc " restorelist+="~/dotfiles/.bashrc "
selectedlist+="~/dotfiles/.bashrc," selectedlist+="~/dotfiles/.bashrc,"
fi fi
if [ -f ~/dotfiles/.zshrc ]; then
restorelist+="~/dotfiles/.zshrc "
selectedlist+="~/dotfiles/.zshrc,"
fi
if [ -f ~/dotfiles/.p10k.zsh ]; then
restorelist+="~/dotfiles/.p10k.zsh "
selectedlist+="~/dotfiles/.p10k.zsh,"
fi
if [ -d ~/dotfiles/.settings ]; then if [ -d ~/dotfiles/.settings ]; then
restorelist+="~/dotfiles/.settings " restorelist+="~/dotfiles/.settings "
selectedlist+="~/dotfiles/.settings," selectedlist+="~/dotfiles/.settings,"
@@ -24,7 +32,7 @@ _showRestoreOptions() {
then then
restorelist+="~/dotfiles/hypr/hypridle.conf " restorelist+="~/dotfiles/hypr/hypridle.conf "
selectedlist+="~/dotfiles/hypr/hypridle.conf," selectedlist+="~/dotfiles/hypr/hypridle.conf,"
fi fi
fi fi
if [ -f ~/dotfiles/hypr/conf/custom.conf ]; then if [ -f ~/dotfiles/hypr/conf/custom.conf ]; then
restorelist+="~/dotfiles/hypr/conf/custom.conf " restorelist+="~/dotfiles/hypr/conf/custom.conf "
@@ -75,13 +83,13 @@ _showRestoreOptions() {
fi fi
restoreselect=$(gum choose --no-limit --height 20 --cursor-prefix "( ) " --selected-prefix "(x) " --unselected-prefix "( ) " --selected="$selectedlist" $restorelist) restoreselect=$(gum choose --no-limit --height 20 --cursor-prefix "( ) " --selected-prefix "(x) " --unselected-prefix "( ) " --selected="$selectedlist" $restorelist)
if [ ! -z "$restoreselect" ] ;then if [ ! -z "$restoreselect" ] ;then
echo "Selected to restore:" echo "Selected to restore:"
echo "$restoreselect" echo "$restoreselect"
echo "" echo ""
confirmrestore=$(gum choose "Start restore" "Change restore" "Skip restore") confirmrestore=$(gum choose "Start restore" "Change restore" "Skip restore")
if [ "$confirmrestore" == "Start restore" ] ;then if [ "$confirmrestore" == "Start restore" ] ;then
_startRestore _startRestore
elif [ "$confirmrestore" == "Change restore" ]; then elif [ "$confirmrestore" == "Change restore" ]; then
_showRestoreOptions _showRestoreOptions
else else
echo ":: Restore skipped." echo ":: Restore skipped."
@@ -94,7 +102,7 @@ _showRestoreOptions() {
echo ":: Installation canceled." echo ":: Installation canceled."
exit exit
fi fi
if [ "$confirmrestore" == "Change restore" ]; then if [ "$confirmrestore" == "Change restore" ]; then
echo "" echo ""
_showRestoreOptions _showRestoreOptions
else else
@@ -135,11 +143,11 @@ _startRestore() {
cp ~/dotfiles/hypr/conf/keyboard.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/keyboard.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland keyboard.conf restored!" echo ":: Hyprland keyboard.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/monitor.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/monitor.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/monitor.conf ]; then if [ -f ~/dotfiles/hypr/conf/monitor.conf ]; then
cp ~/dotfiles/hypr/conf/monitor.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/monitor.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland monitor.conf restored!" echo ":: Hyprland monitor.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/keybinding.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/keybinding.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
@@ -153,19 +161,19 @@ _startRestore() {
cp ~/dotfiles/hypr/conf/environment.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/environment.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland environment.conf restored!" echo ":: Hyprland environment.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/layout.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/layout.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/layout.conf ]; then if [ -f ~/dotfiles/hypr/conf/layout.conf ]; then
cp ~/dotfiles/hypr/conf/layout.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/layout.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland layout.conf restored!" echo ":: Hyprland layout.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/windowrule.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/windowrule.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/windowrule.conf ]; then if [ -f ~/dotfiles/hypr/conf/windowrule.conf ]; then
cp ~/dotfiles/hypr/conf/windowrule.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/windowrule.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland windowrule.conf restored!" echo ":: Hyprland windowrule.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/animation.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/animation.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/animation.conf ]; then if [ -f ~/dotfiles/hypr/conf/animation.conf ]; then
cp ~/dotfiles/hypr/conf/animation.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/animation.conf ~/dotfiles-versions/$version/hypr/conf/
+5 -1
View File
@@ -8,7 +8,7 @@ input {
kb_model = kb_model =
kb_options = kb_options =
numlock_by_default = true numlock_by_default = true
mouse_refocus=false mouse_refocus = false
# For United States # For United States
# kb_layout = us # kb_layout = us
@@ -28,3 +28,7 @@ input {
} }
sensitivity = 0 # -1.0 - 1.0, 0 means no modification. sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
} }
gestures {
workspace_swipe = true
}
+8 -3
View File
@@ -8,7 +8,7 @@ input {
kb_model = kb_model =
kb_options = kb_options =
numlock_by_default = true numlock_by_default = true
mouse_refocus=false mouse_refocus = false
# For United States # For United States
# kb_layout = us # kb_layout = us
@@ -22,9 +22,14 @@ input {
# natural_scroll = false # natural_scroll = false
# for laptop # for laptop
natural_scroll = yes natural_scroll = true
middle_button_emulation = true middle_button_emulation = true
clickfinger_behavior = 1 clickfinger_behavior = true
disable_while_typing = true
} }
sensitivity = 0 # -1.0 - 1.0, 0 means no modification. sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
} }
gestures {
workspace_swipe = true
}
+22
View File
@@ -0,0 +1,22 @@
# ------------------------------------------------------
# install zsh and zinit
# ------------------------------------------------------
packagesPacman=("zsh");
echo "Please select the zsh plugin manager:"
zsh_manager=$(gum choose --limit=1 --cursor-prefix "( ) " --selected-prefix "(x) " --unselected-prefix "( ) " "oh my zsh" "zinit")
if [[ "${zsh_manager}" == *"oh my zsh"* ]]; then
source .install/install-packages.sh
if [ ! -d ~/.oh-my-zsh ]; then
RUNZSH=no CHSH=no sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
fi
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
_installSymLink zshrc ~/.zshrc ~/dotfiles/.zshrc_ohmyzsh ~/.zshrc
else
packagesYay=("zinit");
source .install/install-packages.sh
_installSymLink zshrc ~/.zshrc ~/dotfiles/.zshrc_zinit ~/.zshrc
fi
_installSymLink p10k ~/.p10k.zsh ~/dotfiles/.p10k.zsh ~/
+25
View File
@@ -0,0 +1,25 @@
# ------------------------------------------------------
# Select additional shell
# ------------------------------------------------------
echo -e "${GREEN}"
figlet "Zsh Fish"
echo -e "${NONE}"
echo "Please select if you want to install zsh or fish."
echo
zshfish=$(gum choose --no-limit --cursor-prefix "( ) " --selected-prefix "(x) " --unselected-prefix "( ) " "zsh" "fish")
if [ -z "${zshfish}" ] ;then
echo ":: No shell selected. Keep using bash."
else
echo "Please select your default shell."
echo
shell=$(echo -e "bash\n$zshfish" | gum choose --limit=1 --cursor-prefix "( ) " --selected-prefix "(x) " --unselected-prefix "( ) ")
if [[ $zshfish == *"zsh"* ]]; then
echo ":: zsh selected"
source .install/zsh.sh
fi
if [[ $zshfish == *"fish"* ]]; then
echo ":: fish selected"
source .install/fish.sh
fi
fi
+1718
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1 +1 @@
alacritty kitty
+1 -1
View File
@@ -1 +1 @@
2.9.1.1 2.9.1.2
+1 -1
View File
@@ -1 +1 @@
2911 2912
-128
View File
@@ -1,128 +0,0 @@
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:$HOME/.cargo/bin:$HOME/.local/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
# ZSH_THEME="robbyrussell"
ZSH_THEME="powerlevel10k/powerlevel10k"
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment one of the following lines to change the auto-update behavior
# zstyle ':omz:update' mode disabled # disable automatic updates
# zstyle ':omz:update' mode auto # update automatically without asking
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
# Uncomment the following line to change how often to auto-update (in days).
# zstyle ':omz:update' frequency 13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git colored-man-pages eza z sudo zsh-autosuggestions fast-syntax-highlighting)
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='mvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
alias sshkoko="TERM=xterm-256color ssh ywang2020@koko-login.hpc.fau.edu"
alias wakemac="wakeonlan 18:C0:4D:8D:56:0E"
alias ls="eza --icons=auto"
alias githashselector="git log --oneline | gum filter | cut -d' ' -f1"
alias bat="bat --paging=never"
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
eval $(thefuck --alias)
eval "$(fzf --zsh)"
# -----------------------------------------------------
# PYWAL
# -----------------------------------------------------
cat ~/.cache/wal/sequences
export EDITOR=nvim
+88
View File
@@ -0,0 +1,88 @@
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# -----------------------------------------------------
# Oh my zsh settings
# -----------------------------------------------------
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# ZSH_THEME="robbyrussell"
ZSH_THEME="powerlevel10k/powerlevel10k"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
zstyle ':omz:update' mode auto
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
COMPLETION_WAITING_DOTS="true"
# -----------------------------------------------------
# Plugins
# -----------------------------------------------------
plugins=(git colored-man-pages eza z sudo zsh-autosuggestions fast-syntax-highlighting)
source $ZSH/oh-my-zsh.sh
# -----------------------------------------------------
# Variables
# -----------------------------------------------------
export PATH=$HOME/.cargo/bin:$HOME/.local/bin:/usr/local/bin:$PATH
# export MANPATH="/usr/local/man:$MANPATH"
export LANG=en_US.UTF-8
export EDITOR='nvim'
export MAKEFLAGS='-j$(nproc)'
export CFLAGS='-march=native -O2 -pipe'
# -----------------------------------------------------
# Alias
# -----------------------------------------------------
alias sshkoko="TERM=xterm-256color ssh ywang2020@koko-login.hpc.fau.edu"
alias wakemac="wakeonlan 18:C0:4D:8D:56:0E"
alias ls="eza --icons=auto"
alias githashselector="git log --oneline | gum filter | cut -d' ' -f1"
alias bat="bat --paging=never"
alias code="code --ozone-platform=wayland --enable-wayland-ime"
# fix ssh if in kitty
if [[ "$TERM" == "xterm-kitty" && -z "$SSH_CONNECTION" ]]; then
alias ssh="kitty +kitten ssh"
fi
# -----------------------------------------------------
# Completion
# -----------------------------------------------------
[[ -f /home/wyj/.dart-cli-completion/zsh-config.zsh ]] && . /home/wyj/.dart-cli-completion/zsh-config.zsh || true
# -----------------------------------------------------
# evals
# -----------------------------------------------------
eval $(thefuck --alias)
eval "$(fzf --zsh)"
# -----------------------------------------------------
# PYWAL
# -----------------------------------------------------
cat ~/.cache/wal/sequences
# -----------------------------------------------------
# Custom
# -----------------------------------------------------
[[ ! -f ~/.custom.zsh ]] || source ~/.custom.zsh
# -----------------------------------------------------
# miscs
# -----------------------------------------------------
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
+64
View File
@@ -0,0 +1,64 @@
# ---------------------------------------------------
# Zinit and plugins
# ---------------------------------------------------
source /usr/share/zinit/zinit.zsh
# Load powerlevel10k theme
zinit ice depth"1" # git clone depth
zinit light romkatv/powerlevel10k
# Load plugins
zinit light zsh-users/zsh-autosuggestions
zinit light zdharma-continuum/fast-syntax-highlighting
# oh-my-zsh plugins
zi snippet OMZL::git.zsh
zi snippet OMZP::git
zi snippet OMZP::sudo
zi snippet OMZP::colored-man-pages
zi snippet OMZP::eza
zi snippet OMZP::z
# others
zplugin ice as"program" pick"bin/git-dsf"
zplugin light zdharma-continuum/zsh-diff-so-fancy
# ----------------------------------------------------
# Variables
# ----------------------------------------------------
export PATH=$HOME/bin:$HOME/.cargo/bin:$HOME/.local/bin:/usr/local/bin:$PATH
export EDITOR=vim
# ----------------------------------------------------
# Alias
# ----------------------------------------------------
alias sshkoko="TERM=xterm-256color ssh ywang2020@koko-login.hpc.fau.edu"
alias wakemac="wakeonlan 18:C0:4D:8D:56:0E"
alias eza="eza --icons=auto"
alias githashselector="git log --oneline | gum filter | cut -d' ' -f1"
alias bat="bat --paging=never"
# -----------------------------------------------------
# evals
# -----------------------------------------------------
eval $(thefuck --alias)
eval "$(fzf --zsh)"
# -----------------------------------------------------
# Miscs
# -----------------------------------------------------
# fix ssh if in kitty
if [[ "$TERM" == "xterm-kitty" && -z "$SSH_CONNECTION" ]]; then
alias ssh="kitty +kitten ssh"
fi
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
# -----------------------------------------------------
# PYWAL
# -----------------------------------------------------
cat ~/.cache/wal/sequences
# -----------------------------------------------------
# Custom
# -----------------------------------------------------
[[ ! -f ~/.custom.zsh ]] || source ~/.custom.zsh
+8
View File
@@ -1,3 +1,11 @@
Version 2.9.1.2
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.9.1.1
--------------------------------------------------------
- Workspaces module in waybar updated to enable scroll to change the workspace https://gitlab.com/stephan-raabe/dotfiles/-/merge_requests/114
- More functions deactivated in Game Mode (SUPER+ALT+G)
- Keybindings rofi menu updated with keybinding description. Open with right mouse click on Apps waybar module
- Fixed bug of ML4W Hyprland Settings App with Hyprland 0.41.0
Version 2.9.1.1 Version 2.9.1.1
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.9.1.1 https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.9.1.1
-------------------------------------------------------- --------------------------------------------------------
+3 -1
View File
@@ -1,4 +1,4 @@
# ML4W Dotfiles 2.9.1.1 # ML4W Dotfiles 2.9.1.2
An advanced configuration of Hyprland for Arch Linux based distributions. This package includes an installation script to install and setup the required components. An advanced configuration of Hyprland for Arch Linux based distributions. This package includes an installation script to install and setup the required components.
@@ -55,6 +55,8 @@ THANK YOU very much for all your support, contributions and ideas:
- Don Williams: https://github.com/dwilliam62 - Don Williams: https://github.com/dwilliam62
- Teodor Orzechowski: https://gitlab.com/sq6gtt - Teodor Orzechowski: https://gitlab.com/sq6gtt
- Jamie Deppeler: https://gitlab.com/bknight2k - Jamie Deppeler: https://gitlab.com/bknight2k
- Yingjie Wang: https://gitlab.com/GaugeAndGravity
- Daniel Gerber: https://gitlab.com/dan.john.gerber
- https://gitlab.com/muee - https://gitlab.com/muee
and many more... and many more...
+2 -2
View File
@@ -9,8 +9,8 @@ style = "Regular"
opacity = 0.7 opacity = 0.7
[window.padding] [window.padding]
x = 15 x = 0
y = 15 y = 0
[selection] [selection]
save_to_clipboard = true save_to_clipboard = true
Binary file not shown.
+22 -6
View File
@@ -1,5 +1,4 @@
// Note that you must replace the image path to an existing image to display it. // Note that you must replace the image path to an existing image to display it.
{ {
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
// "logo": { // "logo": {
@@ -9,7 +8,7 @@
// "height": 12 // "height": 12
// }, // },
"display": { "display": {
// "separator": "  " // "separator": "  "
"separator": " " "separator": " "
}, },
"modules": [ "modules": [
@@ -74,7 +73,6 @@
"keyColor": "green" "keyColor": "green"
}, },
"break", "break",
{ {
"type": "shell", "type": "shell",
"key": "╭─", "key": "╭─",
@@ -85,6 +83,11 @@
"key": "├─", "key": "├─",
"keyColor": "yellow" "keyColor": "yellow"
}, },
{
"type": "editor",
"key": "├─",
"keyColor": "yellow"
},
{ {
"type": "terminalfont", "type": "terminalfont",
"key": "├─", "key": "├─",
@@ -115,7 +118,6 @@
"key": "╰─󰀻", "key": "╰─󰀻",
"keyColor": "yellow" "keyColor": "yellow"
}, },
"break", "break",
{ {
"type": "title", "type": "title",
@@ -149,6 +151,21 @@
"key": "├─󰝚", "key": "├─󰝚",
"keyColor": "blue" "keyColor": "blue"
}, },
{
"type": "cpuusage",
"key": "├─",
"keyColor": "blue"
},
{
"type": "loadavg",
"key": "├─",
"keyColor": "blue"
},
{
"type": "processes",
"key": "├─",
"keyColor": "blue"
},
{ {
"type": "localip", "type": "localip",
"key": "╰─󰩟", "key": "╰─󰩟",
@@ -158,8 +175,7 @@
"break", "break",
{ {
"type": "custom", "type": "custom",
"format": " \u001b[90m󱓻 \u001b[31m󱓻 \u001b[32m󱓻 \u001b[33m󱓻 \u001b[34m󱓻 \u001b[35m󱓻 \u001b[36m󱓻 \u001b[37m󱓻 \u001b[38m󱓻 \u001b[39m󱓻" "format": " \u001b[90m󱓻 \u001b[31m󱓻 \u001b[32m󱓻 \u001b[33m󱓻 \u001b[34m󱓻 \u001b[35m󱓻 \u001b[36m󱓻 \u001b[37m󱓻 \u001b[38m󱓻 \u001b[39m󱓻 "
} }
] ]
} }
+1 -1
View File
@@ -6,7 +6,7 @@
exec-once = ~/dotfiles/hypr/scripts/xdg.sh exec-once = ~/dotfiles/hypr/scripts/xdg.sh
# Start Polkit # Start Polkit
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = systemctl --user start hyprpolkitagent
# Load Dunst Notification Manager # Load Dunst Notification Manager
exec-once = dunst exec-once = dunst
+2 -1
View File
@@ -1 +1,2 @@
exec-once = hyprctl setcursor Vimix 24 exec-once = hyprctl setcursor Vimix-hyprcursors 32
env = HYPRCURSOR_THEME,Vimix-hyprcursors
+10 -5
View File
@@ -12,14 +12,19 @@ decoration {
new_optimizations = on new_optimizations = on
ignore_opacity = true ignore_opacity = true
xray = false xray = false
blurls = waybar
} }
active_opacity = 1.0 active_opacity = 1.0
inactive_opacity = 0.8 inactive_opacity = 0.8
fullscreen_opacity = 1.0 fullscreen_opacity = 1.0
drop_shadow = true shadow {
shadow_range = 30 enabled = true
shadow_render_power = 3 range = 30
col.shadow = 0x66000000 render_power = 3
color = 0x66000000
}
#drop_shadow = true
#shadow_range = 30
#shadow_render_power = 3
#col.shadow = 0x66000000
} }
+1 -1
View File
@@ -6,7 +6,7 @@
env = XDG_SESSION_TYPE,wayland env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland env = XDG_SESSION_DESKTOP,Hyprland
env = QT_QPA_PLATFORM,wayland env = QT_QPA_PLATFORM,wayland
env = QT_QPA_PLATFORMTHEME,qt6ct
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_AUTO_SCREEN_SCALE_FACTOR,1 env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = MOZ_ENABLE_WAYLAND,1 env = MOZ_ENABLE_WAYLAND,1
env = GDK_SCALE,1
+2
View File
@@ -3,3 +3,5 @@ exec-once = fcitx5 -d --replace
exec-once = fcitx5-remote -r exec-once = fcitx5-remote -r
bind=$mainMod CTRL, E, exec, pkill fcitx5 -9;sleep 1;fcitx5 -d --replace; sleep 1;fcitx5-remote -r bind=$mainMod CTRL, E, exec, pkill fcitx5 -9;sleep 1;fcitx5 -d --replace; sleep 1;fcitx5-remote -r
env=QT_IM_MODULE,fcitx
+1 -1
View File
@@ -3,4 +3,4 @@ xwayland {
} }
env = GDK_SCALE,2 env = GDK_SCALE,2
env = QT_SCALE_FACTOR=2 env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+12 -5
View File
@@ -1,7 +1,7 @@
# ----------------------------------------------------- # -----------------------------------------------------
# Key bindings # Key bindings
# name: "Default" # name: "Default"
# ----------------------------------------------------- # -----------------------------------------------------
# SUPER KEY # SUPER KEY
$mainMod = SUPER $mainMod = SUPER
@@ -9,11 +9,14 @@ $mainMod = SUPER
# Applications # Applications
bind = $mainMod, RETURN, exec, ~/dotfiles/.settings/terminal.sh bind = $mainMod, RETURN, exec, ~/dotfiles/.settings/terminal.sh
bind = $mainMod, B, exec, ~/dotfiles/.settings/browser.sh bind = $mainMod, B, exec, ~/dotfiles/.settings/browser.sh
bind = $mainMod, period, exec, emote bind = $mainMod SHIFT, E, exec, emote
# Windows # Windows
bind = $mainMod, Q, killactive bind = $mainMod, Q, killactive
bind = $mainMod, F, fullscreen bind = $mainMod, F, fullscreen
bind = $mainMod SHIFT, F, fullscreen, 1
bind = $mainMod CTRL SHIFT, F, fullscreen, 2
bind = $mainMod ALT, F, fakefullscreen
bind = $mainMod, E, exec, ~/dotfiles/.settings/filemanager.sh bind = $mainMod, E, exec, ~/dotfiles/.settings/filemanager.sh
bind = $mainMod, T, togglefloating bind = $mainMod, T, togglefloating
bind = $mainMod SHIFT, T, exec, ~/dotfiles/hypr/scripts/toggleallfloat.sh bind = $mainMod SHIFT, T, exec, ~/dotfiles/hypr/scripts/toggleallfloat.sh
@@ -29,21 +32,25 @@ bind = $mainMod SHIFT, left, resizeactive, -100 0
bind = $mainMod SHIFT, up, resizeactive, 0 -100 bind = $mainMod SHIFT, up, resizeactive, 0 -100
bind = $mainMod SHIFT, down, resizeactive, 0 100 bind = $mainMod SHIFT, down, resizeactive, 0 100
bind = $mainMod, G, togglegroup bind = $mainMod, G, togglegroup
bind = $mainMod CTRL, Tab, changegroupactive, f
# Actions # Actions
bind = $mainMod, PRINT, exec, ~/dotfiles/hypr/scripts/screenshot.sh bind = $mainMod, PRINT, exec, ~/dotfiles/hypr/scripts/screenshot.sh
bind = $mainMod CTRL, Q, exec, wlogout bind = $mainMod CTRL, Q, exec, wlogout
bind = $mainMod SHIFT, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh bind = $mainMod SHIFT, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh
bind = $mainMod CTRL, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh select bind = $mainMod CTRL, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh select
bind = $mainMod CTRL, RETURN, exec, rofi -show drun -replace -i bind = $mainMod, SPACE, exec, rofi -show drun -replace -i
bind = $mainMod CTRL, H, exec, ~/dotfiles/hypr/scripts/keybindings.sh bind = $mainMod CTRL, H, exec, ~/dotfiles/hypr/scripts/keybindings.sh
bind = $mainMod SHIFT, B, exec, ~/dotfiles/waybar/launch.sh bind = $mainMod SHIFT, B, exec, ~/dotfiles/waybar/launch.sh
bind = $mainMod CTRL, B, exec, ~/dotfiles/waybar/toggle.sh
bind = $mainMod SHIFT, R, exec, ~/dotfiles/hypr/scripts/loadconfig.sh bind = $mainMod SHIFT, R, exec, ~/dotfiles/hypr/scripts/loadconfig.sh
bind = $mainMod CTRL, F, exec, ~/dotfiles/scripts/filemanager.sh
bind = $mainMod CTRL, C, exec, ~/dotfiles/scripts/cliphist.sh bind = $mainMod CTRL, C, exec, ~/dotfiles/scripts/cliphist.sh
bind = $mainMod, V, exec, ~/dotfiles/scripts/cliphist.sh bind = $mainMod, V, exec, ~/dotfiles/scripts/cliphist.sh
bind = $mainMod CTRL, T, exec, ~/dotfiles/waybar/themeswitcher.sh bind = $mainMod CTRL, T, exec, ~/dotfiles/waybar/themeswitcher.sh
bind = $mainMod CTRL, S, exec, ~/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage bind = $mainMod CTRL, S, exec, ~/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage
bind = $mainMod CTRL, P, exec, hyprpicker -a
bind = $mainMod SHIFT, S, exec, ~/dotfiles/hypr/scripts/hyprshade.sh
bind = $mainMod ALT, G, exec, ~/dotfiles/hypr/scripts/gamemode.sh
# Workspaces # Workspaces
bind = $mainMod, 1, workspace, 1 bind = $mainMod, 1, workspace, 1
+75 -76
View File
@@ -7,89 +7,88 @@
$mainMod = SUPER $mainMod = SUPER
# Applications # Applications
bind = $mainMod, RETURN, exec, ~/dotfiles/.settings/terminal.sh bind = $mainMod, RETURN, exec, ~/dotfiles/.settings/terminal.sh # Open the terminal
bind = $mainMod, B, exec, ~/dotfiles/.settings/browser.sh bind = $mainMod, B, exec, ~/dotfiles/.settings/browser.sh # Open the browser
bind = $mainMod, E, exec, ~/dotfiles/.settings/filemanager.sh # Open the filemanager
# Windows # Windows
bind = $mainMod, Q, killactive bind = $mainMod, Q, killactive # Kill active window
bind = $mainMod, F, fullscreen bind = $mainMod, F, fullscreen # Set active window to fullscreen
bind = $mainMod, E, exec, ~/dotfiles/.settings/filemanager.sh bind = $mainMod, T, togglefloating # Toggle active windows into floating mode
bind = $mainMod, T, togglefloating bind = $mainMod SHIFT, T, exec, ~/dotfiles/hypr/scripts/toggleallfloat.sh # Toggle all windows into floating mode
bind = $mainMod SHIFT, T, exec, ~/dotfiles/hypr/scripts/toggleallfloat.sh bind = $mainMod, J, togglesplit # Toggle split
bind = $mainMod, J, togglesplit bind = $mainMod, left, movefocus, l # Move focus left
bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r # Move focus right
bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u # Move focus up
bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d # Move focus down
bind = $mainMod, down, movefocus, d bindm = $mainMod, mouse:272, movewindow # Move window with the mouse
bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow # Resize window with the mouse
bindm = $mainMod, mouse:273, resizewindow bind = $mainMod SHIFT, right, resizeactive, 100 0 # Increase window width with keyboard
bind = $mainMod SHIFT, right, resizeactive, 100 0 bind = $mainMod SHIFT, left, resizeactive, -100 0 # Reduce window width with keyboard
bind = $mainMod SHIFT, left, resizeactive, -100 0 bind = $mainMod SHIFT, down, resizeactive, 0 100 # Increase window height with keyboard
bind = $mainMod SHIFT, up, resizeactive, 0 -100 bind = $mainMod SHIFT, up, resizeactive, 0 -100 # Reduce window height with keyboard
bind = $mainMod SHIFT, down, resizeactive, 0 100 bind = $mainMod, G, togglegroup # Toggle window group
bind = $mainMod, G, togglegroup
# Actions # Actions
bind = $mainMod SHIFT, A, exec, ~/dotfiles/hypr/scripts/toggle-animations.sh bind = $mainMod SHIFT, A, exec, ~/dotfiles/hypr/scripts/toggle-animations.sh # Toggle animations
bind = $mainMod, PRINT, exec, ~/dotfiles/hypr/scripts/screenshot.sh bind = $mainMod, PRINT, exec, ~/dotfiles/hypr/scripts/screenshot.sh # Take a screenshot
bind = $mainMod CTRL, Q, exec, wlogout bind = $mainMod CTRL, Q, exec, wlogout # Start wlogout
bind = $mainMod SHIFT, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh bind = $mainMod SHIFT, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh # Change the wallpaper
bind = $mainMod CTRL, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh select bind = $mainMod CTRL, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh select # Open wallpaper selector
bind = $mainMod CTRL, RETURN, exec, rofi -show drun -replace -i bind = $mainMod CTRL, RETURN, exec, rofi -show drun -replace -i # Open application launcher
bind = $mainMod CTRL, H, exec, ~/dotfiles/hypr/scripts/keybindings.sh bind = $mainMod CTRL, H, exec, ~/dotfiles/hypr/scripts/keybindings.sh # Show keybindings
bind = $mainMod SHIFT, B, exec, ~/dotfiles/waybar/launch.sh bind = $mainMod SHIFT, B, exec, ~/dotfiles/waybar/launch.sh # Reload waybar
bind = $mainMod CTRL, B, exec, ~/dotfiles/waybar/toggle.sh bind = $mainMod CTRL, B, exec, ~/dotfiles/waybar/toggle.sh # Toggle waybar
bind = $mainMod SHIFT, R, exec, ~/dotfiles/hypr/scripts/loadconfig.sh bind = $mainMod SHIFT, R, exec, ~/dotfiles/hypr/scripts/loadconfig.sh # Reload hyprland config
bind = $mainMod CTRL, C, exec, ~/dotfiles/scripts/cliphist.sh bind = $mainMod, V, exec, ~/dotfiles/scripts/cliphist.sh # Open clipboard manager
bind = $mainMod, V, exec, ~/dotfiles/scripts/cliphist.sh bind = $mainMod CTRL, T, exec, ~/dotfiles/waybar/themeswitcher.sh # Open waybar theme switcher
bind = $mainMod CTRL, T, exec, ~/dotfiles/waybar/themeswitcher.sh bind = $mainMod CTRL, S, exec, ~/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app
bind = $mainMod CTRL, S, exec, ~/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage bind = $mainMod SHIFT, S, exec, ~/dotfiles/hypr/scripts/hyprshade.sh # Toggle screenshader
bind = $mainMod CTRL, P, exec, hyprpicker -a bind = $mainMod ALT, G, exec, ~/dotfiles/hypr/scripts/gamemode.sh # Toggle game mode
bind = $mainMod SHIFT, S, exec, ~/dotfiles/hypr/scripts/hyprshade.sh
bind = $mainMod ALT, G, exec, ~/dotfiles/hypr/scripts/gamemode.sh
# Workspaces # Workspaces
bind = $mainMod, 1, workspace, 1 bind = $mainMod, 1, workspace, 1 # Open workspace 1
bind = $mainMod, 2, workspace, 2 bind = $mainMod, 2, workspace, 2 # Open workspace 2
bind = $mainMod, 3, workspace, 3 bind = $mainMod, 3, workspace, 3 # Open workspace 3
bind = $mainMod, 4, workspace, 4 bind = $mainMod, 4, workspace, 4 # Open workspace 4
bind = $mainMod, 5, workspace, 5 bind = $mainMod, 5, workspace, 5 # Open workspace 5
bind = $mainMod, 6, workspace, 6 bind = $mainMod, 6, workspace, 6 # Open workspace 6
bind = $mainMod, 7, workspace, 7 bind = $mainMod, 7, workspace, 7 # Open workspace 7
bind = $mainMod, 8, workspace, 8 bind = $mainMod, 8, workspace, 8 # Open workspace 8
bind = $mainMod, 9, workspace, 9 bind = $mainMod, 9, workspace, 9 # Open workspace 9
bind = $mainMod, 0, workspace, 10 bind = $mainMod, 0, workspace, 10 # Open workspace 10
bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 1, movetoworkspace, 1 # Move active window to workspace 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 2, movetoworkspace, 2 # Move active window to workspace 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 3, movetoworkspace, 3 # Move active window to workspace 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 4, movetoworkspace, 4 # Move active window to workspace 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 5, movetoworkspace, 5 # Move active window to workspace 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 6, movetoworkspace, 6 # Move active window to workspace 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $mainMod SHIFT, 7, movetoworkspace, 7 # Move active window to workspace 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 8, movetoworkspace, 8 # Move active window to workspace 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $mainMod SHIFT, 9, movetoworkspace, 9 # Move active window to workspace 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10 bind = $mainMod SHIFT, 0, movetoworkspace, 10 # Move active window to workspace 10
bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_down, workspace, e+1 # Open next workspace
bind = $mainMod, mouse_up, workspace, e-1 bind = $mainMod, mouse_up, workspace, e-1 # Open previous workspace
bind = $mainMod CTRL, down, workspace, empty bind = $mainMod CTRL, down, workspace, empty # Open the next empty workspace
# Fn keys
bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10%
bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%-
bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioPause, exec, playerctl pause
bind = , XF86AudioNext, exec, playerctl next
bind = , XF86AudioPrev, exec, playerctl previous
bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
bind = , XF86Calculator, exec, qalculate-gtk
bind = , XF86Lock, exec, hyprlock
bind = , XF86Tools, exec, alacritty --class dotfiles-floating -e ~/dotfiles/hypr/settings/settings.sh
# Passthrough SUPER KEY to Virtual Machine # Passthrough SUPER KEY to Virtual Machine
bind = $mainMod, P, submap, passthru bind = $mainMod, P, submap, passthru # Passthrough SUPER key to virtual machine
submap = passthru submap = passthru
bind = SUPER, Escape, submap, reset bind = SUPER, Escape, submap, reset # Get SUPER key back from virtual machine
submap = reset submap = reset
# Fn keys
bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10% # Increase brightness by 10%
bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%- # Reduce brightness by 10%
bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% # Increase volume by 5%
bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% # Reduce volume by 5%
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # Toggle mute
bind = , XF86AudioPlay, exec, playerctl play-pause # Audio play pause
bind = , XF86AudioPause, exec, playerctl pause # Audio pause
bind = , XF86AudioNext, exec, playerctl next # Audio next
bind = , XF86AudioPrev, exec, playerctl previous # Audio previous
bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle # Toggle microphone
bind = , XF86Calculator, exec, qalculate-gtk # Open calculator
bind = , XF86Lock, exec, hyprlock # Open screenlock
bind = , XF86Tools, exec, alacritty --class dotfiles-floating -e ~/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app
+1 -2
View File
@@ -8,9 +8,8 @@ dwindle {
} }
master { master {
new_is_master = true
} }
gestures { gestures {
workspace_swipe = false workspace_swipe = false
} }
+2 -1
View File
@@ -6,5 +6,6 @@ misc {
disable_hyprland_logo = true disable_hyprland_logo = true
disable_splash_rendering = true disable_splash_rendering = true
enable_swallow = true enable_swallow = true
swallow_regex = ^(Alacritty)$ swallow_regex = ^(Alacritty|kitty|thunar)$
font_family = FiraCode Nerd Font
} }
+3 -4
View File
@@ -22,9 +22,9 @@ windowrulev2 = float,class:(ml4w-dotfiles-settings.py)
windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py) windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py)
windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py) windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py)
windowrulev2 = float,class:(com.ml4w.hyprlandsettings) windowrulev2 = float,class:(com.ml4w.hyprland.settings)
windowrulev2 = size 700 600,class:(com.ml4w.hyprlandsettings) windowrulev2 = size 700 600,class:(com.ml4w.hyprland.settings)
windowrulev2 = center,class:(com.ml4w.hyprlandsettings) windowrulev2 = center,class:(com.ml4w.hyprland.settings)
windowrulev2 = float,class:(ml4w-hyprland-settings.py) windowrulev2 = float,class:(ml4w-hyprland-settings.py)
windowrulev2 = size 700 600,class:(ml4w-hyprland-settings.py) windowrulev2 = size 700 600,class:(ml4w-hyprland-settings.py)
@@ -37,4 +37,3 @@ windowrulev2 = center,class:(dotfiles-floating)
env = APPIMAGELAUNCHER_DISABLE,1 env = APPIMAGELAUNCHER_DISABLE,1
env = XCURSOR_SIZE,24 env = XCURSOR_SIZE,24
env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_CURRENT_DESKTOP,Hyprland
+9 -3
View File
@@ -1,6 +1,6 @@
# ----------------------------------------------------- # -----------------------------------------------------
# Window rules # Window rules
# ----------------------------------------------------- # -----------------------------------------------------
windowrule = tile,^(Microsoft-edge)$ windowrule = tile,^(Microsoft-edge)$
windowrule = tile,^(Brave-browser)$ windowrule = tile,^(Brave-browser)$
@@ -13,7 +13,13 @@ windowrule = float,^(showmethekey-gtk)$
windowrule = pin,^(showmethekey-gtk)$ windowrule = pin,^(showmethekey-gtk)$
layerrule = blur, gtk-layer-shell layerrule = blur, gtk-layer-shell
layerrule = blur, logout_dialog layerrule = blur, logout_dialog
layerrule = blur, waybar
windowrule = float,title=^(Mathematica)$ windowrule = float,title:^(Mathematica)$
windowrule = opacity 0.75, ^(Code)$ windowrule = opacity 0.75, ^(Code)$
windowrule = opacity 0.75, ^(code-oss)$
windowrule = opacity 0.75, ^(code-url-handler)$
windowrule = float,^(QQ)$ windowrule = float,^(QQ)$
windowrule = float,^(wechat)$
windowrule = float,^(fdm)$
windowrule = float,^(xdg-desktop-portal-gtk)$
+9
View File
@@ -11,3 +11,12 @@ general {
col.inactive_border = rgba(ffffffff) col.inactive_border = rgba(ffffffff)
layout = dwindle layout = dwindle
} }
group {
col.border_active = $color11
col.border_inactive = rgba(ffffffff)
groupbar {
col.active = $color11
col.inactive = $color13
}
}
+31 -31
View File
@@ -1,48 +1,48 @@
# _ _ _ _ # _ _ _ _
# | | | |_ _ _ __ _ __| | __ _ _ __ __| | # | | | |_ _ _ __ _ __| | __ _ _ __ __| |
# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` | # | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` |
# | _ | |_| | |_) | | | | (_| | | | | (_| | # | _ | |_| | |_) | | | | (_| | | | | (_| |
# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_| # |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_|
# |___/|_| # |___/|_|
# #
# ----------------------------------------------------- # -----------------------------------------------------
# IMPORTANT: Don't overwrite ML4W configuration. # IMPORTANT: Don't overwrite ML4W configuration.
# Create your own custom configuration variation instead. # Create your own custom configuration variation instead.
# https://gitlab.com/stephan-raabe/dotfiles#hyprland-configuration-variations # https://gitlab.com/stephan-raabe/dotfiles#hyprland-configuration-variations
# ----------------------------------------------------- # -----------------------------------------------------
# Monitor # Monitor
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/dotfiles/hypr/conf/monitor.conf source = ~/dotfiles/hypr/conf/monitor.conf
# ----------------------------------------------------- # -----------------------------------------------------
# Autostart # Autostart
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/dotfiles/hypr/conf/autostart.conf source = ~/dotfiles/hypr/conf/autostart.conf
# ----------------------------------------------------- # -----------------------------------------------------
# Cursor # Cursor
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/dotfiles/hypr/conf/cursor.conf source = ~/dotfiles/hypr/conf/cursor.conf
# ----------------------------------------------------- # -----------------------------------------------------
# Environment # Environment
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/dotfiles/hypr/conf/environment.conf source = ~/dotfiles/hypr/conf/environment.conf
# ----------------------------------------------------- # -----------------------------------------------------
# Keyboard # Keyboard
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/dotfiles/hypr/conf/keyboard.conf source = ~/dotfiles/hypr/conf/keyboard.conf
# ----------------------------------------------------- # -----------------------------------------------------
# Load pywal color file # Load pywal color file
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/.cache/wal/colors-hyprland.conf source = ~/.cache/wal/colors-hyprland.conf
# ----------------------------------------------------- # -----------------------------------------------------
# Load configuration files # Load configuration files
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/dotfiles/hypr/conf/window.conf source = ~/dotfiles/hypr/conf/window.conf
source = ~/dotfiles/hypr/conf/decoration.conf source = ~/dotfiles/hypr/conf/decoration.conf
source = ~/dotfiles/hypr/conf/layout.conf source = ~/dotfiles/hypr/conf/layout.conf
@@ -50,22 +50,22 @@ source = ~/dotfiles/hypr/conf/misc.conf
source = ~/dotfiles/hypr/conf/keybinding.conf source = ~/dotfiles/hypr/conf/keybinding.conf
source = ~/dotfiles/hypr/conf/windowrule.conf source = ~/dotfiles/hypr/conf/windowrule.conf
# ----------------------------------------------------- # -----------------------------------------------------
# Animation # Animation
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/dotfiles/hypr/conf/animation.conf source = ~/dotfiles/hypr/conf/animation.conf
# ----------------------------------------------------- # -----------------------------------------------------
# Custom # Custom
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/dotfiles/hypr/conf/custom.conf source = ~/dotfiles/hypr/conf/custom.conf
# ----------------------------------------------------- # -----------------------------------------------------
# ML4W Configuration # ML4W Configuration
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/dotfiles/hypr/conf/ml4w.conf source = ~/dotfiles/hypr/conf/ml4w.conf
# ----------------------------------------------------- # -----------------------------------------------------
# Environment for xdg-desktop-portal-hyprland # Environment for xdg-desktop-portal-hyprland
# ----------------------------------------------------- # -----------------------------------------------------
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+2 -2
View File
@@ -7,6 +7,6 @@ plugins = [
[scratchpads.term] [scratchpads.term]
animation = "fromTop" animation = "fromTop"
command = "kitty --class kitty-dropterm" command = "alacritty --class alacritty-dropterm"
class = "kitty-dropterm" class = "alacritty-dropterm"
size = "75% 60%" size = "75% 60%"
+10 -5
View File
@@ -7,13 +7,18 @@
# #
if [ -f ~/.cache/gamemode ] ;then if [ -f ~/.cache/gamemode ] ;then
hyprctl keyword animations:enabled true hyprctl reload
hyprctl keyword decoration:blur:enabled true
rm ~/.cache/gamemode rm ~/.cache/gamemode
notify-send "Gamemode deactivated" "Animations and blur enabled" notify-send "Gamemode deactivated" "Animations and blur enabled"
else else
hyprctl keyword animations:enabled false hyprctl --batch "\
hyprctl keyword decoration:blur:enabled false keyword animations:enabled 0;\
touch ~/.cache/gamemode keyword decoration:drop_shadow 0;\
keyword decoration:blur:enabled 0;\
keyword general:gaps_in 0;\
keyword general:gaps_out 0;\
keyword general:border_size 1;\
keyword decoration:rounding 0"
touch ~/.cache/gamemode
notify-send "Gamemode activated" "Animations and blur disabled" notify-send "Gamemode activated" "Animations and blur disabled"
fi fi
+4 -4
View File
@@ -29,7 +29,7 @@ gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
gsettings set "$gnome_schema" font-name "$font_name" gsettings set "$gnome_schema" font-name "$font_name"
gsettings set "$gnome_schema" color-scheme "prefer-dark" gsettings set "$gnome_schema" color-scheme "prefer-dark"
if [ -f ~/dotfiles/hypr/conf/cursor.conf ] ;then # if [ -f ~/dotfiles/hypr/conf/cursor.conf ] ;then
echo "exec-once = hyprctl setcursor $cursor_theme $cursor_size" > ~/dotfiles/hypr/conf/cursor.conf # echo "exec-once = hyprctl setcursor $cursor_theme $cursor_size" > ~/dotfiles/hypr/conf/cursor.conf
hyprctl setcursor $cursor_theme $cursor_size # hyprctl setcursor $cursor_theme $cursor_size
fi # fi
+25 -9
View File
@@ -21,13 +21,29 @@ config_file=${config_file/source=~/}
config_file="/home/$USER$config_file" config_file="/home/$USER$config_file"
echo "Reading from: $config_file" echo "Reading from: $config_file"
# ----------------------------------------------------- keybinds=""
# Parse keybindings
# ----------------------------------------------------- # Detect Start String
keybinds=$(grep -oP '(?<=bind = ).*' $config_file) while read -r line
keybinds=$(echo "$keybinds" | sed 's/$mainMod/SUPER/g'| sed 's/,\([^,]*\)$/ = \1/' | sed 's/, exec//g' | sed 's/^,//g') do
# ----------------------------------------------------- if [[ "$line" == "bind"* ]]; then
# Show keybindings in rofi
# ----------------------------------------------------- line="$(echo "$line" | sed 's/$mainMod/SUPER/g')"
line="$(echo "$line" | sed 's/bind = //g')"
line="$(echo "$line" | sed 's/bindm = //g')"
IFS='#'
read -a strarr <<<"$line"
kb_str=${strarr[0]}
cm_str=${strarr[1]}
IFS=','
read -a kbarr <<<"$kb_str"
item="${kbarr[0]} + ${kbarr[1]}"$'\r'"${cm_str:1}"
keybinds=$keybinds$item$'\n'
fi
done < "$config_file"
sleep 0.2 sleep 0.2
rofi -dmenu -i -replace -p "Keybinds" -config ~/dotfiles/rofi/config-compact.rasi <<< "$keybinds" rofi -dmenu -i -markup -eh 2 -replace -p "Keybinds" -config ~/dotfiles/rofi/config-compact.rasi <<< "$keybinds"
+1
View File
@@ -78,6 +78,7 @@ fi
if [[ $profile == *"Qtile"* ]]; then if [[ $profile == *"Qtile"* ]]; then
source .install/qtile-dotfiles.sh source .install/qtile-dotfiles.sh
fi fi
source .install/zshfish.sh
source .install/settings.sh source .install/settings.sh
source .install/apps.sh source .install/apps.sh
source .install/gtk.sh source .install/gtk.sh
+25 -5
View File
@@ -1,14 +1,34 @@
font_family Fira Code Nerd Font # Maple
font_size 14.0 #font_family Maple Mono NF CN
bold_font auto # end Maple
# Fica Code
font_family FiraCode Nerd Font
font_features FiraCodeNF-Reg +cv01 +cv02 +cv06 +cv31 +zero +cv30
font_features FiraCodeNF-SemBd +cv01 +cv02 +cv06 +cv31 +zero
# end Fira Code
font_size 16.0
bold_font auto
italic_font auto italic_font auto
bold_italic_font auto bold_italic_font auto
cursor_trail 10
background_opacity 0.7 background_opacity 0.7
confirm_os_window_close 0 confirm_os_window_close 0
enable_audio_bell no
selection_foreground #000000 selection_foreground #000000
selection_background #F5FBFF selection_background #F5FBFF
detect_urls yes
copy_on_select clipboard
strip_trailing_spaces smart
rectangle_select_modifiers ctrl+alt
terminal_select_modifiers shift
enable_audio_bell no
remember_window_size no
window_padding_width 5
map ctrl+super+enter launch --cwd=current
+148
View File
@@ -0,0 +1,148 @@
#
# Example mpv configuration file
#
# Warning:
#
# The commented example options usually do _not_ set the default values. Call
# mpv with --list-options to see the default values for most options. There is
# no builtin or example mpv.conf with all the defaults.
#
#
# Configuration files are read system-wide from /etc/mpv or /usr/local/etc/mpv,
# and per-user from ~/.config/mpv, where per-user settings override
# system-wide settings, all of which are overridden by the command line.
#
# Configuration file settings and the command line options use the same
# underlying mechanisms. Most options can be put into the configuration file
# by dropping the preceding '--'. See the man page for a complete list of
# options.
#
# Lines starting with '#' are comments and are ignored.
#
# See the CONFIGURATION FILES section in the man page
# for a detailed description of the syntax.
#
# Profiles should be placed at the bottom of the configuration file to ensure
# that settings wanted as defaults are not restricted to specific profiles.
##################
# video settings #
##################
# Start in fullscreen mode by default.
#fs=yes
# force starting with centered window
#geometry=50%:50%
# don't allow a new window to have a size larger than 90% of the screen size
#autofit-larger=90%x90%
# Do not close the window on exit.
#keep-open=yes
# Do not wait with showing the video window until it has loaded. (This will
# resize the window once video is loaded. Also always shows a window with
# audio.)
#force-window=immediate
# Disable the On Screen Controller (OSC).
#osc=no
# Keep the player window on top of all other windows.
#ontop=yes
# Specify fast video rendering preset (for --vo=<gpu|gpu-next> only)
# Recommended for mobile devices or older hardware with limited processing power
#profile=fast
# Specify high quality video rendering preset (for --vo=<gpu|gpu-next> only)
# Offers superior image fidelity and visual quality for an enhanced viewing
# experience on capable hardware
#profile=high-quality
# Force video to lock on the display's refresh rate, and change video and audio
# speed to some degree to ensure synchronous playback - can cause problems
# with some drivers and desktop environments.
#video-sync=display-resample
# Enable hardware decoding if available. Often, this does not work with all
# video outputs, but should work well with default settings on most systems.
# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs
# may or may not help.
#hwdec=auto
##################
# audio settings #
##################
# Specify default audio device. You can list devices with: --audio-device=help
# The option takes the device string (the stuff between the '...').
#audio-device=alsa/default
# Do not filter audio to keep pitch when changing playback speed.
#audio-pitch-correction=no
# Output 5.1 audio natively, and upmix/downmix audio with a different format.
#audio-channels=5.1
# Disable any automatic remix, _if_ the audio output accepts the audio format.
# of the currently played file. See caveats mentioned in the manpage.
# (The default is "auto-safe", see manpage.)
#audio-channels=auto
##################
# other settings #
##################
autocreate-playlist=same
pause
directory-mode=ignore
# Pretend to be a web browser. Might fix playback with some streaming sites,
# but also will break with shoutcast streams.
#user-agent="Mozilla/5.0"
# cache settings
#
# Use a large seekable RAM cache even for local input.
#cache=yes
#
# Use extra large RAM cache (needs cache=yes to make it useful).
#demuxer-max-bytes=500M
#demuxer-max-back-bytes=100M
#
# Disable the behavior that the player will pause if the cache goes below a
# certain fill size.
#cache-pause=no
#
# Store cache payload on the hard disk instead of in RAM. (This may negatively
# impact performance unless used for slow input such as network.)
#cache-dir=~/.cache/
#cache-on-disk=yes
# Display English subtitles if available.
#slang=en
slang=zh,en
# Play Finnish audio if available, fall back to English otherwise.
#alang=fi,en
# Change subtitle encoding. For Arabic subtitles use 'cp1256'.
# If the file seems to be valid UTF-8, prefer UTF-8.
# (You can add '+' in front of the codepage to force it.)
#sub-codepage=cp1256
# You can also include other configuration files.
#include=/path/to/the/file/you/want/to/include
############
# Profiles #
############
# The options declared as part of profiles override global default settings,
# but only take effect when the profile is active.
# The following profile can be enabled on the command line with: --profile=eye-cancer
#[eye-cancer]
#sharpen=5
+121
View File
@@ -0,0 +1,121 @@
name: Bug Report
description: File a bug report
labels: [bug]
body:
- type: markdown
attributes:
value: |
_Before reporting:_ Search [existing issues](https://github.com/ayamir/nvimdots/issues) and check the [FAQ](https://github.com/ayamir/nvimdots/wiki/Issues). Thank you for helping us improve!
> [!IMPORTANT]
> The `0.11` branch is intended for nightly Neovim builds and is **not** stable. It typically harbors subtle issues scattered throughout. Therefore, refrain from submitting issues if you happen to encounter them. They will be closed directly unless a viable solution is proposed or included.
- type: checkboxes
id: is-latest-commit
attributes:
label: "Version confirmation"
description: "The local configuration is up-to-date in the current branch and this issue _persists_."
options:
- label: "Confirm"
required: true
- type: checkboxes
id: prerequisites-done
attributes:
label: "Following prerequisites"
description: "I've checked everything mentioned in [Wiki: Prerequisites](https://github.com/ayamir/nvimdots/wiki/Prerequisites)."
options:
- label: "Confirm"
required: true
- type: checkboxes
id: not-user-config-issue
attributes:
label: "Not a user config issue"
description: "This issue _persists_ after removing ALL user configs. If this is not the case, you should open a [Custom (User) Config Issue](https://github.com/ayamir/nvimdots/issues/new?assignees=&labels=usage&projects=&template=custom_config.yml) instead."
options:
- label: "Confirm"
required: true
- type: input
id: nvim-version
attributes:
label: "Neovim version"
description: "Paste the output of `nvim --version` here"
placeholder: "NVIM v0.11.0-dev-194+g6c7677e5d"
validations:
required: true
- type: input
id: system-version
attributes:
label: "Operating system/version"
placeholder: "macOS 12.6.1"
validations:
required: true
- type: input
id: terminal-version
attributes:
label: "Terminal name/version"
placeholder: "iTerm2 Build 3.4.17"
validations:
required: true
- type: input
id: term-env
attributes:
label: "$TERM environment variable"
placeholder: "xterm-256color"
validations:
required: false
- type: dropdown
id: branch
attributes:
label: "Branch info"
description: "Which branch are you currently on? If you are not sure, check the output of `git rev-parse --abbrev-ref HEAD`"
options:
- main (Default/Latest)
- 0.9 (Legacy)
- 0.8 (Deprecated)
- 0.11 (Nightly)
validations:
required: true
- type: dropdown
id: fetch-pref
attributes:
label: "Fetch Preferences"
description: "In what way do you fetch resources? If you are not sure, check the value of `use_ssh` in `lua/user/settings.lua`"
options:
- SSH (use_ssh = true)
- HTTPS (use_ssh = false)
validations:
required: true
- type: textarea
id: repro-steps
attributes:
label: "How to reproduce the issue"
description: "Note: Issues without any information will be closed directly"
placeholder: |
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
id: expected-behavior
attributes:
label: "Expected behavior"
description: "Describe the behavior you expect"
validations:
required: true
- type: textarea
id: actual-behavior
attributes:
label: "Actual behavior"
validations:
required: false
- type: textarea
id: extras
attributes:
label: Additional information
description: If applicable, you may include logs, images, or videos to help explain your problem
validations:
required: false
+8
View File
@@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: GitHub Discussions
url: https://github.com/ayamir/nvimdots/discussions/new/choose
about: Any issue that does not fall into the above categories shall go here
- name: GitHub Wiki
url: https://github.com/ayamir/nvimdots/wiki
about: Make sure you have checked our documentation first. To be explicit, the "Issues" section
+111
View File
@@ -0,0 +1,111 @@
name: Custom (User) Config Issue
description: Problems when trying to implement your custom config
labels: [usage]
body:
- type: markdown
attributes:
value: |
_Before requesting:_ Make sure you've read through our [Wiki: Usage](https://github.com/ayamir/nvimdots/wiki/Usage) before you start to add things to nvimdots!
> [!IMPORTANT]
> The `0.11` branch is intended for nightly Neovim builds and is **not** stable. It typically harbors subtle issues scattered throughout. Therefore, refrain from submitting issues if you happen to encounter them. They will be closed directly unless a viable solution is proposed or included.
- type: checkboxes
id: is-latest-commit
attributes:
label: "Version confirmation"
description: "The local configuration is up-to-date in the current branch and this issue _persists_."
options:
- label: "Confirm"
required: true
- type: checkboxes
id: prerequisites-done
attributes:
label: "Following prerequisites"
description: "I've checked everything mentioned in [Wiki: Prerequisites](https://github.com/ayamir/nvimdots/wiki/Prerequisites)."
options:
- label: "Confirm"
required: true
- type: input
id: nvim-version
attributes:
label: "Neovim version"
description: "Paste the output of `nvim --version` here"
placeholder: "NVIM v0.11.0-dev-194+g6c7677e5d"
validations:
required: true
- type: dropdown
id: branch-info
attributes:
label: "Branch info"
description: "This issue template mainly targets `main` branch. Check the output of `git rev-parse --abbrev-ref HEAD` if you're not sure."
options:
- main (Default/Latest)
- 0.9 (Legacy)
- 0.8 (Deprecated)
- 0.11 (Nightly)
validations:
required: true
- type: textarea
id: folder-structure-ta
attributes:
label: "Minimal (user) folder structure required to reproduce the issue"
description: "Note: You only need to describe where the *new/modified files* are. This section will be automatically formatted."
render: console
placeholder: |
└── lua/
├── core/
├── keymap/ default keymaps
├── modules/ default plugins and plugin configs
└── user custom configs root directory
├── configs/ custom plugin config folder
│ ├── dap-clients/ custom dap client config folder
│ ├── lsp-servers/ custom lsp server config folder
│ └── your-config.lua your plugin configs (if applicable)
├── keymap/ custom keymap folder
│ └── your-config.lua your keymap overrides (if applicable)
├── plugins/ custom plugin folder
│ └── your-config.lua your plugins (if applicable)
├── event.lua custom `core/events.lua` overrides
├── options.lua custom `core/options.lua` overrides
└── settings.lua custom `core/settings.lua` overrides
validations:
required: true
- type: textarea
id: repro-steps
attributes:
label: "Minimal config with steps on how to reproduce the issue"
description: "Note: Issues without any information will be closed directly"
placeholder: |
This is my custom config (`specs.lua`):
```lua
return {
popup = {
delay_ms = 20,
}
}
```
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
id: expected-behavior
attributes:
label: "Expected behavior"
description: "Describe the behavior you expect"
validations:
required: true
- type: textarea
id: extras
attributes:
label: Additional information
description: If applicable, you may include logs, images, or videos to help explain your problem
validations:
required: false
+22
View File
@@ -0,0 +1,22 @@
name: Feature Request
description: Request an enhancement for this project
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
_Before requesting:_ Search [existing issues](https://github.com/ayamir/nvimdots/labels/enhancement) and check the [FAQ](https://github.com/ayamir/nvimdots/wiki/Issues). Thank you for helping us improve!
- type: textarea
id: feat-desc
attributes:
label: "Feature description"
validations:
required: true
- type: textarea
id: extras
attributes:
label: "Additional information"
description: "If applicable, you may include images or videos to help explain your request"
validations:
required: false
+148
View File
@@ -0,0 +1,148 @@
name: LSP Issue
description: File a bug report related to LSPs
labels: [bug, lsp]
body:
- type: markdown
attributes:
value: |
_Before reporting:_ Search [existing issues](https://github.com/ayamir/nvimdots/issues) and check the [FAQ](https://github.com/ayamir/nvimdots/wiki/Issues). Thank you for helping us improve!
> [!IMPORTANT]
> The `0.11` branch is intended for nightly Neovim builds and is **not** stable. It typically harbors subtle issues scattered throughout. Therefore, refrain from submitting issues if you happen to encounter them. They will be closed directly unless a viable solution is proposed or included.
- type: checkboxes
id: is-latest-commit
attributes:
label: "Version confirmation"
description: "The local configuration is up-to-date in the current branch and this issue _persists_."
options:
- label: "Confirm"
required: true
- type: checkboxes
id: prerequisites-done
attributes:
label: "Following prerequisites"
description: "I've checked everything mentioned in [Wiki: Prerequisites](https://github.com/ayamir/nvimdots/wiki/Prerequisites)."
options:
- label: "Confirm"
required: true
- type: checkboxes
id: not-user-config-issue
attributes:
label: "Not a user config issue"
description: "This issue _persists_ after removing ALL user configs. If this is not the case, you should open a [Custom (User) Config Issue](https://github.com/ayamir/nvimdots/issues/new?assignees=&labels=usage&projects=&template=custom_config.yml) instead."
options:
- label: "Confirm"
required: true
- type: input
id: nvim-version
attributes:
label: "Neovim version"
description: "Paste the output of `nvim --version` here"
placeholder: "NVIM v0.11.0-dev-194+g6c7677e5d"
validations:
required: true
- type: input
id: system-version
attributes:
label: "Operating system/version"
placeholder: "macOS 12.6.1"
validations:
required: true
- type: input
id: terminal-version
attributes:
label: "Terminal name/version"
placeholder: "iTerm2 Build 3.4.17"
validations:
required: true
- type: input
id: term-env
attributes:
label: "$TERM environment variable"
placeholder: "xterm-256color"
validations:
required: false
- type: dropdown
id: branch
attributes:
label: "Branch info"
description: "Which branch are you currently on? If you are not sure, check the output of `git rev-parse --abbrev-ref HEAD`"
options:
- main (Default/Latest)
- 0.9 (Legacy)
- 0.8 (Deprecated)
- 0.11 (Nightly)
validations:
required: true
- type: dropdown
id: fetch-pref
attributes:
label: "Fetch Preferences"
description: "In what way do you fetch resources? If you are not sure, check the value of `use_ssh` in `lua/user/settings.lua`"
options:
- SSH (use_ssh = true)
- HTTPS (use_ssh = false)
validations:
required: true
- type: input
id: servers
attributes:
label: "Affected language servers"
description: "If this issue is specific to one or more language servers, list them here. If not, write `any`"
placeholder: "lua-language-server, clangd"
validations:
required: true
- type: textarea
id: repro-steps
attributes:
label: "How to reproduce the issue"
description: "Note: Issues without any information will be closed directly"
placeholder: |
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
id: actual-behavior
attributes:
label: "Actual behavior"
description: "Briefly describe what you've observed"
validations:
required: true
- type: textarea
id: expected-behavior
attributes:
label: "Expected behavior"
description: "Describe the behavior you expect"
validations:
required: false
- type: textarea
id: support-info
attributes:
label: "Support info"
description: "Plase include information (screenshots) from `:LspInfo` and `:Mason`"
placeholder: |
:LspInfo
:Mason
validations:
required: true
- type: textarea
id: lsp-logs
attributes:
label: "Logs"
description: "Please copy and paste any relevant log output (e.g., `${HOME}/.local/state/nvim/lsp.log` and `${HOME}/.cache/nvim/lsp.log`). This section will be automatically formatted"
render: console
validations:
required: false
- type: textarea
id: extras
attributes:
label: "Additional information"
description: "If applicable, you may include images or videos to help explain your problem"
validations:
required: false
+11
View File
@@ -0,0 +1,11 @@
name: lint code
on: [push, pull_request]
jobs:
luacheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: lunarmodules/luacheck@v1
with:
args: . --std luajit --globals vim _debugging _command_panel _flash_esc_or_noh _telescope_collections _toggle_lazygit --max-line-length 150 --no-config
+13
View File
@@ -0,0 +1,13 @@
name: style check
on: [push, pull_request]
jobs:
stylua:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: JohnnyMorganz/stylua-action@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
version: latest
args: --check --config-path=stylua.toml .
+26
View File
@@ -0,0 +1,26 @@
name: update flake.lock
on:
# Scheduled update (1st of every month)
schedule: [{ cron: "30 02 1 * *" }]
jobs:
update-lockfile:
if: github.repository_owner == 'ayamir'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v26
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Run flake-update
run: |
nix flake update
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "chore(lockfile): auto update flake.lock"
commit_user_name: "github-actions[bot]"
commit_user_email: "41898282+github-actions[bot]@users.noreply.github.com"
commit_author: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
file_pattern: "flake.lock"
+41
View File
@@ -0,0 +1,41 @@
name: update lockfile
on:
# Scheduled update (each day)
schedule: [{ cron: "30 01 * * *" }]
jobs:
update-lockfile:
if: github.repository_owner == 'ayamir'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Required to count the commits
- uses: andstor/file-existence-action@v3
id: check_lockfile
with:
files: "lazy-lock.json"
- name: Run count-new-commits
run: |
echo "NEW_COMMIT_COUNT=$(git log --oneline --since '24 hours ago' --perl-regexp --author='^((?!github-actions).*)$' | wc -l)" >> "$GITHUB_ENV"
- uses: rhysd/action-setup-vim@v1
if: ${{ steps.check_lockfile.outputs.files_exists == 'true' && env.NEW_COMMIT_COUNT > 0 }}
with:
neovim: true
- name: Run lockfile-autoupdate
if: ${{ steps.check_lockfile.outputs.files_exists == 'true' && env.NEW_COMMIT_COUNT > 0 }}
timeout-minutes: 5
run: |
./scripts/install.sh
nvim --headless "+Lazy! update" +qa
cp -pv "${HOME}/.config/nvim/lazy-lock.json" .
- uses: stefanzweifel/git-auto-commit-action@v5
if: ${{ steps.check_lockfile.outputs.files_exists == 'true' && env.NEW_COMMIT_COUNT > 0 }}
with:
commit_message: "chore(lockfile): auto update lazy-lock.json"
commit_user_name: "github-actions[bot]"
commit_user_email: "41898282+github-actions[bot]@users.noreply.github.com"
commit_author: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
file_pattern: "lazy-lock.json"
+4
View File
@@ -0,0 +1,4 @@
lua/modules/plugins/custom.lua
lua/modules/configs/custom
lua/user
result
+7
View File
@@ -0,0 +1,7 @@
{
"formatting": {
"command": [
"nixpkgs-fmt"
]
}
}
+30
View File
@@ -0,0 +1,30 @@
BSD 3-Clause License
Copyright (c) 2021 ayamir
Copyright (c) 2022 Jint-lzxy, CharlesChiuGit
Copyright (c) 2023 aarnphm, misumisumi
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+216
View File
@@ -0,0 +1,216 @@
<h1 align="center">
nvimdots
<br>
<a href="https://github.com/neovim/neovim/releases/tag/stable">
<img
alt="Neovim Version Capability"
src="https://img.shields.io/badge/Supports%20Nvim-v0.10-A6D895?style=for-the-badge&colorA=363A4F&logo=neovim&logoColor=D9E0EE">
</a>
<a href="https://github.com/ayamir/nvimdots/releases">
<img
alt="Release"
src="https://img.shields.io/github/v/release/ayamir/nvimdots.svg?style=for-the-badge&logo=github&color=F2CDCD&logoColor=D9E0EE&labelColor=363A4F">
</a>
</h1>
<p align="center">
<a href="https://github.com/ayamir/nvimdots/stargazers">
<img
alt="Stars"
src="https://img.shields.io/github/stars/ayamir/nvimdots?colorA=363A4F&colorB=B7BDF8&logo=adafruit&logoColor=D9E0EE&style=for-the-badge">
</a>
<a href="https://github.com/ayamir/nvimdots/issues">
<img
alt="Issues"
src="https://img.shields.io/github/issues-raw/ayamir/nvimdots?colorA=363A4f&colorB=F5A97F&logo=github&logoColor=D9E0EE&style=for-the-badge">
</a>
<a href="https://github.com/ayamir/nvimdots/contributors">
<img
alt="Contributors"
src="https://img.shields.io/github/contributors/ayamir/nvimdots?colorA=363A4F&colorB=B5E8E0&logo=git&logoColor=D9E0EE&style=for-the-badge">
</a>
<img
alt="Code Size"
src="https://img.shields.io/github/languages/code-size/ayamir/nvimdots?colorA=363A4F&colorB=DDB6F2&logo=gitlfs&logoColor=D9E0EE&style=for-the-badge">
</p>
## 🪷 Introduction
This repo hosts our [Neovim](https://neovim.io/) configuration for Linux [(with NixOS support)](#nixos-support), macOS, and Windows. `init.lua` is the config entry point.
Branch info:
<div align="center">
| Branch | Supported Neovim version |
| :----: | :----------------------: |
| main | nvim 0.10 stable |
| 0.11 | nvim 0.11 nightly |
| 0.9 | nvim 0.9 |
| 0.8 | nvim 0.8 |
</div>
> [!IMPORTANT]
> The `0.11` branch is intended for nightly Neovim builds and is **not** stable. It typically harbors subtle issues scattered throughout. Therefore, refrain from submitting issues if you happen to encounter them. They will be closed directly unless a viable solution is proposed or included.
We currently manage plugins using [lazy.nvim](https://github.com/folke/lazy.nvim).
Chinese introduction is [here](https://zhuanlan.zhihu.com/p/382092667).
### 🎐 Features
- **Fast.** Less than **50ms** to start (Depends on SSD and CPU, tested on Zephyrus G14 2022 version).
- **Simple.** Runs out of the box.
- **Modern.** Pure `lua` config.
- **Modular.** Easy to customize.
- **Powerful.** Full functionality to code.
## 🏗 How to Install
Simply run the following interactive bootstrap command, and you should be all set 👍
- **Windows** _(Note: This script REQUIRES `pwsh` > `v7.1`)_
```pwsh
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/ayamir/nvimdots/HEAD/scripts/install.ps1'))
```
- **\*nix**
```sh
if command -v curl >/dev/null 2>&1; then
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ayamir/nvimdots/HEAD/scripts/install.sh)"
else
bash -c "$(wget -O- https://raw.githubusercontent.com/ayamir/nvimdots/HEAD/scripts/install.sh)"
fi
```
It's strongly recommended to read [Wiki: Prerequisites](https://github.com/ayamir/nvimdots/wiki/Prerequisites) before starting, especially for \*nix users.
## ⚙️ Configuration & Usage
<h3 align="center">
🗺️ Keybindings
</h3>
<p align="center">See <a href="https://github.com/ayamir/nvimdots/wiki/Keybindings" rel="nofollow">Wiki: Keybindings</a> for details</p>
<br>
<h3 align="center">
🔌 Plugins & Deps
</h3>
<p align="center">See <a href="https://github.com/ayamir/nvimdots/wiki/Plugins" rel="nofollow">Wiki: Plugins</a> for details <br><em>(You can also find a deps diagram there!)</em></p>
<br>
<h3 align="center">
🔧 Usage & Customization
</h3>
<p align="center">See <a href="https://github.com/ayamir/nvimdots/wiki/Usage" rel="nofollow">Wiki: Usage</a> for details</p>
<br>
<h3 align="center" id="nixos-support" name="nixos-support">
❄️ NixOS Support
</h3>
<p align="center">See <a href="https://github.com/ayamir/nvimdots/wiki/NixOS-Support" rel="nofollow">Wiki: NixOS Support</a> for details</p>
<br>
<h3 align="center">
🤔 FAQ
</h3>
<p align="center">See <a href="https://github.com/ayamir/nvimdots/wiki/Issues" rel="nofollow">Wiki: FAQ</a> for details</p>
## ✨ Features
<h3 align="center">
⏱️ Startup Time
</h3>
<p align="center">
<img src="https://raw.githubusercontent.com/ayamir/blog-imgs/main/startuptime.png"
width = "80%"
alt = "StartupTime"
/>
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/ayamir/blog-imgs/main/vimstartup.png"
width = "60%"
alt = "Vim-StartupTime"
/>
</p>
> Tested with [rhysd/vim-startuptime](https://github.com/rhysd/vim-startuptime)
<h3 align="center">
📸 Screenshots
</h3>
<p align="center">
<img src="https://raw.githubusercontent.com/ayamir/blog-imgs/main/dashboard.png" alt="Dashboard">
<em>Dashboard</em>
</p>
<br>
<p align="center">
<img src="https://raw.githubusercontent.com/ayamir/blog-imgs/main/telescope.png" alt="Telescope">
<em>Telescope</em>
</p>
<br>
<p align="center">
<img src="https://raw.githubusercontent.com/ayamir/blog-imgs/main/coding.png" alt="Coding">
<em>Coding</em>
</p>
<br>
<p align="center">
<img src="https://raw.githubusercontent.com/ayamir/blog-imgs/main/code_action.png" alt="Code Action">
<em>Code Action</em>
</p>
<br>
<p align="center">
<img src="https://raw.githubusercontent.com/ayamir/blog-imgs/main/dap.png" alt="Debugging">
<em>Debugging</em>
</p>
<br>
<p align="center">
<img src="https://raw.githubusercontent.com/ayamir/blog-imgs/main/lazygit.png" alt="Lazygit">
<em>Lazygit with built-in Terminal</em>
</p>
<br>
<p align="center">
<img src="https://raw.githubusercontent.com/ayamir/blog-imgs/main/command_ref.png" alt="Command quickref">
<em>Command quickref</em>
</p>
## 👐 Contributing
- If you find anything that needs improving, do not hesitate to point it out or create a PR.
- If you come across an issue, you can first use `:checkhealth` command provided by nvim to trouble-shoot yourself.
- If you still have such problems, feel free to open a new issue!
## ❤️ Thanks to
- [ayamir](https://github.com/ayamir)
- [Jint-lzxy](https://github.com/Jint-lzxy)
- [CharlesChiuGit](https://github.com/CharlesChiuGit)
- [aarnphm](https://github.com/aarnphm)
- [misumisumi](https://github.com/misumisumi)
## 🎉 Acknowledgement
- [glepnir/nvim](https://github.com/glepnir/nvim)
## 📜 License
This Neovim configuration is released under the BSD 3-Clause license, which grants the following permissions:
- Commercial use
- Distribution
- Modification
- Private use
For more convoluted language, see the [LICENSE](https://github.com/ayamir/nvimdots/blob/main/LICENSE).
+148
View File
@@ -0,0 +1,148 @@
{
"nodes": {
"devshell": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1717408969,
"narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=",
"owner": "numtide",
"repo": "devshell",
"rev": "1ebbe68d57457c8cae98145410b164b5477761f4",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1719745305,
"narHash": "sha256-xwgjVUpqSviudEkpQnioeez1Uo2wzrsMaJKJClh+Bls=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "c3c5ecc05edc7dafba779c6c1a61cd08ac6583e9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1719677234,
"narHash": "sha256-qO9WZsj/0E6zcK4Ht1y/iJ8XfwbBzq7xdqhBh44OP/M=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "36317d4d38887f7629876b0e43c8d9593c5cc48d",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1704161960,
"narHash": "sha256-QGua89Pmq+FBAro8NriTuoO/wNaUtugt29/qqA8zeeM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "63143ac2c9186be6d9da6035fa22620018c85932",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1717284937,
"narHash": "sha256-lIbdfCsf8LMFloheeE6N31+BMIeixqyQWbSr2vk79EQ=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1719468428,
"narHash": "sha256-vN5xJAZ4UGREEglh3lfbbkIj+MPEYMuqewMn4atZFaQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1e3deb3d8a86a870d925760db1a5adecc64d329d",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"devshell": "devshell",
"flake-parts": "flake-parts",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs_2"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}
+105
View File
@@ -0,0 +1,105 @@
{
# This provides only NixOS module
# As of 2023/08/19, you need to depend on nixpkgs-unstable.
# because "doq" is not included in the stable version.
description = "Provide nixosModules for ayamir/nvimdots";
inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
devshell.url = "github:numtide/devshell";
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ { self, flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; }
{
imports = [
inputs.devshell.flakeModule
];
flake = {
homeManagerModules = {
nvimdots = ./nixos;
};
};
systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
perSystem = { pkgs, system, ... }: {
packages = {
testEnv = (import ./nixos/testEnv.nix { inherit inputs pkgs; }).activationPackage;
check-linker = pkgs.writeShellApplication {
name = "check-linker";
text =
let
ldd_cmd = if pkgs.stdenv.isDarwin then "xcrun otool -L" else "${pkgs.glibc.bin}/bin/ldd";
in
''
#shellcheck disable=SC1090
source <(sed -ne :1 -e 'N;1,1b1' -e 'P;D' "${self.packages.${system}.testEnv}/home-path/bin/nvim")
echo "Checking files under ''${XDG_DATA_HOME}/''${NVIM_APPNAME:-nvim}/mason/bin..."
find "''${XDG_DATA_HOME}/''${NVIM_APPNAME:-nvim}/mason/bin" -type l | while read -r link; do
"${ldd_cmd}" "$(readlink -f "$link")" > /dev/zero 2>&1 || continue
linkers=$("${ldd_cmd}" "$(readlink -f "$link")" | tail -n+2)
echo "$linkers" | while read -r line; do
[ -z "$line" ] && continue
echo "$line" | grep -q "/nix/store" || printf '%s: %s does not link to /nix/store \n' "$(basename "$link")" "$line"
done
done
echo "*** Done ***"
'';
};
};
devshells.default = {
commands = [
{
help = "neovim linked to testEnv.";
name = "nvim";
command = ''
${self.packages.${system}.testEnv}/home-path/bin/nvim
'';
}
{
help = "check-linker";
package = self.packages.${system}.check-linker;
}
];
devshell = {
motd = ''
{202}🔨 Welcome to devshell{reset}
Symlink configs to "''${XDG_CONFIG_HOME}"/nvimdots!
And NVIM_APPNAME=nvimdots is already configured, so neovim will put files under "\$XDG_xxx_HOME"/nvimdots.
To uninstall, remove "\$XDG_xxx_HOME"/nvimdots.
$(type -p menu &>/dev/null && menu)
'';
startup = {
mkNvimDir = {
text = ''
mkdir -p "''${XDG_CONFIG_HOME}"/nvimdots
for path in lazy-lock.json init.lua lua snips tutor; do
ln -sf "''${PWD}/''${path}" "''${XDG_CONFIG_HOME}"/nvimdots/
done
'';
};
};
};
env = [
{
name = "NVIM_APPNAME";
value = "nvimdots";
}
{
name = "PATH";
prefix = "${self.packages.${system}.testEnv}/home-path/bin";
}
];
packages = with pkgs; [
nixd
nixpkgs-fmt
];
};
};
};
}
+3
View File
@@ -0,0 +1,3 @@
if not vim.g.vscode then
require("core")
end
-33
View File
@@ -1,33 +0,0 @@
" _ _ _
" | \ | | ___ _____ _(_)_ __ ___
" | \| |/ _ \/ _ \ \ / / | '_ ` _ \
" | |\ | __/ (_) \ V /| | | | | | |
" |_| \_|\___|\___/ \_/ |_|_| |_| |_|
"
" by Stephan Raabe (2023)
" -----------------------------------------------------
set nocompatible " disable compatibility to old-time vi
set showmatch " show matching
set ignorecase " case insensitive
set mouse=v " middle-click paste with
set hlsearch " highlight search
set incsearch " incremental search
set tabstop=4 " number of columns occupied by a tab
set softtabstop=4 " see multiple spaces as tabstops so <BS> does the right thing
set expandtab " converts tabs to white space
set shiftwidth=4 " width for autoindents
set autoindent " indent a new line the same amount as the line just typed
set number " add line numbers
set wildmode=longest,list " get bash-like tab completions
" set cc=80 " set an 80 column border for good coding style
filetype plugin indent on "allow auto-indenting depending on file type
syntax on " syntax highlighting
set mouse=a " enable mouse click
set clipboard=unnamedplus " using system clipboard
filetype plugin on
" set cursorline " highlight current cursorline
set ttyfast " Speed up scrolling in Vim
" set spell " enable spell check (may need to download language package)
" set noswapfile " disable creating swap file
" set backupdir=~/.cache/vim " Directory to store backup files.
+100
View File
@@ -0,0 +1,100 @@
{
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" },
"advanced-git-search.nvim": { "branch": "main", "commit": "198cc402af1790ab26830fdbf24a28c336a20ba6" },
"aerial.nvim": { "branch": "master", "commit": "4e77964569ef47a70f9bb76c668dcfea2d089d5a" },
"alpha-nvim": { "branch": "main", "commit": "41283fb402713fc8b327e60907f74e46166f4cfd" },
"autoclose.nvim": { "branch": "main", "commit": "dc42806540dcf448ecb2bad6b67204410cfbe629" },
"bigfile.nvim": { "branch": "main", "commit": "33eb067e3d7029ac77e081cfe7c45361887a311a" },
"bufferline.nvim": { "branch": "main", "commit": "0b2fd861eee7595015b6561dade52fb060be10c4" },
"catppuccin": { "branch": "refactor/syntax-highlighting", "commit": "87ef3315b10ddee9e82e5ec7d21bf5f24db1a20f" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-latex-symbols": { "branch": "main", "commit": "165fb66afdbd016eaa1570e41672c4c557b57124" },
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" },
"cmp-tmux": { "branch": "main", "commit": "95b1b921802e6f60627b3e76afb9380fddd87f9a" },
"cmp-treesitter": { "branch": "master", "commit": "c8e3a74b51597d69d240085a258636972ce98e15" },
"cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"copilot-cmp": { "branch": "master", "commit": "b6e5286b3d74b04256d0a7e3bd2908eabec34b44" },
"copilot.lua": { "branch": "master", "commit": "86537b286f18783f8b67bccd78a4ef4345679625" },
"crates.nvim": { "branch": "main", "commit": "c3fd47391de6999f4c939af89494d08443f71916" },
"csv.vim": { "branch": "master", "commit": "4d5255829afe3b6badb0c8a040116704c0d3213c" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
"dropbar.nvim": { "branch": "master", "commit": "cab5e0226bc4f90a28cadcb0dc7341d550f1bdf0" },
"fidget.nvim": { "branch": "main", "commit": "d855eed8a06531a7e8fd0684889b2943f373c469" },
"flash.nvim": { "branch": "main", "commit": "25ba3f4d1e0b080213b39518ebcfbb693a23c957" },
"friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" },
"fzf": { "branch": "master", "commit": "50fa90dfb8eab7f03a7602ea9c098b01ff7236e8" },
"fzy-lua-native": { "branch": "master", "commit": "820f745b7c442176bcc243e8f38ef4b985febfaf" },
"gitsigns.nvim": { "branch": "main", "commit": "f4928ba14eb6c667786ac7d69927f6aee6719f1e" },
"glance.nvim": { "branch": "master", "commit": "51059bcf21016387b6233c89eed220cf47fca752" },
"go.nvim": { "branch": "master", "commit": "033344ddfa3cd5cfd55037903264b2bb86691619" },
"guihua.lua": { "branch": "master", "commit": "225db770e36aae6a1e9e3a65578095c8eb4038d3" },
"hop.nvim": { "branch": "master", "commit": "036462a345792279c58f2f6445756efab706f04a" },
"indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" },
"lazy.nvim": { "branch": "main", "commit": "9a374a0fb4d3ac42dac4a129d4bead7252473c77" },
"local-highlight.nvim": { "branch": "master", "commit": "ae3ada3a332128b1036c84c8587b9069891c63da" },
"lsp-format-modifications.nvim": { "branch": "main", "commit": "006d4cd88f4f09fdc4375fcb75dd5b7d981a723b" },
"lsp_signature.nvim": { "branch": "master", "commit": "e6d225e27770db81346c2f2aa6c30d0e249f9e7f" },
"lspsaga.nvim": { "branch": "main", "commit": "6f920cfabddb9b7de5a3a4d0b7cd4f0774ae23e2" },
"lualine.nvim": { "branch": "master", "commit": "544dd1583f9bb27b393f598475c89809c4d5e86b" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "58bc9119ca273c0ce5a66fad1927ef0f617bd81b" },
"mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "4ba55f9755ebe8297d92c419b90a946123292ae6" },
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
"mini.align": { "branch": "main", "commit": "b54d88b16bfac62ca6b3d699566135639a3ca4fa" },
"neoconf.nvim": { "branch": "main", "commit": "57422353819051a67582d268d1557ed56d03d3a3" },
"neodim": { "branch": "master", "commit": "0543414f1205d8937d8e703a73ae1f9948940b14" },
"neoscroll.nvim": { "branch": "master", "commit": "a7f5953dbfbe7069568f2d0ed23a9709a56725ab" },
"none-ls.nvim": { "branch": "main", "commit": "2cde745aadc2c36f6860a77a556494870675771a" },
"nvim-bqf": { "branch": "main", "commit": "1b24dc6050c34e8cd377b6b4cd6abe40509e0187" },
"nvim-bufdel": { "branch": "main", "commit": "523d58e94e7212fff3e05c247b962dc8f93bcfde" },
"nvim-cmp": { "branch": "main", "commit": "d818fd0624205b34e14888358037fb6f5dc51234" },
"nvim-dap": { "branch": "master", "commit": "bc03b83c94d0375145ff5ac6a6dcf28c1241e06f" },
"nvim-dap-ui": { "branch": "master", "commit": "a5606bc5958db86f8d92803bea7400ee26a8d7e4" },
"nvim-highlight-colors": { "branch": "main", "commit": "a8f6952cb1ff7bde864a34c502f1a42c360a6662" },
"nvim-lspconfig": { "branch": "master", "commit": "e26da408cf955afa8e9ddbadd510e84ea8976cd7" },
"nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" },
"nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
"nvim-scrollview": { "branch": "main", "commit": "afc67708a5a5585553dee132ffbc4761bb135faf" },
"nvim-spectre": { "branch": "master", "commit": "9a28f926d3371b7ef02243cbbb653a0478d06e31" },
"nvim-tree.lua": { "branch": "master", "commit": "f9ff00bc06d7cb70548a3847d7a2a05e928bc988" },
"nvim-treehopper": { "branch": "master", "commit": "13559079e33665a310d9ccf0e43f4e9bb9f337e2" },
"nvim-treesitter": { "branch": "master", "commit": "b3c54c31887b05d91be41a41392c811876807fd8" },
"nvim-treesitter-context": { "branch": "master", "commit": "2aba92ceb1479485953007f4d5adf34d0b66917e" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" },
"nvim-ts-autotag": { "branch": "main", "commit": "1624866a1379fc1861797f0ed05899a9c1d2ff61" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "6b5f95aa4d24f2c629a74f2c935c702b08dbde62" },
"nvim-web-devicons": { "branch": "master", "commit": "e612de3d3a41a6b7be47f51e956dddabcbf419d9" },
"paint.nvim": { "branch": "main", "commit": "d738db9211ef73182ffa9b92a2a5661411267123" },
"persisted.nvim": { "branch": "main", "commit": "4df3f8a03690add1bc2f9a79b31e1c43f5e0dd05" },
"plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
"project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" },
"rainbow-delimiters.nvim": { "branch": "master", "commit": "b29da4a6061a88270e875b38367d82c04c856128" },
"rustaceanvim": { "branch": "master", "commit": "047f9c9d8cd2861745eb9de6c1570ee0875aa795" },
"search.nvim": { "branch": "main", "commit": "7b8f2315d031be73e14bc2d82386dfac15952614" },
"smart-splits.nvim": { "branch": "master", "commit": "44145a4b37217348293fe457992cc38cf3b19f33" },
"smartyank.nvim": { "branch": "master", "commit": "d9e078fe08d6466e37ea45ac446a9f60e6866789" },
"sniprun": { "branch": "master", "commit": "f2302d4081914c3312456c91dc6965dfeec266b1" },
"suda.vim": { "branch": "master", "commit": "b97fab52f9cdeabe2bbb5eb98d82356899f30829" },
"telescope-frecency.nvim": { "branch": "master", "commit": "bb2c63ee5375ede81c1945b58638412af42b2d62" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" },
"telescope-live-grep-args.nvim": { "branch": "master", "commit": "8ad632f793fd437865f99af5684f78300dac93fb" },
"telescope-undo.nvim": { "branch": "main", "commit": "51be9ae7c42fc27c0b05505e3a0162e0f05fbb6a" },
"telescope-zoxide": { "branch": "main", "commit": "68966349aa1b8e9ade403e18479ecf79447389a7" },
"telescope.nvim": { "branch": "master", "commit": "bfcc7d5c6f12209139f175e6123a7b7de6d9c18a" },
"todo-comments.nvim": { "branch": "main", "commit": "96fee098a90e7c09c9811aa7df71d773ba8b9b53" },
"toggleterm.nvim": { "branch": "main", "commit": "8ed0f52006d3207ec6c94de7db62da840937ef2a" },
"trouble.nvim": { "branch": "main", "commit": "ad8ef38666834e9e438f84bd446657445bc2a71e" },
"vim-cool": { "branch": "master", "commit": "662e7b11064cbeedad17c45d2fe926e78d3cd0b6" },
"vim-fugitive": { "branch": "master", "commit": "0444df68cd1cdabc7453d6bd84099458327e5513" },
"vim-matchup": { "branch": "master", "commit": "1535a769d5dca851fe7d41b0be95f7c7203a4bef" },
"vim-rhubarb": { "branch": "master", "commit": "ee69335de176d9325267b0fd2597a22901d927b1" },
"vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" },
"which-key.nvim": { "branch": "main", "commit": "6e61b0904e9c038b6c511c43591ae2d811b4975e" },
"wilder.nvim": { "branch": "master", "commit": "679f348dc90d80ff9ba0e7c470c40a4d038dcecf" }
}
+152
View File
@@ -0,0 +1,152 @@
-- Now use `<A-o>` or `<A-1>` to back to the `dotstutor`.
local autocmd = {}
function autocmd.nvim_create_augroups(definitions)
for group_name, definition in pairs(definitions) do
-- Prepend an underscore to avoid name clashes
vim.api.nvim_command("augroup _" .. group_name)
vim.api.nvim_command("autocmd!")
for _, def in ipairs(definition) do
local command = table.concat(vim.iter({ "autocmd", def }):flatten(math.huge):totable(), " ")
vim.api.nvim_command(command)
end
vim.api.nvim_command("augroup END")
end
end
-- Hold off on configuring anything related to the LSP until LspAttach
local mapping = require("keymap.completion")
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("LspKeymapLoader", { clear = true }),
callback = function(event)
if not _G._debugging then
-- LSP Keymaps
mapping.lsp(event.buf)
-- LSP Inlay Hints
local inlayhints_enabled = require("core.settings").lsp_inlayhints
local client = vim.lsp.get_client_by_id(event.data.client_id)
if client and client.server_capabilities.inlayHintProvider ~= nil then
vim.lsp.inlay_hint.enable(inlayhints_enabled == true, { bufnr = event.buf })
end
end
end,
})
-- auto close NvimTree
vim.api.nvim_create_autocmd("BufEnter", {
group = vim.api.nvim_create_augroup("NvimTreeClose", { clear = true }),
pattern = "NvimTree_*",
callback = function()
local layout = vim.api.nvim_call_function("winlayout", {})
if
layout[1] == "leaf"
and vim.bo[vim.api.nvim_win_get_buf(layout[2])].filetype == "NvimTree"
and layout[3] == nil
then
vim.api.nvim_command([[confirm quit]])
end
end,
})
-- auto close some filetype with <q>
vim.api.nvim_create_autocmd("FileType", {
pattern = {
"qf",
"help",
"man",
"notify",
"nofile",
"lspinfo",
"terminal",
"prompt",
"toggleterm",
"copilot",
"startuptime",
"tsplayground",
"PlenaryTestPopup",
},
callback = function(event)
vim.bo[event.buf].buflisted = false
vim.api.nvim_buf_set_keymap(event.buf, "n", "q", "<Cmd>close<CR>", { silent = true })
end,
})
function autocmd.load_autocmds()
local definitions = {
lazy = {},
bufs = {
-- Reload vim config automatically
{
"BufWritePost",
[[$VIM_PATH/{*.vim,*.yaml,vimrc} nested source $MYVIMRC | redraw]],
},
-- Reload Vim script automatically if setlocal autoread
{
"BufWritePost,FileWritePost",
"*.vim",
[[nested if &l:autoread > 0 | source <afile> | echo 'source ' . bufname('%') | endif]],
},
{ "BufWritePre", "/tmp/*", "setlocal noundofile" },
{ "BufWritePre", "COMMIT_EDITMSG", "setlocal noundofile" },
{ "BufWritePre", "MERGE_MSG", "setlocal noundofile" },
{ "BufWritePre", "*.tmp", "setlocal noundofile" },
{ "BufWritePre", "*.bak", "setlocal noundofile" },
-- auto place to last edit
{
"BufReadPost",
"*",
[[if line("'\"") > 1 && line("'\"") <= line("$") | execute "normal! g'\"" | endif]],
},
-- Auto toggle fcitx5
-- {"InsertLeave", "* :silent", "!fcitx5-remote -c"},
-- {"BufCreate", "*", ":silent !fcitx5-remote -c"},
-- {"BufEnter", "*", ":silent !fcitx5-remote -c "},
-- {"BufLeave", "*", ":silent !fcitx5-remote -c "}
},
wins = {
-- Highlight current line only on focused window
{
"WinEnter,BufEnter,InsertLeave",
"*",
[[if ! &cursorline && &filetype !~# '^\(dashboard\|clap_\)' && ! &pvw | setlocal cursorline | endif]],
},
{
"WinLeave,BufLeave,InsertEnter",
"*",
[[if &cursorline && &filetype !~# '^\(dashboard\|clap_\)' && ! &pvw | setlocal nocursorline | endif]],
},
-- Attempt to write shada when leaving nvim
{
"VimLeave",
"*",
[[if has('nvim') | wshada | else | wviminfo! | endif]],
},
-- Check if file changed when its window is focus, more eager than 'autoread'
{ "FocusGained", "* checktime" },
-- Equalize window dimensions when resizing vim window
{ "VimResized", "*", [[tabdo wincmd =]] },
},
ft = {
{ "FileType", "*", "setlocal formatoptions-=cro" },
{ "FileType", "alpha", "setlocal showtabline=0" },
{ "FileType", "markdown", "setlocal wrap" },
{ "FileType", "dap-repl", "lua require('dap.ext.autocompl').attach()" },
{
"FileType",
"c,cpp",
"nnoremap <leader>h :ClangdSwitchSourceHeaderVSplit<CR>",
},
},
yank = {
{
"TextYankPost",
"*",
[[silent! lua vim.highlight.on_yank({higroup="IncSearch", timeout=300})]],
},
},
}
autocmd.nvim_create_augroups(require("modules.utils").extend_config(definitions, "user.event"))
end
autocmd.load_autocmds()
+18
View File
@@ -0,0 +1,18 @@
local global = {}
local os_name = vim.uv.os_uname().sysname
function global:load_variables()
self.is_mac = os_name == "Darwin"
self.is_linux = os_name == "Linux"
self.is_windows = os_name == "Windows_NT"
self.is_wsl = vim.fn.has("wsl") == 1
self.vim_path = vim.fn.stdpath("config")
self.cache_dir = vim.fn.stdpath("cache")
self.data_dir = string.format("%s/site/", vim.fn.stdpath("data"))
self.modules_dir = self.vim_path .. "/modules"
self.home = self.is_windows and os.getenv("USERPROFILE") or os.getenv("HOME")
end
global:load_variables()
return global
+169
View File
@@ -0,0 +1,169 @@
local settings = require("core.settings")
local global = require("core.global")
-- Create cache dir and data dirs
local createdir = function()
local data_dirs = {
global.cache_dir .. "/backup",
global.cache_dir .. "/session",
global.cache_dir .. "/swap",
global.cache_dir .. "/tags",
global.cache_dir .. "/undo",
}
-- Only check whether cache_dir exists, this would be enough.
if vim.fn.isdirectory(global.cache_dir) == 0 then
---@diagnostic disable-next-line: param-type-mismatch
vim.fn.mkdir(global.cache_dir, "p")
for _, dir in pairs(data_dirs) do
if vim.fn.isdirectory(dir) == 0 then
vim.fn.mkdir(dir, "p")
end
end
end
end
local disable_distribution_plugins = function()
-- Disable menu loading
vim.g.did_install_default_menus = 1
vim.g.did_install_syntax_menu = 1
-- Comment this if you define your own filetypes in `after/ftplugin`
-- vim.g.did_load_filetypes = 1
-- Do not load native syntax completion
vim.g.loaded_syntax_completion = 1
-- Do not load spell files
vim.g.loaded_spellfile_plugin = 1
-- Whether to load netrw by default
-- vim.g.loaded_netrw = 1
-- vim.g.loaded_netrwFileHandlers = 1
-- vim.g.loaded_netrwPlugin = 1
-- vim.g.loaded_netrwSettings = 1
-- newtrw liststyle: https://medium.com/usevim/the-netrw-style-options-3ebe91d42456
vim.g.netrw_liststyle = 3
-- Do not load tohtml.vim
vim.g.loaded_2html_plugin = 1
-- Do not load zipPlugin.vim, gzip.vim and tarPlugin.vim (all of these plugins are
-- related to reading files inside compressed containers)
vim.g.loaded_gzip = 1
vim.g.loaded_tar = 1
vim.g.loaded_tarPlugin = 1
vim.g.loaded_vimball = 1
vim.g.loaded_vimballPlugin = 1
vim.g.loaded_zip = 1
vim.g.loaded_zipPlugin = 1
-- Do not use builtin matchit.vim and matchparen.vim because we're using vim-matchup
vim.g.loaded_matchit = 1
vim.g.loaded_matchparen = 1
-- Disable sql omni completion
vim.g.loaded_sql_completion = 1
-- Set this to 0 in order to disable native EditorConfig support
vim.g.editorconfig = 1
-- Disable remote plugins
-- NOTE:
-- > Disabling rplugin.vim will make `wilder.nvim` complain about missing rplugins during :checkhealth,
-- > but since it's config doesn't require python rtp (strictly), it's fine to ignore that for now.
-- vim.g.loaded_remote_plugins = 1
end
local leader_map = function()
vim.g.mapleader = " "
-- NOTE:
-- > Uncomment the following if you're using a <leader> other than <Space>, and you wish
-- > to disable advancing one character by pressing <Space> in normal/visual mode.
-- vim.api.nvim_set_keymap("n", " ", "", { noremap = true })
-- vim.api.nvim_set_keymap("x", " ", "", { noremap = true })
end
local gui_config = function()
vim.api.nvim_set_option_value("guifont", settings.gui_config.font_name .. ":h" .. settings.gui_config.font_size, {})
end
local neovide_config = function()
for name, config in pairs(settings.neovide_config) do
vim.g["neovide_" .. name] = config
end
end
local clipboard_config = function()
if global.is_mac then
vim.g.clipboard = {
name = "macOS-clipboard",
copy = { ["+"] = "pbcopy", ["*"] = "pbcopy" },
paste = { ["+"] = "pbpaste", ["*"] = "pbpaste" },
cache_enabled = 0,
}
elseif global.is_wsl then
vim.g.clipboard = {
name = "win32yank-wsl",
copy = {
["+"] = "win32yank.exe -i --crlf",
["*"] = "win32yank.exe -i --crlf",
},
paste = {
["+"] = "win32yank.exe -o --lf",
["*"] = "win32yank.exe -o --lf",
},
cache_enabled = 0,
}
end
end
local shell_config = function()
if global.is_windows then
if not (vim.fn.executable("pwsh") == 1 or vim.fn.executable("powershell") == 1) then
vim.notify(
[[
Failed to setup terminal config
PowerShell is either not installed, missing from PATH, or not executable;
cmd.exe will be used instead for `:!` (shell bang) and toggleterm.nvim.
You're recommended to install PowerShell for better experience.]],
vim.log.levels.WARN,
{ title = "[core] Runtime Warning" }
)
return
end
local basecmd = "-NoLogo -MTA -ExecutionPolicy RemoteSigned"
local ctrlcmd = "-Command [console]::InputEncoding = [console]::OutputEncoding = [System.Text.Encoding]::UTF8"
local set_opts = vim.api.nvim_set_option_value
set_opts("shell", vim.fn.executable("pwsh") == 1 and "pwsh" or "powershell", {})
set_opts("shellcmdflag", string.format("%s %s;", basecmd, ctrlcmd), {})
set_opts("shellredir", "-RedirectStandardOutput %s -NoNewWindow -Wait", {})
set_opts("shellpipe", "2>&1 | Out-File -Encoding UTF8 %s; exit $LastExitCode", {})
set_opts("shellquote", "", {})
set_opts("shellxquote", "", {})
end
end
local load_core = function()
createdir()
disable_distribution_plugins()
leader_map()
gui_config()
neovide_config()
clipboard_config()
shell_config()
require("core.options")
require("core.mapping")
require("core.event")
require("core.pack")
require("keymap")
vim.api.nvim_set_option_value("background", settings.background, {})
vim.cmd.colorscheme(settings.colorscheme)
end
load_core()
+65
View File
@@ -0,0 +1,65 @@
local bind = require("keymap.bind")
local map_cr = bind.map_cr
local map_cu = bind.map_cu
local map_cmd = bind.map_cmd
local map_callback = bind.map_callback
local core_map = {
-- Suckless
["n|<S-Tab>"] = map_cr("normal za"):with_noremap():with_silent():with_desc("edit: Toggle code fold"),
["n|<C-s>"] = map_cu("write"):with_noremap():with_silent():with_desc("edit: Save file"),
["n|Y"] = map_cmd("y$"):with_desc("edit: Yank text to EOL"),
["n|D"] = map_cmd("d$"):with_desc("edit: Delete text to EOL"),
["n|n"] = map_cmd("nzzzv"):with_noremap():with_desc("edit: Next search result"),
["n|N"] = map_cmd("Nzzzv"):with_noremap():with_desc("edit: Prev search result"),
["n|J"] = map_cmd("mzJ`z"):with_noremap():with_desc("edit: Join next line"),
["n|<Esc>"] = map_callback(function()
_flash_esc_or_noh()
end)
:with_noremap()
:with_silent()
:with_desc("edit: Clear search highlight"),
["n|<C-h>"] = map_cmd("<C-w>h"):with_noremap():with_desc("window: Focus left"),
["n|<C-l>"] = map_cmd("<C-w>l"):with_noremap():with_desc("window: Focus right"),
["n|<C-j>"] = map_cmd("<C-w>j"):with_noremap():with_desc("window: Focus down"),
["n|<C-k>"] = map_cmd("<C-w>k"):with_noremap():with_desc("window: Focus up"),
["t|<C-w>h"] = map_cmd("<Cmd>wincmd h<CR>"):with_silent():with_noremap():with_desc("window: Focus left"),
["t|<C-w>l"] = map_cmd("<Cmd>wincmd l<CR>"):with_silent():with_noremap():with_desc("window: Focus right"),
["t|<C-w>j"] = map_cmd("<Cmd>wincmd j<CR>"):with_silent():with_noremap():with_desc("window: Focus down"),
["t|<C-w>k"] = map_cmd("<Cmd>wincmd k<CR>"):with_silent():with_noremap():with_desc("window: Focus up"),
["n|<A-h>"] = map_cr("vertical resize -3"):with_silent():with_desc("window: Resize -3 vertically"),
["n|<A-l>"] = map_cr("vertical resize +3"):with_silent():with_desc("window: Resize +3 vertically"),
["n|<A-j>"] = map_cr("resize -3"):with_silent():with_desc("window: Resize -3 horizontally"),
["n|<A-k>"] = map_cr("resize +3"):with_silent():with_desc("window: Resize +3 horizontally"),
["n|<C-q>"] = map_cr("wq"):with_desc("edit: Save file and quit"),
["n|<A-S-q>"] = map_cr("q!"):with_desc("edit: Force quit"),
["n|<leader>o"] = map_cr("setlocal spell! spelllang=en_us"):with_desc("edit: Toggle spell check"),
["n|<leader>bn"] = map_cu("enew"):with_noremap():with_silent():with_desc("buffer: New"),
["n|tn"] = map_cr("tabnew"):with_noremap():with_silent():with_desc("tab: Create a new tab"),
["n|tk"] = map_cr("tabnext"):with_noremap():with_silent():with_desc("tab: Move to next tab"),
["n|tj"] = map_cr("tabprevious"):with_noremap():with_silent():with_desc("tab: Move to previous tab"),
["n|to"] = map_cr("tabonly"):with_noremap():with_silent():with_desc("tab: Only keep current tab"),
-- Insert mode
["i|<C-u>"] = map_cmd("<C-G>u<C-U>"):with_noremap():with_desc("edit: Delete previous block"),
["i|<C-b>"] = map_cmd("<Left>"):with_noremap():with_desc("edit: Move cursor to left"),
["i|<C-a>"] = map_cmd("<ESC>^i"):with_noremap():with_desc("edit: Move cursor to line start"),
["i|<C-s>"] = map_cmd("<Esc>:w<CR>"):with_desc("edit: Save file"),
["i|<C-q>"] = map_cmd("<Esc>:wq<CR>"):with_desc("edit: Save file and quit"),
-- Command mode
["c|<C-b>"] = map_cmd("<Left>"):with_noremap():with_desc("edit: Left"),
["c|<C-f>"] = map_cmd("<Right>"):with_noremap():with_desc("edit: Right"),
["c|<C-a>"] = map_cmd("<Home>"):with_noremap():with_desc("edit: Home"),
["c|<C-e>"] = map_cmd("<End>"):with_noremap():with_desc("edit: End"),
["c|<C-d>"] = map_cmd("<Del>"):with_noremap():with_desc("edit: Delete"),
["c|<C-h>"] = map_cmd("<BS>"):with_noremap():with_desc("edit: Backspace"),
["c|<C-t>"] = map_cmd([[<C-R>=expand("%:p:h") . "/" <CR>]])
:with_noremap()
:with_desc("edit: Complete path of current file"),
-- Visual mode
["v|J"] = map_cmd(":m '>+1<CR>gv=gv"):with_desc("edit: Move this line down"),
["v|K"] = map_cmd(":m '<-2<CR>gv=gv"):with_desc("edit: Move this line up"),
["v|<"] = map_cmd("<gv"):with_desc("edit: Decrease indent"),
["v|>"] = map_cmd(">gv"):with_desc("edit: Increase indent"),
}
bind.nvim_load_mapping(core_map)
+128
View File
@@ -0,0 +1,128 @@
local global = require("core.global")
local function load_options()
local global_local = {
-- backupdir = global.cache_dir .. "/backup/",
-- directory = global.cache_dir .. "/swap/",
-- spellfile = global.cache_dir .. "/spell/en.uft-8.add",
-- viewdir = global.cache_dir .. "/view/",
autoindent = true,
autoread = true,
autowrite = true,
backspace = "indent,eol,start",
backup = false,
backupskip = "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*,*/shm/*,/private/var/*,.vault.vim",
breakat = [[\ \ ;:,!?]],
breakindentopt = "shift:2,min:20",
clipboard = "unnamedplus",
cmdheight = 1, -- 0, 1, 2
cmdwinheight = 5,
complete = ".,w,b,k,kspell",
completeopt = "menuone,noselect,popup",
concealcursor = "niv",
conceallevel = 0,
cursorcolumn = true,
cursorline = true,
diffopt = "filler,iwhite,internal,linematch:60,algorithm:patience",
display = "lastline",
encoding = "utf-8",
equalalways = false,
errorbells = true,
fileformats = "unix,mac,dos",
foldenable = true,
foldlevelstart = 99,
formatoptions = "1jcroql",
grepformat = "%f:%l:%c:%m",
grepprg = "rg --hidden --vimgrep --smart-case --",
helpheight = 12,
hidden = true,
history = 2000,
ignorecase = true,
inccommand = "nosplit",
incsearch = true,
infercase = true,
jumpoptions = "stack",
laststatus = 3,
linebreak = true,
list = true,
listchars = "tab:»·,nbsp:+,trail:·,extends:→,precedes:←",
magic = true,
mousescroll = "ver:3,hor:6",
number = true,
previewheight = 12,
-- Do NOT adjust the following option (pumblend) if you're using transparent background
pumblend = 0,
pumheight = 15,
redrawtime = 1500,
relativenumber = true,
ruler = true,
scrolloff = 2,
sessionoptions = "buffers,curdir,folds,help,tabpages,winpos,winsize",
shada = "!,'500,<50,@100,s10,h",
shiftround = true,
shiftwidth = 4,
shortmess = "aoOTIcF",
showbreak = "",
showcmd = false,
showmode = false,
showtabline = 2,
sidescrolloff = 5,
signcolumn = "yes",
smartcase = true,
smarttab = true,
smoothscroll = true,
splitbelow = true,
splitkeep = "screen",
splitright = true,
startofline = false,
swapfile = false,
switchbuf = "usetab,uselast",
synmaxcol = 2500,
tabstop = 4,
termguicolors = true,
timeout = true,
timeoutlen = 300,
ttimeout = true,
ttimeoutlen = 0,
undodir = global.cache_dir .. "/undo/",
undofile = true,
-- Please do NOT set `updatetime` to above 500, otherwise most plugins may not function correctly
updatetime = 200,
viewoptions = "folds,cursor,curdir,slash,unix",
virtualedit = "block",
visualbell = true,
whichwrap = "h,l,<,>,[,],~",
wildignore = ".git,.hg,.svn,*.pyc,*.o,*.out,*.jpg,*.jpeg,*.png,*.gif,*.zip,**/tmp/**,*.DS_Store,**/node_modules/**,**/bower_modules/**",
wildignorecase = true,
-- Do NOT adjust the following option (winblend) if you're using transparent background
winblend = 0,
winminwidth = 10,
winwidth = 30,
wrap = false,
wrapscan = true,
writebackup = false,
}
local function isempty(s)
return s == nil or s == ""
end
local function use_if_defined(val, fallback)
return val ~= nil and val or fallback
end
-- custom python provider
local conda_prefix = os.getenv("CONDA_PREFIX")
if not isempty(conda_prefix) then
vim.g.python_host_prog = use_if_defined(vim.g.python_host_prog, conda_prefix .. "/bin/python")
vim.g.python3_host_prog = use_if_defined(vim.g.python3_host_prog, conda_prefix .. "/bin/python")
else
vim.g.python_host_prog = use_if_defined(vim.g.python_host_prog, "python")
vim.g.python3_host_prog = use_if_defined(vim.g.python3_host_prog, "python3")
end
for name, value in pairs(require("modules.utils").extend_config(global_local, "user.options")) do
vim.api.nvim_set_option_value(name, value, {})
end
end
load_options()
+138
View File
@@ -0,0 +1,138 @@
local fn, api = vim.fn, vim.api
local global = require("core.global")
local is_mac = global.is_mac
local vim_path = global.vim_path
local data_dir = global.data_dir
local lazy_path = data_dir .. "lazy/lazy.nvim"
local modules_dir = vim_path .. "/lua/modules"
local user_config_dir = vim_path .. "/lua/user"
local settings = require("core.settings")
local use_ssh = settings.use_ssh
local icons = {
kind = require("modules.utils.icons").get("kind"),
documents = require("modules.utils.icons").get("documents"),
ui = require("modules.utils.icons").get("ui"),
ui_sep = require("modules.utils.icons").get("ui", true),
misc = require("modules.utils.icons").get("misc"),
}
local Lazy = {}
function Lazy:load_plugins()
self.modules = {}
local append_nativertp = function()
package.path = package.path
.. string.format(
";%s;%s;%s",
modules_dir .. "/configs/?.lua",
modules_dir .. "/configs/?/init.lua",
user_config_dir .. "/?.lua"
)
end
local get_plugins_list = function()
local list = {}
local plugins_list = vim.split(fn.glob(modules_dir .. "/plugins/*.lua"), "\n")
local user_plugins_list = vim.split(fn.glob(user_config_dir .. "/plugins/*.lua"), "\n", { trimempty = true })
vim.list_extend(plugins_list, user_plugins_list)
for _, f in ipairs(plugins_list) do
-- aggregate the plugins from `/plugins/*.lua` and `/user/plugins/*.lua` to a plugin list of a certain field for later `require` action.
-- current fields contains: completion, editor, lang, tool, ui
list[#list + 1] = f:find(modules_dir) and f:sub(#modules_dir - 6, -1) or f:sub(#user_config_dir - 3, -1)
end
return list
end
append_nativertp()
for _, m in ipairs(get_plugins_list()) do
-- require modules returned from `get_plugins_list()` function.
local modules = require(m:sub(0, #m - 4))
if type(modules) == "table" then
for name, conf in pairs(modules) do
self.modules[#self.modules + 1] = vim.tbl_extend("force", { name }, conf)
end
end
end
for _, name in ipairs(settings.disabled_plugins) do
self.modules[#self.modules + 1] = { name, enabled = false }
end
end
function Lazy:load_lazy()
if not vim.uv.fs_stat(lazy_path) then
local lazy_repo = use_ssh and "git@github.com:folke/lazy.nvim.git " or "https://github.com/folke/lazy.nvim.git "
api.nvim_command("!git clone --filter=blob:none --branch=stable " .. lazy_repo .. lazy_path)
end
self:load_plugins()
local clone_prefix = use_ssh and "git@github.com:%s.git" or "https://github.com/%s.git"
local lazy_settings = {
root = data_dir .. "lazy", -- directory where plugins will be installed
git = {
-- log = { "-10" }, -- show the last 10 commits
timeout = 300,
url_format = clone_prefix,
},
install = {
-- install missing plugins on startup. This doesn't increase startup time.
missing = true,
colorscheme = { settings.colorscheme },
},
ui = {
-- a number <1 is a percentage., >1 is a fixed size
size = { width = 0.88, height = 0.8 },
wrap = true, -- wrap the lines in the ui
-- The border to use for the UI window. Accepts same border values as |nvim_open_win()|.
border = "rounded",
icons = {
cmd = icons.misc.Code,
config = icons.ui.Gear,
event = icons.kind.Event,
ft = icons.documents.Files,
init = icons.misc.ManUp,
import = icons.documents.Import,
keys = icons.ui.Keyboard,
loaded = icons.ui.Check,
not_loaded = icons.misc.Ghost,
plugin = icons.ui.Package,
runtime = icons.misc.Vim,
source = icons.kind.StaticMethod,
start = icons.ui.Play,
list = {
icons.ui_sep.BigCircle,
icons.ui_sep.BigUnfilledCircle,
icons.ui_sep.Square,
icons.ui_sep.ChevronRight,
},
},
},
performance = {
cache = {
enabled = true,
path = vim.fn.stdpath("cache") .. "/lazy/cache",
-- Once one of the following events triggers, caching will be disabled.
-- To cache all modules, set this to `{}`, but that is not recommended.
disable_events = { "UIEnter", "BufReadPre" },
ttl = 3600 * 24 * 2, -- keep unused modules for up to 2 days
},
reset_packpath = true, -- reset the package path to improve startup time
rtp = {
reset = true, -- reset the runtime path to $VIMRUNTIME and the config directory
---@type string[]
paths = {}, -- add any custom paths here that you want to include in the rtp
},
},
}
if is_mac then
lazy_settings.concurrency = 20
end
vim.opt.rtp:prepend(lazy_path)
require("lazy").setup(self.modules, lazy_settings)
end
Lazy:load_lazy()
+225
View File
@@ -0,0 +1,225 @@
local settings = {}
-- Set it to false if you want to use https to update plugins and treesitter parsers.
---@type boolean
settings["use_ssh"] = true
-- Set it to false if you don't use copilot
---@type boolean
settings["use_copilot"] = true
-- Set it to false if there is no need to format on save.
---@type boolean
settings["format_on_save"] = true
-- Set format timeout here (in ms).
---@type number
settings["format_timeout"] = 1000
-- Set it to false if the notification after formatting is annoying.
---@type boolean
settings["format_notify"] = true
-- Set it to true if you prefer formatting ONLY the *changed lines* as defined by your version control system.
-- NOTE: This entry will only be respected if:
-- > The buffer to be formatted is under version control (Git or Mercurial);
-- > Any of the server attached to that buffer supports |DocumentRangeFormattingProvider| server capability.
-- Otherwise Neovim would fall back to format the whole buffer, and a warning will be issued.
---@type boolean
settings["format_modifications_only"] = false
-- Set the format disabled directories here, files under these dirs won't be formatted on save.
--- NOTE: Directories may contain regular expressions (grammar: vim). |regexp|
--- NOTE: Directories are automatically normalized. |vim.fs.normalize()|
---@type string[]
settings["format_disabled_dirs"] = {
-- Example
"~/format_disabled_dir",
}
-- Filetypes in this list will skip lsp formatting if rhs is true.
---@type table<string, boolean>
settings["formatter_block_list"] = {
lua = false, -- example
}
-- Servers in this list will skip setting formatting capabilities if rhs is true.
---@type table<string, boolean>
settings["server_formatting_block_list"] = {
lua_ls = true,
tsserver = true,
clangd = true,
}
-- Set it to false if you want to turn off LSP Inlay Hints
---@type boolean
settings["lsp_inlayhints"] = true
-- Set it to false if diagnostics virtual text is annoying.
-- If disabled, you may browse lsp diagnostics using trouble.nvim (press `gt` to toggle it).
---@type boolean
settings["diagnostics_virtual_text"] = true
-- Set it to one of the values below if you want to change the visible severity level of lsp diagnostics.
-- Priority: `Error` > `Warning` > `Information` > `Hint`.
-- > e.g. if you set this option to `Warning`, only lsp warnings and errors will be shown.
-- NOTE: This entry only works when `diagnostics_virtual_text` is true.
---@type "ERROR"|"WARN"|"INFO"|"HINT"
settings["diagnostics_level"] = "HINT"
-- Set the plugins to disable here.
-- Example: "Some-User/A-Repo"
---@type string[]
settings["disabled_plugins"] = {}
-- Set it to false if you don't use nvim to open big files.
---@type boolean
settings["load_big_files_faster"] = true
-- Change the colors of the global palette here.
-- Settings will complete their replacement at initialization.
-- Parameters will be automatically completed as you type.
-- Example: { sky = "#04A5E5" }
---@type palette[]
settings["palette_overwrite"] = {}
-- Set the colorscheme to use here.
-- Available values are: `catppuccin`, `catppuccin-latte`, `catppucin-mocha`, `catppuccin-frappe`, `catppuccin-macchiato`.
---@type string
settings["colorscheme"] = "catppuccin"
-- Set it to true if your terminal has transparent background.
---@type boolean
settings["transparent_background"] = false
-- Set background color to use here.
-- Useful if you would like to use a colorscheme that has a light and dark variant like `edge`.
-- Valid values are: `dark`, `light`.
---@type "dark"|"light"
settings["background"] = "dark"
-- Set the command for handling external URLs here. The executable must be available on your $PATH.
-- This entry is IGNORED on Windows and macOS, which have their default handlers builtin.
---@type string
settings["external_browser"] = "chrome-cli open"
-- Set the language servers that will be installed during bootstrap here.
-- check the below link for all the supported LSPs:
-- https://github.com/neovim/nvim-lspconfig/tree/master/lua/lspconfig/server_configurations
---@type string[]
settings["lsp_deps"] = {
"bashls",
"clangd",
"html",
"jsonls",
"lua_ls",
"pylsp",
"gopls",
}
-- Set the general-purpose servers that will be installed during bootstrap here.
-- Check the below link for all supported sources.
-- in `code_actions`, `completion`, `diagnostics`, `formatting`, `hover` folders:
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins
---@type string[]
settings["null_ls_deps"] = {
"clang_format",
"gofumpt",
"goimports",
"prettier",
"shfmt",
"stylua",
"vint",
}
-- Set the Debug Adapter Protocol (DAP) clients that will be installed and configured during bootstrap here.
-- Check the below link for all supported DAPs:
-- https://github.com/jay-babu/mason-nvim-dap.nvim/blob/main/lua/mason-nvim-dap/mappings/source.lua
---@type string[]
settings["dap_deps"] = {
"codelldb", -- C-Family
"delve", -- Go
"python", -- Python (debugpy)
}
-- Set the Treesitter parsers that will be installed during bootstrap here.
-- Check the below link for all supported languages:
-- https://github.com/nvim-treesitter/nvim-treesitter#supported-languages
---@type string[]
settings["treesitter_deps"] = {
"bash",
"c",
"cpp",
"css",
"go",
"gomod",
"html",
"javascript",
"json",
"jsonc",
"latex",
"lua",
"make",
"markdown",
"markdown_inline",
"python",
"rust",
"typescript",
"vimdoc",
"vue",
"yaml",
}
-- Set the options for neovim's gui clients like `neovide` and `neovim-qt` here.
-- NOTE: Currently, only the following options related to the GUI are supported. Other entries will be IGNORED.
---@type { font_name: string, font_size: number }
settings["gui_config"] = {
font_name = "JetBrainsMono Nerd Font",
font_size = 12,
}
-- Set the options specific to `neovide` here.
-- NOTE: You should remove the `neovide_` prefix (with trailing underscore) from all your entries below.
-- Check the below link for all supported entries:
-- https://neovide.dev/configuration.html
---@type table<string, boolean|number|string>
settings["neovide_config"] = {
no_idle = true,
refresh_rate = 120,
cursor_vfx_mode = "railgun",
cursor_vfx_opacity = 200.0,
cursor_antialiasing = true,
cursor_trail_length = 0.05,
cursor_animation_length = 0.03,
cursor_vfx_particle_speed = 20.0,
cursor_vfx_particle_density = 5.0,
cursor_vfx_particle_lifetime = 1.2,
}
-- Set the dashboard startup image here
-- You can generate the ascii image using: https://github.com/TheZoraiz/ascii-image-converter
-- More info: https://github.com/ayamir/nvimdots/wiki/Issues#change-dashboard-startup-image
---@type string[]
settings["dashboard_image"] = {
[[⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⣠⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣡⣾⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣟⠻⣿⣿⣿⣿⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⣿⣿⡿⢫⣷⣿⣿⣿⣿⣿⣿⣿⣾⣯⣿⡿⢧⡚⢷⣌⣽⣿⣿⣿⣿⣿⣶⡌⣿⣿⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⣿⣿⠇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮⣇⣘⠿⢹⣿⣿⣿⣿⣿⣻⢿⣿⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⣿⣿⠀⢸⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣻⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⣿⡇⠀⣬⠏⣿⡇⢻⣿⣿⣿⣿⣿⣿⣿⣷⣼⣿⣿⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⢻⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⣿⠀⠈⠁⠀⣿⡇⠘⡟⣿⣿⣿⣿⣿⣿⣿⣿⡏⠿⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣇⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⡏⠀⠀⠐⠀⢻⣇⠀⠀⠹⣿⣿⣿⣿⣿⣿⣩⡶⠼⠟⠻⠞⣿⡈⠻⣟⢻⣿⣿⣿⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⢿⠀⡆⠀⠘⢿⢻⡿⣿⣧⣷⢣⣶⡃⢀⣾⡆⡋⣧⠙⢿⣿⣿⣟⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⡥⠂⡐⠀⠁⠑⣾⣿⣿⣾⣿⣿⣿⡿⣷⣷⣿⣧⣾⣿⣿⣿⣿⣿⣿⣿]],
[[⣿⣿⡿⣿⣍⡴⠆⠀⠀⠀⠀⠀⠀⠀⠀⣼⣄⣀⣷⡄⣙⢿⣿⣿⣿⣿⣯⣶⣿⣿⢟⣾⣿⣿⢡⣿⣿⣿⣿⣿]],
[[⣿⡏⣾⣿⣿⣿⣷⣦⠀⠀⠀⢀⡀⠀⠀⠠⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣡⣾⣿⣿⢏⣾⣿⣿⣿⣿⣿]],
[[⣿⣿⣿⣿⣿⣿⣿⣿⡴⠀⠀⠀⠀⠀⠠⠀⠰⣿⣿⣿⣷⣿⠿⠿⣿⣿⣭⡶⣫⠔⢻⢿⢇⣾⣿⣿⣿⣿⣿⣿]],
[[⣿⣿⣿⡿⢫⣽⠟⣋⠀⠀⠀⠀⣶⣦⠀⠀⠀⠈⠻⣿⣿⣿⣾⣿⣿⣿⣿⡿⣣⣿⣿⢸⣾⣿⣿⣿⣿⣿⣿⣿]],
[[⡿⠛⣹⣶⣶⣶⣾⣿⣷⣦⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠉⠛⠻⢿⣿⡿⠫⠾⠿⠋⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]],
[[⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣀⡆⣠⢀⣴⣏⡀⠀⠀⠀⠉⠀⠀⢀⣠⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]],
[[⠿⠛⠛⠛⠛⠛⠛⠻⢿⣿⣿⣿⣿⣯⣟⠷⢷⣿⡿⠋⠀⠀⠀⠀⣵⡀⢠⡿⠋⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]],
[[⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⢿⣿⣿⠂⠀⠀⠀⠀⠀⢀⣽⣿⣿⣿⣿⣿⣿⣿⣍⠛⠿⣿⣿⣿⣿⣿⣿]],
}
return require("modules.utils").extend_config(settings, "user.settings")
+169
View File
@@ -0,0 +1,169 @@
---@class map_rhs
---@field cmd string
---@field options table
---@field options.noremap boolean
---@field options.silent boolean
---@field options.expr boolean
---@field options.nowait boolean
---@field options.callback function
---@field options.desc string
---@field buffer boolean|number
local rhs_options = {}
function rhs_options:new()
local instance = {
cmd = "",
options = {
noremap = false,
silent = false,
expr = false,
nowait = false,
callback = nil,
desc = "",
},
buffer = false,
}
setmetatable(instance, self)
self.__index = self
return instance
end
---@param cmd_string string
---@return map_rhs
function rhs_options:map_cmd(cmd_string)
self.cmd = cmd_string
return self
end
---@param cmd_string string
---@return map_rhs
function rhs_options:map_cr(cmd_string)
self.cmd = (":%s<CR>"):format(cmd_string)
return self
end
---@param cmd_string string
---@return map_rhs
function rhs_options:map_args(cmd_string)
self.cmd = (":%s<Space>"):format(cmd_string)
return self
end
---@param cmd_string string
---@return map_rhs
function rhs_options:map_cu(cmd_string)
-- <C-u> to eliminate the automatically inserted range in visual mode
self.cmd = (":<C-u>%s<CR>"):format(cmd_string)
return self
end
---@param callback fun():nil
--- Takes a callback that will be called when the key is pressed
---@return map_rhs
function rhs_options:map_callback(callback)
self.cmd = ""
self.options.callback = callback
return self
end
---@return map_rhs
function rhs_options:with_silent()
self.options.silent = true
return self
end
---@param description_string string
---@return map_rhs
function rhs_options:with_desc(description_string)
self.options.desc = description_string
return self
end
---@return map_rhs
function rhs_options:with_noremap()
self.options.noremap = true
return self
end
---@return map_rhs
function rhs_options:with_expr()
self.options.expr = true
return self
end
---@return map_rhs
function rhs_options:with_nowait()
self.options.nowait = true
return self
end
---@param num number
---@return map_rhs
function rhs_options:with_buffer(num)
self.buffer = num
return self
end
local bind = {}
---@param cmd_string string
---@return map_rhs
function bind.map_cr(cmd_string)
local ro = rhs_options:new()
return ro:map_cr(cmd_string)
end
---@param cmd_string string
---@return map_rhs
function bind.map_cmd(cmd_string)
local ro = rhs_options:new()
return ro:map_cmd(cmd_string)
end
---@param cmd_string string
---@return map_rhs
function bind.map_cu(cmd_string)
local ro = rhs_options:new()
return ro:map_cu(cmd_string)
end
---@param cmd_string string
---@return map_rhs
function bind.map_args(cmd_string)
local ro = rhs_options:new()
return ro:map_args(cmd_string)
end
---@param callback fun():nil
---@return map_rhs
function bind.map_callback(callback)
local ro = rhs_options:new()
return ro:map_callback(callback)
end
---@param cmd_string string
---@return string escaped_string
function bind.escape_termcode(cmd_string)
return vim.api.nvim_replace_termcodes(cmd_string, true, true, true)
end
---@param mapping table<string, map_rhs>
function bind.nvim_load_mapping(mapping)
for key, value in pairs(mapping) do
local modes, keymap = key:match("([^|]*)|?(.*)")
if type(value) == "table" then
for _, mode in ipairs(vim.split(modes, "")) do
local rhs = value.cmd
local options = value.options
local buf = value.buffer
if buf and type(buf) == "number" then
vim.api.nvim_buf_set_keymap(buf, mode, keymap, rhs, options)
else
vim.api.nvim_set_keymap(mode, keymap, rhs, options)
end
end
end
end
end
return bind
+74
View File
@@ -0,0 +1,74 @@
local bind = require("keymap.bind")
local map_cr = bind.map_cr
local map_cmd = bind.map_cmd
local map_callback = bind.map_callback
local plug_map = {
["n|<A-f>"] = map_cmd("<Cmd>FormatToggle<CR>"):with_noremap():with_desc("formatter: Toggle format on save"),
}
bind.nvim_load_mapping(plug_map)
local mapping = {}
function mapping.lsp(buf)
local map = {
-- LSP-related keymaps, ONLY effective in buffers with LSP(s) attached
["n|<leader>li"] = map_cr("LspInfo"):with_silent():with_buffer(buf):with_desc("lsp: Info"),
["n|<leader>lr"] = map_cr("LspRestart"):with_silent():with_buffer(buf):with_nowait():with_desc("lsp: Restart"),
["n|go"] = map_cr("AerialToggle!"):with_silent():with_buffer(buf):with_desc("lsp: Toggle outline"),
["n|gto"] = map_callback(function()
require("telescope").extensions.aerial.aerial()
end)
:with_silent()
:with_buffer(buf)
:with_desc("lsp: Toggle outline in Telescope"),
["n|g["] = map_cr("Lspsaga diagnostic_jump_prev")
:with_silent()
:with_buffer(buf)
:with_desc("lsp: Prev diagnostic"),
["n|g]"] = map_cr("Lspsaga diagnostic_jump_next")
:with_silent()
:with_buffer(buf)
:with_desc("lsp: Next diagnostic"),
["n|<leader>lx"] = map_cr("Lspsaga show_line_diagnostics ++unfocus")
:with_silent()
:with_buffer(buf)
:with_desc("lsp: Line diagnostic"),
["n|gs"] = map_callback(function()
vim.lsp.buf.signature_help()
end):with_desc("lsp: Signature help"),
["n|gr"] = map_cr("Lspsaga rename"):with_silent():with_buffer(buf):with_desc("lsp: Rename in file range"),
["n|gR"] = map_cr("Lspsaga rename ++project")
:with_silent()
:with_buffer(buf)
:with_desc("lsp: Rename in project range"),
["n|K"] = map_cr("Lspsaga hover_doc"):with_silent():with_buffer(buf):with_desc("lsp: Show doc"),
["nv|ga"] = map_cr("Lspsaga code_action")
:with_silent()
:with_buffer(buf)
:with_desc("lsp: Code action for cursor"),
["n|gd"] = map_cr("Glance definitions"):with_silent():with_buffer(buf):with_desc("lsp: Preview definition"),
["n|gD"] = map_cr("Lspsaga goto_definition"):with_silent():with_buffer(buf):with_desc("lsp: Goto definition"),
["n|gh"] = map_cr("Glance references"):with_silent():with_buffer(buf):with_desc("lsp: Show reference"),
["n|gm"] = map_cr("Glance implementations")
:with_silent()
:with_buffer(buf)
:with_desc("lsp: Show implementation"),
["n|gci"] = map_cr("Lspsaga incoming_calls")
:with_silent()
:with_buffer(buf)
:with_desc("lsp: Show incoming calls"),
["n|gco"] = map_cr("Lspsaga outgoing_calls")
:with_silent()
:with_buffer(buf)
:with_desc("lsp: Show outgoing calls"),
}
bind.nvim_load_mapping(map)
local ok, user_mappings = pcall(require, "user.keymap.completion")
if ok and type(user_mappings.lsp) == "function" then
require("modules.utils.keymap").replace(user_mappings.lsp(buf))
end
end
return mapping
+109
View File
@@ -0,0 +1,109 @@
local bind = require("keymap.bind")
local map_cr = bind.map_cr
local map_cu = bind.map_cu
local map_cmd = bind.map_cmd
local map_callback = bind.map_callback
local et = bind.escape_termcode
local plug_map = {
-- Plugin persisted.nvim
["n|<leader>ss"] = map_cu("SessionSave"):with_noremap():with_silent():with_desc("session: Save"),
["n|<leader>sl"] = map_cu("SessionLoad"):with_noremap():with_silent():with_desc("session: Load current"),
["n|<leader>sd"] = map_cu("SessionDelete"):with_noremap():with_silent():with_desc("session: Delete"),
-- Plugin: nvim-bufdel
["n|<A-q>"] = map_cr("BufDel"):with_noremap():with_silent():with_desc("buffer: Close current"),
-- Plugin: comment.nvim
["n|gcc"] = map_callback(function()
return vim.v.count == 0 and et("<Plug>(comment_toggle_linewise_current)")
or et("<Plug>(comment_toggle_linewise_count)")
end)
:with_silent()
:with_noremap()
:with_expr()
:with_desc("edit: Toggle comment for line"),
["n|gbc"] = map_callback(function()
return vim.v.count == 0 and et("<Plug>(comment_toggle_blockwise_current)")
or et("<Plug>(comment_toggle_blockwise_count)")
end)
:with_silent()
:with_noremap()
:with_expr()
:with_desc("edit: Toggle comment for block"),
["n|gc"] = map_cmd("<Plug>(comment_toggle_linewise)")
:with_silent()
:with_noremap()
:with_desc("edit: Toggle comment for line with operator"),
["n|gb"] = map_cmd("<Plug>(comment_toggle_blockwise)")
:with_silent()
:with_noremap()
:with_desc("edit: Toggle comment for block with operator"),
["x|gc"] = map_cmd("<Plug>(comment_toggle_linewise_visual)")
:with_silent()
:with_noremap()
:with_desc("edit: Toggle comment for line with selection"),
["x|gb"] = map_cmd("<Plug>(comment_toggle_blockwise_visual)")
:with_silent()
:with_noremap()
:with_desc("edit: Toggle comment for block with selection"),
-- Plugin: diffview.nvim
["n|<leader>gd"] = map_cr("DiffviewOpen"):with_silent():with_noremap():with_desc("git: Show diff"),
["n|<leader>gD"] = map_cr("DiffviewClose"):with_silent():with_noremap():with_desc("git: Close diff"),
-- Plugin: hop.nvim
["nv|<leader>w"] = map_cmd("<Cmd>HopWordMW<CR>"):with_noremap():with_desc("jump: Goto word"),
["nv|<leader>j"] = map_cmd("<Cmd>HopLineMW<CR>"):with_noremap():with_desc("jump: Goto line"),
["nv|<leader>k"] = map_cmd("<Cmd>HopLineMW<CR>"):with_noremap():with_desc("jump: Goto line"),
["nv|<leader>c"] = map_cmd("<Cmd>HopChar1MW<CR>"):with_noremap():with_desc("jump: Goto one char"),
["nv|<leader>C"] = map_cmd("<Cmd>HopChar2MW<CR>"):with_noremap():with_desc("jump: Goto two chars"),
-- Plugin: smart-splits.nvim
["n|<A-h>"] = map_cu("SmartResizeLeft"):with_silent():with_noremap():with_desc("window: Resize -3 horizontally"),
["n|<A-j>"] = map_cu("SmartResizeDown"):with_silent():with_noremap():with_desc("window: Resize -3 vertically"),
["n|<A-k>"] = map_cu("SmartResizeUp"):with_silent():with_noremap():with_desc("window: Resize +3 vertically"),
["n|<A-l>"] = map_cu("SmartResizeRight"):with_silent():with_noremap():with_desc("window: Resize +3 horizontally"),
["n|<C-h>"] = map_cu("SmartCursorMoveLeft"):with_silent():with_noremap():with_desc("window: Focus left"),
["n|<C-j>"] = map_cu("SmartCursorMoveDown"):with_silent():with_noremap():with_desc("window: Focus down"),
["n|<C-k>"] = map_cu("SmartCursorMoveUp"):with_silent():with_noremap():with_desc("window: Focus up"),
["n|<C-l>"] = map_cu("SmartCursorMoveRight"):with_silent():with_noremap():with_desc("window: Focus right"),
["n|<leader>Wh"] = map_cu("SmartSwapLeft"):with_silent():with_noremap():with_desc("window: Move window leftward"),
["n|<leader>Wj"] = map_cu("SmartSwapDown"):with_silent():with_noremap():with_desc("window: Move window downward"),
["n|<leader>Wk"] = map_cu("SmartSwapUp"):with_silent():with_noremap():with_desc("window: Move window upward"),
["n|<leader>Wl"] = map_cu("SmartSwapRight"):with_silent():with_noremap():with_desc("window: Move window rightward"),
-- Plugin: nvim-spectre
["n|<leader>Ss"] = map_callback(function()
require("spectre").toggle()
end)
:with_silent()
:with_noremap()
:with_desc("editn: Toggle search & replace panel"),
["n|<leader>Sp"] = map_callback(function()
require("spectre").open_visual({ select_word = true })
end)
:with_silent()
:with_noremap()
:with_desc("editn: search&replace current word (project)"),
["v|<leader>Sp"] = map_callback(function()
require("spectre").open_visual()
end)
:with_silent()
:with_noremap()
:with_desc("edit: search & replace current word (project)"),
["n|<leader>Sf"] = map_callback(function()
require("spectre").open_file_search({ select_word = true })
end)
:with_silent()
:with_noremap()
:with_desc("editn: search & replace current word (file)"),
-- Plugin: nvim-treehopper
["o|m"] = map_cu("lua require('tsht').nodes()"):with_silent():with_desc("jump: Operate across syntax tree"),
-- Plugin suda.vim
["n|<A-s>"] = map_cu("SudaWrite"):with_silent():with_noremap():with_desc("editn: Save file using sudo"),
}
bind.nvim_load_mapping(plug_map)
+67
View File
@@ -0,0 +1,67 @@
_G._command_panel = function()
require("telescope.builtin").keymaps({
lhs_filter = function(lhs)
return not string.find(lhs, "Þ")
end,
layout_config = {
width = 0.6,
height = 0.6,
prompt_position = "top",
},
})
end
_G._telescope_collections = function(picker_type)
local actions = require("telescope.actions")
local action_state = require("telescope.actions.state")
local conf = require("telescope.config").values
local finder = require("telescope.finders")
local pickers = require("telescope.pickers")
picker_type = picker_type or {}
local collections = vim.tbl_keys(require("search.tabs").collections)
pickers
.new(picker_type, {
prompt_title = "Telescope Collections",
finder = finder.new_table({ results = collections }),
sorter = conf.generic_sorter(picker_type),
attach_mappings = function(bufnr)
actions.select_default:replace(function()
actions.close(bufnr)
local selection = action_state.get_selected_entry()
require("search").open({ collection = selection[1] })
end)
return true
end,
})
:find()
end
_G._flash_esc_or_noh = function()
local flash_active, state = pcall(function()
return require("flash.plugins.char").state
end)
if flash_active and state then
state:hide()
else
pcall(vim.cmd.noh)
end
end
local _lazygit = nil
_G._toggle_lazygit = function()
if vim.fn.executable("lazygit") == 1 then
if not _lazygit then
_lazygit = require("toggleterm.terminal").Terminal:new({
cmd = "lazygit",
direction = "float",
close_on_exit = true,
hidden = true,
})
end
_lazygit:toggle()
else
vim.notify("Command [lazygit] not found!", vim.log.levels.ERROR, { title = "toggleterm.nvim" })
end
end
+35
View File
@@ -0,0 +1,35 @@
require("keymap.helpers")
local bind = require("keymap.bind")
local map_cr = bind.map_cr
-- local map_cu = bind.map_cu
-- local map_cmd = bind.map_cmd
-- local map_callback = bind.map_callback
local plug_map = {
-- Package manager: lazy.nvim
["n|<leader>ph"] = map_cr("Lazy"):with_silent():with_noremap():with_nowait():with_desc("package: Show"),
["n|<leader>ps"] = map_cr("Lazy sync"):with_silent():with_noremap():with_nowait():with_desc("package: Sync"),
["n|<leader>pu"] = map_cr("Lazy update"):with_silent():with_noremap():with_nowait():with_desc("package: Update"),
["n|<leader>pi"] = map_cr("Lazy install"):with_silent():with_noremap():with_nowait():with_desc("package: Install"),
["n|<leader>pl"] = map_cr("Lazy log"):with_silent():with_noremap():with_nowait():with_desc("package: Log"),
["n|<leader>pc"] = map_cr("Lazy check"):with_silent():with_noremap():with_nowait():with_desc("package: Check"),
["n|<leader>pd"] = map_cr("Lazy debug"):with_silent():with_noremap():with_nowait():with_desc("package: Debug"),
["n|<leader>pp"] = map_cr("Lazy profile"):with_silent():with_noremap():with_nowait():with_desc("package: Profile"),
["n|<leader>pr"] = map_cr("Lazy restore"):with_silent():with_noremap():with_nowait():with_desc("package: Restore"),
["n|<leader>px"] = map_cr("Lazy clean"):with_silent():with_noremap():with_nowait():with_desc("package: Clean"),
}
bind.nvim_load_mapping(plug_map)
-- Plugin keymaps
require("keymap.completion")
require("keymap.editor")
require("keymap.lang")
require("keymap.tool")
require("keymap.ui")
-- User keymaps
local ok, mappings = pcall(require, "user.keymap.init")
if ok then
require("modules.utils.keymap").replace(mappings)
end
+12
View File
@@ -0,0 +1,12 @@
local bind = require("keymap.bind")
local map_cr = bind.map_cr
-- local map_cu = bind.map_cu
-- local map_cmd = bind.map_cmd
-- local map_callback = bind.map_callback
local plug_map = {
-- Plugin MarkdownPreview
["n|<F12>"] = map_cr("MarkdownPreviewToggle"):with_noremap():with_silent():with_desc("tool: Preview markdown"),
}
bind.nvim_load_mapping(plug_map)
+191
View File
@@ -0,0 +1,191 @@
local bind = require("keymap.bind")
local map_cr = bind.map_cr
local map_cu = bind.map_cu
local map_cmd = bind.map_cmd
local map_callback = bind.map_callback
require("keymap.helpers")
local plug_map = {
-- Plugin: vim-fugitive
["n|gps"] = map_cr("G push"):with_noremap():with_silent():with_desc("git: Push"),
["n|gpl"] = map_cr("G pull"):with_noremap():with_silent():with_desc("git: Pull"),
["n|<leader>gG"] = map_cu("Git"):with_noremap():with_silent():with_desc("git: Open git-fugitive"),
-- Plugin: nvim-tree
["n|<C-n>"] = map_cr("NvimTreeToggle"):with_noremap():with_silent():with_desc("filetree: Toggle"),
["n|<leader>nf"] = map_cr("NvimTreeFindFile"):with_noremap():with_silent():with_desc("filetree: Find file"),
["n|<leader>nr"] = map_cr("NvimTreeRefresh"):with_noremap():with_silent():with_desc("filetree: Refresh"),
-- Plugin: sniprun
["v|<leader>r"] = map_cr("SnipRun"):with_noremap():with_silent():with_desc("tool: Run code by range"),
["n|<leader>r"] = map_cu([[%SnipRun]]):with_noremap():with_silent():with_desc("tool: Run code by file"),
-- Plugin: toggleterm
["t|<Esc><Esc>"] = map_cmd([[<C-\><C-n>]]):with_noremap():with_silent(), -- switch to normal mode in terminal.
["n|<C-\\>"] = map_cr("ToggleTerm direction=horizontal")
:with_noremap()
:with_silent()
:with_desc("terminal: Toggle horizontal"),
["i|<C-\\>"] = map_cmd("<Esc><Cmd>ToggleTerm direction=horizontal<CR>")
:with_noremap()
:with_silent()
:with_desc("terminal: Toggle horizontal"),
["t|<C-\\>"] = map_cmd("<Cmd>ToggleTerm<CR>"):with_noremap():with_silent():with_desc("terminal: Toggle horizontal"),
["n|<A-\\>"] = map_cr("ToggleTerm direction=vertical")
:with_noremap()
:with_silent()
:with_desc("terminal: Toggle vertical"),
["i|<A-\\>"] = map_cmd("<Esc><Cmd>ToggleTerm direction=vertical<CR>")
:with_noremap()
:with_silent()
:with_desc("terminal: Toggle vertical"),
["t|<A-\\>"] = map_cmd("<Cmd>ToggleTerm<CR>"):with_noremap():with_silent():with_desc("terminal: Toggle vertical"),
["n|<F5>"] = map_cr("ToggleTerm direction=vertical")
:with_noremap()
:with_silent()
:with_desc("terminal: Toggle vertical"),
["i|<F5>"] = map_cmd("<Esc><Cmd>ToggleTerm direction=vertical<CR>")
:with_noremap()
:with_silent()
:with_desc("terminal: Toggle vertical"),
["t|<F5>"] = map_cmd("<Cmd>ToggleTerm<CR>"):with_noremap():with_silent():with_desc("terminal: Toggle vertical"),
["n|<A-d>"] = map_cr("ToggleTerm direction=float"):with_noremap():with_silent():with_desc("terminal: Toggle float"),
["i|<A-d>"] = map_cmd("<Esc><Cmd>ToggleTerm direction=float<CR>")
:with_noremap()
:with_silent()
:with_desc("terminal: Toggle float"),
["t|<A-d>"] = map_cmd("<Cmd>ToggleTerm<CR>"):with_noremap():with_silent():with_desc("terminal: Toggle float"),
["n|<leader>gg"] = map_callback(function()
_toggle_lazygit()
end)
:with_noremap()
:with_silent()
:with_desc("git: Toggle lazygit"),
-- Plugin: trouble
["n|gt"] = map_cr("Trouble diagnostics toggle"):with_noremap():with_silent():with_desc("lsp: Toggle trouble list"),
["n|<leader>lw"] = map_cr("Trouble diagnostics toggle")
:with_noremap()
:with_silent()
:with_desc("lsp: Show workspace diagnostics"),
["n|<leader>lp"] = map_cr("Trouble project_diagnostics toggle")
:with_noremap()
:with_silent()
:with_desc("lsp: Show project diagnostics"),
["n|<leader>ld"] = map_cr("Trouble diagnostics toggle filter.buf=0")
:with_noremap()
:with_silent()
:with_desc("lsp: Show document diagnostics"),
-- Plugin: telescope
["n|<C-p>"] = map_callback(function()
_command_panel()
end)
:with_noremap()
:with_silent()
:with_desc("tool: Toggle command panel"),
["n|<leader>fc"] = map_callback(function()
_telescope_collections(require("telescope.themes").get_dropdown())
end)
:with_noremap()
:with_silent()
:with_desc("tool: Open Telescope collections"),
["n|<leader>ff"] = map_callback(function()
require("search").open({ collection = "file" })
end)
:with_noremap()
:with_silent()
:with_desc("tool: Find files"),
["n|<leader>fp"] = map_callback(function()
require("search").open({ collection = "pattern" })
end)
:with_noremap()
:with_silent()
:with_desc("tool: Find patterns"),
["v|<leader>fs"] = map_cu("Telescope grep_string")
:with_noremap()
:with_silent()
:with_desc("tool: Find word under cursor"),
["n|<leader>fg"] = map_callback(function()
require("search").open({ collection = "git" })
end)
:with_noremap()
:with_silent()
:with_desc("tool: Locate Git objects"),
["n|<leader>fd"] = map_callback(function()
require("search").open({ collection = "dossier" })
end)
:with_noremap()
:with_silent()
:with_desc("tool: Retrieve dossiers"),
["n|<leader>fm"] = map_callback(function()
require("search").open({ collection = "misc" })
end)
:with_noremap()
:with_silent()
:with_desc("tool: Miscellaneous"),
-- Plugin: dap
["n|<F6>"] = map_callback(function()
require("dap").continue()
end)
:with_noremap()
:with_silent()
:with_desc("debug: Run/Continue"),
["n|<F7>"] = map_callback(function()
require("dap").terminate()
end)
:with_noremap()
:with_silent()
:with_desc("debug: Stop"),
["n|<F8>"] = map_callback(function()
require("dap").toggle_breakpoint()
end)
:with_noremap()
:with_silent()
:with_desc("debug: Toggle breakpoint"),
["n|<F9>"] = map_callback(function()
require("dap").step_into()
end)
:with_noremap()
:with_silent()
:with_desc("debug: Step into"),
["n|<F10>"] = map_callback(function()
require("dap").step_out()
end)
:with_noremap()
:with_silent()
:with_desc("debug: Step out"),
["n|<F11>"] = map_callback(function()
require("dap").step_over()
end)
:with_noremap()
:with_silent()
:with_desc("debug: Step over"),
["n|<leader>db"] = map_callback(function()
require("dap").set_breakpoint(vim.fn.input("Breakpoint condition: "))
end)
:with_noremap()
:with_silent()
:with_desc("debug: Set breakpoint with condition"),
["n|<leader>dc"] = map_callback(function()
require("dap").run_to_cursor()
end)
:with_noremap()
:with_silent()
:with_desc("debug: Run to cursor"),
["n|<leader>dl"] = map_callback(function()
require("dap").run_last()
end)
:with_noremap()
:with_silent()
:with_desc("debug: Run last"),
["n|<leader>do"] = map_callback(function()
require("dap").repl.open()
end)
:with_noremap()
:with_silent()
:with_desc("debug: Open REPL"),
}
bind.nvim_load_mapping(plug_map)
+105
View File
@@ -0,0 +1,105 @@
local bind = require("keymap.bind")
local map_cr = bind.map_cr
-- local map_cu = bind.map_cu
-- local map_cmd = bind.map_cmd
-- local map_callback = bind.map_callback
local plug_map = {
-- Plugin: bufferline.nvim
["n|<A-i>"] = map_cr("BufferLineCycleNext"):with_noremap():with_silent():with_desc("buffer: Switch to next"),
["n|<A-o>"] = map_cr("BufferLineCyclePrev"):with_noremap():with_silent():with_desc("buffer: Switch to prev"),
["n|<A-S-i>"] = map_cr("BufferLineMoveNext"):with_noremap():with_silent():with_desc("buffer: Move current to next"),
["n|<A-S-o>"] = map_cr("BufferLineMovePrev"):with_noremap():with_silent():with_desc("buffer: Move current to prev"),
["n|<leader>be"] = map_cr("BufferLineSortByExtension"):with_noremap():with_desc("buffer: Sort by extension"),
["n|<leader>bd"] = map_cr("BufferLineSortByDirectory"):with_noremap():with_desc("buffer: Sort by directory"),
["n|<A-1>"] = map_cr("BufferLineGoToBuffer 1"):with_noremap():with_silent():with_desc("buffer: Goto buffer 1"),
["n|<A-2>"] = map_cr("BufferLineGoToBuffer 2"):with_noremap():with_silent():with_desc("buffer: Goto buffer 2"),
["n|<A-3>"] = map_cr("BufferLineGoToBuffer 3"):with_noremap():with_silent():with_desc("buffer: Goto buffer 3"),
["n|<A-4>"] = map_cr("BufferLineGoToBuffer 4"):with_noremap():with_silent():with_desc("buffer: Goto buffer 4"),
["n|<A-5>"] = map_cr("BufferLineGoToBuffer 5"):with_noremap():with_silent():with_desc("buffer: Goto buffer 5"),
["n|<A-6>"] = map_cr("BufferLineGoToBuffer 6"):with_noremap():with_silent():with_desc("buffer: Goto buffer 6"),
["n|<A-7>"] = map_cr("BufferLineGoToBuffer 7"):with_noremap():with_silent():with_desc("buffer: Goto buffer 7"),
["n|<A-8>"] = map_cr("BufferLineGoToBuffer 8"):with_noremap():with_silent():with_desc("buffer: Goto buffer 8"),
["n|<A-9>"] = map_cr("BufferLineGoToBuffer 9"):with_noremap():with_silent():with_desc("buffer: Goto buffer 9"),
}
bind.nvim_load_mapping(plug_map)
local mapping = {}
function mapping.gitsigns(buf)
local actions = require("gitsigns.actions")
local map = {
["n|]g"] = bind.map_callback(function()
if vim.wo.diff then
return "]g"
end
vim.schedule(function()
actions.next_hunk()
end)
return "<Ignore>"
end)
:with_buffer(buf)
:with_expr()
:with_desc("git: Goto next hunk"),
["n|[g"] = bind.map_callback(function()
if vim.wo.diff then
return "[g"
end
vim.schedule(function()
actions.prev_hunk()
end)
return "<Ignore>"
end)
:with_buffer(buf)
:with_expr()
:with_desc("git: Goto prev hunk"),
["n|<leader>gs"] = bind.map_callback(function()
actions.stage_hunk()
end)
:with_buffer(buf)
:with_desc("git: Stage hunk"),
["v|<leader>gs"] = bind.map_callback(function()
actions.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
end)
:with_buffer(buf)
:with_desc("git: Stage hunk"),
["n|<leader>gu"] = bind.map_callback(function()
actions.undo_stage_hunk()
end)
:with_buffer(buf)
:with_desc("git: Undo stage hunk"),
["n|<leader>gr"] = bind.map_callback(function()
actions.reset_hunk()
end)
:with_buffer(buf)
:with_desc("git: Reset hunk"),
["v|<leader>gr"] = bind.map_callback(function()
actions.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
end)
:with_buffer(buf)
:with_desc("git: Reset hunk"),
["n|<leader>gR"] = bind.map_callback(function()
actions.reset_buffer()
end)
:with_buffer(buf)
:with_desc("git: Reset buffer"),
["n|<leader>gp"] = bind.map_callback(function()
actions.preview_hunk()
end)
:with_buffer(buf)
:with_desc("git: Preview hunk"),
["n|<leader>gb"] = bind.map_callback(function()
actions.blame_line({ full = true })
end)
:with_buffer(buf)
:with_desc("git: Blame line"),
-- Text objects
["ox|ih"] = bind.map_callback(function()
actions.text_object()
end):with_buffer(buf),
}
bind.nvim_load_mapping(map)
end
return mapping
@@ -0,0 +1,80 @@
return function()
require("modules.utils").load_plugin("aerial", {
lazy_load = false,
close_on_select = true,
highlight_on_jump = false,
disable_max_lines = 8500,
disable_max_size = 1000000,
ignore = { filetypes = { "NvimTree", "terminal", "nofile" } },
-- Use symbol tree for folding. Set to true or false to enable/disable
-- Set to "auto" to manage folds if your previous foldmethod was 'manual'
-- This can be a filetype map (see :help aerial-filetype-map)
manage_folds = "auto",
layout = {
-- Determines the default direction to open the aerial window. The 'prefer'
-- options will open the window in the other direction *if* there is a
-- different buffer in the way of the preferred direction
-- Enum: prefer_right, prefer_left, right, left, float
default_direction = "prefer_right",
},
-- Keymaps in aerial window. Can be any value that `vim.keymap.set` accepts OR a table of keymap
-- options with a `callback` (e.g. { callback = function() ... end, desc = "", nowait = true })
-- Additionally, if it is a string that matches "actions.<name>",
-- it will use the mapping at require("aerial.actions").<name>
-- Set to `false` to remove a keymap
keymaps = {
["?"] = "actions.show_help",
["g?"] = "actions.show_help",
["<CR>"] = "actions.jump",
["<2-LeftMouse>"] = "actions.jump",
["<C-v>"] = "actions.jump_vsplit",
["<C-s>"] = "actions.jump_split",
["<C-d>"] = "actions.down_and_scroll",
["<C-u>"] = "actions.up_and_scroll",
["{"] = "actions.prev",
["}"] = "actions.next",
["[["] = "actions.prev_up",
["]]"] = "actions.next_up",
["q"] = "actions.close",
["o"] = "actions.tree_toggle",
["O"] = "actions.tree_toggle_recursive",
["zr"] = "actions.tree_increase_fold_level",
["zR"] = "actions.tree_open_all",
["zm"] = "actions.tree_decrease_fold_level",
["zM"] = "actions.tree_close_all",
["zx"] = "actions.tree_sync_folds",
["zX"] = "actions.tree_sync_folds",
},
-- A list of all symbols to display. Set to false to display all symbols.
-- This can be a filetype map (see :help aerial-filetype-map)
-- To see all available values, see :help SymbolKind
filter_kind = {
"Array",
"Boolean",
"Class",
"Constant",
"Constructor",
"Enum",
"EnumMember",
"Event",
"Field",
"File",
"Function",
"Interface",
"Key",
"Method",
"Module",
"Namespace",
"Null",
-- "Number",
"Object",
"Operator",
"Package",
-- "Property",
-- "String",
"Struct",
-- "TypeParameter",
-- "Variable",
},
})
end
+199
View File
@@ -0,0 +1,199 @@
return function()
local icons = {
kind = require("modules.utils.icons").get("kind"),
type = require("modules.utils.icons").get("type"),
cmp = require("modules.utils.icons").get("cmp"),
}
local border = function(hl)
return {
{ "", hl },
{ "", hl },
{ "", hl },
{ "", hl },
{ "", hl },
{ "", hl },
{ "", hl },
{ "", hl },
}
end
local compare = require("cmp.config.compare")
compare.lsp_scores = function(entry1, entry2)
local diff
if entry1.completion_item.score and entry2.completion_item.score then
diff = (entry2.completion_item.score * entry2.score) - (entry1.completion_item.score * entry1.score)
else
diff = entry2.score - entry1.score
end
return (diff < 0)
end
local use_copilot = require("core.settings").use_copilot
local comparators = use_copilot == true
and {
require("copilot_cmp.comparators").prioritize,
require("copilot_cmp.comparators").score,
-- require("cmp_tabnine.compare"),
compare.offset, -- Items closer to cursor will have lower priority
compare.exact,
-- compare.scopes,
compare.lsp_scores,
compare.sort_text,
compare.score,
compare.recently_used,
-- compare.locality, -- Items closer to cursor will have higher priority, conflicts with `offset`
require("cmp-under-comparator").under,
compare.kind,
compare.length,
compare.order,
}
or {
-- require("cmp_tabnine.compare"),
compare.offset, -- Items closer to cursor will have lower priority
compare.exact,
-- compare.scopes,
compare.lsp_scores,
compare.sort_text,
compare.score,
compare.recently_used,
-- compare.locality, -- Items closer to cursor will have higher priority, conflicts with `offset`
require("cmp-under-comparator").under,
compare.kind,
compare.length,
compare.order,
}
local cmp = require("cmp")
require("modules.utils").load_plugin("cmp", {
preselect = cmp.PreselectMode.None,
window = {
completion = {
border = border("PmenuBorder"),
winhighlight = "Normal:Pmenu,CursorLine:PmenuSel,Search:PmenuSel",
scrollbar = false,
},
documentation = {
border = border("CmpDocBorder"),
winhighlight = "Normal:CmpDoc",
},
},
sorting = {
priority_weight = 2,
comparators = comparators,
},
formatting = {
fields = { "abbr", "kind", "menu" },
format = function(entry, vim_item)
local lspkind_icons = vim.tbl_deep_extend("force", icons.kind, icons.type, icons.cmp)
-- load lspkind icons
vim_item.kind =
string.format(" %s %s", lspkind_icons[vim_item.kind] or icons.cmp.undefined, vim_item.kind or "")
vim_item.menu = setmetatable({
cmp_tabnine = "[TN]",
copilot = "[CPLT]",
buffer = "[BUF]",
orgmode = "[ORG]",
nvim_lsp = "[LSP]",
nvim_lua = "[LUA]",
path = "[PATH]",
tmux = "[TMUX]",
treesitter = "[TS]",
latex_symbols = "[LTEX]",
luasnip = "[SNIP]",
spell = "[SPELL]",
}, {
__index = function()
return "[BTN]" -- builtin/unknown source names
end,
})[entry.source.name]
local label = vim_item.abbr
local truncated_label = vim.fn.strcharpart(label, 0, 80)
if truncated_label ~= label then
vim_item.abbr = truncated_label .. "..."
end
return vim_item
end,
},
matching = {
disallow_partial_fuzzy_matching = false,
},
performance = {
async_budget = 1,
max_view_entries = 120,
},
-- You can set mappings if you want
mapping = cmp.mapping.preset.insert({
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }),
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-w>"] = cmp.mapping.abort(),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
elseif require("luasnip").expand_or_locally_jumpable() then
require("luasnip").expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item({ behavior = cmp.SelectBehavior.Select })
elseif require("luasnip").jumpable(-1) then
require("luasnip").jump(-1)
else
fallback()
end
end, { "i", "s" }),
["<CR>"] = cmp.mapping({
i = function(fallback)
if cmp.visible() and cmp.get_active_entry() then
cmp.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = false })
else
fallback()
end
end,
s = cmp.mapping.confirm({ select = true }),
c = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true }),
}),
}),
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
end,
},
-- You should specify your *installed* sources.
sources = {
{ name = "nvim_lsp", max_item_count = 350 },
{ name = "nvim_lua" },
{ name = "luasnip" },
{ name = "path" },
{ name = "treesitter" },
{ name = "spell" },
{ name = "tmux" },
{ name = "orgmode" },
{
name = "buffer",
option = {
get_bufnrs = function()
return vim.api.nvim_buf_line_count(0) < 7500 and vim.api.nvim_list_bufs() or {}
end,
},
},
{ name = "latex_symbols" },
{ name = "copilot" },
-- { name = "codeium" },
-- { name = "cmp_tabnine" },
},
experimental = {
ghost_text = {
hl_group = "Whitespace",
},
},
})
end
@@ -0,0 +1,3 @@
return function()
require("modules.utils").load_plugin("codeium", {})
end
@@ -0,0 +1,3 @@
return function()
require("modules.utils").load_plugin("copilot_cmp", {})
end
@@ -0,0 +1,28 @@
return function()
vim.defer_fn(function()
require("modules.utils").load_plugin("copilot", {
cmp = {
enabled = true,
method = "getCompletionsCycling",
},
panel = {
-- if true, it can interfere with completions in copilot-cmp
enabled = false,
},
suggestion = {
-- if true, it can interfere with completions in copilot-cmp
enabled = false,
},
filetypes = {
["bigfile"] = false,
["dap-repl"] = false,
["fugitive"] = false,
["fugitiveblame"] = false,
["git"] = false,
["gitcommit"] = false,
["log"] = false,
["toggleterm"] = false,
},
})
end, 100)
end
@@ -0,0 +1 @@
return { "-style={BasedOnStyle: LLVM, IndentWidth: 4}" }
@@ -0,0 +1,198 @@
local M = {}
local settings = require("core.settings")
local disabled_workspaces = settings.format_disabled_dirs
local format_on_save = settings.format_on_save
local format_notify = settings.format_notify
local format_modifications_only = settings.format_modifications_only
local server_formatting_block_list = settings.server_formatting_block_list
local format_timeout = settings.format_timeout
vim.api.nvim_create_user_command("FormatToggle", function()
M.toggle_format_on_save()
end, {})
local block_list = settings.formatter_block_list
vim.api.nvim_create_user_command("FormatterToggleFt", function(opts)
if block_list[opts.args] == nil then
vim.notify(
string.format("[LSP] Formatter for [%s] has been recorded in list and disabled.", opts.args),
vim.log.levels.WARN,
{ title = "LSP Formatter Warning" }
)
block_list[opts.args] = true
else
block_list[opts.args] = not block_list[opts.args]
vim.notify(
string.format(
"[LSP] Formatter for [%s] has been %s.",
opts.args,
not block_list[opts.args] and "enabled" or "disabled"
),
not block_list[opts.args] and vim.log.levels.INFO or vim.log.levels.WARN,
{ title = string.format("LSP Formatter %s", not block_list[opts.args] and "Info" or "Warning") }
)
end
end, { nargs = 1, complete = "filetype" })
function M.enable_format_on_save(is_configured)
local opts = { pattern = "*", timeout = format_timeout }
vim.api.nvim_create_augroup("format_on_save", { clear = true })
vim.api.nvim_create_autocmd("BufWritePre", {
group = "format_on_save",
pattern = opts.pattern,
callback = function()
require("completion.formatting").format({
timeout_ms = opts.timeout,
filter = M.format_filter,
})
end,
})
if not is_configured then
vim.notify(
"Successfully enabled format-on-save",
vim.log.levels.INFO,
{ title = "Settings modification success" }
)
end
end
function M.disable_format_on_save(is_configured)
pcall(vim.api.nvim_del_augroup_by_name, "format_on_save")
if not is_configured then
vim.notify(
"Successfully disabled format-on-save",
vim.log.levels.INFO,
{ title = "Settings modification success" }
)
end
end
function M.configure_format_on_save()
if format_on_save then
M.enable_format_on_save(true)
else
M.disable_format_on_save(true)
end
end
function M.toggle_format_on_save()
local status = pcall(vim.api.nvim_get_autocmds, {
group = "format_on_save",
event = "BufWritePre",
})
if not status then
M.enable_format_on_save(false)
else
M.disable_format_on_save(false)
end
end
function M.format_filter(clients)
return vim.tbl_filter(function(client)
local status_ok, formatting_supported = pcall(function()
return client.supports_method("textDocument/formatting")
end)
if status_ok and formatting_supported and client.name == "null-ls" then
return "null-ls"
elseif not server_formatting_block_list[client.name] and status_ok and formatting_supported then
return client.name
end
end, clients)
end
function M.format(opts)
local filedir = vim.fn.expand("%:p:h")
for i = 1, #disabled_workspaces do
if vim.regex(vim.fs.normalize(disabled_workspaces[i])):match_str(filedir) ~= nil then
vim.notify(
string.format(
"[LSP] Formatting for all files under [%s] has been disabled.",
vim.fs.normalize(disabled_workspaces[i])
),
vim.log.levels.WARN,
{ title = "LSP Formatter Warning" }
)
return
end
end
local bufnr = opts.bufnr or vim.api.nvim_get_current_buf()
local clients = vim.lsp.get_clients({ buffer = bufnr })
if opts.filter then
clients = opts.filter(clients)
elseif opts.id then
clients = vim.tbl_filter(function(client)
return client.id == opts.id
end, clients)
elseif opts.name then
clients = vim.tbl_filter(function(client)
return client.name == opts.name
end, clients)
end
clients = vim.tbl_filter(function(client)
return client.supports_method("textDocument/formatting")
end, clients)
if #clients == 0 then
vim.notify(
"[LSP] Format request failed, no matching language servers.",
vim.log.levels.WARN,
{ title = "Formatting Failed" }
)
end
local timeout_ms = opts.timeout_ms
for _, client in pairs(clients) do
if block_list[vim.bo.filetype] == true then
vim.notify(
string.format(
"[LSP][%s] Formatting for [%s] has been disabled. This file is not being processed.",
client.name,
vim.bo.filetype
),
vim.log.levels.WARN,
{ title = "LSP Formatter Warning" }
)
return
end
if
format_modifications_only
and require("lsp-format-modifications").format_modifications(client, bufnr).success
then
if format_notify then
vim.notify(
string.format("[LSP] Format changed lines successfully with %s!", client.name),
vim.log.levels.INFO,
{ title = "LSP Range Format Success" }
)
end
return
end
-- Fall back to format the whole buffer (even if partial formatting failed)
local params = vim.lsp.util.make_formatting_params(opts.formatting_options)
local result, err = client.request_sync("textDocument/formatting", params, timeout_ms, bufnr)
if result and result.result then
vim.lsp.util.apply_text_edits(result.result, bufnr, client.offset_encoding)
if format_notify then
vim.notify(
string.format("[LSP] Format successfully with %s!", client.name),
vim.log.levels.INFO,
{ title = "LSP Format Success" }
)
end
elseif err then
vim.notify(
string.format("[LSP][%s] %s", client.name, err),
vim.log.levels.ERROR,
{ title = "LSP Format Error" }
)
end
end
end
return M
@@ -0,0 +1,83 @@
return function()
local icons = { ui = require("modules.utils.icons").get("ui", true) }
local actions = require("glance").actions
require("modules.utils").load_plugin("glance", {
height = 20,
zindex = 50,
preview_win_opts = {
cursorline = true,
number = true,
wrap = true,
},
border = {
enable = require("core.settings").transparent_background,
top_char = "",
bottom_char = "",
},
list = {
position = "right",
width = 0.33, -- 33% width relative to the active window, min 0.1, max 0.5
},
folds = {
folded = true, -- Automatically fold list on startup
fold_closed = icons.ui.ArrowClosed,
fold_open = icons.ui.ArrowOpen,
},
indent_lines = { enable = true },
winbar = { enable = true },
mappings = {
list = {
["k"] = actions.previous,
["j"] = actions.next,
["<Up>"] = actions.previous,
["<Down>"] = actions.next,
["<S-Tab>"] = actions.previous_location, -- Bring the cursor to the previous location skipping groups in the list
["<Tab>"] = actions.next_location, -- Bring the cursor to the next location skipping groups in the list
["<C-u>"] = actions.preview_scroll_win(8),
["<C-d>"] = actions.preview_scroll_win(-8),
["<CR>"] = actions.jump,
["v"] = actions.jump_vsplit,
["s"] = actions.jump_split,
["t"] = actions.jump_tab,
["c"] = actions.close_fold,
["o"] = actions.open_fold,
["[]"] = actions.enter_win("preview"), -- Focus preview window
["q"] = actions.close,
["Q"] = actions.close,
["<Esc>"] = actions.close,
["gq"] = actions.quickfix,
},
preview = {
["Q"] = actions.close,
["<C-c>q"] = actions.close,
["<C-c>o"] = actions.jump,
["<C-c>v"] = actions.jump_vsplit,
["<C-c>s"] = actions.jump_split,
["<C-c>t"] = actions.jump_tab,
["<C-p>"] = actions.previous_location,
["<C-n>"] = actions.next_location,
["[]"] = actions.enter_win("list"), -- Focus list window
},
},
hooks = {
before_open = function(results, open, _, method)
if #results == 0 then
vim.notify(
"This method is not supported by any of the servers registered for the current buffer",
vim.log.levels.WARN,
{ title = "Glance" }
)
elseif #results == 1 and method == "references" then
vim.notify(
"The identifier under cursor is the only one found",
vim.log.levels.INFO,
{ title = "Glance" }
)
else
open(results)
end
end,
},
})
end
@@ -0,0 +1,15 @@
return function()
require("modules.utils").load_plugin("lsp_signature", {
bind = true,
-- TODO: Remove the following line when nvim-cmp#1613 gets resolved
check_completion_visible = false,
floating_window = true,
floating_window_above_cur_line = true,
hi_parameter = "Search",
hint_enable = true,
transparency = nil, -- disabled by default, allow floating win transparent value 1~100
wrap = true,
zindex = 45, -- avoid overlap with nvim.cmp
handler_opts = { border = "single" },
})
end
@@ -0,0 +1,23 @@
return function()
local nvim_lsp = require("lspconfig")
require("completion.neoconf").setup()
require("completion.mason").setup()
require("completion.mason-lspconfig").setup()
local opts = {
capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()),
}
-- Setup lsps that are not supported by `mason.nvim` but supported by `nvim-lspconfig` here.
if vim.fn.executable("dart") == 1 then
local ok, _opts = pcall(require, "user.configs.lsp-servers.dartls")
if not ok then
_opts = require("completion.servers.dartls")
end
local final_opts = vim.tbl_deep_extend("keep", _opts, opts)
nvim_lsp.dartls.setup(final_opts)
end
pcall(require, "user.configs.lsp")
pcall(vim.cmd.LspStart) -- Start LSPs
end
@@ -0,0 +1,183 @@
return function()
require("modules.utils").gen_lspkind_hl()
local icons = {
cmp = require("modules.utils.icons").get("cmp", true),
diagnostics = require("modules.utils.icons").get("diagnostics", true),
kind = require("modules.utils.icons").get("kind", true),
type = require("modules.utils.icons").get("type", true),
ui = require("modules.utils.icons").get("ui", true),
}
local function set_sidebar_icons()
-- Set icons for sidebar
vim.diagnostic.config({
signs = {
text = {
[vim.diagnostic.severity.ERROR] = icons.diagnostics.Error_alt,
[vim.diagnostic.severity.WARN] = icons.diagnostics.Warning_alt,
[vim.diagnostic.severity.INFO] = icons.diagnostics.Information_alt,
[vim.diagnostic.severity.HINT] = icons.diagnostics.Hint_alt,
},
},
})
end
set_sidebar_icons()
require("modules.utils").load_plugin("lspsaga", {
-- Breadcrumbs: https://nvimdev.github.io/lspsaga/breadcrumbs/
symbol_in_winbar = {
enable = false,
separator = " " .. icons.ui.Separator,
hide_keyword = false,
show_file = false,
folder_level = 1,
color_mode = true,
delay = 100,
},
-- Callhierarchy: https://nvimdev.github.io/lspsaga/callhierarchy/
callhierarchy = {
layout = "float",
keys = {
edit = "e",
vsplit = "v",
split = "s",
tabe = "t",
quit = "q",
shuttle = "[]",
toggle_or_req = "u",
close = "<Esc>",
},
},
-- Code Action: https://nvimdev.github.io/lspsaga/codeaction/
code_action = {
num_shortcut = true,
only_in_cursor = false,
show_server_name = true,
extend_gitsigns = false,
keys = {
quit = "q",
exec = "<CR>",
},
},
-- Diagnostics: https://nvimdev.github.io/lspsaga/diagnostic/
diagnostic = {
show_code_action = true,
jump_num_shortcut = true,
max_width = 0.5,
max_height = 0.6,
text_hl_follow = true,
border_follow = true,
extend_relatedInformation = true,
show_layout = "float",
show_normal_height = 10,
max_show_width = 0.9,
max_show_height = 0.6,
diagnostic_only_current = false,
keys = {
exec_action = "r",
quit = "q",
toggle_or_jump = "<CR>",
quit_in_show = { "q", "<Esc>" },
},
},
-- Hover: https://nvimdev.github.io/lspsaga/hover/
hover = {
max_width = 0.45,
max_height = 0.7,
open_link = "gl",
open_cmd = "silent !" .. require("core.settings").external_browser,
},
-- Impl: https://nvimdev.github.io/lspsaga/implement/
implement = {
enable = true,
sign = true,
virtual_text = false,
priority = 100,
},
-- LightBulb: https://nvimdev.github.io/lspsaga/lightbulb/
lightbulb = {
enable = false,
sign = true,
virtual_text = false,
debounce = 10,
sign_priority = 20,
},
-- Rename: https://nvimdev.github.io/lspsaga/rename/
rename = {
in_select = false,
auto_save = false,
project_max_width = 0.5,
project_max_height = 0.5,
keys = {
quit = "<C-c>",
exec = "<CR>",
select = "x",
},
},
-- Beacon: https://nvimdev.github.io/lspsaga/misc/#beacon
beacon = {
enable = true,
frequency = 12,
},
-- Generic UI Options: https://nvimdev.github.io/lspsaga/misc/#generic-ui-options
ui = {
border = "single", -- Can be single, double, rounded, solid, shadow.
devicon = true,
title = true,
expand = icons.ui.ArrowClosed,
collapse = icons.ui.ArrowOpen,
code_action = icons.ui.CodeAction,
actionfix = icons.ui.Spell,
lines = { "", "", "", "", "" },
imp_sign = icons.kind.Implementation,
kind = {
-- Kind
Class = { icons.kind.Class, "LspKindClass" },
Constant = { icons.kind.Constant, "LspKindConstant" },
Constructor = { icons.kind.Constructor, "LspKindConstructor" },
Enum = { icons.kind.Enum, "LspKindEnum" },
EnumMember = { icons.kind.EnumMember, "LspKindEnumMember" },
Event = { icons.kind.Event, "LspKindEvent" },
Field = { icons.kind.Field, "LspKindField" },
File = { icons.kind.File, "LspKindFile" },
Function = { icons.kind.Function, "LspKindFunction" },
Interface = { icons.kind.Interface, "LspKindInterface" },
Key = { icons.kind.Keyword, "LspKindKey" },
Method = { icons.kind.Method, "LspKindMethod" },
Module = { icons.kind.Module, "LspKindModule" },
Namespace = { icons.kind.Namespace, "LspKindNamespace" },
Operator = { icons.kind.Operator, "LspKindOperator" },
Package = { icons.kind.Package, "LspKindPackage" },
Property = { icons.kind.Property, "LspKindProperty" },
Struct = { icons.kind.Struct, "LspKindStruct" },
TypeParameter = { icons.kind.TypeParameter, "LspKindTypeParameter" },
Variable = { icons.kind.Variable, "LspKindVariable" },
-- Type
Array = { icons.type.Array, "LspKindArray" },
Boolean = { icons.type.Boolean, "LspKindBoolean" },
Null = { icons.type.Null, "LspKindNull" },
Number = { icons.type.Number, "LspKindNumber" },
Object = { icons.type.Object, "LspKindObject" },
String = { icons.type.String, "LspKindString" },
-- ccls-specific icons.
TypeAlias = { icons.kind.TypeAlias, "LspKindTypeAlias" },
Parameter = { icons.kind.Parameter, "LspKindParameter" },
StaticMethod = { icons.kind.StaticMethod, "LspKindStaticMethod" },
-- Microsoft-specific icons.
Text = { icons.kind.Text, "LspKindText" },
Snippet = { icons.kind.Snippet, "LspKindSnippet" },
Folder = { icons.kind.Folder, "LspKindFolder" },
Unit = { icons.kind.Unit, "LspKindUnit" },
Value = { icons.kind.Value, "LspKindValue" },
},
},
-- Scrolling Keymaps: https://nvimdev.github.io/lspsaga/misc/#scrolling-keymaps
scroll_preview = {
scroll_down = "<C-d>",
scroll_up = "<C-u>",
},
request_timeout = 3000,
})
end
@@ -0,0 +1,15 @@
return function()
local snippet_path = vim.fn.stdpath("config") .. "/snips/"
if not vim.tbl_contains(vim.opt.rtp:get(), snippet_path) then
vim.opt.rtp:append(snippet_path)
end
require("modules.utils").load_plugin("luasnip", {
history = true,
update_events = "TextChanged,TextChangedI",
delete_check_events = "TextChanged,InsertLeave",
}, false, require("luasnip").config.set_config)
require("luasnip.loaders.from_lua").lazy_load()
require("luasnip.loaders.from_vscode").lazy_load()
require("luasnip.loaders.from_snipmate").lazy_load()
end
@@ -0,0 +1,86 @@
local M = {}
M.setup = function()
local diagnostics_virtual_text = require("core.settings").diagnostics_virtual_text
local diagnostics_level = require("core.settings").diagnostics_level
local nvim_lsp = require("lspconfig")
local mason_lspconfig = require("mason-lspconfig")
require("lspconfig.ui.windows").default_options.border = "rounded"
require("modules.utils").load_plugin("mason-lspconfig", {
ensure_installed = require("core.settings").lsp_deps,
})
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
signs = true,
underline = true,
virtual_text = diagnostics_virtual_text and {
severity = {
min = vim.diagnostic.severity[diagnostics_level],
},
} or false,
-- set update_in_insert to false because it was enabled by lspsaga
update_in_insert = false,
})
local opts = {
capabilities = vim.tbl_deep_extend(
"force",
vim.lsp.protocol.make_client_capabilities(),
require("cmp_nvim_lsp").default_capabilities()
),
}
---A handler to setup all servers defined under `completion/servers/*.lua`
---@param lsp_name string
local function mason_lsp_handler(lsp_name)
-- rust_analyzer is configured using mrcjkb/rustaceanvim
-- warn users if they have set it up manually
if lsp_name == "rust_analyzer" then
local config_exist = pcall(require, "completion.servers." .. lsp_name)
if config_exist then
vim.notify(
[[
`rust_analyzer` is configured independently via `mrcjkb/rustaceanvim`. To get rid of this warning,
please REMOVE your LSP configuration (rust_analyzer.lua) from the `servers` directory and configure
`rust_analyzer` using the appropriate init options provided by `rustaceanvim` instead.]],
vim.log.levels.WARN,
{ title = "nvim-lspconfig" }
)
end
return
end
local ok, custom_handler = pcall(require, "user.configs.lsp-servers." .. lsp_name)
-- Use preset if there is no user definition
if not ok then
ok, custom_handler = pcall(require, "completion.servers." .. lsp_name)
end
if not ok then
-- Default to use factory config for server(s) that doesn't include a spec
nvim_lsp[lsp_name].setup(opts)
return
elseif type(custom_handler) == "function" then
--- Case where language server requires its own setup
--- Make sure to call require("lspconfig")[lsp_name].setup() in the function
--- See `clangd.lua` for example.
custom_handler(opts)
elseif type(custom_handler) == "table" then
nvim_lsp[lsp_name].setup(vim.tbl_deep_extend("force", opts, custom_handler))
else
vim.notify(
string.format(
"Failed to setup [%s].\n\nServer definition under `completion/servers` must return\neither a fun(opts) or a table (got '%s' instead)",
lsp_name,
type(custom_handler)
),
vim.log.levels.ERROR,
{ title = "nvim-lspconfig" }
)
end
end
mason_lspconfig.setup_handlers({ mason_lsp_handler })
end
return M
@@ -0,0 +1,12 @@
local M = {}
M.setup = function()
require("modules.utils").load_plugin("mason-null-ls", {
ensure_installed = require("core.settings").null_ls_deps,
automatic_installation = false,
automatic_setup = true,
handlers = {},
})
end
return M
@@ -0,0 +1,94 @@
local M = {}
M.setup = function()
local is_windows = require("core.global").is_windows
local mason_registry = require("mason-registry")
require("lspconfig.ui.windows").default_options.border = "rounded"
local icons = {
ui = require("modules.utils.icons").get("ui", true),
misc = require("modules.utils.icons").get("misc", true),
}
require("modules.utils").load_plugin("mason", {
ui = {
border = "single",
icons = {
package_pending = icons.ui.Modified_alt,
package_installed = icons.ui.Check,
package_uninstalled = icons.misc.Ghost,
},
keymaps = {
toggle_server_expand = "<CR>",
install_server = "i",
update_server = "u",
check_server_version = "c",
update_all_servers = "U",
check_outdated_servers = "C",
uninstall_server = "X",
cancel_installation = "<C-c>",
},
},
})
-- Additional plugins for pylsp
mason_registry:on(
"package:install:success",
vim.schedule_wrap(function(pkg)
if pkg.name ~= "python-lsp-server" then
return
end
local venv = vim.fn.stdpath("data") .. "/mason/packages/python-lsp-server/venv"
local python = is_windows and venv .. "/Scripts/python.exe" or venv .. "/bin/python"
local black = is_windows and venv .. "/Scripts/black.exe" or venv .. "/bin/black"
local ruff = is_windows and venv .. "/Scripts/ruff.exe" or venv .. "/bin/ruff"
require("plenary.job")
:new({
command = python,
args = {
"-m",
"pip",
"install",
"-U",
"--disable-pip-version-check",
"python-lsp-black",
"python-lsp-ruff",
"pylsp-rope",
},
cwd = venv,
env = { VIRTUAL_ENV = venv },
on_exit = function()
if vim.fn.executable(black) == 1 and vim.fn.executable(ruff) == 1 then
vim.notify(
"Finished installing pylsp plugins",
vim.log.levels.INFO,
{ title = "[lsp] Install Status" }
)
else
vim.notify(
"Failed to install pylsp plugins. [Executable not found]",
vim.log.levels.ERROR,
{ title = "[lsp] Install Failure" }
)
end
end,
on_start = function()
vim.notify(
"Now installing pylsp plugins...",
vim.log.levels.INFO,
{ title = "[lsp] Install Status", timeout = 6000 }
)
end,
on_stderr = function(_, msg_stream)
vim.notify(msg_stream, vim.log.levels.ERROR, { title = "[lsp] Install Failure" })
end,
})
:start()
end)
)
end
return M
@@ -0,0 +1,20 @@
local M = {}
M.setup = function()
require("modules.utils").load_plugin("neoconf", {
-- send new configuration to lsp clients when changing json settings
live_reload = true,
-- name of the local settings files
local_settings = ".neoconf.json",
-- name of the global settings file in your Neovim config directory
global_settings = "neoconf.json",
-- import existing settings from other plugins
import = {
vscode = true, -- local .vscode/settings.json
coc = true, -- global/local coc-settings.json
nlsp = true, -- global/local nlsp-settings.nvim json settings
},
})
end
return M
@@ -0,0 +1,77 @@
return function()
local null_ls = require("null-ls")
local btns = null_ls.builtins
---Return formatter args required by `extra_args`
---@param formatter_name string
---@return table|nil
local function formatter_args(formatter_name)
local ok, args = pcall(require, "user.configs.formatters." .. formatter_name)
if not ok then
args = require("completion.formatters." .. formatter_name)
end
return args
end
-- Please set additional flags for the supported servers here
-- Don't specify any config here if you are using the default one.
local sources = {
btns.formatting.clang_format.with({
filetypes = { "c", "cpp", "objc", "objcpp", "cs", "java", "cuda", "proto" },
extra_args = formatter_args("clang_format"),
}),
btns.formatting.prettier.with({
filetypes = {
"vue",
"typescript",
"javascript",
"typescriptreact",
"javascriptreact",
"yaml",
"html",
"css",
"scss",
"sh",
"markdown",
},
}),
}
require("modules.utils").load_plugin("null-ls", {
border = "rounded",
debug = false,
log_level = "warn",
update_in_insert = false,
sources = sources,
default_timeout = require("core.settings").format_timeout,
})
require("completion.mason-null-ls").setup()
-- Setup usercmd to register/deregister available source(s)
local function _gen_completion()
local sources_cont = null_ls.get_source({
filetype = vim.bo.filetype,
})
local completion_items = {}
for _, server in pairs(sources_cont) do
table.insert(completion_items, server.name)
end
return completion_items
end
vim.api.nvim_create_user_command("NullLsToggle", function(opts)
if vim.tbl_contains(_gen_completion(), opts.args) then
null_ls.toggle({ name = opts.args })
else
vim.notify(
string.format("[Null-ls] Unable to find any registered source named [%s].", opts.args),
vim.log.levels.ERROR,
{ title = "Null-ls Internal Error" }
)
end
end, {
nargs = 1,
complete = _gen_completion,
})
require("completion.formatting").configure_format_on_save()
end
@@ -0,0 +1,5 @@
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/server_configurations/bashls.lua
return {
cmd = { "bash-language-server", "start" },
filetypes = { "bash", "sh" },
}
@@ -0,0 +1,79 @@
local function switch_source_header_splitcmd(bufnr, splitcmd)
bufnr = require("lspconfig").util.validate_bufnr(bufnr)
local clangd_client = require("lspconfig").util.get_active_client_by_name(bufnr, "clangd")
local params = { uri = vim.uri_from_bufnr(bufnr) }
if clangd_client then
clangd_client.request("textDocument/switchSourceHeader", params, function(err, result)
if err then
error(tostring(err))
end
if not result then
vim.notify("Corresponding file cant be determined", vim.log.levels.ERROR, { title = "LSP Error!" })
return
end
vim.api.nvim_command(splitcmd .. " " .. vim.uri_to_fname(result))
end)
else
vim.notify(
"Method textDocument/switchSourceHeader is not supported by any active server on this buffer",
vim.log.levels.ERROR,
{ title = "LSP Error!" }
)
end
end
local function get_binary_path_list(binaries)
local path_list = {}
for _, binary in ipairs(binaries) do
local path = vim.fn.exepath(binary)
if path ~= "" then
table.insert(path_list, path)
end
end
return table.concat(path_list, ",")
end
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/server_configurations/clangd.lua
return function(options)
require("lspconfig").clangd.setup({
on_attach = options.on_attach,
capabilities = vim.tbl_deep_extend("keep", { offsetEncoding = { "utf-16", "utf-8" } }, options.capabilities),
single_file_support = true,
cmd = {
"clangd",
"-j=12",
"--enable-config",
"--background-index",
"--pch-storage=memory",
-- You MUST set this arg ↓ to your c/cpp compiler location (if not included)!
"--query-driver=" .. get_binary_path_list({ "clang++", "clang", "gcc", "g++" }),
"--clang-tidy",
"--all-scopes-completion",
"--completion-style=detailed",
"--header-insertion-decorators",
"--header-insertion=iwyu",
"--limit-references=3000",
"--limit-results=350",
},
commands = {
ClangdSwitchSourceHeader = {
function()
switch_source_header_splitcmd(0, "edit")
end,
description = "Open source/header in current buffer",
},
ClangdSwitchSourceHeaderVSplit = {
function()
switch_source_header_splitcmd(0, "vsplit")
end,
description = "Open source/header in a new vsplit",
},
ClangdSwitchSourceHeaderSplit = {
function()
switch_source_header_splitcmd(0, "split")
end,
description = "Open source/header in a new split",
},
},
})
end
@@ -0,0 +1,12 @@
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/server_configurations/dartls.lua
return {
cmd = { "dart", "language-server", "--protocol=lsp" },
filetypes = { "dart" },
init_options = {
closingLabels = true,
flutterOutline = true,
onlyAnalyzeProjectsWithOpenFiles = true,
outline = true,
suggestFromUnimportedLibraries = true,
},
}
@@ -0,0 +1,50 @@
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/server_configurations/gopls.lua
return {
cmd = { "gopls", "-remote.debug=:0", "-remote=auto" },
filetypes = { "go", "gomod", "gosum", "gotmpl", "gohtmltmpl", "gotexttmpl" },
flags = { allow_incremental_sync = true, debounce_text_changes = 500 },
capabilities = {
textDocument = {
completion = {
contextSupport = true,
dynamicRegistration = true,
completionItem = {
commitCharactersSupport = true,
deprecatedSupport = true,
preselectSupport = true,
insertReplaceSupport = true,
labelDetailsSupport = true,
snippetSupport = true,
documentationFormat = { "markdown", "plaintext" },
resolveSupport = {
properties = {
"documentation",
"details",
"additionalTextEdits",
},
},
},
},
},
},
settings = {
gopls = {
staticcheck = true,
semanticTokens = true,
noSemanticString = true,
usePlaceholders = true,
completeUnimported = true,
symbolMatcher = "Fuzzy",
buildFlags = { "-tags", "integration" },
codelenses = {
generate = true,
gc_details = true,
test = true,
tidy = true,
vendor = true,
regenerate_cgo = true,
upgrade_dependency = true,
},
},
},
}
@@ -0,0 +1,12 @@
-- https://github.com/vscode-langservers/vscode-html-languageserver-bin
return {
cmd = { "html-languageserver", "--stdio" },
filetypes = { "html" },
init_options = {
configurationSection = { "html", "css", "javascript" },
embeddedLanguages = { css = true, javascript = true },
},
settings = {},
single_file_support = true,
flags = { debounce_text_changes = 500 },
}
@@ -0,0 +1,55 @@
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/server_configurations/jsonls.lua
return {
flags = { debounce_text_changes = 500 },
settings = {
json = {
-- Schemas https://www.schemastore.org
schemas = {
{
fileMatch = { "package.json" },
url = "https://json.schemastore.org/package.json",
},
{
fileMatch = { "tsconfig*.json" },
url = "https://json.schemastore.org/tsconfig.json",
},
{
fileMatch = {
".prettierrc",
".prettierrc.json",
"prettier.config.json",
},
url = "https://json.schemastore.org/prettierrc.json",
},
{
fileMatch = { ".eslintrc", ".eslintrc.json" },
url = "https://json.schemastore.org/eslintrc.json",
},
{
fileMatch = {
".babelrc",
".babelrc.json",
"babel.config.json",
},
url = "https://json.schemastore.org/babelrc.json",
},
{
fileMatch = { "lerna.json" },
url = "https://json.schemastore.org/lerna.json",
},
{
fileMatch = {
".stylelintrc",
".stylelintrc.json",
"stylelint.config.json",
},
url = "http://json.schemastore.org/stylelintrc.json",
},
{
fileMatch = { "/.github/workflows/*" },
url = "https://json.schemastore.org/github-workflow.json",
},
},
},
},
}

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