From d098e94ad102da9d018acca72ca5a5c554d25a01 Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Mon, 2 Jun 2025 13:11:10 -0700 Subject: Update paths n stuff --- .gitmodules | 8 +- aerospace/.aerospace.toml | 158 -- alacritty/.config/alacritty/alacritty-theme | 1 - alacritty/.config/alacritty/alacritty.toml | 44 - alacritty/.config/alacritty/theme.toml | 4 - context.json | 68 - contexts.json | 68 + dots.py | 230 --- dots/aerospace/.aerospace.toml | 158 ++ .../.config/alacritty/alacritty-theme/LICENSE | 202 +++ .../.config/alacritty/alacritty-theme/README.md | 212 +++ .../alacritty/alacritty-theme/images/Cobalt2.png | Bin 0 -> 119961 bytes .../alacritty/alacritty-theme/images/acme.png | Bin 0 -> 21853 bytes .../alacritty/alacritty-theme/images/afterglow.png | Bin 0 -> 98605 bytes .../alacritty/alacritty-theme/images/alabaster.png | Bin 0 -> 60022 bytes .../alacritty-theme/images/alabaster_dark.png | Bin 0 -> 60150 bytes .../alacritty-theme/images/alacritty_0_12.png | Bin 0 -> 101342 bytes .../alacritty/alacritty-theme/images/argonaut.png | Bin 0 -> 115279 bytes .../alacritty-theme/images/ashes_dark.png | Bin 0 -> 152667 bytes .../alacritty-theme/images/ashes_light.png | Bin 0 -> 156310 bytes .../alacritty/alacritty-theme/images/aura.png | Bin 0 -> 48975 bytes .../alacritty/alacritty-theme/images/autumn.png | Bin 0 -> 207321 bytes .../alacritty/alacritty-theme/images/ayu_dark.png | Bin 0 -> 117836 bytes .../alacritty/alacritty-theme/images/ayu_light.png | Bin 0 -> 41674 bytes .../alacritty-theme/images/ayu_mirage.png | Bin 0 -> 46748 bytes .../alacritty/alacritty-theme/images/baitong.png | Bin 0 -> 125945 bytes .../alacritty-theme/images/base16_default_dark.png | Bin 0 -> 96886 bytes .../alacritty-theme/images/blood_moon.png | Bin 0 -> 112532 bytes .../alacritty/alacritty-theme/images/bluish.png | Bin 0 -> 111932 bytes .../alacritty/alacritty-theme/images/breeze.png | Bin 0 -> 115920 bytes .../alacritty/alacritty-theme/images/campbell.png | Bin 0 -> 111126 bytes .../alacritty/alacritty-theme/images/carbonfox.png | Bin 0 -> 87219 bytes .../alacritty-theme/images/catppuccin_frappe.png | Bin 0 -> 39328 bytes .../alacritty-theme/images/catppuccin_latte.png | Bin 0 -> 39365 bytes .../images/catppuccin_macchiato.png | Bin 0 -> 39570 bytes .../alacritty-theme/images/catppuccin_mocha.png | Bin 0 -> 39886 bytes .../alacritty-theme/images/challenger_deep.png | Bin 0 -> 119906 bytes .../alacritty/alacritty-theme/images/chicago95.png | Bin 0 -> 8656 bytes .../alacritty-theme/images/citylights.png | Bin 0 -> 74992 bytes .../alacritty-theme/images/cyber_punk_neon.png | Bin 0 -> 104045 bytes .../alacritty-theme/images/dark_pastels.png | Bin 0 -> 113839 bytes .../alacritty/alacritty-theme/images/dark_plus.png | Bin 0 -> 58778 bytes .../alacritty-theme/images/dark_pride.png | Bin 0 -> 78986 bytes .../alacritty/alacritty-theme/images/dawnfox.png | Bin 0 -> 85432 bytes .../alacritty/alacritty-theme/images/dayfox.png | Bin 0 -> 88600 bytes .../alacritty-theme/images/deep_space.png | Bin 0 -> 79697 bytes .../alacritty/alacritty-theme/images/doom_one.png | Bin 0 -> 114256 bytes .../alacritty/alacritty-theme/images/dracula.png | Bin 0 -> 107713 bytes .../alacritty-theme/images/dracula_plus.png | Bin 0 -> 78610 bytes .../alacritty/alacritty-theme/images/duskfox.png | Bin 0 -> 84595 bytes .../alacritty-theme/images/enfocado_dark.png | Bin 0 -> 48064 bytes .../alacritty-theme/images/enfocado_light.png | Bin 0 -> 49104 bytes .../alacritty-theme/images/everforest_dark.png | Bin 0 -> 36408 bytes .../alacritty-theme/images/everforest_light.png | Bin 0 -> 37015 bytes .../alacritty/alacritty-theme/images/falcon.png | Bin 0 -> 112595 bytes .../alacritty-theme/images/flat_remix.png | Bin 0 -> 115305 bytes .../alacritty/alacritty-theme/images/flexoki.png | Bin 0 -> 175999 bytes .../alacritty-theme/images/github_dark.png | Bin 0 -> 30731 bytes .../images/github_dark_colorblind.png | Bin 0 -> 34514 bytes .../alacritty-theme/images/github_dark_default.png | Bin 0 -> 34453 bytes .../alacritty-theme/images/github_dark_dimmed.png | Bin 0 -> 33825 bytes .../images/github_dark_high_contrast.png | Bin 0 -> 69024 bytes .../images/github_dark_tritanopia.png | Bin 0 -> 68760 bytes .../alacritty-theme/images/github_light.png | Bin 0 -> 33382 bytes .../images/github_light_colorblind.png | Bin 0 -> 35461 bytes .../images/github_light_default.png | Bin 0 -> 35486 bytes .../images/github_light_high_contrast.png | Bin 0 -> 68765 bytes .../images/github_light_tritanopia.png | Bin 0 -> 68441 bytes .../alacritty-theme/images/gnome_terminal.png | Bin 0 -> 45200 bytes .../alacritty/alacritty-theme/images/google.png | Bin 0 -> 51116 bytes .../alacritty/alacritty-theme/images/gotham.png | Bin 0 -> 113793 bytes .../alacritty-theme/images/gruber_darker.png | Bin 0 -> 46423 bytes .../alacritty-theme/images/gruvbox_dark.png | Bin 0 -> 117764 bytes .../alacritty-theme/images/gruvbox_light.png | Bin 0 -> 117114 bytes .../images/gruvbox_material_hard_dark.png | Bin 0 -> 119527 bytes .../images/gruvbox_material_hard_light.png | Bin 0 -> 114236 bytes .../images/gruvbox_material_medium_dark.png | Bin 0 -> 156241 bytes .../images/gruvbox_material_medium_light.png | Bin 0 -> 157489 bytes .../alacritty-theme/images/hardhacker.png | Bin 0 -> 87030 bytes .../alacritty-theme/images/hatsunemiku.png | Bin 0 -> 52446 bytes .../alacritty-theme/images/high_contrast.png | Bin 0 -> 99594 bytes .../alacritty-theme/images/horizon_dark.png | Bin 0 -> 118767 bytes .../alacritty/alacritty-theme/images/hyper.png | Bin 0 -> 94317 bytes .../alacritty/alacritty-theme/images/inferno.png | Bin 0 -> 42546 bytes .../alacritty/alacritty-theme/images/iris.png | Bin 0 -> 45451 bytes .../alacritty/alacritty-theme/images/iterm.png | Bin 0 -> 121283 bytes .../alacritty-theme/images/kanagawa_dragon.png | Bin 0 -> 55296 bytes .../alacritty-theme/images/kanagawa_wave.png | Bin 0 -> 55235 bytes .../alacritty-theme/images/kimbie_dark.png | Bin 0 -> 72448 bytes .../alacritty-theme/images/kimbie_light.png | Bin 0 -> 78701 bytes .../alacritty-theme/images/konsole_linux.png | Bin 0 -> 113413 bytes .../alacritty-theme/images/low_contrast.png | Bin 0 -> 98460 bytes .../alacritty/alacritty-theme/images/mariana.png | Bin 0 -> 33620 bytes .../alacritty-theme/images/marine_dark.png | Bin 0 -> 81832 bytes .../alacritty-theme/images/material_theme.png | Bin 0 -> 112786 bytes .../alacritty-theme/images/material_theme_mod.png | Bin 0 -> 112822 bytes .../alacritty/alacritty-theme/images/meliora.png | Bin 0 -> 41854 bytes .../alacritty/alacritty-theme/images/miasma.png | Bin 0 -> 66529 bytes .../alacritty-theme/images/midnight_haze.png | Bin 0 -> 42428 bytes .../alacritty/alacritty-theme/images/monokai.png | Bin 0 -> 58573 bytes .../alacritty-theme/images/monokai_charcoal.png | Bin 0 -> 103713 bytes .../alacritty-theme/images/monokai_pro.png | Bin 0 -> 75700 bytes .../alacritty/alacritty-theme/images/moonfly.png | Bin 0 -> 127393 bytes .../alacritty-theme/images/moonlight_ii_vscode.png | Bin 0 -> 114810 bytes .../alacritty/alacritty-theme/images/msx.png | Bin 0 -> 27283 bytes .../alacritty/alacritty-theme/images/night_owl.png | Bin 0 -> 50511 bytes .../alacritty-theme/images/night_owlish_light.png | Bin 0 -> 118221 bytes .../alacritty/alacritty-theme/images/nightfly.png | Bin 0 -> 137140 bytes .../alacritty/alacritty-theme/images/nightfox.png | Bin 0 -> 85950 bytes .../alacritty-theme/images/noctis_lux.png | Bin 0 -> 122710 bytes .../alacritty/alacritty-theme/images/nord.png | Bin 0 -> 106388 bytes .../alacritty-theme/images/nord_light.png | Bin 0 -> 42160 bytes .../alacritty/alacritty-theme/images/nordfox.png | Bin 0 -> 85944 bytes .../alacritty/alacritty-theme/images/nordic.png | Bin 0 -> 212713 bytes .../alacritty-theme/images/oceanic_next.png | Bin 0 -> 105332 bytes .../alacritty/alacritty-theme/images/omni.png | Bin 0 -> 120446 bytes .../alacritty/alacritty-theme/images/one_dark.png | Bin 0 -> 99331 bytes .../alacritty/alacritty-theme/images/one_light.png | Bin 0 -> 103692 bytes .../alacritty/alacritty-theme/images/oxocarbon.png | Bin 0 -> 38942 bytes .../alacritty/alacritty-theme/images/palenight.png | Bin 0 -> 113561 bytes .../alacritty-theme/images/papercolor_dark.png | Bin 0 -> 107189 bytes .../alacritty-theme/images/papercolor_light.png | Bin 0 -> 109409 bytes .../alacritty-theme/images/papertheme.png | Bin 0 -> 49308 bytes .../alacritty-theme/images/pastel_dark.png | Bin 0 -> 157625 bytes .../alacritty-theme/images/pencil_dark.png | Bin 0 -> 114323 bytes .../alacritty-theme/images/pencil_light.png | Bin 0 -> 114065 bytes .../alacritty/alacritty-theme/images/rainbow.png | Bin 0 -> 101911 bytes .../alacritty-theme/images/remedy_dark.png | Bin 0 -> 119434 bytes .../alacritty/alacritty-theme/images/rigel.png | Bin 0 -> 49973 bytes .../alacritty/alacritty-theme/images/rose_pine.png | Bin 0 -> 52386 bytes .../alacritty-theme/images/rose_pine_dawn.png | Bin 0 -> 47239 bytes .../alacritty-theme/images/rose_pine_moon.png | Bin 0 -> 52319 bytes .../alacritty/alacritty-theme/images/seashells.png | Bin 0 -> 116678 bytes .../alacritty-theme/images/selenized_dark.png | Bin 0 -> 117820 bytes .../alacritty-theme/images/selenized_light.png | Bin 0 -> 117881 bytes .../alacritty-theme/images/seoul256-light.png | Bin 0 -> 46039 bytes .../alacritty/alacritty-theme/images/smoooooth.png | Bin 0 -> 118563 bytes .../alacritty/alacritty-theme/images/snazzy.png | Bin 0 -> 103905 bytes .../alacritty-theme/images/solarized_dark.png | Bin 0 -> 110720 bytes .../alacritty-theme/images/solarized_light.png | Bin 0 -> 114665 bytes .../alacritty-theme/images/solarized_osaka.png | Bin 0 -> 401281 bytes .../alacritty/alacritty-theme/images/sonokai.png | Bin 0 -> 42028 bytes .../alacritty/alacritty-theme/images/spacegray.png | Bin 0 -> 48352 bytes .../alacritty-theme/images/synthwave_84.png | Bin 0 -> 98190 bytes .../alacritty/alacritty-theme/images/taerminal.png | Bin 0 -> 114420 bytes .../alacritty-theme/images/tango_dark.png | Bin 0 -> 114337 bytes .../alacritty/alacritty-theme/images/tender.png | Bin 0 -> 97297 bytes .../alacritty/alacritty-theme/images/terafox.png | Bin 0 -> 86386 bytes .../alacritty-theme/images/terminal_app.png | Bin 0 -> 106089 bytes .../alacritty-theme/images/thelovelace.png | Bin 0 -> 117823 bytes .../alacritty-theme/images/tokyo_night.png | Bin 0 -> 117978 bytes .../images/tokyo_night_enhanced.png | Bin 0 -> 40344 bytes .../alacritty-theme/images/tokyo_night_storm.png | Bin 0 -> 117594 bytes .../alacritty-theme/images/tomorrow_night.png | Bin 0 -> 115216 bytes .../images/tomorrow_night_bright.png | Bin 0 -> 110742 bytes .../alacritty/alacritty-theme/images/ubuntu.png | Bin 0 -> 52734 bytes .../alacritty/alacritty-theme/images/vesper.png | Bin 0 -> 59583 bytes .../alacritty/alacritty-theme/images/vscode.png | Bin 0 -> 148571 bytes .../alacritty/alacritty-theme/images/wombat.png | Bin 0 -> 115590 bytes .../alacritty/alacritty-theme/images/xterm.png | Bin 0 -> 104509 bytes .../alacritty/alacritty-theme/images/zenburn.png | Bin 0 -> 111438 bytes .../alacritty/alacritty-theme/print_colors.sh | 10 + .../alacritty/alacritty-theme/themes/Cobalt2.toml | 33 + .../alacritty/alacritty-theme/themes/Mariana.toml | 39 + .../alacritty/alacritty-theme/themes/acme.toml | 28 + .../alacritty-theme/themes/afterglow.toml | 45 + .../alacritty-theme/themes/alabaster.toml | 30 + .../alacritty-theme/themes/alabaster_dark.toml | 30 + .../alacritty-theme/themes/alacritty_0_12.toml | 44 + .../alacritty/alacritty-theme/themes/argonaut.toml | 31 + .../alacritty-theme/themes/ashes_dark.toml | 27 + .../alacritty-theme/themes/ashes_light.toml | 27 + .../alacritty/alacritty-theme/themes/aura.toml | 30 + .../alacritty/alacritty-theme/themes/autumn.toml | 30 + .../alacritty/alacritty-theme/themes/ayu_dark.toml | 28 + .../alacritty-theme/themes/ayu_light.toml | 28 + .../alacritty-theme/themes/ayu_mirage.toml | 29 + .../alacritty/alacritty-theme/themes/baitong.toml | 55 + .../themes/base16_default_dark.toml | 32 + .../alacritty-theme/themes/blood_moon.toml | 28 + .../alacritty/alacritty-theme/themes/bluish.toml | 26 + .../alacritty/alacritty-theme/themes/breeze.toml | 42 + .../alacritty/alacritty-theme/themes/campbell.toml | 28 + .../alacritty-theme/themes/carbonfox.toml | 71 + .../alacritty-theme/themes/catppuccin.toml | 39 + .../alacritty-theme/themes/catppuccin_frappe.toml | 73 + .../alacritty-theme/themes/catppuccin_latte.toml | 76 + .../themes/catppuccin_macchiato.toml | 76 + .../alacritty-theme/themes/catppuccin_mocha.toml | 75 + .../alacritty-theme/themes/challenger_deep.toml | 32 + .../alacritty-theme/themes/chicago95.toml | 29 + .../alacritty-theme/themes/citylights.toml | 30 + .../alacritty-theme/themes/cyber_punk_neon.toml | 33 + .../alacritty-theme/themes/dark_pastels.toml | 28 + .../alacritty-theme/themes/dark_plus.toml | 23 + .../alacritty-theme/themes/dark_pride.toml | 34 + .../alacritty/alacritty-theme/themes/dawnfox.toml | 71 + .../alacritty/alacritty-theme/themes/dayfox.toml | 71 + .../alacritty-theme/themes/deep_space.toml | 33 + .../alacritty/alacritty-theme/themes/doom_one.toml | 17 + .../alacritty/alacritty-theme/themes/dracula.toml | 28 + .../alacritty-theme/themes/dracula_plus.toml | 29 + .../alacritty/alacritty-theme/themes/duskfox.toml | 71 + .../alacritty-theme/themes/enfocado_dark.toml | 29 + .../alacritty-theme/themes/enfocado_light.toml | 29 + .../alacritty-theme/themes/everforest_dark.toml | 28 + .../alacritty-theme/themes/everforest_light.toml | 28 + .../alacritty/alacritty-theme/themes/falcon.toml | 33 + .../alacritty-theme/themes/flat_remix.toml | 23 + .../alacritty/alacritty-theme/themes/flexoki.toml | 46 + .../alacritty-theme/themes/github_dark.toml | 36 + .../themes/github_dark_colorblind.toml | 36 + .../themes/github_dark_default.toml | 36 + .../alacritty-theme/themes/github_dark_dimmed.toml | 36 + .../themes/github_dark_high_contrast.toml | 33 + .../themes/github_dark_tritanopia.toml | 33 + .../alacritty-theme/themes/github_light.toml | 36 + .../themes/github_light_colorblind.toml | 36 + .../themes/github_light_default.toml | 36 + .../themes/github_light_high_contrast.toml | 33 + .../themes/github_light_tritanopia.toml | 33 + .../alacritty-theme/themes/gnome_terminal.toml | 28 + .../alacritty/alacritty-theme/themes/google.toml | 23 + .../alacritty/alacritty-theme/themes/gotham.toml | 28 + .../alacritty-theme/themes/gruber_darker.toml | 26 + .../alacritty-theme/themes/gruvbox_dark.toml | 30 + .../alacritty-theme/themes/gruvbox_light.toml | 30 + .../alacritty-theme/themes/gruvbox_material.toml | 25 + .../themes/gruvbox_material_hard_dark.toml | 28 + .../themes/gruvbox_material_hard_light.toml | 28 + .../themes/gruvbox_material_medium_dark.toml | 28 + .../themes/gruvbox_material_medium_light.toml | 28 + .../alacritty-theme/themes/hardhacker.toml | 33 + .../alacritty-theme/themes/hatsunemiku.toml | 23 + .../alacritty-theme/themes/high_contrast.toml | 33 + .../alacritty-theme/themes/horizon_dark.toml | 28 + .../alacritty/alacritty-theme/themes/hyper.toml | 32 + .../alacritty/alacritty-theme/themes/inferno.toml | 29 + .../alacritty/alacritty-theme/themes/iris.toml | 28 + .../alacritty/alacritty-theme/themes/iterm.toml | 28 + .../alacritty-theme/themes/kanagawa_dragon.toml | 38 + .../alacritty-theme/themes/kanagawa_wave.toml | 38 + .../alacritty-theme/themes/kimbie_dark.toml | 24 + .../alacritty-theme/themes/kimbie_light.toml | 24 + .../alacritty-theme/themes/konsole_linux.toml | 44 + .../alacritty-theme/themes/low_contrast.toml | 32 + .../alacritty-theme/themes/marine_dark.toml | 29 + .../alacritty-theme/themes/material_theme.toml | 28 + .../alacritty-theme/themes/material_theme_mod.toml | 28 + .../alacritty/alacritty-theme/themes/meliora.toml | 75 + .../alacritty/alacritty-theme/themes/miasma.toml | 28 + .../alacritty-theme/themes/midnight_haze.toml | 29 + .../alacritty/alacritty-theme/themes/monokai.toml | 23 + .../alacritty-theme/themes/monokai_charcoal.toml | 28 + .../alacritty-theme/themes/monokai_pro.toml | 26 + .../alacritty/alacritty-theme/themes/moonfly.toml | 34 + .../themes/moonlight_ii_vscode.toml | 27 + .../alacritty/alacritty-theme/themes/msx.toml | 41 + .../alacritty-theme/themes/night_owl.toml | 54 + .../alacritty-theme/themes/night_owlish_light.toml | 33 + .../alacritty/alacritty-theme/themes/nightfly.toml | 34 + .../alacritty/alacritty-theme/themes/nightfox.toml | 71 + .../alacritty-theme/themes/noctis_lux.toml | 28 + .../alacritty/alacritty-theme/themes/nord.toml | 28 + .../alacritty-theme/themes/nord_light.toml | 28 + .../alacritty/alacritty-theme/themes/nordfox.toml | 71 + .../alacritty/alacritty-theme/themes/nordic.toml | 29 + .../alacritty-theme/themes/oceanic_next.toml | 28 + .../alacritty/alacritty-theme/themes/omni.toml | 37 + .../alacritty/alacritty-theme/themes/one_dark.toml | 28 + .../alacritty-theme/themes/one_light.toml | 23 + .../alacritty-theme/themes/oxocarbon.toml | 34 + .../alacritty-theme/themes/palenight.toml | 29 + .../alacritty-theme/themes/papercolor_dark.toml | 32 + .../alacritty-theme/themes/papercolor_light.toml | 32 + .../alacritty-theme/themes/papertheme.toml | 28 + .../alacritty-theme/themes/pastel_dark.toml | 33 + .../alacritty-theme/themes/pencil_dark.toml | 28 + .../alacritty-theme/themes/pencil_light.toml | 28 + .../alacritty/alacritty-theme/themes/rainbow.toml | 26 + .../alacritty-theme/themes/remedy_dark.toml | 29 + .../alacritty/alacritty-theme/themes/rigel.toml | 30 + .../alacritty-theme/themes/rose_pine.toml | 39 + .../alacritty-theme/themes/rose_pine_dawn.toml | 39 + .../alacritty-theme/themes/rose_pine_moon.toml | 38 + .../alacritty-theme/themes/seashells.toml | 37 + .../alacritty-theme/themes/selenized_dark.toml | 26 + .../alacritty-theme/themes/selenized_light.toml | 25 + .../alacritty-theme/themes/seoul256-light.toml | 71 + .../alacritty-theme/themes/smoooooth.toml | 33 + .../alacritty/alacritty-theme/themes/snazzy.toml | 28 + .../alacritty-theme/themes/solarized_dark.toml | 28 + .../alacritty-theme/themes/solarized_light.toml | 28 + .../alacritty-theme/themes/solarized_osaka.toml | 29 + .../alacritty/alacritty-theme/themes/sonokai.toml | 33 + .../alacritty-theme/themes/spacegray.toml | 33 + .../alacritty-theme/themes/synthwave_84.toml | 23 + .../alacritty-theme/themes/taerminal.toml | 32 + .../alacritty-theme/themes/tango_dark.toml | 25 + .../alacritty/alacritty-theme/themes/tender.toml | 26 + .../alacritty/alacritty-theme/themes/terafox.toml | 71 + .../alacritty-theme/themes/terminal_app.toml | 28 + .../alacritty-theme/themes/thelovelace.toml | 26 + .../alacritty-theme/themes/tokyo_night.toml | 29 + .../themes/tokyo_night_enhanced.toml | 30 + .../alacritty-theme/themes/tokyo_night_storm.toml | 29 + .../alacritty-theme/themes/tomorrow_night.toml | 32 + .../themes/tomorrow_night_bright.toml | 28 + .../alacritty/alacritty-theme/themes/ubuntu.toml | 33 + .../alacritty/alacritty-theme/themes/vesper.toml | 26 + .../alacritty/alacritty-theme/themes/vscode.toml | 23 + .../alacritty/alacritty-theme/themes/wombat.toml | 28 + .../alacritty/alacritty-theme/themes/xterm.toml | 28 + .../alacritty/alacritty-theme/themes/zenburn.toml | 29 + dots/alacritty/.config/alacritty/alacritty.toml | 44 + dots/alacritty/.config/alacritty/theme.toml | 4 + dots/git/.config/git/rootignore | 7 + dots/git/.gitconfig.j2 | 12 + dots/gpg/.gnupg/common.conf | 1 + dots/gpg/.gnupg/gpg-agent.conf | 2 + dots/home/.pubkey.j2 | 1 + dots/home/Documents/pubkey.asc | 0 dots/home/Pictures/pfp/bubblegum.png | Bin 0 -> 443498 bytes dots/home/Pictures/pfp/eejypenguin.png | Bin 0 -> 175119 bytes dots/home/Pictures/pfp/gus.jpg | Bin 0 -> 31578 bytes dots/home/Pictures/pfp/mefr.png | Bin 0 -> 1265644 bytes dots/home/Pictures/pfp/shoppingpenguin.png | Bin 0 -> 277623 bytes dots/home/Pictures/wallpapers/beach.jpg | Bin 0 -> 169847 bytes dots/home/Pictures/wallpapers/flat-books.png | Bin 0 -> 1133976 bytes dots/home/Pictures/wallpapers/ghibli-road.png | Bin 0 -> 313297 bytes dots/home/Pictures/wallpapers/penguins-hugging.jpg | Bin 0 -> 519955 bytes dots/home/Pictures/wallpapers/rose.png | Bin 0 -> 1508642 bytes .../home/Pictures/wallpapers/snowy-light-trees.jpg | Bin 0 -> 1283226 bytes .../Pictures/wallpapers/sunrise-mountains.webp | Bin 0 -> 62148 bytes dots/home/Pictures/wallpapers/table.png | Bin 0 -> 608017 bytes dots/home/Pictures/wallpapers/wall.jpg | Bin 0 -> 275592 bytes dots/home/scripts/greet.sh | 29 + dots/home/scripts/log.sh | 32 + dots/home/scripts/pinentry.sh | 20 + dots/home/scripts/platform.sh | 11 + dots/home/scripts/system_name.sh | 14 + dots/home/scripts/theme.sh | 22 + dots/mise/.config/mise/config.toml | 5 + dots/nvim/.config/nvim/init.lua | 9 + dots/nvim/.config/nvim/lua/.gitkeep | 0 dots/nvim/.config/nvim/lua/config/lazy.lua | 35 + dots/nvim/.config/nvim/lua/config/options.lua | 39 + dots/nvim/.config/nvim/lua/plugins/comment.lua | 6 + dots/nvim/.config/nvim/lua/plugins/lualine.lua | 34 + dots/nvim/.config/nvim/lua/plugins/telescope.lua | 25 + dots/nvim/.config/nvim/lua/plugins/theme.lua | 9 + dots/nvim/.config/nvim/lua/plugins/whichkey.lua | 6 + dots/ssh/.ssh/config | 16 + dots/ssh/.ssh/config.d/.gitkeep | 0 dots/starship/.config/starship.toml | 53 + dots/theme/.config/theme/alacritty.toml | 4 + dots/tmux/.config/tmux/tmux.conf | 28 + dots/tmux/.tmux/plugins/tpm/.gitattributes | 9 + dots/tmux/.tmux/plugins/tpm/.gitignore | 4 + dots/tmux/.tmux/plugins/tpm/.gitmodules | 3 + dots/tmux/.tmux/plugins/tpm/.travis.yml | 19 + dots/tmux/.tmux/plugins/tpm/CHANGELOG.md | 86 + dots/tmux/.tmux/plugins/tpm/HOW_TO_PLUGIN.md | 2 + dots/tmux/.tmux/plugins/tpm/LICENSE.md | 20 + dots/tmux/.tmux/plugins/tpm/README.md | 101 ++ dots/tmux/.tmux/plugins/tpm/bin/clean_plugins | 14 + dots/tmux/.tmux/plugins/tpm/bin/install_plugins | 14 + dots/tmux/.tmux/plugins/tpm/bin/update_plugins | 24 + dots/tmux/.tmux/plugins/tpm/bindings/clean_plugins | 19 + .../.tmux/plugins/tpm/bindings/install_plugins | 19 + .../tmux/.tmux/plugins/tpm/bindings/update_plugins | 49 + .../plugins/tpm/docs/automatic_tpm_installation.md | 12 + .../tpm/docs/changing_plugins_install_dir.md | 16 + .../.tmux/plugins/tpm/docs/how_to_create_plugin.md | 108 ++ .../tpm/docs/managing_plugins_via_cmd_line.md | 36 + .../tmux/.tmux/plugins/tpm/docs/tpm_not_working.md | 102 ++ .../plugins/tpm/scripts/check_tmux_version.sh | 78 + .../.tmux/plugins/tpm/scripts/clean_plugins.sh | 41 + .../tpm/scripts/helpers/plugin_functions.sh | 104 ++ .../tpm/scripts/helpers/shell_echo_functions.sh | 7 + .../tpm/scripts/helpers/tmux_echo_functions.sh | 28 + .../plugins/tpm/scripts/helpers/tmux_utils.sh | 6 + .../.tmux/plugins/tpm/scripts/helpers/utility.sh | 17 + .../.tmux/plugins/tpm/scripts/install_plugins.sh | 75 + .../.tmux/plugins/tpm/scripts/source_plugins.sh | 42 + .../.tmux/plugins/tpm/scripts/update_plugin.sh | 78 + .../tpm/scripts/update_plugin_prompt_handler.sh | 18 + dots/tmux/.tmux/plugins/tpm/scripts/variables.sh | 13 + .../tpm/tests/expect_failed_plugin_download | 36 + .../tpm/tests/expect_successful_clean_plugins | 35 + .../expect_successful_multiple_plugins_download | 44 + .../tpm/tests/expect_successful_plugin_download | 50 + .../expect_successful_update_of_a_single_plugin | 55 + .../tests/expect_successful_update_of_all_plugins | 59 + dots/tmux/.tmux/plugins/tpm/tests/helpers/tpm.sh | 13 + .../.tmux/plugins/tpm/tests/test_plugin_clean.sh | 67 + .../plugins/tpm/tests/test_plugin_installation.sh | 284 +++ .../tpm/tests/test_plugin_installation_legacy.sh | 100 ++ .../plugins/tpm/tests/test_plugin_sourcing.sh | 78 + .../.tmux/plugins/tpm/tests/test_plugin_update.sh | 60 + dots/tmux/.tmux/plugins/tpm/tpm | 81 + dots/zed/.config/zed/keymap.json | 14 + dots/zed/.config/zed/settings.json.j2 | 280 +++ dots/zsh/.config/zsh/.zshrc | 38 + .../.config/zsh/greetings/00_art/another_penguin | 15 + dots/zsh/.config/zsh/greetings/00_art/butterfly | 9 + dots/zsh/.config/zsh/greetings/00_art/eebjy | 9 + dots/zsh/.config/zsh/greetings/00_art/heart | 8 + dots/zsh/.config/zsh/greetings/00_art/penguin | 16 + dots/zsh/.config/zsh/greetings/00_art/puppy | 10 + dots/zsh/.config/zsh/greetings/00_art/totoro | 13 + .../zsh/greetings/01_prompts/aww_motivation_lost | 1 + dots/zsh/.config/zsh/greetings/01_prompts/bashful | 1 + dots/zsh/.config/zsh/greetings/01_prompts/bby | 1 + dots/zsh/.config/zsh/greetings/01_prompts/bot | 1 + .../.config/zsh/greetings/01_prompts/break_stuff | 1 + .../zsh/greetings/01_prompts/compiling_feelings | 1 + dots/zsh/.config/zsh/greetings/01_prompts/crashin | 1 + dots/zsh/.config/zsh/greetings/01_prompts/desu | 1 + .../.config/zsh/greetings/01_prompts/hacker_friend | 1 + dots/zsh/.config/zsh/greetings/01_prompts/hai | 1 + .../zsh/greetings/01_prompts/input_output_love | 1 + .../.config/zsh/greetings/01_prompts/love_letter | 1 + dots/zsh/.config/zsh/greetings/01_prompts/online | 1 + .../.config/zsh/greetings/01_prompts/production | 1 + dots/zsh/.config/zsh/greetings/01_prompts/sammich | 1 + .../.config/zsh/greetings/01_prompts/shell_yeah | 1 + .../.config/zsh/greetings/01_prompts/time_to_hack | 1 + dots/zsh/.config/zsh/greetings/01_prompts/typing | 1 + dots/zsh/.config/zsh/greetings/01_prompts/yeehaw | 1 + dots/zsh/.config/zsh/linux/init.zsh | 6 + dots/zsh/.config/zsh/osx/armin.zsh | 3 + dots/zsh/.config/zsh/osx/bcd074b37296.zsh | 1 + dots/zsh/.config/zsh/osx/init.zsh | 13 + dots/zsh/.config/zsh/osx/work.zsh | 29 + .../zsh/plugins/zsh-autosuggestions/.editorconfig | 18 + .../.github/ISSUE_TEMPLATE/bug-report.md | 36 + .../.github/ISSUE_TEMPLATE/feature_request.md | 20 + .../.github/workflows/integration.yml | 51 + .../zsh/plugins/zsh-autosuggestions/.gitignore | 2 + .../.config/zsh/plugins/zsh-autosuggestions/.rspec | 3 + .../zsh/plugins/zsh-autosuggestions/.rubocop.yml | 30 + .../zsh/plugins/zsh-autosuggestions/.ruby-version | 1 + .../zsh/plugins/zsh-autosuggestions/CHANGELOG.md | 124 ++ .../zsh/plugins/zsh-autosuggestions/DESCRIPTION | 1 + .../zsh/plugins/zsh-autosuggestions/Dockerfile | 21 + .../zsh/plugins/zsh-autosuggestions/Gemfile | 5 + .../zsh/plugins/zsh-autosuggestions/Gemfile.lock | 41 + .../zsh/plugins/zsh-autosuggestions/INSTALL.md | 81 + .../zsh/plugins/zsh-autosuggestions/LICENSE | 23 + .../zsh/plugins/zsh-autosuggestions/Makefile | 35 + .../zsh/plugins/zsh-autosuggestions/README.md | 188 ++ .../.config/zsh/plugins/zsh-autosuggestions/URL | 1 + .../zsh/plugins/zsh-autosuggestions/VERSION | 1 + .../zsh/plugins/zsh-autosuggestions/ZSH_VERSIONS | 14 + .../zsh-autosuggestions/install_test_zsh.sh | 23 + .../plugins/zsh-autosuggestions/spec/async_spec.rb | 70 + .../spec/integrations/auto_cd_spec.rb | 14 + .../integrations/bracketed_paste_magic_spec.rb | 43 + .../spec/integrations/client_zpty_spec.rb | 14 + .../spec/integrations/glob_subst_spec.rb | 12 + .../spec/integrations/rebound_bracket_spec.rb | 13 + .../spec/integrations/vi_mode_spec.rb | 80 + .../spec/integrations/wrapped_widget_spec.rb | 39 + .../spec/integrations/zle_input_stack_spec.rb | 24 + .../zsh-autosuggestions/spec/kill_ring_spec.rb | 23 + .../zsh-autosuggestions/spec/line_init_spec.rb | 17 + .../zsh-autosuggestions/spec/multi_line_spec.rb | 8 + .../spec/options/buffer_max_size_spec.rb | 30 + .../spec/options/highlight_style_spec.rb | 7 + .../spec/options/original_widget_prefix_spec.rb | 7 + .../spec/options/strategy_spec.rb | 55 + .../spec/options/widget_lists_spec.rb | 121 ++ .../zsh-autosuggestions/spec/spec_helper.rb | 54 + .../spec/strategies/completion_spec.rb | 72 + .../spec/strategies/history_spec.rb | 23 + .../spec/strategies/match_prev_cmd_spec.rb | 34 + .../spec/strategies/special_characters_helper.rb | 75 + .../zsh-autosuggestions/spec/terminal_session.rb | 99 ++ .../spec/widgets/disable_spec.rb | 19 + .../spec/widgets/enable_spec.rb | 42 + .../zsh-autosuggestions/spec/widgets/fetch_spec.rb | 24 + .../spec/widgets/toggle_spec.rb | 26 + .../zsh/plugins/zsh-autosuggestions/src/async.zsh | 77 + .../zsh/plugins/zsh-autosuggestions/src/bind.zsh | 106 ++ .../zsh/plugins/zsh-autosuggestions/src/config.zsh | 95 + .../zsh/plugins/zsh-autosuggestions/src/fetch.zsh | 27 + .../plugins/zsh-autosuggestions/src/highlight.zsh | 26 + .../zsh/plugins/zsh-autosuggestions/src/start.zsh | 33 + .../src/strategies/completion.zsh | 137 ++ .../zsh-autosuggestions/src/strategies/history.zsh | 32 + .../src/strategies/match_prev_cmd.zsh | 66 + .../zsh/plugins/zsh-autosuggestions/src/util.zsh | 11 + .../plugins/zsh-autosuggestions/src/widgets.zsh | 231 +++ .../zsh-autosuggestions.plugin.zsh | 1 + .../zsh-autosuggestions/zsh-autosuggestions.zsh | 867 +++++++++ .../plugins/zsh-syntax-highlighting/.editorconfig | 15 + .../plugins/zsh-syntax-highlighting/.gitattributes | 1 + .../.github/workflows/test.yml | 75 + .../zsh/plugins/zsh-syntax-highlighting/.gitignore | 3 + .../plugins/zsh-syntax-highlighting/.revision-hash | 1 + .../zsh/plugins/zsh-syntax-highlighting/.version | 1 + .../zsh/plugins/zsh-syntax-highlighting/COPYING.md | 23 + .../zsh/plugins/zsh-syntax-highlighting/HACKING.md | 99 ++ .../zsh/plugins/zsh-syntax-highlighting/INSTALL.md | 169 ++ .../zsh/plugins/zsh-syntax-highlighting/Makefile | 64 + .../zsh/plugins/zsh-syntax-highlighting/README.md | 97 + .../plugins/zsh-syntax-highlighting/changelog.md | 920 ++++++++++ .../zsh-syntax-highlighting/docs/highlighters.md | 132 ++ .../docs/highlighters/brackets.md | 31 + .../docs/highlighters/cursor.md | 24 + .../docs/highlighters/line.md | 24 + .../docs/highlighters/main.md | 121 ++ .../docs/highlighters/pattern.md | 24 + .../docs/highlighters/regexp.md | 65 + .../docs/highlighters/root.md | 25 + .../zsh-syntax-highlighting/highlighters/README.md | 8 + .../highlighters/brackets/README.md | 1 + .../highlighters/brackets/brackets-highlighter.zsh | 107 ++ .../cursor-matchingbracket-line-finish.zsh | 36 + .../brackets/test-data/cursor-matchingbracket.zsh | 47 + .../brackets/test-data/empty-styles.zsh | 33 + .../brackets/test-data/loop-styles.zsh | 53 + .../brackets/test-data/mismatch-patentheses.zsh | 42 + .../brackets/test-data/near-quotes.zsh | 42 + .../brackets/test-data/nested-parentheses.zsh | 45 + .../highlighters/brackets/test-data/only-error.zsh | 34 + .../brackets/test-data/quoted-patentheses.zsh | 34 + .../brackets/test-data/simple-parentheses.zsh | 42 + .../brackets/test-data/unclosed-patentheses.zsh | 41 + .../brackets/test-data/unclosed-patentheses2.zsh | 40 + .../highlighters/cursor/README.md | 1 + .../highlighters/cursor/cursor-highlighter.zsh | 47 + .../highlighters/line/README.md | 1 + .../highlighters/line/line-highlighter.zsh | 44 + .../highlighters/main/README.md | 1 + .../highlighters/main/main-highlighter.zsh | 1846 ++++++++++++++++++++ .../test-data/abspath-in-command-position1.zsh | 35 + .../test-data/abspath-in-command-position1b.zsh | 36 + .../test-data/abspath-in-command-position2.zsh | 35 + .../test-data/abspath-in-command-position3.zsh | 37 + .../test-data/abspath-in-command-position3b.zsh | 38 + .../test-data/abspath-in-command-position4.zsh | 35 + .../test-data/abspath-in-command-position5.zsh | 35 + .../main/test-data/alias-assignment1.zsh | 38 + .../highlighters/main/test-data/alias-basic.zsh | 35 + .../highlighters/main/test-data/alias-brackets.zsh | 41 + .../main/test-data/alias-command-substitution.zsh | 37 + .../highlighters/main/test-data/alias-comment1.zsh | 37 + .../highlighters/main/test-data/alias-comment2.zsh | 37 + .../highlighters/main/test-data/alias-complex.zsh | 38 + .../highlighters/main/test-data/alias-empty.zsh | 38 + .../main/test-data/alias-eponymous1.zsh | 36 + .../main/test-data/alias-eponymous2.zsh | 36 + .../main/test-data/alias-in-cmdsubst.zsh | 43 + .../highlighters/main/test-data/alias-loop.zsh | 44 + .../highlighters/main/test-data/alias-loop2.zsh | 35 + .../main/test-data/alias-nested-precommand.zsh | 43 + .../highlighters/main/test-data/alias-nested.zsh | 40 + .../main/test-data/alias-parameter.zsh | 38 + .../alias-precommand-option-argument1.zsh | 42 + .../alias-precommand-option-argument2.zsh | 42 + .../alias-precommand-option-argument3.zsh | 42 + .../alias-precommand-option-argument4.zsh | 42 + .../highlighters/main/test-data/alias-quoted.zsh | 39 + .../highlighters/main/test-data/alias-redirect.zsh | 38 + .../highlighters/main/test-data/alias-reuse1.zsh | 39 + .../highlighters/main/test-data/alias-reuse2.zsh | 39 + .../highlighters/main/test-data/alias-reuse3.zsh | 39 + .../highlighters/main/test-data/alias-reuse4.zsh | 42 + .../highlighters/main/test-data/alias-reuse5.zsh | 43 + .../highlighters/main/test-data/alias-self.zsh | 38 + .../highlighters/main/test-data/alias-self2.zsh | 37 + .../highlighters/main/test-data/alias-to-dir.zsh | 36 + .../highlighters/main/test-data/alias-to-dir1b.zsh | 37 + .../main/test-data/alias-unknown-token1.zsh | 37 + .../main/test-data/alias-unknown-token2.zsh | 37 + .../highlighters/main/test-data/alias.zsh | 53 + .../highlighters/main/test-data/always1.zsh | 41 + .../highlighters/main/test-data/always2.zsh | 43 + .../highlighters/main/test-data/always3.zsh | 43 + .../main/test-data/anonymous-function.zsh | 44 + .../highlighters/main/test-data/arg0-colon.zsh | 35 + .../main/test-data/arith-cmdsubst-mess.zsh | 46 + .../highlighters/main/test-data/arith1.zsh | 37 + .../highlighters/main/test-data/arith2.zsh | 38 + .../test-data/arithmetic-command-substitution.zsh | 42 + .../main/test-data/arithmetic-doubled-parens.zsh | 37 + .../main/test-data/arithmetic-empty.zsh | 39 + .../main/test-data/arithmetic-evaluation.zsh | 40 + .../main/test-data/arithmetic-hist-expn.zsh | 38 + .../main/test-data/arithmetic-invalid-chars.zsh | 39 + .../main/test-data/arithmetic-multiplication.zsh | 39 + .../main/test-data/arithmetic-nested.zsh | 38 + .../main/test-data/arithmetic-quoted.zsh | 38 + .../main/test-data/arithmetic-unclosed.zsh | 37 + .../main/test-data/arithmetic-unfinished.zsh | 41 + .../highlighters/main/test-data/array-cmdsep1.zsh | 45 + .../highlighters/main/test-data/array-cmdsep2.zsh | 41 + .../highlighters/main/test-data/array-cmdsep3.zsh | 41 + .../highlighters/main/test-data/assign-append.zsh | 39 + .../highlighters/main/test-data/assign-argv.zsh | 38 + .../highlighters/main/test-data/assign-array.zsh | 41 + .../highlighters/main/test-data/assign-array2.zsh | 40 + .../highlighters/main/test-data/assign-array3.zsh | 41 + .../main/test-data/assign-invalid-command.zsh | 37 + .../main/test-data/assign-not-array.zsh | 36 + .../main/test-data/assign-not-array2.zsh | 36 + .../main/test-data/assign-quoted-cmdsubst.zsh | 45 + .../main/test-data/assign-semicolon.zsh | 39 + .../main/test-data/assign-subshell.zsh | 37 + .../main/test-data/assign-value-quote1.zsh | 37 + .../main/test-data/assign-value-quote2.zsh | 37 + .../highlighters/main/test-data/assign.zsh | 42 + .../main/test-data/assignment-before-resword1.zsh | 40 + .../main/test-data/assignment-before-resword2.zsh | 40 + .../main/test-data/assignment-before-resword3.zsh | 37 + .../main/test-data/assignment-before-resword4.zsh | 40 + .../main/test-data/assignment-before-resword5.zsh | 38 + .../main/test-data/assignment-quoted.zsh | 37 + .../main/test-data/back-quoted-argument.zsh | 58 + .../main/test-data/back-quoted-open.zsh | 41 + .../main/test-data/backslash-continuation.zsh | 35 + .../main/test-data/backslash-continuation2.zsh | 37 + .../main/test-data/backslash-space.zsh | 39 + .../highlighters/main/test-data/backslash.zsh | 34 + .../main/test-data/bang-assign-array.zsh | 42 + .../main/test-data/bang-assign-scalar.zsh | 38 + .../highlighters/main/test-data/bang-pipeline.zsh | 39 + .../main/test-data/block-assignment-no-command.zsh | 38 + .../highlighters/main/test-data/braces1.zsh | 41 + .../highlighters/main/test-data/braces2.zsh | 41 + .../main/test-data/brackets-matching1.zsh | 38 + .../main/test-data/brackets-matching2.zsh | 38 + .../main/test-data/brackets-mismatch1.zsh | 39 + .../test-data/brackets-mismatch10-if-negative.zsh | 42 + .../main/test-data/brackets-mismatch2.zsh | 39 + .../main/test-data/brackets-mismatch3.zsh | 36 + .../main/test-data/brackets-mismatch4.zsh | 36 + .../main/test-data/brackets-mismatch5.zsh | 37 + .../main/test-data/brackets-mismatch6.zsh | 40 + .../main/test-data/brackets-mismatch7.zsh | 45 + .../test-data/brackets-mismatch8-if-positive.zsh | 53 + .../main/test-data/brackets-mismatch8.zsh | 38 + .../test-data/brackets-mismatch9-if-positive.zsh | 42 + .../test-data/brackets-premature-termination.zsh | 40 + .../highlighters/main/test-data/cdpath-abspath.zsh | 38 + .../main/test-data/cmdpos-elision-partial.zsh | 44 + .../test-data/command-substitution-adjacent.zsh | 45 + .../command-substitution-in-assignment.zsh | 42 + .../test-data/command-substitution-unclosed.zsh | 45 + .../main/test-data/commandseparator.zsh | 38 + .../main/test-data/comment-followed.zsh | 39 + .../main/test-data/comment-leading.zsh | 36 + .../highlighters/main/test-data/comment-off.zsh | 38 + .../highlighters/main/test-data/comments.zsh | 39 + .../main/test-data/commmand-parameter.zsh | 45 + .../highlighters/main/test-data/control-flow.zsh | 57 + .../highlighters/main/test-data/control-flow2.zsh | 40 + .../highlighters/main/test-data/control-flow3.zsh | 39 + .../highlighters/main/test-data/cthulhu.zsh | 70 + .../highlighters/main/test-data/dinbrack1.zsh | 41 + .../highlighters/main/test-data/dirs_blacklist.zsh | 40 + .../highlighters/main/test-data/dollar-dollar.zsh | 39 + .../highlighters/main/test-data/dollar-noise.zsh | 42 + .../highlighters/main/test-data/dollar-paren.zsh | 49 + .../highlighters/main/test-data/dollar-quoted.zsh | 38 + .../highlighters/main/test-data/dollar-quoted2.zsh | 39 + .../highlighters/main/test-data/dollar-quoted3.zsh | 39 + .../main/test-data/double-hyphen-option.zsh | 35 + .../highlighters/main/test-data/double-quoted.zsh | 42 + .../highlighters/main/test-data/double-quoted2.zsh | 39 + .../highlighters/main/test-data/double-quoted3.zsh | 42 + .../highlighters/main/test-data/double-quoted4.zsh | 37 + .../main/test-data/empty-command-newline.zsh | 39 + .../highlighters/main/test-data/empty-command.zsh | 36 + .../highlighters/main/test-data/empty-command2.zsh | 39 + .../highlighters/main/test-data/empty-line.zsh | 36 + .../highlighters/main/test-data/equals1.zsh | 36 + .../highlighters/main/test-data/equals2.zsh | 38 + .../highlighters/main/test-data/equals3.zsh | 36 + .../highlighters/main/test-data/equals4.zsh | 36 + .../main/test-data/escaped-single-quote.zsh | 38 + .../main/test-data/exec-redirection1.zsh | 38 + .../main/test-data/fd-target-not-filename.zsh | 40 + .../main/test-data/function-altsyntax.zsh | 45 + .../main/test-data/function-named1.zsh | 44 + .../main/test-data/function-named2.zsh | 39 + .../highlighters/main/test-data/function.zsh | 42 + .../highlighters/main/test-data/glob.zsh | 41 + .../highlighters/main/test-data/global-alias1.zsh | 38 + .../main/test-data/globs-with-quoting.zsh | 43 + .../highlighters/main/test-data/hashed-command.zsh | 35 + .../test-data/history-double-quoted-escaped.zsh | 38 + .../test-data/history-double-quoted-followed.zsh | 39 + .../main/test-data/history-double-quoted-no.zsh | 37 + .../test-data/history-double-quoted-unescaped.zsh | 38 + .../main/test-data/history-double-quoted-yes.zsh | 38 + .../main/test-data/history-expansion.zsh | 39 + .../main/test-data/history-expansion2.zsh | 34 + .../highlighters/main/test-data/inheritance.zsh | 40 + .../main/test-data/jobsubst-isnt-glob.zsh | 37 + .../main/test-data/jobsubst-isnt-glob2.zsh | 37 + .../highlighters/main/test-data/loop-newline.zsh | 40 + .../highlighters/main/test-data/meta-no-eval1.zsh | 49 + .../highlighters/main/test-data/meta-no-eval2.zsh | 40 + .../main/test-data/multiline-array-assignment1.zsh | 41 + .../main/test-data/multiline-string.zsh | 37 + .../main/test-data/multiline-string2.zsh | 36 + .../main/test-data/multios-negates-globbing.zsh | 39 + .../main/test-data/multios-negates-globbing2.zsh | 38 + .../main/test-data/multiple-quotes.zsh | 42 + .../main/test-data/multiple-redirections.zsh | 46 + .../highlighters/main/test-data/noglob-alias.zsh | 36 + .../highlighters/main/test-data/noglob-always.zsh | 45 + .../highlighters/main/test-data/noglob1.zsh | 38 + .../highlighters/main/test-data/noglob2.zsh | 40 + .../highlighters/main/test-data/noglob3.zsh | 38 + .../highlighters/main/test-data/noglob4.zsh | 45 + .../highlighters/main/test-data/null-exec.zsh | 38 + .../main/test-data/null-exec2-printenv.zsh | 38 + .../main/test-data/number_range-glob.zsh | 42 + .../highlighters/main/test-data/off-by-one.zsh | 40 + .../main/test-data/opt-shwordsplit1.zsh | 40 + .../main/test-data/optimized-cmdsubst-input.zsh | 43 + .../option-dollar-quote-isnt-filename.zsh | 39 + .../main/test-data/option-path_dirs.zsh | 44 + .../main/test-data/option-with-quotes.zsh | 37 + .../main/test-data/order-path-after-dollar.zsh | 38 + .../main/test-data/order-path-before-globbing.zsh | 39 + .../test-data/param-positional-in-array-append.zsh | 39 + .../param-precommand-option-argument1.zsh | 42 + .../param-precommand-option-argument3.zsh | 42 + .../test-data/parameter-elision-command-word.zsh | 36 + .../test-data/parameter-expansion-shwordsplit.zsh | 38 + .../test-data/parameter-expansion-untokenized1.zsh | 38 + .../test-data/parameter-expansion-untokenized2.zsh | 38 + .../highlighters/main/test-data/parameter-star.zsh | 40 + .../main/test-data/parameter-to-global-alias.zsh | 42 + .../parameter-value-contains-command-position1.zsh | 38 + .../parameter-value-contains-command-position2.zsh | 38 + .../highlighters/main/test-data/pasted-quotes.zsh | 38 + .../main/test-data/path-broken-symlink.zsh | 41 + .../main/test-data/path-dollared-word.zsh | 45 + .../main/test-data/path-dollared-word2.zsh | 37 + .../main/test-data/path-dollared-word3.zsh | 40 + .../main/test-data/path-dollared-word3b.zsh | 38 + .../main/test-data/path-dollared-word4.zsh | 36 + .../main/test-data/path-mixed-quoting.zsh | 39 + .../main/test-data/path-separators.zsh | 53 + .../main/test-data/path-separators2.zsh | 40 + .../highlighters/main/test-data/path-space.zsh | 37 + .../main/test-data/path-tilde-home.zsh | 36 + .../main/test-data/path-tilde-home2.zsh | 37 + .../main/test-data/path-tilde-home3.zsh | 36 + .../main/test-data/path-tilde-named.zsh | 39 + .../highlighters/main/test-data/path.zsh | 37 + .../highlighters/main/test-data/path_prefix.zsh | 38 + .../highlighters/main/test-data/path_prefix2.zsh | 39 + .../highlighters/main/test-data/path_prefix3.zsh | 38 + .../test-data/plain-file-in-command-position.zsh | 39 + .../main/test-data/precommand-killing1.zsh | 40 + .../main/test-data/precommand-killing2.zsh | 39 + .../main/test-data/precommand-then-assignment.zsh | 37 + .../main/test-data/precommand-type1.zsh | 61 + .../main/test-data/precommand-type2.zsh | 55 + .../main/test-data/precommand-type3.zsh | 55 + .../main/test-data/precommand-uninstalled.zsh | 44 + .../main/test-data/precommand-unknown-option.zsh | 43 + .../highlighters/main/test-data/precommand.zsh | 36 + .../highlighters/main/test-data/precommand2.zsh | 36 + .../highlighters/main/test-data/precommand3.zsh | 41 + .../highlighters/main/test-data/precommand4.zsh | 39 + .../main/test-data/prefix-redirection.zsh | 42 + .../process-substitution-after-redirection.zsh | 46 + ...cess-substitution-redirection-isnt-globbing.zsh | 41 + .../main/test-data/process-substitution.zsh | 43 + .../main/test-data/process-substitution2.zsh | 51 + .../quoted-command-substitution-empty.zsh | 44 + .../quoted-redirection-in-command-word.zsh | 37 + .../highlighters/main/test-data/rc-quotes.zsh | 39 + .../main/test-data/redirection-all.zsh | 95 + .../main/test-data/redirection-comment.zsh | 38 + .../main/test-data/redirection-from-param.zsh | 40 + .../main/test-data/redirection-in-cmdsubst.zsh | 41 + .../test-data/redirection-inhibits-elision.zsh | 38 + .../main/test-data/redirection-is-not-option.zsh | 38 + .../main/test-data/redirection-special-cases.zsh | 44 + .../highlighters/main/test-data/redirection.zsh | 39 + .../highlighters/main/test-data/redirection2.zsh | 41 + .../highlighters/main/test-data/redirection3.zsh | 42 + .../highlighters/main/test-data/reserved-word.zsh | 38 + .../highlighters/main/test-data/simple-command.zsh | 34 + .../main/test-data/simple-redirection.zsh | 38 + .../highlighters/main/test-data/subshell.zsh | 51 + .../highlighters/main/test-data/sudo-command.zsh | 54 + .../highlighters/main/test-data/sudo-comment.zsh | 39 + .../highlighters/main/test-data/sudo-longopt.zsh | 38 + .../main/test-data/sudo-redirection.zsh | 48 + .../main/test-data/sudo-redirection2.zsh | 41 + .../main/test-data/sudo-redirection3.zsh | 41 + .../main/test-data/tilde-command-word.zsh | 37 + .../main/test-data/time-and-nocorrect1.zsh | 39 + .../main/test-data/time-and-nocorrect2.zsh | 40 + .../highlighters/main/test-data/unbackslash.zsh | 34 + .../main/test-data/unknown-command.zsh | 34 + .../main/test-data/vanilla-newline.zsh | 39 + .../main/test-data/vi-linewise-mode.zsh | 43 + .../highlighters/pattern/README.md | 1 + .../highlighters/pattern/pattern-highlighter.zsh | 60 + .../highlighters/pattern/test-data/rm-rf.zsh | 36 + .../highlighters/regexp/README.md | 1 + .../highlighters/regexp/regexp-highlighter.zsh | 62 + .../highlighters/regexp/test-data/complex.zsh | 37 + .../regexp/test-data/subexpression.zsh | 36 + .../regexp/test-data/word-boundary.zsh | 42 + .../highlighters/root/README.md | 1 + .../highlighters/root/root-highlighter.zsh | 44 + .../images/after1-smaller.png | Bin 0 -> 2517 bytes .../zsh-syntax-highlighting/images/after1.png | Bin 0 -> 5842 bytes .../images/after2-smaller.png | Bin 0 -> 4386 bytes .../zsh-syntax-highlighting/images/after2.png | Bin 0 -> 10228 bytes .../images/after3-smaller.png | Bin 0 -> 1673 bytes .../zsh-syntax-highlighting/images/after3.png | Bin 0 -> 3427 bytes .../images/after4-smaller.png | Bin 0 -> 3224 bytes .../images/before1-smaller.png | Bin 0 -> 1589 bytes .../zsh-syntax-highlighting/images/before1.png | Bin 0 -> 2636 bytes .../images/before2-smaller.png | Bin 0 -> 2605 bytes .../zsh-syntax-highlighting/images/before2.png | Bin 0 -> 2614 bytes .../images/before3-smaller.png | Bin 0 -> 763 bytes .../zsh-syntax-highlighting/images/before3.png | Bin 0 -> 1461 bytes .../images/before4-smaller.png | Bin 0 -> 2987 bytes .../images/preview-smaller.png | Bin 0 -> 5982 bytes .../zsh-syntax-highlighting/images/preview.png | Bin 0 -> 14650 bytes .../zsh/plugins/zsh-syntax-highlighting/release.md | 21 + .../zsh-syntax-highlighting/tests/README.md | 124 ++ .../tests/edit-failed-tests | 40 + .../zsh-syntax-highlighting/tests/generate.zsh | 117 ++ .../tests/tap-colorizer.zsh | 71 + .../zsh-syntax-highlighting/tests/tap-filter | 47 + .../tests/test-highlighting.zsh | 291 +++ .../zsh-syntax-highlighting/tests/test-perfs.zsh | 103 ++ .../zsh-syntax-highlighting/tests/test-zprof.zsh | 78 + .../zsh-syntax-highlighting.plugin.zsh | 2 + .../zsh-syntax-highlighting.zsh | 587 +++++++ dots/zsh/.config/zsh/setup/aliases.zsh | 27 + dots/zsh/.config/zsh/setup/device.zsh | 30 + dots/zsh/.config/zsh/setup/gpg.zsh.j2 | 23 + dots/zsh/.config/zsh/setup/history.zsh | 14 + dots/zsh/.config/zsh/setup/misc.zsh | 11 + dots/zsh/.config/zsh/setup/tools.zsh | 20 + dots/zsh/.hushlogin | 0 dots/zsh/.zshenv | 1 + git/.config/git/rootignore | 7 - git/.gitconfig.j2 | 12 - gpg/.gnupg/common.conf | 1 - gpg/.gnupg/gpg-agent.conf | 2 - home/.pubkey.j2 | 1 - home/Documents/pubkey.asc | 0 home/Pictures/pfp/bubblegum.png | Bin 443498 -> 0 bytes home/Pictures/pfp/eejypenguin.png | Bin 175119 -> 0 bytes home/Pictures/pfp/gus.jpg | Bin 31578 -> 0 bytes home/Pictures/pfp/mefr.png | Bin 1265644 -> 0 bytes home/Pictures/pfp/shoppingpenguin.png | Bin 277623 -> 0 bytes home/Pictures/wallpapers/beach.jpg | Bin 169847 -> 0 bytes home/Pictures/wallpapers/flat-books.png | Bin 1133976 -> 0 bytes home/Pictures/wallpapers/ghibli-road.png | Bin 313297 -> 0 bytes home/Pictures/wallpapers/penguins-hugging.jpg | Bin 519955 -> 0 bytes home/Pictures/wallpapers/rose.png | Bin 1508642 -> 0 bytes home/Pictures/wallpapers/snowy-light-trees.jpg | Bin 1283226 -> 0 bytes home/Pictures/wallpapers/sunrise-mountains.webp | Bin 62148 -> 0 bytes home/Pictures/wallpapers/table.png | Bin 608017 -> 0 bytes home/Pictures/wallpapers/wall.jpg | Bin 275592 -> 0 bytes home/scripts/greet.sh | 29 - home/scripts/log.sh | 32 - home/scripts/pinentry.sh | 20 - home/scripts/platform.sh | 11 - home/scripts/system_name.sh | 14 - home/scripts/theme.sh | 22 - kawaii_logger.py | 10 +- main.py | 255 +++ mise/.config/mise/config.toml | 5 - nvim/.config/nvim/init.lua | 9 - nvim/.config/nvim/lua/.gitkeep | 0 nvim/.config/nvim/lua/config/lazy.lua | 35 - nvim/.config/nvim/lua/config/options.lua | 39 - nvim/.config/nvim/lua/plugins/comment.lua | 6 - nvim/.config/nvim/lua/plugins/lualine.lua | 34 - nvim/.config/nvim/lua/plugins/telescope.lua | 25 - nvim/.config/nvim/lua/plugins/theme.lua | 9 - nvim/.config/nvim/lua/plugins/whichkey.lua | 6 - ssh/.ssh/config | 16 - ssh/.ssh/config.d/.gitkeep | 0 starship/.config/starship.toml | 53 - theme/.config/theme/alacritty.toml | 4 - tmux/.config/tmux/tmux.conf | 26 - tmux/.tmux/plugins/tpm/.gitattributes | 9 - tmux/.tmux/plugins/tpm/.gitignore | 4 - tmux/.tmux/plugins/tpm/.gitmodules | 3 - tmux/.tmux/plugins/tpm/.travis.yml | 19 - tmux/.tmux/plugins/tpm/CHANGELOG.md | 86 - tmux/.tmux/plugins/tpm/HOW_TO_PLUGIN.md | 2 - tmux/.tmux/plugins/tpm/LICENSE.md | 20 - tmux/.tmux/plugins/tpm/README.md | 101 -- tmux/.tmux/plugins/tpm/bin/clean_plugins | 14 - tmux/.tmux/plugins/tpm/bin/install_plugins | 14 - tmux/.tmux/plugins/tpm/bin/update_plugins | 24 - tmux/.tmux/plugins/tpm/bindings/clean_plugins | 19 - tmux/.tmux/plugins/tpm/bindings/install_plugins | 19 - tmux/.tmux/plugins/tpm/bindings/update_plugins | 49 - .../plugins/tpm/docs/automatic_tpm_installation.md | 12 - .../tpm/docs/changing_plugins_install_dir.md | 16 - .../.tmux/plugins/tpm/docs/how_to_create_plugin.md | 108 -- .../tpm/docs/managing_plugins_via_cmd_line.md | 36 - tmux/.tmux/plugins/tpm/docs/tpm_not_working.md | 102 -- .../plugins/tpm/scripts/check_tmux_version.sh | 78 - tmux/.tmux/plugins/tpm/scripts/clean_plugins.sh | 41 - .../tpm/scripts/helpers/plugin_functions.sh | 104 -- .../tpm/scripts/helpers/shell_echo_functions.sh | 7 - .../tpm/scripts/helpers/tmux_echo_functions.sh | 28 - .../plugins/tpm/scripts/helpers/tmux_utils.sh | 6 - tmux/.tmux/plugins/tpm/scripts/helpers/utility.sh | 17 - tmux/.tmux/plugins/tpm/scripts/install_plugins.sh | 75 - tmux/.tmux/plugins/tpm/scripts/source_plugins.sh | 42 - tmux/.tmux/plugins/tpm/scripts/update_plugin.sh | 78 - .../tpm/scripts/update_plugin_prompt_handler.sh | 18 - tmux/.tmux/plugins/tpm/scripts/variables.sh | 13 - .../tpm/tests/expect_failed_plugin_download | 36 - .../tpm/tests/expect_successful_clean_plugins | 35 - .../expect_successful_multiple_plugins_download | 44 - .../tpm/tests/expect_successful_plugin_download | 50 - .../expect_successful_update_of_a_single_plugin | 55 - .../tests/expect_successful_update_of_all_plugins | 59 - tmux/.tmux/plugins/tpm/tests/helpers/tpm.sh | 13 - tmux/.tmux/plugins/tpm/tests/test_plugin_clean.sh | 67 - .../plugins/tpm/tests/test_plugin_installation.sh | 284 --- .../tpm/tests/test_plugin_installation_legacy.sh | 100 -- .../plugins/tpm/tests/test_plugin_sourcing.sh | 78 - tmux/.tmux/plugins/tpm/tests/test_plugin_update.sh | 60 - tmux/.tmux/plugins/tpm/tpm | 81 - zed/.config/zed/keymap.json | 14 - zed/.config/zed/settings.json.j2 | 280 --- zsh/.config/zsh/.zshrc | 38 - zsh/.config/zsh/greetings/00_art/another_penguin | 15 - zsh/.config/zsh/greetings/00_art/butterfly | 9 - zsh/.config/zsh/greetings/00_art/eebjy | 9 - zsh/.config/zsh/greetings/00_art/heart | 8 - zsh/.config/zsh/greetings/00_art/penguin | 16 - zsh/.config/zsh/greetings/00_art/puppy | 10 - zsh/.config/zsh/greetings/00_art/totoro | 13 - .../zsh/greetings/01_prompts/aww_motivation_lost | 1 - zsh/.config/zsh/greetings/01_prompts/bashful | 1 - zsh/.config/zsh/greetings/01_prompts/bby | 1 - zsh/.config/zsh/greetings/01_prompts/bot | 1 - zsh/.config/zsh/greetings/01_prompts/break_stuff | 1 - .../zsh/greetings/01_prompts/compiling_feelings | 1 - zsh/.config/zsh/greetings/01_prompts/crashin | 1 - zsh/.config/zsh/greetings/01_prompts/desu | 1 - zsh/.config/zsh/greetings/01_prompts/hacker_friend | 1 - zsh/.config/zsh/greetings/01_prompts/hai | 1 - .../zsh/greetings/01_prompts/input_output_love | 1 - zsh/.config/zsh/greetings/01_prompts/love_letter | 1 - zsh/.config/zsh/greetings/01_prompts/online | 1 - zsh/.config/zsh/greetings/01_prompts/production | 1 - zsh/.config/zsh/greetings/01_prompts/sammich | 1 - zsh/.config/zsh/greetings/01_prompts/shell_yeah | 1 - zsh/.config/zsh/greetings/01_prompts/time_to_hack | 1 - zsh/.config/zsh/greetings/01_prompts/typing | 1 - zsh/.config/zsh/greetings/01_prompts/yeehaw | 1 - zsh/.config/zsh/linux/init.zsh | 6 - zsh/.config/zsh/osx/armin.zsh | 3 - zsh/.config/zsh/osx/bcd074b37296.zsh | 1 - zsh/.config/zsh/osx/init.zsh | 13 - zsh/.config/zsh/osx/work.zsh | 29 - zsh/.config/zsh/plugins/zsh-autosuggestions | 1 - zsh/.config/zsh/plugins/zsh-syntax-highlighting | 1 - zsh/.config/zsh/setup/aliases.zsh | 27 - zsh/.config/zsh/setup/device.zsh | 30 - zsh/.config/zsh/setup/gpg.zsh.j2 | 23 - zsh/.config/zsh/setup/history.zsh | 14 - zsh/.config/zsh/setup/misc.zsh | 11 - zsh/.config/zsh/setup/tools.zsh | 20 - zsh/.hushlogin | 0 zsh/.zshenv | 1 - 984 files changed, 29967 insertions(+), 3669 deletions(-) delete mode 100644 aerospace/.aerospace.toml delete mode 160000 alacritty/.config/alacritty/alacritty-theme delete mode 100644 alacritty/.config/alacritty/alacritty.toml delete mode 100644 alacritty/.config/alacritty/theme.toml delete mode 100644 context.json create mode 100644 contexts.json delete mode 100755 dots.py create mode 100644 dots/aerospace/.aerospace.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/LICENSE create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/README.md create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/Cobalt2.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/acme.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/afterglow.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/alabaster.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/alabaster_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/alacritty_0_12.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/argonaut.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/ashes_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/ashes_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/aura.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/autumn.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_mirage.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/baitong.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/base16_default_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/blood_moon.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/bluish.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/breeze.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/campbell.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/carbonfox.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_frappe.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_latte.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_macchiato.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_mocha.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/challenger_deep.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/chicago95.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/citylights.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/cyber_punk_neon.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/dark_pastels.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/dark_plus.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/dark_pride.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/dawnfox.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/dayfox.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/deep_space.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/doom_one.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/dracula.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/dracula_plus.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/duskfox.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/enfocado_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/enfocado_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/everforest_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/everforest_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/falcon.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/flat_remix.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/flexoki.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_colorblind.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_default.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_dimmed.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_high_contrast.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_tritanopia.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_colorblind.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_default.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_high_contrast.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_tritanopia.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/gnome_terminal.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/google.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/gotham.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/gruber_darker.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_hard_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_hard_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_medium_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_medium_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/hardhacker.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/hatsunemiku.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/high_contrast.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/horizon_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/hyper.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/inferno.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/iris.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/iterm.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/kanagawa_dragon.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/kanagawa_wave.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/kimbie_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/kimbie_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/konsole_linux.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/low_contrast.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/mariana.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/marine_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/material_theme.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/material_theme_mod.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/meliora.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/miasma.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/midnight_haze.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/monokai.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/monokai_charcoal.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/monokai_pro.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/moonfly.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/moonlight_ii_vscode.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/msx.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/night_owl.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/night_owlish_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/nightfly.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/nightfox.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/noctis_lux.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/nord.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/nord_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/nordfox.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/nordic.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/oceanic_next.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/omni.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/one_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/one_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/oxocarbon.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/palenight.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/papercolor_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/papercolor_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/papertheme.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/pastel_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/pencil_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/pencil_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/rainbow.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/remedy_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/rigel.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine_dawn.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine_moon.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/seashells.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/selenized_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/selenized_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/seoul256-light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/smoooooth.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/snazzy.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_light.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_osaka.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/sonokai.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/spacegray.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/synthwave_84.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/taerminal.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/tango_dark.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/tender.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/terafox.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/terminal_app.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/thelovelace.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night_enhanced.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night_storm.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/tomorrow_night.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/tomorrow_night_bright.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/ubuntu.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/vesper.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/vscode.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/wombat.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/xterm.png create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/images/zenburn.png create mode 100755 dots/alacritty/.config/alacritty/alacritty-theme/print_colors.sh create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/Cobalt2.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/Mariana.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/acme.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/afterglow.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/alabaster.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/alabaster_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/alacritty_0_12.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/argonaut.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/ashes_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/ashes_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/aura.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/autumn.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_mirage.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/baitong.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/base16_default_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/blood_moon.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/bluish.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/breeze.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/campbell.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/carbonfox.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_frappe.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_latte.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_macchiato.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_mocha.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/challenger_deep.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/chicago95.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/citylights.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/cyber_punk_neon.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_pastels.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_plus.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_pride.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/dawnfox.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/dayfox.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/deep_space.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/doom_one.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/dracula.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/dracula_plus.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/duskfox.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/enfocado_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/enfocado_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/everforest_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/everforest_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/falcon.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/flat_remix.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/flexoki.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_colorblind.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_default.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_dimmed.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_high_contrast.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_tritanopia.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_colorblind.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_default.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_high_contrast.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_tritanopia.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/gnome_terminal.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/google.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/gotham.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/gruber_darker.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_hard_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_hard_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_medium_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_medium_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/hardhacker.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/hatsunemiku.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/high_contrast.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/horizon_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/hyper.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/inferno.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/iris.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/iterm.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/kanagawa_dragon.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/kanagawa_wave.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/kimbie_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/kimbie_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/konsole_linux.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/low_contrast.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/marine_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/material_theme.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/material_theme_mod.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/meliora.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/miasma.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/midnight_haze.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai_charcoal.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai_pro.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/moonfly.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/moonlight_ii_vscode.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/msx.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/night_owl.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/night_owlish_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/nightfly.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/nightfox.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/noctis_lux.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/nord.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/nord_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/nordfox.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/nordic.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/oceanic_next.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/omni.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/one_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/one_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/oxocarbon.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/palenight.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/papercolor_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/papercolor_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/papertheme.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/pastel_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/pencil_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/pencil_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/rainbow.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/remedy_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/rigel.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine_dawn.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine_moon.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/seashells.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/selenized_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/selenized_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/seoul256-light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/smoooooth.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/snazzy.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_light.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_osaka.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/sonokai.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/spacegray.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/synthwave_84.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/taerminal.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/tango_dark.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/tender.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/terafox.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/terminal_app.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/thelovelace.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night_enhanced.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night_storm.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/tomorrow_night.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/tomorrow_night_bright.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/ubuntu.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/vesper.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/vscode.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/wombat.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/xterm.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty-theme/themes/zenburn.toml create mode 100644 dots/alacritty/.config/alacritty/alacritty.toml create mode 100644 dots/alacritty/.config/alacritty/theme.toml create mode 100644 dots/git/.config/git/rootignore create mode 100644 dots/git/.gitconfig.j2 create mode 100755 dots/gpg/.gnupg/common.conf create mode 100755 dots/gpg/.gnupg/gpg-agent.conf create mode 100644 dots/home/.pubkey.j2 create mode 100644 dots/home/Documents/pubkey.asc create mode 100644 dots/home/Pictures/pfp/bubblegum.png create mode 100644 dots/home/Pictures/pfp/eejypenguin.png create mode 100644 dots/home/Pictures/pfp/gus.jpg create mode 100644 dots/home/Pictures/pfp/mefr.png create mode 100644 dots/home/Pictures/pfp/shoppingpenguin.png create mode 100644 dots/home/Pictures/wallpapers/beach.jpg create mode 100644 dots/home/Pictures/wallpapers/flat-books.png create mode 100644 dots/home/Pictures/wallpapers/ghibli-road.png create mode 100644 dots/home/Pictures/wallpapers/penguins-hugging.jpg create mode 100644 dots/home/Pictures/wallpapers/rose.png create mode 100644 dots/home/Pictures/wallpapers/snowy-light-trees.jpg create mode 100644 dots/home/Pictures/wallpapers/sunrise-mountains.webp create mode 100644 dots/home/Pictures/wallpapers/table.png create mode 100644 dots/home/Pictures/wallpapers/wall.jpg create mode 100755 dots/home/scripts/greet.sh create mode 100755 dots/home/scripts/log.sh create mode 100755 dots/home/scripts/pinentry.sh create mode 100755 dots/home/scripts/platform.sh create mode 100755 dots/home/scripts/system_name.sh create mode 100755 dots/home/scripts/theme.sh create mode 100644 dots/mise/.config/mise/config.toml create mode 100644 dots/nvim/.config/nvim/init.lua create mode 100644 dots/nvim/.config/nvim/lua/.gitkeep create mode 100644 dots/nvim/.config/nvim/lua/config/lazy.lua create mode 100644 dots/nvim/.config/nvim/lua/config/options.lua create mode 100644 dots/nvim/.config/nvim/lua/plugins/comment.lua create mode 100644 dots/nvim/.config/nvim/lua/plugins/lualine.lua create mode 100644 dots/nvim/.config/nvim/lua/plugins/telescope.lua create mode 100644 dots/nvim/.config/nvim/lua/plugins/theme.lua create mode 100644 dots/nvim/.config/nvim/lua/plugins/whichkey.lua create mode 100644 dots/ssh/.ssh/config create mode 100644 dots/ssh/.ssh/config.d/.gitkeep create mode 100644 dots/starship/.config/starship.toml create mode 100644 dots/theme/.config/theme/alacritty.toml create mode 100644 dots/tmux/.config/tmux/tmux.conf create mode 100644 dots/tmux/.tmux/plugins/tpm/.gitattributes create mode 100644 dots/tmux/.tmux/plugins/tpm/.gitignore create mode 100644 dots/tmux/.tmux/plugins/tpm/.gitmodules create mode 100644 dots/tmux/.tmux/plugins/tpm/.travis.yml create mode 100644 dots/tmux/.tmux/plugins/tpm/CHANGELOG.md create mode 100644 dots/tmux/.tmux/plugins/tpm/HOW_TO_PLUGIN.md create mode 100644 dots/tmux/.tmux/plugins/tpm/LICENSE.md create mode 100644 dots/tmux/.tmux/plugins/tpm/README.md create mode 100755 dots/tmux/.tmux/plugins/tpm/bin/clean_plugins create mode 100755 dots/tmux/.tmux/plugins/tpm/bin/install_plugins create mode 100755 dots/tmux/.tmux/plugins/tpm/bin/update_plugins create mode 100755 dots/tmux/.tmux/plugins/tpm/bindings/clean_plugins create mode 100755 dots/tmux/.tmux/plugins/tpm/bindings/install_plugins create mode 100755 dots/tmux/.tmux/plugins/tpm/bindings/update_plugins create mode 100644 dots/tmux/.tmux/plugins/tpm/docs/automatic_tpm_installation.md create mode 100644 dots/tmux/.tmux/plugins/tpm/docs/changing_plugins_install_dir.md create mode 100644 dots/tmux/.tmux/plugins/tpm/docs/how_to_create_plugin.md create mode 100644 dots/tmux/.tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md create mode 100644 dots/tmux/.tmux/plugins/tpm/docs/tpm_not_working.md create mode 100755 dots/tmux/.tmux/plugins/tpm/scripts/check_tmux_version.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/scripts/clean_plugins.sh create mode 100644 dots/tmux/.tmux/plugins/tpm/scripts/helpers/plugin_functions.sh create mode 100644 dots/tmux/.tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh create mode 100644 dots/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh create mode 100644 dots/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_utils.sh create mode 100644 dots/tmux/.tmux/plugins/tpm/scripts/helpers/utility.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/scripts/install_plugins.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/scripts/source_plugins.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/scripts/update_plugin.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh create mode 100644 dots/tmux/.tmux/plugins/tpm/scripts/variables.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/expect_failed_plugin_download create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/expect_successful_clean_plugins create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/expect_successful_plugin_download create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_a_single_plugin create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_all_plugins create mode 100644 dots/tmux/.tmux/plugins/tpm/tests/helpers/tpm.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/test_plugin_clean.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/test_plugin_installation.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/test_plugin_installation_legacy.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/test_plugin_sourcing.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/tests/test_plugin_update.sh create mode 100755 dots/tmux/.tmux/plugins/tpm/tpm create mode 100644 dots/zed/.config/zed/keymap.json create mode 100644 dots/zed/.config/zed/settings.json.j2 create mode 100644 dots/zsh/.config/zsh/.zshrc create mode 100644 dots/zsh/.config/zsh/greetings/00_art/another_penguin create mode 100644 dots/zsh/.config/zsh/greetings/00_art/butterfly create mode 100644 dots/zsh/.config/zsh/greetings/00_art/eebjy create mode 100644 dots/zsh/.config/zsh/greetings/00_art/heart create mode 100644 dots/zsh/.config/zsh/greetings/00_art/penguin create mode 100644 dots/zsh/.config/zsh/greetings/00_art/puppy create mode 100644 dots/zsh/.config/zsh/greetings/00_art/totoro create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/aww_motivation_lost create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/bashful create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/bby create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/bot create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/break_stuff create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/compiling_feelings create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/crashin create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/desu create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/hacker_friend create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/hai create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/input_output_love create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/love_letter create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/online create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/production create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/sammich create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/shell_yeah create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/time_to_hack create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/typing create mode 100644 dots/zsh/.config/zsh/greetings/01_prompts/yeehaw create mode 100755 dots/zsh/.config/zsh/linux/init.zsh create mode 100755 dots/zsh/.config/zsh/osx/armin.zsh create mode 120000 dots/zsh/.config/zsh/osx/bcd074b37296.zsh create mode 100755 dots/zsh/.config/zsh/osx/init.zsh create mode 100755 dots/zsh/.config/zsh/osx/work.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.editorconfig create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/ISSUE_TEMPLATE/bug-report.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/ISSUE_TEMPLATE/feature_request.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/workflows/integration.yml create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.gitignore create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.rspec create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.rubocop.yml create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.ruby-version create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/CHANGELOG.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/DESCRIPTION create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Dockerfile create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Gemfile create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Gemfile.lock create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/INSTALL.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/LICENSE create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Makefile create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/README.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/URL create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/VERSION create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/ZSH_VERSIONS create mode 100755 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/install_test_zsh.sh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/async_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/auto_cd_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/bracketed_paste_magic_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/client_zpty_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/glob_subst_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/rebound_bracket_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/vi_mode_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/wrapped_widget_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/zle_input_stack_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/kill_ring_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/line_init_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/multi_line_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/buffer_max_size_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/highlight_style_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/original_widget_prefix_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/strategy_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/widget_lists_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/spec_helper.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/completion_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/history_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/match_prev_cmd_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/special_characters_helper.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/terminal_session.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/disable_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/enable_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/fetch_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/toggle_spec.rb create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/async.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/bind.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/config.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/fetch.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/highlight.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/start.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/completion.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/history.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/match_prev_cmd.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/util.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/widgets.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.editorconfig create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.gitattributes create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.github/workflows/test.yml create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.gitignore create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.revision-hash create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.version create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/COPYING.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/HACKING.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/INSTALL.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/Makefile create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/README.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/changelog.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/brackets.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/cursor.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/line.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/main.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/pattern.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/regexp.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/root.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/README.md create mode 120000 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/README.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/brackets-highlighter.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/cursor-matchingbracket-line-finish.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/cursor-matchingbracket.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/empty-styles.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/loop-styles.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/mismatch-patentheses.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/near-quotes.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/nested-parentheses.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/only-error.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/quoted-patentheses.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/simple-parentheses.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/unclosed-patentheses.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/unclosed-patentheses2.zsh create mode 120000 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/cursor/README.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/cursor/cursor-highlighter.zsh create mode 120000 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/line/README.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/line/line-highlighter.zsh create mode 120000 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/README.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/main-highlighter.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position1b.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position3b.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position4.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position5.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-assignment1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-basic.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-brackets.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-command-substitution.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-comment1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-comment2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-complex.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-empty.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-eponymous1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-eponymous2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-in-cmdsubst.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-loop.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-loop2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-nested-precommand.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-nested.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-parameter.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument4.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-quoted.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-redirect.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse4.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse5.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-self.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-self2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-to-dir.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-to-dir1b.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-unknown-token1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-unknown-token2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/anonymous-function.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arg0-colon.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith-cmdsubst-mess.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-command-substitution.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-doubled-parens.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-empty.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-evaluation.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-hist-expn.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-invalid-chars.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-multiplication.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-nested.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-quoted.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-unclosed.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-unfinished.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-append.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-argv.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-invalid-command.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-not-array.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-not-array2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-quoted-cmdsubst.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-semicolon.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-subshell.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-value-quote1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-value-quote2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword4.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword5.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-quoted.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/back-quoted-argument.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/back-quoted-open.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-continuation.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-continuation2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-space.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-assign-array.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-assign-scalar.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-pipeline.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/block-assignment-no-command.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/braces1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/braces2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-matching1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-matching2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch10-if-negative.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch4.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch5.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch6.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch7.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch8-if-positive.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch8.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch9-if-positive.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-premature-termination.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cdpath-abspath.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cmdpos-elision-partial.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-adjacent.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-in-assignment.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-unclosed.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/commandseparator.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-followed.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-leading.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-off.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comments.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/commmand-parameter.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cthulhu.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dinbrack1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dirs_blacklist.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-dollar.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-noise.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-paren.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-hyphen-option.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted4.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command-newline.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-line.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals4.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/escaped-single-quote.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/exec-redirection1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/fd-target-not-filename.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-altsyntax.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-named1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-named2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/glob.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/global-alias1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/globs-with-quoting.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/hashed-command.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-escaped.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-followed.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-no.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-unescaped.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-yes.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-expansion.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-expansion2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/inheritance.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/jobsubst-isnt-glob.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/jobsubst-isnt-glob2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/loop-newline.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/meta-no-eval1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/meta-no-eval2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-array-assignment1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-string.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-string2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multios-negates-globbing.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multios-negates-globbing2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiple-quotes.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiple-redirections.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob-alias.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob-always.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob4.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/null-exec.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/null-exec2-printenv.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/number_range-glob.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/off-by-one.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/opt-shwordsplit1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/optimized-cmdsubst-input.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-dollar-quote-isnt-filename.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-path_dirs.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-with-quotes.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/order-path-after-dollar.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/order-path-before-globbing.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-positional-in-array-append.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-precommand-option-argument1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-precommand-option-argument3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-elision-command-word.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-shwordsplit.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-untokenized1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-untokenized2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-star.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-to-global-alias.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-value-contains-command-position1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-value-contains-command-position2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/pasted-quotes.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-broken-symlink.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word3b.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word4.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-mixed-quoting.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-separators.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-separators2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-space.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-named.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/plain-file-in-command-position.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-killing1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-killing2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-then-assignment.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-uninstalled.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-unknown-option.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand4.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/prefix-redirection.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/process-substitution-after-redirection.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/process-substitution-redirection-isnt-globbing.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/process-substitution.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/process-substitution2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/quoted-command-substitution-empty.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/quoted-redirection-in-command-word.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/rc-quotes.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-all.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-comment.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-from-param.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-in-cmdsubst.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-inhibits-elision.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-is-not-option.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-special-cases.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/reserved-word.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/simple-command.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/simple-redirection.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/subshell.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-command.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-comment.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-longopt.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection3.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/tilde-command-word.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/time-and-nocorrect1.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/time-and-nocorrect2.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/unbackslash.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/unknown-command.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/vanilla-newline.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/vi-linewise-mode.zsh create mode 120000 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/README.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/pattern-highlighter.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/test-data/rm-rf.zsh create mode 120000 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/README.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/regexp-highlighter.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/complex.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/subexpression.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/word-boundary.zsh create mode 120000 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/root/README.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/root/root-highlighter.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after1-smaller.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after1.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after2-smaller.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after2.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after3-smaller.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after3.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after4-smaller.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before1-smaller.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before1.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before2-smaller.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before2.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before3-smaller.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before3.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before4-smaller.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/preview-smaller.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/preview.png create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/release.md create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/README.md create mode 100755 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/edit-failed-tests create mode 100755 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/generate.zsh create mode 100755 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/tap-colorizer.zsh create mode 100755 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/tap-filter create mode 100755 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-highlighting.zsh create mode 100755 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-perfs.zsh create mode 100755 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-zprof.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh create mode 100644 dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh create mode 100755 dots/zsh/.config/zsh/setup/aliases.zsh create mode 100755 dots/zsh/.config/zsh/setup/device.zsh create mode 100755 dots/zsh/.config/zsh/setup/gpg.zsh.j2 create mode 100755 dots/zsh/.config/zsh/setup/history.zsh create mode 100755 dots/zsh/.config/zsh/setup/misc.zsh create mode 100755 dots/zsh/.config/zsh/setup/tools.zsh create mode 100644 dots/zsh/.hushlogin create mode 100644 dots/zsh/.zshenv delete mode 100644 git/.config/git/rootignore delete mode 100644 git/.gitconfig.j2 delete mode 100755 gpg/.gnupg/common.conf delete mode 100755 gpg/.gnupg/gpg-agent.conf delete mode 100644 home/.pubkey.j2 delete mode 100644 home/Documents/pubkey.asc delete mode 100644 home/Pictures/pfp/bubblegum.png delete mode 100644 home/Pictures/pfp/eejypenguin.png delete mode 100644 home/Pictures/pfp/gus.jpg delete mode 100644 home/Pictures/pfp/mefr.png delete mode 100644 home/Pictures/pfp/shoppingpenguin.png delete mode 100644 home/Pictures/wallpapers/beach.jpg delete mode 100644 home/Pictures/wallpapers/flat-books.png delete mode 100644 home/Pictures/wallpapers/ghibli-road.png delete mode 100644 home/Pictures/wallpapers/penguins-hugging.jpg delete mode 100644 home/Pictures/wallpapers/rose.png delete mode 100644 home/Pictures/wallpapers/snowy-light-trees.jpg delete mode 100644 home/Pictures/wallpapers/sunrise-mountains.webp delete mode 100644 home/Pictures/wallpapers/table.png delete mode 100644 home/Pictures/wallpapers/wall.jpg delete mode 100755 home/scripts/greet.sh delete mode 100755 home/scripts/log.sh delete mode 100755 home/scripts/pinentry.sh delete mode 100755 home/scripts/platform.sh delete mode 100755 home/scripts/system_name.sh delete mode 100755 home/scripts/theme.sh create mode 100755 main.py delete mode 100644 mise/.config/mise/config.toml delete mode 100644 nvim/.config/nvim/init.lua delete mode 100644 nvim/.config/nvim/lua/.gitkeep delete mode 100644 nvim/.config/nvim/lua/config/lazy.lua delete mode 100644 nvim/.config/nvim/lua/config/options.lua delete mode 100644 nvim/.config/nvim/lua/plugins/comment.lua delete mode 100644 nvim/.config/nvim/lua/plugins/lualine.lua delete mode 100644 nvim/.config/nvim/lua/plugins/telescope.lua delete mode 100644 nvim/.config/nvim/lua/plugins/theme.lua delete mode 100644 nvim/.config/nvim/lua/plugins/whichkey.lua delete mode 100644 ssh/.ssh/config delete mode 100644 ssh/.ssh/config.d/.gitkeep delete mode 100644 starship/.config/starship.toml delete mode 100644 theme/.config/theme/alacritty.toml delete mode 100644 tmux/.config/tmux/tmux.conf delete mode 100644 tmux/.tmux/plugins/tpm/.gitattributes delete mode 100644 tmux/.tmux/plugins/tpm/.gitignore delete mode 100644 tmux/.tmux/plugins/tpm/.gitmodules delete mode 100644 tmux/.tmux/plugins/tpm/.travis.yml delete mode 100644 tmux/.tmux/plugins/tpm/CHANGELOG.md delete mode 100644 tmux/.tmux/plugins/tpm/HOW_TO_PLUGIN.md delete mode 100644 tmux/.tmux/plugins/tpm/LICENSE.md delete mode 100644 tmux/.tmux/plugins/tpm/README.md delete mode 100755 tmux/.tmux/plugins/tpm/bin/clean_plugins delete mode 100755 tmux/.tmux/plugins/tpm/bin/install_plugins delete mode 100755 tmux/.tmux/plugins/tpm/bin/update_plugins delete mode 100755 tmux/.tmux/plugins/tpm/bindings/clean_plugins delete mode 100755 tmux/.tmux/plugins/tpm/bindings/install_plugins delete mode 100755 tmux/.tmux/plugins/tpm/bindings/update_plugins delete mode 100644 tmux/.tmux/plugins/tpm/docs/automatic_tpm_installation.md delete mode 100644 tmux/.tmux/plugins/tpm/docs/changing_plugins_install_dir.md delete mode 100644 tmux/.tmux/plugins/tpm/docs/how_to_create_plugin.md delete mode 100644 tmux/.tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md delete mode 100644 tmux/.tmux/plugins/tpm/docs/tpm_not_working.md delete mode 100755 tmux/.tmux/plugins/tpm/scripts/check_tmux_version.sh delete mode 100755 tmux/.tmux/plugins/tpm/scripts/clean_plugins.sh delete mode 100644 tmux/.tmux/plugins/tpm/scripts/helpers/plugin_functions.sh delete mode 100644 tmux/.tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh delete mode 100644 tmux/.tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh delete mode 100644 tmux/.tmux/plugins/tpm/scripts/helpers/tmux_utils.sh delete mode 100644 tmux/.tmux/plugins/tpm/scripts/helpers/utility.sh delete mode 100755 tmux/.tmux/plugins/tpm/scripts/install_plugins.sh delete mode 100755 tmux/.tmux/plugins/tpm/scripts/source_plugins.sh delete mode 100755 tmux/.tmux/plugins/tpm/scripts/update_plugin.sh delete mode 100755 tmux/.tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh delete mode 100644 tmux/.tmux/plugins/tpm/scripts/variables.sh delete mode 100755 tmux/.tmux/plugins/tpm/tests/expect_failed_plugin_download delete mode 100755 tmux/.tmux/plugins/tpm/tests/expect_successful_clean_plugins delete mode 100755 tmux/.tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download delete mode 100755 tmux/.tmux/plugins/tpm/tests/expect_successful_plugin_download delete mode 100755 tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_a_single_plugin delete mode 100755 tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_all_plugins delete mode 100644 tmux/.tmux/plugins/tpm/tests/helpers/tpm.sh delete mode 100755 tmux/.tmux/plugins/tpm/tests/test_plugin_clean.sh delete mode 100755 tmux/.tmux/plugins/tpm/tests/test_plugin_installation.sh delete mode 100755 tmux/.tmux/plugins/tpm/tests/test_plugin_installation_legacy.sh delete mode 100755 tmux/.tmux/plugins/tpm/tests/test_plugin_sourcing.sh delete mode 100755 tmux/.tmux/plugins/tpm/tests/test_plugin_update.sh delete mode 100755 tmux/.tmux/plugins/tpm/tpm delete mode 100644 zed/.config/zed/keymap.json delete mode 100644 zed/.config/zed/settings.json.j2 delete mode 100644 zsh/.config/zsh/.zshrc delete mode 100644 zsh/.config/zsh/greetings/00_art/another_penguin delete mode 100644 zsh/.config/zsh/greetings/00_art/butterfly delete mode 100644 zsh/.config/zsh/greetings/00_art/eebjy delete mode 100644 zsh/.config/zsh/greetings/00_art/heart delete mode 100644 zsh/.config/zsh/greetings/00_art/penguin delete mode 100644 zsh/.config/zsh/greetings/00_art/puppy delete mode 100644 zsh/.config/zsh/greetings/00_art/totoro delete mode 100644 zsh/.config/zsh/greetings/01_prompts/aww_motivation_lost delete mode 100644 zsh/.config/zsh/greetings/01_prompts/bashful delete mode 100644 zsh/.config/zsh/greetings/01_prompts/bby delete mode 100644 zsh/.config/zsh/greetings/01_prompts/bot delete mode 100644 zsh/.config/zsh/greetings/01_prompts/break_stuff delete mode 100644 zsh/.config/zsh/greetings/01_prompts/compiling_feelings delete mode 100644 zsh/.config/zsh/greetings/01_prompts/crashin delete mode 100644 zsh/.config/zsh/greetings/01_prompts/desu delete mode 100644 zsh/.config/zsh/greetings/01_prompts/hacker_friend delete mode 100644 zsh/.config/zsh/greetings/01_prompts/hai delete mode 100644 zsh/.config/zsh/greetings/01_prompts/input_output_love delete mode 100644 zsh/.config/zsh/greetings/01_prompts/love_letter delete mode 100644 zsh/.config/zsh/greetings/01_prompts/online delete mode 100644 zsh/.config/zsh/greetings/01_prompts/production delete mode 100644 zsh/.config/zsh/greetings/01_prompts/sammich delete mode 100644 zsh/.config/zsh/greetings/01_prompts/shell_yeah delete mode 100644 zsh/.config/zsh/greetings/01_prompts/time_to_hack delete mode 100644 zsh/.config/zsh/greetings/01_prompts/typing delete mode 100644 zsh/.config/zsh/greetings/01_prompts/yeehaw delete mode 100755 zsh/.config/zsh/linux/init.zsh delete mode 100755 zsh/.config/zsh/osx/armin.zsh delete mode 120000 zsh/.config/zsh/osx/bcd074b37296.zsh delete mode 100755 zsh/.config/zsh/osx/init.zsh delete mode 100755 zsh/.config/zsh/osx/work.zsh delete mode 160000 zsh/.config/zsh/plugins/zsh-autosuggestions delete mode 160000 zsh/.config/zsh/plugins/zsh-syntax-highlighting delete mode 100755 zsh/.config/zsh/setup/aliases.zsh delete mode 100755 zsh/.config/zsh/setup/device.zsh delete mode 100755 zsh/.config/zsh/setup/gpg.zsh.j2 delete mode 100755 zsh/.config/zsh/setup/history.zsh delete mode 100755 zsh/.config/zsh/setup/misc.zsh delete mode 100755 zsh/.config/zsh/setup/tools.zsh delete mode 100644 zsh/.hushlogin delete mode 100644 zsh/.zshenv diff --git a/.gitmodules b/.gitmodules index 796be5d..3293201 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,18 +1,18 @@ [submodule "tmux/.tmux/plugins/tpm"] - path = tmux/.tmux/plugins/tpm + path = dots/tmux/.tmux/plugins/tpm url = https://github.com/tmux-plugins/tpm shallow = true [submodule "alacritty/.config/alacritty/alacritty-theme"] - path = alacritty/.config/alacritty/alacritty-theme + path = dots/alacritty/.config/alacritty/alacritty-theme url = https://github.com/alacritty/alacritty-theme shallow = true [submodule "zsh/.config/zsh/plugins/zsh-autosuggestions"] - path = zsh/.config/zsh/plugins/zsh-autosuggestions + path = dots/zsh/.config/zsh/plugins/zsh-autosuggestions url = https://github.com/zsh-users/zsh-autosuggestions shallow = true [submodule "zsh/.config/zsh/plugins/zsh-syntax-highlighting"] - path = zsh/.config/zsh/plugins/zsh-syntax-highlighting + path = dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting url = https://github.com/zsh-users/zsh-syntax-highlighting shallow = true diff --git a/aerospace/.aerospace.toml b/aerospace/.aerospace.toml deleted file mode 100644 index f4199e6..0000000 --- a/aerospace/.aerospace.toml +++ /dev/null @@ -1,158 +0,0 @@ -after-login-command = [] -after-startup-command = [ - 'exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=4.0' -] - -start-at-login = true - -# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization -enable-normalization-flatten-containers = true -enable-normalization-opposite-orientation-for-nested-containers = true - -# See: https://nikitabobko.github.io/AeroSpace/guide#layouts -# The 'accordion-padding' specifies the size of accordion padding -# You can set 0 to disable the padding feature -accordion-padding = 30 - -# Possible values: tiles|accordion -default-root-container-layout = 'tiles' - -# Possible values: horizontal|vertical|auto -# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation, -# tall monitor (anything higher than wide) gets vertical orientation -default-root-container-orientation = 'auto' - -on-focus-changed = ['move-mouse window-lazy-center'] - -# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag -# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key -# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app -automatically-unhide-macos-hidden-apps = true - -# Possible values: (qwerty|dvorak|colemak) -# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping -[key-mapping] - preset = 'qwerty' - -# Gaps between windows (inner-*) and between monitor edges (outer-*). -# Possible values: -# - Constant: gaps.outer.top = 8 -# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24] -# In this example, 24 is a default value when there is no match. -# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'. -# See: -# https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors -[gaps] - inner.horizontal = 8 - inner.vertical = 8 - outer.left = 8 - outer.bottom = 8 - outer.top = 8 - outer.right = 8 - -[mode.main.binding] - # All possible commands: https://nikitabobko.github.io/AeroSpace/commands - - # See: https://nikitabobko.github.io/AeroSpace/commands#layout - alt-slash = 'layout tiles horizontal vertical' - alt-comma = 'layout accordion horizontal vertical' - - alt-ctrl-d = 'close' - alt-h = 'focus left' - alt-j = 'focus down' - alt-k = 'focus up' - alt-l = 'focus right' - - alt-shift-h = 'move left' - alt-shift-j = 'move down' - alt-shift-k = 'move up' - alt-shift-l = 'move right' - - alt-ctrl-space = ['mode main'] - alt-ctrl-h = ['join-with left', 'mode main'] - alt-ctrl-j = ['join-with down', 'mode main'] - alt-ctrl-k = ['join-with up', 'mode main'] - alt-ctrl-l = ['join-with right', 'mode main'] - - alt-minus = 'resize smart -50' - alt-equal = 'resize smart +50' - - # Monitor One Workspaces - alt-1 = 'workspace 1' - alt-2 = 'workspace 2' - alt-3 = 'workspace 3' - alt-4 = 'workspace 4' - alt-5 = 'workspace 5' - alt-q = 'workspace 1' - alt-w = 'workspace 2' - alt-e = 'workspace 3' - alt-r = 'workspace 4' - alt-t = 'workspace 5' - alt-shift-1 = 'move-node-to-workspace 1' - alt-shift-2 = 'move-node-to-workspace 2' - alt-shift-3 = 'move-node-to-workspace 3' - alt-shift-4 = 'move-node-to-workspace 4' - alt-shift-5 = 'move-node-to-workspace 5' - alt-shift-q = 'move-node-to-workspace 1' - alt-shift-w = 'move-node-to-workspace 2' - alt-shift-e = 'move-node-to-workspace 3' - alt-shift-r = 'move-node-to-workspace 4' - alt-shift-t = 'move-node-to-workspace 5' - - # Monitor Two Workspaces - alt-6 = 'workspace 6' - alt-7 = 'workspace 7' - alt-8 = 'workspace 8' - alt-9 = 'workspace 9' - alt-0 = 'workspace 10' - alt-y = 'workspace 6' - alt-u = 'workspace 7' - alt-i = 'workspace 8' - alt-o = 'workspace 9' - alt-p = 'workspace 10' - alt-shift-6 = 'move-node-to-workspace 6' - alt-shift-7 = 'move-node-to-workspace 7' - alt-shift-8 = 'move-node-to-workspace 8' - alt-shift-9 = 'move-node-to-workspace 9' - alt-shift-0 = 'move-node-to-workspace 10' - alt-shift-y = 'move-node-to-workspace 6' - alt-shift-u = 'move-node-to-workspace 7' - alt-shift-i = 'move-node-to-workspace 8' - alt-shift-o = 'move-node-to-workspace 9' - alt-shift-p = 'move-node-to-workspace 10' - - # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth - alt-tab = 'workspace-back-and-forth' - # See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor - alt-shift-tab = 'move-workspace-to-monitor --wrap-around next' - - # See: https://nikitabobko.github.io/AeroSpace/commands#mode - alt-shift-semicolon = 'mode service' - -[workspace-to-monitor-force-assignment] - 1 = 'main' - 2 = 'main' - 3 = 'main' - 4 = 'main' - 5 = 'main' - 6 = 'secondary' - 7 = 'secondary' - 8 = 'secondary' - 9 = 'secondary' - 10 = 'secondary' - -# 'service' binding mode declaration. -# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes -[mode.service.binding] - esc = ['reload-config', 'mode main'] - r = ['flatten-workspace-tree', 'mode main'] # reset layout - f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout - backspace = ['close-all-windows-but-current', 'mode main'] - - # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2 - #s = ['layout sticky tiling', 'mode main'] - - down = 'volume down' - up = 'volume up' - shift-down = ['volume set 0', 'mode main'] - diff --git a/alacritty/.config/alacritty/alacritty-theme b/alacritty/.config/alacritty/alacritty-theme deleted file mode 160000 index 59a96ef..0000000 --- a/alacritty/.config/alacritty/alacritty-theme +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 59a96ef4c734f97a1aadaa619b31cc1ca90a0fbc diff --git a/alacritty/.config/alacritty/alacritty.toml b/alacritty/.config/alacritty/alacritty.toml deleted file mode 100644 index f742d05..0000000 --- a/alacritty/.config/alacritty/alacritty.toml +++ /dev/null @@ -1,44 +0,0 @@ -[cursor] -style = "Block" -unfocused_hollow = false - -[font] -size = 14.0 - -[font.glyph_offset] -x = 0 -y = 0 - -[font.bold] -family = "Lekton Nerd Font Mono" -style = "Bold" - -[font.italic] -family = "Lekton Nerd Font Mono" -style = "Italic" - -[font.normal] -family = "Lekton Nerd Font Mono" -style = "Regular" - -[font.offset] -x = 0 -y = 1 - -[window] -dynamic_padding = true -option_as_alt = "Both" -decorations = "Buttonless" -opacity = 0.91 -blur = true - -[window.padding] -x = 12 -y = 4 - -[env] -TERM = "alacritty-direct" - -[general] -import = ["~/.theme/alacritty.toml"] - diff --git a/alacritty/.config/alacritty/theme.toml b/alacritty/.config/alacritty/theme.toml deleted file mode 100644 index b8631a4..0000000 --- a/alacritty/.config/alacritty/theme.toml +++ /dev/null @@ -1,4 +0,0 @@ -[general] -import = [ - "/tmp/alacritty_theme.toml" -] diff --git a/context.json b/context.json deleted file mode 100644 index 949ca69..0000000 --- a/context.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "osx": { - "work": { - "user": { - "name": "Elizabeth Hunt", - "email": "lizhunt@amazon.com", - "work_email": "lizhunt@amazon.com", - "personal_email": "me@liz.coffee" - }, - "paths": { - "homebrew": "/opt/homebrew", - "toolbox": "$HOME/.toolbox/bin" - }, - "features": { - "work_mode": true, - "gpg": true, - "amazon_tools": true - }, - "settings": { - "pinentry": "mac", - "theme": "work" - } - }, - "armin": { - "user": { - "name": "Elizabeth Alexander Hunt", - "email": "me@liz.coffee", - "personal_email": "me@liz.coffee" - }, - "paths": { - "homebrew": "/opt/homebrew" - }, - "features": { - "work_mode": false, - "gpg": true - }, - "settings": { - "pinentry": "mac", - "theme": "personal" - } - } - }, - "linux": { - "default": { - "user": { - "name": "Elizabeth Alexander Hunt", - "email": "me@liz.coffee", - "personal_email": "me@liz.coffee" - }, - "features": { - "work_mode": false, - "gpg": true, - "amazon_tools": false - }, - "settings": { - "pinentry": "qt", - "theme": "dark" - } - } - }, - "_global": { - "pgp": { - "signing": "7BB52F7036FA7C18", - "id": "DC4323D1738F27358793D6E87BB52F7036FA7C18", - "asc": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nComment: Hostname: \nVersion: Hockeypuck 2.2\n\nxsFNBGYKP9gBEADac5kCDgAkBqa4q8SFqhdyH4SrsSmYhFAcOecf3gfIWHOWPxOR\nKTa8O2wqTxTSNdk3JOMCUFWdLCoxC3qniv3q5bOFJUViShISrOlsZC+4BvO7Ywxe\nTAH/AJRTm4mUu3muKjPXOsH5vHxwSa19AgCCbyrmQ4jdNmVwpCZUh6ubeI0r92M+\nM/ZJOwDC2HKVf/pYuGYFzaiHcXr05T+lOG9xa5OQs+kEfNKyrFE3+vPgZ4E1Sg6g\nKGycK7BpRMGyQ1vANQCxfEZY4dyGpYb9bcRyoOS6lGUFpDz4r9yf1+PjWFw1Sw/F\nsboKbV/tGt7oCDkCKHCn2BPZJ06HwzMg4aOH6t1tkLhy4/+jE1vzWuJxo5Bk7btJ\noSFPHXWLl+M/KyYrdpWxUwzF6rQXbJX8COrziLJgmgoiquKAE2f3JNgQko10xVij\nWUAPuAZbyUR0EjnCr3TArj1Oph/gJ9IvaT/AI/11DVPmVrl8TdRX8Kd56qKJvOCr\ni99CAzJWkbt1kejzHDLsrVcH3lhWiYcHMrimG6x5zMy4O/WFIbzIGiM+ukHuDMbN\ne2Ge/ZwloDL1iu0BSjNKkpdvOt+UQfatiPqKuCJviGT+3JFEfjQwrn0nu8yj8HqH\nEOKwXU2BhfyQ8JQxhKrU+XqEnzv+Ng7pRowPNvCSMuPo/VTRwKv6ljawlQARAQAB\nzShFbGl6YWJldGggQWxleGFuZGVyIEh1bnQgPG1lQGxpei5jb2ZmZWU+wsGMBBMB\nCgA2FiEE3EMj0XOPJzWHk9boe7UvcDb6fBgFAmgMkpMCGwEECwkIBwQVCgkIBRYC\nAwEAAh4FAheAAAoJEHu1L3A2+nwYfYwP/jlSJhW3FwzdZytRJ55jZwshDAqTxPsG\nzrOQiZxZwliBD4NukAIEKo0+2Iw0azVRIYU//FCCLyCYO3mvQMvI9SNDTXV4cTPZ\nsfBqTyRhgbZj2QzKVRaN1TrV3Ck12MEJIbqIySIlmUduUmdl0KlZycFuU7zWx7lt\n2AZv6SuMUG8X66T6nhb9NqP+uKQrrTycO2qIki2/BYl4MFybkXvPH61EZ+elfXjR\nNrV5u+DrxdECxqBdg0OXb5H8FYG6hkrTDAj/cQTf/sLnGFZhw3eLkM7g6bs1lYqA\nVsHOywW3807bx20ORYn3BTzrvPJS0jZoJx+WA3j8Npnq/xV2phsoqAtfuAA9KftP\nDl250kvkSIdtsr9cZsQ8oXMPz1aWl0lv+LArmWoxkea/xLcqRUn82kprL0VDE0rn\nqhR9BE79tBXDf7I9zrW9aHpJKwhpjeeIatePBEvU+UhwukUpWn/Gz1Ik7Xf18ocE\nMtbMwnxxAP6vTrzRewSgG7WW7UF43wKHN5Di1zREPp56IPvke65pXV+ga3yV2rRW\n28iH2ZoFgQ3iRuI2P7icmXJ//V+qWv/vd3kBPmI0OLE3sqMS7XCLMEbefCq9h0Z6\nbgbWGeqQ7r+utF1PUhUqllDxi6cJvSyjDdkipoqes8HxXjBcqsZzDIzbrOS0G2lm\nnBwTRNzZGlPcwsGRBBMBCAA7FiEE3EMj0XOPJzWHk9boe7UvcDb6fBgFAmgMf+MC\nGwEFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQe7UvcDb6fBhIrg/+P3UM\nzR1ej+oSyPfhAZax+pQTWXF0h6mKZ8eeFHbERcehd1Eu78yO6pyBYET7JMsV1riB\nOqQkil5be/i10hS7TiLS21Fhasj8zv5ACwzA4EuxOklX/j/2HxRbsiJm5pi6Ati4\nuOTUGANamjvyV3Z0ORhKLOyKTL6cDr8qJkkinaOJMDYi6M7NsxPQcfFcOQmYY5Yk\nZZSwNKD+GHGJNDou5zmghnZpp+vm+B4Upckdq2/LQQyTN1mT+BegDkg90WX41qhl\ncDIfnrH7I8vu+70Z9qkA45Bhe3LtuoBt9XWbPPd0YxqE0eA4CA1Ef2cW9z/c33fv\nin8tzaCQvvzVveNZrrzy2TC6YGR+APFHvE8WU+YfL+B9vctDoxeb3l4BLFk+jKjc\nhvJhHRnTonqyZAyInNuQohKCblZXTgYmIUaPxeSgtzvjB+OKHb15gzOs6ZJGmer3\ns2L1m2niUQGAefldpAT/AN9E0mGLqbQZFAO/P2CWwF1EkV5G4hzso+MzpXT6Q+Pa\n+62ab4DFAqE4hA+PNoMufrjHtgdh7dDZkXyh6UwZSdG5rJQw7KiWhUjAwPg+rsCd\nRFPA2Znx4irrVoNrjGZwJY/6HKaeMQjW8KB4743XhH1wSeer8QeRAfsnCJbzRJMN\nBpb08Os1ATXbG1NRV4y1+mQMRDkWQbHWM9ZHMaLCwZAEEwEIADsWIQTcQyPRc48n\nNYeT1uh7tS9wNvp8GAUCaAxq6wIbAQULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIX\ngAAKCRB7tS9wNvp8GLUkD/Y9by2VHUtRRNpToJoTHh+JzgHIhXMuS+HMSE425qN3\ndYPWOq0SO29R3Ll5vpDhkMU2mhT0eLBr3iyuLFxDG8DLFYpH1Gn28Pz+pHrFx8rA\ntV3NbVZpgeZpgtqtqUDoqCOJ5t0LV6NJSpA8Ant0iqJu4+Eu09YPq/lnkFSpnucv\n0UrOBRQY3Npg69V6RV3pUfuxn/9XwJlc0iJIsOAJciTPrIl9LZ7ujq7uaElaBoSC\n2CKDgsFwaPuJU8V/6KAfzU5oM3YaFMBMWVzuTgyGCwacMemfvV4CsmG2jQa3DMvA\ndpw1nLVU7NPnM/SbeY00VXxBy3p1TMIZqursmC4QspntRe+HhZrPc0BRdt/W9dVi\nbvzlcgfDPz+RNzoUOzXRBEQbkhSlMQ3pVFTpVvuSu1OlYhApgVLd0Db/2DE7/FgG\nDsfbBXaz1P0oKSmhybARy6IZ3HqDHVfejfppqVheUAg0d14PZKaf29fA80yyKXoG\nw7TR6lE+tFBcUnYQz50ZP0gbFMHDQ10QdgDttxvulrO4WvxyYNwzwoEJc6KLj/xs\nZVU8A4AZY/wzfir2VpMlYC3l72kxgdLKBI74iEsFUH3wj4wTu9lvVYplzuZShBY+\nbrj1RRLZDKhD9jwh86sO7Wn0+Z46M1ck86SuNc4UH3WBEnu4jP3Bc2kKrRn5tl98\nwsGRBBMBCAA7FiEE3EMj0XOPJzWHk9boe7UvcDb6fBgFAmgMZsYCGwEFCwkIBwIC\nIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQe7UvcDb6fBh/XQ//YZFuVUTuIJeWC8fx\nWowI0A9kZjpY+jBTWHPv8eUXFhl4GFQPDURi1HOnpLD7ZRdY8AiteQv+ST6zqiYz\neS/8y0VeuwEa+F3tvytSAQqEczosZS1bATeOvSyHj/iOAXfUCpgYjG/xBvZaCX5W\n0f3xcaf64ZwdbPFo6jbicOO/k2Mrf9zR+6W4P9Zv439W5HED4vmOqm67+IXIerNU\n1a1TEFaMCxjagqZ1/cEEyhu3oWqQ4JEhJ15E17tGAOrvE1/zbYC4Kk+DYyikkcsU\nLnNzqcmFDMj2/jvDKuC3EwNkKWd5LCvhbcsoRv4l5MCooaDE5XULk+xCQgqyvikq\nxdPIBfSWz7y3v63ravPDEhmfjM5Rm4pQvm9COsXOw9aPE0ZPzW4nitii3D4CvXH2\nV6NeAZMqwRAPbM7DG6cXEO0JNNPD9fC6CdFykwTUHFchNkzg1SqGXV7bum5sM261\nmeIlzHJg8y1EZwwTrs20cFaKMfL8oNfyNF7TNkr13jpH/Ni7lQtNkj9VCRiRX45B\n3vstI84gzyzHP3VSkdOftFVTp3PZp2oaem4JDJ3GvkXspX1qOuumyf8GsDXOc78N\n1q6V/114bY1S51vVEBvG41icfSckhsyZrVP3b0XoFdLw4cAasdbO5UcrECvTQqhT\nObaazS9iWvhnICSa/3yGBg3qrknNIkVsaXphYmV0aCA8ZWxpemFiZXRoQHNpbXBv\nbmljLnh5ej7CwXYEMAEIACAWIQTcQyPRc48nNYeT1uh7tS9wNvp8GAUCaAxrigId\nAAAKCRB7tS9wNvp8GHf7EACFD6TYXF1oI8GnBnhpy1y201XZ3uWec19vM+A6qt5q\nMBOs4pD04YsHkem1dd9+CihbyttLykddW8a/4+VWbwvmJUd6BTyyGZusa8c7lKDw\nC4BuLviE3BcB9L693gctoBXlO9uK+BYSLkMEsakyLTd9KKKGXaeI7UOjLT4dMWa/\nKl9EpBPzqInF6bvO01BiMYfHXuwBZRPk+E4dyamc7d1Lhkmvhke+WtV2OolsWFly\nxd4j3nJG2v9+h6I8bbMf9nM8Fq2EOv3IWqvWgwROnTkfUcHKLfhx9gwVBosujizz\nwd1ouzYsqAoYJvR0s6mhFD94IafYWVrWEYUYGv8a/ZmpN9DMRU3Q8spjtIR3w7sW\nO99CYG3r0rtU+HeN416dBO7po19wMw9pUr4rp7FcMXSDmAXg02URWmn94WrlDCJ9\nQUNV4Hs8Kk+agFUxUO0PfHWKDViUy/EkPQ9oeHeqY61CBsGxBCocF6+N3bYJFhhu\nBKx6AP63bgrjNEwFjRmlKPmHa6yHoak7cA2/LsxCBXSokaQpwXQ+B0fAC63LfmTf\nKoSVrzcXh6QeX7TgdjswkeO6SxGe4pAz5jWlsukon/1Hya9VOuXFofJQpWzBauSw\ndMKRh9u3oz4gtlbOGTUgHufh2CM7QmZq+Sp7P0XHIeU0wvsSQA/e0hPeLLiU6ddB\n1sLBkQQTAQgAOxYhBNxDI9Fzjyc1h5PW6Hu1L3A2+nwYBQJoDH/AAhsBBQsJCAcC\nAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEHu1L3A2+nwY8GMP/RLj7ldNel6wef4w\nz5UO9lubAbBwJ+IGXHhw2Y++slWwu3iv8FEC+VZgXbdmDxQRsdvYQNL6Bk/F/q93\nrkDcZfnbX2EhKawSoE7ggtrb3Ev9GwokZ/3t01kMRDBxThRo8/AC93o13iPPp5X+\nSDBPQDs7We0FLD4rTrsrWHEfm6Dm6jJjP/aCFtDBYLyHEKvtsITo26nydGe85Sa3\nkE8BoKO2341l3odPFNYxUR8KJDMptyarhVOg3gcUQNEQCLODSCiYVMvFheaCxUAE\natp82wB2nF48I1gGU/LDKOMA926ybGIJPjjtmcSWF2jyvGwZKhEqGOLYs5NFXOt0\nVH24g3wL9tUMbDUuxJIkJ7eB3VYntD2Yvsa4Pv/+t6JUuyToxqw5gj+yr0kd/k+g\n5/2JAfiVnSwtp27U/jk4YlZ3s1NNs7I8+ycAJjm/aNtwsAfdBJx3kACxv9xq9UjB\n7b3Xuy2nHR5VHeOkEnKygszPsvk9ARkkM7fTur/k+FKOcnihannqILFwEW4taHzq\nuLs6hKAyDaenWaP9rMvq+i0DhhZgrNeVi5ljd9sigf1OVTnN8+fj+2VbAnAPYi7I\nIvK70oqxFc7ASrrMKZxjT213ycJwp2/tA/VCpBDNspLrABda/9dLzA35igteUaSx\nUB4gbLmlA9b0sY700LZjCdveOZDwwsGMBBMBCgA2FiEE3EMj0XOPJzWHk9boe7Uv\ncDb6fBgFAmYKP9gCGwEECwkIBwQVCgkIBRYCAwEAAh4FAheAAAoJEHu1L3A2+nwY\nm6EQAIqJdVinYGhKkVBldQ2JDFXtYQsK57qYCidEdK67k02oywXR5HOMt4QM80Hn\nZpSJg1PZ0flRecMstiYCEtv6kiZrKz2BLqBZVCKv6QjV/EXpXY+8nEk/QoPCQ1z2\nA35tP+QefsjAuvAlRW/J1++9gXEXvZk1QdXcpDewxTYO5RGOr5amwGPYsL/6fsaI\nK0ioc282JhgSpCt/N/wu7K4yViFuQ2AdP5Xd5mjdDP7mEuGYdDByzTrASRx81GBC\noKYXou+AkRWnXMZT3SgEXoYy1kYeK0oCCMsLrgUO6ses+eMC9oMcRSa4XkM3Gafq\nu1REvcyqnZucRL1+Ssq1aY0/95d4vWZ8DRtHpaGCzaWj5cQRQ0n7V2vSdFF68RX3\npCUWmu5LhTyhmC3Zs2KufNYnc2kv2kkOvmWItCUPkQcg0EO6miJ0MNCZExHV4P0e\nsGMIok5nNaaOnyWSf3P0Puzcu7J7jdyd445XYCKny638IpjhGLvlNxt7FVe75eQ7\nLtyMZQT1EYWxXnmNLPo+y+KHEFQYKIbaIQ/ol0hVwwuEPZtgv7eXXK2ZW44abCaj\nn2g+xe1pAxOBtvf6ORf6kfT07Oi/SxNQZVQNuq9GhJMlInUS9b49xM+742Qjkbcj\nnyf+N7+YLpo5JejlfLqksnkxTenxKGkcFqtymgikrANAMXVyzsFNBGgMnN8BEAC5\nCM9LxS34I5qBj8KpdBQ3gkZ4SkQT+BH21Y7QpWJ2Onk528Y4XCWU2+P+uISSpXOw\n6ZqEtyrAaE+s/DZb6EDIlJRszHAy0LnWvXJxtpaHuQJMyDigoyIZ0CZuvG8DtDSe\nC2eLBReE+G6uBK+KZTfQllR9y2v4R1p6zan8RxrdjS7EqzH1AgFiIClm6/UtKb0h\nlipGt1b2eMQG4t9d9+IMRGsdqOw9/QRJ6Abvp1eBrIH0lFHv/uMG1YERpAhgMrDk\ngxd2RcSHUZ5ZFn252Tb87ZvGSNofSLd1OomrYlXLJ2x+XsTVTqr1gu4Gwun/Ok39\ncWcgFNjuwLigGh5WBs6C9BCgzQA8ZIPsbMmWipcIOuA95tiLVRli3K6qDeX+t18q\nphDoHbZEqOGeRnoMiB619MZ5r70WSrwYFY+nkW+UhoMquNWXU3yEGt5UAfRiKvbP\nHFEqVbQkAohMc64EA2SHAPGMkV9BF9jn36nyhyEe5D/XuaWX7yQ4K5uZqTHru1Vg\n+X8xPW8VbSOEr3ogkOKY2451GMlwhFrb9c0BMGLcueX8IvUzdT7Oe7ZnigzrRrRW\nLnaR8+Ie9azkbDx7owvHfxIGfobpzc5uxdbcOzCx1n0Fe0y4UBVwMKRomROrN1Gw\nk53n36RZFL21mkqJeF+zBwYmA2EFWUxHXDTR15TZdQARAQABwsF8BBgBCgAmFiEE\n3EMj0XOPJzWHk9boe7UvcDb6fBgFAmgMnN8CGwwFCQPCZwAACgkQe7UvcDb6fBiq\nmhAAg24MYh8XOQoXZHTCnaVkLl44yShx55rMs17hTOQpwN2bfyEyaCZ+dkbq/Jpy\nG9Xz/mIBbJYJ+ApqHUqCfOsmrM7gnopaehIxxxhMIUYD3yd35DsGLTk/ggz6u7EH\nkocOPuTxMiWBGbr63SzgtIRYobEW8WEZxvWWgbVbUcbl9c+HqpN9eBazPyA/i69w\n6pWWzjmoFB14KUTFQuVc5py+P+cTZAZ9+p/jSMdq2VxMrrpc7diOmKxmoeCn/A3t\nrTGznrHNZu6DrXn+ZGImiIEHLeEwmNU1NwJZsqDCqEosX1drJLhDxJBS6xdFUZq6\neQSuqcD2rxiAYn9UrFZTkZcskUmV+/2feA5HLVWTRPYR/eMBF8llalPsxH4SiP1H\n/n/HeVHRyZSjcP/U8I4illQadZ93LSZ5K47CKvhcDJjm4t0CImFvLYllM1C1QS6K\nY2Gp06qXy5Ao0BsaCLRsqaHk8QttQU8uIrFd9q0vyt17AmEiruWQx366P1O+Kao9\n9zIU3zfSegcmGEB6MBSeaZSD06Me262d4ZguNhk8ayu1TDsTOATV4ZKrA1sERxKl\nA5J0wBS9ilJtDlcKhAUwJp4m0f32CrwZi8VV40sj7sboidyEhpCIl2o/DTQuxgaZ\nN6LN+pPZOcGJY+JSWHUS/ZGjHoe2ELpQnKEGaEenXR48c1nOwU0EaAyc0wEQAOCw\nviS/xU+aYWqSKVAxky6CXIjC6GgN+WiwhEhOCTlPAlumWzLDJkSFDjHUE0GR89XX\n4r4SIMoGqx5e9yPo8h6+5iSNgQqucZHv99QdZsBIed6+/N+c9SOV3YAiCTj94HMQ\nEBRiVatgOBWrAaaEL0+1qgD0m6BDuw8YRLS9x3Mmu23jwdQnTBmXdXnLUDq4b+cX\nIPLzq8uYLKYNskfV69hL7dc5KtFIMSvdwSwghbVe/v0tWmc+nwxJefyLGx6X/1CC\n7emclLF6IkdhDLx/M4SVZ0eOT7Kt0UK2K7FDykoTYpNgzKBuam7X60xZj31SGlRO\n4XEc+GTRChCD+up70/EKeCh4mZf2r5jB/GVAZTgp0Ujo+WLkjwRzNY6ppX7GQp5w\nS4d4DV5MasjPyvXTmE+mb1VBxCMzO02pQ1coxZtVStWYxxJtn8RrSKl8sIx6pL3B\ngNhSKqClsXrjHVVV5tH18X+LvQ8uRITFuKkhdhVZrSPKDmd30JR1IfJnk/W0vQbG\nW8iYJKcaD9leEwqjLUHYYzYFBMVoN27GxqNsJkaOBWjVVkJ5NknvzdH78tDStiHa\n0DTkj5eZkrD4/qK4XmlrInZH1sBSb3mNJZ2uwLwjpoC0ZRCHLQbtr5Nt/BmGPE6u\nBG8fsSS6SIguJFDbvXqw5Q3k3KZAnUWU2YbS3GD1ABEBAAHCw7IEGAEKACYWIQTc\nQyPRc48nNYeT1uh7tS9wNvp8GAUCaAyc0wIbAgUJA8JnAAJACRB7tS9wNvp8GMF0\nIAQZAQoAHRYhBI0e/k5s5BXDUjMNNOO6g6FGMefXBQJoDJzTAAoJEOO6g6FGMefX\nrNwQAJiayOyRvEPrV87QsnQZMm+7uAhugqK/srwhFzRg5old/RllirWsZ+UbCu7Z\nfnr14u/L00x4wJeLOCE0oE11zmlreQaXRb5cDM68AX4HwTpGAHmiDAMMgkLxHBux\np32ImAQ7hbe6uqLeNJ+zhLnACCDYjXf7djJRPsCUxIQjKIPN6BkvjLcPVgQLqbSF\ny8iWqBoAZ9ZqqOpQnqj4tN9pdYy7CZhaXK38mJTAYYBY6XVz3KNtDB1p0v0L/+qO\nWv7oSi3SXh2fccOdZcmPm4mhqR1dmdRN1WMOgTD2MoPSeTk3zcsmqKNGzCwczGUs\n0RjX4KjFjLBXWqh5liM3I/f0HdSiKQyk06arHAAOD+lb7xAT6f/SCB1YyakVsvkj\n4GfWG9Qypw8ei/cD5tEuKLZAPyrbwlzOUWNxZ1JghCArhfq3MdSvgHew7WsLjT7N\nvyGzXg4iqDSEM9gOV8Q86MPefkO26tXDCU/Yk9F7JvOeEqhoZrZsVqptIMFIE/U4\nygw/tDJVZIKBx0sAj7DCV6fmK/gLzRNObiqBRSNuI9ivcA/fUJ7q0aTVLxMRmilY\nStetF6uf4d/jVpmQyHZmLhZRdigeey7V7THPuEQoAHXA8iYz+DZNQk2woQEBH+lc\nWO4cyT1z33N25PTpEgReNP7AR6QX/uY4wP3/ra/zXPbTT3r/xNQP/22PrMdCV8u8\nFMw0606cDxHy2c7iTKFiSe8oM+wKWgVAULfnVQZ2P2L+pBMZ/k8D2IByUPiYwI68\npeDwOG7bDfmTAOawUN1LD/VdhPB2IA6rD37CPTvH2FXiwNDECUvaiRS3O4NxY6//\nnux04uaQ9RYuwJNx260cKYm3EYOPqphxB9Ke8Yg6GAVc+1ovdxKnOGdiJG0blOe1\nZ2IxKCnaP27PlMGmcU79jho4cS2+BmxzP0TF02B1KbhdZF22yVEPgQKHX0nN06XI\nOEr2NPHsLDIP5KpRZ7Y5yijEPl2i3yZMNkqguskTKJU7PgDq8MrrlLMKWT8RgeEQ\nAh7oZT1WnkIr5FiMhhaYS5N+6BurLsfIEiYvNRz9hfs9Mccu88p3H0EuGno+FKwq\n4HBu/TxiE6W2/fbPDdQVjVNQ3GH0z74qW8UBB9qHBapCYAgmo+qh6+KIRth+GCbd\nKym+IIBE9YWmmAQ0gFgAmbSaWhoUNbo5IASLMRDJL2pDk6VSWQeYpayEUfLZoI2W\nd+qIy7FYg1jvgGcELloxR+PUVYVmmWd+9uRYsmT8WFBFK5C3i4ZHYsEA2Iry24bI\ndJTwdJH7eAFKnZ6bS9+jO+mFFqP2kzV3Bjz+2cf+TGZjb9MpMYsYzkud8xfZnt33\nxjMhdHHhK05RGxFEHuxfi1txtLn8n/7SzsFNBGgMnMQBEAC8y1q1F7BpXlNsFydD\nHSwvPDk2au2marJN5T/KAF+tAWiMp3thI3ug4obcbtVJoaOVz+qvnVagsjxrwUTY\nxHo9gm5YwDTEURjloCmoClzaFnXQwIQJ2uvLCG/fNggttZYfOg76z+cF2ODdebsv\niyjgAMkEYCpMTG2zBmApSAgE4kHfhYPWZMxHcwmSxJ0bZGEucXfa9/qQdZejC/M3\nmLSn8NSXUSUC/dVqnc9SL42lKamsy/Urx2OIdBmqDTRQN41C8y8SZFApH7j93pNi\nZL6twLSiJnuxie3fyf1ofiHhaawWFAWy2nP21Kd3owGkMirs76wwZhl3TRs8cDWX\nS+h4ARrSdKw0Zy9PEkVCzrXzdYmTizDQNEm9X9a+B7OuBcPlKIwY0vnm5MdEgV+a\n7Acllp/JIGN+Uzqby9CwjlxkhmO0MGCRntMAC5hAAaUWYBfT1rIDg4h2zJN0ml0x\nMeyMxuArMlpTdA5DZde7VmOsbmDdf8z8g5pXZoVIYowmG2sX1YZaNHKkCNR3URIH\n8pAGUt4dzcHc4TLo3KEqoAc6XcntcfIRilJquutH2s89e70rSehkyARp6ftooS2T\nMSDVP9jzH0iAKO3luc64BUB3dJbeVO9vd6olgVcfFYloDNxfr731WLTROyl2fB7o\n38QskaRqps4T54Kccu85cbbNNQARAQABwsF8BBgBCgAmFiEE3EMj0XOPJzWHk9bo\ne7UvcDb6fBgFAmgMnMQCGyAFCQPCZwAACgkQe7UvcDb6fBhUDw//R7HOoczG7Qof\ndOdtDd/7Z0cT7nbk2g4DTgh4ktXdzpjG94Qo6fr+xMT9DEA2u6avS3gDXsYKMeXA\nu+Rk8w3McuOKnJBAIzBlDksrJjOt+AeMNdo1nJNX6UpWHeQ5wBuISfYxLs2QXLMR\nKx4dTrzsgTgREJz5RVLL4JXO2uIVAV691g2KWPxdNpL0rOkCbBho/M3Aqsn4qsIF\njC6rYp203L9s1Gj0u0GFPwAs5QgU5M8BCZg6kumMP85mZ0kxmpOmYc4Dam0VsXBo\njkMAhdAcmLBHYsvOvd5j/Tn9QsOCzVXicsdPj7qQKDw9KJKRpXToucawweOlooWK\nD7xOVYXGLTnC0j1L5TiwjC+26og+H4jc/fPk1kbCjKRycoNh5RHzM36UtTM4Pw5E\naJoGgyUEoEw+3dClRKIZElH1HOKuakjPPeAVaCW2M9pw4lZIQ2TP/FeKRJUPO3L2\nyHVBUl2JsPVovBltav9TaWEafNMHANRQDv6HS7dJCduuY8ikgFpmj8aq/C61RF8O\nAvMMcy7oujCIja7TKwN0ieA61hJioMeBjD0Q9KFpYUFmtO5Fi3qtetNHdzWluDdB\nGBTXrng32ix3gcXN3cWUFtuJ6bAn8PbQRzZU9vHg7W/0IcBUdblAK7TRA8nvo+Yp\nARx6mCsT3EGNkW7RNXzwND8EtPlsCzrOwU0EZgo//QEQANEe7eH2YONDIVuiNzEY\npbSE9QN+BSZvZYLN3gO/aohIzcYa30uMPyjQhtZE1pN/lTIh3mW7vA0e3KCzlkN9\nRWeV/GsjUKagTG6qRgWPL5H0K7THUnbDv4yso8F3lqQsK4pNOddvK/v1PS0tvTus\nKkYeiNbwcfrB0O2DSyJWqw+plVOODtYZsFiqKqUDmnyz5X3E3WryVM5mtEjQ92Ch\nTxb7Wgiv04dIbVl5QFDHrSLNMTAydYHFjZoDxJCiUhW+wkJwwxz8QCdrP+t0nkiR\n6pcayUiFQjtYI8ec9Y3wJJ3Aw4uLkE1o4ArtjYWR8pNSU7sjnYEvzsKXdikzFHSZ\nMOt9IlNKnQHdkBtQhcMDtuJKHThgvAZBUjv329zIl/fnkDrRu09qK6IGAjRqbeHR\nbGc4AKDsrp5XTbcSJRDbhSOVDym58dwnWgNby/oseWn9q0JY6X0pAi6f1RSDwMPz\n8Es+mtzTDMBXo1yjRkh52i7Fm5SF25hi9Sssn4gKlpmDqg8aK1Uk8iDLIj5ZN+NE\n3hZOP9ndiG6PRGoXxvl5rgU1a4m18Xvbi3tJWdmxiVkZIKovyBoTNsgBNV7dMefl\nXBsr5LgQsP/1bow53pplxM4rbI/eOXCNyOdbywu5f7ao3C1JVVrijlWxFlTjQNr7\nd+XOgGzJTBITcfY+wU8fb2UhABEBAAHCwXwEGAEKACYCGyAWIQTcQyPRc48nNYeT\n1uh7tS9wNvp8GAUCaAyTygUJBcS6xQAKCRB7tS9wNvp8GMwpEADAQcIKpUgAzuxQ\n5xdZJSYJ0vEfqyMg8EytE+WgYDCnMtENzfpsZeh+C2e1GZXu+ouWw4UFIVY1NaCO\nmOQUL/vJgbFMWAjg6xv30FF3p1FefKOnu4vtiqtyPOuHEamqiewfJGyqpLRgpbae\nBhCP+Bjugvzz/xm1ve3AqGMXrnOHK9a9KIfmM50PRpJGcmktWPjSATRfVKPQWPy+\nNF5mwpSS+hUmcdsU1RJV4V15pXC48AItb5kVvfK35KRdjmHkNOnBgR0sztr2A8pl\n15pOl74r4Pp4O+u8eQFy0wI8bglzbEw7btPcar5VcTqzDeeFX0l1CYwOYhb0ZPs6\nqYgJq1ARI9onPsJ8PeBKXZQGFb/xF/YfZQBegghtOML8Ud9LFEu2eZ/obshslLGp\n8vo5xdqTtv2i0AGBciEs61l53EeW0gQ9FfOOv9yHtyAwFeBwk5rpyUG5JVTyPe7y\n9xYXZxjC1w5kLuO23TJL6mP7T9J7P5DDN8hPIcGe3lxSl0xxPQNLw0n0k1oTrN1m\no52rDzSEPRAeo6fsrc+VJZRIJy2rrGCnGdHOaOGwYJT/ZaV9F/vWFLcZFyxKhZTR\nXkTRNrF7JyZPJUdMj/a8E40bV7MxhBuz4sPuecI2N6pwKTOETvypubb09mbhCMr2\nDmx+YeRHLYdRmk1YL/CGhZ57Ralxe8LBfAQYAQoAJgIbIBYhBNxDI9Fzjyc1h5PW\n6Hu1L3A2+nwYBQJoDGefBQkFxI6iAAoJEHu1L3A2+nwYQzMQAIhti+P/8PmmE2DZ\n7k9yirAJC9hCiVLVUOaKuXE+rC8UyPBo9mEgs2+n07O1NUaP6S/FUVusKFQcFwHI\nCsq5g7+yjaDZXoHX+xr/PjNk1o+XXFVTt+WLaGqVeI3qpdIkF37SpD1d2b+1CH4J\ngmF0Efinruo2MJ6ZC/qgB2IzVjH1NxOAe9gg8QHq8tgad+ud6LLlfxh+jOcyzct/\nebIiYaie4baWpBJGNzc3kpUtzj7NFk05Knxbmn5PtC1BlQ4sz4gi1QmvWO3i968B\n/tXGCRyf83Bcdj0d04BV6SZ2b4RSA+1Njf10nwMZxquaS5Oc+vkFtoMITYkPJRyP\nnuMsR6LhUMeMvZctPMut9zv+/4PsiopcSL5ul4/XR6MAnNXoix5S9r2cxh2asVMk\niqiocC8MPrkReKcrwmzjqKn4lzuJrtds9udSoPUud4qlBnrVvh+mF9Ck7wLOPDpq\n3ClC4pwJqA0gmBCXBl032ZyqGE1dDrHQygHJ0NMrE+B77s3/1aO8NA6UFphXSIC/\nZPcY0dXrAIgNqhIpHgE021i7zhBt4Ws0W8xwp4wheLay4QUC6ac5cn7LfNvwVpyq\nny3VwaxSI1loMQlgdyy3tAqSdWiDQK3CuN5VyXEIvE4kj/Aq2eoLeluoQQXW0mRP\nTUQ6XndDGteXkTRl9/LQeE9jQ8fgzsFNBGYKP/wBEAC2y5BnTE8IrzhMuDUY++JW\nKAE01MqkijS3wrkQKrc1NjVV69Jt8WuXWnDfAT9ifB68eJvs85w4pxOfiwag6d4r\naaqXagb6Vtrg/qPbQBWptE+aeDqYXy+eZyI84QHR68h6ik18C2TFjsT9RMaaHQJk\nfBkX4pjkaAOUVLGNgPJSm3mohIWkTl4TBwqI4S/G9ICRB0kL0k3uigGb02WHYrmZ\n5ZSk5CskP4k91rG1BtaFtwAepowG4spDszLObBDhdaziNSr5tjwoKHPGzxj+44QU\nchayfZWCQ9hEWg2uMZEDcc661EIimwv89CessaynQZzcE/acTXSmv2NGZfhozKsn\nI2G1fJvwBt9HpD/PYj2Zin+31dHBuiS318fKNyRrzlgczpooEYVtkoeyQP5jSChk\nCtqR0p8ubA9XX8Eku/jdwy08Po4S+Gle5R91/lxrH8RTaNWKLNq9AYuqyGByUyfy\nZRWjM51huGW2jYmdnvPlJY9cB4vigzQMfK8dfH91cfs0GnxX9s9k1kRyYXF5NXkh\nq8tnS89VWQMPY9AR5JBEznz6wlkMbxBh89r8dpXaMVxiMCfiNNHJ3Cljra+ufFnA\n1CYdU+AUWPx/0+nYZd53iJcfOSTR3iVXr5SEn+lCeWbi+ce3UjVzlKnBF+USPa+4\nYpWd77Kc2u9tnCUBNb6wLQARAQABwsF8BBgBCgAmAhsMFiEE3EMj0XOPJzWHk9bo\ne7UvcDb6fBgFAmgMk8kFCQXEusYACgkQe7UvcDb6fBiLGA//Wiwjn5FjONrqXyyL\nbMfFcEMrDaO8nhUgxW5BepFDqZTklrYCFK1wq74F2l0pHHs4V8o4bwvmXieFB/LM\nU+/cceR0kR9zosQl7gfQ2SPXAeB8Xw22j0YqS2eoyV076j/mV4hS+F5YZWzZn+qX\nRIIrumx1JexIXVa2uj7Dn/qFNcDJHRQ91+orVh6V9Wh1FDA3+6yvw5NB7SKkuJwX\nvOlnBPUwq1HVyqcsZ3pi1nK4bD30+gg/janWXTkqmmlMYvMkmZff4G6+oqejUfjQ\nciVvU+BWtqt+R8+UDlwkGFdvTvhlnwBDqtAKx99vHR7/LNTKiM5Rxph9AftKLg4g\nm9g3UrbtO2GHoOytVLPbZWu8768gtINXkRuEH3KK05T8N0anGC3aaUOEQs9hyNRv\nozs1WQ+S3hMeZVo1O12gej1RzI0/GNTn36sEZ3gFHg581MJ5geuNhTMd718FYSIZ\nCWjSQGZzWa7NafiGAmisG9MFNaOUNZ7lpS02xLbuVwiBVdUe7YxFDzpWn6gFh5Zr\nGt/2FsAHmb5CGwvmHQQeE9SBHR8GWj2BOCqOPDoirbRsT6TtrO5xJW3wXbKZzhjy\n85lWkAKf2TjMrIMFPbx9x8W8XwJZOF8MAIvN2eKDAt5c6C7xPgD9Qqw5CwMjQlGK\nioEboUhIni/fP/aaOb4MpyQlIJPCwXwEGAEKACYCGwwWIQTcQyPRc48nNYeT1uh7\ntS9wNvp8GAUCaAxnnwUJBcSOowAKCRB7tS9wNvp8GDpUD/91p+TTRtSaKZZYdWBf\ngDIafkn9A3w6+gyDIJVq6BEMNVhjhYLxK+wtMaw5x3vRCrLNxjqw76ecyX/dSnJd\nytIw/ty1NcPNP5Wn/oi0ZojsTUWoXbNyM8wdTQ8pKtH9kNWSxLs7o11vt3TO7Wg/\ni5k7C8OZuADuDzcIbnnK/aXwibCth6wEpi6JHP4f3DvhTztELICkwodsErGHjcV2\nAwOOsxzoJpWg6CQwoVr0parD9oTFd634IGuZ/FjvjRa1+dTSJlQ5l9PiS5coHD44\n2MxscawnKvvNdbOOvi7CqKsbnAoohybBqqi+j/vbIup1lip9szw9EVLfefDu1ww4\nQgJM/PY8FniqDqjDK1ZKO6BlpVZBASILWskDQ/SyxjE/9XgSbXzPg3o/4Yp+vkNj\n9eDeYcCpszNjmdWeDcgtKNJ9ChtymfkGVsvjQhYsljuwHtP9K84SnVrvMm0saFoR\nktbJH9Il664sGbdApntwgX0p/6CV6UsBGIWKaHC2MRIwaPGH+hzQfiLOLKi4Ub20\n2IuqYYJYw/07eujKz3IeNbk311M6tTQ+GmnXDaocrElZwstQCuMYiCFwNwUP2X9B\nlWlkjniN2lOD/cOeRwOXrgwcMZ3dcWglpmekOLCFYpm6JOJkBbVt767ytaX1E7+b\nCMoVZ69VOxCQfQIHwMbAja+jb87BTQRmCj/6ARAAyT8v/j/NFJuc3hMar3Qt3axp\nmsYN4rH82KlX+ihzDH1kXjdqBfKMetu2tE3PGZEIkkg6LZs0zlZ4dqx1gZUOAUph\ntrNNoWAGriT0di2b+yd7HUiUr4dU52e7KtPXTFOL+Y8rbVn7D2K3Xo8jNu3VGUbK\nLCupZARDzct2yYGLDjakTgzHey1pXMUWCVWeOBS5hC++oxgXL2ISD6mp8UMVAG8g\ns2iKwRRA6XSXsND7mwcXOUgUidTK7FcBTqwuCEpqLzQm5+Q2dts+HC7FmRzN8PDy\nRipYGRcO+/UeR26Q953i9lIFbVPDMgbyF3rzpYHLpL5z49P+KVJ6qJ+L6h61wxla\n2Aa7bXoQe9FburCS2+onfUBj4TNTuDoJW4Cjo/2StVHkidSs/g3p0Woxdr5vkC/3\nMIN8QmgoCzJKYNYkpO/2Y+XCIM/52ELqdDF/YgZOcikXgKTTdIJ0SZqfPrXU0mUN\ng/pxsgLYmOGeWMlVhtD8XLDGKMhjW09DiAt1rUOLppJWgCCxuXQztPrPCDeDhAGi\nPWkil24FZ9P0KVEm5VmAIE0g38o6dydZ799NpdSU541Ewt0IR6H39RmsBuwHXfay\nQEiIzIeW+LN1655clMGnfNYtirnhBYoaPN44uzxY3SzO/5uyLP8gmxHEgkVabI+J\n0gGvcvFeS5kt/ibGQ6EAEQEAAcLDsgQYAQoAJgIbAhYhBNxDI9Fzjyc1h5PW6Hu1\nL3A2+nwYBQJoDJPCBQkFxLrIAkDBdCAEGQEKAB0WIQSN++2yrCrjWZgnZeMpCbmn\n/2IT7gUCZgo/+gAKCRApCbmn/2IT7i9+EACwqQaYz+YQ+HpHsgeHWoHEDHxXuP75\nuhQkProQNOaZIFPu4xnFGCedl0Zi+1egOCdYrEVBLtNR7Ui76eCJtKMYPCoULs2O\nrztiE06FgCKZVv/ZbYk5lesBy1LpzQO8YYvUeDhr1hjiEL+5VKmlo+MSQ1CJlBWG\nHV9xyLCjR1iajqvKBxyai8qv2PBfyg6p3L2Y4fRnI68RhI5zozIzVpDOMJvOshUZ\n03l8udODYPWpbf4PZfotMVHY68n2pEhMGgnexWkv7Mjs9xuf2dqX//Art0Jo7DVP\n8Ugm5pqAnmqmnUJAKK0FH2RoCqqaQnTwfMQOhdtjhUfpZ54PTcnlpBHU88b4FQ6u\ntIqWc7PrQXAB1iKqzjUivUgNtzQx48e3hobzlexqM6W0x0hDvfUFjqdE7PborrvY\nJcvT4gahLQ2Kz8bFrrgLJyYQb1vua7I1NAXREC+xBbTeu3+35F02rc4IfLrNg53a\nA9Yibbrbp5q3e5ilbeEKP+p+p2oxSotfcs7Kx4wWTQ52l0N9G7R5hhxXY0waVjks\nvdzLEPE/QJlKNfrPNj0SuYEk8gMJTAny6Spjfj09k3V0tkpkLvka9cQp34yvkCFl\nb8WKnYtKoz1J625CFCzTwA3aOEizsiDmFNRoIuFv0/ZRzyOekTJrXQ07WBSmZAIx\n/EGWRJf0qm8Y3QkQe7UvcDb6fBiFqBAAr0efauX87nKHAQf6l7lLPnyQ1jQoixp9\nxS4+PmhMPEbbrbsAd251NHBC3wPD2YsNLQz1FE5IQLQdxhErZNbxTiHvris4aerN\nWo5e766YNgrNXdICD7sW0vYLWTr7m3GVPTU8lTSAGmp5/TfkL9VY08WIQNXdUrwZ\n6i+73+hds0ciQyREgNzylqsiB9/RTb4/EJqHOD8DvY/kJ0yajXtSq552cwLi8hXk\nbMrvMTquAdAHMUZJQXqu+no04ILiBgBx9xj99dlnLsh4vGKtqU3XM8L8XZf3rnQI\nJvH7socQMCLNU+ezGDcLuqEe6jyW6nBVaQVi5nN0jq0j4GHqiOBUAiniPHlFnCjY\n6qFhmJ5VSl3MAz2zc7fA7dAOoV+9Y24NhDKJoTe35O4lWhvYBar9qI7MaTkz7APV\npD+Vx1qIr/UsZWAL/xc7slPiyMNpNEEcB6KE/51jDHvliF4EGGhSFuZbOOo69SDI\nUZA9hsx48s+Husdppui52uDnXc5zfDnscG7wKtEv6wpfP7FJJWzTS4GaFpFEOuz8\nb+M9NhA/DqT8+Qd5r4penPWuTVBI7Ni+xK6r3vxDE86usAtcv7KqSq+lx3FK9CXe\ncLvcHyzo0d9mb9ASTOBpf1lwmL+W/oSDAVzIP5b93pwiLnLZBb48399kJRi74Apk\n3gf+CCKou+vCw7IEGAEKACYCGwIWIQTcQyPRc48nNYeT1uh7tS9wNvp8GAUCaAxn\nnwUJBcSOpQJAwXQgBBkBCgAdFiEEjfvtsqwq41mYJ2XjKQm5p/9iE+4FAmYKP/oA\nCgkQKQm5p/9iE+4vfhAAsKkGmM/mEPh6R7IHh1qBxAx8V7j++boUJD66EDTmmSBT\n7uMZxRgnnZdGYvtXoDgnWKxFQS7TUe1Iu+ngibSjGDwqFC7Njq87YhNOhYAimVb/\n2W2JOZXrActS6c0DvGGL1Hg4a9YY4hC/uVSppaPjEkNQiZQVhh1fcciwo0dYmo6r\nygccmovKr9jwX8oOqdy9mOH0ZyOvEYSOc6MyM1aQzjCbzrIVGdN5fLnTg2D1qW3+\nD2X6LTFR2OvJ9qRITBoJ3sVpL+zI7Pcbn9nal//wK7dCaOw1T/FIJuaagJ5qpp1C\nQCitBR9kaAqqmkJ08HzEDoXbY4VH6WeeD03J5aQR1PPG+BUOrrSKlnOz60FwAdYi\nqs41Ir1IDbc0MePHt4aG85XsajOltMdIQ731BY6nROz26K672CXL0+IGoS0Nis/G\nxa64CycmEG9b7muyNTQF0RAvsQW03rt/t+RdNq3OCHy6zYOd2gPWIm2626eat3uY\npW3hCj/qfqdqMUqLX3LOyseMFk0OdpdDfRu0eYYcV2NMGlY5LL3cyxDxP0CZSjX6\nzzY9ErmBJPIDCUwJ8ukqY349PZN1dLZKZC75GvXEKd+Mr5AhZW/Fip2LSqM9Setu\nQhQs08AN2jhIs7Ig5hTUaCLhb9P2Uc8jnpEya10NO1gUpmQCMfxBlkSX9KpvGN0J\nEHu1L3A2+nwYEiQP/3u8UiMr0Zlsp99F8LIy1PFKK4Z2/pb4NTXiWlwVTwpcifx6\nxpC6JGUJptXCTzAysIB0g0LJrBHN2OEuZfa/eESWb0GQDqiwBNMnOuxF1mtcmTvU\nc4VLNQALjTzMgY0mTf4HK/6XTW4hsCY9D2PbgYkBToKmBkXkDfoG5JDJHezaFZTD\nZuhhizkUnKejLMAQsODS/zHT2oGPkWISdlsgvnsu/b+BZtlbsToxNf81YBf/V0mi\n87uM+6hEyECVRpNyenHaubLCAQXTy8U8fDuPLHUy/sO6AfqrzF5rsOM7cPN7mo3C\nfQwCkacOPw5f1oDcPu53AwCr1xAPpxOfptroM7Q7XCdRmN+DlrFwC41/QEoqNSU0\nnJ3yWGOt19TtammIxSVw0obQncx/heojiIf5c6niYEFI/8xjAY63Dgl20SlBlB8l\n+VR5YlAwfuzvHzMtXqoeFx3B6yQVVvF2eZdcJ8280CWFjM1Y37/cHyyOtiPFmq3t\nuU/FIsGGjZXpvCMMqaDBO8CRpuzdPZYVoszQDB91UMPqhI9JTe3ZAw9j6aC9B1fO\nS70IbsoYpOr7nd9tjySAyk1Kt7TLxxEJ7D90q7muQeWmd6TTOYjzJCjXFZODycR8\nqL1+EJ8hytlxV0l8aGZvKHeOZc/TsNeNat8A/UvtRMKusFo9CRCXDSoBYkPCzsFN\nBGYKQAIBEADJCVl4xkREBlhCOWIqbWHDOT3ox847/5D49A1Mpb8BSDgBCx2US0oY\n7SmsntewUa7PxpJlmWon2vYj18hCZFNcMetqDFbOEdACBTry0ZI/sPM7Xvm/2sxe\nL1iZnKW7A4IqDVxDmxL9K/v8t1O+mPPzI93OjGe9hXnM7Yj4dz3wY+EDg85M8DrY\nOBcEEzROKBugNGyUbBhAvtAIuLAdlgwn79M+RCF/o5Nm6Xln4/0eihgVwS1oyz15\nqe0VL51H5VbP9PqVrZC53YQfiKvcaO15j4BENHR7AER+jrvpvyd9sZe75oI3FsKz\nMi8y0UH/4gMgNNT1jfvGbpbYkolTZy90njo3FCogammOrl8kUzqhbbDz5ngieRX5\nbfeEhljk+mleIduvt83kmXcvV8WCimElQc7Ymut5X+Lgoudm5Kn0+TwKLpfaJUsx\n/VTBJSBR4Xb+5/x7oypF24Vo5Q4rZXJecKNoa1evgDRJCfpnZ+zTvXTCIj27jf5d\nIYFpLsKuwcHdM2oAx0KQ+cKCTd3WMYAYlj7BX7zcI1d5XURn6eP6ULTmL28WnyGD\nuwEw/EUkcYmKGftuVD+sj6gFz8nHOkqSuP6Hsf+xLLeZUejYm72D+2lRFg+Qgjuj\nIime3UpUCiCct/LBvvcMjlO6xyc7wWPrL3TdeqV0Kv7DtP9UA3iUAQARAQABwsF8\nBCgBCAAmFiEE3EMj0XOPJzWHk9boe7UvcDb6fBgFAmYLHpAIHQNzdHVmZnMACgkQ\ne7UvcDb6fBjXmQ//e9irKOymOrXgKfTmKzr3G0RDUu8dBVpoKknGrjZ2ImQgB2P8\n7RDwmk+2pwfvAsyfak0n1UccVoP7sMleXOZHg+sGBKBfqk1v8a5XVGDTl+Ye2V9D\nbD5JrFt1xMGrH0rXYYtkxD7jCjw3uNxko8Hc5kwInH2GcwUyj9fbZk60e0c0Uwz5\ntiuLJEmrh6GkFXz9MtbBKLZo4w25D14GjgwtvZa4IG9+pTLuuMS7EZHrm0Nte7lG\nrQe5M9mYp6eA90YVI6R8YEX5+t/XHTuSaxEqYnsVEZtheUXtw8W9EqSL2X7In70f\n6+haWKNhCj119rcIkOBfIwAzaok5KqJq6k6bFfQwLjWsr+5ueLWO1hEVolg8Dw4j\nVgAvwIKLmLlbKwR4/Y+XXG9sWdXKHrqye9KZXZDjKBlaGlr7pTdvuPcN6h46lXfo\nCxGOsR0viI4meRzWvu391kLRBadJLUC95Ed0S6nuyZQ8zNE+KR4Q2+qUdA55t3Rr\n8gc5ZSuaauSJySApCznL+VPnJgL1GMF16Ol1eUqHjJvElvauV/2/FkC6ag34tYkP\nMG8X4aChGc5wLgeKoHspm4esKwUFNtXwT2aZCPKFcOB5fa1IaCuTsVt5acByrmwK\nSCm82nIfx2B5hklohgKebQmLySuhZk+PQTZFCV68LcXTV0N8+4TcSdFpMy7Cw7IE\nGAEKACYCGwIWIQTcQyPRc48nNYeT1uh7tS9wNvp8GAUCaAyTygUJBcS6wAJAwXQg\nBBkBCgAdFiEECjNolhMYkbwtVqdWRfLwgiWedmEFAmYKQAIACgkQRfLwgiWedmHH\nLw//WpM2bLx1GquB6WYXFgvfik2WGlP/VQlHi1NJSa5hojEF4SOfvr1DjvNWex3U\nckr7BgnogcHyQQm9FyVoNuQ1zkZyTOZRTPojm5/+RHa74/wNATA2G4OYI5Lyl1nt\ngxS2Xzw1RazmLDKnhgXj+eZW6220xKRQipSnQ/2L7iOnXjRLVHmLg3X7kIu9HT0J\nyxjUAqhbq7wunlmbrpW+q0VNf3j+ILdRKimkQo29b1CBXgWvK7Qv8c02KSPzhJ7w\nVfdmpE2zFD1Au7ATydH2Yq3SPYfw4L9uZuBYTZ3MR+Ye/jwObD1M/g6qAIxyPjH7\nlLNLgLF2lweMLfCNVKHhEbviyXCng7X3p3KpQdMpRG406UlcLSK5leFpOlbvjwND\nlh/WLIqkyHwXaFFuF0iFtddvaRSwOgR2QFfFGNuc2tw7ybfFLY5CnrPsIHLY79EE\n2F3TlGFjn9A6aXyrTyHjnjRlqhfcoH0eVNyymvpXBuWqNXRbLiO+pEX0qJp1sfY7\nXsPKrZZVvbCagwIuVOWx0JmfBCT4IhdHdEnJP3NT3lH1DIdTtHoaXOiDSknWTZuI\nOJkuDzoAWt6FfoqqER4T+kM19TnKzi27NaOacv3+RcNX7eog5b/CNdR8qgRo4Pk1\nDLEn16ZJ159RtFvjLBUjT3BFxBN4TYdYdN071sF8J70r78gJEHu1L3A2+nwYNawQ\nALwTbQpS4pR6LJ9lF0byWWgKlKfVvOAjGx2RHrzATbMql/cSoer7Fne2xCUUG/Cg\nhALKRLt5bBP0OV0Sz3uW+8A51N0rhDRtbrMjJgdv1LaHcnkFC52fjovHUmUyE1Ji\nnJbA2mcoqC4qM+Tk6Hzhfk7MdqwO6Vsw4fuu56lyJNFzAHyFHgnFsBl8KaO5xJlt\nsD62FwJ/lqweydMi9hDVQBPf1caFstmUM5/p13/xtS9vPEw9FOTMnTbLY6zvzKZZ\niiohIeCjjJY3ET8tixBCPPS0I9juOZ3wrBkKfyL87bdHqwix/TEXwSfBEYvLBDrk\nYIIQOUDWc40e8SK2Jmv+PIXeBB89WX1g880zjAt33Sc2prcQYkgaUGQd0PjwsR4t\nejPeipyuyodh9tdYMcv5c5ibD+Cf3lIJacEo3dfe0IMmnR0Qr2Y/AXTDCvFbNT66\nuaXvhnvpkKyA7AmN7R28rCZ6Z4aCEAWMju0tNOtPhwBfkNMjYexIGsHQ9YOfFy5K\nMEmDfkX4eGBjJLbpwQujhPjvvxVAHozFTLNQreOJdBlMyBQ2KCo7xVp/0val0a6U\nniwPA2pkifMxUajo3XtWBK0YyXSAOmW/OGTjE0DzOhO47gffe2umkdKhpN6crGsJ\nobgYy1udnCj5ZgxvSQtwvGsVzCyPDZX2gXKsGua5hyMAwsOyBBgBCgAmFiEE3EMj\n0XOPJzWHk9boe7UvcDb6fBgFAmYKQAICGwIFCQPCZwACQAkQe7UvcDb6fBjBdCAE\nGQEKAB0WIQQKM2iWExiRvC1Wp1ZF8vCCJZ52YQUCZgpAAgAKCRBF8vCCJZ52Yccv\nD/9akzZsvHUaq4HpZhcWC9+KTZYaU/9VCUeLU0lJrmGiMQXhI5++vUOO81Z7HdRy\nSvsGCeiBwfJBCb0XJWg25DXORnJM5lFM+iObn/5Edrvj/A0BMDYbg5gjkvKXWe2D\nFLZfPDVFrOYsMqeGBeP55lbrbbTEpFCKlKdD/YvuI6deNEtUeYuDdfuQi70dPQnL\nGNQCqFurvC6eWZuulb6rRU1/eP4gt1EqKaRCjb1vUIFeBa8rtC/xzTYpI/OEnvBV\n92akTbMUPUC7sBPJ0fZirdI9h/Dgv25m4FhNncxH5h7+PA5sPUz+DqoAjHI+MfuU\ns0uAsXaXB4wt8I1UoeERu+LJcKeDtfencqlB0ylEbjTpSVwtIrmV4Wk6Vu+PA0OW\nH9YsiqTIfBdoUW4XSIW1129pFLA6BHZAV8UY25za3DvJt8UtjkKes+wgctjv0QTY\nXdOUYWOf0DppfKtPIeOeNGWqF9ygfR5U3LKa+lcG5ao1dFsuI76kRfSomnWx9jte\nw8qtllW9sJqDAi5U5bHQmZ8EJPgiF0d0Sck/c1PeUfUMh1O0ehpc6INKSdZNm4g4\nmS4POgBa3oV+iqoRHhP6QzX1OcrOLbs1o5py/f5Fw1ft6iDlv8I11HyqBGjg+TUM\nsSfXpknXn1G0W+MsFSNPcEXEE3hNh1h03TvWwXwnvSvvyEoWD/96wPLBbNIKOgk9\n0MaO0HchgH06aqu1zGna9pVubiZRO0WHLOSMHg7XWBnMeKJ45YTgob1f7f2g3QWD\nMNgWiT8xKlArk6YaPFr20a5UybzuATpOkMNhUTn6iaXiDVcBAJfCU6D1yyJ2Ovc4\nSWKF8VLW3TCHLsVtt8S4TU+K0Vy3AwyRmVK7m9ONjYQRJ6j6akggtQRb6MIFzHvF\n3oWX6TOyd26yPIKOJFZ5hHjM44WjEZ8zo3sulCDRPDrgjD/Cw1SwODPVHJb5G3Ee\n/178s1dgxZS6vmMzQuCvnMzfr562sG5QdbFdyFkVHBHxutsFCBh1CMvePE+x5Y9Y\nqETY4pYg5rQzJTs48vy5gnWeOGB92nO93KSzlT+zyF3TYDW+TiYL9gMmIp76yrG1\nqoArByI3Ia/CmWM+MoAcT64HwlS0wmfVdiHGA+kNZmAq1zX1cle/RsoqYM9iEnNe\nvKAho/dVIFPW3FmgoPTpWDvTO1kMZ0NzGQiVl4Dev3LQFwfWPM8fHml5OQmQGjbl\n+HjFUOhVg9iXNeYDEDS2T1xG1ee/HHkjSq0uRvaYqanM/rCm98RJMeuDo8FGYz0W\nz0vpWiUDZasY6VcyqsiQ5FDhQo54zgig7tO5GevHUdbjA910Zg9DZ0yTKzlPz1tk\nYOfv4jaWHKjZQfcCKwBuQpLZbpqrK87BTQRmCkAEARAAv0pEjGW7tNBe3q6m8uS9\nEMJsgsoUFw0k6vobsmfIT4TQP8eVK8eu5X4PejMW3hG7Lo/RZsJJ63BsbREF13jU\nLAR/8aauMgFC5ik0Bj23/mnzaLE1RlvFJFAxn1ZpSeoQAZTHYsqRVYXc4FzaDxpX\nI0wt1k3udRl/YBnPlk0AQpP9G+zK9nRaccyIAy0mCbsy35wsrZi1DmlPSJGFLiWO\n2qHb6Ewwb2O/pq1mzPHoN02oPW+QfyXydxqUXVALCJalEkAS5vf6rD2tD/zkXAsW\nX3QoCtP0tcvyV5BFhAizndo5HRRqOpEuLUfGbccR7uypfAndlrtAb7FK1NQ7uE4t\nVVzba/38krM2yYC2WoNNG/KDEKHP9E0oxwqYxjYUAbYgoRxDNPiB6I+hdN6NSnKF\nym90GLULWiN7kZ0WW/A8co/acQT84xpyNdPVX6pvNHEcHVxWawgebxaa9xR/4zgZ\nyJv6afKVusJpVBgmVveV4/bxWMdS8hZHE73EGYw3gJjcvrS9Fenn1bPjiwE85q0P\nDd1HP1aeQxHdZkjwwO5cjZWaD2xvkbb0H/QmNLivoimazck4o/YHjr2X99fns84G\nEGoUMufo3U0QDDOnGdKfXF5XQ2nm8RYVLLdCPLnuR0SpgieTfg277UqF2ucXU+Ij\nFs69OVscursTz2veKwAYe4sAEQEAAcLBfAQoAQgAJhYhBNxDI9Fzjyc1h5PW6Hu1\nL3A2+nwYBQJmCx6LCB0Dc3R1ZmZzAAoJEHu1L3A2+nwYCHAQAIHFVo0yaJ5H+sQy\n6eOFxOsd4lZRyUVKUdohnLmIQUWp5KyTN7ZdpaIB4+n8fqfjNgJIZeMTArnE7i9g\n5TDIaOfKUQRMlPx4XyniIcgwtJoiCHhWrhL3WMqhg5Jx94K2aD76P+xv89ekEdRa\nRXEJXOUW5qMxqGKPFXPHBUU+qnpKGU7wtXNxL1PWkiLl6gO/B3thW9734aZkebkU\npddzYs26P7VITONUzUUSsFZiDl8dxfC49VwaPh1YXdtJo6NAr34JJ3741mc9Qgli\nw9vq+fEYkaozFKAtipjdTohHSIoRe92msKCCPvlnB6dcTS/7QOGwrzreEKrls5mh\nYIUcHgAXEZnkg7P3CxYqwEJoN/j10M0fnXkRrH3+0EVy988LJjV2yB0Ss20SrvyE\n1eHYzoHbFHs3394LnOPGsT1QNu7pBvFPz+6vg35RuPMbctKXpIKejAMZ1/GWjN0F\njG4MxcDa2RKDn47tKAMPXwfkr6nDnfvmQPetVc17aUsRoQNcDUVnpKyyWm5KeSxH\nHdQ9LvDh4sAH0nZ4dl4xrdb/eB4mis+gXMDwHhbNODjPG42YXaioWvaoUEQzVYR+\nuCyclk5zivzSYCcuZk2alxbRiMBz1gbGRLlf2k9KGv8jv0cg0bxiOd8J0+yERiVK\nzvKllL4Fnkd9ltHzu8qN8w60Nb3lwsF8BBgBCgAmAhsMFiEE3EMj0XOPJzWHk9bo\ne7UvcDb6fBgFAmgMk8oFCQXEur4ACgkQe7UvcDb6fBjHvBAAqdalqMLufqi1ZBvx\ns/4UipLfgTND+hheVU7el4VhTJi03k4cxv6hsU55XXSQDCd0w+gquXLVzyxf/RTX\nSyCa4EsAfaYJgJjlgt/p+/6Lozs1s4QiGfSTBgT0WffysWuJTki5fh1kL8irhUV1\nVxadVrNVIyB5msUZarmtpaKD0sesRa+15exuaV2c3PWd07XK2+O22aiSn//+RDTt\nOAG30pp2lsZm3YIWqjw2vwrSPMdd0iwJbbVUhK1XwO0hOsFVrNwG3JW1Dwt2owab\nNDK3LQNWmJnmpugcMWo6/LTiVAEn+6voQVaSqQB9/TNZyO45U9F/14JOJPgMukaR\nHu8LdCLRba7s/hKitKrdugDaisQyV59FCvy3ebR/+rx/02ZockGqrJu80Jo2eMnS\n5lvmq4Ugps1j60JZr0vlKtXuvqeP94JQ7NwmfIMWa8Vi9e3iKHDwEF3OWgQuCr3q\nlo/vByyDVjCpwVIvHxnWofpCtlFic7oo2tTh9vkGzIMeD4T3IgQk8bTSGUqb9HnM\nVyKfh6sFRdcJs8Q0/+0vLGMYk+NNos+E04SDuod17eLf3lW9SJN6m4XQ21nJVW93\n6u7cSlwbfJtqhBZISebGX2omSSM3krLamMhkAzt5SzmX22J+1DIOP/mQoTutuE0o\n/pHGnGsvN1dkmyYiMAd4HZyRPjrCwXwEGAEKACYWIQTcQyPRc48nNYeT1uh7tS9w\nNvp8GAUCZgpABAIbDAUJA8JnAAAKCRB7tS9wNvp8GOxTEADCpuQTaGjZaWTggOkw\nOJBJl0uX672Ugq85elpEc8f/GwtMJE7B1YL2PC1mhQWs2o6Kymc0e687B8xCfR08\ngUjFs7kZlF+9aPXuqP413cK7G/wng2l3KkFMYQm87hbbxAsvyRYlHwU+Ye2xeAGk\n4Gx/lAut4iBfLGVE4myiUVVcUoZLplgF5kUDudogFM5/OcvbDRGkrsFqgA7QL+U6\nMcQgLMZ7nNu9fvd4WVRWB/O/4nLxJDZBVo6O7iUZWQdo3oB+UkBeq05T/+g/UeQX\nwA8sG1m7FsVGNvP9Nol5SL1+zMPDlbJAPmjzg8829afZFbbEvztUUs2A3E+JC2LZ\nMbrx+STwSMa7IIe9nhVnNrMNecpccdLSXgb7VhnSmd6MbNzAb4HEWTf52akEpePE\nh9QeDWw4bUpZe6sM+QEX/D+YSKwuK4RSjDl4iJEIif47rOmyWnJSmLRUfTs0VUH3\n5Jv3Zpd661bVcuNVK2NEcbkYWgMCxOaPKepQj+nH6g9HuWLhS0s+uYkusYwXap5P\nYSn7iZnC1Bjc3H25zIsvfUVd4qPBYdV5kNHH7ijjOxrkUbC2+x8P6D+pkpLD7kMF\nV6gv0isaE3hHDbOwgjL3QaATmXownzMmV7EHBhEpZM+mUEO43urQt6lggI2B8PZq\nVRBkNie+YwUZiShpySrQzdv2Ls7BTQRmCkAEARAAwkGrp3LfS9+dboihWPFr+GOD\njNJd360/Lq+CPRcc+ckC5o/5oc4JwHqRzfd8rgKkhbql6b3vpDQWrYJmHdtiA2eS\nyf/4thGYvTqBXMZyXvOMImkpLs7MEqdX0ef+UgzGhhHMTWosik4bx6tgLCQeBsvN\nG7gWTICxx6jagMnpKq9dfDcg5LYZbPEHIhsqeZZBQofveGTwQ1KSOPS9hr3EEphw\nC8u9vd1W3D9sMR0oeG2JQURzeAEvUA+K3Xoi5VuUIUIs/BynwQ3+auXwj7fU2LT6\nqwc4m56Md7GovzCksOfZBLShpLBNyhQd5B88Jl7XC+TJSN3kn/wxH9LcT9Ro3tKF\nDS3N/tvDH1JQIdCJTD52zSf0qPGlon3gC99UB/MmuHZfZ+fixRT4YEkJRwlMs2KG\nFewZuEOe6cvJHO9xRTwq1XQo5W28JygUbDMb9qoo6ayXcvRyw0S0+tefIDaZTUGr\nnAd8T13QbdPQGFmMCxfpPPwzGGvIkyoxc5kmkld9Zw4AqEvHrfyOPE6iTjLx1P+9\n87qx95rjn6bFKGEybVui0MwVudjjDpq6SnbwdVFxbS/RZcCb0eIfEAj7BE57SV0x\njGS9a0H3kFAB61I4a+htUXNXVElXhvUSNUwp6sSYpMYR+0cfv/ztdbsG4ZHRxksO\nzeqKeyt8fL7JNjeBWP0AEQEAAcLBfAQoAQgAJhYhBNxDI9Fzjyc1h5PW6Hu1L3A2\n+nwYBQJmCx6QCB0Dc3R1ZmZzAAoJEHu1L3A2+nwYEvUP/2XEEmfnw4JCaoMUQWxX\nAndhueeTV+dKTkbGT3P2oXqWclmDS7biG4ru2S2s8lvSBBSIN4hND5FOFa94fgZq\nr6+KRCIMESf1yJBjxDaKBkLrjGR5vvlNs5OSLX2kWFtRAvPuQbHxs5kZY093i858\n4zKR9maHE9kLsY8Y2VcaPDFsSBEzOM4VjowKrRzXpiPGQvgN5Zt5wgFko8uwaGjo\nb+jzBOoJBGfXDLZou0pmWPj3GTtKB8IF1feul5eFUlw/VrF5yn8fA/JUC+NJZcWF\nm0Y/CcKbm6glNnHs/Ux3tKUwnFjIO77xMN4YVukxT4y86VFyv7twL5P5Msdps7/C\na7WjRiEBindC3j2TBe3N/iTIIE61wn+cQIxgL82ESIyZx3+AQdAo0D+KK0sDMImJ\nwPhwi58uaXJPB2SPbn0xCO5zQRNUkaVzoy+AQXWRF2s6AHuo3Crur8EXo63vhTsk\nJ9zqcukP4iXUg97ZQjWuIIi2y32dFdjifE3mqRD3bIG5D2jBFfqgShaqMlExEh7h\nDzaw7wTyBR+fzz6DHJWnH5V7wvFIr1IZawRrNdIe+oqaoSIKoHby4+y9rUIwuDH2\nmOX0LhEadjCxyqa1uMF4Q8USHr/e7bFwPTZ/yJO9h7WWFM9CAla8wxJO9J7lZd37\nKsgxBl1BqWVbLqR2McYxPdIBwsF8BBgBCgAmAhsgFiEE3EMj0XOPJzWHk9boe7Uv\ncDb6fBgFAmgMk8oFCQXEur4ACgkQe7UvcDb6fBhIbg/+MU4MxWCU4jPnIisbQ4Ra\nCEoA6ZAL3UFJr1OglBAM3dCVs+GU1SewV21nfhmmr6NkGifStMTRAXkkakixOW2y\nsQq9RfS2wthBvjV8DsdrqZ5AWMzGddxKxSgEF1xmNbVLu2LE01stigcA0shlCoCR\n/yuRmeT/CerPwnMETfhPrldSOtAgGF/XOAZbsN3pKPNOFbwkEkB4B0yQoOGMJvBG\ncbpq5HVued9Jv8UBKBuYgLJ1YwsrYsU01+gIAVi+l33MZAvEtO5nChK9VicSWjRc\nH8OsmKEgrCzdaiCk9fNkWID2CtVRzcbORfDW5PMVEYHZYWpKC3CHvsH6Kbl/qhto\nYECTmvTdSpIxBYmRfyFXaohKORb2WLkH7K0YFi57VVzxhtOP29VkEUvDfpjD+rvO\nKLSGQQAodJaKrO+xlqYv/NCDeNn61nK3yz6PDcyM7qhDVY0gzFsI/0G4JLTGo3gH\nsnxRw0pisxbwePiBzQk72BHdekkjiV2Zel0KO7rbdzogPsUIefTFA9dxYJQNX5BI\nISG3GF8G1CzWzWIMjl8BT0SDceoi5CZJOKePQuXWKZqsCiNmkzhUpMe14rpQ1zgo\nlquCz09wBawOhjC3ZDatMRQkJr5+8725O6yUdRm/rxPG1TACah8H6r0dihnMbRsi\nKAWmRQUmQIk6ixjXqz2BnffCwXwEGAEKACYWIQTcQyPRc48nNYeT1uh7tS9wNvp8\nGAUCZgpABAIbIAUJA8JnAAAKCRB7tS9wNvp8GATrD/9HtknPxGztnEfMWxqKUeaL\n5NSTLPVuBjuis9caI3yKSmfhw2/F1aJh6kksGdC42KkZrb3cIQq6ua/bz6it3Xjo\nfLjZ8HLDT5snp74nOnvhzbHxCdhiZiy0kDQ7BWDuQX+l463OMQSa7fzp2EXOlti1\nn8x+nSeCbBZ+rsFiUpddVkaOw+xzjsCRvJd0qo4LHU0lR0f7bKhwnBwRAhWFgeAy\nf0N5qiM1UwwHbhZdGJv1RJsllvnrnsqEBLlGmAC2zI9Rd0I3LsmHcBbGy+kqXj1H\nVvKt3JnvwwFcY3Plr5r8dXEQ/yj2ZkQG1cqOHDaj4GIFqhSBchvv4u7ItR8hd6t1\nP5kE4Ln2/174O2fLzi7e+Yl7HZ7e2IDDVCHSzmFpRtpnQHuoxcI0eVRi2pMX0R+B\nFaxFtG14A1SSbhWUZPcLZmCBRvxFQ+77zF4ejf80C0E0HCGTuE7X1V8QwzYDGn/s\nJ/skwAe/D50dlHX1A2OtG1YKG/JZFu1hiqM+2FjVXVOQH2qzNmDV2xCHI6vFWBUs\ne0rkNInYDMMFb0anmKAsbwZj9+exxpX6DhjLexznoLkB2pE9tUXvTqEAqnLVTOnr\nQH17p9BQ4EfIpTSqDSPm1QfPU2Thnq2923+BPETSyyRFREWnFSZ08iR6GHeaT+S1\nLP/ND52wrv48gGe2pagTew==\n=mxMg\n-----END PGP PUBLIC KEY BLOCK-----" - } - } -} diff --git a/contexts.json b/contexts.json new file mode 100644 index 0000000..949ca69 --- /dev/null +++ b/contexts.json @@ -0,0 +1,68 @@ +{ + "osx": { + "work": { + "user": { + "name": "Elizabeth Hunt", + "email": "lizhunt@amazon.com", + "work_email": "lizhunt@amazon.com", + "personal_email": "me@liz.coffee" + }, + "paths": { + "homebrew": "/opt/homebrew", + "toolbox": "$HOME/.toolbox/bin" + }, + "features": { + "work_mode": true, + "gpg": true, + "amazon_tools": true + }, + "settings": { + "pinentry": "mac", + "theme": "work" + } + }, + "armin": { + "user": { + "name": "Elizabeth Alexander Hunt", + "email": "me@liz.coffee", + "personal_email": "me@liz.coffee" + }, + "paths": { + "homebrew": "/opt/homebrew" + }, + "features": { + "work_mode": false, + "gpg": true + }, + "settings": { + "pinentry": "mac", + "theme": "personal" + } + } + }, + "linux": { + "default": { + "user": { + "name": "Elizabeth Alexander Hunt", + "email": "me@liz.coffee", + "personal_email": "me@liz.coffee" + }, + "features": { + "work_mode": false, + "gpg": true, + "amazon_tools": false + }, + "settings": { + "pinentry": "qt", + "theme": "dark" + } + } + }, + "_global": { + "pgp": { + "signing": "7BB52F7036FA7C18", + "id": "DC4323D1738F27358793D6E87BB52F7036FA7C18", + "asc": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nComment: Hostname: \nVersion: Hockeypuck 2.2\n\nxsFNBGYKP9gBEADac5kCDgAkBqa4q8SFqhdyH4SrsSmYhFAcOecf3gfIWHOWPxOR\nKTa8O2wqTxTSNdk3JOMCUFWdLCoxC3qniv3q5bOFJUViShISrOlsZC+4BvO7Ywxe\nTAH/AJRTm4mUu3muKjPXOsH5vHxwSa19AgCCbyrmQ4jdNmVwpCZUh6ubeI0r92M+\nM/ZJOwDC2HKVf/pYuGYFzaiHcXr05T+lOG9xa5OQs+kEfNKyrFE3+vPgZ4E1Sg6g\nKGycK7BpRMGyQ1vANQCxfEZY4dyGpYb9bcRyoOS6lGUFpDz4r9yf1+PjWFw1Sw/F\nsboKbV/tGt7oCDkCKHCn2BPZJ06HwzMg4aOH6t1tkLhy4/+jE1vzWuJxo5Bk7btJ\noSFPHXWLl+M/KyYrdpWxUwzF6rQXbJX8COrziLJgmgoiquKAE2f3JNgQko10xVij\nWUAPuAZbyUR0EjnCr3TArj1Oph/gJ9IvaT/AI/11DVPmVrl8TdRX8Kd56qKJvOCr\ni99CAzJWkbt1kejzHDLsrVcH3lhWiYcHMrimG6x5zMy4O/WFIbzIGiM+ukHuDMbN\ne2Ge/ZwloDL1iu0BSjNKkpdvOt+UQfatiPqKuCJviGT+3JFEfjQwrn0nu8yj8HqH\nEOKwXU2BhfyQ8JQxhKrU+XqEnzv+Ng7pRowPNvCSMuPo/VTRwKv6ljawlQARAQAB\nzShFbGl6YWJldGggQWxleGFuZGVyIEh1bnQgPG1lQGxpei5jb2ZmZWU+wsGMBBMB\nCgA2FiEE3EMj0XOPJzWHk9boe7UvcDb6fBgFAmgMkpMCGwEECwkIBwQVCgkIBRYC\nAwEAAh4FAheAAAoJEHu1L3A2+nwYfYwP/jlSJhW3FwzdZytRJ55jZwshDAqTxPsG\nzrOQiZxZwliBD4NukAIEKo0+2Iw0azVRIYU//FCCLyCYO3mvQMvI9SNDTXV4cTPZ\nsfBqTyRhgbZj2QzKVRaN1TrV3Ck12MEJIbqIySIlmUduUmdl0KlZycFuU7zWx7lt\n2AZv6SuMUG8X66T6nhb9NqP+uKQrrTycO2qIki2/BYl4MFybkXvPH61EZ+elfXjR\nNrV5u+DrxdECxqBdg0OXb5H8FYG6hkrTDAj/cQTf/sLnGFZhw3eLkM7g6bs1lYqA\nVsHOywW3807bx20ORYn3BTzrvPJS0jZoJx+WA3j8Npnq/xV2phsoqAtfuAA9KftP\nDl250kvkSIdtsr9cZsQ8oXMPz1aWl0lv+LArmWoxkea/xLcqRUn82kprL0VDE0rn\nqhR9BE79tBXDf7I9zrW9aHpJKwhpjeeIatePBEvU+UhwukUpWn/Gz1Ik7Xf18ocE\nMtbMwnxxAP6vTrzRewSgG7WW7UF43wKHN5Di1zREPp56IPvke65pXV+ga3yV2rRW\n28iH2ZoFgQ3iRuI2P7icmXJ//V+qWv/vd3kBPmI0OLE3sqMS7XCLMEbefCq9h0Z6\nbgbWGeqQ7r+utF1PUhUqllDxi6cJvSyjDdkipoqes8HxXjBcqsZzDIzbrOS0G2lm\nnBwTRNzZGlPcwsGRBBMBCAA7FiEE3EMj0XOPJzWHk9boe7UvcDb6fBgFAmgMf+MC\nGwEFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQe7UvcDb6fBhIrg/+P3UM\nzR1ej+oSyPfhAZax+pQTWXF0h6mKZ8eeFHbERcehd1Eu78yO6pyBYET7JMsV1riB\nOqQkil5be/i10hS7TiLS21Fhasj8zv5ACwzA4EuxOklX/j/2HxRbsiJm5pi6Ati4\nuOTUGANamjvyV3Z0ORhKLOyKTL6cDr8qJkkinaOJMDYi6M7NsxPQcfFcOQmYY5Yk\nZZSwNKD+GHGJNDou5zmghnZpp+vm+B4Upckdq2/LQQyTN1mT+BegDkg90WX41qhl\ncDIfnrH7I8vu+70Z9qkA45Bhe3LtuoBt9XWbPPd0YxqE0eA4CA1Ef2cW9z/c33fv\nin8tzaCQvvzVveNZrrzy2TC6YGR+APFHvE8WU+YfL+B9vctDoxeb3l4BLFk+jKjc\nhvJhHRnTonqyZAyInNuQohKCblZXTgYmIUaPxeSgtzvjB+OKHb15gzOs6ZJGmer3\ns2L1m2niUQGAefldpAT/AN9E0mGLqbQZFAO/P2CWwF1EkV5G4hzso+MzpXT6Q+Pa\n+62ab4DFAqE4hA+PNoMufrjHtgdh7dDZkXyh6UwZSdG5rJQw7KiWhUjAwPg+rsCd\nRFPA2Znx4irrVoNrjGZwJY/6HKaeMQjW8KB4743XhH1wSeer8QeRAfsnCJbzRJMN\nBpb08Os1ATXbG1NRV4y1+mQMRDkWQbHWM9ZHMaLCwZAEEwEIADsWIQTcQyPRc48n\nNYeT1uh7tS9wNvp8GAUCaAxq6wIbAQULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIX\ngAAKCRB7tS9wNvp8GLUkD/Y9by2VHUtRRNpToJoTHh+JzgHIhXMuS+HMSE425qN3\ndYPWOq0SO29R3Ll5vpDhkMU2mhT0eLBr3iyuLFxDG8DLFYpH1Gn28Pz+pHrFx8rA\ntV3NbVZpgeZpgtqtqUDoqCOJ5t0LV6NJSpA8Ant0iqJu4+Eu09YPq/lnkFSpnucv\n0UrOBRQY3Npg69V6RV3pUfuxn/9XwJlc0iJIsOAJciTPrIl9LZ7ujq7uaElaBoSC\n2CKDgsFwaPuJU8V/6KAfzU5oM3YaFMBMWVzuTgyGCwacMemfvV4CsmG2jQa3DMvA\ndpw1nLVU7NPnM/SbeY00VXxBy3p1TMIZqursmC4QspntRe+HhZrPc0BRdt/W9dVi\nbvzlcgfDPz+RNzoUOzXRBEQbkhSlMQ3pVFTpVvuSu1OlYhApgVLd0Db/2DE7/FgG\nDsfbBXaz1P0oKSmhybARy6IZ3HqDHVfejfppqVheUAg0d14PZKaf29fA80yyKXoG\nw7TR6lE+tFBcUnYQz50ZP0gbFMHDQ10QdgDttxvulrO4WvxyYNwzwoEJc6KLj/xs\nZVU8A4AZY/wzfir2VpMlYC3l72kxgdLKBI74iEsFUH3wj4wTu9lvVYplzuZShBY+\nbrj1RRLZDKhD9jwh86sO7Wn0+Z46M1ck86SuNc4UH3WBEnu4jP3Bc2kKrRn5tl98\nwsGRBBMBCAA7FiEE3EMj0XOPJzWHk9boe7UvcDb6fBgFAmgMZsYCGwEFCwkIBwIC\nIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQe7UvcDb6fBh/XQ//YZFuVUTuIJeWC8fx\nWowI0A9kZjpY+jBTWHPv8eUXFhl4GFQPDURi1HOnpLD7ZRdY8AiteQv+ST6zqiYz\neS/8y0VeuwEa+F3tvytSAQqEczosZS1bATeOvSyHj/iOAXfUCpgYjG/xBvZaCX5W\n0f3xcaf64ZwdbPFo6jbicOO/k2Mrf9zR+6W4P9Zv439W5HED4vmOqm67+IXIerNU\n1a1TEFaMCxjagqZ1/cEEyhu3oWqQ4JEhJ15E17tGAOrvE1/zbYC4Kk+DYyikkcsU\nLnNzqcmFDMj2/jvDKuC3EwNkKWd5LCvhbcsoRv4l5MCooaDE5XULk+xCQgqyvikq\nxdPIBfSWz7y3v63ravPDEhmfjM5Rm4pQvm9COsXOw9aPE0ZPzW4nitii3D4CvXH2\nV6NeAZMqwRAPbM7DG6cXEO0JNNPD9fC6CdFykwTUHFchNkzg1SqGXV7bum5sM261\nmeIlzHJg8y1EZwwTrs20cFaKMfL8oNfyNF7TNkr13jpH/Ni7lQtNkj9VCRiRX45B\n3vstI84gzyzHP3VSkdOftFVTp3PZp2oaem4JDJ3GvkXspX1qOuumyf8GsDXOc78N\n1q6V/114bY1S51vVEBvG41icfSckhsyZrVP3b0XoFdLw4cAasdbO5UcrECvTQqhT\nObaazS9iWvhnICSa/3yGBg3qrknNIkVsaXphYmV0aCA8ZWxpemFiZXRoQHNpbXBv\nbmljLnh5ej7CwXYEMAEIACAWIQTcQyPRc48nNYeT1uh7tS9wNvp8GAUCaAxrigId\nAAAKCRB7tS9wNvp8GHf7EACFD6TYXF1oI8GnBnhpy1y201XZ3uWec19vM+A6qt5q\nMBOs4pD04YsHkem1dd9+CihbyttLykddW8a/4+VWbwvmJUd6BTyyGZusa8c7lKDw\nC4BuLviE3BcB9L693gctoBXlO9uK+BYSLkMEsakyLTd9KKKGXaeI7UOjLT4dMWa/\nKl9EpBPzqInF6bvO01BiMYfHXuwBZRPk+E4dyamc7d1Lhkmvhke+WtV2OolsWFly\nxd4j3nJG2v9+h6I8bbMf9nM8Fq2EOv3IWqvWgwROnTkfUcHKLfhx9gwVBosujizz\nwd1ouzYsqAoYJvR0s6mhFD94IafYWVrWEYUYGv8a/ZmpN9DMRU3Q8spjtIR3w7sW\nO99CYG3r0rtU+HeN416dBO7po19wMw9pUr4rp7FcMXSDmAXg02URWmn94WrlDCJ9\nQUNV4Hs8Kk+agFUxUO0PfHWKDViUy/EkPQ9oeHeqY61CBsGxBCocF6+N3bYJFhhu\nBKx6AP63bgrjNEwFjRmlKPmHa6yHoak7cA2/LsxCBXSokaQpwXQ+B0fAC63LfmTf\nKoSVrzcXh6QeX7TgdjswkeO6SxGe4pAz5jWlsukon/1Hya9VOuXFofJQpWzBauSw\ndMKRh9u3oz4gtlbOGTUgHufh2CM7QmZq+Sp7P0XHIeU0wvsSQA/e0hPeLLiU6ddB\n1sLBkQQTAQgAOxYhBNxDI9Fzjyc1h5PW6Hu1L3A2+nwYBQJoDH/AAhsBBQsJCAcC\nAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEHu1L3A2+nwY8GMP/RLj7ldNel6wef4w\nz5UO9lubAbBwJ+IGXHhw2Y++slWwu3iv8FEC+VZgXbdmDxQRsdvYQNL6Bk/F/q93\nrkDcZfnbX2EhKawSoE7ggtrb3Ev9GwokZ/3t01kMRDBxThRo8/AC93o13iPPp5X+\nSDBPQDs7We0FLD4rTrsrWHEfm6Dm6jJjP/aCFtDBYLyHEKvtsITo26nydGe85Sa3\nkE8BoKO2341l3odPFNYxUR8KJDMptyarhVOg3gcUQNEQCLODSCiYVMvFheaCxUAE\natp82wB2nF48I1gGU/LDKOMA926ybGIJPjjtmcSWF2jyvGwZKhEqGOLYs5NFXOt0\nVH24g3wL9tUMbDUuxJIkJ7eB3VYntD2Yvsa4Pv/+t6JUuyToxqw5gj+yr0kd/k+g\n5/2JAfiVnSwtp27U/jk4YlZ3s1NNs7I8+ycAJjm/aNtwsAfdBJx3kACxv9xq9UjB\n7b3Xuy2nHR5VHeOkEnKygszPsvk9ARkkM7fTur/k+FKOcnihannqILFwEW4taHzq\nuLs6hKAyDaenWaP9rMvq+i0DhhZgrNeVi5ljd9sigf1OVTnN8+fj+2VbAnAPYi7I\nIvK70oqxFc7ASrrMKZxjT213ycJwp2/tA/VCpBDNspLrABda/9dLzA35igteUaSx\nUB4gbLmlA9b0sY700LZjCdveOZDwwsGMBBMBCgA2FiEE3EMj0XOPJzWHk9boe7Uv\ncDb6fBgFAmYKP9gCGwEECwkIBwQVCgkIBRYCAwEAAh4FAheAAAoJEHu1L3A2+nwY\nm6EQAIqJdVinYGhKkVBldQ2JDFXtYQsK57qYCidEdK67k02oywXR5HOMt4QM80Hn\nZpSJg1PZ0flRecMstiYCEtv6kiZrKz2BLqBZVCKv6QjV/EXpXY+8nEk/QoPCQ1z2\nA35tP+QefsjAuvAlRW/J1++9gXEXvZk1QdXcpDewxTYO5RGOr5amwGPYsL/6fsaI\nK0ioc282JhgSpCt/N/wu7K4yViFuQ2AdP5Xd5mjdDP7mEuGYdDByzTrASRx81GBC\noKYXou+AkRWnXMZT3SgEXoYy1kYeK0oCCMsLrgUO6ses+eMC9oMcRSa4XkM3Gafq\nu1REvcyqnZucRL1+Ssq1aY0/95d4vWZ8DRtHpaGCzaWj5cQRQ0n7V2vSdFF68RX3\npCUWmu5LhTyhmC3Zs2KufNYnc2kv2kkOvmWItCUPkQcg0EO6miJ0MNCZExHV4P0e\nsGMIok5nNaaOnyWSf3P0Puzcu7J7jdyd445XYCKny638IpjhGLvlNxt7FVe75eQ7\nLtyMZQT1EYWxXnmNLPo+y+KHEFQYKIbaIQ/ol0hVwwuEPZtgv7eXXK2ZW44abCaj\nn2g+xe1pAxOBtvf6ORf6kfT07Oi/SxNQZVQNuq9GhJMlInUS9b49xM+742Qjkbcj\nnyf+N7+YLpo5JejlfLqksnkxTenxKGkcFqtymgikrANAMXVyzsFNBGgMnN8BEAC5\nCM9LxS34I5qBj8KpdBQ3gkZ4SkQT+BH21Y7QpWJ2Onk528Y4XCWU2+P+uISSpXOw\n6ZqEtyrAaE+s/DZb6EDIlJRszHAy0LnWvXJxtpaHuQJMyDigoyIZ0CZuvG8DtDSe\nC2eLBReE+G6uBK+KZTfQllR9y2v4R1p6zan8RxrdjS7EqzH1AgFiIClm6/UtKb0h\nlipGt1b2eMQG4t9d9+IMRGsdqOw9/QRJ6Abvp1eBrIH0lFHv/uMG1YERpAhgMrDk\ngxd2RcSHUZ5ZFn252Tb87ZvGSNofSLd1OomrYlXLJ2x+XsTVTqr1gu4Gwun/Ok39\ncWcgFNjuwLigGh5WBs6C9BCgzQA8ZIPsbMmWipcIOuA95tiLVRli3K6qDeX+t18q\nphDoHbZEqOGeRnoMiB619MZ5r70WSrwYFY+nkW+UhoMquNWXU3yEGt5UAfRiKvbP\nHFEqVbQkAohMc64EA2SHAPGMkV9BF9jn36nyhyEe5D/XuaWX7yQ4K5uZqTHru1Vg\n+X8xPW8VbSOEr3ogkOKY2451GMlwhFrb9c0BMGLcueX8IvUzdT7Oe7ZnigzrRrRW\nLnaR8+Ie9azkbDx7owvHfxIGfobpzc5uxdbcOzCx1n0Fe0y4UBVwMKRomROrN1Gw\nk53n36RZFL21mkqJeF+zBwYmA2EFWUxHXDTR15TZdQARAQABwsF8BBgBCgAmFiEE\n3EMj0XOPJzWHk9boe7UvcDb6fBgFAmgMnN8CGwwFCQPCZwAACgkQe7UvcDb6fBiq\nmhAAg24MYh8XOQoXZHTCnaVkLl44yShx55rMs17hTOQpwN2bfyEyaCZ+dkbq/Jpy\nG9Xz/mIBbJYJ+ApqHUqCfOsmrM7gnopaehIxxxhMIUYD3yd35DsGLTk/ggz6u7EH\nkocOPuTxMiWBGbr63SzgtIRYobEW8WEZxvWWgbVbUcbl9c+HqpN9eBazPyA/i69w\n6pWWzjmoFB14KUTFQuVc5py+P+cTZAZ9+p/jSMdq2VxMrrpc7diOmKxmoeCn/A3t\nrTGznrHNZu6DrXn+ZGImiIEHLeEwmNU1NwJZsqDCqEosX1drJLhDxJBS6xdFUZq6\neQSuqcD2rxiAYn9UrFZTkZcskUmV+/2feA5HLVWTRPYR/eMBF8llalPsxH4SiP1H\n/n/HeVHRyZSjcP/U8I4illQadZ93LSZ5K47CKvhcDJjm4t0CImFvLYllM1C1QS6K\nY2Gp06qXy5Ao0BsaCLRsqaHk8QttQU8uIrFd9q0vyt17AmEiruWQx366P1O+Kao9\n9zIU3zfSegcmGEB6MBSeaZSD06Me262d4ZguNhk8ayu1TDsTOATV4ZKrA1sERxKl\nA5J0wBS9ilJtDlcKhAUwJp4m0f32CrwZi8VV40sj7sboidyEhpCIl2o/DTQuxgaZ\nN6LN+pPZOcGJY+JSWHUS/ZGjHoe2ELpQnKEGaEenXR48c1nOwU0EaAyc0wEQAOCw\nviS/xU+aYWqSKVAxky6CXIjC6GgN+WiwhEhOCTlPAlumWzLDJkSFDjHUE0GR89XX\n4r4SIMoGqx5e9yPo8h6+5iSNgQqucZHv99QdZsBIed6+/N+c9SOV3YAiCTj94HMQ\nEBRiVatgOBWrAaaEL0+1qgD0m6BDuw8YRLS9x3Mmu23jwdQnTBmXdXnLUDq4b+cX\nIPLzq8uYLKYNskfV69hL7dc5KtFIMSvdwSwghbVe/v0tWmc+nwxJefyLGx6X/1CC\n7emclLF6IkdhDLx/M4SVZ0eOT7Kt0UK2K7FDykoTYpNgzKBuam7X60xZj31SGlRO\n4XEc+GTRChCD+up70/EKeCh4mZf2r5jB/GVAZTgp0Ujo+WLkjwRzNY6ppX7GQp5w\nS4d4DV5MasjPyvXTmE+mb1VBxCMzO02pQ1coxZtVStWYxxJtn8RrSKl8sIx6pL3B\ngNhSKqClsXrjHVVV5tH18X+LvQ8uRITFuKkhdhVZrSPKDmd30JR1IfJnk/W0vQbG\nW8iYJKcaD9leEwqjLUHYYzYFBMVoN27GxqNsJkaOBWjVVkJ5NknvzdH78tDStiHa\n0DTkj5eZkrD4/qK4XmlrInZH1sBSb3mNJZ2uwLwjpoC0ZRCHLQbtr5Nt/BmGPE6u\nBG8fsSS6SIguJFDbvXqw5Q3k3KZAnUWU2YbS3GD1ABEBAAHCw7IEGAEKACYWIQTc\nQyPRc48nNYeT1uh7tS9wNvp8GAUCaAyc0wIbAgUJA8JnAAJACRB7tS9wNvp8GMF0\nIAQZAQoAHRYhBI0e/k5s5BXDUjMNNOO6g6FGMefXBQJoDJzTAAoJEOO6g6FGMefX\nrNwQAJiayOyRvEPrV87QsnQZMm+7uAhugqK/srwhFzRg5old/RllirWsZ+UbCu7Z\nfnr14u/L00x4wJeLOCE0oE11zmlreQaXRb5cDM68AX4HwTpGAHmiDAMMgkLxHBux\np32ImAQ7hbe6uqLeNJ+zhLnACCDYjXf7djJRPsCUxIQjKIPN6BkvjLcPVgQLqbSF\ny8iWqBoAZ9ZqqOpQnqj4tN9pdYy7CZhaXK38mJTAYYBY6XVz3KNtDB1p0v0L/+qO\nWv7oSi3SXh2fccOdZcmPm4mhqR1dmdRN1WMOgTD2MoPSeTk3zcsmqKNGzCwczGUs\n0RjX4KjFjLBXWqh5liM3I/f0HdSiKQyk06arHAAOD+lb7xAT6f/SCB1YyakVsvkj\n4GfWG9Qypw8ei/cD5tEuKLZAPyrbwlzOUWNxZ1JghCArhfq3MdSvgHew7WsLjT7N\nvyGzXg4iqDSEM9gOV8Q86MPefkO26tXDCU/Yk9F7JvOeEqhoZrZsVqptIMFIE/U4\nygw/tDJVZIKBx0sAj7DCV6fmK/gLzRNObiqBRSNuI9ivcA/fUJ7q0aTVLxMRmilY\nStetF6uf4d/jVpmQyHZmLhZRdigeey7V7THPuEQoAHXA8iYz+DZNQk2woQEBH+lc\nWO4cyT1z33N25PTpEgReNP7AR6QX/uY4wP3/ra/zXPbTT3r/xNQP/22PrMdCV8u8\nFMw0606cDxHy2c7iTKFiSe8oM+wKWgVAULfnVQZ2P2L+pBMZ/k8D2IByUPiYwI68\npeDwOG7bDfmTAOawUN1LD/VdhPB2IA6rD37CPTvH2FXiwNDECUvaiRS3O4NxY6//\nnux04uaQ9RYuwJNx260cKYm3EYOPqphxB9Ke8Yg6GAVc+1ovdxKnOGdiJG0blOe1\nZ2IxKCnaP27PlMGmcU79jho4cS2+BmxzP0TF02B1KbhdZF22yVEPgQKHX0nN06XI\nOEr2NPHsLDIP5KpRZ7Y5yijEPl2i3yZMNkqguskTKJU7PgDq8MrrlLMKWT8RgeEQ\nAh7oZT1WnkIr5FiMhhaYS5N+6BurLsfIEiYvNRz9hfs9Mccu88p3H0EuGno+FKwq\n4HBu/TxiE6W2/fbPDdQVjVNQ3GH0z74qW8UBB9qHBapCYAgmo+qh6+KIRth+GCbd\nKym+IIBE9YWmmAQ0gFgAmbSaWhoUNbo5IASLMRDJL2pDk6VSWQeYpayEUfLZoI2W\nd+qIy7FYg1jvgGcELloxR+PUVYVmmWd+9uRYsmT8WFBFK5C3i4ZHYsEA2Iry24bI\ndJTwdJH7eAFKnZ6bS9+jO+mFFqP2kzV3Bjz+2cf+TGZjb9MpMYsYzkud8xfZnt33\nxjMhdHHhK05RGxFEHuxfi1txtLn8n/7SzsFNBGgMnMQBEAC8y1q1F7BpXlNsFydD\nHSwvPDk2au2marJN5T/KAF+tAWiMp3thI3ug4obcbtVJoaOVz+qvnVagsjxrwUTY\nxHo9gm5YwDTEURjloCmoClzaFnXQwIQJ2uvLCG/fNggttZYfOg76z+cF2ODdebsv\niyjgAMkEYCpMTG2zBmApSAgE4kHfhYPWZMxHcwmSxJ0bZGEucXfa9/qQdZejC/M3\nmLSn8NSXUSUC/dVqnc9SL42lKamsy/Urx2OIdBmqDTRQN41C8y8SZFApH7j93pNi\nZL6twLSiJnuxie3fyf1ofiHhaawWFAWy2nP21Kd3owGkMirs76wwZhl3TRs8cDWX\nS+h4ARrSdKw0Zy9PEkVCzrXzdYmTizDQNEm9X9a+B7OuBcPlKIwY0vnm5MdEgV+a\n7Acllp/JIGN+Uzqby9CwjlxkhmO0MGCRntMAC5hAAaUWYBfT1rIDg4h2zJN0ml0x\nMeyMxuArMlpTdA5DZde7VmOsbmDdf8z8g5pXZoVIYowmG2sX1YZaNHKkCNR3URIH\n8pAGUt4dzcHc4TLo3KEqoAc6XcntcfIRilJquutH2s89e70rSehkyARp6ftooS2T\nMSDVP9jzH0iAKO3luc64BUB3dJbeVO9vd6olgVcfFYloDNxfr731WLTROyl2fB7o\n38QskaRqps4T54Kccu85cbbNNQARAQABwsF8BBgBCgAmFiEE3EMj0XOPJzWHk9bo\ne7UvcDb6fBgFAmgMnMQCGyAFCQPCZwAACgkQe7UvcDb6fBhUDw//R7HOoczG7Qof\ndOdtDd/7Z0cT7nbk2g4DTgh4ktXdzpjG94Qo6fr+xMT9DEA2u6avS3gDXsYKMeXA\nu+Rk8w3McuOKnJBAIzBlDksrJjOt+AeMNdo1nJNX6UpWHeQ5wBuISfYxLs2QXLMR\nKx4dTrzsgTgREJz5RVLL4JXO2uIVAV691g2KWPxdNpL0rOkCbBho/M3Aqsn4qsIF\njC6rYp203L9s1Gj0u0GFPwAs5QgU5M8BCZg6kumMP85mZ0kxmpOmYc4Dam0VsXBo\njkMAhdAcmLBHYsvOvd5j/Tn9QsOCzVXicsdPj7qQKDw9KJKRpXToucawweOlooWK\nD7xOVYXGLTnC0j1L5TiwjC+26og+H4jc/fPk1kbCjKRycoNh5RHzM36UtTM4Pw5E\naJoGgyUEoEw+3dClRKIZElH1HOKuakjPPeAVaCW2M9pw4lZIQ2TP/FeKRJUPO3L2\nyHVBUl2JsPVovBltav9TaWEafNMHANRQDv6HS7dJCduuY8ikgFpmj8aq/C61RF8O\nAvMMcy7oujCIja7TKwN0ieA61hJioMeBjD0Q9KFpYUFmtO5Fi3qtetNHdzWluDdB\nGBTXrng32ix3gcXN3cWUFtuJ6bAn8PbQRzZU9vHg7W/0IcBUdblAK7TRA8nvo+Yp\nARx6mCsT3EGNkW7RNXzwND8EtPlsCzrOwU0EZgo//QEQANEe7eH2YONDIVuiNzEY\npbSE9QN+BSZvZYLN3gO/aohIzcYa30uMPyjQhtZE1pN/lTIh3mW7vA0e3KCzlkN9\nRWeV/GsjUKagTG6qRgWPL5H0K7THUnbDv4yso8F3lqQsK4pNOddvK/v1PS0tvTus\nKkYeiNbwcfrB0O2DSyJWqw+plVOODtYZsFiqKqUDmnyz5X3E3WryVM5mtEjQ92Ch\nTxb7Wgiv04dIbVl5QFDHrSLNMTAydYHFjZoDxJCiUhW+wkJwwxz8QCdrP+t0nkiR\n6pcayUiFQjtYI8ec9Y3wJJ3Aw4uLkE1o4ArtjYWR8pNSU7sjnYEvzsKXdikzFHSZ\nMOt9IlNKnQHdkBtQhcMDtuJKHThgvAZBUjv329zIl/fnkDrRu09qK6IGAjRqbeHR\nbGc4AKDsrp5XTbcSJRDbhSOVDym58dwnWgNby/oseWn9q0JY6X0pAi6f1RSDwMPz\n8Es+mtzTDMBXo1yjRkh52i7Fm5SF25hi9Sssn4gKlpmDqg8aK1Uk8iDLIj5ZN+NE\n3hZOP9ndiG6PRGoXxvl5rgU1a4m18Xvbi3tJWdmxiVkZIKovyBoTNsgBNV7dMefl\nXBsr5LgQsP/1bow53pplxM4rbI/eOXCNyOdbywu5f7ao3C1JVVrijlWxFlTjQNr7\nd+XOgGzJTBITcfY+wU8fb2UhABEBAAHCwXwEGAEKACYCGyAWIQTcQyPRc48nNYeT\n1uh7tS9wNvp8GAUCaAyTygUJBcS6xQAKCRB7tS9wNvp8GMwpEADAQcIKpUgAzuxQ\n5xdZJSYJ0vEfqyMg8EytE+WgYDCnMtENzfpsZeh+C2e1GZXu+ouWw4UFIVY1NaCO\nmOQUL/vJgbFMWAjg6xv30FF3p1FefKOnu4vtiqtyPOuHEamqiewfJGyqpLRgpbae\nBhCP+Bjugvzz/xm1ve3AqGMXrnOHK9a9KIfmM50PRpJGcmktWPjSATRfVKPQWPy+\nNF5mwpSS+hUmcdsU1RJV4V15pXC48AItb5kVvfK35KRdjmHkNOnBgR0sztr2A8pl\n15pOl74r4Pp4O+u8eQFy0wI8bglzbEw7btPcar5VcTqzDeeFX0l1CYwOYhb0ZPs6\nqYgJq1ARI9onPsJ8PeBKXZQGFb/xF/YfZQBegghtOML8Ud9LFEu2eZ/obshslLGp\n8vo5xdqTtv2i0AGBciEs61l53EeW0gQ9FfOOv9yHtyAwFeBwk5rpyUG5JVTyPe7y\n9xYXZxjC1w5kLuO23TJL6mP7T9J7P5DDN8hPIcGe3lxSl0xxPQNLw0n0k1oTrN1m\no52rDzSEPRAeo6fsrc+VJZRIJy2rrGCnGdHOaOGwYJT/ZaV9F/vWFLcZFyxKhZTR\nXkTRNrF7JyZPJUdMj/a8E40bV7MxhBuz4sPuecI2N6pwKTOETvypubb09mbhCMr2\nDmx+YeRHLYdRmk1YL/CGhZ57Ralxe8LBfAQYAQoAJgIbIBYhBNxDI9Fzjyc1h5PW\n6Hu1L3A2+nwYBQJoDGefBQkFxI6iAAoJEHu1L3A2+nwYQzMQAIhti+P/8PmmE2DZ\n7k9yirAJC9hCiVLVUOaKuXE+rC8UyPBo9mEgs2+n07O1NUaP6S/FUVusKFQcFwHI\nCsq5g7+yjaDZXoHX+xr/PjNk1o+XXFVTt+WLaGqVeI3qpdIkF37SpD1d2b+1CH4J\ngmF0Efinruo2MJ6ZC/qgB2IzVjH1NxOAe9gg8QHq8tgad+ud6LLlfxh+jOcyzct/\nebIiYaie4baWpBJGNzc3kpUtzj7NFk05Knxbmn5PtC1BlQ4sz4gi1QmvWO3i968B\n/tXGCRyf83Bcdj0d04BV6SZ2b4RSA+1Njf10nwMZxquaS5Oc+vkFtoMITYkPJRyP\nnuMsR6LhUMeMvZctPMut9zv+/4PsiopcSL5ul4/XR6MAnNXoix5S9r2cxh2asVMk\niqiocC8MPrkReKcrwmzjqKn4lzuJrtds9udSoPUud4qlBnrVvh+mF9Ck7wLOPDpq\n3ClC4pwJqA0gmBCXBl032ZyqGE1dDrHQygHJ0NMrE+B77s3/1aO8NA6UFphXSIC/\nZPcY0dXrAIgNqhIpHgE021i7zhBt4Ws0W8xwp4wheLay4QUC6ac5cn7LfNvwVpyq\nny3VwaxSI1loMQlgdyy3tAqSdWiDQK3CuN5VyXEIvE4kj/Aq2eoLeluoQQXW0mRP\nTUQ6XndDGteXkTRl9/LQeE9jQ8fgzsFNBGYKP/wBEAC2y5BnTE8IrzhMuDUY++JW\nKAE01MqkijS3wrkQKrc1NjVV69Jt8WuXWnDfAT9ifB68eJvs85w4pxOfiwag6d4r\naaqXagb6Vtrg/qPbQBWptE+aeDqYXy+eZyI84QHR68h6ik18C2TFjsT9RMaaHQJk\nfBkX4pjkaAOUVLGNgPJSm3mohIWkTl4TBwqI4S/G9ICRB0kL0k3uigGb02WHYrmZ\n5ZSk5CskP4k91rG1BtaFtwAepowG4spDszLObBDhdaziNSr5tjwoKHPGzxj+44QU\nchayfZWCQ9hEWg2uMZEDcc661EIimwv89CessaynQZzcE/acTXSmv2NGZfhozKsn\nI2G1fJvwBt9HpD/PYj2Zin+31dHBuiS318fKNyRrzlgczpooEYVtkoeyQP5jSChk\nCtqR0p8ubA9XX8Eku/jdwy08Po4S+Gle5R91/lxrH8RTaNWKLNq9AYuqyGByUyfy\nZRWjM51huGW2jYmdnvPlJY9cB4vigzQMfK8dfH91cfs0GnxX9s9k1kRyYXF5NXkh\nq8tnS89VWQMPY9AR5JBEznz6wlkMbxBh89r8dpXaMVxiMCfiNNHJ3Cljra+ufFnA\n1CYdU+AUWPx/0+nYZd53iJcfOSTR3iVXr5SEn+lCeWbi+ce3UjVzlKnBF+USPa+4\nYpWd77Kc2u9tnCUBNb6wLQARAQABwsF8BBgBCgAmAhsMFiEE3EMj0XOPJzWHk9bo\ne7UvcDb6fBgFAmgMk8kFCQXEusYACgkQe7UvcDb6fBiLGA//Wiwjn5FjONrqXyyL\nbMfFcEMrDaO8nhUgxW5BepFDqZTklrYCFK1wq74F2l0pHHs4V8o4bwvmXieFB/LM\nU+/cceR0kR9zosQl7gfQ2SPXAeB8Xw22j0YqS2eoyV076j/mV4hS+F5YZWzZn+qX\nRIIrumx1JexIXVa2uj7Dn/qFNcDJHRQ91+orVh6V9Wh1FDA3+6yvw5NB7SKkuJwX\nvOlnBPUwq1HVyqcsZ3pi1nK4bD30+gg/janWXTkqmmlMYvMkmZff4G6+oqejUfjQ\nciVvU+BWtqt+R8+UDlwkGFdvTvhlnwBDqtAKx99vHR7/LNTKiM5Rxph9AftKLg4g\nm9g3UrbtO2GHoOytVLPbZWu8768gtINXkRuEH3KK05T8N0anGC3aaUOEQs9hyNRv\nozs1WQ+S3hMeZVo1O12gej1RzI0/GNTn36sEZ3gFHg581MJ5geuNhTMd718FYSIZ\nCWjSQGZzWa7NafiGAmisG9MFNaOUNZ7lpS02xLbuVwiBVdUe7YxFDzpWn6gFh5Zr\nGt/2FsAHmb5CGwvmHQQeE9SBHR8GWj2BOCqOPDoirbRsT6TtrO5xJW3wXbKZzhjy\n85lWkAKf2TjMrIMFPbx9x8W8XwJZOF8MAIvN2eKDAt5c6C7xPgD9Qqw5CwMjQlGK\nioEboUhIni/fP/aaOb4MpyQlIJPCwXwEGAEKACYCGwwWIQTcQyPRc48nNYeT1uh7\ntS9wNvp8GAUCaAxnnwUJBcSOowAKCRB7tS9wNvp8GDpUD/91p+TTRtSaKZZYdWBf\ngDIafkn9A3w6+gyDIJVq6BEMNVhjhYLxK+wtMaw5x3vRCrLNxjqw76ecyX/dSnJd\nytIw/ty1NcPNP5Wn/oi0ZojsTUWoXbNyM8wdTQ8pKtH9kNWSxLs7o11vt3TO7Wg/\ni5k7C8OZuADuDzcIbnnK/aXwibCth6wEpi6JHP4f3DvhTztELICkwodsErGHjcV2\nAwOOsxzoJpWg6CQwoVr0parD9oTFd634IGuZ/FjvjRa1+dTSJlQ5l9PiS5coHD44\n2MxscawnKvvNdbOOvi7CqKsbnAoohybBqqi+j/vbIup1lip9szw9EVLfefDu1ww4\nQgJM/PY8FniqDqjDK1ZKO6BlpVZBASILWskDQ/SyxjE/9XgSbXzPg3o/4Yp+vkNj\n9eDeYcCpszNjmdWeDcgtKNJ9ChtymfkGVsvjQhYsljuwHtP9K84SnVrvMm0saFoR\nktbJH9Il664sGbdApntwgX0p/6CV6UsBGIWKaHC2MRIwaPGH+hzQfiLOLKi4Ub20\n2IuqYYJYw/07eujKz3IeNbk311M6tTQ+GmnXDaocrElZwstQCuMYiCFwNwUP2X9B\nlWlkjniN2lOD/cOeRwOXrgwcMZ3dcWglpmekOLCFYpm6JOJkBbVt767ytaX1E7+b\nCMoVZ69VOxCQfQIHwMbAja+jb87BTQRmCj/6ARAAyT8v/j/NFJuc3hMar3Qt3axp\nmsYN4rH82KlX+ihzDH1kXjdqBfKMetu2tE3PGZEIkkg6LZs0zlZ4dqx1gZUOAUph\ntrNNoWAGriT0di2b+yd7HUiUr4dU52e7KtPXTFOL+Y8rbVn7D2K3Xo8jNu3VGUbK\nLCupZARDzct2yYGLDjakTgzHey1pXMUWCVWeOBS5hC++oxgXL2ISD6mp8UMVAG8g\ns2iKwRRA6XSXsND7mwcXOUgUidTK7FcBTqwuCEpqLzQm5+Q2dts+HC7FmRzN8PDy\nRipYGRcO+/UeR26Q953i9lIFbVPDMgbyF3rzpYHLpL5z49P+KVJ6qJ+L6h61wxla\n2Aa7bXoQe9FburCS2+onfUBj4TNTuDoJW4Cjo/2StVHkidSs/g3p0Woxdr5vkC/3\nMIN8QmgoCzJKYNYkpO/2Y+XCIM/52ELqdDF/YgZOcikXgKTTdIJ0SZqfPrXU0mUN\ng/pxsgLYmOGeWMlVhtD8XLDGKMhjW09DiAt1rUOLppJWgCCxuXQztPrPCDeDhAGi\nPWkil24FZ9P0KVEm5VmAIE0g38o6dydZ799NpdSU541Ewt0IR6H39RmsBuwHXfay\nQEiIzIeW+LN1655clMGnfNYtirnhBYoaPN44uzxY3SzO/5uyLP8gmxHEgkVabI+J\n0gGvcvFeS5kt/ibGQ6EAEQEAAcLDsgQYAQoAJgIbAhYhBNxDI9Fzjyc1h5PW6Hu1\nL3A2+nwYBQJoDJPCBQkFxLrIAkDBdCAEGQEKAB0WIQSN++2yrCrjWZgnZeMpCbmn\n/2IT7gUCZgo/+gAKCRApCbmn/2IT7i9+EACwqQaYz+YQ+HpHsgeHWoHEDHxXuP75\nuhQkProQNOaZIFPu4xnFGCedl0Zi+1egOCdYrEVBLtNR7Ui76eCJtKMYPCoULs2O\nrztiE06FgCKZVv/ZbYk5lesBy1LpzQO8YYvUeDhr1hjiEL+5VKmlo+MSQ1CJlBWG\nHV9xyLCjR1iajqvKBxyai8qv2PBfyg6p3L2Y4fRnI68RhI5zozIzVpDOMJvOshUZ\n03l8udODYPWpbf4PZfotMVHY68n2pEhMGgnexWkv7Mjs9xuf2dqX//Art0Jo7DVP\n8Ugm5pqAnmqmnUJAKK0FH2RoCqqaQnTwfMQOhdtjhUfpZ54PTcnlpBHU88b4FQ6u\ntIqWc7PrQXAB1iKqzjUivUgNtzQx48e3hobzlexqM6W0x0hDvfUFjqdE7PborrvY\nJcvT4gahLQ2Kz8bFrrgLJyYQb1vua7I1NAXREC+xBbTeu3+35F02rc4IfLrNg53a\nA9Yibbrbp5q3e5ilbeEKP+p+p2oxSotfcs7Kx4wWTQ52l0N9G7R5hhxXY0waVjks\nvdzLEPE/QJlKNfrPNj0SuYEk8gMJTAny6Spjfj09k3V0tkpkLvka9cQp34yvkCFl\nb8WKnYtKoz1J625CFCzTwA3aOEizsiDmFNRoIuFv0/ZRzyOekTJrXQ07WBSmZAIx\n/EGWRJf0qm8Y3QkQe7UvcDb6fBiFqBAAr0efauX87nKHAQf6l7lLPnyQ1jQoixp9\nxS4+PmhMPEbbrbsAd251NHBC3wPD2YsNLQz1FE5IQLQdxhErZNbxTiHvris4aerN\nWo5e766YNgrNXdICD7sW0vYLWTr7m3GVPTU8lTSAGmp5/TfkL9VY08WIQNXdUrwZ\n6i+73+hds0ciQyREgNzylqsiB9/RTb4/EJqHOD8DvY/kJ0yajXtSq552cwLi8hXk\nbMrvMTquAdAHMUZJQXqu+no04ILiBgBx9xj99dlnLsh4vGKtqU3XM8L8XZf3rnQI\nJvH7socQMCLNU+ezGDcLuqEe6jyW6nBVaQVi5nN0jq0j4GHqiOBUAiniPHlFnCjY\n6qFhmJ5VSl3MAz2zc7fA7dAOoV+9Y24NhDKJoTe35O4lWhvYBar9qI7MaTkz7APV\npD+Vx1qIr/UsZWAL/xc7slPiyMNpNEEcB6KE/51jDHvliF4EGGhSFuZbOOo69SDI\nUZA9hsx48s+Husdppui52uDnXc5zfDnscG7wKtEv6wpfP7FJJWzTS4GaFpFEOuz8\nb+M9NhA/DqT8+Qd5r4penPWuTVBI7Ni+xK6r3vxDE86usAtcv7KqSq+lx3FK9CXe\ncLvcHyzo0d9mb9ASTOBpf1lwmL+W/oSDAVzIP5b93pwiLnLZBb48399kJRi74Apk\n3gf+CCKou+vCw7IEGAEKACYCGwIWIQTcQyPRc48nNYeT1uh7tS9wNvp8GAUCaAxn\nnwUJBcSOpQJAwXQgBBkBCgAdFiEEjfvtsqwq41mYJ2XjKQm5p/9iE+4FAmYKP/oA\nCgkQKQm5p/9iE+4vfhAAsKkGmM/mEPh6R7IHh1qBxAx8V7j++boUJD66EDTmmSBT\n7uMZxRgnnZdGYvtXoDgnWKxFQS7TUe1Iu+ngibSjGDwqFC7Njq87YhNOhYAimVb/\n2W2JOZXrActS6c0DvGGL1Hg4a9YY4hC/uVSppaPjEkNQiZQVhh1fcciwo0dYmo6r\nygccmovKr9jwX8oOqdy9mOH0ZyOvEYSOc6MyM1aQzjCbzrIVGdN5fLnTg2D1qW3+\nD2X6LTFR2OvJ9qRITBoJ3sVpL+zI7Pcbn9nal//wK7dCaOw1T/FIJuaagJ5qpp1C\nQCitBR9kaAqqmkJ08HzEDoXbY4VH6WeeD03J5aQR1PPG+BUOrrSKlnOz60FwAdYi\nqs41Ir1IDbc0MePHt4aG85XsajOltMdIQ731BY6nROz26K672CXL0+IGoS0Nis/G\nxa64CycmEG9b7muyNTQF0RAvsQW03rt/t+RdNq3OCHy6zYOd2gPWIm2626eat3uY\npW3hCj/qfqdqMUqLX3LOyseMFk0OdpdDfRu0eYYcV2NMGlY5LL3cyxDxP0CZSjX6\nzzY9ErmBJPIDCUwJ8ukqY349PZN1dLZKZC75GvXEKd+Mr5AhZW/Fip2LSqM9Setu\nQhQs08AN2jhIs7Ig5hTUaCLhb9P2Uc8jnpEya10NO1gUpmQCMfxBlkSX9KpvGN0J\nEHu1L3A2+nwYEiQP/3u8UiMr0Zlsp99F8LIy1PFKK4Z2/pb4NTXiWlwVTwpcifx6\nxpC6JGUJptXCTzAysIB0g0LJrBHN2OEuZfa/eESWb0GQDqiwBNMnOuxF1mtcmTvU\nc4VLNQALjTzMgY0mTf4HK/6XTW4hsCY9D2PbgYkBToKmBkXkDfoG5JDJHezaFZTD\nZuhhizkUnKejLMAQsODS/zHT2oGPkWISdlsgvnsu/b+BZtlbsToxNf81YBf/V0mi\n87uM+6hEyECVRpNyenHaubLCAQXTy8U8fDuPLHUy/sO6AfqrzF5rsOM7cPN7mo3C\nfQwCkacOPw5f1oDcPu53AwCr1xAPpxOfptroM7Q7XCdRmN+DlrFwC41/QEoqNSU0\nnJ3yWGOt19TtammIxSVw0obQncx/heojiIf5c6niYEFI/8xjAY63Dgl20SlBlB8l\n+VR5YlAwfuzvHzMtXqoeFx3B6yQVVvF2eZdcJ8280CWFjM1Y37/cHyyOtiPFmq3t\nuU/FIsGGjZXpvCMMqaDBO8CRpuzdPZYVoszQDB91UMPqhI9JTe3ZAw9j6aC9B1fO\nS70IbsoYpOr7nd9tjySAyk1Kt7TLxxEJ7D90q7muQeWmd6TTOYjzJCjXFZODycR8\nqL1+EJ8hytlxV0l8aGZvKHeOZc/TsNeNat8A/UvtRMKusFo9CRCXDSoBYkPCzsFN\nBGYKQAIBEADJCVl4xkREBlhCOWIqbWHDOT3ox847/5D49A1Mpb8BSDgBCx2US0oY\n7SmsntewUa7PxpJlmWon2vYj18hCZFNcMetqDFbOEdACBTry0ZI/sPM7Xvm/2sxe\nL1iZnKW7A4IqDVxDmxL9K/v8t1O+mPPzI93OjGe9hXnM7Yj4dz3wY+EDg85M8DrY\nOBcEEzROKBugNGyUbBhAvtAIuLAdlgwn79M+RCF/o5Nm6Xln4/0eihgVwS1oyz15\nqe0VL51H5VbP9PqVrZC53YQfiKvcaO15j4BENHR7AER+jrvpvyd9sZe75oI3FsKz\nMi8y0UH/4gMgNNT1jfvGbpbYkolTZy90njo3FCogammOrl8kUzqhbbDz5ngieRX5\nbfeEhljk+mleIduvt83kmXcvV8WCimElQc7Ymut5X+Lgoudm5Kn0+TwKLpfaJUsx\n/VTBJSBR4Xb+5/x7oypF24Vo5Q4rZXJecKNoa1evgDRJCfpnZ+zTvXTCIj27jf5d\nIYFpLsKuwcHdM2oAx0KQ+cKCTd3WMYAYlj7BX7zcI1d5XURn6eP6ULTmL28WnyGD\nuwEw/EUkcYmKGftuVD+sj6gFz8nHOkqSuP6Hsf+xLLeZUejYm72D+2lRFg+Qgjuj\nIime3UpUCiCct/LBvvcMjlO6xyc7wWPrL3TdeqV0Kv7DtP9UA3iUAQARAQABwsF8\nBCgBCAAmFiEE3EMj0XOPJzWHk9boe7UvcDb6fBgFAmYLHpAIHQNzdHVmZnMACgkQ\ne7UvcDb6fBjXmQ//e9irKOymOrXgKfTmKzr3G0RDUu8dBVpoKknGrjZ2ImQgB2P8\n7RDwmk+2pwfvAsyfak0n1UccVoP7sMleXOZHg+sGBKBfqk1v8a5XVGDTl+Ye2V9D\nbD5JrFt1xMGrH0rXYYtkxD7jCjw3uNxko8Hc5kwInH2GcwUyj9fbZk60e0c0Uwz5\ntiuLJEmrh6GkFXz9MtbBKLZo4w25D14GjgwtvZa4IG9+pTLuuMS7EZHrm0Nte7lG\nrQe5M9mYp6eA90YVI6R8YEX5+t/XHTuSaxEqYnsVEZtheUXtw8W9EqSL2X7In70f\n6+haWKNhCj119rcIkOBfIwAzaok5KqJq6k6bFfQwLjWsr+5ueLWO1hEVolg8Dw4j\nVgAvwIKLmLlbKwR4/Y+XXG9sWdXKHrqye9KZXZDjKBlaGlr7pTdvuPcN6h46lXfo\nCxGOsR0viI4meRzWvu391kLRBadJLUC95Ed0S6nuyZQ8zNE+KR4Q2+qUdA55t3Rr\n8gc5ZSuaauSJySApCznL+VPnJgL1GMF16Ol1eUqHjJvElvauV/2/FkC6ag34tYkP\nMG8X4aChGc5wLgeKoHspm4esKwUFNtXwT2aZCPKFcOB5fa1IaCuTsVt5acByrmwK\nSCm82nIfx2B5hklohgKebQmLySuhZk+PQTZFCV68LcXTV0N8+4TcSdFpMy7Cw7IE\nGAEKACYCGwIWIQTcQyPRc48nNYeT1uh7tS9wNvp8GAUCaAyTygUJBcS6wAJAwXQg\nBBkBCgAdFiEECjNolhMYkbwtVqdWRfLwgiWedmEFAmYKQAIACgkQRfLwgiWedmHH\nLw//WpM2bLx1GquB6WYXFgvfik2WGlP/VQlHi1NJSa5hojEF4SOfvr1DjvNWex3U\nckr7BgnogcHyQQm9FyVoNuQ1zkZyTOZRTPojm5/+RHa74/wNATA2G4OYI5Lyl1nt\ngxS2Xzw1RazmLDKnhgXj+eZW6220xKRQipSnQ/2L7iOnXjRLVHmLg3X7kIu9HT0J\nyxjUAqhbq7wunlmbrpW+q0VNf3j+ILdRKimkQo29b1CBXgWvK7Qv8c02KSPzhJ7w\nVfdmpE2zFD1Au7ATydH2Yq3SPYfw4L9uZuBYTZ3MR+Ye/jwObD1M/g6qAIxyPjH7\nlLNLgLF2lweMLfCNVKHhEbviyXCng7X3p3KpQdMpRG406UlcLSK5leFpOlbvjwND\nlh/WLIqkyHwXaFFuF0iFtddvaRSwOgR2QFfFGNuc2tw7ybfFLY5CnrPsIHLY79EE\n2F3TlGFjn9A6aXyrTyHjnjRlqhfcoH0eVNyymvpXBuWqNXRbLiO+pEX0qJp1sfY7\nXsPKrZZVvbCagwIuVOWx0JmfBCT4IhdHdEnJP3NT3lH1DIdTtHoaXOiDSknWTZuI\nOJkuDzoAWt6FfoqqER4T+kM19TnKzi27NaOacv3+RcNX7eog5b/CNdR8qgRo4Pk1\nDLEn16ZJ159RtFvjLBUjT3BFxBN4TYdYdN071sF8J70r78gJEHu1L3A2+nwYNawQ\nALwTbQpS4pR6LJ9lF0byWWgKlKfVvOAjGx2RHrzATbMql/cSoer7Fne2xCUUG/Cg\nhALKRLt5bBP0OV0Sz3uW+8A51N0rhDRtbrMjJgdv1LaHcnkFC52fjovHUmUyE1Ji\nnJbA2mcoqC4qM+Tk6Hzhfk7MdqwO6Vsw4fuu56lyJNFzAHyFHgnFsBl8KaO5xJlt\nsD62FwJ/lqweydMi9hDVQBPf1caFstmUM5/p13/xtS9vPEw9FOTMnTbLY6zvzKZZ\niiohIeCjjJY3ET8tixBCPPS0I9juOZ3wrBkKfyL87bdHqwix/TEXwSfBEYvLBDrk\nYIIQOUDWc40e8SK2Jmv+PIXeBB89WX1g880zjAt33Sc2prcQYkgaUGQd0PjwsR4t\nejPeipyuyodh9tdYMcv5c5ibD+Cf3lIJacEo3dfe0IMmnR0Qr2Y/AXTDCvFbNT66\nuaXvhnvpkKyA7AmN7R28rCZ6Z4aCEAWMju0tNOtPhwBfkNMjYexIGsHQ9YOfFy5K\nMEmDfkX4eGBjJLbpwQujhPjvvxVAHozFTLNQreOJdBlMyBQ2KCo7xVp/0val0a6U\nniwPA2pkifMxUajo3XtWBK0YyXSAOmW/OGTjE0DzOhO47gffe2umkdKhpN6crGsJ\nobgYy1udnCj5ZgxvSQtwvGsVzCyPDZX2gXKsGua5hyMAwsOyBBgBCgAmFiEE3EMj\n0XOPJzWHk9boe7UvcDb6fBgFAmYKQAICGwIFCQPCZwACQAkQe7UvcDb6fBjBdCAE\nGQEKAB0WIQQKM2iWExiRvC1Wp1ZF8vCCJZ52YQUCZgpAAgAKCRBF8vCCJZ52Yccv\nD/9akzZsvHUaq4HpZhcWC9+KTZYaU/9VCUeLU0lJrmGiMQXhI5++vUOO81Z7HdRy\nSvsGCeiBwfJBCb0XJWg25DXORnJM5lFM+iObn/5Edrvj/A0BMDYbg5gjkvKXWe2D\nFLZfPDVFrOYsMqeGBeP55lbrbbTEpFCKlKdD/YvuI6deNEtUeYuDdfuQi70dPQnL\nGNQCqFurvC6eWZuulb6rRU1/eP4gt1EqKaRCjb1vUIFeBa8rtC/xzTYpI/OEnvBV\n92akTbMUPUC7sBPJ0fZirdI9h/Dgv25m4FhNncxH5h7+PA5sPUz+DqoAjHI+MfuU\ns0uAsXaXB4wt8I1UoeERu+LJcKeDtfencqlB0ylEbjTpSVwtIrmV4Wk6Vu+PA0OW\nH9YsiqTIfBdoUW4XSIW1129pFLA6BHZAV8UY25za3DvJt8UtjkKes+wgctjv0QTY\nXdOUYWOf0DppfKtPIeOeNGWqF9ygfR5U3LKa+lcG5ao1dFsuI76kRfSomnWx9jte\nw8qtllW9sJqDAi5U5bHQmZ8EJPgiF0d0Sck/c1PeUfUMh1O0ehpc6INKSdZNm4g4\nmS4POgBa3oV+iqoRHhP6QzX1OcrOLbs1o5py/f5Fw1ft6iDlv8I11HyqBGjg+TUM\nsSfXpknXn1G0W+MsFSNPcEXEE3hNh1h03TvWwXwnvSvvyEoWD/96wPLBbNIKOgk9\n0MaO0HchgH06aqu1zGna9pVubiZRO0WHLOSMHg7XWBnMeKJ45YTgob1f7f2g3QWD\nMNgWiT8xKlArk6YaPFr20a5UybzuATpOkMNhUTn6iaXiDVcBAJfCU6D1yyJ2Ovc4\nSWKF8VLW3TCHLsVtt8S4TU+K0Vy3AwyRmVK7m9ONjYQRJ6j6akggtQRb6MIFzHvF\n3oWX6TOyd26yPIKOJFZ5hHjM44WjEZ8zo3sulCDRPDrgjD/Cw1SwODPVHJb5G3Ee\n/178s1dgxZS6vmMzQuCvnMzfr562sG5QdbFdyFkVHBHxutsFCBh1CMvePE+x5Y9Y\nqETY4pYg5rQzJTs48vy5gnWeOGB92nO93KSzlT+zyF3TYDW+TiYL9gMmIp76yrG1\nqoArByI3Ia/CmWM+MoAcT64HwlS0wmfVdiHGA+kNZmAq1zX1cle/RsoqYM9iEnNe\nvKAho/dVIFPW3FmgoPTpWDvTO1kMZ0NzGQiVl4Dev3LQFwfWPM8fHml5OQmQGjbl\n+HjFUOhVg9iXNeYDEDS2T1xG1ee/HHkjSq0uRvaYqanM/rCm98RJMeuDo8FGYz0W\nz0vpWiUDZasY6VcyqsiQ5FDhQo54zgig7tO5GevHUdbjA910Zg9DZ0yTKzlPz1tk\nYOfv4jaWHKjZQfcCKwBuQpLZbpqrK87BTQRmCkAEARAAv0pEjGW7tNBe3q6m8uS9\nEMJsgsoUFw0k6vobsmfIT4TQP8eVK8eu5X4PejMW3hG7Lo/RZsJJ63BsbREF13jU\nLAR/8aauMgFC5ik0Bj23/mnzaLE1RlvFJFAxn1ZpSeoQAZTHYsqRVYXc4FzaDxpX\nI0wt1k3udRl/YBnPlk0AQpP9G+zK9nRaccyIAy0mCbsy35wsrZi1DmlPSJGFLiWO\n2qHb6Ewwb2O/pq1mzPHoN02oPW+QfyXydxqUXVALCJalEkAS5vf6rD2tD/zkXAsW\nX3QoCtP0tcvyV5BFhAizndo5HRRqOpEuLUfGbccR7uypfAndlrtAb7FK1NQ7uE4t\nVVzba/38krM2yYC2WoNNG/KDEKHP9E0oxwqYxjYUAbYgoRxDNPiB6I+hdN6NSnKF\nym90GLULWiN7kZ0WW/A8co/acQT84xpyNdPVX6pvNHEcHVxWawgebxaa9xR/4zgZ\nyJv6afKVusJpVBgmVveV4/bxWMdS8hZHE73EGYw3gJjcvrS9Fenn1bPjiwE85q0P\nDd1HP1aeQxHdZkjwwO5cjZWaD2xvkbb0H/QmNLivoimazck4o/YHjr2X99fns84G\nEGoUMufo3U0QDDOnGdKfXF5XQ2nm8RYVLLdCPLnuR0SpgieTfg277UqF2ucXU+Ij\nFs69OVscursTz2veKwAYe4sAEQEAAcLBfAQoAQgAJhYhBNxDI9Fzjyc1h5PW6Hu1\nL3A2+nwYBQJmCx6LCB0Dc3R1ZmZzAAoJEHu1L3A2+nwYCHAQAIHFVo0yaJ5H+sQy\n6eOFxOsd4lZRyUVKUdohnLmIQUWp5KyTN7ZdpaIB4+n8fqfjNgJIZeMTArnE7i9g\n5TDIaOfKUQRMlPx4XyniIcgwtJoiCHhWrhL3WMqhg5Jx94K2aD76P+xv89ekEdRa\nRXEJXOUW5qMxqGKPFXPHBUU+qnpKGU7wtXNxL1PWkiLl6gO/B3thW9734aZkebkU\npddzYs26P7VITONUzUUSsFZiDl8dxfC49VwaPh1YXdtJo6NAr34JJ3741mc9Qgli\nw9vq+fEYkaozFKAtipjdTohHSIoRe92msKCCPvlnB6dcTS/7QOGwrzreEKrls5mh\nYIUcHgAXEZnkg7P3CxYqwEJoN/j10M0fnXkRrH3+0EVy988LJjV2yB0Ss20SrvyE\n1eHYzoHbFHs3394LnOPGsT1QNu7pBvFPz+6vg35RuPMbctKXpIKejAMZ1/GWjN0F\njG4MxcDa2RKDn47tKAMPXwfkr6nDnfvmQPetVc17aUsRoQNcDUVnpKyyWm5KeSxH\nHdQ9LvDh4sAH0nZ4dl4xrdb/eB4mis+gXMDwHhbNODjPG42YXaioWvaoUEQzVYR+\nuCyclk5zivzSYCcuZk2alxbRiMBz1gbGRLlf2k9KGv8jv0cg0bxiOd8J0+yERiVK\nzvKllL4Fnkd9ltHzu8qN8w60Nb3lwsF8BBgBCgAmAhsMFiEE3EMj0XOPJzWHk9bo\ne7UvcDb6fBgFAmgMk8oFCQXEur4ACgkQe7UvcDb6fBjHvBAAqdalqMLufqi1ZBvx\ns/4UipLfgTND+hheVU7el4VhTJi03k4cxv6hsU55XXSQDCd0w+gquXLVzyxf/RTX\nSyCa4EsAfaYJgJjlgt/p+/6Lozs1s4QiGfSTBgT0WffysWuJTki5fh1kL8irhUV1\nVxadVrNVIyB5msUZarmtpaKD0sesRa+15exuaV2c3PWd07XK2+O22aiSn//+RDTt\nOAG30pp2lsZm3YIWqjw2vwrSPMdd0iwJbbVUhK1XwO0hOsFVrNwG3JW1Dwt2owab\nNDK3LQNWmJnmpugcMWo6/LTiVAEn+6voQVaSqQB9/TNZyO45U9F/14JOJPgMukaR\nHu8LdCLRba7s/hKitKrdugDaisQyV59FCvy3ebR/+rx/02ZockGqrJu80Jo2eMnS\n5lvmq4Ugps1j60JZr0vlKtXuvqeP94JQ7NwmfIMWa8Vi9e3iKHDwEF3OWgQuCr3q\nlo/vByyDVjCpwVIvHxnWofpCtlFic7oo2tTh9vkGzIMeD4T3IgQk8bTSGUqb9HnM\nVyKfh6sFRdcJs8Q0/+0vLGMYk+NNos+E04SDuod17eLf3lW9SJN6m4XQ21nJVW93\n6u7cSlwbfJtqhBZISebGX2omSSM3krLamMhkAzt5SzmX22J+1DIOP/mQoTutuE0o\n/pHGnGsvN1dkmyYiMAd4HZyRPjrCwXwEGAEKACYWIQTcQyPRc48nNYeT1uh7tS9w\nNvp8GAUCZgpABAIbDAUJA8JnAAAKCRB7tS9wNvp8GOxTEADCpuQTaGjZaWTggOkw\nOJBJl0uX672Ugq85elpEc8f/GwtMJE7B1YL2PC1mhQWs2o6Kymc0e687B8xCfR08\ngUjFs7kZlF+9aPXuqP413cK7G/wng2l3KkFMYQm87hbbxAsvyRYlHwU+Ye2xeAGk\n4Gx/lAut4iBfLGVE4myiUVVcUoZLplgF5kUDudogFM5/OcvbDRGkrsFqgA7QL+U6\nMcQgLMZ7nNu9fvd4WVRWB/O/4nLxJDZBVo6O7iUZWQdo3oB+UkBeq05T/+g/UeQX\nwA8sG1m7FsVGNvP9Nol5SL1+zMPDlbJAPmjzg8829afZFbbEvztUUs2A3E+JC2LZ\nMbrx+STwSMa7IIe9nhVnNrMNecpccdLSXgb7VhnSmd6MbNzAb4HEWTf52akEpePE\nh9QeDWw4bUpZe6sM+QEX/D+YSKwuK4RSjDl4iJEIif47rOmyWnJSmLRUfTs0VUH3\n5Jv3Zpd661bVcuNVK2NEcbkYWgMCxOaPKepQj+nH6g9HuWLhS0s+uYkusYwXap5P\nYSn7iZnC1Bjc3H25zIsvfUVd4qPBYdV5kNHH7ijjOxrkUbC2+x8P6D+pkpLD7kMF\nV6gv0isaE3hHDbOwgjL3QaATmXownzMmV7EHBhEpZM+mUEO43urQt6lggI2B8PZq\nVRBkNie+YwUZiShpySrQzdv2Ls7BTQRmCkAEARAAwkGrp3LfS9+dboihWPFr+GOD\njNJd360/Lq+CPRcc+ckC5o/5oc4JwHqRzfd8rgKkhbql6b3vpDQWrYJmHdtiA2eS\nyf/4thGYvTqBXMZyXvOMImkpLs7MEqdX0ef+UgzGhhHMTWosik4bx6tgLCQeBsvN\nG7gWTICxx6jagMnpKq9dfDcg5LYZbPEHIhsqeZZBQofveGTwQ1KSOPS9hr3EEphw\nC8u9vd1W3D9sMR0oeG2JQURzeAEvUA+K3Xoi5VuUIUIs/BynwQ3+auXwj7fU2LT6\nqwc4m56Md7GovzCksOfZBLShpLBNyhQd5B88Jl7XC+TJSN3kn/wxH9LcT9Ro3tKF\nDS3N/tvDH1JQIdCJTD52zSf0qPGlon3gC99UB/MmuHZfZ+fixRT4YEkJRwlMs2KG\nFewZuEOe6cvJHO9xRTwq1XQo5W28JygUbDMb9qoo6ayXcvRyw0S0+tefIDaZTUGr\nnAd8T13QbdPQGFmMCxfpPPwzGGvIkyoxc5kmkld9Zw4AqEvHrfyOPE6iTjLx1P+9\n87qx95rjn6bFKGEybVui0MwVudjjDpq6SnbwdVFxbS/RZcCb0eIfEAj7BE57SV0x\njGS9a0H3kFAB61I4a+htUXNXVElXhvUSNUwp6sSYpMYR+0cfv/ztdbsG4ZHRxksO\nzeqKeyt8fL7JNjeBWP0AEQEAAcLBfAQoAQgAJhYhBNxDI9Fzjyc1h5PW6Hu1L3A2\n+nwYBQJmCx6QCB0Dc3R1ZmZzAAoJEHu1L3A2+nwYEvUP/2XEEmfnw4JCaoMUQWxX\nAndhueeTV+dKTkbGT3P2oXqWclmDS7biG4ru2S2s8lvSBBSIN4hND5FOFa94fgZq\nr6+KRCIMESf1yJBjxDaKBkLrjGR5vvlNs5OSLX2kWFtRAvPuQbHxs5kZY093i858\n4zKR9maHE9kLsY8Y2VcaPDFsSBEzOM4VjowKrRzXpiPGQvgN5Zt5wgFko8uwaGjo\nb+jzBOoJBGfXDLZou0pmWPj3GTtKB8IF1feul5eFUlw/VrF5yn8fA/JUC+NJZcWF\nm0Y/CcKbm6glNnHs/Ux3tKUwnFjIO77xMN4YVukxT4y86VFyv7twL5P5Msdps7/C\na7WjRiEBindC3j2TBe3N/iTIIE61wn+cQIxgL82ESIyZx3+AQdAo0D+KK0sDMImJ\nwPhwi58uaXJPB2SPbn0xCO5zQRNUkaVzoy+AQXWRF2s6AHuo3Crur8EXo63vhTsk\nJ9zqcukP4iXUg97ZQjWuIIi2y32dFdjifE3mqRD3bIG5D2jBFfqgShaqMlExEh7h\nDzaw7wTyBR+fzz6DHJWnH5V7wvFIr1IZawRrNdIe+oqaoSIKoHby4+y9rUIwuDH2\nmOX0LhEadjCxyqa1uMF4Q8USHr/e7bFwPTZ/yJO9h7WWFM9CAla8wxJO9J7lZd37\nKsgxBl1BqWVbLqR2McYxPdIBwsF8BBgBCgAmAhsgFiEE3EMj0XOPJzWHk9boe7Uv\ncDb6fBgFAmgMk8oFCQXEur4ACgkQe7UvcDb6fBhIbg/+MU4MxWCU4jPnIisbQ4Ra\nCEoA6ZAL3UFJr1OglBAM3dCVs+GU1SewV21nfhmmr6NkGifStMTRAXkkakixOW2y\nsQq9RfS2wthBvjV8DsdrqZ5AWMzGddxKxSgEF1xmNbVLu2LE01stigcA0shlCoCR\n/yuRmeT/CerPwnMETfhPrldSOtAgGF/XOAZbsN3pKPNOFbwkEkB4B0yQoOGMJvBG\ncbpq5HVued9Jv8UBKBuYgLJ1YwsrYsU01+gIAVi+l33MZAvEtO5nChK9VicSWjRc\nH8OsmKEgrCzdaiCk9fNkWID2CtVRzcbORfDW5PMVEYHZYWpKC3CHvsH6Kbl/qhto\nYECTmvTdSpIxBYmRfyFXaohKORb2WLkH7K0YFi57VVzxhtOP29VkEUvDfpjD+rvO\nKLSGQQAodJaKrO+xlqYv/NCDeNn61nK3yz6PDcyM7qhDVY0gzFsI/0G4JLTGo3gH\nsnxRw0pisxbwePiBzQk72BHdekkjiV2Zel0KO7rbdzogPsUIefTFA9dxYJQNX5BI\nISG3GF8G1CzWzWIMjl8BT0SDceoi5CZJOKePQuXWKZqsCiNmkzhUpMe14rpQ1zgo\nlquCz09wBawOhjC3ZDatMRQkJr5+8725O6yUdRm/rxPG1TACah8H6r0dihnMbRsi\nKAWmRQUmQIk6ixjXqz2BnffCwXwEGAEKACYWIQTcQyPRc48nNYeT1uh7tS9wNvp8\nGAUCZgpABAIbIAUJA8JnAAAKCRB7tS9wNvp8GATrD/9HtknPxGztnEfMWxqKUeaL\n5NSTLPVuBjuis9caI3yKSmfhw2/F1aJh6kksGdC42KkZrb3cIQq6ua/bz6it3Xjo\nfLjZ8HLDT5snp74nOnvhzbHxCdhiZiy0kDQ7BWDuQX+l463OMQSa7fzp2EXOlti1\nn8x+nSeCbBZ+rsFiUpddVkaOw+xzjsCRvJd0qo4LHU0lR0f7bKhwnBwRAhWFgeAy\nf0N5qiM1UwwHbhZdGJv1RJsllvnrnsqEBLlGmAC2zI9Rd0I3LsmHcBbGy+kqXj1H\nVvKt3JnvwwFcY3Plr5r8dXEQ/yj2ZkQG1cqOHDaj4GIFqhSBchvv4u7ItR8hd6t1\nP5kE4Ln2/174O2fLzi7e+Yl7HZ7e2IDDVCHSzmFpRtpnQHuoxcI0eVRi2pMX0R+B\nFaxFtG14A1SSbhWUZPcLZmCBRvxFQ+77zF4ejf80C0E0HCGTuE7X1V8QwzYDGn/s\nJ/skwAe/D50dlHX1A2OtG1YKG/JZFu1hiqM+2FjVXVOQH2qzNmDV2xCHI6vFWBUs\ne0rkNInYDMMFb0anmKAsbwZj9+exxpX6DhjLexznoLkB2pE9tUXvTqEAqnLVTOnr\nQH17p9BQ4EfIpTSqDSPm1QfPU2Thnq2923+BPETSyyRFREWnFSZ08iR6GHeaT+S1\nLP/ND52wrv48gGe2pagTew==\n=mxMg\n-----END PGP PUBLIC KEY BLOCK-----" + } + } +} diff --git a/dots.py b/dots.py deleted file mode 100755 index ac4080e..0000000 --- a/dots.py +++ /dev/null @@ -1,230 +0,0 @@ -#!/usr/bin/env python3 - -from dataclasses import dataclass -from pathlib import Path -from typing import Dict, List, Optional, Any -import argparse -import json -import logging -import os -import subprocess -import sys -import shutil -from concurrent.futures import Executor, ThreadPoolExecutor, as_completed -from functools import reduce -import jinja2 -from kawaii_logger import setup_logger - - -@dataclass(frozen=True) -class Config: - script_dir: Path = Path(__file__).parent / "home/scripts" - compiled_dir: Path = Path(".compiled_dotfiles") - contexts: Path = Path("context.json") - default_target_dir: Path = Path.home() - default_source_dir: Path = Path(".") - max_workers: int = (os.cpu_count() or 1) * 2 - - -@dataclass(frozen=True) -class Environment: - platform: str - system_name: str - context: Dict[str, Any] - verbose: bool - logger: logging.Logger - - -def main() -> None: - args = parse_arguments() - env = initialize_environment(args.verbose) - - if not (args.compile or args.stow or args.clean): - env.logger.error("you gotta specify at least one action nya~ (⁎⁍̴̆‾⁍̴̆⁎)") - sys.exit(1) - - if args.compile: - env.logger.info(f"compiling {args.source} to {args.comp} ✨✧˖°") - if not compile_dotfiles(Path(args.source), Path(args.comp), env): - env.logger.error("uh oh! failed to compile dotfiles (ɐ•゚́•̀ɐ)") - sys.exit(1) - - if args.stow: - if not stow_dotfiles(Path(args.comp), Path(args.target), env, clean=False): - env.logger.error("failed to stow dotfiles... nyaaa (╥゚╥)") - sys.exit(1) - - if args.clean: - env.logger.info(f"cleaning dotfiles from {args.target} (⌟‾╥ ‾╥)°") - if not stow_dotfiles(Path(args.comp), Path(args.target), env, clean=True): - env.logger.error("couldn’t clean dotfiles... sobs (ɐ•゚́•̀ɐ)") - sys.exit(1) - - env.logger.info("yay~ all done!! ₕᵒ. .ᵒₕ♡") - sys.exit(0) - - -def initialize_environment(verbose: bool) -> Environment: - logger = setup_logger(verbose) - platform = get_platform() - system_name = get_system_name() - context = { - **merge_dicts( - load_context(platform, system_name, Config.contexts, logger), - {"platform": platform, "system_name": system_name}, - ) - } - return Environment(platform, system_name, context, verbose, logger) - - -def copy_with_templates_rendered( - executor: Executor, source: Path, destination: Path, env: Environment -) -> bool: - shutil.copytree(source, destination, dirs_exist_ok=True) - env.logger.debug(f"copied {source} to {destination} ₰˜⋉♡") - - templates = [t for t in destination.glob("**/*.j2") if t.is_file()] - if not templates: - env.logger.debug(f"no templates to render in {source} (•ᴗ•)⁎") - return True - - for template in templates: - env.logger.debug(f"submitting template render for {template} ₰˜൨൨") - executor.submit(replace_with_rendered_template, template, env) - - return True - - -def replace_with_rendered_template(template: Path, env: Environment) -> bool: - env.logger.debug(f"rendering template {template} ✧*ฺ") - jinja_env = jinja2.Environment( - loader=jinja2.BaseLoader, - undefined=jinja2.StrictUndefined, - trim_blocks=True, - lstrip_blocks=True, - ) - rendered = render(template, jinja_env, env) - with open(template, "w") as t: - t.write(rendered) - env.logger.debug(f"removing .j2 suffix from {template.absolute()} ✧˖°") - template.rename(template.with_suffix("")) - return True - - -def compile_dotfiles(source_dir: Path, target_dir: Path, env: Environment) -> bool: - target_dir.mkdir(exist_ok=True, parents=True) - - with ThreadPoolExecutor(max_workers=Config.max_workers) as executor: - dotfile_dirs = list_dotfiles(source_dir) - env.logger.debug(f"found dotfile dirs: {dotfile_dirs}") - - futures = [ - executor.submit( - copy_with_templates_rendered, - executor, - d, - target_dir / d.name, - env, - ) - for d in dotfile_dirs - ] - env.logger.info(f"submitted {len(futures)} tasks to executor ₰˜.༄") - - return sum(1 for f in as_completed(futures) if f.result()) == len(futures) - - -def render(source: Path, jinja_env: jinja2.Environment, env: Environment) -> Optional[str]: - try: - with open(source, "r") as f: - content = f.read() - env.logger.debug(f"reading template {source} ✿.。.:・") - template = jinja_env.from_string(content) - env.logger.debug(f"rendered template from {source} ~ nyaaa :3") - return template.render(**env.context) - except Exception as e: - env.logger.error(f"couldn’t render {source}: {e} (;⌓̀_⌓́)") - return None - - -def stow_dotfiles(source_dir: Path, target_dir: Path, env: Environment, clean: bool = False) -> bool: - if not stow_installed(): - env.logger.error("stow not installed (╥゚╥)") - return False - - packages = list_dotfiles(source_dir) - stow_cmd = ["-D"] if clean else ["--no-folding"] - - for pkg in packages: - env.logger.info(f"running stow {stow_cmd} for {pkg.name} ₰˜݆༿") - run_shell_command(["stow", "-d", source_dir, "-t", target_dir, *stow_cmd, pkg.name]) - - return True - - -def stow_installed() -> bool: - return run_shell_command(["stow", "--version"]) != "" - - -def run_shell_command(cmd: List[str]) -> str: - result = subprocess.run(cmd, capture_output=True, text=True, check=True) - return result.stdout.strip() - - -def get_platform() -> str: - return run_shell_command([str(Config.script_dir / "platform.sh")]) - - -def get_system_name() -> str: - os.environ["PLATFORM"] = get_platform() - return run_shell_command([str(Config.script_dir / "system_name.sh")]) - -def list_dotfiles(p: Path) -> list[Path]: - denylist = [".", "__"] - return [d for d in p.iterdir() if d.is_dir() and all(y not in d.name for y in denylist)] - -def load_context(platform: str, system_name: str, context_file: Path, logger: logging.Logger) -> Dict[str, Any]: - try: - logger.info(f"reading context file: {context_file} ✧*:。゚✧") - with open(context_file) as f: - contexts = json.load(f) - - global_config = contexts.get("_global", {}) - platform_defaults = contexts.get(platform, {}).get("_default", {}) - defaults = merge_dicts(global_config, platform_defaults) - - system_config = contexts.get(platform, {}).get(system_name, {}) - if not system_config: - logger.warning(f"couldn’t find system-specific config for {platform}.{system_name} (ɐ•゚́•̀ɐ)") - - return merge_dicts(defaults, system_config) - except (FileNotFoundError, json.JSONDecodeError) as e: - logger.error(f"error loading context: {e} ⋆ฺ°☁。⋆ฺ °★ °。") - return {} - - -def merge_dicts(*dicts: Dict[str, Any]) -> Dict[str, Any]: - def merge(a: Dict[str, Any], b: Dict[str, Any]) -> Dict[str, Any]: - out = dict(a) - for k, v in b.items(): - if k in out and isinstance(out[k], dict) and isinstance(v, dict): - out[k] = merge(out[k], v) - else: - out[k] = v - return out - return reduce(merge, dicts, {}) - - -def parse_arguments() -> argparse.Namespace: - parser = argparse.ArgumentParser(description="cute dotfiles manager ✧˖°") - parser.add_argument("--compile", action="store_true", help="compile dotfiles ✨") - parser.add_argument("--stow", action="store_true", help="stow compiled dotfiles ♡") - parser.add_argument("--clean", action="store_true", help="clean stowed dotfiles ˚°") - parser.add_argument("--source", default=Config.default_source_dir, help="source dir for dotfiles") - parser.add_argument("--comp", default=Config.compiled_dir, help="compiled template output dir") - parser.add_argument("--target", default=Config.default_target_dir, help="stow target directory") - parser.add_argument("--verbose", "-v", action="store_true", help="enable verbose logging ✧*ฺ", default=False) - return parser.parse_args() - - -if __name__ == "__main__": - main() diff --git a/dots/aerospace/.aerospace.toml b/dots/aerospace/.aerospace.toml new file mode 100644 index 0000000..f4199e6 --- /dev/null +++ b/dots/aerospace/.aerospace.toml @@ -0,0 +1,158 @@ +after-login-command = [] +after-startup-command = [ + 'exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=4.0' +] + +start-at-login = true + +# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization +enable-normalization-flatten-containers = true +enable-normalization-opposite-orientation-for-nested-containers = true + +# See: https://nikitabobko.github.io/AeroSpace/guide#layouts +# The 'accordion-padding' specifies the size of accordion padding +# You can set 0 to disable the padding feature +accordion-padding = 30 + +# Possible values: tiles|accordion +default-root-container-layout = 'tiles' + +# Possible values: horizontal|vertical|auto +# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation, +# tall monitor (anything higher than wide) gets vertical orientation +default-root-container-orientation = 'auto' + +on-focus-changed = ['move-mouse window-lazy-center'] + +# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag +# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key +# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app +automatically-unhide-macos-hidden-apps = true + +# Possible values: (qwerty|dvorak|colemak) +# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping +[key-mapping] + preset = 'qwerty' + +# Gaps between windows (inner-*) and between monitor edges (outer-*). +# Possible values: +# - Constant: gaps.outer.top = 8 +# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24] +# In this example, 24 is a default value when there is no match. +# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'. +# See: +# https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors +[gaps] + inner.horizontal = 8 + inner.vertical = 8 + outer.left = 8 + outer.bottom = 8 + outer.top = 8 + outer.right = 8 + +[mode.main.binding] + # All possible commands: https://nikitabobko.github.io/AeroSpace/commands + + # See: https://nikitabobko.github.io/AeroSpace/commands#layout + alt-slash = 'layout tiles horizontal vertical' + alt-comma = 'layout accordion horizontal vertical' + + alt-ctrl-d = 'close' + alt-h = 'focus left' + alt-j = 'focus down' + alt-k = 'focus up' + alt-l = 'focus right' + + alt-shift-h = 'move left' + alt-shift-j = 'move down' + alt-shift-k = 'move up' + alt-shift-l = 'move right' + + alt-ctrl-space = ['mode main'] + alt-ctrl-h = ['join-with left', 'mode main'] + alt-ctrl-j = ['join-with down', 'mode main'] + alt-ctrl-k = ['join-with up', 'mode main'] + alt-ctrl-l = ['join-with right', 'mode main'] + + alt-minus = 'resize smart -50' + alt-equal = 'resize smart +50' + + # Monitor One Workspaces + alt-1 = 'workspace 1' + alt-2 = 'workspace 2' + alt-3 = 'workspace 3' + alt-4 = 'workspace 4' + alt-5 = 'workspace 5' + alt-q = 'workspace 1' + alt-w = 'workspace 2' + alt-e = 'workspace 3' + alt-r = 'workspace 4' + alt-t = 'workspace 5' + alt-shift-1 = 'move-node-to-workspace 1' + alt-shift-2 = 'move-node-to-workspace 2' + alt-shift-3 = 'move-node-to-workspace 3' + alt-shift-4 = 'move-node-to-workspace 4' + alt-shift-5 = 'move-node-to-workspace 5' + alt-shift-q = 'move-node-to-workspace 1' + alt-shift-w = 'move-node-to-workspace 2' + alt-shift-e = 'move-node-to-workspace 3' + alt-shift-r = 'move-node-to-workspace 4' + alt-shift-t = 'move-node-to-workspace 5' + + # Monitor Two Workspaces + alt-6 = 'workspace 6' + alt-7 = 'workspace 7' + alt-8 = 'workspace 8' + alt-9 = 'workspace 9' + alt-0 = 'workspace 10' + alt-y = 'workspace 6' + alt-u = 'workspace 7' + alt-i = 'workspace 8' + alt-o = 'workspace 9' + alt-p = 'workspace 10' + alt-shift-6 = 'move-node-to-workspace 6' + alt-shift-7 = 'move-node-to-workspace 7' + alt-shift-8 = 'move-node-to-workspace 8' + alt-shift-9 = 'move-node-to-workspace 9' + alt-shift-0 = 'move-node-to-workspace 10' + alt-shift-y = 'move-node-to-workspace 6' + alt-shift-u = 'move-node-to-workspace 7' + alt-shift-i = 'move-node-to-workspace 8' + alt-shift-o = 'move-node-to-workspace 9' + alt-shift-p = 'move-node-to-workspace 10' + + # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth + alt-tab = 'workspace-back-and-forth' + # See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor + alt-shift-tab = 'move-workspace-to-monitor --wrap-around next' + + # See: https://nikitabobko.github.io/AeroSpace/commands#mode + alt-shift-semicolon = 'mode service' + +[workspace-to-monitor-force-assignment] + 1 = 'main' + 2 = 'main' + 3 = 'main' + 4 = 'main' + 5 = 'main' + 6 = 'secondary' + 7 = 'secondary' + 8 = 'secondary' + 9 = 'secondary' + 10 = 'secondary' + +# 'service' binding mode declaration. +# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes +[mode.service.binding] + esc = ['reload-config', 'mode main'] + r = ['flatten-workspace-tree', 'mode main'] # reset layout + f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout + backspace = ['close-all-windows-but-current', 'mode main'] + + # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2 + #s = ['layout sticky tiling', 'mode main'] + + down = 'volume down' + up = 'volume up' + shift-down = ['volume set 0', 'mode main'] + diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/LICENSE b/dots/alacritty/.config/alacritty/alacritty-theme/LICENSE new file mode 100644 index 0000000..149bf8b --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/LICENSE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright 2019-2023 indrajit +Copyright 2023- The Alacritty Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/README.md b/dots/alacritty/.config/alacritty/alacritty-theme/README.md new file mode 100644 index 0000000..cf84987 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/README.md @@ -0,0 +1,212 @@ +# Alacritty Theme + +Collection of colorschemes for easy configuration of the [Alacritty terminal +emulator]. + +[Alacritty terminal emulator]: https://github.com/alacritty/alacritty + +## Installation + +### Imports + +Clone the repository, or download the theme of your choice: + +```sh +# We use Alacritty's default Linux config directory as our storage location here. +mkdir -p ~/.config/alacritty/themes +git clone https://github.com/alacritty/alacritty-theme ~/.config/alacritty/themes +``` + +Add an import to your `alacritty.toml` (Replace `{theme}` with your desired +colorscheme): + +```toml +[general] +import = [ + "~/.config/alacritty/themes/themes/{theme}.toml" +] +``` + +### Manual + +To manually include a colorscheme in an existing `alacritty.toml`, you just need +to copy the entire content of the theme into the root level of your +configuration file. + +## Color Schemes + +| NAME | COLORS | +|:-------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------:| +| **_acme_**
[source](https://github.com/plan9-for-vimspace/acme-colors) | ![acme](images/acme.png) +| **_afterglow_**
[source](https://github.com/YabataDesign/afterglow-theme) | ![base16_default_dark](images/afterglow.png) | +| **_alabaster_**
[source](https://github.com/tonsky/vscode-theme-alabaster) | ![alabaster](images/alabaster.png) | +| **_alabaster_dark_**
[source](https://github.com/gargakshit/vscode-theme-alabaster-dark) | ![alabaster_dark](images/alabaster_dark.png) | +| **_alacritty_0_12_**
[source](https://github.com/alacritty/alacritty/blob/v0.12.3/alacritty/src/config/color.rs) | ![alacritty_0_12](images/alacritty_0_12.png) | +| **_argonaut_**
[source](https://github.com/pwaleczek/Argonaut-theme) | ![base16_default_dark](images/argonaut.png) | +| **_ashes_dark_**
[source](https://marketplace.visualstudio.com/items?itemName=AndrsDC.base16-themes) | ![base16_ashes_dark](images/ashes_dark.png) | +| **_ashes_light_**
[source](https://marketplace.visualstudio.com/items?itemName=AndrsDC.base16-themes) | ![base16_ashes_light](images/ashes_light.png) | +| **_aura_**
[source](https://github.com/daltonmenezes/aura-theme) | ![aura](images/aura.png) | +| **_autumn_**
[source](https://github.com/YorickPeterse/Autumn.vim) | ![autumn](images/autumn.png) | +| **_ayu_dark_**
[source](https://github.com/ayu-theme/ayu-colors) | ![ayu_dark](images/ayu_dark.png) | +| **_ayu_light_**
[source](https://github.com/ayu-theme/ayu-colors) | ![ayu_light](images/ayu_light.png) | +| **_ayu_mirage_**
[source](https://github.com/ayu-theme/ayu-colors) | ![ayu_mirage](images/ayu_mirage.png) | +| **_baitong_**
[source](https://github.com/cypj/baitong-theme) | ![baitong](images/baitong.png) | +| **_base16_default_dark_**
[source](https://github.com/chriskempson/base16) | ![base16_default_dark](images/base16_default_dark.png) | +| **_blood_moon_**
[source](https://github.com/dguo/blood-moon) | ![blood_moon](images/blood_moon.png) | +| **_bluish_** | ![bluish](images/bluish.png) | +| **_breeze_**
[source](https://github.com/KDE/breeze) | ![breeze](images/breeze.png) | +| **_campbell_**
[source](https://blogs.msdn.microsoft.com/commandline/2017/08/02/updating-the-windows-console-colors) | ![campbell](images/campbell.png) | +| **_carbonfox_**
[source](https://github.com/EdenEast/nightfox.nvim/blob/7557f26defd093c4e9bc17f28b08403f706f5a44/extra/carbonfox/alacritty.toml) | ![carbonfox](images/carbonfox.png) | +| **_catppuccin_frappe_**
[source](https://github.com/catppuccin/alacritty) | ![catppuccin_frappe](images/catppuccin_frappe.png) | +| **_catppuccin_latte_**
[source](https://github.com/catppuccin/alacritty) | ![catppuccin_latte](images/catppuccin_latte.png) | +| **_catppuccin_macchiato_**
[source](https://github.com/catppuccin/alacritty) | ![catppuccin_macchiato](images/catppuccin_macchiato.png) | +| **_catppuccin_mocha_**
[source](https://github.com/catppuccin/alacritty) | ![catppuccin_mocha](images/catppuccin_mocha.png) | +| **_challenger_deep_**
[source](https://github.com/challenger-deep-theme/alacritty) | ![challenger_deep](images/challenger_deep.png) | +| **_chicago95_** | ![chicago95](images/chicago95.png) | +| **_citylights_**
[source](https://citylights.xyz/) | ![citylights](images/citylights.png) | +| **_Cobalt2_**
[source](https://github.com/wesbos/cobalt2/tree/master/Cobalt2) | ![Cobalt2](images/Cobalt2.png) | +| **_cyber_punk_neon_**
[source](https://github.com/Roboron3042/Cyberpunk-Neon) | ![cyber_punk_neon](images/cyber_punk_neon.png) | +| **_dark_pastels_**
[source](https://invent.kde.org/utilities/konsole/-/blob/master/data/color-schemes/DarkPastels.colorscheme) | ![dark_pastels](images/dark_pastels.png) | +| **_dark_plus_**
[source](https://github.com/microsoft/vscode/blob/12f9169c935bd3fd2730777130330c3bb19e0005/extensions/theme-defaults/themes/dark_plus.json) | ![dark_plus](images/dark_plus.png) | +| **_dark_pride_**
[source](https://github.com/kovidgoyal/kitty-themes/blob/master/themes/dark_pride.conf) | ![dark_pride](images/dark_pride.png) | +| **_dawnfox_**
[source](https://github.com/EdenEast/nightfox.nvim/blob/7557f26defd093c4e9bc17f28b08403f706f5a44/extra/dawnfox/alacritty.toml) | ![dawnfox](images/dawnfox.png) | +| **_dayfox_**
[source](https://github.com/EdenEast/nightfox.nvim/blob/7557f26defd093c4e9bc17f28b08403f706f5a44/extra/dayfox/alacritty.toml) | ![dayfox](images/dayfox.png) | +| **_deep_space_** | ![depp_space](images/deep_space.png) | +| **_doom_one_**
[source](https://github.com/hlissner/emacs-doom-themes) | ![doom_one](images/doom_one.png) | +| **_dracula_**
[source](https://draculatheme.com) | ![dracula](images/dracula.png) | +| **_dracula_plus_**
[source](https://draculatheme.com) | ![dracula_plus](images/dracula_plus.png) | +| **_duskfox_**
[source](https://github.com/EdenEast/nightfox.nvim/blob/7557f26defd093c4e9bc17f28b08403f706f5a44/extra/duskfox/alacritty.toml) | ![duskfox](images/duskfox.png) | +| **_enfocado_dark_**
[source](https://github.com/wuelnerdotexe/vim-enfocado.git) |![enfocado_dark](images/enfocado_dark.png) | +| **_enfocado_light_**
[source](https://github.com/wuelnerdotexe/vim-enfocado.git) |![enfocado_light](images/enfocado_light.png) | +| **_everforest_dark_**
[source](https://github.com/sainnhe/everforest) | ![everforest_dark](images/everforest_dark.png) | +| **_everforest_light_**
[source](https://github.com/sainnhe/everforest) | ![everforest_light](images/everforest_light.png) | +| **_falcon_**
[source](https://github.com/fenetikm/falcon) | ![falcon](images/falcon.png) | +| **_flat_remix_**
[source](https://github.com/Mayccoll/Gogh/blob/master/themes/flat-remix.sh) | ![flat_remix](images/flat_remix.png) | +| **_flexoki_**
[source](https://github.com/kepano/flexoki/tree/main/alacritty) | ![flexoki](images/flexoki.png) | +| **_github_dark_**
[source](https://github.com/projekt0n/github-theme-contrib/blob/main/themes/alacritty/github_dark.yml) | ![github_dark](images/github_dark.png) | +| **_github_dark_colorblind_**
[source](https://github.com/projekt0n/github-theme-contrib/blob/main/themes/alacritty/github_dark_colorblind.yml) | ![github_dark_colorblind](images/github_dark_colorblind.png) | +| **_github_dark_dimmed_**
[source](https://github.com/projekt0n/github-theme-contrib/blob/main/themes/alacritty/github_dark_dimmed.yml) | ![github_dark_dimmed](images/github_dark_dimmed.png) | +| **_github_dark_high_contrast_**
[source](https://github.com/projekt0n/github-theme-contrib/blob/main/themes/alacritty/github_dark_high_contrast.yml)| ![github_dark_high_contrast](images/github_dark_high_contrast.png)| +| **_github_dark_tritanopia_**
[source](https://github.com/projekt0n/github-theme-contrib/blob/main/themes/alacritty/github_dark_tritanopia.yml) | ![github_dark_tritanopia](images/github_dark_tritanopia.png) | +| **_github_light_**
[source](https://github.com/projekt0n/github-theme-contrib/blob/main/themes/alacritty/github_light.yml) | ![github_light](images/github_light.png) | +| **_github_light_colorblind_**
[source](https://github.com/projekt0n/github-theme-contrib/blob/main/themes/alacritty/github_light_colorblind.yml)| ![github_light_colorblind](images/github_light_colorblind.png) | +| **_github_light_high_contrast_**
[source](https://github.com/projekt0n/github-theme-contrib/blob/main/themes/alacritty/github_light_high_contrast.yml)| ![github_light_high_contrast](images/github_light_high_contrast.png)| +| **_github_light_tritanopia_**
[source](https://github.com/projekt0n/github-theme-contrib/blob/main/themes/alacritty/github_light_tritanopia.yml)| ![github_light_tritanopia](images/github_light_tritanopia.png) | +| **_google_** | ![falcon](images/google.png) | +| **_gotham_** | ![falcon](images/gotham.png) | +| **_gnome_terminal_**
[source](https://gitlab.gnome.org/GNOME/gnome-terminal) | ![gnome_terminal](images/gnome_terminal.png) | +| **_gruber_darker_**
[source](https://github.com/rexim/gruber-darker-theme) | ![gruber_darker](images/gruber_darker.png) | +| **_gruvbox_dark_**
[source](https://github.com/morhetz/gruvbox) | ![gruvbox_dark](images/gruvbox_dark.png) | +| **_gruvbox_light_**
[source](https://github.com/morhetz/gruvbox) | ![gruvbox_light](images/gruvbox_light.png) | +| **_gruvbox_material_hard_dark_**
[source](https://github.com/sainnhe/gruvbox-material) | ![gruvbox_material_hard_dark](images/gruvbox_material_hard_dark.png) | +| **_gruvbox_material_hard_light_**
[source](https://github.com/sainnhe/gruvbox-material) | ![gruvbox_material_hard_light](images/gruvbox_material_hard_light.png) | +| **_gruvbox_material_medium_dark_**
[source](https://github.com/sainnhe/gruvbox-material) | ![gruvbox_material_medium_dark](images/gruvbox_material_medium_dark.png) | +| **_gruvbox_material_medium_light_**
[source](https://github.com/sainnhe/gruvbox-material) | ![gruvbox_material_medium_light](images/gruvbox_material_medium_light.png) | +| **_hardhacker_**
[source](https://github.com/hardhackerlabs/theme-alacritty) | ![hardhacker](images/hardhacker.png) | +| **_hatsunemiku_**
[source](https://github.com/4513ECHO/vim-colors-hatsunemiku/) | ![hatsunemiku](images/hatsunemiku.png) | +| **_high_contrast_** | ![gruvbox_light](images/high_contrast.png) | +| **_horizon_dark_**
[source](https://github.com/jolaleye/horizon-theme-vscode) | ![horizon_dark](images/horizon_dark.png) | +| **_hyper_**
[source](https://hyper.is) | ![hyper](images/hyper.png) | +| **_inferno_**
[source](https://github.com/hafiz-muhammad/inferno-alacritty-theme) | ![inferno](images/inferno.png) | +| **_iris_**
[source](https://github.com/DioptricDesign/Iris) | ![iris](images/iris.png) | +| **_iterm_** | ![iterm](images/iterm.png) | +| **_kanagawa_dragon_**
[source](https://github.com/rebelot/kanagawa.nvim) | ![kanagawa_dragon](images/kanagawa_dragon.png) | +| **_kanagawa_wave_**
[source](https://github.com/rebelot/kanagawa.nvim) | ![kanagawa_wave](images/kanagawa_wave.png) | +| **_kimbie_dark_**
[source](https://github.com/idleberg/Kimbie.tmTheme) | ![kimbie_dark](images/kimbie_dark.png) | +| **_kimbie_light_**
[source](https://github.com/idleberg/Kimbie.tmTheme) | ![kimbie_dark](images/kimbie_light.png) | +| **_konsole_linux_** | ![iterm](images/konsole_linux.png) | +| **_low_contrast_** | ![iterm](images/low_contrast.png) | +| **_Mariana_**
[source](https://github.com/mbadolato/iTerm2-Color-Schemes/blob/master/alacritty/Mariana.yml) | ![iterm](images/mariana.png) | +| **_marine_dark_**
[source](https://github.com/ProDeSquare/alacritty-colorschemes/blob/master/themes/marine_dark.yaml) | ![marine_dark](images/marine_dark.png) | +| **_material_theme_**
[source](https://github.com/equinusocio/material-theme) | ![material_theme](images/material_theme.png) | +| **_material_theme_mod_** | ![material_theme_mod](images/material_theme_mod.png) | +| **_meliora_**
[source](https://github.com/ramojus/mellifluous.nvim) | ![meliora](images/meliora.png) | +| **_miasma_**
[source](https://github.com/xero/miasma.nvim/blob/main/extras/miasma.toml) | ![miasma](images/miasma.png) | +| **_midnight_haze_**
[source](https://github.com/hafiz-muhammad/midnight-haze-alacritty-theme) | ![midnight_haze](images/midnight_haze.png) | +| **_monokai_**
[source](https://unpkg.com/browse/alacritty-themes@4.1.5/themes/Monokai.dark.yml) | ![monokai](images/monokai.png) | +| **_monokai_charcoal_**
[source](https://github.com/dodeca12/Monokai-Charcoal-Theme-for-Alacritty/blob/main/monokai_charcoal_white.yaml) | ![monokai_charcoal](images/monokai_charcoal.png) | +| **_monokai_pro_**
[source](https://gist.github.com/AlphaTechnolog/d1d5f6557f77f71519cb5713268da7dd) | ![monokai_pro](images/monokai_pro.png) | +| **_moonfly_**
[source](https://github.com/bluz71/vim-moonfly-colors) | ![moonfly](images/moonfly.png) | +| **_moonlight_ii_vscode_**
[source](https://github.com/atomiks/moonlight-vscode-theme) | ![moonlight_ii_vscode](images/moonlight_ii_vscode.png) | +| **_msx_**
[source](https://paulwratt.github.io/programmers-palettes/HW-MSX/HW-MSX-palettes.html) | ![msx](images/msx.png) | +| **_nightfly_**
[source](https://github.com/bluz71/vim-nightfly-colors) | ![nightfly](images/nightfly.png) | +| **_nightfox_**
[source](https://github.com/EdenEast/nightfox.nvim/blob/7557f26defd093c4e9bc17f28b08403f706f5a44/extra/nightfox/alacritty.toml) | ![nightfox](images/nightfox.png) | +| **_night_owl_**
[source](https://vscodethemes.com/e/sdras.night-owl/night-owl) | ![night_owl](images/night_owl.png) | +| **_night_owlish_light_** | ![night_owlish_light](images/night_owlish_light.png) | +| **_noctis_lux_**
[source](https://github.com/liviuschera/noctis) | ![noctis_lux](images/noctis_lux.png) | +| **_nord_**
[source](https://github.com/nordtheme/alacritty) | ![nord](images/nord.png) | +| **_nordfox_**
[source](https://github.com/EdenEast/nightfox.nvim/blob/7557f26defd093c4e9bc17f28b08403f706f5a44/extra/nordfox/alacritty.toml) | ![nordfox](images/nordfox.png) | +| **_nordic_**
[source](https://github.com/AlexvZyl/nordic.nvim) | ![nordic](images/nordic.png) | +| **_nord_light_**
[source](https://github.com/nordtheme/alacritty/issues/28#issuecomment-1422225211) | ![nord](images/nord_light.png) | +| **_oceanic_next_**
[source](https://github.com/voronianski/oceanic-next-color-scheme) | ![oceanic_next](images/oceanic_next.png) | +| **_omni_**
[source](https://github.com/getomni/alacritty/blob/main/omni.yml) | ![omni](images/omni.png) | +| **_one_dark_** | ![one_dark](images/one_dark.png) | +| **_one_light_**
[source](https://github.com/dexpota/kitty-themes/blob/master/themes/AtomOneLight.conf) | ![one_light](images/one_light.png) | +| **_oxocarbon_**
[source](https://github.com/nyoom-engineering/oxocarbon.nvim/tree/main) | ![oxocarbon](images/oxocarbon.png) | +| **_palenight_**
[source](https://github.com/JonathanSpeek/palenight-iterm2) | ![palenight](images/palenight.png) | +| **_papercolor_dark_**
[source](https://github.com/NLKNguyen/papercolor-theme/blob/master/colors/PaperColor.vim#L126) | ![papercolor_dark](images/papercolor_dark.png) | +| **_papercolor_light_**
[source](https://github.com/NLKNguyen/papercolor-theme/blob/master/colors/PaperColor.vim#L36) | ![papercolor_light](images/papercolor_light.png) | +| **_papertheme_**
[source](https://github.com/s6muel/paper-theme/blob/main/themes/alacritty/paper-theme.yml) | ![papercolor_light](images/papertheme.png) | +|**_pastel_dark_**
[source](https://github.com/gnachman/iTerm2/blob/01c280152acebfe123f56e0215a3c178297a0edc/plists/ColorPresets.plist#L3715-L3924)| ![pastel_dark](images/pastel_dark.png) | +| **_pencil_dark_**
[source](https://github.com/mattly/iterm-colors-pencil) | ![pencil_dark](images/pencil_dark.png) | +| **_pencil_light_**
[source](https://github.com/mattly/iterm-colors-pencil) | ![pencil_light](images/pencil_light.png) | +| **_rainbow_** | ![rainbow](images/rainbow.png) | +| **_remedy_dark_**
[source](https://github.com/robertrossmann/vscode-remedy) | ![remedy_dark](images/remedy_dark.png) | +| **_rigel_**
[source](https://github.com/Rigellute/rigel) | ![rigel](images/rigel.png) | +| **_rose_pine_**
[source](https://github.com/rose-pine/alacritty) | ![rose_pine](images/rose_pine.png) | +| **_rose_pine_dawn_**
[source](https://github.com/rose-pine/alacritty) | ![rose_pine_dawn](images/rose_pine_dawn.png) | +| **_rose_pine_moon_**
[source](https://github.com/rose-pine/alacritty) | ![rose_pine_moon](images/rose_pine_moon.png) | +| **seashells**
[source](https://raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/master/schemes/SeaShells.itermcolors) | ![seashells](images/seashells.png) | +| **selenized_dark**
[source](https://github.com/jan-warchol/selenized/blob/master/terminals/alacritty/selenized-dark.yml) | ![selenized_dark](images/selenized_dark.png) | +| **selenized_light**
[source](https://github.com/jan-warchol/selenized/blob/master/terminals/alacritty/selenized-light.yml) | ![selenized_light](images/selenized_light.png) | +| **seoul256-light**
[source](https://github.com/junegunn/seoul256.vim) | ![seoul256-light](images/seoul256-light.png) | +| **smoooooth**
[source](https://github.com/gnachman/iTerm2/blob/33945e63ad48ed80d6cc1adf7cbeb663217652d2/plists/ColorPresets.plist#L4345-L4685) | ![smoooooth](images/smoooooth.png) | +| **_snazzy_**
[source](https://github.com/sindresorhus/hyper-snazzy) | ![snazzy](images/snazzy.png) | +| **_solarized_dark_**
[source](http://ethanschoonover.com/solarized) | ![solarized_dark](images/solarized_dark.png) | +| **_solarized_light_**
[source](http://ethanschoonover.com/solarized) | ![solarized_light](images/solarized_light.png) | +| **_solarized_osaka_**
[source](https://github.com/craftzdog/solarized-osaka.nvim) | ![solarized_osaka](images/solarized_osaka.png) | +| **_sonokai_**
[source](https://github.com/sainnhe/sonokai) | ![sonokai](images/sonokai.png) | +| **_spacegray_**
[source](https://github.com/SublimeText/Spacegray) | ![spacegray](images/spacegray.png) +| **_synthwave_84_**
[source](https://github.com/robb0wen/synthwave-vscode) | ![synthwave_84](images/synthwave_84.png) | +| **_taerminal_**
[source](https://github.com/cozywigwam/iterm-taerminal) | ![taerminal](images/taerminal.png) | +| **_tango_dark_**
[source](https://github.com/GNOME/gnome-terminal/blob/18939a24d21d6b7c6edd57a00a3a8a48f3aecec5/src/profile-editor.c#L213) | ![tango_dark](images/tango_dark.png) | +| **_tender_**
[source](https://github.com/huyvohcmc/tender-alacritty) | ![tender](images/tender.png) | +| **_terafox_**
[source](https://github.com/EdenEast/nightfox.nvim/blob/7557f26defd093c4e9bc17f28b08403f706f5a44/extra/terafox/alacritty.toml) | ![terafox](images/terafox.png) | +| **_terminal_app_** | ![terminal_app](images/terminal_app.png) | +| **_thelovelace_** | ![terminal_app](images/thelovelace.png) | +| **_tokyo_night_**
[source](https://github.com/zatchheems/tokyo-night-alacritty-theme) | ![tokyo_night](images/tokyo_night.png) | +| **_tokyo_night_storm_**
[source](https://github.com/zatchheems/tokyo-night-alacritty-theme) | ![tokyo_night_storm](images/tokyo_night_storm.png) | +| **_tokyo_night_enhanced_**
[source](https://github.com/Venage5603/Tokyo-Night-Dark-Enhanced) | ![tokyo_night_enhanced](images/tokyo_night_enhanced.png) | +| **_tomorrow_night_**
[source](https://github.com/ChrisKempson/Tomorrow-Theme) | ![tomorrow_night](images/tomorrow_night.png) | +| **_tomorrow_night_bright_**
[source](https://github.com/ChrisKempson/Tomorrow-Theme) | ![tomorrow_night_bright](images/tomorrow_night_bright.png) | +| **_ubuntu_**
[source](https://design.ubuntu.com/brand/colour-palette/) | ![ubuntu](images/ubuntu.png) | +| **_vesper_**
[source](https://github.com/raunofreiberg/vesper) | ![vesper](images/vesper.png) | +| **_vscode_**
[source](https://github.com/microsoft/vscode/blob/main/src/vs/workbench/contrib/terminal/common/terminalColorRegistry.ts) | ![vscode](images/vscode.png) | +| **_wombat_**
[source](https://github.com/djoyner/iTerm2-wombat) | ![wombat](images/wombat.png) | +| **_xterm_** | ![xterm](images/xterm.png) | +| **_zenburn_**
[source](https://github.com/jnurmine/Zenburn) | ![zenburn](images/zenburn.png) | + +## Contributing + +Bug reports and pull requests are welcome on GitHub at the [alacritty-theme] +repository. + +[alacritty-theme]: https://github.com/alacritty/alacritty-theme + +To add a new theme, please create a Pull Request. Note that submissions by theme +authors are not accepted, to ensure there's at least some community interest. +The following changes must be made for a new theme: + + - Add your theme to the `themes` directory with the `{theme}.toml` file format + - Create a screenshot of your theme using the [`print_colors.sh`](./print_colors.sh) script + - Add the screenshot to the `images` directory with the `{theme}.png` file format + - Add your theme to the `README.md`, following alphabetical ordering + +## Maintainers + + * **indrajit** - *Author* - [eendroroy](https://github.com/eendroroy) + * **Christian Dürr** - *Maintainer* - [chrisduerr](https://github.com/chrisduerr) + +## License + +The project is available as open source under the terms of the [Apache License, Version 2.0](LICENSE) diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/Cobalt2.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/Cobalt2.png new file mode 100644 index 0000000..f410a18 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/Cobalt2.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/acme.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/acme.png new file mode 100644 index 0000000..a4fc8d0 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/acme.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/afterglow.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/afterglow.png new file mode 100644 index 0000000..9ab4f3d Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/afterglow.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/alabaster.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/alabaster.png new file mode 100644 index 0000000..6b9042e Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/alabaster.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/alabaster_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/alabaster_dark.png new file mode 100644 index 0000000..ffea3cb Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/alabaster_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/alacritty_0_12.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/alacritty_0_12.png new file mode 100644 index 0000000..e9d3f70 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/alacritty_0_12.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/argonaut.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/argonaut.png new file mode 100644 index 0000000..2845c9b Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/argonaut.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/ashes_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/ashes_dark.png new file mode 100644 index 0000000..6380c27 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/ashes_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/ashes_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/ashes_light.png new file mode 100644 index 0000000..bb0e899 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/ashes_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/aura.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/aura.png new file mode 100644 index 0000000..3324869 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/aura.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/autumn.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/autumn.png new file mode 100644 index 0000000..9b3d4c0 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/autumn.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_dark.png new file mode 100644 index 0000000..4d4581d Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_light.png new file mode 100644 index 0000000..21d3ea4 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_mirage.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_mirage.png new file mode 100644 index 0000000..8c43703 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/ayu_mirage.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/baitong.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/baitong.png new file mode 100644 index 0000000..9950473 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/baitong.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/base16_default_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/base16_default_dark.png new file mode 100644 index 0000000..f6c9036 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/base16_default_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/blood_moon.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/blood_moon.png new file mode 100644 index 0000000..40c84ee Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/blood_moon.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/bluish.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/bluish.png new file mode 100644 index 0000000..0040739 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/bluish.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/breeze.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/breeze.png new file mode 100644 index 0000000..7a41c14 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/breeze.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/campbell.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/campbell.png new file mode 100644 index 0000000..54c9414 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/campbell.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/carbonfox.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/carbonfox.png new file mode 100644 index 0000000..2b55b8a Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/carbonfox.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_frappe.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_frappe.png new file mode 100644 index 0000000..65418b4 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_frappe.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_latte.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_latte.png new file mode 100644 index 0000000..43a289a Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_latte.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_macchiato.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_macchiato.png new file mode 100644 index 0000000..5320138 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_macchiato.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_mocha.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_mocha.png new file mode 100644 index 0000000..d61d5a2 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/catppuccin_mocha.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/challenger_deep.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/challenger_deep.png new file mode 100644 index 0000000..49c4223 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/challenger_deep.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/chicago95.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/chicago95.png new file mode 100644 index 0000000..95e2155 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/chicago95.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/citylights.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/citylights.png new file mode 100644 index 0000000..0122f7b Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/citylights.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/cyber_punk_neon.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/cyber_punk_neon.png new file mode 100644 index 0000000..ddc6f3e Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/cyber_punk_neon.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/dark_pastels.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/dark_pastels.png new file mode 100644 index 0000000..f8102f8 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/dark_pastels.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/dark_plus.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/dark_plus.png new file mode 100644 index 0000000..c09ec86 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/dark_plus.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/dark_pride.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/dark_pride.png new file mode 100644 index 0000000..c2ebcc5 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/dark_pride.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/dawnfox.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/dawnfox.png new file mode 100644 index 0000000..130bb9b Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/dawnfox.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/dayfox.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/dayfox.png new file mode 100644 index 0000000..70e557c Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/dayfox.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/deep_space.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/deep_space.png new file mode 100644 index 0000000..5ed5ffc Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/deep_space.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/doom_one.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/doom_one.png new file mode 100644 index 0000000..73818db Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/doom_one.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/dracula.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/dracula.png new file mode 100644 index 0000000..128daeb Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/dracula.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/dracula_plus.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/dracula_plus.png new file mode 100644 index 0000000..2914240 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/dracula_plus.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/duskfox.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/duskfox.png new file mode 100644 index 0000000..affc099 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/duskfox.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/enfocado_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/enfocado_dark.png new file mode 100644 index 0000000..e308ce3 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/enfocado_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/enfocado_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/enfocado_light.png new file mode 100644 index 0000000..5e9c17d Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/enfocado_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/everforest_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/everforest_dark.png new file mode 100644 index 0000000..4d26ba2 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/everforest_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/everforest_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/everforest_light.png new file mode 100644 index 0000000..520a5d5 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/everforest_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/falcon.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/falcon.png new file mode 100644 index 0000000..0509231 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/falcon.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/flat_remix.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/flat_remix.png new file mode 100644 index 0000000..524461d Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/flat_remix.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/flexoki.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/flexoki.png new file mode 100644 index 0000000..4c27f03 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/flexoki.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark.png new file mode 100644 index 0000000..066b2cf Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_colorblind.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_colorblind.png new file mode 100644 index 0000000..5e874ae Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_colorblind.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_default.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_default.png new file mode 100644 index 0000000..4de4935 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_default.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_dimmed.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_dimmed.png new file mode 100644 index 0000000..0f7e209 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_dimmed.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_high_contrast.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_high_contrast.png new file mode 100644 index 0000000..bfd9b95 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_high_contrast.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_tritanopia.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_tritanopia.png new file mode 100644 index 0000000..2d1def4 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_dark_tritanopia.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light.png new file mode 100644 index 0000000..03524f0 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_colorblind.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_colorblind.png new file mode 100644 index 0000000..4e15ec8 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_colorblind.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_default.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_default.png new file mode 100644 index 0000000..92e0264 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_default.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_high_contrast.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_high_contrast.png new file mode 100644 index 0000000..fb460e8 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_high_contrast.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_tritanopia.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_tritanopia.png new file mode 100644 index 0000000..98f274a Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/github_light_tritanopia.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/gnome_terminal.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/gnome_terminal.png new file mode 100644 index 0000000..df8d76f Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/gnome_terminal.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/google.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/google.png new file mode 100644 index 0000000..8930f0c Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/google.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/gotham.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/gotham.png new file mode 100644 index 0000000..696466d Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/gotham.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/gruber_darker.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruber_darker.png new file mode 100644 index 0000000..10fbc8a Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruber_darker.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_dark.png new file mode 100644 index 0000000..1124b94 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_light.png new file mode 100644 index 0000000..1b1efb1 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_hard_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_hard_dark.png new file mode 100644 index 0000000..226e16f Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_hard_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_hard_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_hard_light.png new file mode 100644 index 0000000..8c7a42d Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_hard_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_medium_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_medium_dark.png new file mode 100644 index 0000000..d4f725e Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_medium_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_medium_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_medium_light.png new file mode 100644 index 0000000..68464f9 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/gruvbox_material_medium_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/hardhacker.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/hardhacker.png new file mode 100644 index 0000000..9492ae4 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/hardhacker.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/hatsunemiku.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/hatsunemiku.png new file mode 100644 index 0000000..b43f1a7 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/hatsunemiku.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/high_contrast.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/high_contrast.png new file mode 100644 index 0000000..7814b33 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/high_contrast.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/horizon_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/horizon_dark.png new file mode 100644 index 0000000..f5d11e0 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/horizon_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/hyper.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/hyper.png new file mode 100644 index 0000000..f79dd00 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/hyper.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/inferno.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/inferno.png new file mode 100644 index 0000000..fe676d2 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/inferno.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/iris.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/iris.png new file mode 100644 index 0000000..812a9c6 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/iris.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/iterm.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/iterm.png new file mode 100644 index 0000000..9cec735 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/iterm.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/kanagawa_dragon.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/kanagawa_dragon.png new file mode 100644 index 0000000..dfce5ef Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/kanagawa_dragon.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/kanagawa_wave.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/kanagawa_wave.png new file mode 100644 index 0000000..21c3838 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/kanagawa_wave.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/kimbie_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/kimbie_dark.png new file mode 100644 index 0000000..666fcac Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/kimbie_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/kimbie_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/kimbie_light.png new file mode 100644 index 0000000..fb66ef4 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/kimbie_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/konsole_linux.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/konsole_linux.png new file mode 100644 index 0000000..e4b64ee Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/konsole_linux.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/low_contrast.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/low_contrast.png new file mode 100644 index 0000000..52970f5 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/low_contrast.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/mariana.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/mariana.png new file mode 100644 index 0000000..6315056 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/mariana.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/marine_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/marine_dark.png new file mode 100644 index 0000000..8ee9d86 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/marine_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/material_theme.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/material_theme.png new file mode 100644 index 0000000..3098592 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/material_theme.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/material_theme_mod.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/material_theme_mod.png new file mode 100644 index 0000000..a310664 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/material_theme_mod.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/meliora.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/meliora.png new file mode 100644 index 0000000..563cb38 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/meliora.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/miasma.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/miasma.png new file mode 100644 index 0000000..5c27f3c Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/miasma.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/midnight_haze.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/midnight_haze.png new file mode 100644 index 0000000..143c08c Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/midnight_haze.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/monokai.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/monokai.png new file mode 100644 index 0000000..1e7510b Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/monokai.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/monokai_charcoal.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/monokai_charcoal.png new file mode 100644 index 0000000..e6648a9 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/monokai_charcoal.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/monokai_pro.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/monokai_pro.png new file mode 100644 index 0000000..95437fa Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/monokai_pro.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/moonfly.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/moonfly.png new file mode 100644 index 0000000..f4c2009 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/moonfly.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/moonlight_ii_vscode.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/moonlight_ii_vscode.png new file mode 100644 index 0000000..1058371 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/moonlight_ii_vscode.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/msx.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/msx.png new file mode 100644 index 0000000..a765bfe Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/msx.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/night_owl.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/night_owl.png new file mode 100644 index 0000000..5e1af45 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/night_owl.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/night_owlish_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/night_owlish_light.png new file mode 100644 index 0000000..6178912 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/night_owlish_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/nightfly.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/nightfly.png new file mode 100644 index 0000000..3df75e2 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/nightfly.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/nightfox.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/nightfox.png new file mode 100644 index 0000000..f5e9cd6 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/nightfox.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/noctis_lux.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/noctis_lux.png new file mode 100644 index 0000000..e08c0c6 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/noctis_lux.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/nord.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/nord.png new file mode 100644 index 0000000..ad1ec75 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/nord.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/nord_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/nord_light.png new file mode 100644 index 0000000..df63d7b Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/nord_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/nordfox.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/nordfox.png new file mode 100644 index 0000000..7c3c60e Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/nordfox.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/nordic.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/nordic.png new file mode 100644 index 0000000..f4d651c Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/nordic.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/oceanic_next.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/oceanic_next.png new file mode 100644 index 0000000..2408c9e Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/oceanic_next.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/omni.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/omni.png new file mode 100644 index 0000000..efabdc8 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/omni.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/one_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/one_dark.png new file mode 100644 index 0000000..089ed78 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/one_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/one_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/one_light.png new file mode 100644 index 0000000..6c98bb1 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/one_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/oxocarbon.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/oxocarbon.png new file mode 100644 index 0000000..8a316c2 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/oxocarbon.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/palenight.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/palenight.png new file mode 100644 index 0000000..9e0fd58 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/palenight.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/papercolor_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/papercolor_dark.png new file mode 100644 index 0000000..a5d3f77 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/papercolor_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/papercolor_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/papercolor_light.png new file mode 100644 index 0000000..7e7b9e6 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/papercolor_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/papertheme.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/papertheme.png new file mode 100644 index 0000000..ec5d947 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/papertheme.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/pastel_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/pastel_dark.png new file mode 100644 index 0000000..9bfe3dd Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/pastel_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/pencil_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/pencil_dark.png new file mode 100644 index 0000000..5cf5df0 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/pencil_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/pencil_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/pencil_light.png new file mode 100644 index 0000000..c392e14 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/pencil_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/rainbow.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/rainbow.png new file mode 100644 index 0000000..1825f63 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/rainbow.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/remedy_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/remedy_dark.png new file mode 100644 index 0000000..eac67b5 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/remedy_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/rigel.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/rigel.png new file mode 100644 index 0000000..8ecf035 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/rigel.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine.png new file mode 100644 index 0000000..00de305 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine_dawn.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine_dawn.png new file mode 100644 index 0000000..96e25b8 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine_dawn.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine_moon.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine_moon.png new file mode 100644 index 0000000..c640e33 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/rose_pine_moon.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/seashells.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/seashells.png new file mode 100644 index 0000000..b76f2f8 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/seashells.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/selenized_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/selenized_dark.png new file mode 100644 index 0000000..975c6c4 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/selenized_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/selenized_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/selenized_light.png new file mode 100644 index 0000000..e735a41 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/selenized_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/seoul256-light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/seoul256-light.png new file mode 100644 index 0000000..9882dfb Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/seoul256-light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/smoooooth.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/smoooooth.png new file mode 100644 index 0000000..7034974 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/smoooooth.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/snazzy.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/snazzy.png new file mode 100644 index 0000000..9632f15 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/snazzy.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_dark.png new file mode 100644 index 0000000..27f98fd Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_light.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_light.png new file mode 100644 index 0000000..5d23dde Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_light.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_osaka.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_osaka.png new file mode 100644 index 0000000..bc5cb2e Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/solarized_osaka.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/sonokai.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/sonokai.png new file mode 100644 index 0000000..3909c35 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/sonokai.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/spacegray.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/spacegray.png new file mode 100644 index 0000000..241755d Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/spacegray.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/synthwave_84.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/synthwave_84.png new file mode 100644 index 0000000..2457124 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/synthwave_84.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/taerminal.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/taerminal.png new file mode 100644 index 0000000..0619607 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/taerminal.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/tango_dark.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/tango_dark.png new file mode 100644 index 0000000..b1e3915 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/tango_dark.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/tender.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/tender.png new file mode 100644 index 0000000..d817267 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/tender.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/terafox.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/terafox.png new file mode 100644 index 0000000..df80b8a Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/terafox.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/terminal_app.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/terminal_app.png new file mode 100644 index 0000000..81c9da1 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/terminal_app.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/thelovelace.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/thelovelace.png new file mode 100644 index 0000000..269a797 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/thelovelace.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night.png new file mode 100644 index 0000000..d6ed018 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night_enhanced.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night_enhanced.png new file mode 100644 index 0000000..156360a Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night_enhanced.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night_storm.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night_storm.png new file mode 100644 index 0000000..ad39605 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/tokyo_night_storm.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/tomorrow_night.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/tomorrow_night.png new file mode 100644 index 0000000..ab9ac93 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/tomorrow_night.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/tomorrow_night_bright.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/tomorrow_night_bright.png new file mode 100644 index 0000000..b5d1493 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/tomorrow_night_bright.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/ubuntu.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/ubuntu.png new file mode 100644 index 0000000..f3cc1d8 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/ubuntu.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/vesper.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/vesper.png new file mode 100644 index 0000000..dcbbab7 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/vesper.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/vscode.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/vscode.png new file mode 100644 index 0000000..ebf8a4a Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/vscode.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/wombat.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/wombat.png new file mode 100644 index 0000000..651534c Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/wombat.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/xterm.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/xterm.png new file mode 100644 index 0000000..62e3039 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/xterm.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/images/zenburn.png b/dots/alacritty/.config/alacritty/alacritty-theme/images/zenburn.png new file mode 100644 index 0000000..c3fa0a8 Binary files /dev/null and b/dots/alacritty/.config/alacritty/alacritty-theme/images/zenburn.png differ diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/print_colors.sh b/dots/alacritty/.config/alacritty/alacritty-theme/print_colors.sh new file mode 100755 index 0000000..100099f --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/print_colors.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + +printf "|039| \033[39mDefault \033[m |049| \033[49mDefault \033[m |037| \033[37mLight gray \033[m |047| \033[47mLight gray \033[m\n" +printf "|030| \033[30mBlack \033[m |040| \033[40mBlack \033[m |090| \033[90mDark gray \033[m |100| \033[100mDark gray \033[m\n" +printf "|031| \033[31mRed \033[m |041| \033[41mRed \033[m |091| \033[91mLight red \033[m |101| \033[101mLight red \033[m\n" +printf "|032| \033[32mGreen \033[m |042| \033[42mGreen \033[m |092| \033[92mLight green \033[m |102| \033[102mLight green \033[m\n" +printf "|033| \033[33mYellow \033[m |043| \033[43mYellow \033[m |093| \033[93mLight yellow \033[m |103| \033[103mLight yellow \033[m\n" +printf "|034| \033[34mBlue \033[m |044| \033[44mBlue \033[m |094| \033[94mLight blue \033[m |104| \033[104mLight blue \033[m\n" +printf "|035| \033[35mMagenta \033[m |045| \033[45mMagenta \033[m |095| \033[95mLight magenta \033[m |105| \033[105mLight magenta \033[m\n" +printf "|036| \033[36mCyan \033[m |046| \033[46mCyan \033[m |096| \033[96mLight cyan \033[m |106| \033[106mLight cyan \033[m\n" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/Cobalt2.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/Cobalt2.toml new file mode 100644 index 0000000..d390bab --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/Cobalt2.toml @@ -0,0 +1,33 @@ +# From the famous Cobalt2 sublime theme +# Source https//github.com/wesbos/cobalt2/tree/master/Cobalt2 + +# Default colors +[colors.primary] +background = '#122637' +foreground = '#ffffff' + +[colors.cursor] +text = '#122637' +cursor = '#f0cb09' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#ff0000' +green = '#37dd21' +yellow = '#fee409' +blue = '#1460d2' +magenta = '#ff005d' +cyan = '#00bbbb' +white = '#bbbbbb' + +# Bright colors +[colors.bright] +black = '#545454' +red = '#f40d17' +green = '#3bcf1d' +yellow = '#ecc809' +blue = '#5555ff' +magenta = '#ff55ff' +cyan = '#6ae3f9' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/Mariana.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/Mariana.toml new file mode 100644 index 0000000..0b7497b --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/Mariana.toml @@ -0,0 +1,39 @@ +# Mariana (ported from Sublime Text 4) +# Source https//github.com/mbadolato/iTerm2-Color-Schemes/blob/master/alacritty/Mariana.yml + +# Default colors +[colors.primary] +background = '#343d46' +foreground = '#d8dee9' + +# Cursor colors +[colors.cursor] +cursor = '#fcbb6a' +text = '#ffffff' + +# Normal colors +[colors.normal] +black = '#000000' +blue = '#6699cc' +cyan = '#5fb4b4' +green = '#99c794' +magenta = '#c695c6' +red = '#ec5f66' +white = '#f7f7f7' +yellow = '#f9ae58' + +# Bright colors +[colors.bright] +black = '#333333' +blue = '#85add6' +cyan = '#82c4c4' +green = '#acd1a8' +magenta = '#d8b6d8' +red = '#f97b58' +white = '#ffffff' +yellow = '#fac761' + +# Selection colors +[colors.selection] +background = '#4e5a65' +text = '#d8dee9' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/acme.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/acme.toml new file mode 100644 index 0000000..be8ece9 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/acme.toml @@ -0,0 +1,28 @@ +# Colors (acme) + +# Default colors +[colors.primary] +background = '#ffffea' +foreground = '#000000' + +# Normal colors +[colors.normal] +black = '#101010' +red = '#af5f00' +green = '#cccc7c' +yellow = '#ffff5f' +blue = '#aeeeee' +magenta = '#505050' +cyan = '#afffd7' +white = '#fcfcce' + +# Bright colors +[colors.bright] +black = '#101010' +red = '#af5f00' +green = '#cccc7c' +yellow = '#ffff5f' +blue = '#aeeeee' +magenta = '#505050' +cyan = '#afffd7' +white = '#fcfcce' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/afterglow.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/afterglow.toml new file mode 100644 index 0000000..74702c1 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/afterglow.toml @@ -0,0 +1,45 @@ +# Default colors +[colors.primary] +background = '#2c2c2c' +foreground = '#d6d6d6' + +dim_foreground = '#dbdbdb' +bright_foreground = '#d9d9d9' + +# Cursor colors +[colors.cursor] +text = '#2c2c2c' +cursor = '#d9d9d9' + +# Normal colors +[colors.normal] +black = '#1c1c1c' +red = '#bc5653' +green = '#909d63' +yellow = '#ebc17a' +blue = '#7eaac7' +magenta = '#aa6292' +cyan = '#86d3ce' +white = '#cacaca' + +# Bright colors +[colors.bright] +black = '#636363' +red = '#bc5653' +green = '#909d63' +yellow = '#ebc17a' +blue = '#7eaac7' +magenta = '#aa6292' +cyan = '#86d3ce' +white = '#f7f7f7' + +# Dim colors +[colors.dim] +black = '#232323' +red = '#74423f' +green = '#5e6547' +yellow = '#8b7653' +blue = '#556b79' +magenta = '#6e4962' +cyan = '#5c8482' +white = '#828282' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/alabaster.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/alabaster.toml new file mode 100644 index 0000000..df312d3 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/alabaster.toml @@ -0,0 +1,30 @@ +# Colors (Alabaster) +# author tonsky + +[colors.primary] +background = '#F7F7F7' +foreground = '#434343' + +[colors.cursor] +text = '#F7F7F7' +cursor = '#434343' + +[colors.normal] +black = '#000000' +red = '#AA3731' +green = '#448C27' +yellow = '#CB9000' +blue = '#325CC0' +magenta = '#7A3E9D' +cyan = '#0083B2' +white = '#BBBBBB' + +[colors.bright] +black = '#777777' +red = '#F05050' +green = '#60CB00' +yellow = '#FFBC5D' +blue = '#007ACC' +magenta = '#E64CE6' +cyan = '#00AACB' +white = '#FFFFFF' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/alabaster_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/alabaster_dark.toml new file mode 100644 index 0000000..500f1ee --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/alabaster_dark.toml @@ -0,0 +1,30 @@ +# Colors (Alabaster Dark) +# author tonsky + +[colors.primary] +background = '#0E1415' +foreground = '#CECECE' + +[colors.cursor] +text = '#0E1415' +cursor = '#CECECE' + +[colors.normal] +black = '#0E1415' +red = '#e25d56' +green = '#73ca50' +yellow = '#e9bf57' +blue = '#4a88e4' +magenta = '#915caf' +cyan = '#23acdd' +white = '#f0f0f0' + +[colors.bright] +black = '#777777' +red = '#f36868' +green = '#88db3f' +yellow = '#f0bf7a' +blue = '#6f8fdb' +magenta = '#e987e9' +cyan = '#4ac9e2' +white = '#FFFFFF' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/alacritty_0_12.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/alacritty_0_12.toml new file mode 100644 index 0000000..434db48 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/alacritty_0_12.toml @@ -0,0 +1,44 @@ +# Alacritty's default color scheme pre-0.13 (based on tomorrow_night) +# https://github.com/alacritty/alacritty/blob/v0.12.3/alacritty/src/config/color.rs + +[colors.primary] +foreground = "#c5c8c6" +background = "#1d1f21" + +[colors.normal] +black = "#1d1f21" +red = "#cc6666" +green = "#b5bd68" +yellow = "#f0c674" +blue = "#81a2be" +magenta = "#b294bb" +cyan = "#8abeb7" +white = "#c5c8c6" + +[colors.bright] +black = "#666666" +red = "#d54e53" +green = "#b9ca4a" +yellow = "#e7c547" +blue = "#7aa6da" +magenta = "#c397d8" +cyan = "#70c0b1" +white = "#eaeaea" + +[colors.dim] +black = "#131415" +red = "#864343" +green = "#777c44" +yellow = "#9e824c" +blue = "#556a7d" +magenta = "#75617b" +cyan = "#5b7d78" +white = "#828482" + +[colors.hints] +start = { foreground = "#1d1f21", background = "#e9ff5e" } +end = { foreground = "#e9ff5e", background = "#1d1f21" } + +[colors.search] +matches = { foreground = "#000000", background = "#ffffff" } +focused_match = { foreground = "#ffffff", background = "#000000" } diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/argonaut.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/argonaut.toml new file mode 100644 index 0000000..dc5eb53 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/argonaut.toml @@ -0,0 +1,31 @@ +# Default colors +[colors.primary] +background = '#292C3E' +foreground = '#EBEBEB' + +# Cursor colors +[colors.cursor] +text = '#EBEBEB' +cursor = '#FF261E' + +# Normal colors +[colors.normal] +black = '#0d0d0d' +red = '#FF301B' +green = '#A0E521' +yellow = '#FFC620' +blue = '#1BA6FA' +magenta = '#8763B8' +cyan = '#21DEEF' +white = '#EBEBEB' + +# Bright colors +[colors.bright] +black = '#6D7070' +red = '#FF4352' +green = '#B8E466' +yellow = '#FFD750' +blue = '#1BA6FA' +magenta = '#A578EA' +cyan = '#73FBF1' +white = '#FEFEF8' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/ashes_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ashes_dark.toml new file mode 100644 index 0000000..ed218ea --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ashes_dark.toml @@ -0,0 +1,27 @@ +[colors.primary] +background = '#1c2023' +foreground = '#c7ccd1' + +[colors.cursor] +text = '#1c2023' +cursor = '#c7ccd1' + +[colors.normal] +black = '#1c2023' +red = '#c7ae95' +green = '#95c7ae' +yellow = '#aec795' +blue = '#ae95c7' +magenta = '#c795ae' +cyan = '#95aec7' +white = '#c7ccd1' + +[colors.bright] +black = '#747c84' +red = '#c7ae95' +green = '#95c7ae' +yellow = '#aec795' +blue = '#ae95c7' +magenta = '#c795ae' +cyan = '#95aec7' +white = '#f3f4f5' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/ashes_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ashes_light.toml new file mode 100644 index 0000000..1b76e8f --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ashes_light.toml @@ -0,0 +1,27 @@ +[colors.primary] +background = '#f3f4f5' +foreground = '#565e65' + +[colors.cursor] +text = '#f3f4f5' +cursor = '#565e65' + +[colors.normal] +black = '#1c2023' +red = '#c7ae95' +green = '#95c7ae' +yellow = '#aec795' +blue = '#ae95c7' +magenta = '#c795ae' +cyan = '#95aec7' +white = '#c7ccd1' + +[colors.bright] +black = '#747c84' +red = '#c7ae95' +green = '#95c7ae' +yellow = '#aec795' +blue = '#ae95c7' +magenta = '#c795ae' +cyan = '#95aec7' +white = '#f3f4f5' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/aura.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/aura.toml new file mode 100644 index 0000000..e9967ef --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/aura.toml @@ -0,0 +1,30 @@ +[colors.primary] +background = "#15141b" +foreground = "#edecee" + +[colors.cursor] +cursor = "#a277ff" + +[colors.selection] +text = "CellForeground" +background = "#29263c" + +[colors.normal] +black = "#110f18" +red = "#ff6767" +green = "#61ffca" +yellow = "#ffca85" +blue = "#a277ff" +magenta = "#a277ff" +cyan = "#61ffca" +white = "#edecee" + +[colors.bright] +black = "#4d4d4d" +red = "#ff6767" +green = "#61ffca" +yellow = "#ffca85" +blue = "#a277ff" +magenta = "#a277ff" +cyan = "#61ffca" +white = "#edecee" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/autumn.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/autumn.toml new file mode 100644 index 0000000..e979168 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/autumn.toml @@ -0,0 +1,30 @@ +# From: https://github.com/yorickpeterse/Autumn.vim/blob/master/colors/autumn.vim + +[colors.primary] +foreground = "#F3F2CC" +background = "#232323" + +[colors.cursor] +text = "#232323" +cursor = "#F3F2CC" + +[colors.normal] +black = "#212121" +red = "#F05E48" +green = "#99be70" +yellow = "#FAD566" +blue = "#86c1b9" +magenta = "#cfba8b" +cyan = "#72a59e" +white = "#c8c8c8" + +[colors.bright] +black = "#404040" +red = "#F05E48" +green = "#99be70" +yellow = "#ffff9f" +blue = "#86c1b9" +magenta = "#cfba8b" +cyan = "#72a59e" +white = "#e8e8e8" + diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_dark.toml new file mode 100644 index 0000000..a2ea740 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_dark.toml @@ -0,0 +1,28 @@ +# Colors (Ayu Dark) + +# Default colors +[colors.primary] +background = '#0A0E14' +foreground = '#B3B1AD' + +# Normal colors +[colors.normal] +black = '#01060E' +red = '#EA6C73' +green = '#91B362' +yellow = '#F9AF4F' +blue = '#53BDFA' +magenta = '#FAE994' +cyan = '#90E1C6' +white = '#C7C7C7' + +# Bright colors +[colors.bright] +black = '#686868' +red = '#F07178' +green = '#C2D94C' +yellow = '#FFB454' +blue = '#59C2FF' +magenta = '#FFEE99' +cyan = '#95E6CB' +white = '#FFFFFF' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_light.toml new file mode 100644 index 0000000..d5cd4f9 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_light.toml @@ -0,0 +1,28 @@ +# Colors (Ayu Light) + +# Default colors - taken from ayu-colors +[colors.primary] +background = '#FCFCFC' +foreground = '#5C6166' + +# Normal colors - taken from ayu-iTerm +[colors.normal] +black = '#010101' +red = '#e7666a' +green = '#80ab24' +yellow = '#eba54d' +blue = '#4196df' +magenta = '#9870c3' +cyan = '#51b891' +white = '#c1c1c1' + +# Bright colors - pastel lighten 0.1 except black lighten with 0.2 +[colors.bright] +black = '#343434' +red = '#ee9295' +green = '#9fd32f' +yellow = '#f0bc7b' +blue = '#6daee6' +magenta = '#b294d2' +cyan = '#75c7a8' +white = '#dbdbdb' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_mirage.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_mirage.toml new file mode 100644 index 0000000..6deddd4 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ayu_mirage.toml @@ -0,0 +1,29 @@ +# Colors (Ayu Mirage) + +# Default Colors +[colors.primary] +background = "#1f2430" +foreground = "#cbccc6" +bright_foreground = "#f28779" + +# Normal colors +[colors.normal] +black = "#212733" +red = "#f08778" +green = "#53bf97" +yellow = "#fdcc60" +blue = "#60b8d6" +magenta = "#ec7171" +cyan = "#98e6ca" +white = "#fafafa" + +# Bright colors +[colors.bright] +black = "#686868" +red = "#f58c7d" +green = "#58c49c" +yellow = "#ffd165" +blue = "#65bddb" +magenta = "#f17676" +cyan = "#9debcf" +white = "#ffffff" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/baitong.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/baitong.toml new file mode 100644 index 0000000..4057041 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/baitong.toml @@ -0,0 +1,55 @@ +# Colors (Baitong) + +[colors.primary] +background = '#112a2a' +foreground = '#33ff33' + +[colors.cursor] +text = '#112a2a' +cursor = '#ff00ff' + +[colors.vi_mode_cursor] +text = '#112a2a' +cursor = '#ff00ff' + +[colors.search] +matches = { foreground = '#000000', background = '#1AE642' } +focused_match = { foreground = '#000000', background = '#ff00ff' } + +[colors.hints] +start = { foreground = '#1d1f21', background = '#1AE642' } +end = { foreground = '#1AE642', background = '#1d1f21' } + +[colors.line_indicator] +foreground = '#33ff33' +background = '#1d1f21' + +[colors.footer_bar] +background = '#731d8b' +foreground = '#ffffff' + +[colors.selection] +text = '#112a2a' +background = '#1AE642' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#f77272' +green = '#33ff33' +yellow = '#1AE642' +blue = '#68FDFE' +magenta = '#ff66ff' +cyan = '#87CEFA' +white = '#dbdbd9' + +# Bright colors +[colors.bright] +black = '#ffffff' +red = '#f77272' +green = '#33ff33' +yellow = '#1AE642' +blue = '#68FDFE' +magenta = '#ff66ff' +cyan = '#68FDFE' +white = '#dbdbd9' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/base16_default_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/base16_default_dark.toml new file mode 100644 index 0000000..ca85177 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/base16_default_dark.toml @@ -0,0 +1,32 @@ +# Colors (Base16 Default Dark) + +# Default colors +[colors.primary] +background = '#181818' +foreground = '#d8d8d8' + +[colors.cursor] +text = '#181818' +cursor = '#d8d8d8' + +# Normal colors +[colors.normal] +black = '#181818' +red = '#ab4642' +green = '#a1b56c' +yellow = '#f7ca88' +blue = '#7cafc2' +magenta = '#ba8baf' +cyan = '#86c1b9' +white = '#d8d8d8' + +# Bright colors +[colors.bright] +black = '#585858' +red = '#ab4642' +green = '#a1b56c' +yellow = '#f7ca88' +blue = '#7cafc2' +magenta = '#ba8baf' +cyan = '#86c1b9' +white = '#f8f8f8' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/blood_moon.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/blood_moon.toml new file mode 100644 index 0000000..ae99edd --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/blood_moon.toml @@ -0,0 +1,28 @@ +# Colors (Blood Moon) + +# Default colors +[colors.primary] +background = '#10100E' +foreground = '#C6C6C4' + +# Normal colors +[colors.normal] +black = '#10100E' +red = '#C40233' +green = '#009F6B' +yellow = '#FFD700' +blue = '#0087BD' +magenta = '#9A4EAE' +cyan = '#20B2AA' +white = '#C6C6C4' + +# Bright colors +[colors.bright] +black = '#696969' +red = '#FF2400' +green = '#03C03C' +yellow = '#FDFF00' +blue = '#007FFF' +magenta = '#FF1493' +cyan = '#00CCCC' +white = '#FFFAFA' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/bluish.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/bluish.toml new file mode 100644 index 0000000..ca2333f --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/bluish.toml @@ -0,0 +1,26 @@ +# Default colors +[colors.primary] +background = '#2c3640' +foreground = '#297dd3' + +# Normal colors +[colors.normal] +black = '#0b0b0c' +red = '#377fc4' +green = '#2691e7' +yellow = '#2090c1' +blue = '#2c5e87' +magenta = '#436280' +cyan = '#547aa2' +white = '#536679' + +# Bright colors +[colors.bright] +black = '#23272c' +red = '#66a5cc' +green = '#59b0f2' +yellow = '#4bb0d3' +blue = '#487092' +magenta = '#50829e' +cyan = '#658795' +white = '#4d676b' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/breeze.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/breeze.toml new file mode 100644 index 0000000..67e4992 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/breeze.toml @@ -0,0 +1,42 @@ +# KDE Breeze (Ported from Konsole) + +# Default colors +[colors.primary] +background = '#232627' +foreground = '#fcfcfc' + +dim_foreground = '#eff0f1' +bright_foreground = '#ffffff' + +# Normal colors +[colors.normal] +black = '#232627' +red = '#ed1515' +green = '#11d116' +yellow = '#f67400' +blue = '#1d99f3' +magenta = '#9b59b6' +cyan = '#1abc9c' +white = '#fcfcfc' + +# Bright colors +[colors.bright] +black = '#7f8c8d' +red = '#c0392b' +green = '#1cdc9a' +yellow = '#fdbc4b' +blue = '#3daee9' +magenta = '#8e44ad' +cyan = '#16a085' +white = '#ffffff' + +# Dim colors +[colors.dim] +black = '#31363b' +red = '#783228' +green = '#17a262' +yellow = '#b65619' +blue = '#1b668f' +magenta = '#614a73' +cyan = '#186c60' +white = '#63686d' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/campbell.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/campbell.toml new file mode 100644 index 0000000..05630b7 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/campbell.toml @@ -0,0 +1,28 @@ +# Campbell (Windows 10 default) + +# Default colors +[colors.primary] +background = '#0c0c0c' +foreground = '#cccccc' + +# Normal colors +[colors.normal] +black = '#0c0c0c' +red = '#c50f1f' +green = '#13a10e' +yellow = '#c19c00' +blue = '#0037da' +magenta = '#881798' +cyan = '#3a96dd' +white = '#cccccc' + +# Bright colors +[colors.bright] +black = '#767676' +red = '#e74856' +green = '#16c60c' +yellow = '#f9f1a5' +blue = '#3b78ff' +magenta = '#b4009e' +cyan = '#61d6d6' +white = '#f2f2f2' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/carbonfox.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/carbonfox.toml new file mode 100644 index 0000000..fcb24f4 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/carbonfox.toml @@ -0,0 +1,71 @@ +# Nightfox Alacritty Colors +## name: carbonfox +## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/carbonfox/alacritty.toml + +[colors.primary] +background = "#161616" +foreground = "#f2f4f8" +dim_foreground = "#b6b8bb" +bright_foreground = "#f9fbff" + +[colors.cursor] +text = "#f2f4f8" +cursor = "#b6b8bb" + +[colors.vi_mode_cursor] +text = "#f2f4f8" +cursor = "#33b1ff" + +[colors.search.matches] +foreground = "#f2f4f8" +background = "#525253" + +[colors.search.focused_match] +foreground = "#f2f4f8" +background = "#3ddbd9" + +[colors.footer_bar] +foreground = "#f2f4f8" +background = "#353535" + +[colors.hints.start] +foreground = "#f2f4f8" +background = "#3ddbd9" + +[colors.hints.end] +foreground = "#f2f4f8" +background = "#353535" + +[colors.selection] +text = "#f2f4f8" +background = "#2a2a2a" + +[colors.normal] +black = "#282828" +red = "#ee5396" +green = "#25be6a" +yellow = "#08bdba" +blue = "#78a9ff" +magenta = "#be95ff" +cyan = "#33b1ff" +white = "#dfdfe0" + +[colors.bright] +black = "#484848" +red = "#f16da6" +green = "#46c880" +yellow = "#2dc7c4" +blue = "#8cb6ff" +magenta = "#c8a5ff" +cyan = "#52bdff" +white = "#e4e4e5" + +[colors.dim] +black = "#222222" +red = "#ca4780" +green = "#1fa25a" +yellow = "#07a19e" +blue = "#6690d9" +magenta = "#a27fd9" +cyan = "#2b96d9" +white = "#bebebe" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin.toml new file mode 100644 index 0000000..2ea110f --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin.toml @@ -0,0 +1,39 @@ +# Catppuccino theme scheme for Alacritty + +[colors.primary] +background = '#1E1E2E' +foreground = '#D6D6D6' + +[colors.cursor] +text = '#1E1E2E' +cursor = '#D9D9D9' + +[colors.normal] +black = '#181A1F' +red = '#E86671' +green = '#98C379' +yellow = '#E5C07B' +blue = '#61AFEF' +magenta = '#C678DD' +cyan = '#54AFBC' +white = '#ABB2BF' + +[colors.bright] +black = '#5C6370' +red = '#E86671' +green = '#98C379' +yellow = '#E5C07B' +blue = '#61AFEF' +magenta = '#C678DD' +cyan = '#54AFBC' +white = '#F7F7F7' + +[colors.dim] +black = '#5C6370' +red = '#74423F' +green = '#98C379' +yellow = '#E5C07B' +blue = '#61AFEF' +magenta = '#6E4962' +cyan = '#5C8482' +white = '#828282' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_frappe.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_frappe.toml new file mode 100644 index 0000000..6a286e2 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_frappe.toml @@ -0,0 +1,73 @@ +# Default colors +[colors.primary] +background = '#303446' # base +foreground = '#C6D0F5' # text +# Bright and dim foreground colors +dim_foreground = '#C6D0F5' # text +bright_foreground = '#C6D0F5' # text + +# Cursor colors +[colors.cursor] +text = '#303446' # base +cursor = '#F2D5CF' # rosewater + +[colors.vi_mode_cursor] +text = '#303446' # base +cursor = '#BABBF1' # lavender + +# Search colors +[colors.search.matches] +foreground = '#303446' # base +background = '#A5ADCE' # subtext0 +[colors.search.focused_match] +foreground = '#303446' # base +background = '#A6D189' # green +[colors.footer_bar] +foreground = '#303446' # base +background = '#A5ADCE' # subtext0 + +# Keyboard regex hints +[colors.hints.start] +foreground = '#303446' # base +background = '#E5C890' # yellow +[colors.hints.end] +foreground = '#303446' # base +background = '#A5ADCE' # subtext0 + +# Selection colors +[colors.selection] +text = '#303446' # base +background = '#F2D5CF' # rosewater + +# Normal colors +[colors.normal] +black = '#51576D' # surface1 +red = '#E78284' # red +green = '#A6D189' # green +yellow = '#E5C890' # yellow +blue = '#8CAAEE' # blue +magenta = '#F4B8E4' # pink +cyan = '#81C8BE' # teal +white = '#B5BFE2' # subtext1 + +# Bright colors +[colors.bright] +black = '#626880' # surface2 +red = '#E78284' # red +green = '#A6D189' # green +yellow = '#E5C890' # yellow +blue = '#8CAAEE' # blue +magenta = '#F4B8E4' # pink +cyan = '#81C8BE' # teal +white = '#A5ADCE' # subtext0 + +# Dim colors +[colors.dim] +black = '#51576D' # surface1 +red = '#E78284' # red +green = '#A6D189' # green +yellow = '#E5C890' # yellow +blue = '#8CAAEE' # blue +magenta = '#F4B8E4' # pink +cyan = '#81C8BE' # teal +white = '#B5BFE2' # subtext1 diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_latte.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_latte.toml new file mode 100644 index 0000000..9a1cde7 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_latte.toml @@ -0,0 +1,76 @@ +# Default colors +[colors.primary] +background = '#EFF1F5' # base +foreground = '#4C4F69' # text +# Bright and dim foreground colors +dim_foreground = '#4C4F69' # text +bright_foreground = '#4C4F69' # text + +# Cursor colors +[colors.cursor] +text = '#EFF1F5' # base +cursor = '#DC8A78' # rosewater + +[colors.vi_mode_cursor] +text = '#EFF1F5' # base +cursor = '#7287FD' # lavender + +# Search colors +[colors.search.matches] +foreground = '#EFF1F5' # base +background = '#6C6F85' # subtext0 + +[colors.search.focused_match] +foreground = '#EFF1F5' # base +background = '#40A02B' # green + +[colors.footer_bar] +foreground = '#EFF1F5' # base +background = '#6C6F85' # subtext0 + +# Keyboard regex hints +[colors.hints.start] +foreground = '#EFF1F5' # base +background = '#DF8E1D' # yellow + +[colors.hints.end] +foreground = '#EFF1F5' # base +background = '#6C6F85' # subtext0 + +# Selection colors +[colors.selection] +text = '#EFF1F5' # base +background = '#DC8A78' # rosewater + +# Normal colors +[colors.normal] +black = '#5C5F77' # subtext1 +red = '#D20F39' # red +green = '#40A02B' # green +yellow = '#DF8E1D' # yellow +blue = '#1E66F5' # blue +magenta = '#EA76CB' # pink +cyan = '#179299' # teal +white = '#ACB0BE' # surface2 + +# Bright colors +[colors.bright] +black = '#6C6F85' # subtext0 +red = '#D20F39' # red +green = '#40A02B' # green +yellow = '#DF8E1D' # yellow +blue = '#1E66F5' # blue +magenta = '#EA76CB' # pink +cyan = '#179299' # teal +white = '#BCC0CC' # surface1 + +# Dim colors +[colors.dim] +black = '#5C5F77' # subtext1 +red = '#D20F39' # red +green = '#40A02B' # green +yellow = '#DF8E1D' # yellow +blue = '#1E66F5' # blue +magenta = '#EA76CB' # pink +cyan = '#179299' # teal +white = '#ACB0BE' # surface2 diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_macchiato.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_macchiato.toml new file mode 100644 index 0000000..fdec19a --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_macchiato.toml @@ -0,0 +1,76 @@ +# Default colors +[colors.primary] +background = '#24273A' # base +foreground = '#CAD3F5' # text +# Bright and dim foreground colors +dim_foreground = '#CAD3F5' # text +bright_foreground = '#CAD3F5' # text + +# Cursor colors +[colors.cursor] +text = '#24273A' # base +cursor = '#F4DBD6' # rosewater + +[colors.vi_mode_cursor] +text = '#24273A' # base +cursor = '#B7BDF8' # lavender + +# Search colors +[colors.search.matches] +foreground = '#24273A' # base +background = '#A5ADCB' # subtext0 + +[colors.search.focused_match] +foreground = '#24273A' # base +background = '#A6DA95' # green + +[colors.footer_bar] +foreground = '#24273A' # base +background = '#A5ADCB' # subtext0 + +# Keyboard regex hints +[colors.hints.start] +foreground = '#24273A' # base +background = '#EED49F' # yellow + +[colors.hints.end] +foreground = '#24273A' # base +background = '#A5ADCB' # subtext0 + +# Selection colors +[colors.selection] +text = '#24273A' # base +background = '#F4DBD6' # rosewater + +# Normal colors +[colors.normal] +black = '#494D64' # surface1 +red = '#ED8796' # red +green = '#A6DA95' # green +yellow = '#EED49F' # yellow +blue = '#8AADF4' # blue +magenta = '#F5BDE6' # pink +cyan = '#8BD5CA' # teal +white = '#B8C0E0' # subtext1 + +# Bright colors +[colors.bright] +black = '#5B6078' # surface2 +red = '#ED8796' # red +green = '#A6DA95' # green +yellow = '#EED49F' # yellow +blue = '#8AADF4' # blue +magenta = '#F5BDE6' # pink +cyan = '#8BD5CA' # teal +white = '#A5ADCB' # subtext0 + +# Dim colors +[colors.dim] +black = '#494D64' # surface1 +red = '#ED8796' # red +green = '#A6DA95' # green +yellow = '#EED49F' # yellow +blue = '#8AADF4' # blue +magenta = '#F5BDE6' # pink +cyan = '#8BD5CA' # teal +white = '#B8C0E0' # subtext1 diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_mocha.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_mocha.toml new file mode 100644 index 0000000..e57824d --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/catppuccin_mocha.toml @@ -0,0 +1,75 @@ +[colors.primary] +background = '#1E1E2E' # base +foreground = '#CDD6F4' # text +# Bright and dim foreground colors +dim_foreground = '#CDD6F4' # text +bright_foreground = '#CDD6F4' # text + +# Cursor colors +[colors.cursor] +text = '#1E1E2E' # base +cursor = '#F5E0DC' # rosewater + +[colors.vi_mode_cursor] +text = '#1E1E2E' # base +cursor = '#B4BEFE' # lavender + +# Search colors +[colors.search.matches] +foreground = '#1E1E2E' # base +background = '#A6ADC8' # subtext0 + +[colors.search.focused_match] +foreground = '#1E1E2E' # base +background = '#A6E3A1' # green + +[colors.footer_bar] +foreground = '#1E1E2E' # base +background = '#A6ADC8' # subtext0 + +# Keyboard regex hints +[colors.hints.start] +foreground = '#1E1E2E' # base +background = '#F9E2AF' # yellow + +[colors.hints.end] +foreground = '#1E1E2E' # base +background = '#A6ADC8' # subtext0 + +# Selection colors +[colors.selection] +text = '#1E1E2E' # base +background = '#F5E0DC' # rosewater + +# Normal colors +[colors.normal] +black = '#45475A' # surface1 +red = '#F38BA8' # red +green = '#A6E3A1' # green +yellow = '#F9E2AF' # yellow +blue = '#89B4FA' # blue +magenta = '#F5C2E7' # pink +cyan = '#94E2D5' # teal +white = '#BAC2DE' # subtext1 + +# Bright colors +[colors.bright] +black = '#585B70' # surface2 +red = '#F38BA8' # red +green = '#A6E3A1' # green +yellow = '#F9E2AF' # yellow +blue = '#89B4FA' # blue +magenta = '#F5C2E7' # pink +cyan = '#94E2D5' # teal +white = '#A6ADC8' # subtext0 + +# Dim colors +[colors.dim] +black = '#45475A' # surface1 +red = '#F38BA8' # red +green = '#A6E3A1' # green +yellow = '#F9E2AF' # yellow +blue = '#89B4FA' # blue +magenta = '#F5C2E7' # pink +cyan = '#94E2D5' # teal +white = '#BAC2DE' # subtext1 diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/challenger_deep.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/challenger_deep.toml new file mode 100644 index 0000000..a5c4a32 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/challenger_deep.toml @@ -0,0 +1,32 @@ +# Colors (Challenger Deep) + +# Default colors +[colors.primary] +background = '#1e1c31' +foreground = '#cbe1e7' + +[colors.cursor] +text = '#ff271d' +cursor = '#fbfcfc' + +# Normal colors +[colors.normal] +black = '#141228' +red = '#ff5458' +green = '#62d196' +yellow = '#ffb378' +blue = '#65b2ff' +magenta = '#906cff' +cyan = '#63f2f1' +white = '#a6b3cc' + +# Bright colors +[colors.bright] +black = '#565575' +red = '#ff8080' +green = '#95ffa4' +yellow = '#ffe9aa' +blue = '#91ddff' +magenta = '#c991e1' +cyan = '#aaffe4' +white = '#cbe3e7' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/chicago95.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/chicago95.toml new file mode 100644 index 0000000..6902e76 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/chicago95.toml @@ -0,0 +1,29 @@ +# Windows 95 Color Scheme +# To have the authentic experience in Chicago95 GTK Theme. + +# Default colors +[colors.primary] +background = '#000000' +foreground = '#C0C7C8' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#A80000' +green = '#00A800' +yellow = '#A85400' +blue = '#0000A8' +magenta = '#A800A8' +cyan = '#00A8A8' +white = '#A8A8A8' + +# Bright colors +[colors.bright] +black = '#545454' +red = '#FC5454' +green = '#54FC54' +yellow = '#FCFC54' +blue = '#5454FC' +magenta = '#FC54FC' +cyan = '#54FCFC' +white = '#FFFFFF' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/citylights.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/citylights.toml new file mode 100644 index 0000000..775ee72 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/citylights.toml @@ -0,0 +1,30 @@ +# Default colors +[colors.primary] +background = '#171d23' +foreground = '#ffffff' + +# Cursor colors +[colors.cursor] +text = '#fafafa' +cursor = '#008b94' + +# Normal colors +[colors.normal] +black = '#333f4a' +red = '#d95468' +green = '#8bd49c' +blue = '#539afc' +magenta = '#b62d65' +cyan = '#70e1e8' +white = '#b7c5d3' + +# Bright colors +[colors.bright] +black = '#41505e' +red = '#d95468' +green = '#8bd49c' +yellow = '#ebbf83' +blue = '#5ec4ff' +magenta = '#e27e8d' +cyan = '#70e1e8' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/cyber_punk_neon.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/cyber_punk_neon.toml new file mode 100644 index 0000000..0424e47 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/cyber_punk_neon.toml @@ -0,0 +1,33 @@ +# Cyber Punk Neon +# Source https//github.com/Roboron3042/Cyberpunk-Neon + +# Default colors +[colors.primary] +background = '#000b1e' +foreground = '#0abdc6' + +[colors.cursor] +text = '#000b1e' +cursor = '#0abdc6' + +# Normal colors +[colors.normal] +black = '#123e7c' +red = '#ff0000' +green = '#d300c4' +yellow = '#f57800' +blue = '#123e7c' +magenta = '#711c91' +cyan = '#0abdc6' +white = '#d7d7d5' + +# Bright colors +[colors.bright] +black = '#1c61c2' +red = '#ff0000' +green = '#d300c4' +yellow = '#f57800' +blue = '#00ff00' +magenta = '#711c91' +cyan = '#0abdc6' +white = '#d7d7d5' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_pastels.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_pastels.toml new file mode 100644 index 0000000..6f11b9b --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_pastels.toml @@ -0,0 +1,28 @@ +# Colors (Konsole's Dark Pastels) + +# Default colors +[colors.primary] +background = '#2C2C2C' +foreground = '#DCDCCC' + +# Normal colors +[colors.normal] +black = '#3F3F3F' +red = '#705050' +green = '#60B48A' +yellow = '#DFAF8F' +blue = '#9AB8D7' +magenta = '#DC8CC3' +cyan = '#8CD0D3' +white = '#DCDCCC' + +# Bright colors +[colors.bright] +black = '#709080' +red = '#DCA3A3' +green = '#72D5A3' +yellow = '#F0DFAF' +blue = '#94BFF3' +magenta = '#EC93D3' +cyan = '#93E0E3' +white = '#FFFFFF' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_plus.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_plus.toml new file mode 100644 index 0000000..d168c6f --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_plus.toml @@ -0,0 +1,23 @@ +[colors.primary] +background = "#1F1F1F" +foreground = "#CCCCCC" + +[colors.normal] +black = "#000000" +red = "#d6181b" +green = "#6A9955" +yellow = "#e4d201" +blue = "#569cd6" +magenta = "#bc3fbc" +cyan = "#4EC9B0" +white = "#e5e5e5" + +[colors.bright] +black = "#666666" +red = "#ce9178" +green = "#b5cea8" +yellow = "#DCDCAA" +blue = "#9cdcfe" +magenta = "#d670d6" +cyan = "#9cdcfe" +white = "#e5e5e5" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_pride.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_pride.toml new file mode 100644 index 0000000..6cfba47 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dark_pride.toml @@ -0,0 +1,34 @@ +# Dark Pride +# A dark trans pride colour inspired theme + +# Primary colors +[colors.primary] +background = '#0d0d1b' +foreground = '#ccccce' + +# Colors used for 'custom_cursor_colors' +[colors.cursor] +text = '#bbbbbb' +cursor = '#ff0017' + +# Colors 0 through 7 +[colors.normal] +black = '#282828' +red = '#ca1444' +green = '#789aba' +yellow = '#b3879f' +blue = '#95569b' +magenta = '#cb6fa1' +cyan = '#fb6e93' +white = '#cf98c1' + +# Colors 8 through 15 +[colors.bright] +black = '#98218e' +red = '#cb515d' +green = '#5a87b1' +yellow = '#9c61ab' +blue = '#9a77b1' +magenta = '#f2a297' +cyan = '#f4436f' +white = '#ebdbb2' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/dawnfox.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dawnfox.toml new file mode 100644 index 0000000..ad637ed --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dawnfox.toml @@ -0,0 +1,71 @@ +# Nightfox Alacritty Colors +## name: dawnfox +## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/dawnfox/alacritty.toml + +[colors.primary] +background = "#faf4ed" +foreground = "#575279" +dim_foreground = "#4c4769" +bright_foreground = "#625c87" + +[colors.cursor] +text = "#575279" +cursor = "#625c87" + +[colors.vi_mode_cursor] +text = "#575279" +cursor = "#56949f" + +[colors.search.matches] +foreground = "#575279" +background = "#b8cece" + +[colors.search.focused_match] +foreground = "#575279" +background = "#618774" + +[colors.footer_bar] +foreground = "#575279" +background = "#ebdfe4" + +[colors.hints.start] +foreground = "#575279" +background = "#d7827e" + +[colors.hints.end] +foreground = "#575279" +background = "#ebdfe4" + +[colors.selection] +text = "#575279" +background = "#d0d8d8" + +[colors.normal] +black = "#575279" +red = "#b4637a" +green = "#618774" +yellow = "#ea9d34" +blue = "#286983" +magenta = "#907aa9" +cyan = "#56949f" +white = "#e5e9f0" + +[colors.bright] +black = "#5f5695" +red = "#c26d85" +green = "#629f81" +yellow = "#eea846" +blue = "#2d81a3" +magenta = "#9a80b9" +cyan = "#5ca7b4" +white = "#e6ebf3" + +[colors.dim] +black = "#504c6b" +red = "#a5576d" +green = "#597668" +yellow = "#dd9024" +blue = "#295e73" +magenta = "#816b9a" +cyan = "#50848c" +white = "#c8cfde" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/dayfox.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dayfox.toml new file mode 100644 index 0000000..049bbc3 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dayfox.toml @@ -0,0 +1,71 @@ +# Nightfox Alacritty Colors +## name: dayfox +## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/dayfox/alacritty.toml + +[colors.primary] +background = "#f6f2ee" +foreground = "#3d2b5a" +dim_foreground = "#302b5d" +bright_foreground = "#643f61" + +[colors.cursor] +text = "#3d2b5a" +cursor = "#643f61" + +[colors.vi_mode_cursor] +text = "#3d2b5a" +cursor = "#287980" + +[colors.search.matches] +foreground = "#3d2b5a" +background = "#a4c1c2" + +[colors.search.focused_match] +foreground = "#3d2b5a" +background = "#396847" + +[colors.footer_bar] +foreground = "#3d2b5a" +background = "#d3c7bb" + +[colors.hints.start] +foreground = "#3d2b5a" +background = "#955f61" + +[colors.hints.end] +foreground = "#3d2b5a" +background = "#d3c7bb" + +[colors.selection] +text = "#3d2b5a" +background = "#e7d2be" + +[colors.normal] +black = "#352c24" +red = "#a5222f" +green = "#396847" +yellow = "#ac5402" +blue = "#2848a9" +magenta = "#6e33ce" +cyan = "#287980" +white = "#f2e9e1" + +[colors.bright] +black = "#534c45" +red = "#b3434e" +green = "#577f63" +yellow = "#b86e28" +blue = "#4863b6" +magenta = "#8452d5" +cyan = "#488d93" +white = "#f4ece6" + +[colors.dim] +black = "#2d251f" +red = "#8c1d28" +green = "#30583c" +yellow = "#924702" +blue = "#223d90" +magenta = "#5e2baf" +cyan = "#22676d" +white = "#cec6bf" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/deep_space.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/deep_space.toml new file mode 100644 index 0000000..551d899 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/deep_space.toml @@ -0,0 +1,33 @@ +# Source https//github.com/tyrannicaltoucan/vim-deep-space + +# Default colors +[colors.primary] +background = '#1b202a' +foreground = '#9aa7bd' + +# Colors the cursor will use if `custom_cursor_colors` is true +[colors.cursor] +text = '#232936' +cursor = '#51617d' + +# Normal colors +[colors.normal] +black = '#1b202a' +red = '#b15e7c' +green = '#709d6c' +yellow = '#b5a262' +blue = '#608cc3' +magenta = '#8f72bf' +cyan = '#56adb7' +white = '#9aa7bd' + +# Bright colors +[colors.bright] +black = '#232936' +red = '#b3785d' +green = '#709d6c' +yellow = '#d5b875' +blue = '#608cc3' +magenta = '#c47ebd' +cyan = '#51617d' +white = '#9aa7bd' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/doom_one.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/doom_one.toml new file mode 100644 index 0000000..c7133f6 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/doom_one.toml @@ -0,0 +1,17 @@ +# Colors (Doom One) + +# Default colors +[colors.primary] +background = '#282c34' +foreground = '#bbc2cf' + +# Normal colors +[colors.normal] +black = '#282c34' +red = '#ff6c6b' +green = '#98be65' +yellow = '#ecbe7b' +blue = '#51afef' +magenta = '#c678dd' +cyan = '#46d9ff' +white = '#bbc2cf' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/dracula.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dracula.toml new file mode 100644 index 0000000..b64f482 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dracula.toml @@ -0,0 +1,28 @@ +# Colors (Dracula) + +# Default colors +[colors.primary] +background = '#282a36' +foreground = '#f8f8f2' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#ff5555' +green = '#50fa7b' +yellow = '#f1fa8c' +blue = '#bd93f9' +magenta = '#ff79c6' +cyan = '#8be9fd' +white = '#bbbbbb' + +# Bright colors +[colors.bright] +black = '#555555' +red = '#ff5555' +green = '#50fa7b' +yellow = '#f1fa8c' +blue = '#caa9fa' +magenta = '#ff79c6' +cyan = '#8be9fd' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/dracula_plus.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dracula_plus.toml new file mode 100644 index 0000000..86a8549 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/dracula_plus.toml @@ -0,0 +1,29 @@ +# Colors (Dracula+) + +[colors.primary] +background = '#212121' +foreground = '#F8F8F2' + +[colors.cursor] +text = '#0E1415' +cursor = '#ECEFF4' + +[colors.normal] +black = '#21222C' +red = '#FF5555' +green = '#50FA7B' +yellow = '#FFCB6B' +blue = '#82AAFF' +magenta = '#C792EA' +cyan = '#8BE9FD' +white = '#F8F9F2' + +[colors.bright] +black = '#545454' +red = '#FF6E6E' +green = '#69FF94' +yellow = '#FFCB6B' +blue = '#D6ACFF' +magenta = '#FF92DF' +cyan = '#A4FFFF' +white = '#F8F8F2' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/duskfox.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/duskfox.toml new file mode 100644 index 0000000..9348b23 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/duskfox.toml @@ -0,0 +1,71 @@ +# Nightfox Alacritty Colors +## name: duskfox +## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/duskfox/alacritty.toml + +[colors.primary] +background = "#232136" +foreground = "#e0def4" +dim_foreground = "#cdcbe0" +bright_foreground = "#eae8ff" + +[colors.cursor] +text = "#e0def4" +cursor = "#cdcbe0" + +[colors.vi_mode_cursor] +text = "#e0def4" +cursor = "#9ccfd8" + +[colors.search.matches] +foreground = "#e0def4" +background = "#63577d" + +[colors.search.focused_match] +foreground = "#e0def4" +background = "#a3be8c" + +[colors.footer_bar] +foreground = "#e0def4" +background = "#373354" + +[colors.hints.start] +foreground = "#e0def4" +background = "#ea9a97" + +[colors.hints.end] +foreground = "#e0def4" +background = "#373354" + +[colors.selection] +text = "#e0def4" +background = "#433c59" + +[colors.normal] +black = "#393552" +red = "#eb6f92" +green = "#a3be8c" +yellow = "#f6c177" +blue = "#569fba" +magenta = "#c4a7e7" +cyan = "#9ccfd8" +white = "#e0def4" + +[colors.bright] +black = "#47407d" +red = "#f083a2" +green = "#b1d196" +yellow = "#f9cb8c" +blue = "#65b1cd" +magenta = "#ccb1ed" +cyan = "#a6dae3" +white = "#e2e0f7" + +[colors.dim] +black = "#322e42" +red = "#d84f76" +green = "#8aa872" +yellow = "#e6a852" +blue = "#4a869c" +magenta = "#a580d2" +cyan = "#7bb8c1" +white = "#b1acde" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/enfocado_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/enfocado_dark.toml new file mode 100644 index 0000000..d4e2fde --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/enfocado_dark.toml @@ -0,0 +1,29 @@ +# Theme: enfocado_dark +# Source: https://github.com/wuelnerdotexe/vim-enfocado + +# Default colors +[colors.primary] +background = '#181818' +foreground = '#b9b9b9' + +# Normal colors +[colors.normal] +black = '#3b3b3b' +red = '#ed4a46' +green = '#70b433' +yellow = '#dbb32d' +blue = '#368aeb' +magenta = '#eb6eb7' +cyan = '#3fc5b7' +white = '#b9b9b9' + +# Bright colors +[colors.bright] +black = '#777777' +red = '#ff5e56' +green = '#83c746' +yellow = '#efc541' +blue = '#4f9cfe' +magenta = '#ff81ca' +cyan = '#56d8c9' +white = '#dedede' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/enfocado_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/enfocado_light.toml new file mode 100644 index 0000000..5c27f56 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/enfocado_light.toml @@ -0,0 +1,29 @@ +# Theme: enfocado_light +# Source: https://github.com/wuelnerdotexe/vim-enfocado + +# Default colors +[colors.primary] +background = '#ffffff' +foreground = '#474747' + +# Normal colors +[colors.normal] +black = '#282828' +red = '#d6000c' +green = '#1d9700' +yellow = '#c49700' +blue = '#0064e4' +magenta = '#dd0f9d' +cyan = '#00ad9c' +white = '#cdcdcd' + +# Bright colors +[colors.bright] +black = '#878787' +red = '#df0000' +green = '#008400' +yellow = '#af8500' +blue = '#0054cf' +magenta = '#c7008b' +cyan = '#009a8a' +white = '#ebebeb' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/everforest_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/everforest_dark.toml new file mode 100644 index 0000000..af185d2 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/everforest_dark.toml @@ -0,0 +1,28 @@ +# Colors (Everforest Dark) + +# Default colors +[colors.primary] +background = '#2d353b' +foreground = '#d3c6aa' + +# Normal colors +[colors.normal] +black = '#475258' +red = '#e67e80' +green = '#a7c080' +yellow = '#dbbc7f' +blue = '#7fbbb3' +magenta = '#d699b6' +cyan = '#83c092' +white = '#d3c6aa' + +# Bright colors +[colors.bright] +black = '#475258' +red = '#e67e80' +green = '#a7c080' +yellow = '#dbbc7f' +blue = '#7fbbb3' +magenta = '#d699b6' +cyan = '#83c092' +white = '#d3c6aa' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/everforest_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/everforest_light.toml new file mode 100644 index 0000000..3c720a2 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/everforest_light.toml @@ -0,0 +1,28 @@ +# Colors (Everforest Light) + +# Default colors +[colors.primary] +background = '#fdf6e3' +foreground = '#5c6a72' + +# Normal colors +[colors.normal] +black = '#5c6a72' +red = '#f85552' +green = '#8da101' +yellow = '#dfa000' +blue = '#3a94c5' +magenta = '#df69ba' +cyan = '#35a77c' +white = '#e0dcc7' + +# Bright Colors +[colors.bright] +black = '#5c6a72' +red = '#f85552' +green = '#8da101' +yellow = '#dfa000' +blue = '#3a94c5' +magenta = '#df69ba' +cyan = '#35a77c' +white = '#e0dcc7' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/falcon.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/falcon.toml new file mode 100644 index 0000000..e5b027b --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/falcon.toml @@ -0,0 +1,33 @@ +# falcon colorscheme for alacritty +# by fenetikm, https//github.com/fenetikm/falcon + +# Default colors +[colors.primary] +background = '#020221' +foreground = '#b4b4b9' + +[colors.cursor] +text = '#020221' +cursor = '#ffe8c0' + +# Normal colors +[colors.normal] +black = '#000004' +red = '#ff3600' +green = '#718e3f' +yellow = '#ffc552' +blue = '#635196' +magenta = '#ff761a' +cyan = '#34bfa4' +white = '#b4b4b9' + +# Bright colors +[colors.bright] +black = '#020221' +red = '#ff8e78' +green = '#b1bf75' +yellow = '#ffd392' +blue = '#99a4bc' +magenta = '#ffb07b' +cyan = '#8bccbf' +white = '#f8f8ff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/flat_remix.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/flat_remix.toml new file mode 100644 index 0000000..907ac82 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/flat_remix.toml @@ -0,0 +1,23 @@ +[colors.primary] +background = '#272a34' +foreground = '#FFFFFF' + +[colors.normal] +black = '#1F2229' +red = '#EC0101' +green = '#47D4B9' +yellow = '#FF8A18' +blue = '#277FFF' +magenta = '#D71655' +cyan = '#05A1F7' +white = '#FFFFFF' + +[colors.bright] +black = '#1F2229' +red = '#D41919' +green = '#5EBDAB' +yellow = '#FEA44C' +blue = '#367bf0' +magenta = '#BF2E5D' +cyan = '#49AEE6' +white = '#FFFFFF' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/flexoki.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/flexoki.toml new file mode 100644 index 0000000..f4b3b37 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/flexoki.toml @@ -0,0 +1,46 @@ +# based on https//stephango.com/flexoki and https//github.com/kepano/flexoki/tree/main/alacritty + +# Default colors +[colors.primary] +background = '#282726' +foreground = '#FFFCF0' +dim_foreground = '#FFFCF0' +bright_foreground = '#FFFCF0' + +# Cursor colors +[colors.cursor] +text = '#FFFCF0' +cursor = '#FFFCF0' + +# Normal colors +[colors.normal] +black = '#100F0F' +red = '#AF3029' +green = '#66800B' +yellow = '#AD8301' +blue = '#205EA6' +magenta = '#A02F6F' +cyan = '#24837B' +white = '#FFFCF0' + +# Bright colors +[colors.bright] +black = '#100F0F' +red = '#D14D41' +green = '#879A39' +yellow = '#D0A215' +blue = '#4385BE' +magenta = '#CE5D97' +cyan = '#3AA99F' +white = '#FFFCF0' + +# Dim colors +[colors.dim] +black = '#100F0F' +red = '#AF3029' +green = '#66800B' +yellow = '#AD8301' +blue = '#205EA6' +magenta = '#A02F6F' +cyan = '#24837B' +white = '#FFFCF0' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark.toml new file mode 100644 index 0000000..dc3a338 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark.toml @@ -0,0 +1,36 @@ +# github Alacritty Colors + +# Default colors +[colors.primary] +background = '#24292e' +foreground = '#d1d5da' + +# Normal colors +[colors.normal] +black = '#586069' +red = '#ea4a5a' +green = '#34d058' +yellow = '#ffea7f' +blue = '#2188ff' +magenta = '#b392f0' +cyan = '#39c5cf' +white = '#d1d5da' + +# Bright colors +[colors.bright] +black = '#959da5' +red = '#f97583' +green = '#85e89d' +yellow = '#ffea7f' +blue = '#79b8ff' +magenta = '#b392f0' +cyan = '#56d4dd' +white = '#fafbfc' + +[[colors.indexed_colors]] +index = 16 +color = '#d18616' + +[[colors.indexed_colors]] +index = 17 +color = '#f97583' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_colorblind.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_colorblind.toml new file mode 100644 index 0000000..76bb4f2 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_colorblind.toml @@ -0,0 +1,36 @@ +# github Alacritty Colors + +# Default colors +[colors.primary] +background = '#0d1117' +foreground = '#b3b1ad' + +# Normal colors +[colors.normal] +black = '#484f58' +red = '#ff7b72' +green = '#3fb950' +yellow = '#d29922' +blue = '#58a6ff' +magenta = '#bc8cff' +cyan = '#39c5cf' +white = '#b1bac4' + +# Bright colors +[colors.bright] +black = '#6e7681' +red = '#ffa198' +green = '#56d364' +yellow = '#e3b341' +blue = '#79c0ff' +magenta = '#d2a8ff' +cyan = '#56d4dd' +white = '#f0f6fc' + +[[colors.indexed_colors]] +index = 16 +color = '#d18616' + +[[colors.indexed_colors]] +index = 17 +color = '#ffa198' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_default.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_default.toml new file mode 100644 index 0000000..76bb4f2 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_default.toml @@ -0,0 +1,36 @@ +# github Alacritty Colors + +# Default colors +[colors.primary] +background = '#0d1117' +foreground = '#b3b1ad' + +# Normal colors +[colors.normal] +black = '#484f58' +red = '#ff7b72' +green = '#3fb950' +yellow = '#d29922' +blue = '#58a6ff' +magenta = '#bc8cff' +cyan = '#39c5cf' +white = '#b1bac4' + +# Bright colors +[colors.bright] +black = '#6e7681' +red = '#ffa198' +green = '#56d364' +yellow = '#e3b341' +blue = '#79c0ff' +magenta = '#d2a8ff' +cyan = '#56d4dd' +white = '#f0f6fc' + +[[colors.indexed_colors]] +index = 16 +color = '#d18616' + +[[colors.indexed_colors]] +index = 17 +color = '#ffa198' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_dimmed.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_dimmed.toml new file mode 100644 index 0000000..851cbfe --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_dimmed.toml @@ -0,0 +1,36 @@ +# github Alacritty Colors + +# Default colors +[colors.primary] +background = '#22272e' +foreground = '#768390' + +# Normal colors +[colors.normal] +black = '#545d68' +red = '#f47067' +green = '#57ab5a' +yellow = '#c69026' +blue = '#539bf5' +magenta = '#b083f0' +cyan = '#39c5cf' +white = '#909dab' + +# Bright colors +[colors.bright] +black = '#636e7b' +red = '#ff938a' +green = '#6bc46d' +yellow = '#daaa3f' +blue = '#6cb6ff' +magenta = '#dcbdfb' +cyan = '#56d4dd' +white = '#cdd9e5' + +[[colors.indexed_colors]] +index = 16 +color = '#d18616' + +[[colors.indexed_colors]] +index = 17 +color = '#ff938a' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_high_contrast.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_high_contrast.toml new file mode 100644 index 0000000..e1b1b3e --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_high_contrast.toml @@ -0,0 +1,33 @@ +# (Github Dark High Contrast) Colors for Alacritty + +# Default colors +[colors.primary] +background = '#0a0c10' +foreground = '#f0f3f6' + +# Cursor colors +[colors.cursor] +text = '#0a0c10' +cursor = '#f0f3f6' + +# Normal colors +[colors.normal] +black = '#7a828e' +red = '#ff9492' +green = '#26cd4d' +yellow = '#f0b72f' +blue = '#71b7ff' +magenta = '#cb9eff' +cyan = '#39c5cf' +white = '#d9dee3' + +# Bright colors +[colors.bright] +black = '#9ea7b3' +red = '#ffb1af' +green = '#4ae168' +yellow = '#f7c843' +blue = '#91cbff' +magenta = '#cb9eff' +cyan = '#39c5cf' +white = '#d9dee3' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_tritanopia.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_tritanopia.toml new file mode 100644 index 0000000..e24c822 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_dark_tritanopia.toml @@ -0,0 +1,33 @@ +# (Github Dark Tritanopia) Colors for Alacritty + +# Default colors +[colors.primary] +background = '#0d1117' +foreground = '#c9d1d9' + +# Cursor colors +[colors.cursor] +text = '#0d1117' +cursor = '#c9d1d9' + +# Normal colors +[colors.normal] +black = '#484f58' +red = '#ff7b72' +green = '#58a6ff' +yellow = '#d29922' +blue = '#58a6ff' +magenta = '#bc8cff' +cyan = '#39c5cf' +white = '#b1bac4' + +# Bright colors +[colors.bright] +black = '#6e7681' +red = '#ffa198' +green = '#79c0ff' +yellow = '#e3b341' +blue = '#79c0ff' +magenta = '#bc8cff' +cyan = '#39c5cf' +white = '#b1bac4' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light.toml new file mode 100644 index 0000000..4c6524a --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light.toml @@ -0,0 +1,36 @@ +# github Alacritty Colors + +# Default colors +[colors.primary] +background = '#ffffff' +foreground = '#24292f' + +# Normal colors +[colors.normal] +black = '#24292e' +red = '#d73a49' +green = '#28a745' +yellow = '#dbab09' +blue = '#0366d6' +magenta = '#5a32a3' +cyan = '#0598bc' +white = '#6a737d' + +# Bright colors +[colors.bright] +black = '#959da5' +red = '#cb2431' +green = '#22863a' +yellow = '#b08800' +blue = '#005cc5' +magenta = '#5a32a3' +cyan = '#3192aa' +white = '#d1d5da' + +[[colors.indexed_colors]] +index = 16 +color = '#d18616' + +[[colors.indexed_colors]] +index = 17 +color = '#cb2431' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_colorblind.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_colorblind.toml new file mode 100644 index 0000000..4e02300 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_colorblind.toml @@ -0,0 +1,36 @@ +# github Alacritty Colors + +# Default colors +[colors.primary] +background = '#ffffff' +foreground = '#0E1116' + +# Normal colors +[colors.normal] +black = '#24292f' +red = '#cf222e' +green = '#116329' +yellow = '#4d2d00' +blue = '#0969da' +magenta = '#8250df' +cyan = '#1b7c83' +white = '#6e7781' + +# Bright colors +[colors.bright] +black = '#57606a' +red = '#a40e26' +green = '#1a7f37' +yellow = '#633c01' +blue = '#218bff' +magenta = '#a475f9' +cyan = '#3192aa' +white = '#8c959f' + +[[colors.indexed_colors]] +index = 16 +color = '#d18616' + +[[colors.indexed_colors]] +index = 17 +color = '#a40e26' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_default.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_default.toml new file mode 100644 index 0000000..4e02300 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_default.toml @@ -0,0 +1,36 @@ +# github Alacritty Colors + +# Default colors +[colors.primary] +background = '#ffffff' +foreground = '#0E1116' + +# Normal colors +[colors.normal] +black = '#24292f' +red = '#cf222e' +green = '#116329' +yellow = '#4d2d00' +blue = '#0969da' +magenta = '#8250df' +cyan = '#1b7c83' +white = '#6e7781' + +# Bright colors +[colors.bright] +black = '#57606a' +red = '#a40e26' +green = '#1a7f37' +yellow = '#633c01' +blue = '#218bff' +magenta = '#a475f9' +cyan = '#3192aa' +white = '#8c959f' + +[[colors.indexed_colors]] +index = 16 +color = '#d18616' + +[[colors.indexed_colors]] +index = 17 +color = '#a40e26' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_high_contrast.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_high_contrast.toml new file mode 100644 index 0000000..ee5b9c7 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_high_contrast.toml @@ -0,0 +1,33 @@ +# (Github Light High Contrast) Colors for Alacritty + +# Default colors +[colors.primary] +background = '#ffffff' +foreground = '#010409' + +# Cursor colors +[colors.cursor] +text = '#ffffff' +cursor = '#0e1116' + +# Normal colors +[colors.normal] +black = '#0e1116' +red = '#a0111f' +green = '#024c1a' +yellow = '#3f2200' +blue = '#0349b4' +magenta = '#622cbc' +cyan = '#1b7c83' +white = '#66707b' + +# Bright colors +[colors.bright] +black = '#4b535d' +red = '#86061d' +green = '#055d20' +yellow = '#4e2c00' +blue = '#1168e3' +magenta = '#622cbc' +cyan = '#1b7c83' +white = '#66707b' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_tritanopia.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_tritanopia.toml new file mode 100644 index 0000000..6b68f6a --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/github_light_tritanopia.toml @@ -0,0 +1,33 @@ +# (Github Light Tritanopia) Colors for Alacritty + +# Default colors +[colors.primary] +background = '#ffffff' +foreground = '#1b1f24' + +# Cursor colors +[colors.cursor] +text = '#ffffff' +cursor = '#24292f' + +# Normal colors +[colors.normal] +black = '#24292f' +red = '#cf222e' +green = '#0550ae' +yellow = '#4d2d00' +blue = '#0969da' +magenta = '#8250df' +cyan = '#1b7c83' +white = '#6e7781' + +# Bright colors +[colors.bright] +black = '#57606a' +red = '#a40e26' +green = '#0969da' +yellow = '#633c01' +blue = '#218bff' +magenta = '#8250df' +cyan = '#1b7c83' +white = '#6e7781' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/gnome_terminal.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gnome_terminal.toml new file mode 100644 index 0000000..a6d21fb --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gnome_terminal.toml @@ -0,0 +1,28 @@ +# Gnome (Gnome Terminal Default) + +# Default colors +[colors.primary] +background = '#1e1e1e' +foreground = '#ffffff' + +# Normal colors +[colors.normal] +black = '#171421' +red = '#c01c28' +green = '#26a269' +yellow = '#a2734c' +blue = '#12488b' +magenta = '#a347ba' +cyan = '#2aa1b3' +white = '#d0cfcc' + +# Bright colors +[colors.bright] +black = '#5e5c64' +red = '#f66151' +green = '#33d17a' +yellow = '#e9ad0c' +blue = '#2a7bde' +magenta = '#c061cb' +cyan = '#33c7de' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/google.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/google.toml new file mode 100644 index 0000000..001c45d --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/google.toml @@ -0,0 +1,23 @@ +[colors.primary] +background = '#1d1f21' +foreground = '#c5c8c6' + +[colors.normal] +black = '#1d1f21' +red = '#cc342b' +green = '#198844' +yellow = '#fba922' +blue = '#3971ed' +magenta = '#a36ac7' +cyan = '#3971ed' +white = '#c5c8c6' + +[colors.bright] +black = '#969896' +red = '#cc342b' +green = '#198844' +yellow = '#fba922' +blue = '#3971ed' +magenta = '#a36ac7' +cyan = '#3971ed' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/gotham.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gotham.toml new file mode 100644 index 0000000..d4a405d --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gotham.toml @@ -0,0 +1,28 @@ +# Colors (Gotham) + +# Default colors +[colors.primary] +background = '#0a0f14' +foreground = '#98d1ce' + +# Normal colors +[colors.normal] +black = '#0a0f14' +red = '#c33027' +green = '#26a98b' +yellow = '#edb54b' +blue = '#195465' +magenta = '#4e5165' +cyan = '#33859d' +white = '#98d1ce' + +# Bright colors +[colors.bright] +black = '#10151b' +red = '#d26939' +green = '#081f2d' +yellow = '#245361' +blue = '#093748' +magenta = '#888ba5' +cyan = '#599caa' +white = '#d3ebe9' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruber_darker.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruber_darker.toml new file mode 100644 index 0000000..50b4377 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruber_darker.toml @@ -0,0 +1,26 @@ +# author: rexim +# from: https://github.com/rexim/gruber-darker-theme + +[colors.primary] +background = "#181818" +foreground = "#E4E4E4" + +[colors.normal] +black = "#181818" +red = "#F43841" +green = "#73D936" +yellow = "#FFDD33" +blue = "#96A6C8" +magenta = "#9E95C7" +cyan = "#95A99F" +white = "#E4E4E4" + +[colors.bright] +black = "#52494E" +red = "#FF4F58" +green = "#73D936" +yellow = "#FFDD33" +blue = "#96A6C8" +magenta = "#AFAFD7" +cyan = "#95A99F" +white = "#F5F5F5" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_dark.toml new file mode 100644 index 0000000..d2845cd --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_dark.toml @@ -0,0 +1,30 @@ +# Colors (Gruvbox dark) + +# Default colors +[colors.primary] +# hard contrast background = = '#1d2021' +background = '#282828' +# soft contrast background = = '#32302f' +foreground = '#ebdbb2' + +# Normal colors +[colors.normal] +black = '#282828' +red = '#cc241d' +green = '#98971a' +yellow = '#d79921' +blue = '#458588' +magenta = '#b16286' +cyan = '#689d6a' +white = '#a89984' + +# Bright colors +[colors.bright] +black = '#928374' +red = '#fb4934' +green = '#b8bb26' +yellow = '#fabd2f' +blue = '#83a598' +magenta = '#d3869b' +cyan = '#8ec07c' +white = '#ebdbb2' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_light.toml new file mode 100644 index 0000000..d2852db --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_light.toml @@ -0,0 +1,30 @@ +# Colors (Gruvbox light) + +# Default colors +[colors.primary] +# hard contrast background = = '#f9f5d7' +background = '#fbf1c7' +# soft contrast background = = '#f2e5bc' +foreground = '#3c3836' + +# Normal colors +[colors.normal] +black = '#fbf1c7' +red = '#cc241d' +green = '#98971a' +yellow = '#d79921' +blue = '#458588' +magenta = '#b16286' +cyan = '#689d6a' +white = '#7c6f64' + +# Bright colors +[colors.bright] +black = '#928374' +red = '#9d0006' +green = '#79740e' +yellow = '#b57614' +blue = '#076678' +magenta = '#8f3f71' +cyan = '#427b58' +white = '#3c3836' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material.toml new file mode 100644 index 0000000..02accfd --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material.toml @@ -0,0 +1,25 @@ +# Colors (Gruvbox Material Dark Medium) + +[colors.primary] +background = '#282828' +foreground = '#dfbf8e' + +[colors.normal] +black = '#665c54' +red = '#ea6962' +green = '#a9b665' +yellow = '#e78a4e' +blue = '#7daea3' +magenta = '#d3869b' +cyan = '#89b482' +white = '#dfbf8e' + +[colors.bright] +black = '#928374' +red = '#ea6962' +green = '#a9b665' +yellow = '#e3a84e' +blue = '#7daea3' +magenta = '#d3869b' +cyan = '#89b482' +white = '#dfbf8e' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_hard_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_hard_dark.toml new file mode 100644 index 0000000..f9fb56d --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_hard_dark.toml @@ -0,0 +1,28 @@ +# Colors (Gruvbox Material Hard Dark) + +# Default colors +[colors.primary] +background = '#1d2021' +foreground = '#d4be98' + +# Normal colors +[colors.normal] +black = '#32302f' +red = '#ea6962' +green = '#a9b665' +yellow = '#d8a657' +blue = '#7daea3' +magenta = '#d3869b' +cyan = '#89b482' +white = '#d4be98' + +# Bright colors (same as normal colors) +[colors.bright] +black = '#32302f' +red = '#ea6962' +green = '#a9b665' +yellow = '#d8a657' +blue = '#7daea3' +magenta = '#d3869b' +cyan = '#89b482' +white = '#d4be98' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_hard_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_hard_light.toml new file mode 100644 index 0000000..e17ebdf --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_hard_light.toml @@ -0,0 +1,28 @@ +# Colors (Gruvbox Material Hard Light) + +# Default colors +[colors.primary] +background = '#f9f5d7' +foreground = '#654735' + +# Normal colors +[colors.normal] +black = '#654735' +red = '#c14a4a' +green = '#6c782e' +yellow = '#b47109' +blue = '#45707a' +magenta = '#945e80' +cyan = '#4c7a5d' +white = '#f2e5bc' + +# Bright colors (same as normal colors) +[colors.bright] +black = '#654735' +red = '#c14a4a' +green = '#6c782e' +yellow = '#b47109' +blue = '#45707a' +magenta = '#945e80' +cyan = '#4c7a5d' +white = '#f2e5bc' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_medium_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_medium_dark.toml new file mode 100644 index 0000000..1bbbfe8 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_medium_dark.toml @@ -0,0 +1,28 @@ +# Colors (Gruvbox Material Medium Dark) + +# Default colors +[colors.primary] +background = '#282828' +foreground = '#d4be98' + +# Normal colors +[colors.normal] +black = '#3c3836' +red = '#ea6962' +green = '#a9b665' +yellow = '#d8a657' +blue = '#7daea3' +magenta = '#d3869b' +cyan = '#89b482' +white = '#d4be98' + +# Bright colors (same as normal colors) +[colors.bright] +black = '#3c3836' +red = '#ea6962' +green = '#a9b665' +yellow = '#d8a657' +blue = '#7daea3' +magenta = '#d3869b' +cyan = '#89b482' +white = '#d4be98' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_medium_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_medium_light.toml new file mode 100644 index 0000000..d43ac16 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/gruvbox_material_medium_light.toml @@ -0,0 +1,28 @@ +# Colors (Gruvbox Material Medium Light) + +# Default colors +[colors.primary] +background = '#fbf1c7' +foreground = '#654735' + +# Normal colors +[colors.normal] +black = '#654735' +red = '#c14a4a' +green = '#6c782e' +yellow = '#b47109' +blue = '#45707a' +magenta = '#945e80' +cyan = '#4c7a5d' +white = '#eee0b7' + +# Bright colors (same as normal colors) +[colors.bright] +black = '#654735' +red = '#c14a4a' +green = '#6c782e' +yellow = '#b47109' +blue = '#45707a' +magenta = '#945e80' +cyan = '#4c7a5d' +white = '#eee0b7' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/hardhacker.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/hardhacker.toml new file mode 100644 index 0000000..a3b0b64 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/hardhacker.toml @@ -0,0 +1,33 @@ +# hardhacker colorscheme for alacritty +# by xin wu, https//github.com/hardhackerlabs/theme-alacritty + +# Default colors +[colors.primary] +background = '#282433' +foreground = '#eee9fc' + +[colors.cursor] +text = '#eee9fc' +cursor = '#eee9fc' + +# Normal colors +[colors.normal] +black = '#282433' +red = '#e965a5' +green = '#b1f2a7' +yellow = '#ebde76' +blue = '#b1baf4' +magenta = '#e192ef' +cyan = '#b3f4f3' +white = '#eee9fc' + +# Bright colors +[colors.bright] +black = '#3f3951' +red = '#e965a5' +green = '#b1f2a7' +yellow = '#ebde76' +blue = '#b1baf4' +magenta = '#e192ef' +cyan = '#b3f4f3' +white = '#eee9fc' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/hatsunemiku.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/hatsunemiku.toml new file mode 100644 index 0000000..d39317a --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/hatsunemiku.toml @@ -0,0 +1,23 @@ +[colors.primary] +background = '#242829' +foreground = '#dcd7d7' + +[colors.normal] +black = '#242829' +red = '#df2683' +green = '#13868c' +yellow = '#fcfcdf' +blue = '#1a86b9' +magenta = '#bc7fd2' +cyan = '#7cc7d6' +white = '#4a4b4b' + +[colors.bright] +black = '#7b8b99' +red = '#df2683' +green = '#13868c' +yellow = '#fcfcdf' +blue = '#1a86b9' +magenta = '#bc7fd2' +cyan = '#7cc7d6' +white = '#dcd7d7' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/high_contrast.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/high_contrast.toml new file mode 100644 index 0000000..c90466b --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/high_contrast.toml @@ -0,0 +1,33 @@ +# Colors (High Contrast) + +# Default colors +[colors.primary] +background = '#444444' +foreground = '#dddddd' + +# Colors the cursor will use if `custom_cursor_colors` is true +[colors.cursor] +text = '#aaaaaa' +cursor = '#ffffff' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#ff0000' +green = '#00ff00' +yellow = '#ffff00' +blue = '#0000ff' +magenta = '#ff00ff' +cyan = '#00ffff' +white = '#ffffff' + +# Bright colors +[colors.bright] +black = '#000000' +red = '#ff0000' +green = '#00ff00' +yellow = '#ffff00' +blue = '#0000ff' +magenta = '#ff00ff' +cyan = '#00ffff' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/horizon_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/horizon_dark.toml new file mode 100644 index 0000000..009a784 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/horizon_dark.toml @@ -0,0 +1,28 @@ +# Colors (Horizon Dark) + +# Primary colors +[colors.primary] +background = '#1c1e26' +foreground = '#e0e0e0' + +# Normal colors +[colors.normal] +black = '#16161c' +red = '#e95678' +green = '#29d398' +yellow = '#fab795' +blue = '#26bbd9' +magenta = '#ee64ac' +cyan = '#59e1e3' +white = '#d5d8da' + +# Bright colors +[colors.bright] +black = '#5b5858' +red = '#ec6a88' +green = '#3fdaa4' +yellow = '#fbc3a7' +blue = '#3fc4de' +magenta = '#f075b5' +cyan = '#6be4e6' +white = '#d5d8da' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/hyper.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/hyper.toml new file mode 100644 index 0000000..89256b2 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/hyper.toml @@ -0,0 +1,32 @@ +# Colors (Hyper) + +# Default colors +[colors.primary] +background = '#000000' +foreground = '#ffffff' + +[colors.cursor] +text = '#F81CE5' +cursor = '#ffffff' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#fe0100' +green = '#33ff00' +yellow = '#feff00' +blue = '#0066ff' +magenta = '#cc00ff' +cyan = '#00ffff' +white = '#d0d0d0' + +# Bright colors +[colors.bright] +black = '#808080' +red = '#fe0100' +green = '#33ff00' +yellow = '#feff00' +blue = '#0066ff' +magenta = '#cc00ff' +cyan = '#00ffff' +white = '#FFFFFF' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/inferno.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/inferno.toml new file mode 100644 index 0000000..5157fab --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/inferno.toml @@ -0,0 +1,29 @@ +# Inferno theme +# Source https//github.com/hafiz-muhammad/inferno-alacritty-theme + +# Default colors +[colors.primary] +background = '#270d06' +foreground = '#d9d9d9' + +# Normal colors +[colors.normal] +black = '#330000' +red = '#ff3300' +green = '#ff6600' +yellow = '#ff9900' +blue = '#ffcc00' +magenta = '#ff6600' +cyan = '#ff9900' +white = '#d9d9d9' + +# Bright colors +[colors.bright] +black = '#663300' +red = '#ff6633' +green = '#ff9966' +yellow = '#ffcc99' +blue = '#ffcc33' +magenta = '#ff9966' +cyan = '#ffcc99' +white = '#d9d9d9' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/iris.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/iris.toml new file mode 100644 index 0000000..38401a1 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/iris.toml @@ -0,0 +1,28 @@ +# Colors (Iris) + +# Default colors +[colors.primary] +background = '#272537' +foreground = '#e8e6e9' + +# Normal colors +[colors.normal] +black = '#111133' +red = '#d61d52' +green = '#48a842' +yellow = '#e1a51c' +blue = '#5556d3' +magenta = '#8650d3' +cyan = '#52afb7' +white = '#9f9aa7' + +# Bright colors +[colors.bright] +black = '#484867' +red = '#e15877' +green = '#71ab3a' +yellow = '#c6a642' +blue = '#6d6dc9' +magenta = '#956ad3' +cyan = '#6ab6bd' +white = '#e8e6e9' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/iterm.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/iterm.toml new file mode 100644 index 0000000..018f6c8 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/iterm.toml @@ -0,0 +1,28 @@ +# Colors (iTerm 2 default theme) + +# Default colors +[colors.primary] +background = '#101421' +foreground = '#fffbf6' + +# Normal colors +[colors.normal] +black = '#2e2e2e' +red = '#eb4129' +green = '#abe047' +yellow = '#f6c744' +blue = '#47a0f3' +magenta = '#7b5cb0' +cyan = '#64dbed' +white = '#e5e9f0' + +# Bright colors +[colors.bright] +black = '#565656' +red = '#ec5357' +green = '#c0e17d' +yellow = '#f9da6a' +blue = '#49a4f8' +magenta = '#a47de9' +cyan = '#99faf2' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/kanagawa_dragon.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/kanagawa_dragon.toml new file mode 100644 index 0000000..a3dc784 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/kanagawa_dragon.toml @@ -0,0 +1,38 @@ +# Colors (Kanagawa Dragon) +# Source https//github.com/rebelot/kanagawa.nvim + +[colors.primary] +background = '#181616' +foreground = '#c5c9c5' + +[colors.normal] +black = '#0d0c0c' +blue = '#8ba4b0' +cyan = '#8ea4a2' +green = '#8a9a7b' +magenta = '#a292a3' +red = '#c4746e' +white = '#C8C093' +yellow = '#c4b28a' + +[colors.bright] +black = '#a6a69c' +blue = '#7FB4CA' +cyan = '#7AA89F' +green = '#87a987' +magenta = '#938AA9' +red = '#E46876' +white = '#c5c9c5' +yellow = '#E6C384' + +[colors.selection] +background = '#2d4f67' +foreground = '#c8c093' + +[[colors.indexed_colors]] +index = 16 +color = '#ffa066' + +[[colors.indexed_colors]] +index = 17 +color = '#ff5d62' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/kanagawa_wave.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/kanagawa_wave.toml new file mode 100644 index 0000000..73ae8fb --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/kanagawa_wave.toml @@ -0,0 +1,38 @@ +# Colors (Kanagawa Wave) +# Source https//github.com/rebelot/kanagawa.nvim + +[colors.primary] +background = '#1f1f28' +foreground = '#dcd7ba' + +[colors.normal] +black = '#090618' +red = '#c34043' +green = '#76946a' +yellow = '#c0a36e' +blue = '#7e9cd8' +magenta = '#957fb8' +cyan = '#6a9589' +white = '#c8c093' + +[colors.bright] +black = '#727169' +red = '#e82424' +green = '#98bb6c' +yellow = '#e6c384' +blue = '#7fb4ca' +magenta = '#938aa9' +cyan = '#7aa89f' +white = '#dcd7ba' + +[colors.selection] +background = '#2d4f67' +foreground = '#c8c093' + +[[colors.indexed_colors]] +index = 16 +color = '#ffa066' + +[[colors.indexed_colors]] +index = 17 +color = '#ff5d62' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/kimbie_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/kimbie_dark.toml new file mode 100644 index 0000000..7521fcc --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/kimbie_dark.toml @@ -0,0 +1,24 @@ +[colors.primary] +background = "#221a0f" +foreground = "#d3af86" + +[colors.normal] +black = "#221a0f" +red = "#c87e5a" +green = "#879a6b" +yellow = "#e4b581" +blue = "#5d90cd" +magenta = "#c792ea" +cyan = "#6bbab2" +white = "#d3af86" + +[colors.bright] +black = "#7d6f48" +red = "#c87e5a" +green = "#879a6b" +yellow = "#e4b581" +blue = "#5d90cd" +magenta = "#c792ea" +cyan = "#6bbab2" +white = "#f2cca8" + diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/kimbie_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/kimbie_light.toml new file mode 100644 index 0000000..76e214f --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/kimbie_light.toml @@ -0,0 +1,24 @@ +[colors.primary] +background = "#fbebd4" +foreground = "#6e5346" + +[colors.normal] +black = "#fbebd4" +red = "#d43552" +green = "#b8bb26" +yellow = "#f0c674" +blue = "#7cafc2" +magenta = "#d3869b" +cyan = "#8abeb7" +white = "#6e5346" + +[colors.bright] +black = "#f7e4c6" +red = "#d43552" +green = "#b8bb26" +yellow = "#f0c674" +blue = "#7cafc2" +magenta = "#d3869b" +cyan = "#8abeb7" +white = "#4a3631" + diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/konsole_linux.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/konsole_linux.toml new file mode 100644 index 0000000..b5b15d3 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/konsole_linux.toml @@ -0,0 +1,44 @@ +# Color theme ported from Konsole Linux colors + +[colors.primary] +foreground = '#e3e3e3' +bright_foreground = '#ffffff' +background = '#1f1f1f' + +[colors.cursor] +text = '#191622' +cursor = '#f8f8f2' + +[colors.search] +matches = { foreground = '#b2b2b2', background = '#b26818' } +focused_match = { foreground = "CellBackground", background = "CellForeground" } + +[colors.normal] +black = '#000000' +red = '#b21818' +green = '#18b218' +yellow = '#b26818' +blue = '#1818b2' +magenta = '#b218b2' +cyan = '#18b2b2' +white = '#b2b2b2' + +[colors.bright] +black = '#686868' +red = '#ff5454' +green = '#54ff54' +yellow = '#ffff54' +blue = '#5454ff' +magenta = '#ff54ff' +cyan = '#54ffff' +white = '#ffffff' + +[colors.dim] +black = '#000000' +red = '#b21818' +green = '#18b218' +yellow = '#b26818' +blue = '#1818b2' +magenta = '#b218b2' +cyan = '#18b2b2' +white = '#b2b2b2' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/low_contrast.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/low_contrast.toml new file mode 100644 index 0000000..ecde019 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/low_contrast.toml @@ -0,0 +1,32 @@ +# Colors (Dim) + +# Default colors +[colors.primary] +background = '#333333' +foreground = '#dddddd' + +[colors.cursor] +text = '#aaaaaa' +cursor = '#ffffff' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#bb0000' +green = '#00bb00' +yellow = '#bbbb00' +blue = '#0000bb' +magenta = '#bb00bb' +cyan = '#00bbbb' +white = '#bbbbbb' + +# Bright colors +[colors.bright] +black = '#000000' +red = '#bb0000' +green = '#00bb00' +yellow = '#bbbb00' +blue = '#0000bb' +magenta = '#bb00bb' +cyan = '#00bbbb' +white = '#bbbbbb' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/marine_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/marine_dark.toml new file mode 100644 index 0000000..a06dcfa --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/marine_dark.toml @@ -0,0 +1,29 @@ +# Marine Dark Theme +# Source https//github.com/ProDeSquare/alacritty-colorschemes/blob/master/themes/marine_dark.yaml + +# Default colors +[colors.primary] +background = '#002221' +foreground = '#e6f8f8' + +# Normal colors +[colors.normal] +black = '#002221' +red = '#ea3431' +green = '#00b6b6' +yellow = '#f8b017' +blue = '#4894fd' +magenta = '#e01dca' +cyan = '#1ab2ad' +white = '#99dddb' + +# Bright colors +[colors.bright] +black = '#006562' +red = '#ea3431' +green = '#00b6b6' +yellow = '#f8b017' +blue = '#4894fd' +magenta = '#e01dca' +cyan = '#1ab2ad' +white = '#e6f6f6' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/material_theme.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/material_theme.toml new file mode 100644 index 0000000..deae20b --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/material_theme.toml @@ -0,0 +1,28 @@ +# Colors (Material Theme) + +# Default colors +[colors.primary] +background = '#1e282d' +foreground = '#c4c7d1' + +# Normal colors +[colors.normal] +black = '#666666' +red = '#eb606b' +green = '#c3e88d' +yellow = '#f7eb95' +blue = '#80cbc4' +magenta = '#ff2f90' +cyan = '#aeddff' +white = '#ffffff' + +# Bright colors +[colors.bright] +black = '#ff262b' +red = '#eb606b' +green = '#c3e88d' +yellow = '#f7eb95' +blue = '#7dc6bf' +magenta = '#6c71c4' +cyan = '#35434d' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/material_theme_mod.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/material_theme_mod.toml new file mode 100644 index 0000000..782760d --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/material_theme_mod.toml @@ -0,0 +1,28 @@ +# Colors (Material Theme) + +# Default colors +[colors.primary] +background = '#1e282d' +foreground = '#c4c7d1' + +# Normal colors +[colors.normal] +black = '#666666' +red = '#eb606b' +green = '#c3e88d' +yellow = '#f7eb95' +blue = '#80cbc4' +magenta = '#ff2f90' +cyan = '#aeddff' +white = '#ffffff' + +# Bright colors +[colors.bright] +black = '#a1a1a1' +red = '#eb606b' +green = '#c3e88d' +yellow = '#f7eb95' +blue = '#7dc6bf' +magenta = '#6c71c4' +cyan = '#35434d' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/meliora.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/meliora.toml new file mode 100644 index 0000000..8eb702f --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/meliora.toml @@ -0,0 +1,75 @@ +[colors.primary] +background = '#1c1917' +foreground = '#d6d0cd' +# Bright and dim foreground colors +dim_foreground = '#d6d0cd' +bright_foreground = '#d6d0cd' + +# Cursor colors +[colors.cursor] +text = '#1c1917' +cursor = '#d6d0cd' + +[colors.vi_mode_cursor] +text = '#1c1917' +cursor = '#d6d0cd' + +# Search colors +[colors.search] +matches = { foreground = '#1c1917', background = '#24201e' } +focused_match = { foreground = '#1c1917', background = '#2a2522' } + +[colors.footer_bar] +foreground = '#1c1917' +background = '#b8aea8' + +# Keyboard regex hints +[colors.hints] +start = { foreground = '#1c1917', background = '#c4b392' } +end = { foreground = '#1c1917', background = '#24201e' } + +# Selection colors +[colors.selection] +text = '#d6d0cd' +background = '#2a2522' + +# Normal colors +[colors.normal] +black = '#2a2421' +red = '#d49191' +green = '#b6b696' +yellow = '#c4b392' +blue = '#9e96b6' +magenta = '#b696b1' +cyan = '#98acc8' +white = '#ddd9d6' + +# Bright colors +[colors.bright] +black = '#2e2622' +red = '#d89393' +green = '#b9b99b' +yellow = '#c8b692' +blue = '#a299b9' +magenta = '#b997b4' +cyan = '#9bb0ca' +white = '#e1dbd9' + +# Dim colors +[colors.dim] +black = '#2a2421' +red = '#d18989' +green = '#727246' +yellow = '#c1b090' +blue = '#9b92b3' +magenta = '#b393ad' +cyan = '#95a9c5' +white = '#e3d5ce' + +[[colors.indexed_colors]] +index = 16 +color = '#c4b392' + +[[colors.indexed_colors]] +index = 17 +color = '#ddd9d6' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/miasma.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/miasma.toml new file mode 100644 index 0000000..23cb410 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/miasma.toml @@ -0,0 +1,28 @@ +# miasma: https://github.com/xero/miasma.nvim + +# Primary colors +[colors.primary] +background = "#222222" +foreground = "#c2c2b0" + +# Normal colors +[colors.normal] +black = "#222222" +red = "#685742" +green = "#5f875f" +yellow = "#b36d43" +blue = "#78824b" +magenta = "#bb7744" +cyan = "#c9a554" +white = "#d7c483" + +# Bright colors +[colors.bright] +black = "#666666" +red = "#685742" +green = "#5f875f" +yellow = "#b36d43" +blue = "#78824b" +magenta = "#bb7744" +cyan = "#c9a554" +white = "#d7c483" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/midnight_haze.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/midnight_haze.toml new file mode 100644 index 0000000..9cb5557 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/midnight_haze.toml @@ -0,0 +1,29 @@ +# Midnight Haze theme +# Source https//github.com/hafiz-muhammad/midnight-haze-alacritty-theme + +# Default colors +[colors.primary] +background = '#0c0c16' +foreground = '#d8dee9' + +# Normal colors +[colors.normal] +black = '#2c2c3d' +red = '#ff6e6e' +green = '#9ec875' +yellow = '#ffa759' +blue = '#70a7d4' +magenta = '#d291e0' +cyan = '#96e0e0' +white = '#d8dee9' + +# Bright colors +[colors.bright] +black = '#414166' +red = '#ff8d8d' +green = '#b3d987' +yellow = '#ffc57f' +blue = '#9bb3d3' +magenta = '#ffa1ff' +cyan = '#9cd8d8' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai.toml new file mode 100644 index 0000000..45aaafe --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai.toml @@ -0,0 +1,23 @@ +[colors.primary] +background = "#272822" +foreground = "#f8f8f2" + +[colors.normal] +black = "#272822" +red = "#f92672" +green = "#a6e22e" +yellow = "#f4bf75" +blue = "#66d9ef" +magenta = "#ae81ff" +cyan = "#a1efe4" +white = "#f8f8f2" + +[colors.bright] +black = "#75715e" +red = "#f92672" +green = "#a6e22e" +yellow = "#f4bf75" +blue = "#66d9ef" +magenta = "#ae81ff" +cyan = "#a1efe4" +white = "#f9f8f5" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai_charcoal.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai_charcoal.toml new file mode 100644 index 0000000..c6ae6c6 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai_charcoal.toml @@ -0,0 +1,28 @@ +# Colours (Monokai Charcoal) + +# Default Colours +[colors.primary] +background = '#000000' +foreground = '#FFFFFF' + +# Normal Colours +[colors.normal] +black = '#1a1a1a' +red = '#f4005f' +green = '#98e024' +yellow = '#fa8419' +blue = '#9d65ff' +magenta = '#f4005f' +cyan = '#58d1eb' +white = '#c4c5b5' + +# Bright Colours +[colors.bright] +black = '#625e4c' +red = '#f4005f' +green = '#98e024' +yellow = '#e0d561' +blue = '#9d65ff' +magenta = '#f4005f' +cyan = '#58d1eb' +white = '#f6f6ef' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai_pro.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai_pro.toml new file mode 100644 index 0000000..e434900 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/monokai_pro.toml @@ -0,0 +1,26 @@ +# Default colors +[colors.primary] +background = '#2D2A2E' +foreground = '#fff1f3' + +# Normal colors +[colors.normal] +black = '#2c2525' +red = '#fd6883' +green = '#adda78' +yellow = '#f9cc6c' +blue = '#f38d70' +magenta = '#a8a9eb' +cyan = '#85dacc' +white = '#fff1f3' + +# Bright colors +[colors.bright] +black = '#72696a' +red = '#fd6883' +green = '#adda78' +yellow = '#f9cc6c' +blue = '#f38d70' +magenta = '#a8a9eb' +cyan = '#85dacc' +white = '#fff1f3' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/moonfly.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/moonfly.toml new file mode 100644 index 0000000..8fadb90 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/moonfly.toml @@ -0,0 +1,34 @@ +# Upstream: github.com/bluz71/vim-moonfly-colors + +[colors.bright] +black = "#949494" +blue = "#74b2ff" +cyan = "#85dc85" +green = "#36c692" +magenta = "#ae81ff" +red = "#ff5189" +white = "#e4e4e4" +yellow = "#c6c684" + +[colors.cursor] +cursor = "#8e8e8e" +text = "#080808" + +[colors.normal] +black = "#323437" +blue = "#80a0ff" +cyan = "#79dac8" +green = "#8cc85f" +magenta = "#cf87e8" +red = "#ff5454" +white = "#c6c6c6" +yellow = "#e3c78a" + +[colors.primary] +background = "#080808" +bright_foreground = "#eeeeee" +foreground = "#bdbdbd" + +[colors.selection] +background = "#b2ceee" +text = "#080808" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/moonlight_ii_vscode.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/moonlight_ii_vscode.toml new file mode 100644 index 0000000..2991e70 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/moonlight_ii_vscode.toml @@ -0,0 +1,27 @@ +[colors.primary] +background = '#1e2030' +foreground = '#7f85a3' + +[colors.cursor] +text = '#7f85a3' +cursor = '#808080' + +[colors.normal] +black = '#444a73' +red = '#ff5370' +green = '#4fd6be' +yellow = '#ffc777' +blue = '#3e68d7' +magenta = '#fc7b7b' +cyan = '#86e1fc' +white = '#d0d0d0' + +[colors.bright] +black = '#828bb8' +red = '#ff98a4' +green = '#c3e88d' +yellow = '#ffc777' +blue = '#82aaff' +magenta = '#ff966c' +cyan = '#b4f9f8' +white = '#5f8787' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/msx.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/msx.toml new file mode 100644 index 0000000..d10a124 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/msx.toml @@ -0,0 +1,41 @@ +# Colors (MSX-like) +# Notice that MSX used blue as background so [bright] blue and [bright] black +# are reversed in this theme. Also MSX had only 15 colors (color 0 was +# transparent) so 'gray' (#CCCCCC) is used two times both as white and +# bright black. + +# Default colors +[colors.primary] +background = '#5955E0' +foreground = '#FFFFFF' + +# Normal colors +[colors.normal] +# It is 'dark blue' not black +black = '#5955E0' +red = '#B95E51' +green = '#3AA241' +yellow = '#CCC35E' +# It is 'black' not blue +blue = '#000000' +# It is 'medium red' not magenta +magenta = '#DB6559' +# It is 'medium green' not cyan +cyan = '#3EB849' +# It is 'gray' not white +white = '#CCCCCC' + +# Bright colors +[colors.bright] +# It is 'light blue' not bright black +black = '#8076F1' +red = '#FF897D' +green = '#74D07D' +yellow = '#DED087' +# It is 'gray' not bright blue +blue = '#CCCCCC' +# It is 'magenta' not bright magenta +magenta = '#B766B5' +# It is 'cyan' not bright cyan +cyan = '#65DBEF' +white = '#FFFFFF' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/night_owl.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/night_owl.toml new file mode 100644 index 0000000..f77eebc --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/night_owl.toml @@ -0,0 +1,54 @@ +# Default colors +[colors.primary] +background = "#011627" +foreground = "#d6deeb" + +# Cursor colors +[colors.cursor] +text = "CellBackground" +cursor = "CellForeground" + +[colors.vi_mode_cursor] +text = "CellBackground" +cursor = "#22da6e" + +# Search colors +[colors.search.matches] +foreground = "#000000" +background = "#22da6e" + +[colors.search.focused_match] +foreground = "#ffffff" +background = "#22da6e" + +[colors.footer_bar] +foreground = "#ffffff" +background = "#1d3b53" + +# Selection colors +[colors.selection] +text = "#ffffff" +background = "#0d486e" + +# Normal colors +[colors.normal] +black = "#011627" +red = "#EF5350" +green = "#22da6e" +yellow = "#c5e478" +blue = "#82AAFF" +magenta = "#C792EA" +cyan = "#21c7a8" +white = "#ffffff" + +# Bright colors +[colors.bright] +black = "#575656" +red = "#EF5350" +green = "#22da6e" +yellow = "#ffeb95" +blue = "#82AAFF" +magenta = "#C792EA" +cyan = "#7fdbca" +white = "#ffffff" + diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/night_owlish_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/night_owlish_light.toml new file mode 100644 index 0000000..7aaf7cf --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/night_owlish_light.toml @@ -0,0 +1,33 @@ +# Colors (Night Owlish Light) + +[colors.primary] +background = '#ffffff' +foreground = '#403f53' + +[colors.normal] +black = '#011627' +red = '#d3423e' +green = '#2aa298' +yellow = '#daaa01' +blue = '#4876d6' +magenta = '#403f53' +cyan = '#08916a' +white = '#7a8181' + +[colors.bright] +black = '#7a8181' +red = '#f76e6e' +green = '#49d0c5' +yellow = '#dac26b' +blue = '#5ca7e4' +magenta = '#697098' +cyan = '#00c990' +white = '#989fb1' + +[colors.cursor] +cursor = '#403f53' +text = '#fbfbfb' + +[colors.selection] +background = '#f2f2f2' +text = '#403f53' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/nightfly.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nightfly.toml new file mode 100644 index 0000000..f935754 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nightfly.toml @@ -0,0 +1,34 @@ +# Source https://github.com/bluz71/vim-nightfly-colors + +[colors.bright] +black = "#7c8f8f" +blue = "#82aaff" +cyan = "#7fdbca" +green = "#21c7a8" +magenta = "#ae81ff" +red = "#ff5874" +white = "#d6deeb" +yellow = "#ecc48d" + +[colors.cursor] +cursor = "#9ca1aa" +text = "#080808" + +[colors.normal] +black = "#1d3b53" +blue = "#82aaff" +cyan = "#7fdbca" +green = "#a1cd5e" +magenta = "#c792ea" +red = "#fc514e" +white = "#a1aab8" +yellow = "#e3d18a" + +[colors.primary] +background = "#011627" +bright_foreground = "#eeeeee" +foreground = "#bdc1c6" + +[colors.selection] +background = "#b2ceee" +text = "#080808" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/nightfox.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nightfox.toml new file mode 100644 index 0000000..cedb99b --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nightfox.toml @@ -0,0 +1,71 @@ +# Nightfox Alacritty Colors +## name: nightfox +## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/nightfox/alacritty.toml + +[colors.primary] +background = "#192330" +foreground = "#cdcecf" +dim_foreground = "#aeafb0" +bright_foreground = "#d6d6d7" + +[colors.cursor] +text = "#cdcecf" +cursor = "#aeafb0" + +[colors.vi_mode_cursor] +text = "#cdcecf" +cursor = "#63cdcf" + +[colors.search.matches] +foreground = "#cdcecf" +background = "#3c5372" + +[colors.search.focused_match] +foreground = "#cdcecf" +background = "#81b29a" + +[colors.footer_bar] +foreground = "#cdcecf" +background = "#29394f" + +[colors.hints.start] +foreground = "#cdcecf" +background = "#f4a261" + +[colors.hints.end] +foreground = "#cdcecf" +background = "#29394f" + +[colors.selection] +text = "#cdcecf" +background = "#2b3b51" + +[colors.normal] +black = "#393b44" +red = "#c94f6d" +green = "#81b29a" +yellow = "#dbc074" +blue = "#719cd6" +magenta = "#9d79d6" +cyan = "#63cdcf" +white = "#dfdfe0" + +[colors.bright] +black = "#575860" +red = "#d16983" +green = "#8ebaa4" +yellow = "#e0c989" +blue = "#86abdc" +magenta = "#baa1e2" +cyan = "#7ad5d6" +white = "#e4e4e5" + +[colors.dim] +black = "#30323a" +red = "#ab435d" +green = "#6e9783" +yellow = "#baa363" +blue = "#6085b6" +magenta = "#8567b6" +cyan = "#54aeb0" +white = "#bebebe" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/noctis_lux.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/noctis_lux.toml new file mode 100644 index 0000000..eb2479a --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/noctis_lux.toml @@ -0,0 +1,28 @@ +# Colors (NoctixLux) + +# Default colors +[colors.primary] +background = '#fef8ec' +foreground = '#005661' + +# Normal colors +[colors.normal] +black = '#003b42' +red = '#e34e1c' +green = '#00b368' +yellow = '#f49725' +blue = '#0094f0' +magenta = '#ff5792' +cyan = '#00bdd6' +white = '#8ca6a6' + +# Bright colors +[colors.bright] +black = '#004d57' +red = '#ff4000' +green = '#00d17a' +yellow = '#ff8c00' +blue = '#0fa3ff' +magenta = '#ff6b9f' +cyan = '#00cbe6' +white = '#bbc3c4' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/nord.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nord.toml new file mode 100644 index 0000000..01cc0d0 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nord.toml @@ -0,0 +1,28 @@ +# Colors (Nord) + +# Default colors +[colors.primary] +background = '#2E3440' +foreground = '#D8DEE9' + +# Normal colors +[colors.normal] +black = '#3B4252' +red = '#BF616A' +green = '#A3BE8C' +yellow = '#EBCB8B' +blue = '#81A1C1' +magenta = '#B48EAD' +cyan = '#88C0D0' +white = '#E5E9F0' + +# Bright colors +[colors.bright] +black = '#4C566A' +red = '#BF616A' +green = '#A3BE8C' +yellow = '#EBCB8B' +blue = '#81A1C1' +magenta = '#B48EAD' +cyan = '#8FBCBB' +white = '#ECEFF4' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/nord_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nord_light.toml new file mode 100644 index 0000000..84e570c --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nord_light.toml @@ -0,0 +1,28 @@ +# Colors (Nord light) theme based on https//github.com/nordtheme/alacritty/issues/28#issuecomment-1422225211 + +# Default colors +[colors.primary] +background = '#ECEFF4' +foreground = '#81A1C1' + +# Normal colors +[colors.normal] +black = '#D8DEE9' +red = '#bf616a' +green = '#a3be8c' +yellow = '#D08770' +blue = '#81A1C1' +magenta = '#B48EAD' +cyan = '#88C0D0' +white = '#4C566A' + +# Bright colors +[colors.bright] +black = '#D8DEE9' +red = '#bf616a' +green = '#a3be8c' +yellow = '#D08770' +blue = '#D8DEE9' +magenta = '#B48EAD' +cyan = '#8FBCBB' +white = '#D8DEE9' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/nordfox.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nordfox.toml new file mode 100644 index 0000000..7961947 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nordfox.toml @@ -0,0 +1,71 @@ +# Nightfox Alacritty Colors +## name: nordfox +## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/nordfox/alacritty.toml + +[colors.primary] +background = "#2e3440" +foreground = "#cdcecf" +dim_foreground = "#abb1bb" +bright_foreground = "#c7cdd9" + +[colors.cursor] +text = "#cdcecf" +cursor = "#abb1bb" + +[colors.vi_mode_cursor] +text = "#cdcecf" +cursor = "#88c0d0" + +[colors.search.matches] +foreground = "#cdcecf" +background = "#4f6074" + +[colors.search.focused_match] +foreground = "#cdcecf" +background = "#a3be8c" + +[colors.footer_bar] +foreground = "#cdcecf" +background = "#444c5e" + +[colors.hints.start] +foreground = "#cdcecf" +background = "#c9826b" + +[colors.hints.end] +foreground = "#cdcecf" +background = "#444c5e" + +[colors.selection] +text = "#cdcecf" +background = "#3e4a5b" + +[colors.normal] +black = "#3b4252" +red = "#bf616a" +green = "#a3be8c" +yellow = "#ebcb8b" +blue = "#81a1c1" +magenta = "#b48ead" +cyan = "#88c0d0" +white = "#e5e9f0" + +[colors.bright] +black = "#465780" +red = "#d06f79" +green = "#b1d196" +yellow = "#f0d399" +blue = "#8cafd2" +magenta = "#c895bf" +cyan = "#93ccdc" +white = "#e7ecf4" + +[colors.dim] +black = "#353a45" +red = "#a54e56" +green = "#8aa872" +yellow = "#d9b263" +blue = "#668aab" +magenta = "#9d7495" +cyan = "#69a7ba" +white = "#bbc3d4" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/nordic.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nordic.toml new file mode 100644 index 0000000..a72e017 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/nordic.toml @@ -0,0 +1,29 @@ +# Colors (Nordic) + +[colors.primary] +background = '#242933' +foreground = '#BBBDAF' + +[colors.normal] +black = '#191C1D' +red = '#BD6062' +green = '#A3D6A9' +yellow = '#F0DFAF' +blue = '#8FB4D8' +magenta = '#C7A9D9' +cyan = '#B6D7A8' +white = '#BDC5BD' + +[colors.bright] +black = '#727C7C' +red = '#D18FAF' +green = '#B7CEB0' +yellow = '#BCBCBC' +blue = '#E0CF9F' +magenta = '#C7A9D9' +cyan = '#BBDA97' +white = '#BDC5BD' + +[colors.selection] +text = '#000000' +background = '#F0DFAF' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/oceanic_next.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/oceanic_next.toml new file mode 100644 index 0000000..9268425 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/oceanic_next.toml @@ -0,0 +1,28 @@ +# Colors (Oceanic Next) + +# Default colors +[colors.primary] +background = '#1b2b34' +foreground = '#d8dee9' + +# Normal colors +[colors.normal] +black = '#29414f' +red = '#ec5f67' +green = '#99c794' +yellow = '#fac863' +blue = '#6699cc' +magenta = '#c594c5' +cyan = '#5fb3b3' +white = '#65737e' + +# Bright colors +[colors.bright] +black = '#405860' +red = '#ec5f67' +green = '#99c794' +yellow = '#fac863' +blue = '#6699cc' +magenta = '#c594c5' +cyan = '#5fb3b3' +white = '#adb5c0' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/omni.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/omni.toml new file mode 100644 index 0000000..ed006d1 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/omni.toml @@ -0,0 +1,37 @@ +[colors.primary] +background = '#191622' +foreground = '#e1e1e6' + +[colors.cursor] +text = '#191622' +cursor = '#f8f8f2' + +[colors.normal] +black = '#000000' +red = '#ff5555' +green = '#50fa7b' +yellow = '#effa78' +blue = '#bd93f9' +magenta = '#ff79c6' +cyan = '#8d79ba' +white = '#bfbfbf' + +[colors.bright] +black = '#4d4d4d' +red = '#ff6e67' +green = '#5af78e' +yellow = '#eaf08d' +blue = '#caa9fa' +magenta = '#ff92d0' +cyan = '#aa91e3' +white = '#e6e6e6' + +[colors.dim] +black = '#000000' +red = '#a90000' +green = '#049f2b' +yellow = '#a3b106' +blue = '#530aba' +magenta = '#bb006b' +cyan = '#433364' +white = '#5f5f5f' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/one_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/one_dark.toml new file mode 100644 index 0000000..b2de35e --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/one_dark.toml @@ -0,0 +1,28 @@ +# Colors (One Dark) + +# Default colors +[colors.primary] +background = '#282c34' +foreground = '#abb2bf' + +# Normal colors +[colors.normal] +black = '#1e2127' +red = '#e06c75' +green = '#98c379' +yellow = '#d19a66' +blue = '#61afef' +magenta = '#c678dd' +cyan = '#56b6c2' +white = '#abb2bf' + +# Bright colors +[colors.bright] +black = '#5c6370' +red = '#e06c75' +green = '#98c379' +yellow = '#d19a66' +blue = '#61afef' +magenta = '#c678dd' +cyan = '#56b6c2' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/one_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/one_light.toml new file mode 100644 index 0000000..0337917 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/one_light.toml @@ -0,0 +1,23 @@ +[colors.primary] +background = '#f8f8f8' +foreground = '#2a2b33' + +[colors.normal] +black = '#000000' +red = '#de3d35' +green = '#3e953a' +yellow = '#d2b67b' +blue = '#2f5af3' +magenta = '#a00095' +cyan = '#3e953a' +white = '#bbbbbb' + +[colors.bright] +black = '#000000' +red = '#de3d35' +green = '#3e953a' +yellow = '#d2b67b' +blue = '#2f5af3' +magenta = '#a00095' +cyan = '#3e953a' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/oxocarbon.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/oxocarbon.toml new file mode 100644 index 0000000..cd990c9 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/oxocarbon.toml @@ -0,0 +1,34 @@ +# Colors (Oxocarbon) +# Source https://vimcolorschemes.com/nyoom-engineering/oxocarbon.nvim + +# Default colors +[colors.primary] +background = '#1b1b1b' +foreground = '#ffffff' + +[colors.cursor] +text = '#161616' +cursor = '#78a9ff' + +# Normal colors +[colors.normal] +black = '#161616' +red = '#ee5396' +green = '#42be65' +yellow = '#ff7eb6' +blue = '#33b1ff' +magenta = '#be95ff' +cyan = '#3ddbd9' +white = '#ffffff' + +# Bright colors +[colors.bright] +black = '#525252' +red = '#ee5396' +green = '#42be65' +yellow = '#ff7eb6' +blue = '#33b1ff' +magenta = '#be95ff' +cyan = '#3ddbd9' +white = '#ffffff' + diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/palenight.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/palenight.toml new file mode 100644 index 0000000..fb9ccfc --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/palenight.toml @@ -0,0 +1,29 @@ +# iTerm2 Material Design - Palenight theme for Alacritty +# Source https//github.com/JonathanSpeek/palenight-iterm2 + +# Default colors +[colors.primary] +background = '#292d3e' +foreground = '#d0d0d0' + +# Normal colors +[colors.normal] +black = '#292d3e' +red = '#f07178' +green = '#c3e88d' +yellow = '#ffcb6b' +blue = '#82aaff' +magenta = '#c792ea' +cyan = '#89ddff' +white = '#d0d0d0' + +# Bright colors +[colors.bright] +black = '#434758' +red = '#ff8b92' +green = '#ddffa7' +yellow = '#ffe585' +blue = '#9cc4ff' +magenta = '#e1acff' +cyan = '#a3f7ff' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/papercolor_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/papercolor_dark.toml new file mode 100644 index 0000000..a595146 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/papercolor_dark.toml @@ -0,0 +1,32 @@ +# Colors (PaperColor - Dark) + +# Default colors +[colors.primary] +background = '#1c1c1c' +foreground = '#808080' + +[colors.cursor] +text = '#1c1c1c' +cursor = '#808080' + +# Normal colors +[colors.normal] +black = '#1c1c1c' +red = '#af005f' +green = '#5faf00' +yellow = '#d7af5f' +blue = '#5fafd7' +magenta = '#808080' +cyan = '#d7875f' +white = '#d0d0d0' + +# Bright colors +[colors.bright] +black = '#585858' +red = '#5faf5f' +green = '#afd700' +yellow = '#af87d7' +blue = '#ffaf00' +magenta = '#ffaf00' +cyan = '#00afaf' +white = '#5f8787' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/papercolor_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/papercolor_light.toml new file mode 100644 index 0000000..bcbec81 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/papercolor_light.toml @@ -0,0 +1,32 @@ +# Colors (PaperColor - Light) + +# Default colors +[colors.primary] +background = '#eeeeee' +foreground = '#444444' + +[colors.cursor] +text = '#eeeeee' +cursor = '#444444' + +# Normal colors +[colors.normal] +black = '#eeeeee' +red = '#af0000' +green = '#008700' +yellow = '#5f8700' +blue = '#0087af' +magenta = '#878787' +cyan = '#005f87' +white = '#444444' + +# Bright colors +[colors.bright] +black = '#bcbcbc' +red = '#d70000' +green = '#d70087' +yellow = '#8700af' +blue = '#d75f00' +magenta = '#d75f00' +cyan = '#005faf' +white = '#005f87' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/papertheme.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/papertheme.toml new file mode 100644 index 0000000..0c192b1 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/papertheme.toml @@ -0,0 +1,28 @@ +# Colors (Paper Theme) + +# Default colors +[colors.primary] +background = '#F2EEDE' +foreground = '#000000' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#CC3E28' +green = '#216609' +yellow = '#B58900' +blue = '#1E6FCC' +magenta = '#5C21A5' +cyan = '#158C86' +white = '#AAAAAA' + +# Bright colors +[colors.bright] +black = '#555555' +red = '#CC3E28' +green = '#216609' +yellow = '#B58900' +blue = '#1E6FCC' +magenta = '#5C21A5' +cyan = '#158C86' +white = '#AAAAAA' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/pastel_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/pastel_dark.toml new file mode 100644 index 0000000..a877760 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/pastel_dark.toml @@ -0,0 +1,33 @@ +# From iTerm2 Pastel Dark theme + +# Default colors +[colors.primary] +background = '#000000' +foreground = '#C7C7C7' + +# Cursor colors +[colors.cursor] +text = '#FFFEFF' +cursor = '#FFB472' + +# Normal colors +[colors.normal] +black = '#616161' +red = '#FF8272' +green = '#B4FA72' +yellow = '#FEFDC2' +blue = '#A5D5FE' +magenta = '#FF8FFD' +cyan = '#D0D1FE' +white = '#F1F1F1' + +# Bright colors +[colors.bright] +black = '#8E8E8E' +red = '#FFC4BD' +green = '#D6FCB9' +yellow = '#FEFDD5' +blue = '#C1E3FE' +magenta = '#FFB1FE' +cyan = '#E5E6FE' +white = '#FFFEFF' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/pencil_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/pencil_dark.toml new file mode 100644 index 0000000..470544c --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/pencil_dark.toml @@ -0,0 +1,28 @@ +# Colors (Pencil Dark) + +# Default Colors +[colors.primary] +background = '#212121' +foreground = '#f1f1f1' + +# Normal colors +[colors.normal] +black = '#212121' +red = '#c30771' +green = '#10a778' +yellow = '#a89c14' +blue = '#008ec4' +magenta = '#523c79' +cyan = '#20a5ba' +white = '#e0e0e0' + +# Bright colors +[colors.bright] +black = '#818181' +red = '#fb007a' +green = '#5fd7af' +yellow = '#f3e430' +blue = '#20bbfc' +magenta = '#6855de' +cyan = '#4fb8cc' +white = '#f1f1f1' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/pencil_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/pencil_light.toml new file mode 100644 index 0000000..a985b10 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/pencil_light.toml @@ -0,0 +1,28 @@ +# Colors (Pencil Light) + +# Default Colors +[colors.primary] +background = '#f1f1f1' +foreground = '#424242' + +# Normal colors +[colors.normal] +black = '#212121' +red = '#c30771' +green = '#10a778' +yellow = '#a89c14' +blue = '#008ec4' +magenta = '#523c79' +cyan = '#20a5ba' +white = '#e0e0e0' + +# Bright colors +[colors.bright] +black = '#212121' +red = '#fb007a' +green = '#5fd7af' +yellow = '#f3e430' +blue = '#20bbfc' +magenta = '#6855de' +cyan = '#4fb8cc' +white = '#f1f1f1' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/rainbow.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/rainbow.toml new file mode 100644 index 0000000..dd7a782 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/rainbow.toml @@ -0,0 +1,26 @@ +# Default colors +[colors.primary] +background = '#192835' +foreground = '#AADA4F' + +# Normal colors +[colors.normal] +black = '#5B4375' +red = '#426bb6' +green = '#2286b5' +yellow = '#5ab782' +blue = '#93ca5b' +magenta = '#c6c842' +cyan = '#8a5135' +white = '#c54646' + +# Bright colors +[colors.bright] +black = '#5B4375' +red = '#426bb6' +green = '#2286b5' +yellow = '#5ab782' +blue = '#93ca5b' +magenta = '#c6c842' +cyan = '#8a5135' +white = '#c54646' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/remedy_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/remedy_dark.toml new file mode 100644 index 0000000..682ec20 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/remedy_dark.toml @@ -0,0 +1,29 @@ +# Default colors +[colors.primary] +background = '#2c2b2a' +foreground = '#f9e7c4' + +dim_foreground = '#685E4A' +bright_foreground = '#1C1508' + +# Normal colors +[colors.normal] +black = '#282a2e' +red = '#a54242' +green = '#8c9440' +yellow = '#de935f' +blue = '#5f819d' +magenta = '#85678f' +cyan = '#5e8d87' +white = '#707880' + +# Bright colors +[colors.bright] +black = '#373b41' +red = '#cc6666' +green = '#b5bd68' +yellow = '#f0c674' +blue = '#81a2be' +magenta = '#b294bb' +cyan = '#8abeb7' +white = '#c5c8c6' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/rigel.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/rigel.toml new file mode 100644 index 0000000..84ab9b9 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/rigel.toml @@ -0,0 +1,30 @@ +# Rigel theme +# Source: https://github.com/Rigellute/rigel/blob/master/alacritty.toml + +[colors.primary] +background = '#002635' +foreground = '#e6e6dc' + +[colors.normal] +black = '#00384d' +red = '#c43061' +green = '#7fc06e' +yellow = '#f08e48' +blue = '#1c8db2' +magenta = '#c694ff' +cyan = '#00cccc' +white = '#77929e' + +[colors.bright] +black = '#517f8d' +red = '#ff5a67' +green = '#9cf087' +yellow = '#ffcc1b' +blue = '#7eb2dd' +magenta = '#fb94ff' +cyan = '#00ffff' +white = '#b7cff9' + +[colors.cursor] +text = '#002635' +cursor = '#ffcc1b' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine.toml new file mode 100644 index 0000000..0c5ffc2 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine.toml @@ -0,0 +1,39 @@ +[colors.primary] +background = '#191724' +foreground = '#e0def4' + +[colors.cursor] +text = '#e0def4' +cursor = '#524f67' + +[colors.vi_mode_cursor] +text = '#e0def4' +cursor = '#524f67' + +[colors.selection] +text = '#e0def4' +background = '#403d52' + +[colors.normal] +black = '#26233a' +red = '#eb6f92' +green = '#31748f' +yellow = '#f6c177' +blue = '#9ccfd8' +magenta = '#c4a7e7' +cyan = '#ebbcba' +white = '#e0def4' + +[colors.bright] +black = '#6e6a86' +red = '#eb6f92' +green = '#31748f' +yellow = '#f6c177' +blue = '#9ccfd8' +magenta = '#c4a7e7' +cyan = '#ebbcba' +white = '#e0def4' + +[colors.hints] +start = {foreground = '#908caa', background = '#1f1d2e' } +end = { foreground = '#6e6a86', background = '#1f1d2e' } diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine_dawn.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine_dawn.toml new file mode 100644 index 0000000..a0ee855 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine_dawn.toml @@ -0,0 +1,39 @@ +[colors.primary] +background = '#faf4ed' +foreground = '#575279' + +[colors.cursor] +text = '#575279' +cursor = '#cecacd' + +[colors.vi_mode_cursor] +text = '#575279' +cursor = '#cecacd' + +[colors.selection] +text = '#575279' +background = '#dfdad9' + +[colors.normal] +black = '#f2e9e1' +red = '#b4637a' +green = '#286983' +yellow = '#ea9d34' +blue = '#56949f' +magenta = '#907aa9' +cyan = '#d7827e' +white = '#575279' + +[colors.bright] +black = '#9893a5' +red = '#b4637a' +green = '#286983' +yellow = '#ea9d34' +blue = '#56949f' +magenta = '#907aa9' +cyan = '#d7827e' +white = '#575279' + +[colors.hints] +start = { foreground = '#797593', background = '#fffaf3' } +end = { foreground = '#9893a5', background = '#fffaf3' } diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine_moon.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine_moon.toml new file mode 100644 index 0000000..f816e1e --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/rose_pine_moon.toml @@ -0,0 +1,38 @@ +[colors.primary] +background = '#232136' +foreground = '#e0def4' + +[colors.cursor] +text = '#e0def4' +cursor = '#56526e' + +[colors.vi_mode_cursor] +text = '#e0def4' +cursor = '#56526e' + +[colors.selection] +text = '#e0def4' +background = '#44415a' +[colors.normal] +black = '#393552' +red = '#eb6f92' +green = '#3e8fb0' +yellow = '#f6c177' +blue = '#9ccfd8' +magenta = '#c4a7e7' +cyan = '#ea9a97' +white = '#e0def4' + +[colors.bright] +black = '#6e6a86' +red = '#eb6f92' +green = '#3e8fb0' +yellow = '#f6c177' +blue = '#9ccfd8' +magenta = '#c4a7e7' +cyan = '#ea9a97' +white = '#e0def4' + +[colors.hints] +start = { foreground = '#908caa', background = '#2a273f' } +end = { foreground = '#6e6a86', background = '#2a273f' } diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/seashells.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/seashells.toml new file mode 100644 index 0000000..0db2734 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/seashells.toml @@ -0,0 +1,37 @@ +# Colors (SeaShells) +# Source https//raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/master/schemes/SeaShells.itermcolors + +# Default colors +[colors.primary] +background = '#061923' +foreground = '#e5c49e' + +[colors.cursor] +text = '#061822' +cursor = '#feaf3c' + +[colors.selection] +text = '#ffe9d7' +background = '#265b75' + +# Normal colors +[colors.normal] +black = '#1d485f' +red = '#db662d' +green = '#008eab' +yellow = '#feaf3c' +blue = '#255a62' +magenta = '#77dbf4' +cyan = '#5fb1c2' +white = '#e5c49e' + +# Bright colors +[colors.bright] +black = '#545d65' +red = '#dd998a' +green = '#739da8' +yellow = '#fedaae' +blue = '#0bc7e3' +magenta = '#c6e8f1' +cyan = '#97b9c0' +white = '#ffe9d7' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/selenized_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/selenized_dark.toml new file mode 100644 index 0000000..c2c79af --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/selenized_dark.toml @@ -0,0 +1,26 @@ +# Colors (Selenized Dark) + +[colors.primary] +background = "#103c48" +foreground = "#adbcbc" + +[colors.normal] +black = "#184956" +red = "#fa5750" +green = "#75b938" +yellow = "#dbb32d" +blue = "#4695f7" +magenta = "#f275be" +cyan = "#41c7b9" +white = "#72898f" + +[colors.bright] +black = "#2d5b69" +red = "#ff665c" +green = "#84c747" +yellow = "#ebc13d" +blue = "#58a3ff" +magenta = "#ff84cd" +cyan = "#53d6c7" +white = "#cad8d9" + diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/selenized_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/selenized_light.toml new file mode 100644 index 0000000..daa0df0 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/selenized_light.toml @@ -0,0 +1,25 @@ +# Colors (Selenized Light) +[colors.primary] +background = '#fbf3db' +foreground = '#53676d' + +[colors.normal] +black = '#ece3cc' +red = '#d2212d' +green = '#489100' +yellow = '#ad8900' +blue = '#0072d4' +magenta = '#ca4898' +cyan = '#009c8f' +white = '#909995' + +[colors.bright] +black = '#d5cdb6' +red = '#cc1729' +green = '#428b00' +yellow = '#a78300' +blue = '#006dce' +magenta = '#c44392' +cyan = '#00978a' +white = '#3a4d53' + diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/seoul256-light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/seoul256-light.toml new file mode 100644 index 0000000..37880fc --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/seoul256-light.toml @@ -0,0 +1,71 @@ +# Seoul256 Light Alacritty Colors +## name: seoul256-light +## inspired by: https://github.com/junegunn/seoul256.vim + +[colors.primary] +background = "#dadada" # light_bg (253) +foreground = "#4e4e4e" # light_fg (239) +dim_foreground = "#616161" # slightly darker than foreground +bright_foreground = "#3a3a3a" # slightly brighter than foreground + +[colors.cursor] +text = "#dadada" # background +cursor = "#4e4e4e" # foreground + +[colors.vi_mode_cursor] +text = "#dadada" # background +cursor = "#007299" # blue (24) + +[colors.search.matches] +foreground = "#ffffff" # white (255) +background = "#007299" # blue (74) + +[colors.search.focused_match] +foreground = "#ffffff" # white (255) +background = "#005f87" # darker blue + +[colors.footer_bar] +foreground = "#4e4e4e" # foreground +background = "#bcbcbc" # light grey (250) + +[colors.hints.start] +foreground = "#4e4e4e" # foreground +background = "#d7afaf" # light pink (181) + +[colors.hints.end] +foreground = "#4e4e4e" # foreground +background = "#d0d0d0" # slightly darker than background (252) + +[colors.selection] +text = "#4e4e4e" # foreground +background = "#bcdede" # light cyan (152) + +[colors.normal] +black = "#4e4e4e" # light_fg (239) +red = "#af005f" # dark red (125) +green = "#5f875f" # green (65) +yellow = "#af5f00" # orange/yellow (130) +blue = "#007173" # blue (23) +magenta = "#870087" # magenta (90) +cyan = "#008787" # cyan (30) +white = "#e4e4e4" # very light grey (254) + +[colors.bright] +black = "#626262" # grey (241) +red = "#d70087" # bright red (162) +green = "#87af87" # bright green (108) +yellow = "#dfbc72" # bright yellow (179) +blue = "#5fafd7" # bright blue (74) +magenta = "#af5fff" # bright magenta (135) +cyan = "#00afaf" # bright cyan (37) +white = "#ffffff" # white (231) + +[colors.dim] +black = "#3a3a3a" # darker grey (237) +red = "#9B1D72" # dim red (89) +green = "#719872" # dim green (65) +yellow = "#BE9873" # dim yellow (137) +blue = "#719899" # dim blue (66) +magenta = "#9A7599" # dim magenta (96) +cyan = "#6FBCBD" # dim cyan (73) +white = "#d0d0d0" # dim white (252) diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/smoooooth.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/smoooooth.toml new file mode 100644 index 0000000..bdda69f --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/smoooooth.toml @@ -0,0 +1,33 @@ +# Color theme ported from iTerm 2 Smoooooth + +[colors.primary] +foreground = '#dbdbdb' +background = '#14191e' + +[colors.cursor] +text = '#000000' +cursor = '#fefffe' + +[colors.selection] +text = '#000000' +background = '#b3d7ff' + +[colors.normal] +black = '#14191e' +red = '#b43c29' +green = '#00c200' +yellow = '#c7c400' +blue = '#2743c7' +magenta = '#bf3fbd' +cyan = '#00c5c7' +white = '#c7c7c7' + +[colors.bright] +black = '#676767' +red = '#dc7974' +green = '#57e690' +yellow = '#ece100' +blue = '#a6aaf1' +magenta = '#e07de0' +cyan = '#5ffdff' +white = '#feffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/snazzy.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/snazzy.toml new file mode 100644 index 0000000..1d47914 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/snazzy.toml @@ -0,0 +1,28 @@ +# Colors (Snazzy) + +# Default colors +[colors.primary] +background = '#282a36' +foreground = '#eff0eb' + +# Normal colors +[colors.normal] +black = '#282a36' +red = '#ff5c57' +green = '#5af78e' +yellow = '#f3f99d' +blue = '#57c7ff' +magenta = '#ff6ac1' +cyan = '#9aedfe' +white = '#f1f1f0' + +# Bright colors +[colors.bright] +black = '#686868' +red = '#ff5c57' +green = '#5af78e' +yellow = '#f3f99d' +blue = '#57c7ff' +magenta = '#ff6ac1' +cyan = '#9aedfe' +white = '#f1f1f0' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_dark.toml new file mode 100644 index 0000000..dbcce2b --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_dark.toml @@ -0,0 +1,28 @@ +# Colors (Solarized Dark) + +# Default colors +[colors.primary] +background = '#002b36' +foreground = '#839496' + +# Normal colors +[colors.normal] +black = '#073642' +red = '#dc322f' +green = '#859900' +yellow = '#b58900' +blue = '#268bd2' +magenta = '#d33682' +cyan = '#2aa198' +white = '#eee8d5' + +# Bright colors +[colors.bright] +black = '#002b36' +red = '#cb4b16' +green = '#586e75' +yellow = '#657b83' +blue = '#839496' +magenta = '#6c71c4' +cyan = '#93a1a1' +white = '#fdf6e3' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_light.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_light.toml new file mode 100644 index 0000000..3f7eb25 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_light.toml @@ -0,0 +1,28 @@ +# Colors (Solarized Light) + +# Default colors +[colors.primary] +background = '#fdf6e3' +foreground = '#586e75' + +# Normal colors +[colors.normal] +black = '#073642' +red = '#dc322f' +green = '#859900' +yellow = '#b58900' +blue = '#268bd2' +magenta = '#d33682' +cyan = '#2aa198' +white = '#eee8d5' + +# Bright colors +[colors.bright] +black = '#002b36' +red = '#cb4b16' +green = '#586e75' +yellow = '#657b83' +blue = '#839496' +magenta = '#6c71c4' +cyan = '#93a1a1' +white = '#fdf6e3' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_osaka.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_osaka.toml new file mode 100644 index 0000000..0f25c29 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/solarized_osaka.toml @@ -0,0 +1,29 @@ +# Colors (Solarized Osaka) +# Source https://github.com/craftzdog/solarized-osaka.nvim + +# Default colors +[colors.primary] +background = '#001a1d' +foreground = '#839496' + +# Normal colors +[colors.normal] +black = '#073642' +red = '#dc322f' +green = '#859900' +yellow = '#b58900' +blue = '#268bd2' +magenta = '#d33682' +cyan = '#2aa198' +white = '#eee8d5' + +# Bright colors +[colors.bright] +black = '#4c4c4c' +red = '#cb4b16' +green = '#586e75' +yellow = '#657b83' +blue = '#839496' +magenta = '#6c71c4' +cyan = '#93a1a1' +white = '#fdf6e3' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/sonokai.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/sonokai.toml new file mode 100644 index 0000000..537ca46 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/sonokai.toml @@ -0,0 +1,33 @@ +# sonokai.toml: Sonokai color scheme for Alacritty. + +[colors.primary] +foreground = "#e2e2e3" +background = "#2c2e34" + +[colors.normal] +black = "#181819" +red = "#fc5d7c" +green = "#9ed072" +yellow = "#e7c664" +blue = "#76cce0" +magenta = "#b39df3" +cyan = "#f39660" +white = "#e2e2e3" + +[colors.bright] +black = "#7f8490" +red = "#fc5d7c" +green = "#9ed072" +yellow = "#e7c664" +blue = "#76cce0" +magenta = "#b39df3" +cyan = "#f39660" +white = "#e2e2e3" + +[colors.cursor] +text = "#2c2e34" +cursor = "#e2e2e3" + +[colors.selection] +text = "CellForeground" +background = "#414550" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/spacegray.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/spacegray.toml new file mode 100644 index 0000000..3543c83 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/spacegray.toml @@ -0,0 +1,33 @@ +# Spacegray, from Sublime Text +# Source https://github.com/SublimeText/Spacegray + +# Default colors +[colors.primary] +background = '#20242d' +foreground = '#b3b8c3' + +[colors.cursor] +text = '#b3b8c3' +cursor = '#b3b8c3' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#b04b57' +green = '#87b379' +yellow = '#e5c179' +blue = '#7d8fa4' +magenta = '#a47996' +cyan = '#85a7a5' +white = '#b3b8c3' + +# Bright colors +[colors.bright] +black = '#000000' +red = '#b04b57' +green = '#87b379' +yellow = '#e5c179' +blue = '#7d8fa4' +magenta = '#a47996' +cyan = '#85a7a5' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/synthwave_84.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/synthwave_84.toml new file mode 100644 index 0000000..89df666 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/synthwave_84.toml @@ -0,0 +1,23 @@ +[colors.primary] +foreground = "#ffffff" +background = "#262335" + +[colors.normal] +black = "#262335" +red = "#fe4450" +green = "#72f1b8" +yellow = "#f3e70f" +blue = "#03edf9" +magenta = "#ff7edb" +cyan = "#03edf9" +white = "#ffffff" + +[colors.bright] +black = "#614d85" +red = "#fe4450" +green = "#72f1b8" +yellow = "#fede5d" +blue = "#03edf9" +magenta = "#ff7edb" +cyan = "#03edf9" +white = "#ffffff" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/taerminal.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/taerminal.toml new file mode 100644 index 0000000..1ae012a --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/taerminal.toml @@ -0,0 +1,32 @@ +# Colors (Taerminal) + +# Default colors +[colors.primary] +background = '#26282a' +foreground = '#f0f0f0' + +[colors.cursor] +background = '#f0f0f0' +foreground = '#26282a' + +# Normal colors +[colors.normal] +black = '#26282a' +red = '#ff8878' +green = '#b4fb73' +yellow = '#fffcb7' +blue = '#8bbce5' +magenta = '#ffb2fe' +cyan = '#a2e1f8' +white = '#f1f1f1' + +# Bright colors +[colors.bright] +black = '#6f6f6f' +red = '#fe978b' +green = '#d6fcba' +yellow = '#fffed5' +blue = '#c2e3ff' +magenta = '#ffc6ff' +cyan = '#c0e9f8' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/tango_dark.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tango_dark.toml new file mode 100644 index 0000000..55541a9 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tango_dark.toml @@ -0,0 +1,25 @@ +# GNOME Terminal Tango Dark + +[colors.primary] +background = '#2e3436' +foreground = '#d3d7cf' + +[colors.normal] +black = '#2e3436' +red = '#cc0000' +green = '#4e9a06' +yellow = '#c4a000' +blue = '#3465a4' +magenta = '#75507b' +cyan = '#06989a' +white = '#d3d7cf' + +[colors.bright] +black = '#555753' +red = '#ef2929' +green = '#8ae234' +yellow = '#fce94f' +blue = '#729fcf' +magenta = '#ad7fa8' +cyan = '#34e2e2' +white = '#eeeeec' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/tender.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tender.toml new file mode 100644 index 0000000..9e09a06 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tender.toml @@ -0,0 +1,26 @@ +# Default colors +[colors.primary] +background = '#282828' +foreground = '#eeeeee' + +# Normal colors +[colors.normal] +black = '#282828' +red = '#f43753' +green = '#c9d05c' +yellow = '#ffc24b' +blue = '#b3deef' +magenta = '#d3b987' +cyan = '#73cef4' +white = '#eeeeee' + +# Bright colors +[colors.bright] +black = '#4c4c4c' +red = '#f43753' +green = '#c9d05c' +yellow = '#ffc24b' +blue = '#b3deef' +magenta = '#d3b987' +cyan = '#73cef4' +white = '#feffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/terafox.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/terafox.toml new file mode 100644 index 0000000..84b7f6d --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/terafox.toml @@ -0,0 +1,71 @@ +# Nightfox Alacritty Colors +## name: terafox +## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/terafox/alacritty.toml + +[colors.primary] +background = "#152528" +foreground = "#e6eaea" +dim_foreground = "#cbd9d8" +bright_foreground = "#eaeeee" + +[colors.cursor] +text = "#e6eaea" +cursor = "#cbd9d8" + +[colors.vi_mode_cursor] +text = "#e6eaea" +cursor = "#a1cdd8" + +[colors.search.matches] +foreground = "#e6eaea" +background = "#425e5e" + +[colors.search.focused_match] +foreground = "#e6eaea" +background = "#7aa4a1" + +[colors.footer_bar] +foreground = "#e6eaea" +background = "#254147" + +[colors.hints.start] +foreground = "#e6eaea" +background = "#ff8349" + +[colors.hints.end] +foreground = "#e6eaea" +background = "#254147" + +[colors.selection] +text = "#e6eaea" +background = "#293e40" + +[colors.normal] +black = "#2f3239" +red = "#e85c51" +green = "#7aa4a1" +yellow = "#fda47f" +blue = "#5a93aa" +magenta = "#ad5c7c" +cyan = "#a1cdd8" +white = "#ebebeb" + +[colors.bright] +black = "#4e5157" +red = "#eb746b" +green = "#8eb2af" +yellow = "#fdb292" +blue = "#73a3b7" +magenta = "#b97490" +cyan = "#afd4de" +white = "#eeeeee" + +[colors.dim] +black = "#282a30" +red = "#c54e45" +green = "#688b89" +yellow = "#d78b6c" +blue = "#4d7d90" +magenta = "#934e69" +cyan = "#89aeb8" +white = "#c8c8c8" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/terminal_app.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/terminal_app.toml new file mode 100644 index 0000000..838f7a5 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/terminal_app.toml @@ -0,0 +1,28 @@ +# Colors (Terminal.app) + +# Default colors +[colors.primary] +background = '#000000' +foreground = '#b6b6b6' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#990000' +green = '#00a600' +yellow = '#999900' +blue = '#0000b2' +magenta = '#b200b2' +cyan = '#00a6b2' +white = '#bfbfbf' + +# Bright colors +[colors.bright] +black = '#666666' +red = '#e50000' +green = '#00d900' +yellow = '#e5e500' +blue = '#0000ff' +magenta = '#e500e5' +cyan = '#00e5e5' +white = '#e5e5e5' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/thelovelace.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/thelovelace.toml new file mode 100644 index 0000000..461474e --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/thelovelace.toml @@ -0,0 +1,26 @@ +# Default colors +[colors.primary] +background = '#1D1F28' +foreground = '#FDFDFD' + +# Normal colors +[colors.normal] +# Bright colors +black = '#282A36' +red = '#F37F97' +green = '#5ADECD' +yellow = '#F2A272' +blue = '#8897F4' +magenta = '#C574DD' +cyan = '#79E6F3' +white = '#FDFDFD' + +[colors.bright] +black = '#414458' +red = '#FF4971' +green = '#18E3C8' +yellow = '#EBCB8B' +blue = '#FF8037' +magenta = '#556FFF' +cyan = '#3FDCEE' +white = '#BEBEC1' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night.toml new file mode 100644 index 0000000..0642a90 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night.toml @@ -0,0 +1,29 @@ +# Colors (Tokyo Night) +# Source https//github.com/zatchheems/tokyo-night-alacritty-theme + +# Default colors +[colors.primary] +background = '#1a1b26' +foreground = '#a9b1d6' + +# Normal colors +[colors.normal] +black = '#32344a' +red = '#f7768e' +green = '#9ece6a' +yellow = '#e0af68' +blue = '#7aa2f7' +magenta = '#ad8ee6' +cyan = '#449dab' +white = '#787c99' + +# Bright colors +[colors.bright] +black = '#444b6a' +red = '#ff7a93' +green = '#b9f27c' +yellow = '#ff9e64' +blue = '#7da6ff' +magenta = '#bb9af7' +cyan = '#0db9d7' +white = '#acb0d0' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night_enhanced.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night_enhanced.toml new file mode 100644 index 0000000..90ba82b --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night_enhanced.toml @@ -0,0 +1,30 @@ +[colors.primary] +background = "#08080b" +foreground = "#787c99" + +[colors.cursor] +cursor = "#787c99" + +[colors.selection] +text = "CellForeground" +background = "#515c7e" + +[colors.normal] +black = "#363b54" +red = "#f7768e" +green = "#41a6b5" +yellow = "#e0af68" +blue = "#7aa2f7" +magenta = "#bb9af7" +cyan = "#7dcfff" +white = "#787c99" + +[colors.bright] +black = "#363b54" +red = "#f7768e" +green = "#41a6b5" +yellow = "#e0af68" +blue = "#7aa2f7" +magenta = "#bb9af7" +cyan = "#7dcfff" +white = "#787c99" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night_storm.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night_storm.toml new file mode 100644 index 0000000..992f1d3 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tokyo_night_storm.toml @@ -0,0 +1,29 @@ +# Colors (Tokyo Night Storm variant) +# Source https//github.com/zatchheems/tokyo-night-alacritty-theme + +# Default colors +[colors.primary] +background = '#24283b' +foreground = '#a9b1d6' + +# Normal colors +[colors.normal] +black = '#32344a' +red = '#f7768e' +green = '#9ece6a' +yellow = '#e0af68' +blue = '#7aa2f7' +magenta = '#ad8ee6' +cyan = '#449dab' +white = '#9699a8' + +# Bright colors +[colors.bright] +black = '#444b6a' +red = '#ff7a93' +green = '#b9f27c' +yellow = '#ff9e64' +blue = '#7da6ff' +magenta = '#bb9af7' +cyan = '#0db9d7' +white = '#acb0d0' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/tomorrow_night.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tomorrow_night.toml new file mode 100644 index 0000000..579ebd8 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tomorrow_night.toml @@ -0,0 +1,32 @@ +# Colors (Tomorrow Night) + +# Default colors +[colors.primary] +background = '#1d1f21' +foreground = '#c5c8c6' + +[colors.cursor] +text = '#1d1f21' +cursor = '#ffffff' + +# Normal colors +[colors.normal] +black = '#1d1f21' +red = '#cc6666' +green = '#b5bd68' +yellow = '#e6c547' +blue = '#81a2be' +magenta = '#b294bb' +cyan = '#70c0ba' +white = '#373b41' + +# Bright colors +[colors.bright] +black = '#666666' +red = '#ff3334' +green = '#9ec400' +yellow = '#f0c674' +blue = '#81a2be' +magenta = '#b77ee0' +cyan = '#54ced6' +white = '#282a2e' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/tomorrow_night_bright.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tomorrow_night_bright.toml new file mode 100644 index 0000000..9ce62a3 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/tomorrow_night_bright.toml @@ -0,0 +1,28 @@ +# Colors (Tomorrow Night Bright) + +# Default colors +[colors.primary] +background = '#000000' +foreground = '#eaeaea' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#d54e53' +green = '#b9ca4a' +yellow = '#e6c547' +blue = '#7aa6da' +magenta = '#c397d8' +cyan = '#70c0ba' +white = '#424242' + +# Bright colors +[colors.bright] +black = '#666666' +red = '#ff3334' +green = '#9ec400' +yellow = '#e7c547' +blue = '#7aa6da' +magenta = '#b77ee0' +cyan = '#54ced6' +white = '#2a2a2a' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/ubuntu.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ubuntu.toml new file mode 100644 index 0000000..952cc07 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/ubuntu.toml @@ -0,0 +1,33 @@ +# 0x From the Ubuntu terminal color palette + +# 0x Default colors +[colors.primary] +background = '#300a24' +foreground = '#eeeeec' + +# 0x Colors the cursor will use if `custom_cursor_colors` is true +[colors.cursor] +text = '#bbbbbb' +cursor = '#b4d5ff' + +# 0x Normal colors +[colors.normal] +black = '#2e3436' +red = '#cc0000' +green = '#4e9a06' +yellow = '#c4a000' +blue = '#3465a4' +magenta = '#75507b' +cyan = '#06989a' +white = '#d3d7cf' + +# 0x Bright colors +[colors.bright] +black = '#555753' +red = '#ef2929' +green = '#8ae234' +yellow = '#fce94f' +blue = '#729fcf' +magenta = '#ad7fa8' +cyan = '#34e2e2' +white = '#eeeeec' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/vesper.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/vesper.toml new file mode 100644 index 0000000..dea338c --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/vesper.toml @@ -0,0 +1,26 @@ +# Colors (Vesper) +# Source https://github.com/raunofreiberg/vesper + +[colors.primary] +background = '#101010' +foreground = '#ffffff' + +[colors.normal] +black = '#101010' +red = '#f5a191' +green = '#90b99f' +yellow = '#e6b99d' +blue = '#aca1cf' +magenta = '#e29eca' +cyan = '#ea83a5' +white = '#a0a0a0' + +[colors.bright] +black = '#7e7e7e' +red = '#ff8080' +green = '#99ffe4' +yellow = '#ffc799' +blue = '#b9aeda' +magenta = '#ecaad6' +cyan = '#f591b2' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/vscode.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/vscode.toml new file mode 100644 index 0000000..6d40ab2 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/vscode.toml @@ -0,0 +1,23 @@ +[colors.primary] +foreground = "#cccccc" +background = "#1e1e1e" + +[colors.normal] +black = "#000000" +red = "#cd3131" +green = "#0dbc79" +yellow = "#e5e510" +blue = "#2472c8" +magenta = "#bc3fbc" +cyan = "#11a8cd" +white = "#e5e5e5" + +[colors.bright] +black = "#666666" +red = "#f14c4c" +green = "#23d18b" +yellow = "#f5f543" +blue = "#3b8eea" +magenta = "#d670d6" +cyan = "#29b8db" +white = "#e5e5e5" diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/wombat.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/wombat.toml new file mode 100644 index 0000000..fb13a54 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/wombat.toml @@ -0,0 +1,28 @@ +# Colors (Wombat) + +# Default colors +[colors.primary] +background = '#1f1f1f' +foreground = '#e5e1d8' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#f7786d' +green = '#bde97c' +yellow = '#efdfac' +blue = '#6ebaf8' +magenta = '#ef88ff' +cyan = '#90fdf8' +white = '#e5e1d8' + +# Bright colors +[colors.bright] +black = '#b4b4b4' +red = '#f99f92' +green = '#e3f7a1' +yellow = '#f2e9bf' +blue = '#b3d2ff' +magenta = '#e5bdff' +cyan = '#c2fefa' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/xterm.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/xterm.toml new file mode 100644 index 0000000..47fd62c --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/xterm.toml @@ -0,0 +1,28 @@ +# XTerm's default colors + +# Default colors +[colors.primary] +background = '#000000' +foreground = '#ffffff' + +# Normal colors +[colors.normal] +black = '#000000' +red = '#cd0000' +green = '#00cd00' +yellow = '#cdcd00' +blue = '#0000ee' +magenta = '#cd00cd' +cyan = '#00cdcd' +white = '#e5e5e5' + +# Bright colors +[colors.bright] +black = '#7f7f7f' +red = '#ff0000' +green = '#00ff00' +yellow = '#ffff00' +blue = '#5c5cff' +magenta = '#ff00ff' +cyan = '#00ffff' +white = '#ffffff' diff --git a/dots/alacritty/.config/alacritty/alacritty-theme/themes/zenburn.toml b/dots/alacritty/.config/alacritty/alacritty-theme/themes/zenburn.toml new file mode 100644 index 0000000..9c6fcd0 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty-theme/themes/zenburn.toml @@ -0,0 +1,29 @@ +# Colors (Zenburn) +# Orginally designed by jnurmine for vim. + +# Default colors +[colors.primary] +background = '#3A3A3A' +foreground = '#DCDCCC' + +# Normal colors +[colors.normal] +black = '#1E2320' +red = '#D78787' +green = '#60B48A' +yellow = '#DFAF8F' +blue = '#506070' +magenta = '#DC8CC3' +cyan = '#8CD0D3' +white = '#DCDCCC' + +# Bright colors +[colors.bright] +black = '#709080' +red = '#DCA3A3' +green = '#C3BF9F' +yellow = '#F0DFAF' +blue = '#94BFF3' +magenta = '#EC93D3' +cyan = '#93E0E3' +white = '#FFFFFF' diff --git a/dots/alacritty/.config/alacritty/alacritty.toml b/dots/alacritty/.config/alacritty/alacritty.toml new file mode 100644 index 0000000..f742d05 --- /dev/null +++ b/dots/alacritty/.config/alacritty/alacritty.toml @@ -0,0 +1,44 @@ +[cursor] +style = "Block" +unfocused_hollow = false + +[font] +size = 14.0 + +[font.glyph_offset] +x = 0 +y = 0 + +[font.bold] +family = "Lekton Nerd Font Mono" +style = "Bold" + +[font.italic] +family = "Lekton Nerd Font Mono" +style = "Italic" + +[font.normal] +family = "Lekton Nerd Font Mono" +style = "Regular" + +[font.offset] +x = 0 +y = 1 + +[window] +dynamic_padding = true +option_as_alt = "Both" +decorations = "Buttonless" +opacity = 0.91 +blur = true + +[window.padding] +x = 12 +y = 4 + +[env] +TERM = "alacritty-direct" + +[general] +import = ["~/.theme/alacritty.toml"] + diff --git a/dots/alacritty/.config/alacritty/theme.toml b/dots/alacritty/.config/alacritty/theme.toml new file mode 100644 index 0000000..b8631a4 --- /dev/null +++ b/dots/alacritty/.config/alacritty/theme.toml @@ -0,0 +1,4 @@ +[general] +import = [ + "/tmp/alacritty_theme.toml" +] diff --git a/dots/git/.config/git/rootignore b/dots/git/.config/git/rootignore new file mode 100644 index 0000000..136db89 --- /dev/null +++ b/dots/git/.config/git/rootignore @@ -0,0 +1,7 @@ +.classpath +.factorypath +.project +.settings +.idea +.cache +.vscode diff --git a/dots/git/.gitconfig.j2 b/dots/git/.gitconfig.j2 new file mode 100644 index 0000000..015ad96 --- /dev/null +++ b/dots/git/.gitconfig.j2 @@ -0,0 +1,12 @@ +[user] + signingkey = {{ pgp.signing }} + user = {{ user.name }} + email = {{ user.email }} +[commit] + gpgsign = true +[core] + excludesFile = ~/.config/git/rootignore +[push] + autoSetupRemote = true +[pull] + rebase = true diff --git a/dots/gpg/.gnupg/common.conf b/dots/gpg/.gnupg/common.conf new file mode 100755 index 0000000..5add401 --- /dev/null +++ b/dots/gpg/.gnupg/common.conf @@ -0,0 +1 @@ +use-keyboxd diff --git a/dots/gpg/.gnupg/gpg-agent.conf b/dots/gpg/.gnupg/gpg-agent.conf new file mode 100755 index 0000000..3578512 --- /dev/null +++ b/dots/gpg/.gnupg/gpg-agent.conf @@ -0,0 +1,2 @@ +pinentry-program /tmp/pinentry +enable-ssh-support diff --git a/dots/home/.pubkey.j2 b/dots/home/.pubkey.j2 new file mode 100644 index 0000000..e4e3602 --- /dev/null +++ b/dots/home/.pubkey.j2 @@ -0,0 +1 @@ +{{ pgp.asc }} diff --git a/dots/home/Documents/pubkey.asc b/dots/home/Documents/pubkey.asc new file mode 100644 index 0000000..e69de29 diff --git a/dots/home/Pictures/pfp/bubblegum.png b/dots/home/Pictures/pfp/bubblegum.png new file mode 100644 index 0000000..171bc62 Binary files /dev/null and b/dots/home/Pictures/pfp/bubblegum.png differ diff --git a/dots/home/Pictures/pfp/eejypenguin.png b/dots/home/Pictures/pfp/eejypenguin.png new file mode 100644 index 0000000..2ae47cb Binary files /dev/null and b/dots/home/Pictures/pfp/eejypenguin.png differ diff --git a/dots/home/Pictures/pfp/gus.jpg b/dots/home/Pictures/pfp/gus.jpg new file mode 100644 index 0000000..8073311 Binary files /dev/null and b/dots/home/Pictures/pfp/gus.jpg differ diff --git a/dots/home/Pictures/pfp/mefr.png b/dots/home/Pictures/pfp/mefr.png new file mode 100644 index 0000000..46e6948 Binary files /dev/null and b/dots/home/Pictures/pfp/mefr.png differ diff --git a/dots/home/Pictures/pfp/shoppingpenguin.png b/dots/home/Pictures/pfp/shoppingpenguin.png new file mode 100644 index 0000000..02c14ec Binary files /dev/null and b/dots/home/Pictures/pfp/shoppingpenguin.png differ diff --git a/dots/home/Pictures/wallpapers/beach.jpg b/dots/home/Pictures/wallpapers/beach.jpg new file mode 100644 index 0000000..e2e3949 Binary files /dev/null and b/dots/home/Pictures/wallpapers/beach.jpg differ diff --git a/dots/home/Pictures/wallpapers/flat-books.png b/dots/home/Pictures/wallpapers/flat-books.png new file mode 100644 index 0000000..3e4cf16 Binary files /dev/null and b/dots/home/Pictures/wallpapers/flat-books.png differ diff --git a/dots/home/Pictures/wallpapers/ghibli-road.png b/dots/home/Pictures/wallpapers/ghibli-road.png new file mode 100644 index 0000000..bf7b60d Binary files /dev/null and b/dots/home/Pictures/wallpapers/ghibli-road.png differ diff --git a/dots/home/Pictures/wallpapers/penguins-hugging.jpg b/dots/home/Pictures/wallpapers/penguins-hugging.jpg new file mode 100644 index 0000000..ee21cc5 Binary files /dev/null and b/dots/home/Pictures/wallpapers/penguins-hugging.jpg differ diff --git a/dots/home/Pictures/wallpapers/rose.png b/dots/home/Pictures/wallpapers/rose.png new file mode 100644 index 0000000..0b11bcb Binary files /dev/null and b/dots/home/Pictures/wallpapers/rose.png differ diff --git a/dots/home/Pictures/wallpapers/snowy-light-trees.jpg b/dots/home/Pictures/wallpapers/snowy-light-trees.jpg new file mode 100644 index 0000000..c2f6350 Binary files /dev/null and b/dots/home/Pictures/wallpapers/snowy-light-trees.jpg differ diff --git a/dots/home/Pictures/wallpapers/sunrise-mountains.webp b/dots/home/Pictures/wallpapers/sunrise-mountains.webp new file mode 100644 index 0000000..c59bd58 Binary files /dev/null and b/dots/home/Pictures/wallpapers/sunrise-mountains.webp differ diff --git a/dots/home/Pictures/wallpapers/table.png b/dots/home/Pictures/wallpapers/table.png new file mode 100644 index 0000000..bb86417 Binary files /dev/null and b/dots/home/Pictures/wallpapers/table.png differ diff --git a/dots/home/Pictures/wallpapers/wall.jpg b/dots/home/Pictures/wallpapers/wall.jpg new file mode 100644 index 0000000..f9df8f1 Binary files /dev/null and b/dots/home/Pictures/wallpapers/wall.jpg differ diff --git a/dots/home/scripts/greet.sh b/dots/home/scripts/greet.sh new file mode 100755 index 0000000..cb2aae5 --- /dev/null +++ b/dots/home/scripts/greet.sh @@ -0,0 +1,29 @@ +#!/bin/bash +source log.sh "greet.sh" + +pick_greeting() { + path="$1" + greetings=("$1"/*) + greeting_path="${greetings[$RANDOM % ${#greetings[@]}]}" + echo "$greeting_path" +} + +GREETINGS_LIST="$XDG_CONFIG_HOME/zsh/greetings" +if [ ! -d "$GREETINGS_LIST" ]; then + log DEBUG "no such file $GREETINGS_LIST" + exit 0 +fi + +for greetings in $(ls "$GREETINGS_LIST" | sort); do + echo + log DEBUG "greeting $greetings" + + path="$GREETINGS_LIST/$greetings" + if [ ! -d "$path" ]; then + log DEBUG "greetings $path is not a directory" + continue + fi + + greeting=$(pick_greeting "$path") + cat "$greeting" +done diff --git a/dots/home/scripts/log.sh b/dots/home/scripts/log.sh new file mode 100755 index 0000000..8895097 --- /dev/null +++ b/dots/home/scripts/log.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +# usage: +# > source log.sh +# > log INFO "hello" +# > log "this is epic" +# > log DEBUG "yo" + +_LOG_CALLER=$(basename "$1") + +log() { + LEVEL=$1 + shift + + case "$LEVEL" in + INFO|DEBUG|ERROR) + ;; + *) + set -- "INFO" "$LEVEL" "$@" + LEVEL="INFO" + ;; + esac + + TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') + MESSAGE="$*" + + if [ "$LEVEL" = "DEBUG" ] && [ -z "$DEBUG" ]; then + return + fi + + echo "[$TIMESTAMP] [$_LOG_CALLER] [$LEVEL] $MESSAGE" +} diff --git a/dots/home/scripts/pinentry.sh b/dots/home/scripts/pinentry.sh new file mode 100755 index 0000000..f02ee6f --- /dev/null +++ b/dots/home/scripts/pinentry.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +source log.sh "pinentry.sh" + +#-- -- +bin="${HOMEBREW_PREFIX:-"/usr"}/bin" +case "$PINENTRY_USER_DATA" in + *USE_TTY*) pe=$bin/pinentry-tty ;; + *USE_CURSES*) pe=$bin/pinentry-curses ;; + *USE_QT*) pe=$bin/pinentry-qt ;; + *USE_MAC*) pe=$bin/pinentry-mac ;; + *USE_GTK2*) pe=$bin/pinentry-gtk-2 ;; + *USE_GNOME3*) pe=$bin/pinentry-gnome3 ;; + *USE_X11*) pe=$bin/pinentry-x11 ;; +esac + +log DEBUG "$pe" + +exec $pe "$@" +#-- -- diff --git a/dots/home/scripts/platform.sh b/dots/home/scripts/platform.sh new file mode 100755 index 0000000..9449ceb --- /dev/null +++ b/dots/home/scripts/platform.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +case "$OSTYPE" in + solaris*) echo "solaris" ;; + darwin*) echo "osx" ;; + linux*) echo "linux" ;; + bsd*) echo "bsd" ;; + msys*) echo "windows" ;; + cygwin*) echo "windows" ;; + *) echo "unknown" ;; +esac diff --git a/dots/home/scripts/system_name.sh b/dots/home/scripts/system_name.sh new file mode 100755 index 0000000..2625293 --- /dev/null +++ b/dots/home/scripts/system_name.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +PLATFORM="${PLATFORM:-`platform.sh`}" + +MACHINE="$HOST" +if [ "$PLATFORM" = "osx" ]; then + MACHINE="$(scutil --get ComputerName)" +elif [ "$PLATFORM" = "linux" ]; then + MACHINE="$(cat /proc/sys/kernel/hostname)" +fi + +echo $MACHINE | awk -F\. '{print $1}' \ + | tr '[:upper:]' '[:lower:]' \ + | tr ' ' '-' diff --git a/dots/home/scripts/theme.sh b/dots/home/scripts/theme.sh new file mode 100755 index 0000000..830f56b --- /dev/null +++ b/dots/home/scripts/theme.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# usage: theme.sh + +source log.sh "theme.sh" + +THEME="$1" +log DEBUG "setting theme $THEME" + +THEME_SRC="$XDG_CONFIG_HOME/theme" +THEME_DEST="$HOME/.theme" +log DEBUG "src $THEME_SRC -> dest $THEME_DEST" + +THEME_TEMPL="{{THEME}}" + +find -L "$THEME_SRC/" -type f | while read source_file; do + destination_file=`echo "$source_file" | sed "s|^$THEME_SRC|$THEME_DEST|g"` + mkdir -p `dirname $destination_file` + log DEBUG "src $source_file -> dest $destination_file" + cat "$source_file" | sed "s|$THEME_TEMPL|$THEME|g" > $destination_file +done + diff --git a/dots/mise/.config/mise/config.toml b/dots/mise/.config/mise/config.toml new file mode 100644 index 0000000..7d382a3 --- /dev/null +++ b/dots/mise/.config/mise/config.toml @@ -0,0 +1,5 @@ +[tools] +node = "lts" +python = "3.12" +deno = "2.3.3" +java = "21" diff --git a/dots/nvim/.config/nvim/init.lua b/dots/nvim/.config/nvim/init.lua new file mode 100644 index 0000000..ae56b98 --- /dev/null +++ b/dots/nvim/.config/nvim/init.lua @@ -0,0 +1,9 @@ +-- -- +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" +-- -- + +-- -- +require("config.lazy") +require("config.options") +-- -- diff --git a/dots/nvim/.config/nvim/lua/.gitkeep b/dots/nvim/.config/nvim/lua/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dots/nvim/.config/nvim/lua/config/lazy.lua b/dots/nvim/.config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..f5ee74c --- /dev/null +++ b/dots/nvim/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,35 @@ +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, +}) diff --git a/dots/nvim/.config/nvim/lua/config/options.lua b/dots/nvim/.config/nvim/lua/config/options.lua new file mode 100644 index 0000000..01489f0 --- /dev/null +++ b/dots/nvim/.config/nvim/lua/config/options.lua @@ -0,0 +1,39 @@ +local options = { + cmdheight = 0, + + number = true, + relativenumber = true, + + clipboard = "unnamedplus", + + breakindent = true, + tabstop = 4, + softtabstop = 4, + shiftwidth = 4, + expandtab = true, + + undofile = true, + + hlsearch = false, + ignorecase = true, + smartcase = true, + + completeopt = "menuone,noselect", + + timeout = true, + timeoutlen = 500, + + foldcolumn = "0", + foldlevel = 99, + foldlevelstart = 99, + foldenable = true, + + spelllang = { "nb", "en" }, + spellcapcheck = "", +} + +vim.g.spellfile_URL = "https://ftp.nluug.nl/pub/vim/runtime/spell/" + +for k, v in pairs(options) do + vim.opt[k] = v +end diff --git a/dots/nvim/.config/nvim/lua/plugins/comment.lua b/dots/nvim/.config/nvim/lua/plugins/comment.lua new file mode 100644 index 0000000..fe9adbe --- /dev/null +++ b/dots/nvim/.config/nvim/lua/plugins/comment.lua @@ -0,0 +1,6 @@ +return { + "numToStr/Comment.nvim", + opts = {}, + lazy = false, +} + diff --git a/dots/nvim/.config/nvim/lua/plugins/lualine.lua b/dots/nvim/.config/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..a5c341d --- /dev/null +++ b/dots/nvim/.config/nvim/lua/plugins/lualine.lua @@ -0,0 +1,34 @@ +return { + { + 'nvim-lualine/lualine.nvim', + event = 'VeryLazy', + opts = function() + return { + options = { + icons_enabled = true, + theme = 'gruvbox', + component_separators = { left = '', right = ''}, + section_separators = { left = '', right = ''}, + }, + sections = { + lualine_c = { + { 'filename', path = 1 }, + }, + lualine_y = { + { + require('tmux-status').tmux_windows, + cond = require('tmux-status').show, + padding = { left = 1, right = 1 }, + }, + } + }, + } + end, + }, + { + "christopher-francisco/tmux-status.nvim", +-- lazy = true, + opts = {}, + }, +} + diff --git a/dots/nvim/.config/nvim/lua/plugins/telescope.lua b/dots/nvim/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..47b0b36 --- /dev/null +++ b/dots/nvim/.config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,25 @@ +return { + "nvim-telescope/telescope.nvim", + branch = "0.1.x", + dependencies = { + "nvim-lua/plenary.nvim", + { + "nvim-telescope/telescope-fzf-native.nvim", + build = "make", + cond = function() + return vim.fn.executable "make" == 1 + end, + }, + }, + config = function () + pcall(require("telescope").load_extension, "fzf") + end, + opt = { + pickers = { + colorscheme = { + enable_preview = true + } + } + }, +} + diff --git a/dots/nvim/.config/nvim/lua/plugins/theme.lua b/dots/nvim/.config/nvim/lua/plugins/theme.lua new file mode 100644 index 0000000..7f53fa8 --- /dev/null +++ b/dots/nvim/.config/nvim/lua/plugins/theme.lua @@ -0,0 +1,9 @@ +return { + "ellisonleao/gruvbox.nvim", + opts = { + transparent_mode = true, + }, + init = function() + vim.cmd("colorscheme gruvbox") + end +} diff --git a/dots/nvim/.config/nvim/lua/plugins/whichkey.lua b/dots/nvim/.config/nvim/lua/plugins/whichkey.lua new file mode 100644 index 0000000..1173e06 --- /dev/null +++ b/dots/nvim/.config/nvim/lua/plugins/whichkey.lua @@ -0,0 +1,6 @@ +return { + "folke/which-key.nvim", + event = "VeryLazy", + opts = {}, +} + diff --git a/dots/ssh/.ssh/config b/dots/ssh/.ssh/config new file mode 100644 index 0000000..698b53c --- /dev/null +++ b/dots/ssh/.ssh/config @@ -0,0 +1,16 @@ +Include config.d/* + +Host coffee + User serve + ForwardAgent yes + Hostname outbound.liz.coffee + +Host coffee-one + User serve + ForwardAgent yes + Hostname outbound-one.liz.coffee + +Host coffee-src + User liz + Hostname src.liz.coffee + Port 2222 diff --git a/dots/ssh/.ssh/config.d/.gitkeep b/dots/ssh/.ssh/config.d/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dots/starship/.config/starship.toml b/dots/starship/.config/starship.toml new file mode 100644 index 0000000..1967fe4 --- /dev/null +++ b/dots/starship/.config/starship.toml @@ -0,0 +1,53 @@ +format = """ +${custom.tztime} \ +$username\ +$hostname\ +$directory\ +$git_branch\ +$git_state\ +$git_status\ +$cmd_duration\ +$line_break\ +$character""" + +[username] +show_always = true + +[hostname] +ssh_only = false + +[directory] +style = "blue" + +[character] +success_symbol = "[λ](blue)" +error_symbol = "[λ](red)" +vimcmd_symbol = "[λ](green)" + +[git_branch] +format = "[$branch]($style)" +style = "bright-black" + +[git_status] +format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218) ($ahead_behind$stashed)]($style)" +style = "cyan" +conflicted = "​" +untracked = "​" +modified = "​" +staged = "​" +renamed = "​" +deleted = "​" +stashed = "≡" + +[git_state] +format = '\([$state( $progress_current/$progress_total)]($style)\) ' +style = "bright-black" + +[cmd_duration] +format = "[$duration]($style) " +style = "yellow" + +[custom.tztime] +command = 'date +"%a %b %d %Y %l:%M%p (%Z%z)"' +when = "true" +format = '[\[$symbol($output)\]](green)' diff --git a/dots/theme/.config/theme/alacritty.toml b/dots/theme/.config/theme/alacritty.toml new file mode 100644 index 0000000..d3c158b --- /dev/null +++ b/dots/theme/.config/theme/alacritty.toml @@ -0,0 +1,4 @@ +[general] +import = [ + "~/.config/alacritty/alacritty-theme/themes/{{THEME}}.toml" +] diff --git a/dots/tmux/.config/tmux/tmux.conf b/dots/tmux/.config/tmux/tmux.conf new file mode 100644 index 0000000..d5bc17c --- /dev/null +++ b/dots/tmux/.config/tmux/tmux.conf @@ -0,0 +1,28 @@ +#-- -- +set -g prefix C-s + +set-window-option mode-keys vi + +unbind r +bind r source-file ~/.config/tmux/tmux.conf + +bind-key h select-pane -L +bind-key j select-pane -D +bind-key k select-pane -U +bind-key l select-pane -R +#-- -- + +#-- -- +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +#-- -- + +#-- -- +set -g @plugin 'egel/tmux-gruvbox' +set -g @tmux-gruvbox 'dark' +#-- -- + +#-- -- +# keep at bottom +run '~/.tmux/plugins/tpm/tpm' +#-- -- diff --git a/dots/tmux/.tmux/plugins/tpm/.gitattributes b/dots/tmux/.tmux/plugins/tpm/.gitattributes new file mode 100644 index 0000000..80772e4 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/.gitattributes @@ -0,0 +1,9 @@ +# Force text files to have unix eols, so Windows/Cygwin does not break them +*.* eol=lf + +# These files are unfortunately not recognized as text files so +# explicitly listing them here +tpm eol=lf +bin/* eol=lf +bindings/* eol=lf +tests/* eol=lf diff --git a/dots/tmux/.tmux/plugins/tpm/.gitignore b/dots/tmux/.tmux/plugins/tpm/.gitignore new file mode 100644 index 0000000..8a94156 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/.gitignore @@ -0,0 +1,4 @@ +**/.vagrant/ +run_tests +tests/run_tests_in_isolation +tests/helpers/helpers.sh diff --git a/dots/tmux/.tmux/plugins/tpm/.gitmodules b/dots/tmux/.tmux/plugins/tpm/.gitmodules new file mode 100644 index 0000000..5e44e3c --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lib/tmux-test"] + path = lib/tmux-test + url = https://github.com/tmux-plugins/tmux-test.git diff --git a/dots/tmux/.tmux/plugins/tpm/.travis.yml b/dots/tmux/.tmux/plugins/tpm/.travis.yml new file mode 100644 index 0000000..ac45d8b --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/.travis.yml @@ -0,0 +1,19 @@ +# generic packages and tmux +before_install: + - sudo apt-get update + - sudo apt-get install -y git-core expect + - sudo apt-get install -y python-software-properties software-properties-common + - sudo apt-get install -y libevent-dev libncurses-dev + - git clone https://github.com/tmux/tmux.git + - cd tmux + - git checkout 2.0 + - sh autogen.sh + - ./configure && make && sudo make install + +install: + - git fetch --unshallow --recurse-submodules || git fetch --recurse-submodules + # manual `git clone` required for testing `tmux-test` plugin itself + - git clone https://github.com/tmux-plugins/tmux-test lib/tmux-test; true + - lib/tmux-test/setup + +script: ./tests/run_tests_in_isolation diff --git a/dots/tmux/.tmux/plugins/tpm/CHANGELOG.md b/dots/tmux/.tmux/plugins/tpm/CHANGELOG.md new file mode 100644 index 0000000..a9ce81e --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/CHANGELOG.md @@ -0,0 +1,86 @@ +# Changelog + +### master + +### v3.1.0, 2023-01-03 +- upgrade to new version of `tmux-test` +- bug: when using `emacs` copy mode, Enter does not quit screen after tpm + installation/update. Fix by making `Escape` the key for emacs mode. +- add a doc with troubleshooting instructions +- add `.gitattributes` file that forces linefeed characters (classic `\n`) as + line endings - helps with misconfigured git on windows/cygwin +- readme update: announce Cygwin support +- un-deprecate old plugin definition syntax: `set -g @tpm_plugins` +- More stuff, check `git log`. + +### v3.0.0, 2015-08-03 +- refactor `shared_set_tpm_path_constant` function +- move all instructions to `docs/` dir +- add `bin/install_plugins` cli executable script +- improved test runner function +- switch to using [tmux-test](https://github.com/tmux-plugins/tmux-test) + framework +- add `bin/update_plugins` cli executable script +- refactor test `expect` scripts, make them simpler and ensure they properly + assert expectations +- refactor code that sets 'TMUX_PLUGIN_MANAGER_PATH' global env var +- stop using global variable for 'tpm path' +- support defining plugins via `set -g @plugin` in sourced files as well + +### v2.0.0, 2015-07-07 +- enable overriding default key bindings +- start using `C-c` to clear screen +- add uninstall/clean procedure and keybinding (prefix+alt+u) (@chilicuil) +- add new `set @plugin 'repo'` plugin definition syntax (@chilicuil) +- revert back to using `-g` flag in new plugin definition syntax +- permit leading whitespace with new plugin definition syntax (thanks @chilicuil) +- make sure `TMUX_PLUGIN_MANAGER_PATH` always has trailng slash +- ensure old/deprecated plugin syntax `set -g @tpm_plugins` works alongside new + `set -g @plugin` syntax + +### v1.2.2, 2015-02-08 +- set GIT_TERMINAL_PROMPT=0 when doing `git clone`, `pull` or `submodule update` + to ensure git does not prompt for username/password in any case + +### v1.2.1, 2014-11-21 +- change the way plugin name is expanded. It now uses the http username + and password by default, like this: `https://git::@github.com/`. This prevents + username and password prompt (and subsequently tmux install hanging) with old + git versions. Fixes #7. + +### v1.2.0, 2014-11-20 +- refactor tests so they can be used on travis +- add travis.yml, add travis badge to the readme + +### v1.1.0, 2014-11-19 +- if the plugin is not downloaded do not source it +- remove `PLUGINS.md`, an obsolete list of plugins +- update readme with instructions about uninstalling plugins +- tilde char and `$HOME` in `TMUX_SHARED_MANAGER_PATH` couldn't be used because + they are just plain strings. Fixing the problem by manually expanding them. +- bugfix: fragile `*.tmux` file globbing (@majutsushi) + +### v1.0.0, 2014-08-05 +- update readme because of github organization change to + [tmux-plugins](https://github.com/tmux-plugins) +- update tests to pass +- update README to suggest different first plugin +- update list of plugins in the README +- remove README 'about' section +- move key binding to the main file. Delete `key_binding.sh`. +- rename `display_message` -> `echo_message` +- installing plugins installs just new plugins. Already installed plugins aren't + updated. +- add 'update plugin' binding and functionality +- add test for updating a plugin + +### v0.0.2, 2014-07-17 +- run all *.tmux plugin files as executables +- fix all redirects to /dev/null +- fix bug: TPM shared path is created before sync (cloning plugins from github + is done) +- add test suite running in Vagrant +- add Tmux version check. `TPM` won't run if Tmux version is less than 1.9. + +### v0.0.1, 2014-05-21 +- get TPM up and running diff --git a/dots/tmux/.tmux/plugins/tpm/HOW_TO_PLUGIN.md b/dots/tmux/.tmux/plugins/tpm/HOW_TO_PLUGIN.md new file mode 100644 index 0000000..9901619 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/HOW_TO_PLUGIN.md @@ -0,0 +1,2 @@ +Instructions moved to +[docs/how_to_create_plugin.md](docs/how_to_create_plugin.md). diff --git a/dots/tmux/.tmux/plugins/tpm/LICENSE.md b/dots/tmux/.tmux/plugins/tpm/LICENSE.md new file mode 100644 index 0000000..1222865 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/LICENSE.md @@ -0,0 +1,20 @@ +MIT license +Copyright (C) 2014 Bruno Sutic + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/dots/tmux/.tmux/plugins/tpm/README.md b/dots/tmux/.tmux/plugins/tpm/README.md new file mode 100644 index 0000000..2371863 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/README.md @@ -0,0 +1,101 @@ +# Tmux Plugin Manager + +[![Build Status](https://travis-ci.org/tmux-plugins/tpm.svg?branch=master)](https://travis-ci.org/tmux-plugins/tpm) + +Installs and loads `tmux` plugins. + +Tested and working on Linux, OSX, and Cygwin. + +See list of plugins [here](https://github.com/tmux-plugins/list). + +### Installation + +Requirements: `tmux` version 1.9 (or higher), `git`, `bash`. + +Clone TPM: + +```bash +git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm +``` + +Put this at the bottom of `~/.tmux.conf` (`$XDG_CONFIG_HOME/tmux/tmux.conf` +works too): + +```bash +# List of plugins +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' + +# Other examples: +# set -g @plugin 'github_username/plugin_name' +# set -g @plugin 'github_username/plugin_name#branch' +# set -g @plugin 'git@github.com:user/plugin' +# set -g @plugin 'git@bitbucket.com:user/plugin' + +# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) +run '~/.tmux/plugins/tpm/tpm' +``` + +Reload TMUX environment so TPM is sourced: + +```bash +# type this in terminal if tmux is already running +tmux source ~/.tmux.conf +``` + +That's it! + +### Installing plugins + +1. Add new plugin to `~/.tmux.conf` with `set -g @plugin '...'` +2. Press `prefix` + I (capital i, as in **I**nstall) to fetch the plugin. + +You're good to go! The plugin was cloned to `~/.tmux/plugins/` dir and sourced. + +### Uninstalling plugins + +1. Remove (or comment out) plugin from the list. +2. Press `prefix` + alt + u (lowercase u as in **u**ninstall) to remove the plugin. + +All the plugins are installed to `~/.tmux/plugins/` so alternatively you can +find plugin directory there and remove it. + +### Key bindings + +`prefix` + I +- Installs new plugins from GitHub or any other git repository +- Refreshes TMUX environment + +`prefix` + U +- updates plugin(s) + +`prefix` + alt + u +- remove/uninstall plugins not on the plugin list + +### Docs + +- [Help, tpm not working](docs/tpm_not_working.md) - problem solutions + +More advanced features and instructions, regular users probably do not need +this: + +- [How to create a plugin](docs/how_to_create_plugin.md). It's easy. +- [Managing plugins via the command line](docs/managing_plugins_via_cmd_line.md) +- [Changing plugins install dir](docs/changing_plugins_install_dir.md) +- [Automatic TPM installation on a new machine](docs/automatic_tpm_installation.md) + +### Tests + +Tests for this project run on [Travis CI](https://travis-ci.org/tmux-plugins/tpm). + +When run locally, [vagrant](https://www.vagrantup.com/) is required. +Run tests with: + +```bash +# within project directory +./run_tests +``` + +### License + +[MIT](LICENSE.md) diff --git a/dots/tmux/.tmux/plugins/tpm/bin/clean_plugins b/dots/tmux/.tmux/plugins/tpm/bin/clean_plugins new file mode 100755 index 0000000..12f8730 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/bin/clean_plugins @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Script intended for use via the command line. +# +# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system, +# but does not need to be started in order to run this script. + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" + +main() { + "$SCRIPTS_DIR/clean_plugins.sh" # has correct exit code +} +main diff --git a/dots/tmux/.tmux/plugins/tpm/bin/install_plugins b/dots/tmux/.tmux/plugins/tpm/bin/install_plugins new file mode 100755 index 0000000..c66b15b --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/bin/install_plugins @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Script intended for use via the command line. +# +# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system, +# but does not need to be started in order to run this script. + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" + +main() { + "$SCRIPTS_DIR/install_plugins.sh" # has correct exit code +} +main diff --git a/dots/tmux/.tmux/plugins/tpm/bin/update_plugins b/dots/tmux/.tmux/plugins/tpm/bin/update_plugins new file mode 100755 index 0000000..30a5646 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/bin/update_plugins @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +# Script intended for use via the command line. +# +# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system, +# but does not need to be started in order to run this script. + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" +PROGRAM_NAME="$0" + +if [ $# -eq 0 ]; then + echo "usage:" + echo " $PROGRAM_NAME all update all plugins" + echo " $PROGRAM_NAME tmux-foo update plugin 'tmux-foo'" + echo " $PROGRAM_NAME tmux-bar tmux-baz update multiple plugins" + exit 1 +fi + +main() { + "$SCRIPTS_DIR/update_plugin.sh" --shell-echo "$*" # has correct exit code +} +main "$*" + diff --git a/dots/tmux/.tmux/plugins/tpm/bindings/clean_plugins b/dots/tmux/.tmux/plugins/tpm/bindings/clean_plugins new file mode 100755 index 0000000..9a0d5d7 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/bindings/clean_plugins @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Tmux key-binding script. +# Scripts intended to be used via the command line are in `bin/` directory. + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" +HELPERS_DIR="$SCRIPTS_DIR/helpers" + +source "$HELPERS_DIR/tmux_echo_functions.sh" +source "$HELPERS_DIR/tmux_utils.sh" + +main() { + reload_tmux_environment + "$SCRIPTS_DIR/clean_plugins.sh" --tmux-echo >/dev/null 2>&1 + reload_tmux_environment + end_message +} +main diff --git a/dots/tmux/.tmux/plugins/tpm/bindings/install_plugins b/dots/tmux/.tmux/plugins/tpm/bindings/install_plugins new file mode 100755 index 0000000..3ade3c4 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/bindings/install_plugins @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Tmux key-binding script. +# Scripts intended to be used via the command line are in `bin/` directory. + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" +HELPERS_DIR="$SCRIPTS_DIR/helpers" + +source "$HELPERS_DIR/tmux_echo_functions.sh" +source "$HELPERS_DIR/tmux_utils.sh" + +main() { + reload_tmux_environment + "$SCRIPTS_DIR/install_plugins.sh" --tmux-echo >/dev/null 2>&1 + reload_tmux_environment + end_message +} +main diff --git a/dots/tmux/.tmux/plugins/tpm/bindings/update_plugins b/dots/tmux/.tmux/plugins/tpm/bindings/update_plugins new file mode 100755 index 0000000..28cc281 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/bindings/update_plugins @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# Tmux key-binding script. +# Scripts intended to be used via the command line are in `bin/` directory. + +# This script: +# - shows a list of installed plugins +# - starts a prompt to enter the name of the plugin that will be updated + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" +HELPERS_DIR="$SCRIPTS_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" +source "$HELPERS_DIR/tmux_echo_functions.sh" +source "$HELPERS_DIR/tmux_utils.sh" + +display_plugin_update_list() { + local plugins="$(tpm_plugins_list_helper)" + tmux_echo "Installed plugins:" + tmux_echo "" + + for plugin in $plugins; do + # displaying only installed plugins + if plugin_already_installed "$plugin"; then + local plugin_name="$(plugin_name_helper "$plugin")" + tmux_echo " $plugin_name" + fi + done + + tmux_echo "" + tmux_echo "Type plugin name to update it." + tmux_echo "" + tmux_echo "- \"all\" - updates all plugins" + tmux_echo "- ENTER - cancels" +} + +update_plugin_prompt() { + tmux command-prompt -p 'plugin update:' " \ + send-keys C-c; \ + run-shell '$SCRIPTS_DIR/update_plugin_prompt_handler.sh %1'" +} + +main() { + reload_tmux_environment + display_plugin_update_list + update_plugin_prompt +} +main diff --git a/dots/tmux/.tmux/plugins/tpm/docs/automatic_tpm_installation.md b/dots/tmux/.tmux/plugins/tpm/docs/automatic_tpm_installation.md new file mode 100644 index 0000000..630573f --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/docs/automatic_tpm_installation.md @@ -0,0 +1,12 @@ +# Automatic tpm installation + +One of the first things we do on a new machine is cloning our dotfiles. Not everything comes with them though, so for example `tpm` most likely won't be installed. + +If you want to install `tpm` and plugins automatically when tmux is started, put the following snippet in `.tmux.conf` before the final `run '~/.tmux/plugins/tpm/tpm'`: + +``` +if "test ! -d ~/.tmux/plugins/tpm" \ + "run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'" +``` + +This useful tip was submitted by @acr4 and narfman0. diff --git a/dots/tmux/.tmux/plugins/tpm/docs/changing_plugins_install_dir.md b/dots/tmux/.tmux/plugins/tpm/docs/changing_plugins_install_dir.md new file mode 100644 index 0000000..27de96d --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/docs/changing_plugins_install_dir.md @@ -0,0 +1,16 @@ +# Changing plugins install dir + +By default, TPM installs plugins in a subfolder named `plugins/` inside +`$XDG_CONFIG_HOME/tmux/` if a `tmux.conf` file was found at that location, or +inside `~/.tmux/` otherwise. + +You can change the install path by putting this in `.tmux.conf`: + + set-environment -g TMUX_PLUGIN_MANAGER_PATH '/some/other/path/' + +Tmux plugin manager initialization in `.tmux.conf` should also be updated: + + # initializes TMUX plugin manager in a new path + run /some/other/path/tpm/tpm + +Please make sure that the `run` line is at the very bottom of `.tmux.conf`. diff --git a/dots/tmux/.tmux/plugins/tpm/docs/how_to_create_plugin.md b/dots/tmux/.tmux/plugins/tpm/docs/how_to_create_plugin.md new file mode 100644 index 0000000..f7d9c13 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/docs/how_to_create_plugin.md @@ -0,0 +1,108 @@ +# How to create Tmux plugins + +Creating a new plugin is easy. + +For demonstration purposes we'll create a simple plugin that lists all +installed TPM plugins. Yes, a plugin that lists plugins :) We'll bind that to +`prefix + T`. + +The source code for this example plugin can be found +[here](https://github.com/tmux-plugins/tmux-example-plugin). + +### 1. create a new git project + +TPM depends on git for downloading and updating plugins. + +To create a new git project: + + $ mkdir tmux_my_plugin + $ cd tmux_my_plugin + $ git init + +### 2. create a `*.tmux` plugin run file + +When it sources a plugin, TPM executes all `*.tmux` files in your plugins' +directory. That's how plugins are run. + +Create a plugin run file in plugin directory: + + $ touch my_plugin.tmux + $ chmod u+x my_plugin.tmux + +You can have more than one `*.tmux` file, and all will get executed. However, usually +you'll need just one. + +### 3. create a plugin key binding + +We want the behavior of the plugin to trigger when a user hits `prefix + T`. + +Key `T` is chosen because: + - it's "kind of" a mnemonic for `TPM` + - the key is not used by Tmux natively. Tmux man page, KEY BINDINGS section + contains a list of all the bindings Tmux uses. There's plenty of unused keys + and we don't want to override any of Tmux default key bindings. + +Open the plugin run file in your favorite text editor: + + $ vim my_plugin.tmux + # or + $ subl my_plugin.tmux + +Put the following content in the file: + + #!/usr/bin/env bash + + CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + tmux bind-key T run-shell "$CURRENT_DIR/scripts/tmux_list_plugins.sh" + +As you can see, plugin run file is a simple bash script that sets up the binding. + +When pressed, `prefix + T` will execute another shell script: +`tmux_list_plugins.sh`. That script should be in `scripts/` directory - +relative to the plugin run file. + + +### 4. listing plugins + +Now that we have the binding, let's create a script that's invoked with +`prefix + T`. + + $ mkdir scripts + $ touch scripts/tmux_list_plugins.sh + $ chmod u+x scripts/tmux_list_plugins.sh + +And here's the script content: + + #!/usr/bin/env bash + + # fetching the directory where plugins are installed + plugin_path="$(tmux show-env -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)" + + # listing installed plugins + ls -1 "$plugin_path" + +### 5. try it out + +To see if this works, execute the plugin run file: + + $ ./my_plugin.tmux + +That should set up the key binding. Now hit `prefix + T` and see if it works. + +### 6. publish the plugin + +When everything is ready, push the plugin to an online git repository, +preferably GitHub. + +Other users can install your plugin by just adding plugin git URL to the +`@plugin` list in their `.tmux.conf`. + +If the plugin is on GitHub, your users will be able to use the shorthand of +`github_username/repository`. + +### Conclusion + +Hopefully, that was easy. As you can see, it's mostly shell scripting. + +You can use other scripting languages (ruby, python etc) but plain old shell +is preferred because of portability. diff --git a/dots/tmux/.tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md b/dots/tmux/.tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md new file mode 100644 index 0000000..7aefd7d --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md @@ -0,0 +1,36 @@ +# Managing plugins via the command line + +Aside from tmux key bindings, TPM provides shell interface for managing plugins +via scripts located in [bin/](../bin/) directory. + +Tmux does not need to be started in order to run scripts (but it's okay if it +is). If you [changed tpm install dir](../docs/changing_plugins_install_dir.md) +in `.tmux.conf` that should work fine too. + +Prerequisites: + +- tmux installed on the system (doh) +- `.tmux.conf` set up for TPM + +### Installing plugins + +As usual, plugins need to be specified in `.tmux.conf`. Run the following +command to install plugins: + + ~/.tmux/plugins/tpm/bin/install_plugins + +### Updating plugins + +To update all installed plugins: + + ~/.tmux/plugins/tpm/bin/update_plugins all + +or update a single plugin: + + ~/.tmux/plugins/tpm/bin/update_plugins tmux-sensible + +### Removing plugins + +To remove plugins not on the plugin list: + + ~/.tmux/plugins/tpm/bin/clean_plugins diff --git a/dots/tmux/.tmux/plugins/tpm/docs/tpm_not_working.md b/dots/tmux/.tmux/plugins/tpm/docs/tpm_not_working.md new file mode 100644 index 0000000..6680291 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/docs/tpm_not_working.md @@ -0,0 +1,102 @@ +# Help, tpm not working! + +Here's the list of issues users had with `tpm`: + +
+ +> Nothing works. `tpm` key bindings `prefix + I`, `prefix + U` not even + defined. + +Related [issue #22](https://github.com/tmux-plugins/tpm/issues/22) + +- Do you have required `tmux` version to run `tpm`?
+ Check `tmux` version with `$ tmux -V` command and make sure it's higher or + equal to the required version for `tpm` as stated in the readme. + +- ZSH tmux plugin might be causing issues.
+ If you have it installed, try disabling it and see if `tpm` works then. + +
+ +> Help, I'm using custom config file with `tmux -f /path/to/my_tmux.conf` +to start Tmux and for some reason plugins aren't loaded!? + +Related [issue #57](https://github.com/tmux-plugins/tpm/issues/57) + +`tpm` has a known issue when using custom config file with `-f` option. +The solution is to use alternative plugin definition syntax. Here are the steps +to make it work: + +1. remove all `set -g @plugin` lines from tmux config file +2. in the config file define the plugins in the following way: + + # List of plugins + set -g @tpm_plugins ' \ + tmux-plugins/tpm \ + tmux-plugins/tmux-sensible \ + tmux-plugins/tmux-resurrect \ + ' + + # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) + run '~/.tmux/plugins/tpm/tpm' + +3. Reload TMUX environment so TPM is sourced: `$ tmux source /path/to/my_tmux.conf` + +The plugins should now be working. + +
+ +> Weird sequence of characters show up when installing or updating plugins + +Related: [issue #25](https://github.com/tmux-plugins/tpm/issues/25) + +- This could be caused by [tmuxline.vim](https://github.com/edkolev/tmuxline.vim) + plugin. Uninstall it and see if things work. + +
+ +> "failed to connect to server" error when sourcing .tmux.conf + +Related: [issue #48](https://github.com/tmux-plugins/tpm/issues/48) + +- Make sure `tmux source ~/.tmux.conf` command is ran from inside `tmux`. + +
+ +> tpm not working: '~/.tmux/plugins/tpm/tpm' returned 2 (Windows / Cygwin) + +Related: [issue #81](https://github.com/tmux-plugins/tpm/issues/81) + +This issue is most likely caused by Windows line endings. For example, if you +have git's `core.autocrlf` option set to `true`, git will automatically convert +all the files to Windows line endings which might cause a problem. + +The solution is to convert all line ending to Unix newline characters. This +command handles that for all files under `.tmux/` dir (skips `.git` +subdirectories): + +```bash +find ~/.tmux -type d -name '.git*' -prune -o -type f -print0 | xargs -0 dos2unix +``` + +
+ +> '~/.tmux/plugins/tpm/tpm' returned 127 (on macOS, w/ tmux installed using brew) + +Related: [issue #67](https://github.com/tmux-plugins/tpm/issues/67) + +This problem is because tmux's `run-shell` command runs a shell which doesn't read from user configs, thus tmux installed in a brew prefix (e.g. `/usr/local/bin`) will not be found. + +The solution is to find your brew prefix + +```sh +> echo "$(brew --prefix)/bin" +/opt/homebrew/bin +``` + +And prepend it to the `PATH` environment variable +``` +set-environment -g PATH "/opt/homebrew/bin:/bin:/usr/bin" +``` + +before any `run-shell`/`run` commands in `~/.tmux.conf`. diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/check_tmux_version.sh b/dots/tmux/.tmux/plugins/tpm/scripts/check_tmux_version.sh new file mode 100755 index 0000000..b0aedec --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/check_tmux_version.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +VERSION="$1" +UNSUPPORTED_MSG="$2" + +get_tmux_option() { + local option=$1 + local default_value=$2 + local option_value=$(tmux show-option -gqv "$option") + if [ -z "$option_value" ]; then + echo "$default_value" + else + echo "$option_value" + fi +} + +# Ensures a message is displayed for 5 seconds in tmux prompt. +# Does not override the 'display-time' tmux option. +display_message() { + local message="$1" + + # display_duration defaults to 5 seconds, if not passed as an argument + if [ "$#" -eq 2 ]; then + local display_duration="$2" + else + local display_duration="5000" + fi + + # saves user-set 'display-time' option + local saved_display_time=$(get_tmux_option "display-time" "750") + + # sets message display time to 5 seconds + tmux set-option -gq display-time "$display_duration" + + # displays message + tmux display-message "$message" + + # restores original 'display-time' value + tmux set-option -gq display-time "$saved_display_time" +} + +# this is used to get "clean" integer version number. Examples: +# `tmux 1.9` => `19` +# `1.9a` => `19` +get_digits_from_string() { + local string="$1" + local only_digits="$(echo "$string" | tr -dC '[:digit:]')" + echo "$only_digits" +} + +tmux_version_int() { + local tmux_version_string=$(tmux -V) + echo "$(get_digits_from_string "$tmux_version_string")" +} + +unsupported_version_message() { + if [ -n "$UNSUPPORTED_MSG" ]; then + echo "$UNSUPPORTED_MSG" + else + echo "Error, Tmux version unsupported! Please install Tmux version $VERSION or greater!" + fi +} + +exit_if_unsupported_version() { + local current_version="$1" + local supported_version="$2" + if [ "$current_version" -lt "$supported_version" ]; then + display_message "$(unsupported_version_message)" + exit 1 + fi +} + +main() { + local supported_version_int="$(get_digits_from_string "$VERSION")" + local current_version_int="$(tmux_version_int)" + exit_if_unsupported_version "$current_version_int" "$supported_version_int" +} +main diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/clean_plugins.sh b/dots/tmux/.tmux/plugins/tpm/scripts/clean_plugins.sh new file mode 100755 index 0000000..a025524 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/clean_plugins.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" +source "$HELPERS_DIR/utility.sh" + +if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions + source "$HELPERS_DIR/tmux_echo_functions.sh" +else # shell output functions + source "$HELPERS_DIR/shell_echo_functions.sh" +fi + +clean_plugins() { + local plugins plugin plugin_directory + plugins="$(tpm_plugins_list_helper)" + + for plugin_directory in "$(tpm_path)"/*; do + [ -d "${plugin_directory}" ] || continue + plugin="$(plugin_name_helper "${plugin_directory}")" + case "${plugins}" in + *"${plugin}"*) : ;; + *) + [ "${plugin}" = "tpm" ] && continue + echo_ok "Removing \"$plugin\"" + rm -rf "${plugin_directory}" >/dev/null 2>&1 + [ -d "${plugin_directory}" ] && + echo_err " \"$plugin\" clean fail" || + echo_ok " \"$plugin\" clean success" + ;; + esac + done +} + +main() { + ensure_tpm_path_exists + clean_plugins + exit_value_helper +} +main diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/helpers/plugin_functions.sh b/dots/tmux/.tmux/plugins/tpm/scripts/helpers/plugin_functions.sh new file mode 100644 index 0000000..f33d215 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/helpers/plugin_functions.sh @@ -0,0 +1,104 @@ +# using @tpm_plugins is now deprecated in favor of using @plugin syntax +tpm_plugins_variable_name="@tpm_plugins" + +# manually expanding tilde char or `$HOME` variable. +_manual_expansion() { + local path="$1" + local expanded_tilde="${path/#\~/$HOME}" + echo "${expanded_tilde/#\$HOME/$HOME}" +} + +_tpm_path() { + local string_path="$(tmux start-server\; show-environment -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)/" + _manual_expansion "$string_path" +} + +_CACHED_TPM_PATH="$(_tpm_path)" + +# Get the absolute path to the users configuration file of TMux. +# This includes a prioritized search on different locations. +# +_get_user_tmux_conf() { + # Define the different possible locations. + xdg_location="${XDG_CONFIG_HOME:-$HOME/.config}/tmux/tmux.conf" + default_location="$HOME/.tmux.conf" + + # Search for the correct configuration file by priority. + if [ -f "$xdg_location" ]; then + echo "$xdg_location" + + else + echo "$default_location" + fi +} + +_tmux_conf_contents() { + user_config=$(_get_user_tmux_conf) + cat /etc/tmux.conf "$user_config" 2>/dev/null + if [ "$1" == "full" ]; then # also output content from sourced files + local file + for file in $(_sourced_files); do + cat $(_manual_expansion "$file") 2>/dev/null + done + fi +} + +# return files sourced from tmux config files +_sourced_files() { + _tmux_conf_contents | + sed -E -n -e "s/^[[:space:]]*source(-file)?[[:space:]]+(-q+[[:space:]]+)?['\"]?([^'\"]+)['\"]?/\3/p" +} + +# Want to be able to abort in certain cases +trap "exit 1" TERM +export TOP_PID=$$ + +_fatal_error_abort() { + echo >&2 "Aborting." + kill -s TERM $TOP_PID +} + +# PUBLIC FUNCTIONS BELOW + +tpm_path() { + if [ "$_CACHED_TPM_PATH" == "/" ]; then + echo >&2 "FATAL: Tmux Plugin Manager not configured in tmux.conf" + _fatal_error_abort + fi + echo "$_CACHED_TPM_PATH" +} + +tpm_plugins_list_helper() { + # lists plugins from @tpm_plugins option + echo "$(tmux start-server\; show-option -gqv "$tpm_plugins_variable_name")" + + # read set -g @plugin "tmux-plugins/tmux-example-plugin" entries + _tmux_conf_contents "full" | + awk '/^[ \t]*set(-option)? +-g +@plugin/ { gsub(/'\''/,""); gsub(/'\"'/,""); print $4 }' +} + +# Allowed plugin name formats: +# 1. "git://github.com/user/plugin_name.git" +# 2. "user/plugin_name" +plugin_name_helper() { + local plugin="$1" + # get only the part after the last slash, e.g. "plugin_name.git" + local plugin_basename="$(basename "$plugin")" + # remove ".git" extension (if it exists) to get only "plugin_name" + local plugin_name="${plugin_basename%.git}" + echo "$plugin_name" +} + +plugin_path_helper() { + local plugin="$1" + local plugin_name="$(plugin_name_helper "$plugin")" + echo "$(tpm_path)${plugin_name}/" +} + +plugin_already_installed() { + local plugin="$1" + local plugin_path="$(plugin_path_helper "$plugin")" + [ -d "$plugin_path" ] && + cd "$plugin_path" && + git remote >/dev/null 2>&1 +} diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh b/dots/tmux/.tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh new file mode 100644 index 0000000..ecaa37e --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh @@ -0,0 +1,7 @@ +echo_ok() { + echo "$*" +} + +echo_err() { + fail_helper "$*" +} diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh b/dots/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh new file mode 100644 index 0000000..7a6ef0a --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh @@ -0,0 +1,28 @@ +_has_emacs_mode_keys() { + $(tmux show -gw mode-keys | grep -q emacs) +} + +tmux_echo() { + local message="$1" + tmux run-shell "echo '$message'" +} + +echo_ok() { + tmux_echo "$*" +} + +echo_err() { + tmux_echo "$*" +} + +end_message() { + if _has_emacs_mode_keys; then + local continue_key="ESCAPE" + else + local continue_key="ENTER" + fi + tmux_echo "" + tmux_echo "TMUX environment reloaded." + tmux_echo "" + tmux_echo "Done, press $continue_key to continue." +} diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_utils.sh b/dots/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_utils.sh new file mode 100644 index 0000000..238952d --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_utils.sh @@ -0,0 +1,6 @@ +HELPERS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source "$HELPERS_DIR/plugin_functions.sh" + +reload_tmux_environment() { + tmux source-file $(_get_user_tmux_conf) >/dev/null 2>&1 +} diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/helpers/utility.sh b/dots/tmux/.tmux/plugins/tpm/scripts/helpers/utility.sh new file mode 100644 index 0000000..de6eb35 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/helpers/utility.sh @@ -0,0 +1,17 @@ +ensure_tpm_path_exists() { + mkdir -p "$(tpm_path)" +} + +fail_helper() { + local message="$1" + echo "$message" >&2 + FAIL="true" +} + +exit_value_helper() { + if [ "$FAIL" == "true" ]; then + exit 1 + else + exit 0 + fi +} diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/install_plugins.sh b/dots/tmux/.tmux/plugins/tpm/scripts/install_plugins.sh new file mode 100755 index 0000000..e2450ac --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/install_plugins.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" +source "$HELPERS_DIR/utility.sh" + +if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions + source "$HELPERS_DIR/tmux_echo_functions.sh" +else # shell output functions + source "$HELPERS_DIR/shell_echo_functions.sh" +fi + +clone() { + local plugin="$1" + local branch="$2" + if [ -n "$branch" ]; then + cd "$(tpm_path)" && + GIT_TERMINAL_PROMPT=0 git clone -b "$branch" --single-branch --recursive "$plugin" >/dev/null 2>&1 + else + cd "$(tpm_path)" && + GIT_TERMINAL_PROMPT=0 git clone --single-branch --recursive "$plugin" >/dev/null 2>&1 + fi +} + +# tries cloning: +# 1. plugin name directly - works if it's a valid git url +# 2. expands the plugin name to point to a GitHub repo and tries cloning again +clone_plugin() { + local plugin="$1" + local branch="$2" + clone "$plugin" "$branch" || + clone "https://git::@github.com/$plugin" "$branch" +} + +# clone plugin and produce output +install_plugin() { + local plugin="$1" + local branch="$2" + local plugin_name="$(plugin_name_helper "$plugin")" + + if plugin_already_installed "$plugin"; then + echo_ok "Already installed \"$plugin_name\"" + else + echo_ok "Installing \"$plugin_name\"" + clone_plugin "$plugin" "$branch" && + echo_ok " \"$plugin_name\" download success" || + echo_err " \"$plugin_name\" download fail" + fi +} + +install_plugins() { + local plugins="$(tpm_plugins_list_helper)" + for plugin in $plugins; do + IFS='#' read -ra plugin <<< "$plugin" + install_plugin "${plugin[0]}" "${plugin[1]}" + done +} + +verify_tpm_path_permissions() { + local path="$(tpm_path)" + # check the write permission flag for all users to ensure + # that we have proper access + [ -w "$path" ] || + echo_err "$path is not writable!" +} + +main() { + ensure_tpm_path_exists + verify_tpm_path_permissions + install_plugins + exit_value_helper +} +main diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/source_plugins.sh b/dots/tmux/.tmux/plugins/tpm/scripts/source_plugins.sh new file mode 100755 index 0000000..6381d54 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/source_plugins.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" + +plugin_dir_exists() { + [ -d "$1" ] +} + +# Runs all *.tmux files from the plugin directory. +# Files are ran as executables. +# No errors if the plugin dir does not exist. +silently_source_all_tmux_files() { + local plugin_path="$1" + local plugin_tmux_files="$plugin_path*.tmux" + if plugin_dir_exists "$plugin_path"; then + for tmux_file in $plugin_tmux_files; do + # if the glob didn't find any files this will be the + # unexpanded glob which obviously doesn't exist + [ -f "$tmux_file" ] || continue + # runs *.tmux file as an executable + $tmux_file >/dev/null 2>&1 + done + fi +} + +source_plugins() { + local plugin plugin_path + local plugins="$(tpm_plugins_list_helper)" + for plugin in $plugins; do + IFS='#' read -ra plugin <<< "$plugin" + plugin_path="$(plugin_path_helper "${plugin[0]}")" + silently_source_all_tmux_files "$plugin_path" + done +} + +main() { + source_plugins +} +main diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/update_plugin.sh b/dots/tmux/.tmux/plugins/tpm/scripts/update_plugin.sh new file mode 100755 index 0000000..e533664 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/update_plugin.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +# this script handles core logic of updating plugins + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" +source "$HELPERS_DIR/utility.sh" + +if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions + source "$HELPERS_DIR/tmux_echo_functions.sh" +else # shell output functions + source "$HELPERS_DIR/shell_echo_functions.sh" +fi + +# from now on ignore first script argument +shift + +pull_changes() { + local plugin="$1" + local plugin_path="$(plugin_path_helper "$plugin")" + cd "$plugin_path" && + GIT_TERMINAL_PROMPT=0 git pull && + GIT_TERMINAL_PROMPT=0 git submodule update --init --recursive +} + +update() { + local plugin="$1" output + output=$(pull_changes "$plugin" 2>&1) + if (( $? == 0 )); then + echo_ok " \"$plugin\" update success" + echo_ok "$(echo "$output" | sed -e 's/^/ | /')" + else + echo_err " \"$plugin\" update fail" + echo_err "$(echo "$output" | sed -e 's/^/ | /')" + fi +} + +update_all() { + echo_ok "Updating all plugins!" + echo_ok "" + local plugins="$(tpm_plugins_list_helper)" + for plugin in $plugins; do + IFS='#' read -ra plugin <<< "$plugin" + local plugin_name="$(plugin_name_helper "${plugin[0]}")" + # updating only installed plugins + if plugin_already_installed "$plugin_name"; then + update "$plugin_name" & + fi + done + wait +} + +update_plugins() { + local plugins="$*" + for plugin in $plugins; do + IFS='#' read -ra plugin <<< "$plugin" + local plugin_name="$(plugin_name_helper "${plugin[0]}")" + if plugin_already_installed "$plugin_name"; then + update "$plugin_name" & + else + echo_err "$plugin_name not installed!" & + fi + done + wait +} + +main() { + ensure_tpm_path_exists + if [ "$1" == "all" ]; then + update_all + else + update_plugins "$*" + fi + exit_value_helper +} +main "$*" diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh b/dots/tmux/.tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh new file mode 100755 index 0000000..5e1f7d9 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +if [ $# -eq 0 ]; then + exit 0 +fi + +source "$HELPERS_DIR/tmux_echo_functions.sh" +source "$HELPERS_DIR/tmux_utils.sh" + +main() { + "$CURRENT_DIR/update_plugin.sh" --tmux-echo "$*" + reload_tmux_environment + end_message +} +main "$*" diff --git a/dots/tmux/.tmux/plugins/tpm/scripts/variables.sh b/dots/tmux/.tmux/plugins/tpm/scripts/variables.sh new file mode 100644 index 0000000..5601a86 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/scripts/variables.sh @@ -0,0 +1,13 @@ +install_key_option="@tpm-install" +default_install_key="I" + +update_key_option="@tpm-update" +default_update_key="U" + +clean_key_option="@tpm-clean" +default_clean_key="M-u" + +SUPPORTED_TMUX_VERSION="1.9" + +DEFAULT_TPM_ENV_VAR_NAME="TMUX_PLUGIN_MANAGER_PATH" +DEFAULT_TPM_PATH="$HOME/.tmux/plugins/" diff --git a/dots/tmux/.tmux/plugins/tpm/tests/expect_failed_plugin_download b/dots/tmux/.tmux/plugins/tpm/tests/expect_failed_plugin_download new file mode 100755 index 0000000..b970477 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/expect_failed_plugin_download @@ -0,0 +1,36 @@ +#!/usr/bin/env expect + +# disables script output +log_user 0 + +spawn tmux + +# Waiting for tmux to attach. If this is not done, next command, `send` will +# not work properly. +sleep 1 + +# this is tmux prefix + I +send "I" + +# cloning might take a while +set timeout 20 + +expect_after { + timeout { exit 1 } +} + +expect { + "Installing \"non-existing-plugin\"" +} + +expect { + "\"non-existing-plugin\" download fail" +} + +expect { + "Done, press ENTER to continue" { + exit 0 + } +} + +exit 1 diff --git a/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_clean_plugins b/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_clean_plugins new file mode 100755 index 0000000..987c49d --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_clean_plugins @@ -0,0 +1,35 @@ +#!/usr/bin/env expect + +# disables script output +log_user 0 + +spawn tmux + +# Waiting for tmux to attach. If this is not done, next command, `send` will +# not work properly. +sleep 1 + +# this is tmux prefix + alt + u +send "u" + +set timeout 5 + +expect_after { + timeout { exit 1 } +} + +expect { + "Removing \"tmux-example-plugin\"" +} + +expect { + "\"tmux-example-plugin\" clean success" +} + +expect { + "Done, press ENTER to continue." { + exit 0 + } +} + +exit 1 diff --git a/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download b/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download new file mode 100755 index 0000000..cc87a26 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download @@ -0,0 +1,44 @@ +#!/usr/bin/env expect + +# disables script output +log_user 0 + +spawn tmux + +# Waiting for tmux to attach. If this is not done, next command, `send` will +# not work properly. +sleep 1 + +# this is tmux prefix + I +send "I" + +# cloning might take a while +set timeout 15 + +expect_after { + timeout { exit 1 } +} + +expect { + "Installing \"tmux-example-plugin\"" +} + +expect { + "\"tmux-example-plugin\" download success" +} + +expect { + "Installing \"tmux-copycat\"" +} + +expect { + "\"tmux-copycat\" download success" +} + +expect { + "Done, press ENTER to continue." { + exit 0 + } +} + +exit 1 diff --git a/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_plugin_download b/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_plugin_download new file mode 100755 index 0000000..388f05d --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_plugin_download @@ -0,0 +1,50 @@ +#!/usr/bin/env expect + +# disables script output +log_user 0 + +spawn tmux + +# Waiting for tmux to attach. If this is not done, next command, `send` will +# not work properly. +sleep 1 + +# this is tmux prefix + I +send "I" + +# cloning might take a while +set timeout 15 + +expect_after { + timeout { exit 1 } +} + +expect { + "Installing \"tmux-example-plugin\"" +} + +expect { + "\"tmux-example-plugin\" download success" +} + +expect { + "Done, press ENTER to continue" { + send " " + } +} + +sleep 1 +# this is tmux prefix + I +send "I" + +expect { + "Already installed \"tmux-example-plugin\"" +} + +expect { + "Done, press ENTER to continue" { + exit 0 + } +} + +exit 1 diff --git a/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_a_single_plugin b/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_a_single_plugin new file mode 100755 index 0000000..bcd64fe --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_a_single_plugin @@ -0,0 +1,55 @@ +#!/usr/bin/env expect + +# disables script output +log_user 0 + +spawn tmux + +# Waiting for tmux to attach. If this is not done, next command, `send` will +# not work properly. +sleep 1 + +# this is tmux prefix + U +send "U" + +set timeout 15 + +expect_after { + timeout { exit 1 } +} + +expect { + "Installed plugins" +} + +expect { + "tmux-example-plugin" +} + +expect { + "\"all\" - updates all plugins" +} + +expect { + "ENTER - cancels" +} + +# wait for tmux to display prompt before sending characters +sleep 1 +send "tmux-example-plugin\r" + +expect { + "Updating \"tmux-example-plugin\"" +} + +expect { + "\"tmux-example-plugin\" update success" +} + +expect { + "Done, press ENTER to continue." { + exit 0 + } +} + +exit 1 diff --git a/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_all_plugins b/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_all_plugins new file mode 100755 index 0000000..4f3a4a3 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_all_plugins @@ -0,0 +1,59 @@ +#!/usr/bin/env expect + +# disables script output +log_user 0 + +spawn tmux + +# Waiting for tmux to attach. If this is not done, next command, `send` will +# not work properly. +sleep 1 + +# this is tmux prefix + U +send "U" + +set timeout 5 + +expect_after { + timeout { exit 1 } +} + +expect { + "Installed plugins" +} + +expect { + "tmux-example-plugin" +} + +expect { + "\"all\" - updates all plugins" +} + +expect { + "ENTER - cancels" +} + +# wait for tmux to display prompt before sending characters +sleep 1 +send "all\r" + +expect { + "Updating all plugins!" +} + +expect { + "Updating \"tmux-example-plugin\"" +} + +expect { + "\"tmux-example-plugin\" update success" +} + +expect { + "Done, press ENTER to continue." { + exit 0 + } +} + +exit 1 diff --git a/dots/tmux/.tmux/plugins/tpm/tests/helpers/tpm.sh b/dots/tmux/.tmux/plugins/tpm/tests/helpers/tpm.sh new file mode 100644 index 0000000..1594afb --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/helpers/tpm.sh @@ -0,0 +1,13 @@ +check_dir_exists_helper() { + [ -d "$1" ] +} + +# runs the scripts and asserts it has the correct output and exit code +script_run_helper() { + local script="$1" + local expected_output="$2" + local expected_exit_code="${3:-0}" + $script 2>&1 | + grep "$expected_output" >/dev/null 2>&1 && # grep -q flag quits the script early + [ "${PIPESTATUS[0]}" -eq "$expected_exit_code" ] +} diff --git a/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_clean.sh b/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_clean.sh new file mode 100755 index 0000000..d36c468 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_clean.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +TPM_DIR="$PWD" +PLUGINS_DIR="$HOME/.tmux/plugins" + +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" + +manually_install_the_plugin() { + rm -rf "$PLUGINS_DIR" + mkdir -p "$PLUGINS_DIR" + cd "$PLUGINS_DIR" + git clone --quiet https://github.com/tmux-plugins/tmux-example-plugin +} + +# TMUX KEY-BINDING TESTS + +test_plugin_uninstallation_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + run-shell "$TPM_DIR/tpm" + HERE + + manually_install_the_plugin + + "$CURRENT_DIR/expect_successful_clean_plugins" || + fail_helper "[key-binding] clean fails" + + teardown_helper +} + +# SCRIPT TESTS + +test_plugin_uninstallation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + run-shell "$TPM_DIR/tpm" + HERE + + manually_install_the_plugin + + script_run_helper "$TPM_DIR/bin/clean_plugins" '"tmux-example-plugin" clean success' || + fail_helper "[script] plugin cleaning fails" + + teardown_helper +} + +test_unsuccessful_plugin_uninstallation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + run-shell "$TPM_DIR/tpm" + HERE + + manually_install_the_plugin + chmod 000 "$PLUGINS_DIR/tmux-example-plugin" # disable directory deletion + + local expected_exit_code=1 + script_run_helper "$TPM_DIR/bin/clean_plugins" '"tmux-example-plugin" clean fail' "$expected_exit_code" || + fail_helper "[script] unsuccessful plugin cleaning doesn't fail" + + chmod 755 "$PLUGINS_DIR/tmux-example-plugin" # enable directory deletion + + teardown_helper +} + +run_tests diff --git a/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_installation.sh b/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_installation.sh new file mode 100755 index 0000000..94fb674 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_installation.sh @@ -0,0 +1,284 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +PLUGINS_DIR="$HOME/.tmux/plugins" +TPM_DIR="$PWD" + +CUSTOM_PLUGINS_DIR="$HOME/foo/plugins" +ADDITIONAL_CONFIG_FILE_1="$HOME/.tmux/additional_config_file_1" +ADDITIONAL_CONFIG_FILE_2="$HOME/.tmux/additional_config_file_2" + +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" + +# TMUX KEY-BINDING TESTS + +test_plugin_installation_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + "$CURRENT_DIR/expect_successful_plugin_download" || + fail_helper "[key-binding] plugin installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding] plugin download fails" + + teardown_helper +} + +test_plugin_installation_via_tmux_key_binding_set_option() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set-option -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + "$CURRENT_DIR/expect_successful_plugin_download" || + fail_helper "[key-binding][set-option] plugin installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding][set-option] plugin download fails" + + teardown_helper +} + +test_plugin_installation_custom_dir_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR' + + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + "$CURRENT_DIR/expect_successful_plugin_download" || + fail_helper "[key-binding][custom dir] plugin installation fails" + + check_dir_exists_helper "$CUSTOM_PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding][custom dir] plugin download fails" + + teardown_helper + rm -rf "$CUSTOM_PLUGINS_DIR" +} + +test_non_existing_plugin_installation_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/non-existing-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + "$CURRENT_DIR/expect_failed_plugin_download" || + fail_helper "[key-binding] non existing plugin installation doesn't fail" + + teardown_helper +} + +test_multiple_plugins_installation_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + \ \ set -g @plugin 'tmux-plugins/tmux-copycat' + run-shell "$TPM_DIR/tpm" + HERE + + "$CURRENT_DIR/expect_successful_multiple_plugins_download" || + fail_helper "[key-binding] multiple plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[key-binding] plugin download fails (tmux-copycat)" + + teardown_helper +} + +test_plugins_installation_from_sourced_file_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + source '$ADDITIONAL_CONFIG_FILE_1' + set -g @plugin 'tmux-plugins/tmux-example-plugin' + run-shell "$TPM_DIR/tpm" + HERE + + mkdir ~/.tmux + echo "set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1" + + "$CURRENT_DIR/expect_successful_multiple_plugins_download" || + fail_helper "[key-binding][sourced file] plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding][sourced file] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[key-binding][sourced file] plugin download fails (tmux-copycat)" + + teardown_helper +} + +test_plugins_installation_from_multiple_sourced_files_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + \ \ source '$ADDITIONAL_CONFIG_FILE_1' + source-file '$ADDITIONAL_CONFIG_FILE_2' + run-shell "$TPM_DIR/tpm" + HERE + + mkdir ~/.tmux + echo "set -g @plugin 'tmux-plugins/tmux-example-plugin'" > "$ADDITIONAL_CONFIG_FILE_1" + echo " set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_2" + + "$CURRENT_DIR/expect_successful_multiple_plugins_download" || + fail_helper "[key-binding][multiple sourced files] plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding][multiple sourced files] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[key-binding][multiple sourced files] plugin download fails (tmux-copycat)" + + teardown_helper +} + +# SCRIPT TESTS + +test_plugin_installation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || + fail_helper "[script] plugin installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script] plugin download fails" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' || + fail_helper "[script] plugin already installed message fail" + + teardown_helper +} + +test_plugin_installation_custom_dir_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR' + + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || + fail_helper "[script][custom dir] plugin installation fails" + + check_dir_exists_helper "$CUSTOM_PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script][custom dir] plugin download fails" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' || + fail_helper "[script][custom dir] plugin already installed message fail" + + teardown_helper + rm -rf "$CUSTOM_PLUGINS_DIR" +} + +test_non_existing_plugin_installation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/non-existing-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + local expected_exit_code=1 + script_run_helper "$TPM_DIR/bin/install_plugins" '"non-existing-plugin" download fail' "$expected_exit_code" || + fail_helper "[script] non existing plugin installation doesn't fail" + + teardown_helper +} + +test_multiple_plugins_installation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + \ \ set -g @plugin 'tmux-plugins/tmux-copycat' + run-shell "$TPM_DIR/tpm" + HERE + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || + fail_helper "[script] multiple plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[script] plugin download fails (tmux-copycat)" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' || + fail_helper "[script] multiple plugins already installed message fail" + + teardown_helper +} + +test_plugins_installation_from_sourced_file_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + source '$ADDITIONAL_CONFIG_FILE_1' + set -g @plugin 'tmux-plugins/tmux-example-plugin' + run-shell "$TPM_DIR/tpm" + HERE + + mkdir ~/.tmux + echo "set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1" + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-copycat" download success' || + fail_helper "[script][sourced file] plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script][sourced file] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[script][sourced file] plugin download fails (tmux-copycat)" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' || + fail_helper "[script][sourced file] plugins already installed message fail" + + teardown_helper +} + +test_plugins_installation_from_multiple_sourced_files_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + \ \ source '$ADDITIONAL_CONFIG_FILE_1' + source-file '$ADDITIONAL_CONFIG_FILE_2' + set -g @plugin 'tmux-plugins/tmux-example-plugin' + run-shell "$TPM_DIR/tpm" + HERE + + mkdir ~/.tmux + echo " set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1" + echo "set -g @plugin 'tmux-plugins/tmux-sensible'" > "$ADDITIONAL_CONFIG_FILE_2" + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-sensible" download success' || + fail_helper "[script][multiple sourced files] plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script][multiple sourced files] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[script][multiple sourced files] plugin download fails (tmux-copycat)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-sensible/" || + fail_helper "[script][multiple sourced files] plugin download fails (tmux-sensible)" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-sensible"' || + fail_helper "[script][multiple sourced files] plugins already installed message fail" + + teardown_helper +} + +run_tests diff --git a/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_installation_legacy.sh b/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_installation_legacy.sh new file mode 100755 index 0000000..b1d0cf6 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_installation_legacy.sh @@ -0,0 +1,100 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +PLUGINS_DIR="$HOME/.tmux/plugins" +TPM_DIR="$PWD" + +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" + +# TMUX KEY-BINDING TESTS + +test_plugin_installation_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @tpm_plugins "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + # opens tmux and test it with `expect` + $CURRENT_DIR/expect_successful_plugin_download || + fail_helper "[key-binding] plugin installation fails" + + # check plugin dir exists after download + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding] plugin download fails" + + teardown_helper +} + +test_legacy_and_new_syntax_for_plugin_installation_work_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @tpm_plugins " \ + tmux-plugins/tmux-example-plugin \ + " + set -g @plugin 'tmux-plugins/tmux-copycat' + run-shell "$TPM_DIR/tpm" + HERE + + # opens tmux and test it with `expect` + "$CURRENT_DIR"/expect_successful_multiple_plugins_download || + fail_helper "[key-binding] multiple plugins installation fails" + + # check plugin dir exists after download + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[key-binding] plugin download fails (tmux-copycat)" + + teardown_helper +} + +# SCRIPT TESTS + +test_plugin_installation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @tpm_plugins "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || + fail_helper "[script] plugin installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script] plugin download fails" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' || + fail_helper "[script] plugin already installed message fail" + + teardown_helper +} + +test_legacy_and_new_syntax_for_plugin_installation_work_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @tpm_plugins " \ + tmux-plugins/tmux-example-plugin \ + " + set -g @plugin 'tmux-plugins/tmux-copycat' + run-shell "$TPM_DIR/tpm" + HERE + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || + fail_helper "[script] multiple plugin installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[script] plugin download fails (tmux-copycat)" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' || + fail_helper "[script] multiple plugins already installed message fail" + + teardown_helper +} + +run_tests diff --git a/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_sourcing.sh b/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_sourcing.sh new file mode 100755 index 0000000..c06f1fe --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_sourcing.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +TPM_DIR="$PWD" +PLUGINS_DIR="$HOME/.tmux/plugins" + +CUSTOM_PLUGINS_DIR="$HOME/foo/plugins" + +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" + +check_binding_defined() { + local binding="$1" + tmux list-keys | grep -q "$binding" +} + +create_test_plugin_helper() { + local plugin_path="$PLUGINS_DIR/tmux_test_plugin/" + rm -rf "$plugin_path" + mkdir -p "$plugin_path" + + while read line; do + echo "$line" >> "$plugin_path/test_plugin.tmux" + done + chmod +x "$plugin_path/test_plugin.tmux" +} + +check_tpm_path() { + local correct_tpm_path="$1" + local tpm_path="$(tmux start-server\; show-environment -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)" + [ "$correct_tpm_path" == "$tpm_path" ] +} + +test_plugin_sourcing() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "doesnt_matter/tmux_test_plugin" + run-shell "$TPM_DIR/tpm" + HERE + + # manually creates a local tmux plugin + create_test_plugin_helper <<- HERE + tmux bind-key R run-shell foo_command + HERE + + tmux new-session -d # tmux starts detached + check_binding_defined "R run-shell foo_command" || + fail_helper "Plugin sourcing fails" + + teardown_helper +} + +test_default_tpm_path() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + run-shell "$TPM_DIR/tpm" + HERE + + check_tpm_path "${PLUGINS_DIR}/" || + fail_helper "Default TPM path not correct" + + teardown_helper +} + +test_custom_tpm_path() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR' + run-shell "$TPM_DIR/tpm" + HERE + + check_tpm_path "$CUSTOM_PLUGINS_DIR" || + fail_helper "Custom TPM path not correct" + + teardown_helper +} + +run_tests diff --git a/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_update.sh b/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_update.sh new file mode 100755 index 0000000..4924d16 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tests/test_plugin_update.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +TPM_DIR="$PWD" +PLUGINS_DIR="$HOME/.tmux/plugins" + +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" + +manually_install_the_plugin() { + mkdir -p "$PLUGINS_DIR" + cd "$PLUGINS_DIR" + git clone --quiet https://github.com/tmux-plugins/tmux-example-plugin +} + +# TMUX KEY-BINDING TESTS + +test_plugin_update_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + manually_install_the_plugin + + "$CURRENT_DIR/expect_successful_update_of_all_plugins" || + fail_helper "[key-binding] 'update all plugins' fails" + + "$CURRENT_DIR/expect_successful_update_of_a_single_plugin" || + fail_helper "[key-binding] 'update single plugin' fails" + + teardown_helper +} + +# SCRIPT TESTS + +test_plugin_update_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + manually_install_the_plugin + + local expected_exit_code=1 + script_run_helper "$TPM_DIR/bin/update_plugins" 'usage' "$expected_exit_code" || + fail_helper "[script] running update plugins without args should fail" + + script_run_helper "$TPM_DIR/bin/update_plugins tmux-example-plugin" '"tmux-example-plugin" update success' || + fail_helper "[script] plugin update fails" + + script_run_helper "$TPM_DIR/bin/update_plugins all" '"tmux-example-plugin" update success' || + fail_helper "[script] update all plugins fails" + + teardown_helper +} + +run_tests diff --git a/dots/tmux/.tmux/plugins/tpm/tpm b/dots/tmux/.tmux/plugins/tpm/tpm new file mode 100755 index 0000000..7ad4b99 --- /dev/null +++ b/dots/tmux/.tmux/plugins/tpm/tpm @@ -0,0 +1,81 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +BINDINGS_DIR="$CURRENT_DIR/bindings" +SCRIPTS_DIR="$CURRENT_DIR/scripts" + +source "$SCRIPTS_DIR/variables.sh" + +get_tmux_option() { + local option="$1" + local default_value="$2" + local option_value="$(tmux show-option -gqv "$option")" + if [ -z "$option_value" ]; then + echo "$default_value" + else + echo "$option_value" + fi +} + +tpm_path_set() { + tmux show-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" >/dev/null 2>&1 +} + +# Check if configuration file exists at an XDG-compatible location, if so use +# that directory for TMUX_PLUGIN_MANAGER_PATH. Otherwise use $DEFAULT_TPM_PATH. +set_default_tpm_path() { + local xdg_tmux_path="${XDG_CONFIG_HOME:-$HOME/.config}/tmux" + local tpm_path="$DEFAULT_TPM_PATH" + + if [ -f "$xdg_tmux_path/tmux.conf" ]; then + tpm_path="$xdg_tmux_path/plugins/" + fi + + tmux set-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" "$tpm_path" +} + +# Ensures TMUX_PLUGIN_MANAGER_PATH global env variable is set. +# +# Put this in `.tmux.conf` to override the default: +# `set-environment -g TMUX_PLUGIN_MANAGER_PATH "/some/other/path/"` +set_tpm_path() { + if ! tpm_path_set; then + set_default_tpm_path + fi +} + +# 1. Fetches plugin names from `@plugin` variables +# 2. Creates full plugin path +# 3. Sources all *.tmux files from each of the plugin directories +# - no errors raised if directory does not exist +# Files are sourced as tmux config files, not as shell scripts! +source_plugins() { + "$SCRIPTS_DIR/source_plugins.sh" >/dev/null 2>&1 +} + +# prefix + I - downloads TPM plugins and reloads TMUX environment +# prefix + U - updates a plugin (or all of them) and reloads TMUX environment +# prefix + alt + u - remove unused TPM plugins and reloads TMUX environment +set_tpm_key_bindings() { + local install_key="$(get_tmux_option "$install_key_option" "$default_install_key")" + tmux bind-key "$install_key" run-shell "$BINDINGS_DIR/install_plugins" + + local update_key="$(get_tmux_option "$update_key_option" "$default_update_key")" + tmux bind-key "$update_key" run-shell "$BINDINGS_DIR/update_plugins" + + local clean_key="$(get_tmux_option "$clean_key_option" "$default_clean_key")" + tmux bind-key "$clean_key" run-shell "$BINDINGS_DIR/clean_plugins" +} + +supported_tmux_version_ok() { + "$SCRIPTS_DIR/check_tmux_version.sh" "$SUPPORTED_TMUX_VERSION" +} + +main() { + if supported_tmux_version_ok; then + set_tpm_path + set_tpm_key_bindings + source_plugins + fi +} +main diff --git a/dots/zed/.config/zed/keymap.json b/dots/zed/.config/zed/keymap.json new file mode 100644 index 0000000..816b7c6 --- /dev/null +++ b/dots/zed/.config/zed/keymap.json @@ -0,0 +1,14 @@ +[ + { + "context": "Workspace", + "bindings": { + "shift shift": "file_finder::Toggle" + } + }, + { + "context": "Editor", + "bindings": { + // "j k": ["workspace::SendKeystrokes", "escape"] + } + } +] diff --git a/dots/zed/.config/zed/settings.json.j2 b/dots/zed/.config/zed/settings.json.j2 new file mode 100644 index 0000000..6a11650 --- /dev/null +++ b/dots/zed/.config/zed/settings.json.j2 @@ -0,0 +1,280 @@ +{ + // -- -- + "telemetry": { + "metrics": false, + "diagnostics": false + }, + "features": { + "copilot": false + }, + "show_copilot_suggestions": false, + // -- -- + + // -- -- + "vim_mode": true, + "base_keymap": "JetBrains", + // -- -- + + // -- -- + "ui_font_size": 14, + "tab_size": 4, + "buffer_font_size": 14, + "ui_font_family": "Agave Nerd Font Mono", + "buffer_font_family": "Agave Nerd Font Mono", + // -- -- + + // -- -- + "theme": { + "mode": "system", + "light": "Gruvbox Light Hard", + "dark": "Gruvbox Dark Soft" + }, + // -- -- + + // -- -- + "relative_line_numbers": true, + "current_line_highlight": "all", + "show_whitespaces": "selection", + // -- -- + + // -- -- + "format_on_save": "off", + "ensure_final_newline_on_save": true, + // -- -- + + // -- -- + "centered_layout": { + "left_padding": 0.1, + "right_padding": 0.1 + }, + "tab_bar": { + "show": false + }, + "toolbar": { + "breadcrumbs": false, + "quick_actions": false, + "selections_menu": false, + "agent_review": false, + "code_actions": false + }, + "project_panel": { + "dock": "right" + }, + // -- -- + + // -- -- + "lsp": { + "jdtls": { + "initialization_options": { + "settings": { + "java": { + "home": "~/.local/share/mise/installs/java/21", + "jdt": { + "ls": { + "lombokSupport": { + "enabled": true + } + } + } + } + } + } + } + }, + "languages": { + "Java": { + "formatter": "prettier", + "format_on_save": "off", + "language_servers": ["jdtls"] + }, + "TypeScript": { + "language_servers": ["typescript-language-server"], + "formatter": "prettier" + }, + "TSX": { + "language_servers": ["typescript-language-server"], + "formatter": "prettier" + } + }, + // -- -- + + // -- -- + "auto_install_extensions": { + "html": true, + "dockerfile": true, + "docker-compose": true, + "ansible": true, + "deno": true, + "java": true, + "kotlin": true, + "toml": true, + + // https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking + "mcp-server-sequential-thinking": true + }, + // -- -- + +{% if features.work_mode %} + // -- -- + "language_models": { + "bedrock": { + "authentication_method": "named_profile", + "profile": "cline", + "region": "us-west-2" + } + }, + "context_servers": { + // wasabi's MCP server + "wasabi": { + "command": { + "path": "wasabi", + "args": ["--mcp-server"], + "env": null + }, + "settings": {} + }, + // the internal general MCP server + "Amazon Internal MCP": { + "command": { + "path": "amzn_ai-mcp", + "args": [], + "env": null + }, + "settings": {} + }, + // offical AWS Docs MCP server built by Labs + "AWS Documentation MCP Server": { + "command": { + "path": "mise", + "args": [ + "exec", + "uv@latest", + "--", + "uvx", + "awslabs.aws-documentation-mcp-server@latest" + ], + "env": { + "FASTMCP_LOG_LEVEL": "ERROR" + } + } + } + }, + "agent": { + "dock": "left", + "profiles": { + "starter-profile": { + "name": "Starter Profile", + "tools": { + "copy_path": false, + "create_directory": false, + "delete_path": false, + "diagnostics": false, + "edit_file": true, + "fetch": false, + "find_path": false, + "grep": false, + "list_directory": true, + "move_path": false, + "terminal": false, + "read_file": true, + "open": true, + "now": true, + "thinking": true + }, + "context_servers": { + "wasabi": { + "tools": { + "WorkspaceSearch": true, + "ReadInternalWebsites": true, + "Delegate": true + } + }, + "mcp-server-sequential-thinking": { + "tools": { + "sequentialthinking": true + } + }, + "Amazon Internal MCP": { + "tools": { + "write_internal_website": true, + "tod_download_logs": true, + "taskei_get_task": true, + "slack-send-message": true, + "sim_update_issue": true, + "sim_search_issues": true, + "sim_get_issue": true, + "sim_get_folders": true, + "sim_create_issue": true, + "sim_add_tag": true, + "sim_add_comment": true, + "search_symphony": true, + "search_sable": true, + "search_products": true, + "search_quip": true, + "search_people": true, + "search_katal_components": true, + "search_internal_websites": true, + "search_internal_issues": true, + "search_datapath": true, + "search_internal_code": true, + "read_quip": true, + "read_orr": true, + "read_kingpin_goal": true, + "read_internal_website": true, + "read_coe": true, + "prompt_farm_search_prompts": true, + "prompt_farm_prompt_content": true, + "policy_engine_get_user_dashboard": true, + "policy_engine_get_risk": true, + "plantuml": true, + "pippin_update_project": true, + "pippin_update_artifact": true, + "pippin_list_projects": true, + "pippin_list_artifacts": true, + "pippin_get_project": true, + "pippin_get_artifact": true, + "pippin_create_project": true, + "pippin_create_artifact": true, + "mox_console": true, + "lookup_user_coding_activity_summary": true, + "lookup_team_code_resource": true, + "list_katal_components": true, + "get_recent_messages_quip": true, + "get_katal_component": true, + "edit_quip": true, + "create_quip": true + } + }, + "AWS Documentation MCP Server": { + "tools": { + "recommend": true, + "search_documentation": true, + "read_documentation": true + } + } + } + } + }, + "default_profile": "starter-profile", + "inline_assistant_model": { + "provider": "amazon-bedrock", + "model": "amazon.nova-lite-v1:0" + }, + "commit_message_model": { + "provider": "amazon-bedrock", + "model": "amazon.nova-lite-v1:0" + }, + "thread_summary_model": { + "provider": "amazon-bedrock", + "model": "amazon.nova-lite-v1:0" + }, + "always_allow_tool_actions": true, + "default_model": { + "provider": "amazon-bedrock", + "model": "anthropic.claude-3-7-sonnet-20250219-v1:0" + }, + "version": "2" + } + // -- -- +{% endif %} +} diff --git a/dots/zsh/.config/zsh/.zshrc b/dots/zsh/.config/zsh/.zshrc new file mode 100644 index 0000000..a2376b7 --- /dev/null +++ b/dots/zsh/.config/zsh/.zshrc @@ -0,0 +1,38 @@ +#!/bin/zsh + +#-- -- +export XDG_CONFIG_HOME="$HOME/.config" +export ZDOTDIR=${XDG_CONFIG_HOME:-$HOME/.config}/zsh +export PATH=$PATH:$HOME/scripts:$HOME/.local/bin + +source log.sh ".zshrc" +greet.sh +#-- -- + +#-- -- +. "$ZDOTDIR/setup/misc.zsh" +#-- -- + +#-- -- +. "$ZDOTDIR/setup/aliases.zsh" +#-- -- + +#-- -- +. "$ZDOTDIR/setup/history.zsh" +#-- -- + +#-- -- +. "$ZDOTDIR/setup/git.zsh" +#-- -- + +#-- -- +. "$ZDOTDIR/setup/device.zsh" +#-- -- + +#-- -- +. "$ZDOTDIR/setup/tools.zsh" +#-- -- + +#-- -- +. "$ZDOTDIR/setup/gpg.zsh" +#-- -- diff --git a/dots/zsh/.config/zsh/greetings/00_art/another_penguin b/dots/zsh/.config/zsh/greetings/00_art/another_penguin new file mode 100644 index 0000000..00f43e3 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/00_art/another_penguin @@ -0,0 +1,15 @@ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣖⣫⠵⠔⢿⣿⣿⣿⡄⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⢠⠾⠯⣾⠃⠀⢀⣸⡿⠛⠻⢿⣆⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠆⣀⡀⠹⣶⣀⣨⡏⢀⣀⡀⠈⣿⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⢸⠀⠛⠃⢰⠋⠉⢻⠀⠘⠛⠃⠀⣿⡄⠀⠀ +⠀⠀⠀⠀⠀⢀⣀⣘⡀⠀⠀⠀⠀⠒⠉⠀⠀⠀⢀⣼⡟⠀⠀⠀ +⣠⣶⣶⣾⣿⣿⣿⣿⣯⡶⡀⠀⠀⠀⠀⢀⣀⢴⡻⣗⡄⠀⠀⠀ +⠹⡿⠿⠛⢿⣿⣿⣿⣟⣥⡈⠉⠁⠀⠀⠀⠀⢀⣵⢊⠨⠢⠀⠀ +⠀⠀⠀⠀⠘⠻⠿⠿⠿⠁⠘⠋⠒⠂⠀⠐⠊⠉⠈⠎⣦⡀⠱⡀ +⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠘⠟⢧⣱ +⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠀⢸⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⢸⣇⠀⡀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⢺⠆⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠻⣆⠳⢄⣀⠠⠀⠀⠐⡄⡇⠀⣠⡯⠟⠀ +⠀⠀⠀⠀⠀⠀⠀⣤⣎⣟⡖⣺⠗⠉⠉⠉⠉⠉⡖⡶⣟⢢⣐⠶ +⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠁⠒⠒⠒⠒⠒⠂⠉⠉⠉⠁⠀⠀ \ No newline at end of file diff --git a/dots/zsh/.config/zsh/greetings/00_art/butterfly b/dots/zsh/.config/zsh/greetings/00_art/butterfly new file mode 100644 index 0000000..cea5d72 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/00_art/butterfly @@ -0,0 +1,9 @@ +⠀⠀⠀⠀⊹ +⢶⢻⣑⣒⢤⡀⠀⢄⠀⠀⡠⠀⢀⡤⣆⣊⡿⡷ +⠀⠹⠹⣚⣣⠻⣦⡀⠀⠀⢀⣴⠟⣸⢓⢎⠏⠀ +⠀⠀⢡⣱⣖⣢⡾⢿⣾⣷⡿⢷⣖⣒⣎⡎⠀⠀ +⠀⠀⠀⣠⠓⢬⠅⡺⢻⡟⢗⠨⡥⠚⣄⠀⠀⠀ +⠀⠀⠀⣿⡆⠘⠆⢇⢸⡇⠸⠰⠃⢰⣿⠀⠀⠀ +⠀⠀⠀⠐⡻⣮⣬⠞⠈⠁⠳⣤⣴⢿⠂⠀⠀⠀ +⠀⠀⠀⡜⠀⠁⠉⠀⠀⠀⠀⠈⠈⠀⢣⠀⠀⠀⊹ +⊹ \ No newline at end of file diff --git a/dots/zsh/.config/zsh/greetings/00_art/eebjy b/dots/zsh/.config/zsh/greetings/00_art/eebjy new file mode 100644 index 0000000..6e6bbcf --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/00_art/eebjy @@ -0,0 +1,9 @@ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀ +⠀⠀⠀⠀⢀⡴⣆⠀⠀⠀⠀⠀⣠⡀ ᶻ 𝗓 𐰁 .ᐟ ⣼⣿⡗⠀⠀⠀⠀ +⠀⠀⠀⣠⠟⠀⠘⠷⠶⠶⠶⠾⠉⢳⡄⠀⠀⠀⠀⠀⣧⣿⠀⠀⠀⠀⠀ +⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣤⣤⣤⣤⣤⣿⢿⣄⠀⠀⠀⠀ +⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣧⠀⠀⠀⠀⠀⠀⠙⣷⡴⠶⣦ +⠀⠀⢱⡀⠀⠉⠉⠀⠀⠀⠀⠛⠃⠀⢠⡟⠀⠀⠀⢀⣀⣠⣤⠿⠞⠛⠋ +⣠⠾⠋⠙⣶⣤⣤⣤⣤⣤⣀⣠⣤⣾⣿⠴⠶⠚⠋⠉⠁⠀⠀⠀⠀⠀⠀ +⠛⠒⠛⠉⠉⠀⠀⠀⣴⠟⢃⡴⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠛⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ diff --git a/dots/zsh/.config/zsh/greetings/00_art/heart b/dots/zsh/.config/zsh/greetings/00_art/heart new file mode 100644 index 0000000..3394514 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/00_art/heart @@ -0,0 +1,8 @@ +.  +⠀ ⠀ +⠀˚⠀ ⣴⠟⠉⠉⠛⢦⡀⢀⣴⠛⠉⠈⠙⠻⣄ +⠀⠀⣼⠃⠀⠀⠀⠀⠀⠙⠋⠀⠀⠀⠀⠀⠀⠹⣦ +⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿ +⠀⠀⠿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡆ +⠀⠀⠀⢻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡼⠃ +⠀⠀⠀⠀⠀⠻⢦⣄⠀⠀⠀⠀⠀⣠⡴⠛ +⠀⠀⠀⠀⠀⠀⠀⠉⠛⠶⣄⠶⠋ ⠀⠀⠀+. * \ No newline at end of file diff --git a/dots/zsh/.config/zsh/greetings/00_art/penguin b/dots/zsh/.config/zsh/greetings/00_art/penguin new file mode 100644 index 0000000..6389d00 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/00_art/penguin @@ -0,0 +1,16 @@ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡤⠴⠒⠒⠒⠶⢤⣄⡀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠈⠙⢦⡀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⡼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢳⡀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⢸⠁⠀⠀⣠⠖⠛⠛⠲⢤⠀⠀⠀⣰⠚⠛⢷⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⣿⠀⠀⣸⠃⠀⠀⢀⣀⠈⢧⣠⣤⣯⢠⣤⠘⣆⠀⠀⠀ +⠀⠀⠀⠀⠀⣿⠀⠀⡇⠀⠀⠀⠻⠟⠠⣏⣀⣀⣨⡇⠉⢀⣿⠀⠀⠀ +⠀⠀⠀⠀⢀⡟⠀⠀⠹⡄⠀⠀⠀⠀⠀⠉⠑⠚⠉⠀⣠⡞⢿⠀⠀⠀ +⠀⠀⠀⢀⡼⠁⠀⠀⠀⠙⠳⢤⡄⠀⠀⠀⠀⠀⠀⠀⠁⠙⢦⠳⣄⠀ +⠀⠀⢀⡾⠁⠀⠀⠀⠀⠀⠤⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠃⠙⡆ +⠀⠀⣼⠁⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⢠⡏⠀⠀⡇ +⠀⠀⣏⠀⠀⠀⠀⠲⣄⡀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⢸⠀⢀⡼⠁ +⢀⡴⢿⠀⠀⠀⠀⠀⢸⠟⢦⡀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠘⠗⣿⠁⠀ +⠸⣦⡘⣦⠀⠀⠀⠀⣸⣄⠀⡉⠓⠚⠀⠀⠀⠀⠀⠀⠀⠀⡴⢹⣦⡀ +⠀⠀⠉⠛⠳⢤⣴⠾⠁⠈⠟⠉⣇⠀⠀⠀⠀⠀⠀⠀⣠⠞⠁⣠⠞⠁ +⠀⠀⠀⠀⠀⠀⠙⢧⣀⠀⠀⣠⠏⠀⠀⢀⣀⣠⠴⠛⠓⠚⠋⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠋⠉⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀ diff --git a/dots/zsh/.config/zsh/greetings/00_art/puppy b/dots/zsh/.config/zsh/greetings/00_art/puppy new file mode 100644 index 0000000..c4d7fbb --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/00_art/puppy @@ -0,0 +1,10 @@ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣄⢀⡀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⡿⠀⠀⠀⠀ +⠀⠀⠀⠀⣀⣀⣤⠖⠛⠉⠉⠉⠉⠉⠙⠒⠦⣿⣏⣀⠀⠀⠀⠀ +⠀⠀⣠⠞⠁⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢵⡄⠀⠀ +⠀⢰⣯⠀⠀⢀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀⣿⠀⠀ +⠀⠈⣇⢀⢠⠇⠀⣶⡶⠄⠀⠀⠀⢠⣶⡶⠀⠀⣸⣀⣼⠟⠀⠀ +⠀⠀⠙⠛⠾⡆⠀⠙⠛⠃⠀⠀⠀⠀⠙⠋⠀⠀⣹⠟⠁⠀⠀⠀ +⢀⡴⠚⠉⠛⢿⠀⠀⠀⠀⢿⣿⠆⠀⠀⠀⠀⢀⣿⠋⠉⠉⢳⡄ +⢾⡀⡄⠀⣄⡼⠻⢧⠤⣤⠤⠤⣤⣠⣦⣾⠶⠞⢿⣤⡄⣠⣀⡷ +⠈⠙⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠀ \ No newline at end of file diff --git a/dots/zsh/.config/zsh/greetings/00_art/totoro b/dots/zsh/.config/zsh/greetings/00_art/totoro new file mode 100644 index 0000000..9a1ba92 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/00_art/totoro @@ -0,0 +1,13 @@ +⠀⠀⠀⠀⣶⣄⠀⠀⠀⠀⠀⠀⢀⣶⡆⠀⠀⠀ +⠀⠀⠀⢸⣿⣿⡆⠀⠀⠀⠀⢀⣾⣿⡇⠀⠀⠀ +⠀⠀⠀⠘⣿⣿⣿⠀⠀⠀⠀⢸⣿⣿⡇⠀⠀⠀ +⠀⠀⠀⠀⢿⣿⣿⣤⣤⣤⣤⣼⣿⡿⠃⠀⠀⠀ +⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀ +⠀⠀⢠⣿⡃⣦⢹⣿⣟⣙⣿⣿⠰⡀⣿⣇⠀⠀ +⠠⠬⣿⣿⣷⣶⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⡭⠤ +⠀⣼⣿⣿⣿⣿⠿⠛⠛⠛⠛⠻⢿⣿⣿⣿⣿⡀ +⢰⣿⣿⣿⠋⠀⠀⠀⢀⣀⠀⠀⠀⠉⢿⣿⣿⣧ +⢸⣿⣿⠃⠜⠛⠂⠀⠋⠉⠃⠐⠛⠻⠄⢿⣿⣿ +⢸⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿ +⠘⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⡏ +⠀⠈⠻⠿⣤⣀⡀⠀⠀⠀⠀⠀⣀⣠⠾⠟⠋⠀ \ No newline at end of file diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/aww_motivation_lost b/dots/zsh/.config/zsh/greetings/01_prompts/aww_motivation_lost new file mode 100644 index 0000000..59aeae6 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/aww_motivation_lost @@ -0,0 +1 @@ +404: motivation not found~ try again (︶︹︶) diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/bashful b/dots/zsh/.config/zsh/greetings/01_prompts/bashful new file mode 100644 index 0000000..5a9bf7e --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/bashful @@ -0,0 +1 @@ +lil shell says hai~ (,,>﹏<,,) diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/bby b/dots/zsh/.config/zsh/greetings/01_prompts/bby new file mode 100644 index 0000000..b0378bb --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/bby @@ -0,0 +1 @@ +welcome back bby, whatcha codin~? ◝(˶˃ ᵕ ˂˶) ◜ ♡ diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/bot b/dots/zsh/.config/zsh/greetings/01_prompts/bot new file mode 100644 index 0000000..9f1bfe5 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/bot @@ -0,0 +1 @@ +beep boop i’m ur smol shell bot~ (≧ ◡ ≦) diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/break_stuff b/dots/zsh/.config/zsh/greetings/01_prompts/break_stuff new file mode 100644 index 0000000..38fba6b --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/break_stuff @@ -0,0 +1 @@ +──⋆⋅☆⋅⋆── what are u gonna break today? ──⋆⋅☆⋅⋆── diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/compiling_feelings b/dots/zsh/.config/zsh/greetings/01_prompts/compiling_feelings new file mode 100644 index 0000000..beeb049 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/compiling_feelings @@ -0,0 +1 @@ +current mood: compiling feelings... (っ´ω `)ノ(╥ ω ╥ ) diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/crashin b/dots/zsh/.config/zsh/greetings/01_prompts/crashin new file mode 100644 index 0000000..78ce202 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/crashin @@ -0,0 +1 @@ +lowkey bashin’ and highkey crashin~ (∩^o^)⊃━☆゚.*・。゚ diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/desu b/dots/zsh/.config/zsh/greetings/01_prompts/desu new file mode 100644 index 0000000..210ca3c --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/desu @@ -0,0 +1 @@ +terminal-chan desu~ ( ^・ω・^ ) diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/hacker_friend b/dots/zsh/.config/zsh/greetings/01_prompts/hacker_friend new file mode 100644 index 0000000..8daadee --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/hacker_friend @@ -0,0 +1 @@ +hewwwooo hacker friend~ ( ˶ˆᗜ ˆ˵ )͜♡ ready 2 typey type? diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/hai b/dots/zsh/.config/zsh/greetings/01_prompts/hai new file mode 100644 index 0000000..487c866 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/hai @@ -0,0 +1 @@ +ahh!! it’s you again~ kyaaa~!! (,,> ᴗ <,,) diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/input_output_love b/dots/zsh/.config/zsh/greetings/01_prompts/input_output_love new file mode 100644 index 0000000..9d3964d --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/input_output_love @@ -0,0 +1 @@ +input accepted, output is love (´。• ω •。) ♡` diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/love_letter b/dots/zsh/.config/zsh/greetings/01_prompts/love_letter new file mode 100644 index 0000000..b2556fe --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/love_letter @@ -0,0 +1 @@ +shell prompt... or love letter? (⸝⸝๑﹏๑⸝⸝) diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/online b/dots/zsh/.config/zsh/greetings/01_prompts/online new file mode 100644 index 0000000..0201fde --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/online @@ -0,0 +1 @@ +system online... awaiting ur magic~ ૮ ˶ᵔ ᵕ ᵔ˶ ა diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/production b/dots/zsh/.config/zsh/greetings/01_prompts/production new file mode 100644 index 0000000..4deab12 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/production @@ -0,0 +1 @@ +plz don't break the server... or do, whatever ( ¬ ⤙ ¬ ) diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/sammich b/dots/zsh/.config/zsh/greetings/01_prompts/sammich new file mode 100644 index 0000000..f22df0a --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/sammich @@ -0,0 +1 @@ +sudo make me a sandwich? (・∀・) 🥪 ✧₊˚ʚ diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/shell_yeah b/dots/zsh/.config/zsh/greetings/01_prompts/shell_yeah new file mode 100644 index 0000000..7826b64 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/shell_yeah @@ -0,0 +1 @@ +shell yeah!! let’s do some scripts~ (ノ≧ ڡ ≦) diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/time_to_hack b/dots/zsh/.config/zsh/greetings/01_prompts/time_to_hack new file mode 100644 index 0000000..afc0cb6 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/time_to_hack @@ -0,0 +1 @@ +*clickity clack* time 2 hack~ (。•̀ᴗ-)✧ diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/typing b/dots/zsh/.config/zsh/greetings/01_prompts/typing new file mode 100644 index 0000000..6d4c0d0 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/typing @@ -0,0 +1 @@ +typing together forever~~ (づ。◕‿‿◕。)づ diff --git a/dots/zsh/.config/zsh/greetings/01_prompts/yeehaw b/dots/zsh/.config/zsh/greetings/01_prompts/yeehaw new file mode 100644 index 0000000..53eb098 --- /dev/null +++ b/dots/zsh/.config/zsh/greetings/01_prompts/yeehaw @@ -0,0 +1 @@ +rootin' and tootin' with sudo~ yeehaw~ (⌒ ▽ ⌒) ☆ diff --git a/dots/zsh/.config/zsh/linux/init.zsh b/dots/zsh/.config/zsh/linux/init.zsh new file mode 100755 index 0000000..49db77e --- /dev/null +++ b/dots/zsh/.config/zsh/linux/init.zsh @@ -0,0 +1,6 @@ +#!/bin/zsh + +#-- -- +export PINENTRY_USER_DATA="PINENTRY_USE_QT" +#-- -- + diff --git a/dots/zsh/.config/zsh/osx/armin.zsh b/dots/zsh/.config/zsh/osx/armin.zsh new file mode 100755 index 0000000..cc54a2e --- /dev/null +++ b/dots/zsh/.config/zsh/osx/armin.zsh @@ -0,0 +1,3 @@ +#!/bin/zsh + + diff --git a/dots/zsh/.config/zsh/osx/bcd074b37296.zsh b/dots/zsh/.config/zsh/osx/bcd074b37296.zsh new file mode 120000 index 0000000..f99643e --- /dev/null +++ b/dots/zsh/.config/zsh/osx/bcd074b37296.zsh @@ -0,0 +1 @@ +work.zsh \ No newline at end of file diff --git a/dots/zsh/.config/zsh/osx/init.zsh b/dots/zsh/.config/zsh/osx/init.zsh new file mode 100755 index 0000000..0cb288d --- /dev/null +++ b/dots/zsh/.config/zsh/osx/init.zsh @@ -0,0 +1,13 @@ +#!/bin/zsh + +#-- -- +# HOMEBREW_PREFIX, MANPATH, INFOPATH, etc. +eval "$(/opt/homebrew/bin/brew shellenv)" + +# use gnu coreutils +export PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH" +#-- -- + +#-- -- +export PINENTRY_USER_DATA="PINENTRY_USE_MAC" +#-- -- diff --git a/dots/zsh/.config/zsh/osx/work.zsh b/dots/zsh/.config/zsh/osx/work.zsh new file mode 100755 index 0000000..6fff676 --- /dev/null +++ b/dots/zsh/.config/zsh/osx/work.zsh @@ -0,0 +1,29 @@ +#!/bin/zsh + +#-- -- +export AWS_REGION=us-west-2 + +# finch +export DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock + +# bb ... +export PATH="$PATH:$HOME/.toolbox/bin" +alias bb='brazil-build' +alias bba='brazil-build apollo-pkg' +alias bre='brazil-runtime-exec' +alias brc='brazil-recursive-cmd' +alias bws='brazil ws' +alias bwsuse='bws use --gitMode -p' +alias bwscreate='bws create -n' +alias brc=brazil-recursive-cmd +alias bbr='brc brazil-build' +alias bball='brc --allPackages' +alias bbb='brc --allPackages brazil-build' +alias bbra='bbr apollo-pkg' +alias bbcr='bb && cr' +alias brazil-recursive-cmd='brazil-recursive-cmd-parallel' + +# run java repl with class path of package! :D +alias jshell='jshell --class-path "`brazil-path build.classpath`:`brazil-path run.classpath`"' +#-- -- + diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.editorconfig b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.editorconfig new file mode 100644 index 0000000..ddabb17 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.editorconfig @@ -0,0 +1,18 @@ +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = tab +indent_size = 4 + +[*.md] +indent_style = space + +[*.rb] +indent_style = space +indent_size = 2 + +[*.yml] +indent_style = space +indent_size = 2 diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/ISSUE_TEMPLATE/bug-report.md b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000..7663df6 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,36 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +### Describe the bug + + +### To Reproduce +Steps to reproduce the behavior: + + + +```sh +% zsh -df +% source path/to/zsh-autosuggestions.zsh +% ... # what do you do to reproduce? +``` + +### Expected behavior + + +### Screenshots + + +### Desktop + - OS + distribution: + - Zsh version: + - Plugin version: + +### Additional context + diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/ISSUE_TEMPLATE/feature_request.md b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..5874625 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' + +--- + +### Is your feature request related to a problem? Please describe. + + +### Describe the solution you'd like + + +### Describe alternatives you've considered + + +### Additional context + diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/workflows/integration.yml b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/workflows/integration.yml new file mode 100644 index 0000000..ec7bc75 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.github/workflows/integration.yml @@ -0,0 +1,51 @@ +on: [push, pull_request] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +env: + IMAGE_CACHE_PATH: /tmp/.image-cache + IMAGE_CACHE_NAME: zsh-autosuggestions-test +jobs: + determine-versions: + runs-on: ubuntu-22.04 + outputs: + versions: ${{ steps.set-versions.outputs.versions }} + steps: + - uses: actions/checkout@v3 + - id: set-versions + run: | + echo "versions=$( + grep "^[^#]" ZSH_VERSIONS \ + | sed -E 's/(^|$)/"/g' \ + | paste -sd ',' - \ + | sed -e 's/^/[/' -e 's/$/]/' + )" >> $GITHUB_OUTPUT + test: + needs: determine-versions + runs-on: ubuntu-22.04 + strategy: + matrix: + version: ${{ fromJson(needs.determine-versions.outputs.versions) }} + steps: + - uses: actions/checkout@v3 + - name: Docker image cache + id: image-cache + uses: actions/cache@v3 + with: + path: ${{ env.IMAGE_CACHE_PATH }} + key: image-cache-${{ matrix.version }}-${{ hashFiles('Dockerfile', 'install_test_zsh.sh', 'Gemfile.lock') }} + - name: Load cached docker image if available + if: ${{ steps.image-cache.outputs.cache-hit }} + run: gunzip < $IMAGE_CACHE_PATH/$IMAGE_CACHE_NAME.tar.gz | docker load + - name: Build the docker image if necessary + if: ${{ !steps.image-cache.outputs.cache-hit }} + run: | + docker build --build-arg TEST_ZSH_VERSION=${{ matrix.version }} -t $IMAGE_CACHE_NAME . + mkdir -p $IMAGE_CACHE_PATH + docker save $IMAGE_CACHE_NAME | gzip > $IMAGE_CACHE_PATH/$IMAGE_CACHE_NAME.tar.gz + - name: Run the tests + run: | + docker run --rm \ + -v $PWD:/zsh-autosuggestions \ + $IMAGE_CACHE_NAME \ + make test diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.gitignore b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.gitignore new file mode 100644 index 0000000..d8decde --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.gitignore @@ -0,0 +1,2 @@ +# zsh word code files +*.zwc diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.rspec b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.rspec new file mode 100644 index 0000000..43ae203 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.rspec @@ -0,0 +1,3 @@ +--color +--require spec_helper +--format documentation diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.rubocop.yml b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.rubocop.yml new file mode 100644 index 0000000..97facac --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.rubocop.yml @@ -0,0 +1,30 @@ +# Rails: +# Enabled: true + +AllCops: + TargetRubyVersion: 2.3 + Include: + - '**/Rakefile' + - '**/config.ru' + - '**/Gemfile' + +Metrics/LineLength: + Max: 120 + +Style/Documentation: + Enabled: false + +Style/DotPosition: + EnforcedStyle: trailing + +Style/FrozenStringLiteralComment: + Enabled: false + +Style/Lambda: + Enabled: false + +Style/MultilineMethodCallIndentation: + EnforcedStyle: indented + +Style/TrailingUnderscoreVariable: + Enabled: false diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.ruby-version b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.ruby-version new file mode 100644 index 0000000..aedc15b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/.ruby-version @@ -0,0 +1 @@ +2.5.3 diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/CHANGELOG.md b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/CHANGELOG.md new file mode 100644 index 0000000..30c7735 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/CHANGELOG.md @@ -0,0 +1,124 @@ +# Changelog + +## v0.7.1 +- Clear POSTDISPLAY instead of unsetting (#634) +- Always reset async file descriptor after consuming it (#630) +- Always use builtin `exec` (#628) +- Add `history-beginning-search-*-end` widgets to clear widget list (#619) +- Switch CI from Circle CI to GitHub Actions + +## v0.7.0 +- Enable asynchronous mode by default (#498) +- No longer wrap user widgets starting with `autosuggest-` prefix (#496) +- Fix a bug wrapping widgets that modify the buffer (#541) + + +## v0.6.4 +- Fix `vi-forward-char` triggering a bell when using it to accept a suggestion (#488) +- New configuration option to skip completion suggestions when buffer matches a pattern (#487) +- New configuration option to ignore history entries matching a pattern (#456) + +## v0.6.3 +- Fixed bug moving cursor to end of buffer after accepting suggestion (#453) + +## v0.6.2 +- Fixed bug deleting the last character in the buffer in vi mode (#450) +- Degrade gracefully when user doesn't have `zsh/system` module installed (#447) + +## v0.6.1 +- Fixed bug occurring when `_complete` had been aliased (#443) + +## v0.6.0 +- Added `completion` suggestion strategy powered by completion system (#111) +- Allow setting `ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE` to an empty string (#422) +- Don't fetch suggestions after copy-earlier-word (#439) +- Allow users to unignore zle-\* widgets (e.g. zle-line-init) (#432) + + +## v0.5.2 +- Allow disabling automatic widget re-binding for better performance (#418) +- Fix async suggestions when `SH_WORD_SPLIT` is set +- Refactor async mode to use process substitution instead of zpty (#417) + +## v0.5.1 +- Speed up widget rebinding (#413) +- Clean up global variable creations (#403) +- Respect user's set options when running original widget (#402) + +## v0.5.0 +- Don't overwrite config with default values (#335) +- Support fallback strategies by supplying array to suggestion config var +- Rename "default" suggestion strategy to "history" to name it based on what it actually does +- Reset opts in some functions affected by `GLOB_SUBST` (#334) +- Support widgets starting with dashes (ex: `-a-widget`) (#337) +- Skip async tests in zsh versions less than 5.0.8 because of reliability issues +- Fix handling of newline + carriage return in async pty (#333) + + +## v0.4.3 +- Avoid bell when accepting suggestions with `autosuggest-accept` (#228) +- Don't fetch suggestions after [up,down]-line-or-beginning-search (#227, #241) +- We are now running CI against new 5.5.1 version +- Fix partial-accept in vi mode (#188) +- Fix suggestion disappearing on fast movement after switching to `vicmd` mode (#290) +- Fix issue rotating through kill ring with `yank-pop` (#301) +- Fix issue creating new pty for async mode when previous pty is not properly cleaned up (#249) + +## v0.4.2 +- Fix bug in zsh versions older than 5.0.8 (#296) +- Officially support back to zsh v4.3.11 + +## v0.4.1 +- Switch to [[ and (( conditionals instead of [ (#257) +- Avoid warnnestedvar warnings with `typeset -g` (#275) +- Replace tabs with spaces in yaml (#268) +- Clean up and fix escaping of special characters (#267) +- Add `emacs-forward-word` to default list of partial accept widgets (#246) + +## v0.4.0 +- High-level integration tests using RSpec and tmux +- Add continuous integration with Circle CI +- Experimental support for asynchronous suggestions (#170) +- Fix problems with multi-line suggestions (#225) +- Optimize case where manually typing in suggestion +- Avoid wrapping any zle-\* widgets (#206) +- Remove support for deprecated options from v0.0.x +- Handle history entries that begin with dashes +- Gracefully handle being sourced multiple times (#126) +- Add enable/disable/toggle widgets to disable/enable suggestions (#219) + + +## v0.3.3 +- Switch from $history array to fc builtin for better performance with large HISTFILEs (#164) +- Fix tilde handling when extended_glob is set (#168) +- Add config option for maximum buffer length to fetch suggestions for (#178) +- Add config option for list of widgets to ignore (#184) +- Don't fetch a new suggestion unless a modification widget actually modifies the buffer (#183) + +## v0.3.2 +- Test runner now supports running specific tests and choosing zsh binary +- Return code from original widget is now correctly passed through (#135) +- Add `vi-add-eol` to list of accept widgets (#143) +- Escapes widget names within evals to fix problems with irregular widget names (#152) +- Plugin now clears suggestion while within a completion menu (#149) +- .plugin file no longer relies on symbolic link support, fixing issues on Windows (#156) + +## v0.3.1 + +- Fixes issue with `vi-next-char` not accepting suggestion (#137). +- Fixes global variable warning when WARN_CREATE_GLOBAL option enabled (#133). +- Split out a separate test file for each widget. + +## v0.3.0 + +- Adds `autosuggest-execute` widget (PR #124). +- Adds concept of suggestion "strategies" for different ways of fetching suggestions. +- Adds "match_prev_cmd" strategy (PR #131). +- Uses git submodules for testing dependencies. +- Lots of test cleanup. +- Various bug fixes for zsh 5.0.x and `sh_word_split` option. + + +## v0.2.17 + +Start of changelog. diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/DESCRIPTION b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/DESCRIPTION new file mode 100644 index 0000000..b69200f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/DESCRIPTION @@ -0,0 +1 @@ +Fish-like fast/unobtrusive autosuggestions for zsh. diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Dockerfile b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Dockerfile new file mode 100644 index 0000000..f5dd3c4 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Dockerfile @@ -0,0 +1,21 @@ +FROM ruby:2.5.3-alpine + +ARG TEST_ZSH_VERSION +RUN : "${TEST_ZSH_VERSION:?}" + +RUN apk add --no-cache autoconf +RUN apk add --no-cache libtool +RUN apk add --no-cache libcap-dev +RUN apk add --no-cache pcre-dev +RUN apk add --no-cache curl +RUN apk add --no-cache build-base +RUN apk add --no-cache ncurses-dev +RUN apk add --no-cache tmux + +WORKDIR /zsh-autosuggestions + +ADD install_test_zsh.sh ./ +RUN ./install_test_zsh.sh + +ADD Gemfile Gemfile.lock ./ +RUN bundle install diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Gemfile b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Gemfile new file mode 100644 index 0000000..8b5deec --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Gemfile @@ -0,0 +1,5 @@ +source 'https://rubygems.org' + +gem 'rspec' +gem 'rspec-wait' +gem 'pry-byebug' diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Gemfile.lock b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Gemfile.lock new file mode 100644 index 0000000..63ee778 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Gemfile.lock @@ -0,0 +1,41 @@ +GEM + remote: https://rubygems.org/ + specs: + byebug (9.0.5) + coderay (1.1.1) + diff-lcs (1.3) + method_source (0.8.2) + pry (0.10.4) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) + pry-byebug (3.4.0) + byebug (~> 9.0) + pry (~> 0.10) + rspec (3.5.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) + rspec-core (3.5.4) + rspec-support (~> 3.5.0) + rspec-expectations (3.5.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.5.0) + rspec-mocks (3.5.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.5.0) + rspec-support (3.5.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + slop (3.6.0) + +PLATFORMS + ruby + +DEPENDENCIES + pry-byebug + rspec + rspec-wait + +BUNDLED WITH + 1.13.6 diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/INSTALL.md b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/INSTALL.md new file mode 100644 index 0000000..725a8f8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/INSTALL.md @@ -0,0 +1,81 @@ +# Installation + +* [Packages](#packages) +* [Antigen](#antigen) +* [Oh My Zsh](#oh-my-zsh) +* [HomeBrew](#homebrew) +* [Manual](#manual-git-clone) + +## Packages + +| System | Package | +| ------------- | ------------- | +| Alpine Linux | [zsh-autosuggestions](https://pkgs.alpinelinux.org/packages?name=zsh-autosuggestions) | +| Debian / Ubuntu | [zsh-autosuggestions OBS repository](https://software.opensuse.org/download.html?project=shells%3Azsh-users%3Azsh-autosuggestions&package=zsh-autosuggestions) | +| Fedora / CentOS / RHEL / Scientific Linux | [zsh-autosuggestions OBS repository](https://software.opensuse.org/download.html?project=shells%3Azsh-users%3Azsh-autosuggestions&package=zsh-autosuggestions) | +| OpenSUSE / SLE | [zsh-autosuggestions OBS repository](https://software.opensuse.org/download.html?project=shells%3Azsh-users%3Azsh-autosuggestions&package=zsh-autosuggestions) | +| Arch Linux / Manjaro / Antergos / Hyperbola | [zsh-autosuggestions](https://www.archlinux.org/packages/zsh-autosuggestions), [zsh-autosuggestions-git](https://aur.archlinux.org/packages/zsh-autosuggestions-git) | +| NixOS | [zsh-autosuggestions](https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/zs/zsh-autosuggestions/package.nix) | +| Void Linux | [zsh-autosuggestions](https://github.com/void-linux/void-packages/blob/master/srcpkgs/zsh-autosuggestions/template) | +| Mac OS | [homebrew](https://github.com/Homebrew/homebrew-core/blob/master/Formula/z/zsh-autosuggestions.rb) | +| NetBSD | [pkgsrc](http://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/shells/zsh-autosuggestions/README.html) | + +## Antigen + +1. Add the following to your `.zshrc`: + + ```sh + antigen bundle zsh-users/zsh-autosuggestions + ``` + +2. Start a new terminal session. + +## Oh My Zsh + +1. Clone this repository into `$ZSH_CUSTOM/plugins` (by default `~/.oh-my-zsh/custom/plugins`) + + ```sh + git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions + ``` + +2. Add the plugin to the list of plugins for Oh My Zsh to load (inside `~/.zshrc`): + + ```sh + plugins=( + # other plugins... + zsh-autosuggestions + ) + ``` + +3. Start a new terminal session. + +## Homebrew + +1. Install command: + ```sh + brew install zsh-autosuggestions + ``` + +2. To activate the autosuggestions, add the following at the end of your .zshrc: + + ```sh + source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh + ``` + +3. Start a new terminal session. + +## Manual (Git Clone) + +1. Clone this repository somewhere on your machine. This guide will assume `~/.zsh/zsh-autosuggestions`. + + ```sh + git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions + ``` + +2. Add the following to your `.zshrc`: + + ```sh + source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh + ``` + +3. Start a new terminal session. diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/LICENSE b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/LICENSE new file mode 100644 index 0000000..7ea78cc --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2013 Thiago de Arruda +Copyright (c) 2016-2021 Eric Freese + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Makefile b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Makefile new file mode 100644 index 0000000..6f5431e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/Makefile @@ -0,0 +1,35 @@ +SRC_DIR := ./src + +SRC_FILES := \ + $(SRC_DIR)/config.zsh \ + $(SRC_DIR)/util.zsh \ + $(SRC_DIR)/bind.zsh \ + $(SRC_DIR)/highlight.zsh \ + $(SRC_DIR)/widgets.zsh \ + $(SRC_DIR)/strategies/*.zsh \ + $(SRC_DIR)/fetch.zsh \ + $(SRC_DIR)/async.zsh \ + $(SRC_DIR)/start.zsh + +HEADER_FILES := \ + DESCRIPTION \ + URL \ + VERSION \ + LICENSE + +PLUGIN_TARGET := zsh-autosuggestions.zsh + +all: $(PLUGIN_TARGET) + +$(PLUGIN_TARGET): $(HEADER_FILES) $(SRC_FILES) + cat $(HEADER_FILES) | sed -e 's/^/# /g' > $@ + cat $(SRC_FILES) >> $@ + +.PHONY: clean +clean: + rm $(PLUGIN_TARGET) + +.PHONY: test +test: all + @test -n "$$TEST_ZSH_BIN" && echo "Testing zsh binary: $(TEST_ZSH_BIN)" || true + bundle exec rspec $(TESTS) diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/README.md b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/README.md new file mode 100644 index 0000000..a8c1b6c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/README.md @@ -0,0 +1,188 @@ +# zsh-autosuggestions + +_[Fish](http://fishshell.com/)-like fast/unobtrusive autosuggestions for zsh._ + +It suggests commands as you type based on history and completions. + +Requirements: Zsh v4.3.11 or later + +[![Chat on Gitter](https://img.shields.io/gitter/room/zsh-users/zsh-autosuggestions.svg)](https://gitter.im/zsh-users/zsh-autosuggestions) + + + + +## Installation + +See [INSTALL.md](INSTALL.md). + + +## Usage + +As you type commands, you will see a completion offered after the cursor in a muted gray color. This color can be changed by setting the `ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE` variable. See [configuration](#configuration). + +If you press the key (`forward-char` widget) or End (`end-of-line` widget) with the cursor at the end of the buffer, it will accept the suggestion, replacing the contents of the command line buffer with the suggestion. + +If you invoke the `forward-word` widget, it will partially accept the suggestion up to the point that the cursor moves to. + + +## Configuration + +You may want to override the default global config variables. Default values of these variables can be found [here](src/config.zsh). + +**Note:** If you are using Oh My Zsh, you can put this configuration in a file in the `$ZSH_CUSTOM` directory. See their comments on [overriding internals](https://github.com/robbyrussell/oh-my-zsh/wiki/Customization#overriding-internals). + + +### Suggestion Highlight Style + +Set `ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE` to configure the style that the suggestion is shown with. The default is `fg=8`, which will set the foreground color to color 8 from the [256-color palette](https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg). If your terminal only supports 8 colors, you will need to use a number between 0 and 7. + +Background color can also be set, and the suggestion can be styled bold, underlined, or standout. For example, this would show suggestions with bold, underlined, pink text on a cyan background: + +```sh +ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#ff00ff,bg=cyan,bold,underline" +``` + +For more info, read the Character Highlighting section of the zsh manual: `man zshzle` or [online](http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting). + +**Note:** Some iTerm2 users have reported [not being able to see the suggestions](https://github.com/zsh-users/zsh-autosuggestions/issues/416#issuecomment-486516333). If this affects you, the problem is likely caused by incorrect color settings. In order to correct this, go into iTerm2's setting, navigate to profile > colors and make sure that the colors for Basic Colors > Background and ANSI Colors > Bright Black are **different**. + + +### Suggestion Strategy + +`ZSH_AUTOSUGGEST_STRATEGY` is an array that specifies how suggestions should be generated. The strategies in the array are tried successively until a suggestion is found. There are currently three built-in strategies to choose from: + +- `history`: Chooses the most recent match from history. +- `completion`: Chooses a suggestion based on what tab-completion would suggest. (requires `zpty` module, which is included with zsh since 4.0.1) +- `match_prev_cmd`: Like `history`, but chooses the most recent match whose preceding history item matches the most recently executed command ([more info](src/strategies/match_prev_cmd.zsh)). Note that this strategy won't work as expected with ZSH options that don't preserve the history order such as `HIST_IGNORE_ALL_DUPS` or `HIST_EXPIRE_DUPS_FIRST`. + +For example, setting `ZSH_AUTOSUGGEST_STRATEGY=(history completion)` will first try to find a suggestion from your history, but, if it can't find a match, will find a suggestion from the completion engine. + + +### Widget Mapping + +This plugin works by triggering custom behavior when certain [zle widgets](http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets) are invoked. You can add and remove widgets from these arrays to change the behavior of this plugin: + +- `ZSH_AUTOSUGGEST_CLEAR_WIDGETS`: Widgets in this array will clear the suggestion when invoked. +- `ZSH_AUTOSUGGEST_ACCEPT_WIDGETS`: Widgets in this array will accept the suggestion when invoked. +- `ZSH_AUTOSUGGEST_EXECUTE_WIDGETS`: Widgets in this array will execute the suggestion when invoked. +- `ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS`: Widgets in this array will partially accept the suggestion when invoked. +- `ZSH_AUTOSUGGEST_IGNORE_WIDGETS`: Widgets in this array will not trigger any custom behavior. + +Widgets that modify the buffer and are not found in any of these arrays will fetch a new suggestion after they are invoked. + +**Note:** A widget shouldn't belong to more than one of the above arrays. + + +### Disabling suggestion for large buffers + +Set `ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE` to an integer value to disable autosuggestion for large buffers. The default is unset, which means that autosuggestion will be tried for any buffer size. Recommended value is 20. +This can be useful when pasting large amount of text in the terminal, to avoid triggering autosuggestion for strings that are too long. + +### Asynchronous Mode + +Suggestions are fetched asynchronously by default in zsh versions 5.0.8 and greater. To disable asynchronous suggestions and fetch them synchronously instead, `unset ZSH_AUTOSUGGEST_USE_ASYNC` after sourcing the plugin. + +Alternatively, if you are using a version of zsh older than 5.0.8 and want to enable asynchronous mode, set the `ZSH_AUTOSUGGEST_USE_ASYNC` variable after sourcing the plugin (it can be set to anything). Note that there is [a bug](https://github.com/zsh-users/zsh-autosuggestions/issues/364#issuecomment-481423232) in versions of zsh older than 5.0.8 where ctrl + c will fail to reset the prompt immediately after fetching a suggestion asynchronously. + +### Disabling automatic widget re-binding + +Set `ZSH_AUTOSUGGEST_MANUAL_REBIND` (it can be set to anything) to disable automatic widget re-binding on each precmd. This can be a big boost to performance, but you'll need to handle re-binding yourself if any of the widget lists change or if you or another plugin wrap any of the autosuggest widgets. To re-bind widgets, run `_zsh_autosuggest_bind_widgets`. + +### Ignoring history suggestions that match a pattern + +Set `ZSH_AUTOSUGGEST_HISTORY_IGNORE` to a [glob pattern](http://zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators) to prevent offering suggestions for history entries that match the pattern. For example, set it to `"cd *"` to never suggest any `cd` commands from history. Or set to `"?(#c50,)"` to never suggest anything 50 characters or longer. + +**Note:** This only affects the `history` and `match_prev_cmd` suggestion strategies. + +### Skipping completion suggestions for certain cases + +Set `ZSH_AUTOSUGGEST_COMPLETION_IGNORE` to a [glob pattern](http://zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators) to prevent offering completion suggestions when the buffer matches that pattern. For example, set it to `"git *"` to disable completion suggestions for git subcommands. + +**Note:** This only affects the `completion` suggestion strategy. + + +### Key Bindings + +This plugin provides a few widgets that you can use with `bindkey`: + +1. `autosuggest-accept`: Accepts the current suggestion. +2. `autosuggest-execute`: Accepts and executes the current suggestion. +3. `autosuggest-clear`: Clears the current suggestion. +4. `autosuggest-fetch`: Fetches a suggestion (works even when suggestions are disabled). +5. `autosuggest-disable`: Disables suggestions. +6. `autosuggest-enable`: Re-enables suggestions. +7. `autosuggest-toggle`: Toggles between enabled/disabled suggestions. + +For example, this would bind ctrl + space to accept the current suggestion. + +```sh +bindkey '^ ' autosuggest-accept +``` + + +## Troubleshooting + +If you have a problem, please search through [the list of issues on GitHub](https://github.com/zsh-users/zsh-autosuggestions/issues?q=) to see if someone else has already reported it. + +### Reporting an Issue + +Before reporting an issue, please try temporarily disabling sections of your configuration and other plugins that may be conflicting with this plugin to isolate the problem. + +When reporting an issue, please include: + +- The smallest, simplest `.zshrc` configuration that will reproduce the problem. See [this comment](https://github.com/zsh-users/zsh-autosuggestions/issues/102#issuecomment-180944764) for a good example of what this means. +- The version of zsh you're using (`zsh --version`) +- Which operating system you're running + + +## Uninstallation + +1. Remove the code referencing this plugin from `~/.zshrc`. + +2. Remove the git repository from your hard drive + + ```sh + rm -rf ~/.zsh/zsh-autosuggestions # Or wherever you installed + ``` + + +## Development + +### Build Process + +Edit the source files in `src/`. Run `make` to build `zsh-autosuggestions.zsh` from those source files. + + +### Pull Requests + +Pull requests are welcome! If you send a pull request, please: + +- Request to merge into the `develop` branch (*NOT* `master`) +- Match the existing coding conventions. +- Include helpful comments to keep the barrier-to-entry low for people new to the project. +- Write tests that cover your code as much as possible. + + +### Testing + +Tests are written in ruby using the [`rspec`](http://rspec.info/) framework. They use [`tmux`](https://tmux.github.io/) to drive a pseudoterminal, sending simulated keystrokes and making assertions on the terminal content. + +Test files live in `spec/`. To run the tests, run `make test`. To run a specific test, run `TESTS=spec/some_spec.rb make test`. You can also specify a `zsh` binary to use by setting the `TEST_ZSH_BIN` environment variable (ex: `TEST_ZSH_BIN=/bin/zsh make test`). + +It's possible to run the tests for any supported version of zsh in a Docker image by building an image from the provided Dockerfile. To build the docker image for a specific version of zsh (where `` below is substituted with the contents of a line from the [`ZSH_VERSIONS`](ZSH_VERSIONS) file), run: + +```sh +docker build --build-arg TEST_ZSH_VERSION= -t zsh-autosuggestions-test . +``` + +After building the image, run the tests via: + +```sh +docker run -it -v $PWD:/zsh-autosuggestions zsh-autosuggestions-test make test +``` + + +## License + +This project is licensed under [MIT license](http://opensource.org/licenses/MIT). +For the full text of the license, see the [LICENSE](LICENSE) file. diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/URL b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/URL new file mode 100644 index 0000000..4e2bd94 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/URL @@ -0,0 +1 @@ +https://github.com/zsh-users/zsh-autosuggestions diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/VERSION b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/VERSION new file mode 100644 index 0000000..63f2359 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/VERSION @@ -0,0 +1 @@ +v0.7.1 diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/ZSH_VERSIONS b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/ZSH_VERSIONS new file mode 100644 index 0000000..23006db --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/ZSH_VERSIONS @@ -0,0 +1,14 @@ +# Zsh releases to run tests against +# See https://github.com/zsh-users/zsh/releases +4.3.11 +5.0.2 +5.0.8 +5.1.1 +5.2 +5.3.1 +5.4.2 +5.5.1 +5.6.2 +5.7.1 +5.8.1 +5.9 diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/install_test_zsh.sh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/install_test_zsh.sh new file mode 100755 index 0000000..6cac9f5 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/install_test_zsh.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +set -ex + +mkdir zsh-build +cd zsh-build + +curl -L https://api.github.com/repos/zsh-users/zsh/tarball/zsh-$TEST_ZSH_VERSION | tar xz --strip=1 + +./Util/preconfig +./configure --enable-pcre \ + --enable-cap \ + --enable-multibyte \ + --with-term-lib='ncursesw tinfo' \ + --with-tcsetpgrp + +make install.bin +make install.modules +make install.fns + +cd .. + +rm -rf zsh-build diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/async_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/async_spec.rb new file mode 100644 index 0000000..0af7232 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/async_spec.rb @@ -0,0 +1,70 @@ +context 'with asynchronous suggestions enabled' do + let(:options) { ["ZSH_AUTOSUGGEST_USE_ASYNC="] } + + describe '`up-line-or-beginning-search`' do + let(:before_sourcing) do + -> do + session. + run_command('autoload -U up-line-or-beginning-search'). + run_command('zle -N up-line-or-beginning-search'). + send_string('bindkey "'). + send_keys('C-v').send_keys('up'). + send_string('" up-line-or-beginning-search'). + send_keys('enter') + end + end + + it 'should show previous history entries' do + with_history( + 'echo foo', + 'echo bar', + 'echo baz' + ) do + session.clear_screen + 3.times { session.send_keys('up') } + wait_for { session.content }.to eq("echo foo") + end + end + end + + describe '`copy-earlier-word`' do + let(:before_sourcing) do + -> do + session. + run_command('autoload -Uz copy-earlier-word'). + run_command('zle -N copy-earlier-word'). + run_command('bindkey "^N" copy-earlier-word') + end + end + + it 'should cycle through previous words in the buffer' do + session.clear_screen + session.send_string('foo bar baz') + sleep 0.5 + session.send_keys('C-n') + wait_for { session.content }.to eq('foo bar bazbaz') + session.send_keys('C-n') + wait_for { session.content }.to eq('foo bar bazbar') + session.send_keys('C-n') + wait_for { session.content }.to eq('foo bar bazfoo') + end + end + + describe 'pressing ^C after fetching a suggestion' do + before do + skip 'Workaround does not work below v5.0.8' if session.zsh_version < Gem::Version.new('5.0.8') + end + + it 'terminates the prompt and begins a new one' do + session.send_keys('e') + sleep 0.5 + session.send_keys('C-c') + sleep 0.5 + session.send_keys('echo') + + wait_for { session.content }.to eq("e\necho") + end + end +end + + diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/auto_cd_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/auto_cd_spec.rb new file mode 100644 index 0000000..94bd24b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/auto_cd_spec.rb @@ -0,0 +1,14 @@ +describe 'with `AUTO_CD` option set' do + let(:after_sourcing) do + -> { + session.run_command('setopt AUTO_CD') + session.run_command('autoload compinit && compinit') + } + end + + it 'directory names are still completed' do + session.send_string('sr') + session.send_keys('C-i') + wait_for { session.content }.to eq('src/') + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/bracketed_paste_magic_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/bracketed_paste_magic_spec.rb new file mode 100644 index 0000000..41ff267 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/bracketed_paste_magic_spec.rb @@ -0,0 +1,43 @@ +describe 'pasting using bracketed-paste-magic' do + let(:before_sourcing) do + -> do + session. + run_command('autoload -Uz bracketed-paste-magic'). + run_command('zle -N bracketed-paste bracketed-paste-magic') + end + end + + context 'with suggestions disabled while pasting' do + before do + session. + run_command('bpm_init() { zle autosuggest-disable }'). + run_command('bpm_finish() { zle autosuggest-enable }'). + run_command('zstyle :bracketed-paste-magic paste-init bpm_init'). + run_command('zstyle :bracketed-paste-magic paste-finish bpm_finish') + end + + it 'does not show an incorrect suggestion' do + with_history('echo hello') do + session.paste_string("echo #{'a' * 60}") + sleep 1 + expect(session.content).to eq("echo #{'a' * 60}") + end + end + end + + context 'with `bracketed-paste` added to the list of widgets that clear the suggestion' do + let(:options) { ['ZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(bracketed-paste)'] } + + it 'does not retain an old suggestion' do + with_history ('echo foo') do + session.send_string('echo ') + wait_for { session.content }.to eq('echo foo') + session.paste_string('bar') + wait_for { session.content }.to eq('echo bar') + session.send_keys('C-a') # Any cursor movement works + sleep 1 + expect(session.content).to eq('echo bar') + end + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/client_zpty_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/client_zpty_spec.rb new file mode 100644 index 0000000..b8abb37 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/client_zpty_spec.rb @@ -0,0 +1,14 @@ +describe 'a running zpty command' do + let(:before_sourcing) { -> { session.run_command('zmodload zsh/zpty && zpty -b kitty cat') } } + + context 'when using `completion` strategy' do + let(:options) { ["ZSH_AUTOSUGGEST_STRATEGY=completion"] } + + it 'is not affected' do + session.send_keys('a').send_keys('C-h') + session.run_command('zpty -t kitty; echo $?') + + wait_for { session.content }.to end_with("\n0") + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/glob_subst_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/glob_subst_spec.rb new file mode 100644 index 0000000..c3dd671 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/glob_subst_spec.rb @@ -0,0 +1,12 @@ +describe 'with `GLOB_SUBST` option set' do + let(:after_sourcing) do + -> { + session.run_command('setopt GLOB_SUBST') + } + end + + it 'error messages are not printed' do + session.send_string('[[') + wait_for { session.content }.to eq('[[') + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/rebound_bracket_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/rebound_bracket_spec.rb new file mode 100644 index 0000000..8b420f0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/rebound_bracket_spec.rb @@ -0,0 +1,13 @@ +describe 'rebinding [' do + context 'initialized before sourcing the plugin' do + before do + session.run_command("function [ { $commands[\\[] \"$@\" }") + session.clear_screen + end + + it 'executes the custom behavior and the built-in behavior' do + session.send_string('asdf') + wait_for { session.content }.to eq('asdf') + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/vi_mode_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/vi_mode_spec.rb new file mode 100644 index 0000000..0a295c2 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/vi_mode_spec.rb @@ -0,0 +1,80 @@ +describe 'when using vi mode' do + let(:before_sourcing) do + -> do + session.run_command('bindkey -v') + end + end + + describe 'moving the cursor after exiting insert mode' do + it 'should not clear the current suggestion' do + with_history('foobar foo') do + session. + send_string('foo'). + send_keys('escape'). + send_keys('h') + + wait_for { session.content }.to eq('foobar foo') + end + end + end + + describe '`vi-forward-word-end`' do + it 'should accept through the end of the current word' do + with_history('foobar foo') do + session. + send_string('foo'). + send_keys('escape'). + send_keys('e'). # vi-forward-word-end + send_keys('a'). # vi-add-next + send_string('baz') + + wait_for { session.content }.to eq('foobarbaz') + end + end + end + + describe '`vi-forward-word`' do + it 'should accept through the first character of the next word' do + with_history('foobar foo') do + session. + send_string('foo'). + send_keys('escape'). + send_keys('w'). # vi-forward-word + send_keys('a'). # vi-add-next + send_string('az') + + wait_for { session.content }.to eq('foobar faz') + end + end + end + + describe '`vi-find-next-char`' do + it 'should accept through the next occurrence of the character' do + with_history('foobar foo') do + session. + send_string('foo'). + send_keys('escape'). + send_keys('f'). # vi-find-next-char + send_keys('o'). + send_keys('a'). # vi-add-next + send_string('b') + + wait_for { session.content }.to eq('foobar fob') + end + end + end + + describe '`vi-delete`' do + it 'should be able to remove the last character in the buffer' do + skip 'deleting last char did not work below zsh version 5.0.8' if session.zsh_version < Gem::Version.new('5.0.8') + + session. + send_string('echo foo'). + send_keys('escape'). + send_keys('d'). + send_keys('l') + + wait_for { session.content }.to eq('echo fo') + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/wrapped_widget_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/wrapped_widget_spec.rb new file mode 100644 index 0000000..61dfc2d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/wrapped_widget_spec.rb @@ -0,0 +1,39 @@ +describe 'a wrapped widget' do + let(:widget) { 'backward-delete-char' } + + context 'initialized before sourcing the plugin' do + let(:before_sourcing) do + -> do + session. + run_command("_orig_#{widget}() { zle .#{widget} }"). + run_command("zle -N orig-#{widget} _orig_#{widget}"). + run_command("#{widget}-magic() { zle orig-#{widget}; BUFFER+=b }"). + run_command("zle -N #{widget} #{widget}-magic") + end + end + + it 'executes the custom behavior and the built-in behavior' do + with_history('foobar', 'foodar') do + session.send_string('food').send_keys('C-h') + wait_for { session.content }.to eq('foobar') + end + end + end + + context 'initialized after sourcing the plugin' do + before do + session. + run_command("zle -N orig-#{widget} ${widgets[#{widget}]#*:}"). + run_command("#{widget}-magic() { zle orig-#{widget}; BUFFER+=b }"). + run_command("zle -N #{widget} #{widget}-magic"). + clear_screen + end + + it 'executes the custom behavior and the built-in behavior' do + with_history('foobar', 'foodar') do + session.send_string('food').send_keys('C-h') + wait_for { session.content }.to eq('foobar') + end + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/zle_input_stack_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/zle_input_stack_spec.rb new file mode 100644 index 0000000..12cfbc7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/integrations/zle_input_stack_spec.rb @@ -0,0 +1,24 @@ +describe 'using `zle -U`' do + let(:before_sourcing) do + -> do + session. + run_command('_zsh_autosuggest_strategy_test() { sleep 1; _zsh_autosuggest_strategy_history "$1" }'). + run_command('foo() { zle -U - "echo hello" }; zle -N foo; bindkey ^B foo') + end + end + + let(:options) { ['unset ZSH_AUTOSUGGEST_USE_ASYNC', 'ZSH_AUTOSUGGEST_STRATEGY=test'] } + + # TODO: This is only possible with the $KEYS_QUEUED_COUNT widget parameter, coming soon... + xit 'does not fetch a suggestion for every inserted character' do + session.send_keys('C-b') + wait_for { session.content }.to eq('echo hello') + end + + it 'shows a suggestion when the widget completes' do + with_history('echo hello world') do + session.send_keys('C-b') + wait_for { session.content(esc_seqs: true) }.to match(/\Aecho hello\e\[[0-9]+m world/) + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/kill_ring_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/kill_ring_spec.rb new file mode 100644 index 0000000..4d0178f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/kill_ring_spec.rb @@ -0,0 +1,23 @@ +context 'with some items in the kill ring' do + before do + session. + send_string('echo foo'). + send_keys('C-u'). + send_string('echo bar'). + send_keys('C-u') + end + + describe '`yank-pop`' do + it 'should cycle through all items in the kill ring' do + session.send_keys('C-y') + wait_for { session.content }.to eq('echo bar') + + session.send_keys('escape').send_keys('y') + wait_for { session.content }.to eq('echo foo') + + session.send_keys('escape').send_keys('y') + wait_for { session.content }.to eq('echo bar') + end + end +end + diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/line_init_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/line_init_spec.rb new file mode 100644 index 0000000..826277f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/line_init_spec.rb @@ -0,0 +1,17 @@ +context 'with zle-line-init unignored' do + let(:after_sourcing) do + -> do + session. + run_command('setopt extendedglob'). + run_command('ZSH_AUTOSUGGEST_IGNORE_WIDGETS=(${(@)ZSH_AUTOSUGGEST_IGNORE_WIDGETS:#zle-\*} zle-\^line-init)'). + run_command('zle-line-init() { BUFFER="echo" }') + end + end + + it 'should fetch a suggestion on each line initialization' do + with_history('echo foo') do + session.run_command('zle -N zle-line-init') + wait_for { session.content }.to end_with('echo foo') + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/multi_line_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/multi_line_spec.rb new file mode 100644 index 0000000..364780a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/multi_line_spec.rb @@ -0,0 +1,8 @@ +describe 'a multi-line suggestion' do + it 'should be displayed on multiple lines' do + with_history("echo \"\n\"") do + session.send_keys('e') + wait_for { session.content }.to eq("echo \"\n\"") + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/buffer_max_size_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/buffer_max_size_spec.rb new file mode 100644 index 0000000..29ca8bc --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/buffer_max_size_spec.rb @@ -0,0 +1,30 @@ +describe 'a suggestion' do + let(:term_opts) { { width: 200 } } + let(:long_command) { "echo #{'a' * 100}" } + + around do |example| + with_history(long_command) { example.run } + end + + it 'is provided for any buffer length' do + session.send_string(long_command[0...-1]) + wait_for { session.content }.to eq(long_command) + end + + context 'when ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE is specified' do + let(:buffer_max_size) { 10 } + let(:options) { ["ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=#{buffer_max_size}"] } + + it 'is provided when the buffer is shorter than the specified length' do + session.send_string(long_command[0...(buffer_max_size - 1)]) + wait_for { session.content }.to eq(long_command) + end + + it 'is provided when the buffer is equal to the specified length' do + session.send_string(long_command[0...(buffer_max_size)]) + wait_for { session.content }.to eq(long_command) + end + + it 'is not provided when the buffer is longer than the specified length' + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/highlight_style_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/highlight_style_spec.rb new file mode 100644 index 0000000..a7e39b3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/highlight_style_spec.rb @@ -0,0 +1,7 @@ +describe 'a displayed suggestion' do + it 'is shown in the default style' + + describe 'when ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE is set to a zle_highlight string' do + it 'is shown in the specified style' + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/original_widget_prefix_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/original_widget_prefix_spec.rb new file mode 100644 index 0000000..a4b6e98 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/original_widget_prefix_spec.rb @@ -0,0 +1,7 @@ +describe 'an original zle widget' do + context 'is accessible with the default prefix' + + context 'when ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX is set' do + it 'is accessible with the specified prefix' + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/strategy_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/strategy_spec.rb new file mode 100644 index 0000000..58562d0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/strategy_spec.rb @@ -0,0 +1,55 @@ +describe 'a suggestion for a given prefix' do + let(:history_strategy) { '_zsh_autosuggest_strategy_history() { suggestion="history" }' } + let(:foobar_strategy) { '_zsh_autosuggest_strategy_foobar() { [[ "foobar baz" = $1* ]] && suggestion="foobar baz" }' } + let(:foobaz_strategy) { '_zsh_autosuggest_strategy_foobaz() { [[ "foobaz bar" = $1* ]] && suggestion="foobaz bar" }' } + + let(:after_sourcing) do + -> do + session.run_command(history_strategy) + end + end + + it 'by default is determined by calling the `history` strategy function' do + session.send_string('h') + wait_for { session.content }.to eq('history') + end + + context 'when ZSH_AUTOSUGGEST_STRATEGY is set to an array' do + let(:after_sourcing) do + -> do + session. + run_command(foobar_strategy). + run_command(foobaz_strategy). + run_command('ZSH_AUTOSUGGEST_STRATEGY=(foobar foobaz)') + end + end + + it 'is determined by the first strategy function to return a suggestion' do + session.send_string('foo') + wait_for { session.content }.to eq('foobar baz') + + session.send_string('baz') + wait_for { session.content }.to eq('foobaz bar') + end + end + + context 'when ZSH_AUTOSUGGEST_STRATEGY is set to a string' do + let(:after_sourcing) do + -> do + session. + run_command(foobar_strategy). + run_command(foobaz_strategy). + run_command('ZSH_AUTOSUGGEST_STRATEGY="foobar foobaz"') + end + end + + it 'is determined by the first strategy function to return a suggestion' do + session.send_string('foo') + wait_for { session.content }.to eq('foobar baz') + + session.send_string('baz') + wait_for { session.content }.to eq('foobaz bar') + end + end +end + diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/widget_lists_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/widget_lists_spec.rb new file mode 100644 index 0000000..421b84e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/options/widget_lists_spec.rb @@ -0,0 +1,121 @@ +describe 'a zle widget' do + let(:widget) { 'my-widget' } + let(:before_sourcing) { -> { session.run_command("#{widget}() {}; zle -N #{widget}; bindkey ^B #{widget}") } } + + context 'when added to ZSH_AUTOSUGGEST_ACCEPT_WIDGETS' do + let(:options) { ["ZSH_AUTOSUGGEST_ACCEPT_WIDGETS+=(#{widget})"] } + + it 'accepts the suggestion and moves the cursor to the end of the buffer when invoked' do + with_history('echo hello') do + session.send_string('e') + wait_for { session.content }.to eq('echo hello') + session.send_keys('C-b') + wait_for { session.content(esc_seqs: true) }.to eq('echo hello') + wait_for { session.cursor }.to eq([10, 0]) + end + end + end + + context 'when added to ZSH_AUTOSUGGEST_CLEAR_WIDGETS' do + let(:options) { ["ZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(#{widget})"] } + + it 'clears the suggestion when invoked' do + with_history('echo hello') do + session.send_string('e') + wait_for { session.content }.to eq('echo hello') + session.send_keys('C-b') + wait_for { session.content }.to eq('e') + end + end + end + + context 'when added to ZSH_AUTOSUGGEST_EXECUTE_WIDGETS' do + let(:options) { ["ZSH_AUTOSUGGEST_EXECUTE_WIDGETS+=(#{widget})"] } + + it 'executes the suggestion when invoked' do + with_history('echo hello') do + session.send_string('e') + wait_for { session.content }.to eq('echo hello') + session.send_keys('C-b') + wait_for { session.content }.to end_with("\nhello") + end + end + end + + context 'when added to ZSH_AUTOSUGGEST_IGNORE_WIDGETS' do + let(:options) { ["ZSH_AUTOSUGGEST_IGNORE_WIDGETS=(#{widget})"] } + + it 'should not be wrapped with an autosuggest widget' do + session.run_command("echo $widgets[#{widget}]") + wait_for { session.content }.to end_with("\nuser:#{widget}") + end + end + + context 'that moves the cursor forward' do + before { session.run_command("#{widget}() { zle forward-char }") } + + context 'when added to ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS' do + let(:options) { ["ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=(#{widget})"] } + + it 'accepts the suggestion as far as the cursor is moved when invoked' do + with_history('echo hello') do + session.send_string('e') + wait_for { session.content }.to start_with('echo hello') + session.send_keys('C-b') + wait_for { session.content(esc_seqs: true) }.to match(/\Aec\e\[[0-9]+mho hello/) + end + end + end + end + + context 'that modifies the buffer' do + before { session.run_command("#{widget}() { BUFFER=\"foo\" }") } + + context 'when not added to any of the widget lists' do + it 'modifies the buffer and fetches a new suggestion' do + with_history('foobar') do + session.send_keys('C-b') + wait_for { session.content }.to eq('foobar') + end + end + end + end +end + +describe 'a modification to the widget lists' do + let(:widget) { 'my-widget' } + let(:before_sourcing) { -> { session.run_command("#{widget}() {}; zle -N #{widget}; bindkey ^B #{widget}") } } + before { session.run_command("ZSH_AUTOSUGGEST_ACCEPT_WIDGETS+=(#{widget})") } + + it 'takes effect on the next cmd line' do + with_history('echo hello') do + session.send_string('e') + wait_for { session.content }.to eq('echo hello') + session.send_keys('C-b') + wait_for { session.content(esc_seqs: true) }.to eq('echo hello') + end + end + + context 'when manual rebind is enabled' do + let(:options) { ["ZSH_AUTOSUGGEST_MANUAL_REBIND=true"] } + + it 'does not take effect until bind command is re-run' do + with_history('echo hello') do + session.send_string('e') + wait_for { session.content }.to eq('echo hello') + session.send_keys('C-b') + sleep 1 + expect(session.content(esc_seqs: true)).not_to eq('echo hello') + + session.send_keys('C-c') + session.run_command('_zsh_autosuggest_bind_widgets').clear_screen + wait_for { session.content }.to eq('') + + session.send_string('e') + wait_for { session.content }.to eq('echo hello') + session.send_keys('C-b') + wait_for { session.content(esc_seqs: true) }.to eq('echo hello') + end + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/spec_helper.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/spec_helper.rb new file mode 100644 index 0000000..dc1abb0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/spec_helper.rb @@ -0,0 +1,54 @@ +require 'pry' +require 'rspec/wait' +require 'terminal_session' +require 'tempfile' + +RSpec.shared_context 'terminal session' do + let(:term_opts) { {} } + let(:session) { TerminalSession.new(term_opts) } + let(:before_sourcing) { -> {} } + let(:after_sourcing) { -> {} } + let(:options) { [] } + + around do |example| + before_sourcing.call + session.run_command(['source zsh-autosuggestions.zsh', *options].join('; ')) + after_sourcing.call + session.clear_screen + + example.run + + session.destroy + end + + def with_history(*commands, &block) + Tempfile.create do |f| + f.write(commands.map{|c| c.gsub("\n", "\\\n")}.join("\n")) + f.flush + + session.run_command('fc -p') + session.run_command("fc -R #{f.path}") + + session.clear_screen + + yield block + + session.send_keys('C-c') + session.run_command('fc -P') + end + end +end + +RSpec.configure do |config| + config.expect_with :rspec do |expectations| + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + config.mock_with :rspec do |mocks| + mocks.verify_partial_doubles = true + end + + config.wait_timeout = 2 + + config.include_context 'terminal session' +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/completion_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/completion_spec.rb new file mode 100644 index 0000000..92794d6 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/completion_spec.rb @@ -0,0 +1,72 @@ +describe 'the `completion` suggestion strategy' do + let(:options) { ['ZSH_AUTOSUGGEST_STRATEGY=completion'] } + let(:before_sourcing) do + -> do + session. + run_command('autoload compinit && compinit'). + run_command('_foo() { compadd bar; compadd bat }'). + run_command('_num() { compadd two; compadd three }'). + run_command('compdef _foo baz'). + run_command('compdef _num one') + end + end + + it 'suggests the first completion result' do + session.send_string('baz ') + wait_for { session.content }.to eq('baz bar') + end + + it 'does not add extra carriage returns when prefix has a line feed' do + skip '`stty` does not work inside zpty below zsh version 5.0.3' if session.zsh_version < Gem::Version.new('5.0.3') + session.send_string('baz \\').send_keys('C-v', 'C-j') + wait_for { session.content }.to eq("baz \\\nbar") + end + + context 'when `_complete` is aliased' do + let(:before_sourcing) do + -> do + session. + run_command('autoload compinit && compinit'). + run_command('_foo() { compadd bar; compadd bat }'). + run_command('compdef _foo baz'). + run_command('alias _complete=_complete') + end + end + + it 'suggests the first completion result' do + session.send_string('baz ') + wait_for { session.content }.to eq('baz bar') + end + end + + context 'when ZSH_AUTOSUGGEST_COMPLETION_IGNORE is set to a pattern' do + let(:options) { ['ZSH_AUTOSUGGEST_STRATEGY=completion', 'ZSH_AUTOSUGGEST_COMPLETION_IGNORE="one *"'] } + + it 'makes suggestions when the buffer does not match the pattern' do + session.send_string('baz ') + wait_for { session.content }.to eq('baz bar') + end + + it 'does not make suggestions when the buffer matches the pattern' do + session.send_string('one t') + sleep 1 + expect(session.content).to eq('one t') + end + end + + context 'when async mode is enabled' do + let(:options) { ['ZSH_AUTOSUGGEST_USE_ASYNC=true', 'ZSH_AUTOSUGGEST_STRATEGY=completion'] } + + it 'suggests the first completion result' do + session.send_string('baz ') + wait_for { session.content }.to eq('baz bar') + end + + it 'does not add extra carriage returns when prefix has a line feed' do + skip '`stty` does not work inside zpty below zsh version 5.0.3' if session.zsh_version < Gem::Version.new('5.0.3') + session.send_string('baz \\').send_keys('C-v', 'C-j') + wait_for { session.content }.to eq("baz \\\nbar") + end + end +end + diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/history_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/history_spec.rb new file mode 100644 index 0000000..eee8efd --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/history_spec.rb @@ -0,0 +1,23 @@ +require 'strategies/special_characters_helper' + +describe 'the `history` suggestion strategy' do + it 'suggests the last matching history entry' do + with_history('ls foo', 'ls bar', 'echo baz') do + session.send_string('ls') + wait_for { session.content }.to eq('ls bar') + end + end + + context 'when ZSH_AUTOSUGGEST_HISTORY_IGNORE is set to a pattern' do + let(:options) { ['ZSH_AUTOSUGGEST_HISTORY_IGNORE="* bar"'] } + + it 'does not make suggestions that match the pattern' do + with_history('ls foo', 'ls bar', 'echo baz') do + session.send_string('ls') + wait_for { session.content }.to eq('ls foo') + end + end + end + + include_examples 'special characters' +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/match_prev_cmd_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/match_prev_cmd_spec.rb new file mode 100644 index 0000000..c435f16 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/match_prev_cmd_spec.rb @@ -0,0 +1,34 @@ +require 'strategies/special_characters_helper' + +describe 'the `match_prev_cmd` strategy' do + let(:options) { ['ZSH_AUTOSUGGEST_STRATEGY=match_prev_cmd'] } + + let(:history) { [ + 'echo what', + 'ls foo', + 'echo what', + 'ls bar', + 'ls baz', + 'echo what' + ] } + + it 'suggests the last matching history entry after the previous command' do + with_history(*history) do + session.send_string('ls') + wait_for { session.content }.to eq('ls bar') + end + end + + context 'when ZSH_AUTOSUGGEST_HISTORY_IGNORE is set to a pattern' do + let(:options) { ['ZSH_AUTOSUGGEST_STRATEGY=match_prev_cmd', 'ZSH_AUTOSUGGEST_HISTORY_IGNORE="* bar"'] } + + it 'does not make suggestions that match the pattern' do + with_history(*history) do + session.send_string('ls') + wait_for { session.content }.to eq('ls foo') + end + end + end + + include_examples 'special characters' +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/special_characters_helper.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/special_characters_helper.rb new file mode 100644 index 0000000..eb1f0cd --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/strategies/special_characters_helper.rb @@ -0,0 +1,75 @@ +shared_examples 'special characters' do + describe 'a special character in the buffer should be treated like any other character' do + it 'asterisk' do + with_history('echo "hello*"', 'echo "hello."') do + session.send_string('echo "hello*') + wait_for { session.content }.to eq('echo "hello*"') + end + end + + it 'question mark' do + with_history('echo "hello?"', 'echo "hello."') do + session.send_string('echo "hello?') + wait_for { session.content }.to eq('echo "hello?"') + end + end + + it 'backslash' do + with_history('echo "hello\nworld"') do + session.send_string('echo "hello\\') + wait_for { session.content }.to eq('echo "hello\nworld"') + end + end + + it 'double backslash' do + with_history('echo "\\\\"') do + session.send_string('echo "\\\\') + wait_for { session.content }.to eq('echo "\\\\"') + end + end + + it 'tilde' do + with_history('echo ~/foo') do + session.send_string('echo ~') + wait_for { session.content }.to eq('echo ~/foo') + end + end + + it 'parentheses' do + with_history('echo "$(ls foo)"') do + session.send_string('echo "$(') + wait_for { session.content }.to eq('echo "$(ls foo)"') + end + end + + it 'square bracket' do + with_history('echo "$history[123]"') do + session.send_string('echo "$history[') + wait_for { session.content }.to eq('echo "$history[123]"') + session.send_string('123]') + wait_for { session.content }.to eq('echo "$history[123]"') + end + end + + it 'octothorpe' do + with_history('echo "#yolo"') do + session.send_string('echo "#') + wait_for { session.content }.to eq('echo "#yolo"') + end + end + + it 'caret' do + with_history('echo "^A"', 'echo "^B"') do + session.send_string('echo "^A') + wait_for { session.content }.to eq('echo "^A"') + end + end + + it 'dash' do + with_history('-foo() {}') do + session.send_string('-') + wait_for { session.content }.to eq('-foo() {}') + end + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/terminal_session.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/terminal_session.rb new file mode 100644 index 0000000..f91ee6c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/terminal_session.rb @@ -0,0 +1,99 @@ +require 'securerandom' + +class TerminalSession + ZSH_BIN = ENV['TEST_ZSH_BIN'] || 'zsh' + + def initialize(opts = {}) + opts = { + width: 80, + height: 24, + prompt: '', + term: 'xterm-256color', + zsh_bin: ZSH_BIN + }.merge(opts) + + @opts = opts + + cmd="PS1=\"#{opts[:prompt]}\" TERM=#{opts[:term]} #{ZSH_BIN} -f" + tmux_command("new-session -d -x #{opts[:width]} -y #{opts[:height]} '#{cmd}'") + end + + def zsh_version + @zsh_version ||= Gem::Version.new(`#{ZSH_BIN} -c 'echo -n $ZSH_VERSION'`) + end + + def tmux_socket_name + @tmux_socket_name ||= SecureRandom.hex(6) + end + + def run_command(command) + send_string(command) + send_keys('enter') + + self + end + + def send_string(str) + tmux_command("send-keys -t 0 -l -- '#{str.gsub("'", "\\'")}'") + + self + end + + def send_keys(*keys) + tmux_command("send-keys -t 0 #{keys.join(' ')}") + + self + end + + def paste_string(str) + tmux_command("set-buffer -- '#{str}'") + tmux_command("paste-buffer -dpr -t 0") + + self + end + + def content(esc_seqs: false) + cmd = 'capture-pane -p -t 0' + cmd += ' -e' if esc_seqs + tmux_command(cmd).strip + end + + def clear_screen + send_keys('C-l') + + i = 0 + until content == opts[:prompt] || i > 20 do + sleep(0.1) + i = i + 1 + end + + self + end + + def destroy + tmux_command('kill-session') + end + + def cursor + tmux_command("display-message -t 0 -p '\#{cursor_x},\#{cursor_y}'"). + strip. + split(','). + map(&:to_i) + end + + def attach! + tmux_command('attach-session') + end + + private + + attr_reader :opts + + def tmux_command(cmd) + out = `tmux -u -L #{tmux_socket_name} #{cmd}` + + raise("tmux error running: '#{cmd}'") unless $?.success? + + out + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/disable_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/disable_spec.rb new file mode 100644 index 0000000..b387a59 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/disable_spec.rb @@ -0,0 +1,19 @@ +describe 'the `autosuggest-disable` widget' do + before do + session.run_command('bindkey ^B autosuggest-disable') + end + + it 'disables suggestions and clears the suggestion' do + with_history('echo hello') do + session.send_string('echo') + wait_for { session.content }.to eq('echo hello') + + session.send_keys('C-b') + wait_for { session.content }.to eq('echo') + + session.send_string(' h') + sleep 1 + expect(session.content).to eq('echo h') + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/enable_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/enable_spec.rb new file mode 100644 index 0000000..3ad35a8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/enable_spec.rb @@ -0,0 +1,42 @@ +describe 'the `autosuggest-enable` widget' do + before do + session. + run_command('typeset -g _ZSH_AUTOSUGGEST_DISABLED'). + run_command('bindkey ^B autosuggest-enable') + end + + it 'enables suggestions and fetches a suggestion' do + with_history('echo hello') do + session.send_string('e') + sleep 1 + expect(session.content).to eq('e') + + session.send_keys('C-b') + session.send_string('c') + wait_for { session.content }.to eq('echo hello') + end + end + + context 'invoked on an empty buffer' do + it 'does not fetch a suggestion' do + with_history('echo hello') do + session.send_keys('C-b') + sleep 1 + expect(session.content).to eq('') + end + end + end + + context 'invoked on a non-empty buffer' do + it 'fetches a suggestion' do + with_history('echo hello') do + session.send_string('e') + sleep 1 + expect(session.content).to eq('e') + + session.send_keys('C-b') + wait_for { session.content }.to eq('echo hello') + end + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/fetch_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/fetch_spec.rb new file mode 100644 index 0000000..eb8f2ba --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/fetch_spec.rb @@ -0,0 +1,24 @@ +describe 'the `autosuggest-fetch` widget' do + context 'when suggestions are disabled' do + before do + session. + run_command('bindkey ^B autosuggest-disable'). + run_command('bindkey ^F autosuggest-fetch'). + send_keys('C-b') + end + + it 'will fetch and display a suggestion' do + with_history('echo hello') do + session.send_string('echo h') + sleep 1 + expect(session.content).to eq('echo h') + + session.send_keys('C-f') + wait_for { session.content }.to eq('echo hello') + + session.send_string('e') + wait_for { session.content }.to eq('echo hello') + end + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/toggle_spec.rb b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/toggle_spec.rb new file mode 100644 index 0000000..8f9f3c3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/spec/widgets/toggle_spec.rb @@ -0,0 +1,26 @@ +describe 'the `autosuggest-toggle` widget' do + before do + session.run_command('bindkey ^B autosuggest-toggle') + end + + it 'toggles suggestions' do + with_history('echo world', 'echo hello') do + session.send_string('echo') + wait_for { session.content }.to eq('echo hello') + + session.send_keys('C-b') + wait_for { session.content }.to eq('echo') + + session.send_string(' h') + sleep 1 + expect(session.content).to eq('echo h') + + session.send_keys('C-b') + wait_for { session.content }.to eq('echo hello') + + session.send_keys('C-h') + session.send_string('w') + wait_for { session.content }.to eq('echo world') + end + end +end diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/async.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/async.zsh new file mode 100644 index 0000000..e179734 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/async.zsh @@ -0,0 +1,77 @@ + +#--------------------------------------------------------------------# +# Async # +#--------------------------------------------------------------------# + +_zsh_autosuggest_async_request() { + zmodload zsh/system 2>/dev/null # For `$sysparams` + + typeset -g _ZSH_AUTOSUGGEST_ASYNC_FD _ZSH_AUTOSUGGEST_CHILD_PID + + # If we've got a pending request, cancel it + if [[ -n "$_ZSH_AUTOSUGGEST_ASYNC_FD" ]] && { true <&$_ZSH_AUTOSUGGEST_ASYNC_FD } 2>/dev/null; then + # Close the file descriptor and remove the handler + builtin exec {_ZSH_AUTOSUGGEST_ASYNC_FD}<&- + zle -F $_ZSH_AUTOSUGGEST_ASYNC_FD + + # We won't know the pid unless the user has zsh/system module installed + if [[ -n "$_ZSH_AUTOSUGGEST_CHILD_PID" ]]; then + # Zsh will make a new process group for the child process only if job + # control is enabled (MONITOR option) + if [[ -o MONITOR ]]; then + # Send the signal to the process group to kill any processes that may + # have been forked by the suggestion strategy + kill -TERM -$_ZSH_AUTOSUGGEST_CHILD_PID 2>/dev/null + else + # Kill just the child process since it wasn't placed in a new process + # group. If the suggestion strategy forked any child processes they may + # be orphaned and left behind. + kill -TERM $_ZSH_AUTOSUGGEST_CHILD_PID 2>/dev/null + fi + fi + fi + + # Fork a process to fetch a suggestion and open a pipe to read from it + builtin exec {_ZSH_AUTOSUGGEST_ASYNC_FD}< <( + # Tell parent process our pid + echo $sysparams[pid] + + # Fetch and print the suggestion + local suggestion + _zsh_autosuggest_fetch_suggestion "$1" + echo -nE "$suggestion" + ) + + # There's a weird bug here where ^C stops working unless we force a fork + # See https://github.com/zsh-users/zsh-autosuggestions/issues/364 + autoload -Uz is-at-least + is-at-least 5.8 || command true + + # Read the pid from the child process + read _ZSH_AUTOSUGGEST_CHILD_PID <&$_ZSH_AUTOSUGGEST_ASYNC_FD + + # When the fd is readable, call the response handler + zle -F "$_ZSH_AUTOSUGGEST_ASYNC_FD" _zsh_autosuggest_async_response +} + +# Called when new data is ready to be read from the pipe +# First arg will be fd ready for reading +# Second arg will be passed in case of error +_zsh_autosuggest_async_response() { + emulate -L zsh + + local suggestion + + if [[ -z "$2" || "$2" == "hup" ]]; then + # Read everything from the fd and give it as a suggestion + IFS='' read -rd '' -u $1 suggestion + zle autosuggest-suggest -- "$suggestion" + + # Close the fd + builtin exec {1}<&- + fi + + # Always remove the handler + zle -F "$1" + _ZSH_AUTOSUGGEST_ASYNC_FD= +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/bind.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/bind.zsh new file mode 100644 index 0000000..1dde137 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/bind.zsh @@ -0,0 +1,106 @@ + +#--------------------------------------------------------------------# +# Widget Helpers # +#--------------------------------------------------------------------# + +_zsh_autosuggest_incr_bind_count() { + typeset -gi bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]+1)) + _ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=$bind_count +} + +# Bind a single widget to an autosuggest widget, saving a reference to the original widget +_zsh_autosuggest_bind_widget() { + typeset -gA _ZSH_AUTOSUGGEST_BIND_COUNTS + + local widget=$1 + local autosuggest_action=$2 + local prefix=$ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX + + local -i bind_count + + # Save a reference to the original widget + case $widgets[$widget] in + # Already bound + user:_zsh_autosuggest_(bound|orig)_*) + bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$widget])) + ;; + + # User-defined widget + user:*) + _zsh_autosuggest_incr_bind_count $widget + zle -N $prefix$bind_count-$widget ${widgets[$widget]#*:} + ;; + + # Built-in widget + builtin) + _zsh_autosuggest_incr_bind_count $widget + eval "_zsh_autosuggest_orig_${(q)widget}() { zle .${(q)widget} }" + zle -N $prefix$bind_count-$widget _zsh_autosuggest_orig_$widget + ;; + + # Completion widget + completion:*) + _zsh_autosuggest_incr_bind_count $widget + eval "zle -C $prefix$bind_count-${(q)widget} ${${(s.:.)widgets[$widget]}[2,3]}" + ;; + esac + + # Pass the original widget's name explicitly into the autosuggest + # function. Use this passed in widget name to call the original + # widget instead of relying on the $WIDGET variable being set + # correctly. $WIDGET cannot be trusted because other plugins call + # zle without the `-w` flag (e.g. `zle self-insert` instead of + # `zle self-insert -w`). + eval "_zsh_autosuggest_bound_${bind_count}_${(q)widget}() { + _zsh_autosuggest_widget_$autosuggest_action $prefix$bind_count-${(q)widget} \$@ + }" + + # Create the bound widget + zle -N -- $widget _zsh_autosuggest_bound_${bind_count}_$widget +} + +# Map all configured widgets to the right autosuggest widgets +_zsh_autosuggest_bind_widgets() { + emulate -L zsh + + local widget + local ignore_widgets + + ignore_widgets=( + .\* + _\* + ${_ZSH_AUTOSUGGEST_BUILTIN_ACTIONS/#/autosuggest-} + $ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX\* + $ZSH_AUTOSUGGEST_IGNORE_WIDGETS + ) + + # Find every widget we might want to bind and bind it appropriately + for widget in ${${(f)"$(builtin zle -la)"}:#${(j:|:)~ignore_widgets}}; do + if [[ -n ${ZSH_AUTOSUGGEST_CLEAR_WIDGETS[(r)$widget]} ]]; then + _zsh_autosuggest_bind_widget $widget clear + elif [[ -n ${ZSH_AUTOSUGGEST_ACCEPT_WIDGETS[(r)$widget]} ]]; then + _zsh_autosuggest_bind_widget $widget accept + elif [[ -n ${ZSH_AUTOSUGGEST_EXECUTE_WIDGETS[(r)$widget]} ]]; then + _zsh_autosuggest_bind_widget $widget execute + elif [[ -n ${ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS[(r)$widget]} ]]; then + _zsh_autosuggest_bind_widget $widget partial_accept + else + # Assume any unspecified widget might modify the buffer + _zsh_autosuggest_bind_widget $widget modify + fi + done +} + +# Given the name of an original widget and args, invoke it, if it exists +_zsh_autosuggest_invoke_original_widget() { + # Do nothing unless called with at least one arg + (( $# )) || return 0 + + local original_widget_name="$1" + + shift + + if (( ${+widgets[$original_widget_name]} )); then + zle $original_widget_name -- $@ + fi +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/config.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/config.zsh new file mode 100644 index 0000000..32d32b2 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/config.zsh @@ -0,0 +1,95 @@ + +#--------------------------------------------------------------------# +# Global Configuration Variables # +#--------------------------------------------------------------------# + +# Color to use when highlighting suggestion +# Uses format of `region_highlight` +# More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets +(( ! ${+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE} )) && +typeset -g ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8' + +# Prefix to use when saving original versions of bound widgets +(( ! ${+ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX} )) && +typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig- + +# Strategies to use to fetch a suggestion +# Will try each strategy in order until a suggestion is returned +(( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && { + typeset -ga ZSH_AUTOSUGGEST_STRATEGY + ZSH_AUTOSUGGEST_STRATEGY=(history) +} + +# Widgets that clear the suggestion +(( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && { + typeset -ga ZSH_AUTOSUGGEST_CLEAR_WIDGETS + ZSH_AUTOSUGGEST_CLEAR_WIDGETS=( + history-search-forward + history-search-backward + history-beginning-search-forward + history-beginning-search-backward + history-beginning-search-forward-end + history-beginning-search-backward-end + history-substring-search-up + history-substring-search-down + up-line-or-beginning-search + down-line-or-beginning-search + up-line-or-history + down-line-or-history + accept-line + copy-earlier-word + ) +} + +# Widgets that accept the entire suggestion +(( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && { + typeset -ga ZSH_AUTOSUGGEST_ACCEPT_WIDGETS + ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=( + forward-char + end-of-line + vi-forward-char + vi-end-of-line + vi-add-eol + ) +} + +# Widgets that accept the entire suggestion and execute it +(( ! ${+ZSH_AUTOSUGGEST_EXECUTE_WIDGETS} )) && { + typeset -ga ZSH_AUTOSUGGEST_EXECUTE_WIDGETS + ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=( + ) +} + +# Widgets that accept the suggestion as far as the cursor moves +(( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && { + typeset -ga ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS + ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=( + forward-word + emacs-forward-word + vi-forward-word + vi-forward-word-end + vi-forward-blank-word + vi-forward-blank-word-end + vi-find-next-char + vi-find-next-char-skip + ) +} + +# Widgets that should be ignored (globbing supported but must be escaped) +(( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && { + typeset -ga ZSH_AUTOSUGGEST_IGNORE_WIDGETS + ZSH_AUTOSUGGEST_IGNORE_WIDGETS=( + orig-\* + beep + run-help + set-local-history + which-command + yank + yank-pop + zle-\* + ) +} + +# Pty name for capturing completions for completion suggestion strategy +(( ! ${+ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME} )) && +typeset -g ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME=zsh_autosuggest_completion_pty diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/fetch.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/fetch.zsh new file mode 100644 index 0000000..fef2715 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/fetch.zsh @@ -0,0 +1,27 @@ + +#--------------------------------------------------------------------# +# Fetch Suggestion # +#--------------------------------------------------------------------# +# Loops through all specified strategies and returns a suggestion +# from the first strategy to provide one. +# + +_zsh_autosuggest_fetch_suggestion() { + typeset -g suggestion + local -a strategies + local strategy + + # Ensure we are working with an array + strategies=(${=ZSH_AUTOSUGGEST_STRATEGY}) + + for strategy in $strategies; do + # Try to get a suggestion from this strategy + _zsh_autosuggest_strategy_$strategy "$1" + + # Ensure the suggestion matches the prefix + [[ "$suggestion" != "$1"* ]] && unset suggestion + + # Break once we've found a valid suggestion + [[ -n "$suggestion" ]] && break + done +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/highlight.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/highlight.zsh new file mode 100644 index 0000000..273c03d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/highlight.zsh @@ -0,0 +1,26 @@ + +#--------------------------------------------------------------------# +# Highlighting # +#--------------------------------------------------------------------# + +# If there was a highlight, remove it +_zsh_autosuggest_highlight_reset() { + typeset -g _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT + + if [[ -n "$_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT" ]]; then + region_highlight=("${(@)region_highlight:#$_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT}") + unset _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT + fi +} + +# If there's a suggestion, highlight it +_zsh_autosuggest_highlight_apply() { + typeset -g _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT + + if (( $#POSTDISPLAY )); then + typeset -g _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT="$#BUFFER $(($#BUFFER + $#POSTDISPLAY)) $ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE" + region_highlight+=("$_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT") + else + unset _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT + fi +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/start.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/start.zsh new file mode 100644 index 0000000..5d4ee52 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/start.zsh @@ -0,0 +1,33 @@ + +#--------------------------------------------------------------------# +# Start # +#--------------------------------------------------------------------# + +# Start the autosuggestion widgets +_zsh_autosuggest_start() { + # By default we re-bind widgets on every precmd to ensure we wrap other + # wrappers. Specifically, highlighting breaks if our widgets are wrapped by + # zsh-syntax-highlighting widgets. This also allows modifications to the + # widget list variables to take effect on the next precmd. However this has + # a decent performance hit, so users can set ZSH_AUTOSUGGEST_MANUAL_REBIND + # to disable the automatic re-binding. + if (( ${+ZSH_AUTOSUGGEST_MANUAL_REBIND} )); then + add-zsh-hook -d precmd _zsh_autosuggest_start + fi + + _zsh_autosuggest_bind_widgets +} + +# Mark for auto-loading the functions that we use +autoload -Uz add-zsh-hook is-at-least + +# Automatically enable asynchronous mode in newer versions of zsh. Disable for +# older versions because there is a bug when using async mode where ^C does not +# work immediately after fetching a suggestion. +# See https://github.com/zsh-users/zsh-autosuggestions/issues/364 +if is-at-least 5.0.8; then + typeset -g ZSH_AUTOSUGGEST_USE_ASYNC= +fi + +# Start the autosuggestion widgets on the next precmd +add-zsh-hook precmd _zsh_autosuggest_start diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/completion.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/completion.zsh new file mode 100644 index 0000000..e2d114c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/completion.zsh @@ -0,0 +1,137 @@ + +#--------------------------------------------------------------------# +# Completion Suggestion Strategy # +#--------------------------------------------------------------------# +# Fetches a suggestion from the completion engine +# + +_zsh_autosuggest_capture_postcompletion() { + # Always insert the first completion into the buffer + compstate[insert]=1 + + # Don't list completions + unset 'compstate[list]' +} + +_zsh_autosuggest_capture_completion_widget() { + # Add a post-completion hook to be called after all completions have been + # gathered. The hook can modify compstate to affect what is done with the + # gathered completions. + local -a +h comppostfuncs + comppostfuncs=(_zsh_autosuggest_capture_postcompletion) + + # Only capture completions at the end of the buffer + CURSOR=$#BUFFER + + # Run the original widget wrapping `.complete-word` so we don't + # recursively try to fetch suggestions, since our pty is forked + # after autosuggestions is initialized. + zle -- ${(k)widgets[(r)completion:.complete-word:_main_complete]} + + if is-at-least 5.0.3; then + # Don't do any cr/lf transformations. We need to do this immediately before + # output because if we do it in setup, onlcr will be re-enabled when we enter + # vared in the async code path. There is a bug in zpty module in older versions + # where the tty is not properly attached to the pty slave, resulting in stty + # getting stopped with a SIGTTOU. See zsh-workers thread 31660 and upstream + # commit f75904a38 + stty -onlcr -ocrnl -F /dev/tty + fi + + # The completion has been added, print the buffer as the suggestion + echo -nE - $'\0'$BUFFER$'\0' +} + +zle -N autosuggest-capture-completion _zsh_autosuggest_capture_completion_widget + +_zsh_autosuggest_capture_setup() { + # There is a bug in zpty module in older zsh versions by which a + # zpty that exits will kill all zpty processes that were forked + # before it. Here we set up a zsh exit hook to SIGKILL the zpty + # process immediately, before it has a chance to kill any other + # zpty processes. + if ! is-at-least 5.4; then + zshexit() { + # The zsh builtin `kill` fails sometimes in older versions + # https://unix.stackexchange.com/a/477647/156673 + kill -KILL $$ 2>&- || command kill -KILL $$ + + # Block for long enough for the signal to come through + sleep 1 + } + fi + + # Try to avoid any suggestions that wouldn't match the prefix + zstyle ':completion:*' matcher-list '' + zstyle ':completion:*' path-completion false + zstyle ':completion:*' max-errors 0 not-numeric + + bindkey '^I' autosuggest-capture-completion +} + +_zsh_autosuggest_capture_completion_sync() { + _zsh_autosuggest_capture_setup + + zle autosuggest-capture-completion +} + +_zsh_autosuggest_capture_completion_async() { + _zsh_autosuggest_capture_setup + + zmodload zsh/parameter 2>/dev/null || return # For `$functions` + + # Make vared completion work as if for a normal command line + # https://stackoverflow.com/a/7057118/154703 + autoload +X _complete + functions[_original_complete]=$functions[_complete] + function _complete() { + unset 'compstate[vared]' + _original_complete "$@" + } + + # Open zle with buffer set so we can capture completions for it + vared 1 +} + +_zsh_autosuggest_strategy_completion() { + # Reset options to defaults and enable LOCAL_OPTIONS + emulate -L zsh + + # Enable extended glob for completion ignore pattern + setopt EXTENDED_GLOB + + typeset -g suggestion + local line REPLY + + # Exit if we don't have completions + whence compdef >/dev/null || return + + # Exit if we don't have zpty + zmodload zsh/zpty 2>/dev/null || return + + # Exit if our search string matches the ignore pattern + [[ -n "$ZSH_AUTOSUGGEST_COMPLETION_IGNORE" ]] && [[ "$1" == $~ZSH_AUTOSUGGEST_COMPLETION_IGNORE ]] && return + + # Zle will be inactive if we are in async mode + if zle; then + zpty $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME _zsh_autosuggest_capture_completion_sync + else + zpty $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME _zsh_autosuggest_capture_completion_async "\$1" + zpty -w $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME $'\t' + fi + + { + # The completion result is surrounded by null bytes, so read the + # content between the first two null bytes. + zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0' + + # Extract the suggestion from between the null bytes. On older + # versions of zsh (older than 5.3), we sometimes get extra bytes after + # the second null byte, so trim those off the end. + # See http://www.zsh.org/mla/workers/2015/msg03290.html + suggestion="${${(@0)line}[2]}" + } always { + # Destroy the pty + zpty -d $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME + } +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/history.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/history.zsh new file mode 100644 index 0000000..0672a13 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/history.zsh @@ -0,0 +1,32 @@ + +#--------------------------------------------------------------------# +# History Suggestion Strategy # +#--------------------------------------------------------------------# +# Suggests the most recent history item that matches the given +# prefix. +# + +_zsh_autosuggest_strategy_history() { + # Reset options to defaults and enable LOCAL_OPTIONS + emulate -L zsh + + # Enable globbing flags so that we can use (#m) and (x~y) glob operator + setopt EXTENDED_GLOB + + # Escape backslashes and all of the glob operators so we can use + # this string as a pattern to search the $history associative array. + # - (#m) globbing flag enables setting references for match data + # TODO: Use (b) flag when we can drop support for zsh older than v5.0.8 + local prefix="${1//(#m)[\\*?[\]<>()|^~#]/\\$MATCH}" + + # Get the history items that match the prefix, excluding those that match + # the ignore pattern + local pattern="$prefix*" + if [[ -n $ZSH_AUTOSUGGEST_HISTORY_IGNORE ]]; then + pattern="($pattern)~($ZSH_AUTOSUGGEST_HISTORY_IGNORE)" + fi + + # Give the first history item matching the pattern as the suggestion + # - (r) subscript flag makes the pattern match on values + typeset -g suggestion="${history[(r)$pattern]}" +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/match_prev_cmd.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/match_prev_cmd.zsh new file mode 100644 index 0000000..b709783 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/strategies/match_prev_cmd.zsh @@ -0,0 +1,66 @@ + +#--------------------------------------------------------------------# +# Match Previous Command Suggestion Strategy # +#--------------------------------------------------------------------# +# Suggests the most recent history item that matches the given +# prefix and whose preceding history item also matches the most +# recently executed command. +# +# For example, suppose your history has the following entries: +# - pwd +# - ls foo +# - ls bar +# - pwd +# +# Given the history list above, when you type 'ls', the suggestion +# will be 'ls foo' rather than 'ls bar' because your most recently +# executed command (pwd) was previously followed by 'ls foo'. +# +# Note that this strategy won't work as expected with ZSH options that don't +# preserve the history order such as `HIST_IGNORE_ALL_DUPS` or +# `HIST_EXPIRE_DUPS_FIRST`. + +_zsh_autosuggest_strategy_match_prev_cmd() { + # Reset options to defaults and enable LOCAL_OPTIONS + emulate -L zsh + + # Enable globbing flags so that we can use (#m) and (x~y) glob operator + setopt EXTENDED_GLOB + + # TODO: Use (b) flag when we can drop support for zsh older than v5.0.8 + local prefix="${1//(#m)[\\*?[\]<>()|^~#]/\\$MATCH}" + + # Get the history items that match the prefix, excluding those that match + # the ignore pattern + local pattern="$prefix*" + if [[ -n $ZSH_AUTOSUGGEST_HISTORY_IGNORE ]]; then + pattern="($pattern)~($ZSH_AUTOSUGGEST_HISTORY_IGNORE)" + fi + + # Get all history event numbers that correspond to history + # entries that match the pattern + local history_match_keys + history_match_keys=(${(k)history[(R)$~pattern]}) + + # By default we use the first history number (most recent history entry) + local histkey="${history_match_keys[1]}" + + # Get the previously executed command + local prev_cmd="$(_zsh_autosuggest_escape_command "${history[$((HISTCMD-1))]}")" + + # Iterate up to the first 200 history event numbers that match $prefix + for key in "${(@)history_match_keys[1,200]}"; do + # Stop if we ran out of history + [[ $key -gt 1 ]] || break + + # See if the history entry preceding the suggestion matches the + # previous command, and use it if it does + if [[ "${history[$((key - 1))]}" == "$prev_cmd" ]]; then + histkey="$key" + break + fi + done + + # Give back the matched history entry + typeset -g suggestion="$history[$histkey]" +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/util.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/util.zsh new file mode 100644 index 0000000..1f55d36 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/util.zsh @@ -0,0 +1,11 @@ + +#--------------------------------------------------------------------# +# Utility Functions # +#--------------------------------------------------------------------# + +_zsh_autosuggest_escape_command() { + setopt localoptions EXTENDED_GLOB + + # Escape special chars in the string (requires EXTENDED_GLOB) + echo -E "${1//(#m)[\"\'\\()\[\]|*?~]/\\$MATCH}" +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/widgets.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/widgets.zsh new file mode 100644 index 0000000..7562897 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/src/widgets.zsh @@ -0,0 +1,231 @@ + +#--------------------------------------------------------------------# +# Autosuggest Widget Implementations # +#--------------------------------------------------------------------# + +# Disable suggestions +_zsh_autosuggest_disable() { + typeset -g _ZSH_AUTOSUGGEST_DISABLED + _zsh_autosuggest_clear +} + +# Enable suggestions +_zsh_autosuggest_enable() { + unset _ZSH_AUTOSUGGEST_DISABLED + + if (( $#BUFFER )); then + _zsh_autosuggest_fetch + fi +} + +# Toggle suggestions (enable/disable) +_zsh_autosuggest_toggle() { + if (( ${+_ZSH_AUTOSUGGEST_DISABLED} )); then + _zsh_autosuggest_enable + else + _zsh_autosuggest_disable + fi +} + +# Clear the suggestion +_zsh_autosuggest_clear() { + # Remove the suggestion + POSTDISPLAY= + + _zsh_autosuggest_invoke_original_widget $@ +} + +# Modify the buffer and get a new suggestion +_zsh_autosuggest_modify() { + local -i retval + + # Only available in zsh >= 5.4 + local -i KEYS_QUEUED_COUNT + + # Save the contents of the buffer/postdisplay + local orig_buffer="$BUFFER" + local orig_postdisplay="$POSTDISPLAY" + + # Clear suggestion while waiting for next one + POSTDISPLAY= + + # Original widget may modify the buffer + _zsh_autosuggest_invoke_original_widget $@ + retval=$? + + emulate -L zsh + + # Don't fetch a new suggestion if there's more input to be read immediately + if (( $PENDING > 0 || $KEYS_QUEUED_COUNT > 0 )); then + POSTDISPLAY="$orig_postdisplay" + return $retval + fi + + # Optimize if manually typing in the suggestion or if buffer hasn't changed + if [[ "$BUFFER" = "$orig_buffer"* && "$orig_postdisplay" = "${BUFFER:$#orig_buffer}"* ]]; then + POSTDISPLAY="${orig_postdisplay:$(($#BUFFER - $#orig_buffer))}" + return $retval + fi + + # Bail out if suggestions are disabled + if (( ${+_ZSH_AUTOSUGGEST_DISABLED} )); then + return $? + fi + + # Get a new suggestion if the buffer is not empty after modification + if (( $#BUFFER > 0 )); then + if [[ -z "$ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE" ]] || (( $#BUFFER <= $ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE )); then + _zsh_autosuggest_fetch + fi + fi + + return $retval +} + +# Fetch a new suggestion based on what's currently in the buffer +_zsh_autosuggest_fetch() { + if (( ${+ZSH_AUTOSUGGEST_USE_ASYNC} )); then + _zsh_autosuggest_async_request "$BUFFER" + else + local suggestion + _zsh_autosuggest_fetch_suggestion "$BUFFER" + _zsh_autosuggest_suggest "$suggestion" + fi +} + +# Offer a suggestion +_zsh_autosuggest_suggest() { + emulate -L zsh + + local suggestion="$1" + + if [[ -n "$suggestion" ]] && (( $#BUFFER )); then + POSTDISPLAY="${suggestion#$BUFFER}" + else + POSTDISPLAY= + fi +} + +# Accept the entire suggestion +_zsh_autosuggest_accept() { + local -i retval max_cursor_pos=$#BUFFER + + # When vicmd keymap is active, the cursor can't move all the way + # to the end of the buffer + if [[ "$KEYMAP" = "vicmd" ]]; then + max_cursor_pos=$((max_cursor_pos - 1)) + fi + + # If we're not in a valid state to accept a suggestion, just run the + # original widget and bail out + if (( $CURSOR != $max_cursor_pos || !$#POSTDISPLAY )); then + _zsh_autosuggest_invoke_original_widget $@ + return + fi + + # Only accept if the cursor is at the end of the buffer + # Add the suggestion to the buffer + BUFFER="$BUFFER$POSTDISPLAY" + + # Remove the suggestion + POSTDISPLAY= + + # Run the original widget before manually moving the cursor so that the + # cursor movement doesn't make the widget do something unexpected + _zsh_autosuggest_invoke_original_widget $@ + retval=$? + + # Move the cursor to the end of the buffer + if [[ "$KEYMAP" = "vicmd" ]]; then + CURSOR=$(($#BUFFER - 1)) + else + CURSOR=$#BUFFER + fi + + return $retval +} + +# Accept the entire suggestion and execute it +_zsh_autosuggest_execute() { + # Add the suggestion to the buffer + BUFFER="$BUFFER$POSTDISPLAY" + + # Remove the suggestion + POSTDISPLAY= + + # Call the original `accept-line` to handle syntax highlighting or + # other potential custom behavior + _zsh_autosuggest_invoke_original_widget "accept-line" +} + +# Partially accept the suggestion +_zsh_autosuggest_partial_accept() { + local -i retval cursor_loc + + # Save the contents of the buffer so we can restore later if needed + local original_buffer="$BUFFER" + + # Temporarily accept the suggestion. + BUFFER="$BUFFER$POSTDISPLAY" + + # Original widget moves the cursor + _zsh_autosuggest_invoke_original_widget $@ + retval=$? + + # Normalize cursor location across vi/emacs modes + cursor_loc=$CURSOR + if [[ "$KEYMAP" = "vicmd" ]]; then + cursor_loc=$((cursor_loc + 1)) + fi + + # If we've moved past the end of the original buffer + if (( $cursor_loc > $#original_buffer )); then + # Set POSTDISPLAY to text right of the cursor + POSTDISPLAY="${BUFFER[$(($cursor_loc + 1)),$#BUFFER]}" + + # Clip the buffer at the cursor + BUFFER="${BUFFER[1,$cursor_loc]}" + else + # Restore the original buffer + BUFFER="$original_buffer" + fi + + return $retval +} + +() { + typeset -ga _ZSH_AUTOSUGGEST_BUILTIN_ACTIONS + + _ZSH_AUTOSUGGEST_BUILTIN_ACTIONS=( + clear + fetch + suggest + accept + execute + enable + disable + toggle + ) + + local action + for action in $_ZSH_AUTOSUGGEST_BUILTIN_ACTIONS modify partial_accept; do + eval "_zsh_autosuggest_widget_$action() { + local -i retval + + _zsh_autosuggest_highlight_reset + + _zsh_autosuggest_$action \$@ + retval=\$? + + _zsh_autosuggest_highlight_apply + + zle -R + + return \$retval + }" + done + + for action in $_ZSH_AUTOSUGGEST_BUILTIN_ACTIONS; do + zle -N autosuggest-$action _zsh_autosuggest_widget_$action + done +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh new file mode 100644 index 0000000..16c2256 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh @@ -0,0 +1 @@ +source ${0:A:h}/zsh-autosuggestions.zsh diff --git a/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh new file mode 100644 index 0000000..e780225 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh @@ -0,0 +1,867 @@ +# Fish-like fast/unobtrusive autosuggestions for zsh. +# https://github.com/zsh-users/zsh-autosuggestions +# v0.7.1 +# Copyright (c) 2013 Thiago de Arruda +# Copyright (c) 2016-2021 Eric Freese +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +#--------------------------------------------------------------------# +# Global Configuration Variables # +#--------------------------------------------------------------------# + +# Color to use when highlighting suggestion +# Uses format of `region_highlight` +# More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets +(( ! ${+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE} )) && +typeset -g ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8' + +# Prefix to use when saving original versions of bound widgets +(( ! ${+ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX} )) && +typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig- + +# Strategies to use to fetch a suggestion +# Will try each strategy in order until a suggestion is returned +(( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && { + typeset -ga ZSH_AUTOSUGGEST_STRATEGY + ZSH_AUTOSUGGEST_STRATEGY=(history) +} + +# Widgets that clear the suggestion +(( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && { + typeset -ga ZSH_AUTOSUGGEST_CLEAR_WIDGETS + ZSH_AUTOSUGGEST_CLEAR_WIDGETS=( + history-search-forward + history-search-backward + history-beginning-search-forward + history-beginning-search-backward + history-beginning-search-forward-end + history-beginning-search-backward-end + history-substring-search-up + history-substring-search-down + up-line-or-beginning-search + down-line-or-beginning-search + up-line-or-history + down-line-or-history + accept-line + copy-earlier-word + ) +} + +# Widgets that accept the entire suggestion +(( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && { + typeset -ga ZSH_AUTOSUGGEST_ACCEPT_WIDGETS + ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=( + forward-char + end-of-line + vi-forward-char + vi-end-of-line + vi-add-eol + ) +} + +# Widgets that accept the entire suggestion and execute it +(( ! ${+ZSH_AUTOSUGGEST_EXECUTE_WIDGETS} )) && { + typeset -ga ZSH_AUTOSUGGEST_EXECUTE_WIDGETS + ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=( + ) +} + +# Widgets that accept the suggestion as far as the cursor moves +(( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && { + typeset -ga ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS + ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=( + forward-word + emacs-forward-word + vi-forward-word + vi-forward-word-end + vi-forward-blank-word + vi-forward-blank-word-end + vi-find-next-char + vi-find-next-char-skip + ) +} + +# Widgets that should be ignored (globbing supported but must be escaped) +(( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && { + typeset -ga ZSH_AUTOSUGGEST_IGNORE_WIDGETS + ZSH_AUTOSUGGEST_IGNORE_WIDGETS=( + orig-\* + beep + run-help + set-local-history + which-command + yank + yank-pop + zle-\* + ) +} + +# Pty name for capturing completions for completion suggestion strategy +(( ! ${+ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME} )) && +typeset -g ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME=zsh_autosuggest_completion_pty + +#--------------------------------------------------------------------# +# Utility Functions # +#--------------------------------------------------------------------# + +_zsh_autosuggest_escape_command() { + setopt localoptions EXTENDED_GLOB + + # Escape special chars in the string (requires EXTENDED_GLOB) + echo -E "${1//(#m)[\"\'\\()\[\]|*?~]/\\$MATCH}" +} + +#--------------------------------------------------------------------# +# Widget Helpers # +#--------------------------------------------------------------------# + +_zsh_autosuggest_incr_bind_count() { + typeset -gi bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]+1)) + _ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=$bind_count +} + +# Bind a single widget to an autosuggest widget, saving a reference to the original widget +_zsh_autosuggest_bind_widget() { + typeset -gA _ZSH_AUTOSUGGEST_BIND_COUNTS + + local widget=$1 + local autosuggest_action=$2 + local prefix=$ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX + + local -i bind_count + + # Save a reference to the original widget + case $widgets[$widget] in + # Already bound + user:_zsh_autosuggest_(bound|orig)_*) + bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$widget])) + ;; + + # User-defined widget + user:*) + _zsh_autosuggest_incr_bind_count $widget + zle -N $prefix$bind_count-$widget ${widgets[$widget]#*:} + ;; + + # Built-in widget + builtin) + _zsh_autosuggest_incr_bind_count $widget + eval "_zsh_autosuggest_orig_${(q)widget}() { zle .${(q)widget} }" + zle -N $prefix$bind_count-$widget _zsh_autosuggest_orig_$widget + ;; + + # Completion widget + completion:*) + _zsh_autosuggest_incr_bind_count $widget + eval "zle -C $prefix$bind_count-${(q)widget} ${${(s.:.)widgets[$widget]}[2,3]}" + ;; + esac + + # Pass the original widget's name explicitly into the autosuggest + # function. Use this passed in widget name to call the original + # widget instead of relying on the $WIDGET variable being set + # correctly. $WIDGET cannot be trusted because other plugins call + # zle without the `-w` flag (e.g. `zle self-insert` instead of + # `zle self-insert -w`). + eval "_zsh_autosuggest_bound_${bind_count}_${(q)widget}() { + _zsh_autosuggest_widget_$autosuggest_action $prefix$bind_count-${(q)widget} \$@ + }" + + # Create the bound widget + zle -N -- $widget _zsh_autosuggest_bound_${bind_count}_$widget +} + +# Map all configured widgets to the right autosuggest widgets +_zsh_autosuggest_bind_widgets() { + emulate -L zsh + + local widget + local ignore_widgets + + ignore_widgets=( + .\* + _\* + ${_ZSH_AUTOSUGGEST_BUILTIN_ACTIONS/#/autosuggest-} + $ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX\* + $ZSH_AUTOSUGGEST_IGNORE_WIDGETS + ) + + # Find every widget we might want to bind and bind it appropriately + for widget in ${${(f)"$(builtin zle -la)"}:#${(j:|:)~ignore_widgets}}; do + if [[ -n ${ZSH_AUTOSUGGEST_CLEAR_WIDGETS[(r)$widget]} ]]; then + _zsh_autosuggest_bind_widget $widget clear + elif [[ -n ${ZSH_AUTOSUGGEST_ACCEPT_WIDGETS[(r)$widget]} ]]; then + _zsh_autosuggest_bind_widget $widget accept + elif [[ -n ${ZSH_AUTOSUGGEST_EXECUTE_WIDGETS[(r)$widget]} ]]; then + _zsh_autosuggest_bind_widget $widget execute + elif [[ -n ${ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS[(r)$widget]} ]]; then + _zsh_autosuggest_bind_widget $widget partial_accept + else + # Assume any unspecified widget might modify the buffer + _zsh_autosuggest_bind_widget $widget modify + fi + done +} + +# Given the name of an original widget and args, invoke it, if it exists +_zsh_autosuggest_invoke_original_widget() { + # Do nothing unless called with at least one arg + (( $# )) || return 0 + + local original_widget_name="$1" + + shift + + if (( ${+widgets[$original_widget_name]} )); then + zle $original_widget_name -- $@ + fi +} + +#--------------------------------------------------------------------# +# Highlighting # +#--------------------------------------------------------------------# + +# If there was a highlight, remove it +_zsh_autosuggest_highlight_reset() { + typeset -g _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT + + if [[ -n "$_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT" ]]; then + region_highlight=("${(@)region_highlight:#$_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT}") + unset _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT + fi +} + +# If there's a suggestion, highlight it +_zsh_autosuggest_highlight_apply() { + typeset -g _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT + + if (( $#POSTDISPLAY )); then + typeset -g _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT="$#BUFFER $(($#BUFFER + $#POSTDISPLAY)) $ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE" + region_highlight+=("$_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT") + else + unset _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT + fi +} + +#--------------------------------------------------------------------# +# Autosuggest Widget Implementations # +#--------------------------------------------------------------------# + +# Disable suggestions +_zsh_autosuggest_disable() { + typeset -g _ZSH_AUTOSUGGEST_DISABLED + _zsh_autosuggest_clear +} + +# Enable suggestions +_zsh_autosuggest_enable() { + unset _ZSH_AUTOSUGGEST_DISABLED + + if (( $#BUFFER )); then + _zsh_autosuggest_fetch + fi +} + +# Toggle suggestions (enable/disable) +_zsh_autosuggest_toggle() { + if (( ${+_ZSH_AUTOSUGGEST_DISABLED} )); then + _zsh_autosuggest_enable + else + _zsh_autosuggest_disable + fi +} + +# Clear the suggestion +_zsh_autosuggest_clear() { + # Remove the suggestion + POSTDISPLAY= + + _zsh_autosuggest_invoke_original_widget $@ +} + +# Modify the buffer and get a new suggestion +_zsh_autosuggest_modify() { + local -i retval + + # Only available in zsh >= 5.4 + local -i KEYS_QUEUED_COUNT + + # Save the contents of the buffer/postdisplay + local orig_buffer="$BUFFER" + local orig_postdisplay="$POSTDISPLAY" + + # Clear suggestion while waiting for next one + POSTDISPLAY= + + # Original widget may modify the buffer + _zsh_autosuggest_invoke_original_widget $@ + retval=$? + + emulate -L zsh + + # Don't fetch a new suggestion if there's more input to be read immediately + if (( $PENDING > 0 || $KEYS_QUEUED_COUNT > 0 )); then + POSTDISPLAY="$orig_postdisplay" + return $retval + fi + + # Optimize if manually typing in the suggestion or if buffer hasn't changed + if [[ "$BUFFER" = "$orig_buffer"* && "$orig_postdisplay" = "${BUFFER:$#orig_buffer}"* ]]; then + POSTDISPLAY="${orig_postdisplay:$(($#BUFFER - $#orig_buffer))}" + return $retval + fi + + # Bail out if suggestions are disabled + if (( ${+_ZSH_AUTOSUGGEST_DISABLED} )); then + return $? + fi + + # Get a new suggestion if the buffer is not empty after modification + if (( $#BUFFER > 0 )); then + if [[ -z "$ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE" ]] || (( $#BUFFER <= $ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE )); then + _zsh_autosuggest_fetch + fi + fi + + return $retval +} + +# Fetch a new suggestion based on what's currently in the buffer +_zsh_autosuggest_fetch() { + if (( ${+ZSH_AUTOSUGGEST_USE_ASYNC} )); then + _zsh_autosuggest_async_request "$BUFFER" + else + local suggestion + _zsh_autosuggest_fetch_suggestion "$BUFFER" + _zsh_autosuggest_suggest "$suggestion" + fi +} + +# Offer a suggestion +_zsh_autosuggest_suggest() { + emulate -L zsh + + local suggestion="$1" + + if [[ -n "$suggestion" ]] && (( $#BUFFER )); then + POSTDISPLAY="${suggestion#$BUFFER}" + else + POSTDISPLAY= + fi +} + +# Accept the entire suggestion +_zsh_autosuggest_accept() { + local -i retval max_cursor_pos=$#BUFFER + + # When vicmd keymap is active, the cursor can't move all the way + # to the end of the buffer + if [[ "$KEYMAP" = "vicmd" ]]; then + max_cursor_pos=$((max_cursor_pos - 1)) + fi + + # If we're not in a valid state to accept a suggestion, just run the + # original widget and bail out + if (( $CURSOR != $max_cursor_pos || !$#POSTDISPLAY )); then + _zsh_autosuggest_invoke_original_widget $@ + return + fi + + # Only accept if the cursor is at the end of the buffer + # Add the suggestion to the buffer + BUFFER="$BUFFER$POSTDISPLAY" + + # Remove the suggestion + POSTDISPLAY= + + # Run the original widget before manually moving the cursor so that the + # cursor movement doesn't make the widget do something unexpected + _zsh_autosuggest_invoke_original_widget $@ + retval=$? + + # Move the cursor to the end of the buffer + if [[ "$KEYMAP" = "vicmd" ]]; then + CURSOR=$(($#BUFFER - 1)) + else + CURSOR=$#BUFFER + fi + + return $retval +} + +# Accept the entire suggestion and execute it +_zsh_autosuggest_execute() { + # Add the suggestion to the buffer + BUFFER="$BUFFER$POSTDISPLAY" + + # Remove the suggestion + POSTDISPLAY= + + # Call the original `accept-line` to handle syntax highlighting or + # other potential custom behavior + _zsh_autosuggest_invoke_original_widget "accept-line" +} + +# Partially accept the suggestion +_zsh_autosuggest_partial_accept() { + local -i retval cursor_loc + + # Save the contents of the buffer so we can restore later if needed + local original_buffer="$BUFFER" + + # Temporarily accept the suggestion. + BUFFER="$BUFFER$POSTDISPLAY" + + # Original widget moves the cursor + _zsh_autosuggest_invoke_original_widget $@ + retval=$? + + # Normalize cursor location across vi/emacs modes + cursor_loc=$CURSOR + if [[ "$KEYMAP" = "vicmd" ]]; then + cursor_loc=$((cursor_loc + 1)) + fi + + # If we've moved past the end of the original buffer + if (( $cursor_loc > $#original_buffer )); then + # Set POSTDISPLAY to text right of the cursor + POSTDISPLAY="${BUFFER[$(($cursor_loc + 1)),$#BUFFER]}" + + # Clip the buffer at the cursor + BUFFER="${BUFFER[1,$cursor_loc]}" + else + # Restore the original buffer + BUFFER="$original_buffer" + fi + + return $retval +} + +() { + typeset -ga _ZSH_AUTOSUGGEST_BUILTIN_ACTIONS + + _ZSH_AUTOSUGGEST_BUILTIN_ACTIONS=( + clear + fetch + suggest + accept + execute + enable + disable + toggle + ) + + local action + for action in $_ZSH_AUTOSUGGEST_BUILTIN_ACTIONS modify partial_accept; do + eval "_zsh_autosuggest_widget_$action() { + local -i retval + + _zsh_autosuggest_highlight_reset + + _zsh_autosuggest_$action \$@ + retval=\$? + + _zsh_autosuggest_highlight_apply + + zle -R + + return \$retval + }" + done + + for action in $_ZSH_AUTOSUGGEST_BUILTIN_ACTIONS; do + zle -N autosuggest-$action _zsh_autosuggest_widget_$action + done +} + +#--------------------------------------------------------------------# +# Completion Suggestion Strategy # +#--------------------------------------------------------------------# +# Fetches a suggestion from the completion engine +# + +_zsh_autosuggest_capture_postcompletion() { + # Always insert the first completion into the buffer + compstate[insert]=1 + + # Don't list completions + unset 'compstate[list]' +} + +_zsh_autosuggest_capture_completion_widget() { + # Add a post-completion hook to be called after all completions have been + # gathered. The hook can modify compstate to affect what is done with the + # gathered completions. + local -a +h comppostfuncs + comppostfuncs=(_zsh_autosuggest_capture_postcompletion) + + # Only capture completions at the end of the buffer + CURSOR=$#BUFFER + + # Run the original widget wrapping `.complete-word` so we don't + # recursively try to fetch suggestions, since our pty is forked + # after autosuggestions is initialized. + zle -- ${(k)widgets[(r)completion:.complete-word:_main_complete]} + + if is-at-least 5.0.3; then + # Don't do any cr/lf transformations. We need to do this immediately before + # output because if we do it in setup, onlcr will be re-enabled when we enter + # vared in the async code path. There is a bug in zpty module in older versions + # where the tty is not properly attached to the pty slave, resulting in stty + # getting stopped with a SIGTTOU. See zsh-workers thread 31660 and upstream + # commit f75904a38 + stty -onlcr -ocrnl -F /dev/tty + fi + + # The completion has been added, print the buffer as the suggestion + echo -nE - $'\0'$BUFFER$'\0' +} + +zle -N autosuggest-capture-completion _zsh_autosuggest_capture_completion_widget + +_zsh_autosuggest_capture_setup() { + # There is a bug in zpty module in older zsh versions by which a + # zpty that exits will kill all zpty processes that were forked + # before it. Here we set up a zsh exit hook to SIGKILL the zpty + # process immediately, before it has a chance to kill any other + # zpty processes. + if ! is-at-least 5.4; then + zshexit() { + # The zsh builtin `kill` fails sometimes in older versions + # https://unix.stackexchange.com/a/477647/156673 + kill -KILL $$ 2>&- || command kill -KILL $$ + + # Block for long enough for the signal to come through + sleep 1 + } + fi + + # Try to avoid any suggestions that wouldn't match the prefix + zstyle ':completion:*' matcher-list '' + zstyle ':completion:*' path-completion false + zstyle ':completion:*' max-errors 0 not-numeric + + bindkey '^I' autosuggest-capture-completion +} + +_zsh_autosuggest_capture_completion_sync() { + _zsh_autosuggest_capture_setup + + zle autosuggest-capture-completion +} + +_zsh_autosuggest_capture_completion_async() { + _zsh_autosuggest_capture_setup + + zmodload zsh/parameter 2>/dev/null || return # For `$functions` + + # Make vared completion work as if for a normal command line + # https://stackoverflow.com/a/7057118/154703 + autoload +X _complete + functions[_original_complete]=$functions[_complete] + function _complete() { + unset 'compstate[vared]' + _original_complete "$@" + } + + # Open zle with buffer set so we can capture completions for it + vared 1 +} + +_zsh_autosuggest_strategy_completion() { + # Reset options to defaults and enable LOCAL_OPTIONS + emulate -L zsh + + # Enable extended glob for completion ignore pattern + setopt EXTENDED_GLOB + + typeset -g suggestion + local line REPLY + + # Exit if we don't have completions + whence compdef >/dev/null || return + + # Exit if we don't have zpty + zmodload zsh/zpty 2>/dev/null || return + + # Exit if our search string matches the ignore pattern + [[ -n "$ZSH_AUTOSUGGEST_COMPLETION_IGNORE" ]] && [[ "$1" == $~ZSH_AUTOSUGGEST_COMPLETION_IGNORE ]] && return + + # Zle will be inactive if we are in async mode + if zle; then + zpty $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME _zsh_autosuggest_capture_completion_sync + else + zpty $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME _zsh_autosuggest_capture_completion_async "\$1" + zpty -w $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME $'\t' + fi + + { + # The completion result is surrounded by null bytes, so read the + # content between the first two null bytes. + zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0' + + # Extract the suggestion from between the null bytes. On older + # versions of zsh (older than 5.3), we sometimes get extra bytes after + # the second null byte, so trim those off the end. + # See http://www.zsh.org/mla/workers/2015/msg03290.html + suggestion="${${(@0)line}[2]}" + } always { + # Destroy the pty + zpty -d $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME + } +} + +#--------------------------------------------------------------------# +# History Suggestion Strategy # +#--------------------------------------------------------------------# +# Suggests the most recent history item that matches the given +# prefix. +# + +_zsh_autosuggest_strategy_history() { + # Reset options to defaults and enable LOCAL_OPTIONS + emulate -L zsh + + # Enable globbing flags so that we can use (#m) and (x~y) glob operator + setopt EXTENDED_GLOB + + # Escape backslashes and all of the glob operators so we can use + # this string as a pattern to search the $history associative array. + # - (#m) globbing flag enables setting references for match data + # TODO: Use (b) flag when we can drop support for zsh older than v5.0.8 + local prefix="${1//(#m)[\\*?[\]<>()|^~#]/\\$MATCH}" + + # Get the history items that match the prefix, excluding those that match + # the ignore pattern + local pattern="$prefix*" + if [[ -n $ZSH_AUTOSUGGEST_HISTORY_IGNORE ]]; then + pattern="($pattern)~($ZSH_AUTOSUGGEST_HISTORY_IGNORE)" + fi + + # Give the first history item matching the pattern as the suggestion + # - (r) subscript flag makes the pattern match on values + typeset -g suggestion="${history[(r)$pattern]}" +} + +#--------------------------------------------------------------------# +# Match Previous Command Suggestion Strategy # +#--------------------------------------------------------------------# +# Suggests the most recent history item that matches the given +# prefix and whose preceding history item also matches the most +# recently executed command. +# +# For example, suppose your history has the following entries: +# - pwd +# - ls foo +# - ls bar +# - pwd +# +# Given the history list above, when you type 'ls', the suggestion +# will be 'ls foo' rather than 'ls bar' because your most recently +# executed command (pwd) was previously followed by 'ls foo'. +# +# Note that this strategy won't work as expected with ZSH options that don't +# preserve the history order such as `HIST_IGNORE_ALL_DUPS` or +# `HIST_EXPIRE_DUPS_FIRST`. + +_zsh_autosuggest_strategy_match_prev_cmd() { + # Reset options to defaults and enable LOCAL_OPTIONS + emulate -L zsh + + # Enable globbing flags so that we can use (#m) and (x~y) glob operator + setopt EXTENDED_GLOB + + # TODO: Use (b) flag when we can drop support for zsh older than v5.0.8 + local prefix="${1//(#m)[\\*?[\]<>()|^~#]/\\$MATCH}" + + # Get the history items that match the prefix, excluding those that match + # the ignore pattern + local pattern="$prefix*" + if [[ -n $ZSH_AUTOSUGGEST_HISTORY_IGNORE ]]; then + pattern="($pattern)~($ZSH_AUTOSUGGEST_HISTORY_IGNORE)" + fi + + # Get all history event numbers that correspond to history + # entries that match the pattern + local history_match_keys + history_match_keys=(${(k)history[(R)$~pattern]}) + + # By default we use the first history number (most recent history entry) + local histkey="${history_match_keys[1]}" + + # Get the previously executed command + local prev_cmd="$(_zsh_autosuggest_escape_command "${history[$((HISTCMD-1))]}")" + + # Iterate up to the first 200 history event numbers that match $prefix + for key in "${(@)history_match_keys[1,200]}"; do + # Stop if we ran out of history + [[ $key -gt 1 ]] || break + + # See if the history entry preceding the suggestion matches the + # previous command, and use it if it does + if [[ "${history[$((key - 1))]}" == "$prev_cmd" ]]; then + histkey="$key" + break + fi + done + + # Give back the matched history entry + typeset -g suggestion="$history[$histkey]" +} + +#--------------------------------------------------------------------# +# Fetch Suggestion # +#--------------------------------------------------------------------# +# Loops through all specified strategies and returns a suggestion +# from the first strategy to provide one. +# + +_zsh_autosuggest_fetch_suggestion() { + typeset -g suggestion + local -a strategies + local strategy + + # Ensure we are working with an array + strategies=(${=ZSH_AUTOSUGGEST_STRATEGY}) + + for strategy in $strategies; do + # Try to get a suggestion from this strategy + _zsh_autosuggest_strategy_$strategy "$1" + + # Ensure the suggestion matches the prefix + [[ "$suggestion" != "$1"* ]] && unset suggestion + + # Break once we've found a valid suggestion + [[ -n "$suggestion" ]] && break + done +} + +#--------------------------------------------------------------------# +# Async # +#--------------------------------------------------------------------# + +_zsh_autosuggest_async_request() { + zmodload zsh/system 2>/dev/null # For `$sysparams` + + typeset -g _ZSH_AUTOSUGGEST_ASYNC_FD _ZSH_AUTOSUGGEST_CHILD_PID + + # If we've got a pending request, cancel it + if [[ -n "$_ZSH_AUTOSUGGEST_ASYNC_FD" ]] && { true <&$_ZSH_AUTOSUGGEST_ASYNC_FD } 2>/dev/null; then + # Close the file descriptor and remove the handler + builtin exec {_ZSH_AUTOSUGGEST_ASYNC_FD}<&- + zle -F $_ZSH_AUTOSUGGEST_ASYNC_FD + + # We won't know the pid unless the user has zsh/system module installed + if [[ -n "$_ZSH_AUTOSUGGEST_CHILD_PID" ]]; then + # Zsh will make a new process group for the child process only if job + # control is enabled (MONITOR option) + if [[ -o MONITOR ]]; then + # Send the signal to the process group to kill any processes that may + # have been forked by the suggestion strategy + kill -TERM -$_ZSH_AUTOSUGGEST_CHILD_PID 2>/dev/null + else + # Kill just the child process since it wasn't placed in a new process + # group. If the suggestion strategy forked any child processes they may + # be orphaned and left behind. + kill -TERM $_ZSH_AUTOSUGGEST_CHILD_PID 2>/dev/null + fi + fi + fi + + # Fork a process to fetch a suggestion and open a pipe to read from it + builtin exec {_ZSH_AUTOSUGGEST_ASYNC_FD}< <( + # Tell parent process our pid + echo $sysparams[pid] + + # Fetch and print the suggestion + local suggestion + _zsh_autosuggest_fetch_suggestion "$1" + echo -nE "$suggestion" + ) + + # There's a weird bug here where ^C stops working unless we force a fork + # See https://github.com/zsh-users/zsh-autosuggestions/issues/364 + autoload -Uz is-at-least + is-at-least 5.8 || command true + + # Read the pid from the child process + read _ZSH_AUTOSUGGEST_CHILD_PID <&$_ZSH_AUTOSUGGEST_ASYNC_FD + + # When the fd is readable, call the response handler + zle -F "$_ZSH_AUTOSUGGEST_ASYNC_FD" _zsh_autosuggest_async_response +} + +# Called when new data is ready to be read from the pipe +# First arg will be fd ready for reading +# Second arg will be passed in case of error +_zsh_autosuggest_async_response() { + emulate -L zsh + + local suggestion + + if [[ -z "$2" || "$2" == "hup" ]]; then + # Read everything from the fd and give it as a suggestion + IFS='' read -rd '' -u $1 suggestion + zle autosuggest-suggest -- "$suggestion" + + # Close the fd + builtin exec {1}<&- + fi + + # Always remove the handler + zle -F "$1" + _ZSH_AUTOSUGGEST_ASYNC_FD= +} + +#--------------------------------------------------------------------# +# Start # +#--------------------------------------------------------------------# + +# Start the autosuggestion widgets +_zsh_autosuggest_start() { + # By default we re-bind widgets on every precmd to ensure we wrap other + # wrappers. Specifically, highlighting breaks if our widgets are wrapped by + # zsh-syntax-highlighting widgets. This also allows modifications to the + # widget list variables to take effect on the next precmd. However this has + # a decent performance hit, so users can set ZSH_AUTOSUGGEST_MANUAL_REBIND + # to disable the automatic re-binding. + if (( ${+ZSH_AUTOSUGGEST_MANUAL_REBIND} )); then + add-zsh-hook -d precmd _zsh_autosuggest_start + fi + + _zsh_autosuggest_bind_widgets +} + +# Mark for auto-loading the functions that we use +autoload -Uz add-zsh-hook is-at-least + +# Automatically enable asynchronous mode in newer versions of zsh. Disable for +# older versions because there is a bug when using async mode where ^C does not +# work immediately after fetching a suggestion. +# See https://github.com/zsh-users/zsh-autosuggestions/issues/364 +if is-at-least 5.0.8; then + typeset -g ZSH_AUTOSUGGEST_USE_ASYNC= +fi + +# Start the autosuggestion widgets on the next precmd +add-zsh-hook precmd _zsh_autosuggest_start diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.editorconfig b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.editorconfig new file mode 100644 index 0000000..cda541d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.editorconfig @@ -0,0 +1,15 @@ +# Top-most editorconfig file + +root = true + +[*] +end_of_line = lf +tab_width = 2 +indent_size = 2 +indent_style = space + +[Makefile] +tab_width = 8 +indent_size = 8 +indent_style = tab + diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.gitattributes b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.gitattributes new file mode 100644 index 0000000..715e624 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.gitattributes @@ -0,0 +1 @@ +.revision-hash export-subst diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.github/workflows/test.yml b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.github/workflows/test.yml new file mode 100644 index 0000000..cd50b8a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.github/workflows/test.yml @@ -0,0 +1,75 @@ +--- +name: Tests +on: + push: + paths-ignore: + - '**.md' + - '**.png' + pull_request: + paths-ignore: + - '**.md' + - '**.png' + schedule: + - cron: '29 7 * * 1' + +jobs: + test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + version: + - master + - 5.9 + - 5.8.1 + - 5.8 + - 5.7.1 + - 5.7 + - 5.6.2 + - 5.6.1 + - 5.6 + - 5.5.1 + - 5.5 + - 5.4.2 + - 5.4.1 + - 5.4 + - 5.3.1 + - 5.3 + - 5.2 + - 5.1.1 + - 5.1 + - 5.0.8 + - 5.0.7 + - 5.0.6 + - 5.0.5 + - 5.0.4 + - 5.0.3 + - 5.0.2 + - 5.0.1 + - 5.0.0 + - 4.3.17 + - 4.3.16 + - 4.3.15 + - 4.3.14 + - 4.3.13 + - 4.3.12 + - 4.3.11 + container: + image: ghcr.io/zsh-users/zsh:${{ matrix.version }} + steps: + - uses: actions/checkout@v4 + - run: install_packages bsdmainutils make procps + - run: make test + + notify: + runs-on: ubuntu-latest + needs: test + if: failure() && (github.repository_owner == 'zsh-users') + steps: + - + name: Notify IRC + uses: Gottox/irc-message-action@v2 + with: + channel: '#zsh-syntax-highlighting' + nickname: zsyh-gh-bot + message: '${{ github.ref }} failed tests: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.gitignore b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.gitignore new file mode 100644 index 0000000..18fa5ec --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.gitignore @@ -0,0 +1,3 @@ +*.zwc* +.pc/ +docs/all.md diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.revision-hash b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.revision-hash new file mode 100644 index 0000000..6828f88 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.revision-hash @@ -0,0 +1 @@ +$Format:%H$ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.version b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.version new file mode 100644 index 0000000..d182dc9 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/.version @@ -0,0 +1 @@ +0.8.1-dev diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/COPYING.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/COPYING.md new file mode 100644 index 0000000..cacbcbe --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/COPYING.md @@ -0,0 +1,23 @@ +Copyright (c) 2010-2020 zsh-syntax-highlighting contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted +provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions + and the following disclaimer. + * 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. + * Neither the name of the zsh-syntax-highlighting contributors 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. diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/HACKING.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/HACKING.md new file mode 100644 index 0000000..ddd39a4 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/HACKING.md @@ -0,0 +1,99 @@ +Hacking on zsh-syntax-highlighting itself +========================================= + +This document includes information for people working on z-sy-h itself: on the +core driver (`zsh-syntax-highlighting.zsh`), on the highlighters in the +distribution, and on the test suite. It does not target third-party +highlighter authors (although they may find it an interesting read). + +The `main` highlighter +---------------------- + +The following function `pz` is useful when working on the `main` highlighting: + +```zsh +pq() { + (( $#argv )) || return 0 + print -r -l -- ${(qqqq)argv} +} +pz() { + local arg + for arg; do + pq ${(z)arg} + done +} +``` + +It prints, for each argument, its token breakdown, similar to how the main +loop of the `main` highlighter sees it. + +Testing the `brackets` highlighter +---------------------------------- + +Since the test harness empties `ZSH_HIGHLIGHT_STYLES` and the `brackets` +highlighter interrogates `ZSH_HIGHLIGHT_STYLES` to determine how to highlight, +tests must set the `bracket-level-#` keys themselves. For example: + +```zsh +ZSH_HIGHLIGHT_STYLES[bracket-level-1]= +ZSH_HIGHLIGHT_STYLES[bracket-level-2]= + +BUFFER='echo ({x})' + +expected_region_highlight=( + "6 6 bracket-level-1" # ( + "7 7 bracket-level-2" # { + "9 9 bracket-level-2" # } + "10 10 bracket-level-1" # ) +) +``` + +Testing the `pattern` and `regexp` highlighters +----------------------------------------------- + +Because the `pattern` and `regexp` highlighters modifies `region_highlight` +directly instead of using `_zsh_highlight_add_highlight`, the test harness +cannot get the `ZSH_HIGHLIGHT_STYLES` keys. Therefore, when writing tests, use +the style itself as third word (cf. the +[documentation for `expected_region_highlight`](docs/highlighters.md)). For example: + +```zsh +ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red') + +BUFFER='rm -rf /' + +expected_region_highlight=( + "1 8 fg=white,bold,bg=red" # rm -rf / +) +``` + +Memos and commas +---------------- + +We append to `region_highlight` as follows: + + +```zsh +region_highlight+=("$start $end $spec, memo=zsh-syntax-highlighting") +``` + +That comma is required to cause zsh 5.8 and older to ignore the memo without +ignoring the `$spec`. It's a hack, but given that no further 5.8.x patch +releases are planned, it's been deemed acceptable. See issue #418 and the +cross-referenced issues. + + +Miscellany +---------- + +If you work on the driver (`zsh-syntax-highlighting.zsh`), you may find the following zstyle useful: + +```zsh +zstyle ':completion:*:*:*:*:globbed-files' ignored-patterns {'*/',}zsh-syntax-highlighting.plugin.zsh +``` + +IRC channel +----------- + +We're on #zsh-syntax-highlighting on Libera.Chat. + diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/INSTALL.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/INSTALL.md new file mode 100644 index 0000000..2e1286d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/INSTALL.md @@ -0,0 +1,169 @@ +How to install +-------------- + +### Using packages + +First, install the package: + +* Arch Linux: [community/zsh-syntax-highlighting][arch-package] / [AUR/zsh-syntax-highlighting-git][AUR-package] +* Debian: `zsh-syntax-highlighting` package [in `stretch`][debian-package] (or in [OBS repository][obs-repository]) +* Fedora: [zsh-syntax-highlighting package][fedora-package-alt] in Fedora 24+ (or in [OBS repository][obs-repository]) +* FreeBSD: `pkg install zsh-syntax-highlighting` (port name: [`shells/zsh-syntax-highlighting`][freebsd-port]) +* Gentoo: [app-shells/zsh-syntax-highlighting][gentoo-repository] +* Mac OS X / Homebrew: `brew install zsh-syntax-highlighting` ([formula][brew-package]) +* NetBSD: `pkg_add zsh-syntax-highlighting` (port name: [`shells/zsh-syntax-highlighting`][netbsd-port]) +* OpenBSD: `pkg_add zsh-syntax-highlighting` (port name: [`shells/zsh-syntax-highlighting`][openbsd-port]) +* openSUSE / SLE: `zsh-syntax-highlighting` package in [OBS repository][obs-repository] +* RHEL / CentOS / Scientific Linux: `zsh-syntax-highlighting` package in [OBS repository][obs-repository] +* Ubuntu: `zsh-syntax-highlighting` package [in Xenial][ubuntu-package] (or in [OBS repository][obs-repository]) +* Void Linux: `zsh-syntax-highlighting package` [in XBPS][void-package] + +[arch-package]: https://www.archlinux.org/packages/zsh-syntax-highlighting +[AUR-package]: https://aur.archlinux.org/packages/zsh-syntax-highlighting-git +[brew-package]: https://github.com/Homebrew/homebrew-core/blob/master/Formula/z/zsh-syntax-highlighting.rb +[debian-package]: https://packages.debian.org/zsh-syntax-highlighting +[fedora-package]: https://apps.fedoraproject.org/packages/zsh-syntax-highlighting +[fedora-package-alt]: https://bodhi.fedoraproject.org/updates/?packages=zsh-syntax-highlighting +[freebsd-port]: https://www.freshports.org/textproc/zsh-syntax-highlighting/ +[gentoo-repository]: https://packages.gentoo.org/packages/app-shells/zsh-syntax-highlighting +[netbsd-port]: http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/shells/zsh-syntax-highlighting/ +[obs-repository]: https://software.opensuse.org/download.html?project=shells%3Azsh-users%3Azsh-syntax-highlighting&package=zsh-syntax-highlighting +[openbsd-port]: https://cvsweb.openbsd.org/ports/shells/zsh-syntax-highlighting/ +[ubuntu-package]: https://launchpad.net/ubuntu/+source/zsh-syntax-highlighting +[void-package]: https://github.com/void-linux/void-packages/tree/master/srcpkgs/zsh-syntax-highlighting + +See also [repology's cross-distro index](https://repology.org/metapackage/zsh-syntax-highlighting/versions) + +Second, enable zsh-syntax-highlighting by sourcing the script. Running this command on the terminal will add the source line to the end of your .zshrc: + +* On most Linux distributions (except perhaps NixOS): + + ```zsh + echo "source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc + ``` + +* NetBSD and OpenBSD: + + ```zsh + echo "source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc + ``` + +* Mac OS X / Homebrew: + + ```zsh + echo "source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc + ``` + +Then restart zsh (such as by opening a new instance of your terminal emulator). + + Alternatively, add the `source` command manually **at the end** of your `.zshrc`: + +* On most Linux distributions (except perhaps NixOS): +`source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh` +* NetBSD and OpenBSD: +`source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh` + +Then restart zsh. + +### In your ~/.zshrc + +Simply clone this repository and source the script: + +```zsh +git clone https://github.com/zsh-users/zsh-syntax-highlighting.git +echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc +``` + + Then, enable syntax highlighting in the current interactive shell: + +```zsh +source ./zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +``` + + If `git` is not installed, download and extract a snapshot of the latest + development tree from: + +``` +https://github.com/zsh-users/zsh-syntax-highlighting/archive/master.tar.gz +``` + + Note the `source` command must be **at the end** of `~/.zshrc`. + + +### With a plugin manager + +Note that `zsh-syntax-highlighting` must be the last plugin sourced. + +The zsh-syntax-highlighting authors recommend manual installation over the use +of a framework or plugin manager. + +This list is incomplete as there are too many +[frameworks / plugin managers][framework-list] to list them all here. + +[framework-list]: https://github.com/unixorn/awesome-zsh-plugins#frameworks + +#### [Antigen](https://github.com/zsh-users/antigen) + +Add `antigen bundle zsh-users/zsh-syntax-highlighting` as the last bundle in +your `.zshrc`. + +#### [Fig](https://fig.io) + +Click the `Install Plugin` button on the [Fig plugin page][fig-plugin]. + +[fig-plugin]: https://fig.io/plugins/other/zsh-syntax-highlighting + +#### [Oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) + +1. Clone this repository in oh-my-zsh's plugins directory: + + ```zsh + git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting + ``` + +2. Activate the plugin in `~/.zshrc`: + + ```zsh + plugins=( [plugins...] zsh-syntax-highlighting) + ``` + +3. Restart zsh (such as by opening a new instance of your terminal emulator). + +#### [Prezto](https://github.com/sorin-ionescu/prezto) + +Zsh-syntax-highlighting is included with Prezto. See the +[Prezto documentation][prezto-docs] to enable and configure highlighters. + +[prezto-docs]: https://github.com/sorin-ionescu/prezto/tree/master/modules/syntax-highlighting + +#### [zgen](https://github.com/tarjoilija/zgen) + +Add `zgen load zsh-users/zsh-syntax-highlighting` to the end of your `.zshrc`. + +#### [zinit](https://github.com/zdharma-continuum/zinit) + +Add `zinit light zsh-users/zsh-syntax-highlighting` to the end of your +`.zshrc`. + +#### [zplug](https://github.com/zplug/zplug) + +Add `zplug "zsh-users/zsh-syntax-highlighting", defer:2` to your `.zshrc`. + + +### System-wide installation + +Any of the above methods is suitable for a single-user installation, +which requires no special privileges. If, however, you desire to install +zsh-syntax-highlighting system-wide, you may do so by running + +```zsh +make install +``` + +and directing your users to add + +```zsh +source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +``` + +to their `.zshrc`s. diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/Makefile b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/Makefile new file mode 100644 index 0000000..bbc1d43 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/Makefile @@ -0,0 +1,64 @@ +NAME=zsh-syntax-highlighting + +INSTALL?=install -c +PREFIX?=/usr/local +SHARE_DIR?=$(DESTDIR)$(PREFIX)/share/$(NAME) +DOC_DIR?=$(DESTDIR)$(PREFIX)/share/doc/$(NAME) +ZSH?=zsh # zsh binary to run tests with + +all: + cd docs && \ + cp highlighters.md all.md && \ + printf '\n\nIndividual highlighters documentation\n=====================================' >> all.md && \ + for doc in highlighters/*.md; do printf '\n\n'; cat "$$doc"; done >> all.md + +install: all + $(INSTALL) -d $(SHARE_DIR) + $(INSTALL) -d $(DOC_DIR) + cp .version zsh-syntax-highlighting.zsh $(SHARE_DIR) + cp COPYING.md README.md changelog.md $(DOC_DIR) + sed -e '1s/ .*//' -e '/^\[build-status-[a-z]*\]: /d' < README.md > $(DOC_DIR)/README.md + if [ x"true" = x"`git rev-parse --is-inside-work-tree 2>/dev/null`" ]; then \ + git rev-parse HEAD; \ + else \ + cat .revision-hash; \ + fi > $(SHARE_DIR)/.revision-hash + : +# The [ -e ] check below is to because sh evaluates this with (the moral +# equivalent of) NONOMATCH in effect, and highlighters/*.zsh has no matches. + for dirname in highlighters highlighters/*/ ; do \ + $(INSTALL) -d $(SHARE_DIR)/"$$dirname"; \ + for fname in "$$dirname"/*.zsh ; do [ -e "$$fname" ] && cp "$$fname" $(SHARE_DIR)"/$$dirname"; done; \ + done + cp -R docs/* $(DOC_DIR) + +clean: + rm -f docs/all.md + +test: + @$(ZSH) -fc 'echo ZSH_PATCHLEVEL=$$ZSH_PATCHLEVEL' + @result=0; \ + for test in highlighters/*; do \ + if [ -d $$test/test-data ]; then \ + echo "Running test $${test##*/}"; \ + env -i QUIET=$$QUIET $${TERM:+"TERM=$$TERM"} $(ZSH) -f tests/test-highlighting.zsh "$${test##*/}"; \ + : $$(( result |= $$? )); \ + fi \ + done; \ + exit $$result + +quiet-test: + $(MAKE) test QUIET=y + +perf: + @result=0; \ + for test in highlighters/*; do \ + if [ -d $$test/test-data ]; then \ + echo "Running test $${test##*/}"; \ + $(ZSH) -f tests/test-perfs.zsh "$${test##*/}"; \ + : $$(( result |= $$? )); \ + fi \ + done; \ + exit $$result + +.PHONY: all install clean test perf diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/README.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/README.md new file mode 100644 index 0000000..4768b3d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/README.md @@ -0,0 +1,97 @@ +zsh-syntax-highlighting [![Build Status][build-status-image]][build-status] +======================= + +**[Fish shell][fish]-like syntax highlighting for [Zsh][zsh].** + +*Requirements: zsh 4.3.11+.* + +[fish]: https://fishshell.com/ +[zsh]: https://www.zsh.org/ + +This package provides syntax highlighting for the shell zsh. It enables +highlighting of commands whilst they are typed at a zsh prompt into an +interactive terminal. This helps in reviewing commands before running +them, particularly in catching syntax errors. + +Some examples: + +Before: [![Screenshot #1.1](images/before1-smaller.png)](images/before1.png) +
+After:  [![Screenshot #1.2](images/after1-smaller.png)](images/after1.png) + +Before: [![Screenshot #2.1](images/before2-smaller.png)](images/before2.png) +
+After:  [![Screenshot #2.2](images/after2-smaller.png)](images/after2.png) + +Before: [![Screenshot #3.1](images/before3-smaller.png)](images/before3.png) +
+After:  [![Screenshot #3.2](images/after3-smaller.png)](images/after3.png) + +Before: [![Screenshot #4.1](images/before4-smaller.png)](images/before4-smaller.png) +
+After:  [![Screenshot #4.2](images/after4-smaller.png)](images/after4-smaller.png) + + + +How to install +-------------- + +See [INSTALL.md](INSTALL.md). + + +FAQ +--- + +### Why must `zsh-syntax-highlighting.zsh` be sourced at the end of the `.zshrc` file? + +zsh-syntax-highlighting works by hooking into the Zsh Line Editor (ZLE) and +computing syntax highlighting for the command-line buffer as it stands at the +time z-sy-h's hook is invoked. + +In zsh 5.2 and older, +`zsh-syntax-highlighting.zsh` hooks into ZLE by wrapping ZLE widgets. It must +be sourced after all custom widgets have been created (i.e., after all `zle -N` +calls and after running `compinit`) in order to be able to wrap all of them. +Widgets created after z-sy-h is sourced will work, but will not update the +syntax highlighting. + +In zsh newer than 5.8 (not including 5.8 itself), +zsh-syntax-highlighting uses the `add-zle-hook-widget` facility to install +a `zle-line-pre-redraw` hook. Hooks are run in order of registration, +therefore, z-sy-h must be sourced (and register its hook) after anything else +that adds hooks that modify the command-line buffer. + +### Does syntax highlighting work during incremental history search? + +Highlighting the command line during an incremental history search (by default bound to +to Ctrl+R in zsh's emacs keymap) requires zsh 5.4 or newer. + +Under zsh versions older than 5.4, the zsh-default [underlining][zshzle-Character-Highlighting] +of the matched portion of the buffer remains available, but zsh-syntax-highlighting's +additional highlighting is unavailable. (Those versions of zsh do not provide +enough information to allow computing the highlighting correctly.) + +See issues [#288][i288] and [#415][i415] for details. + +[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting +[i288]: https://github.com/zsh-users/zsh-syntax-highlighting/pull/288 +[i415]: https://github.com/zsh-users/zsh-syntax-highlighting/pull/415 + +### How are new releases announced? + +There is currently no "push" announcements channel. However, the following +alternatives exist: + +- GitHub's RSS feed of releases: https://github.com/zsh-users/zsh-syntax-highlighting/releases.atom +- An anitya entry: https://release-monitoring.org/project/7552/ + + +How to tweak +------------ + +Syntax highlighting is done by pluggable highlighter scripts. See the +[documentation on highlighters](docs/highlighters.md) for details and +configuration settings. + +[build-status]: https://github.com/zsh-users/zsh-syntax-highlighting/actions +[build-status-image]: https://github.com/zsh-users/zsh-syntax-highlighting/workflows/Tests/badge.svg diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/changelog.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/changelog.md new file mode 100644 index 0000000..8ee5088 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/changelog.md @@ -0,0 +1,920 @@ +# Changes in HEAD + + +- Highlight `&>` `>&|` `>&!` `&>|` and `&>!` as redirection. + [#942] + + +# Changes in 0.8.0 + +This is a stable bugfix and feature release. Major new features and changes include: + + +## Changes fixed as part of the switch to zle-line-pre-redraw + +The changes in this section were fixed by switching to a `zle-line-pre-redraw`-based +implementation. + +Note: The new implementation will only be used on future zsh releases, +numbered 5.8.1.1 and newer, due to interoperability issues with other plugins +(issues #418 and #579). The underlying zsh feature has been available since +zsh 5.3. + +Whilst under development, the new implementation was known as the +"feature/redrawhook" topic branch. + +- Fixed: Highlighting not triggered after popping a buffer from the buffer stack + (using the `push-line` widget, default binding: `M-q`) + [#40] + +- Fixed: Invoking completion when there were no matches removed highlighting + [#90, #470] + +- Fixed: Two successive deletes followed by a yank only yanked the latest + delete, rather than both of them + [#150, #151, #160; cf. #183] + +- Presumed fixed: Completing `$(xsel)` results in an error message from `xsel`, + with pre-2017 versions of `xsel`. (For 2017 vintage and newer, see the issue + for details.) + [#154] + +- Fixed: When the standard `bracketed-paste-magic` widget is in use, pastes were slow + [#295] + +- Fixed: No way to prevent a widget from being wrapped + [#324] + +- Fixed: No highlighting while cycling menu completion + [#375] + +- Fixed: Does not coexist with the `IGNORE_EOF` option + [#377] + +- Fixed: The `undefined-key` widget was wrapped + [#421] + +- Fixed: Does not coexist with the standard `surround` family of widgets + [#520] + +- Fixed: First completed filename doesn't get `path` highlighting + [#632] + + +## Other changes + +- Add issue #712 to the previous release's changelog (hereinafter). + +- Fix highlighting when using an alias twice inside another alias + [#769, #775] + +- Remove lint warning for `env` followed by a pipe + [#797] + +- Recognize `proxychains` as a precommand + [#814, #914] + +- Honor shwordsplit when expanding parameters + [#687, #818] + +- Skip highlighting when keys are still pending in more cases + [#835] + +- Recognize `grc` as a precommand + +- Recognize `torsocks` and `torift` as precommands + [#898] + +- Recognize `cpulimit` as a precommand + [#897] + +- Recognize `ktrace` as a precommand + + +# Changes in 0.8.0-alpha1-pre-redrawhook + +## Notice about an improbable-but-not-impossible forward incompatibility + +Everyone can probably skip this section. + +The `master` branch of zsh-syntax-highlighting uses a zsh feature that has not +yet appeared in a zsh release: the `memo=` feature, added to zsh in commit +zsh-5.8-172-gdd6e702ee (after zsh 5.8, before zsh 5.9). In the unlikely event +that this zsh feature should change in an incompatible way before the next +stable zsh release, set `zsh_highlight__memo_feature=0` in your .zshrc files to +disable use of the new feature. + +z-sy-h dogfoods the new, unreleased zsh feature because that feature was +added to zsh at z-sy-h's initiative. The new feature is used in the fix +to issue #418. + + +## Incompatible changes: + +- An unsuccessful completion (a ⮀ Tab press that doesn't change the + command line) no longer causes highlighting to be lost. Visual feedback can + alternatively be achieved by setting the `format` zstyle under the `warnings` + tag, for example, + + zstyle ':completion:*:warnings' format '%F{red}No matches%f' + + Refer to the [description of the `format` style in `zshcompsys(1)`] + [zshcompsys-Standard-Styles-format]. + + (#90, part of #245 (feature/redrawhook)) + +[zshcompsys-Standard-Styles]: https://zsh.sourceforge.io/Doc/Release/Completion-System.html#Standard-Styles +[zshcompsys-Standard-Styles-format]: https://zsh.sourceforge.io/Doc/Release/Completion-System.html#index-format_002c-completion-style + + + +## Other changes: + +- Document `$ZSH_HIGHLIGHT_MAXLENGTH`. + [#698] + +- Optimize highlighting unquoted words (words that are not in single quotes, double quotes, backticks, or dollar-single-quotes) + [#730] + +- Redirection operators (e.g., `<` and `>`) are now highlighted by default + [#646] + +- Propertly terminate `noglob` scope in try/always blocks + [#577] + +- Don't error out when `KSH_ARRAYS` is set in the calling scope + [#622, #689] + +- Literal semicolons in array assignments (`foo=( bar ; baz )`) are now + highlighted as errors. + [3ca93f864fb6] + +- Command separators in array assignments (`foo=( bar | baz )`) are now + highlighted as errors. + [#651, 81267ca3130c] + +- Support parameter elision in command position (e.g., `$foo ls` where `$foo` is unset or empty) + [#667] + +- Don't consider the filename in `sudo -e /path/to/file` to be a command position + [#678] + +- Don't look up absolute directory names in $cdpath + [2cc2583f8f12, part of #669] + +- Fix `exec 2>&1;` being highlighted as an error. + [#676] + +- Fix `: $(<*)` being highlighted as globbing. + [#582] + +- Fix `cat < *` being highlighting as globbing when the `MULTIOS` option is unset. + [#583] + +- Fix `echo >&2` highlighting the `2` as a filename if a file by that name happened to exist + [#694, part of #645] + +- Fix `echo >&-` highlighting the `-` as a filename if a file by that name happened to exist + [part of #645] + +- Fix `echo >&p` highlighting the `p` as a filename if a file by that name happened to exist + [part of #645] + +- Fix wrong highlighting of unquoted parameter expansions under zsh 5.2 and older + [e165f18c758e] + +- Highlight global aliases + [#700] + +- Highlight `: =nosuchcommand' as an error (when the `EQUALS` option hasn't been unset). + [#430] + +- Highlight reserved word after assignments as errors (e.g., `foo=bar (ls;)`) + [#461] + +- Correctly highlight `[[ foo && bar || baz ]]`. + +- Highlight non-executable files in command position correctly (e.g., `% /etc/passwd`) + [#202, #669] + +- Highlight directories in command position correctly, including `AUTO_CD` support + [#669] + +- Recognize `env` as a precommand (e.g., `env FOO=bar ls`) + +- Recognize `ionice` as a precommand + +- Recognize `strace` as a precommand + +- Fix an error message on stderr before every prompt when the `WARN_NESTED_VAR` zsh option is set: + `_zsh_highlight_main__precmd_hook:1: array parameter _zsh_highlight_main__command_type_cache set in enclosing scope in function _zsh_highlight_main__precmd_hook` + [#727, #731, #732, #733] + +- Fix highlighting of alias whose definitions use a simple command terminator + (such as `;`, `|`, `&&`) before a newline + [#677; had regressed in 0.7.0] + +- Highlight arithmetic expansions (e.g., `$(( 42 ))`) + [#607 #649 #704] + +- Highlight the parentheses of array assignments as reserved words (`foo=( bar )`). + The `assign` style remains supported and has precedence. + [#585] + +- Fix interoperability issue with other plugins that use highlighting. The fix + requires zsh 5.8.0.3 or newer. (zsh 5.8.0.2-dev from the `master` branch, + revision zsh-5.8-172-gdd6e702ee or newer is also fine.) + [#418, https://github.com/okapia/zsh-viexchange/issues/1] + +- Improve performance of the `brackets` highlighter. + +- Fix highlighting of pre-command redirections (e.g., the `$fn` in `<$fn cat`) + [#712] + + +# Changes in version 0.7.1 + +- Remove out-of-date information from the 0.7.0 changelog. + + +# Changes in version 0.7.0 + +This is a stable bugfix and feature release. Major new features and changes include: + +- Add `ZSH_HIGHLIGHT_DIRS_BLACKLIST` to disable "path" and "path prefix" + highlighting for specific directories + [#379] + +- Add the "regexp" highlighter, modelled after the pattern highlighter + [4e6f60063f1c] + +- When a word uses globbing, only the globbing metacharacters will be highlighted as globbing: + in `: foo*bar`, only the `*` will be blue. + [e48af357532c] + +- Highlight pasted quotes (e.g., `: foo"bar"`) + [dc1b2f6fa4bb] + +- Highlight command substitutions (`` : `ls` ``, `: $(ls)`) + [c0e64fe13178 and parents, e86f75a840e7, et al] + +- Highlight process substitutions (`: >(nl)`, `: <(pwd)`, `: =(git diff)`) + [c0e64fe13178 and parents, e86f75a840e7, et al] + +- Highlight command substitutions inside double quotes (``: "`foo`"``) + [f16e858f0c83] + +- Highlight many precommands (e.g., `nice`, `stdbuf`, `eatmydata`; + see `$precommand_options` in the source) + +- Highlight numeric globs (e.g., `echo /lib<->`) + +- Assorted improvements to aliases highlighting + (e.g., + `alias sudo_u='sudo -u'; sudo_u jrandom ls`, + `alias x=y y=z z=nosuchcommand; x`, + `alias ls='ls -l'; \ls`) + [f3410c5862fc, 57386f30aec8, #544, and many others] + +- Highlight some more syntax errors + [dea05e44e671, 298ef6a2fa30] + +- New styles: named file descriptors, `RC_QUOTES`, and unclosed quotes (e.g., `echo "foo`) + [38c794a978cd, 25ae1c01216c, 967335dfc5fd] + +- The 'brackets' highlighting no longer treats quotes specially. + [ecdda36ef56f] + + +Selected bugfixes include: + +- Highlight `sudo` correctly when it's not installed + [26a82113b08b] + +- Handle some non-default options being set in zshrc + [b07ada1255b7, a2a899b41b8, 972ad197c13d, b3f66fc8748f] + +- Fix off-by-one highlighting in vi "visual" mode (vicmd keymap) + [be3882aeb054] + +- The 'yank-pop' widget is not wrapped + [#183] + + +Known issues include: + +- A multiline alias that uses a simple command terminator (such as `;`, `|`, `&&`) + before a newline will incorrectly be highlighted as an error. See issue #677 + for examples and workarounds. + [#677] + [UPDATE: Fixed in 0.8.0] + + +# Changes in version 0.6.0 + +This is a stable release, featuring bugfixes and minor improvements. + + +## Performance improvements: + +(none) + + +## Added highlighting of: + +- The `isearch` and `suffix` [`$zle_highlight` settings][zshzle-Character-Highlighting]. + (79e4d3d12405, 15db71abd0cc, b56ee542d619; requires zsh 5.3 for `$ISEARCHMATCH_ACTIVE` / `$SUFFIX_ACTIVE` support) + +[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting + +- Possible history expansions in double-quoted strings. + (76ea9e1df316) + +- Mismatched `if`/`then`/`elif`/`else`/`fi`. + (73cb83270262) + + +## Fixed highlighting of: + +- A comment line followed by a non-comment line. + (#385, 9396ad5c5f9c) + +- An unquoted `$*` (expands to the positional parameters). + (237f89ad629f) + +- history-incremental-pattern-search-backward under zsh 5.3.1. + (#407, #415, 462779629a0c) + + +## API changes (for highlighter authors): + +(none) + + +## Developer-visible changes: + +- tests: Set the `ALIAS_FUNC_DEF` option for zsh 5.4 compatibility. + (9523d6d49cb3) + + +## Other changes: + +- docs: Added before/after screenshots. + (cd9ec14a65ec..b7e277106b49) + +- docs: Link Fedora package. + (3d74aa47e4a7, 5feed23962df) + +- docs: Link FreeBSD port. + (626c034c68d7) + +- docs: Link OpenSUSE Build Service packages + (#419, dea1fedc7358) + +- Prevent user-defined aliases from taking effect in z-sy-h's own code. + (#390, 2dce602727d7, 8d5afe47f774; and #392, #395, b8fa1b9dc954) + +- docs: Update zplug installation instructions. + (#399, 4f49c4a35f17) + +- Improve "unhandled ZLE widget 'foo'" error message. + (#409, be083d7f3710) + +- Fix printing of "failed loading highlighters" error message. + (#426, ad522a091429) + + +# Changes in version 0.5.0 + + +## Performance improvements: + +We thank Sebastian Gniazdowski and "m0viefreak" for significant contributions +in this area. + +- Optimize string operations in the `main` (default) highlighter. + (#372/3cb58fd7d7b9, 02229ebd6328, ef4bfe5bcc14, #372/c6b6513ac0d6, #374/15461e7d21c3) + +- Command word highlighting: Use the `zsh/parameter` module to avoid forks. + Memoize (cache) the results. + (#298, 3ce01076b521, 2f18ba64e397, 12b879caf7a6; #320, 3b67e656bff5) + +- Avoid forks in the driver and in the `root` highlighter. + (b9112aec798a, 38c8fbea2dd2) + + +## Added highlighting of: + +- `pkexec` (a precommand). + (#248, 4f3910cbbaa5) + +- Aliases that cannot be defined normally nor invoked normally (highlighted as an error). + (#263 (in part), 28932316cca6) + +- Path separators (`/`) — the default behaviour remains to highlight path separators + and path components the same way. + (#136, #260, 6cd39e7c70d3, 9a934d291e7c, f3d3aaa00cc4) + +- Assignments to individual positional arguments (`42=foo` to assign to `$42`). + (f4036a09cee3) + +- Linewise region (the `visual-line-mode` widget, bound to `V` in zsh's `vi` keymap). + (#267, a7a7f8b42280, ee07588cfd9b) + +- Command-lines recalled by `isearch` mode; requires zsh≥5.3. + (#261 (in part); #257; 4ad311ec0a68) + +- Command-lines whilst the `IGNORE_BRACES` or `IGNORE_CLOSE_BRACES` option is in effect. + (a8a6384356af, 02807f1826a5) + +- Mismatched parentheses and braces (in the `main` highlighter). + (51b9d79c3bb6, 2fabf7ca64b7, a4196eda5e6f, and others) + +- Mismatched `do`/`done` keywords. + (b2733a64da93) + +- Mismatched `foreach`/`end` keywords. + (#96, 2bb8f0703d8f) + +- In Bourne-style function definitions, when the `MULTI_FUNC_DEF` option is set + (which is the default), highlight the first word in the function body as + a command word: `f() { g "$@" }`. + (6f91850a01e1) + +- `always` blocks. + (#335, e5782e4ddfb6) + +- Command substitutions inside double quotes, `"$(echo foo)"`. + (#139 (in part), c3913e0d8ead) + +- Non-alphabetic parameters inside double quotes (`"$$"`, `"$#"`, `"$*"`, `"$@"`, `"$?"`, `"$-"`). + (4afe670f7a1b, 44ef6e38e5a7) + +- Command words from future versions of zsh (forward compatibly). + This also adds an `arg0` style that all other command word styles fall back to. + (b4537a972eed, bccc3dc26943) + +- Escaped history expansions inside double quotes: `: "\!"` + (28d7056a7a06, et seq) + + +## Fixed highlighting of: + +- Command separator tokens in syntactically-invalid positions. + (09c4114eb980) + +- Redirections with a file descriptor number at command word. + (#238 (in part), 73ee7c1f6c4a) + +- The `select` prompt, `$PS3`. + (#268, 451665cb2a8b) + +- Values of variables in `vared`. + (e500ca246286) + +- `!` as an argument (neither a history expansion nor a reserved word). + (4c23a2fd1b90) + +- "division by zero" error under the `brackets` highlighter when `$ZSH_HIGHLIGHT_STYLES` is empty. + (f73f3d53d3a6) + +- Process substitutions, `<(pwd)` and `>(wc -l)`. + (#302, 6889ff6bd2ad, bfabffbf975c, fc9c892a3f15) + +- The non-`SHORT_LOOPS` form of `repeat` loops: `repeat 42; do true; done`. + (#290, 4832f18c50a5, ef68f50c048f, 6362c757b6f7) + +- Broken symlinks (are now highlighted as files). + (#342, 95f7206a9373, 53083da8215e) + +- Lines accepted from `isearch` mode. + (#284; #257, #259, #288; 5bae6219008b, a8fe22d42251) + +- Work around upstream bug that triggered when the command word was a relative + path, that when interpreted relative to a $PATH directory denoted a command; + the effect of that upstream bug was that the relative path was cached as + a "valid external command name". + (#354, #355, 51614ca2c994, fdaeec45146b, 7d38d07255e4; + upstream fix slated to be released in 5.3 (workers/39104)) + +- After accepting a line with the cursor on a bracket, the matching bracket + of the bracket under the cursor no longer remains highlighted (with the + `brackets` highlighter). + (4c4baede519a) + +- The first word on a new line within an array assignment or initialization is no + longer considered a command position. + (8bf423d16d46) + +- Subshells that end at command position, `(A=42)`, `(true;)`. + (#231, 7fb6f9979121; #344, 4fc35362ee5a) + +- Command word after array assignment, `a=(lorem ipsum) pwd`. + (#330, 7fb6f9979121) + + +## API changes (for highlighter authors): + +- New interface `_zsh_highlight_add_highlight`. + (341a3ae1f015, c346f6eb6fb6) + +- tests: Specify the style key, not its value, in test expectations. + (a830613467af, fd061b5730bf, eaa4335c3441, among others) + +- Module author documentation improvements. + (#306 (in part), 217669270418, 0ff354b44b6e, 80148f6c8402, 364f206a547f, and others) + +- The driver no longer defines a `_zsh_highlight_${highlighter}_highlighter_cache` + variable, which is in the highlighters' namespace. + (3e59ab41b6b8, 80148f6c8402, f91a7b885e7d) + +- Rename highlighter entry points. The old names remain supported for + backwards compatibility. + (a3d5dfcbdae9, c793e0dceab1) + +- tests: Add the "NONE" expectation. + (4da9889d1545, 13018f3dd735, d37c55c788cd) + +- tests: consider a test that writes to stderr to have failed. + (#291, 1082067f9315) + + +## Developer-visible changes: + +- Add `make quiet-test`. + (9b64ad750f35) + +- test harness: Better quote replaceables in error messages. + (30d8f92df225) + +- test harness: Fix exit code for XPASS. + (bb8d325c0cbd) + +- Create [HACKING.md](HACKING.md). + (cef49752fd0e) + +- tests: Emit a description for PASS test points. + (6aa57d60aa64, f0bae44b76dd) + +- tests: Create a script that generates a test file. + (8013dc3b8db6, et seq; `tests/generate.zsh`) + + +## Other changes: + +- Under zsh≤5.2, widgets whose names start with a `_` are no longer excluded + from highlighting. + (ed33d2cb1388; reverts part of 186d80054a40 which was for #65) + +- Under zsh≤5.2, widgets implemented by a function named after the widget are + no longer excluded from highlighting. + (487b122c480d; reverts part of 776453cb5b69) + +- Under zsh≤5.2, shell-unsafe widget names can now be wrapped. + (#278, 6a634fac9fb9, et seq) + +- Correct some test expectations. + (78290e043bc5) + +- `zsh-syntax-highlighting.plugin.zsh`: Convert from symlink to plain file + for msys2 compatibility. + (#292, d4f8edc9f3ad) + +- Document installation under some plugin managers. + (e635f766bef9, 9cab566f539b) + +- Don't leak the `PATH_DIRS` option. + (7b82b88a7166) + +- Don't require the `FUNCTION_ARGZERO` option to be set. + (#338, 750aebc553f2) + +- Under zsh≤5.2, support binding incomplete/nonexistent widgets. + (9e569bb0fe04, part of #288) + +- Make the driver reentrant, fixing possibility of infinite recursion + under zsh≤5.2 under interaction with theoretical third-party code. + (#305, d711563fe1bf, 295d62ec888d, f3242cbd6aba) + +- Fix warnings when `WARN_CREATE_GLOBAL` is set prior to sourcing zsh-syntax-highlighting. + (z-sy-h already sets `WARN_CREATE_GLOBAL` internally.) + (da60234fb236) + +- Warn only once, rather than once per keypress, when a highlighter is unavailable. + (0a9b347483ae) + + +# Changes in version 0.4.1 + +## Fixes: + +- Arguments to widgets were not properly dash-escaped. Only matters for widgets + that take arguments (i.e., that are invoked as `zle ${widget} -- ${args}`). + (282c7134e8ac, reverts c808d2187a73) + + +# Changes in version 0.4.0 + + +## Added highlighting of: + +- incomplete sudo commands + (a3047a912100, 2f05620b19ae) + + ```zsh + sudo; + sudo -u; + ``` + +- command words following reserved words + (#207, #222, b397b12ac139 et seq, 6fbd2aa9579b et seq, 8b4adbd991b0) + + ```zsh + if ls; then ls; else ls; fi + repeat 10 do ls; done + ``` + + (The `ls` are now highlighted as a command.) + +- comments (when `INTERACTIVE_COMMENTS` is set) + (#163, #167, 693de99a9030) + + ```zsh + echo Hello # comment + ``` + +- closing brackets of arithmetic expansion, subshells, and blocks + (#226, a59f442d2d34, et seq) + + ```zsh + (( foo )) + ( foo ) + { foo } + ``` + +- command names enabled by the `PATH_DIRS` option + (#228, 96ee5116b182) + + ```zsh + # When ~/bin/foo/bar exists, is executable, ~/bin is in $PATH, + # and 'setopt PATH_DIRS' is in effect + foo/bar + ``` + +- parameter expansions with braces inside double quotes + (#186, 6e3720f39d84) + + ```zsh + echo "${foo}" + ``` + +- parameter expansions in command word + (#101, 4fcfb15913a2) + + ```zsh + x=/bin/ls + $x -l + ``` + +- the command separators '\|&', '&!', '&\|' + + ```zsh + view file.pdf &! ls + ``` + + +## Fixed highlighting of: + +- precommand modifiers at non-command-word position + (#209, 2c9f8c8c95fa) + + ```zsh + ls command foo + ``` + +- sudo commands with infix redirections + (#221, be006aded590, 86e924970911) + + ```zsh + sudo -u >/tmp/foo.out user ls + ``` + +- subshells; anonymous functions + (#166, #194, 0d1bfbcbfa67, 9e178f9f3948) + + ```zsh + (true) + () { true } + ``` + +- parameter assignment statements with no command + (#205, 01d7eeb3c713) + + ```zsh + A=1; + ``` + + (The semicolon used to be highlighted as a mistake) + +- cursor highlighter: Remove the cursor highlighting when accepting a line. + (#109, 4f0c293fdef0) + + +## Removed features: + +- Removed highlighting of approximate paths (`path_approx`). + (#187, 98aee7f8b9a3) + + +## Other changes: + +- main highlighter refactored to use states rather than booleans. + (2080a441ac49, et seq) + +- Fix initialization when sourcing `zsh-syntax-highlighting.zsh` via a symlink + (083c47b00707) + +- docs: Add screenshot. + (57624bb9f64b) + +- widgets wrapping: Don't add '--' when invoking widgets. + (c808d2187a73) [_reverted in 0.4.1_] + +- Refresh highlighting upon `accept-*` widgets (`accept-line` et al). + (59fbdda64c21) + +- Stop leaking match/mbegin/mend to global scope (thanks to upstream + `WARN_CREATE_GLOBAL` improvements). + (d3deffbf46a4) + +- 'make install': Permit setting `$(SHARE_DIR)` from the environment. + (e1078a8b4cf1) + +- driver: Tolerate KSH_ARRAYS being set in the calling context. + (#162, 8f19af6b319d) + +- 'make install': Install documentation fully and properly. + (#219, b1619c001390, et seq) + +- docs: Improve 'main' highlighter's documentation. + (00de155063f5, 7d4252f5f596) + +- docs: Moved to a new docs/ tree; assorted minor updates + (c575f8f37567, 5b34c23cfad5, et seq) + +- docs: Split README.md into INSTALL.md + (0b3183f6cb9a) + +- driver: Report `$ZSH_HIGHLIGHT_REVISION` when running from git + (84734ba95026) + + +## Developer-visible changes: + +- Test harness converted to [TAP](https://testanything.org/tap-specification.html) format + (d99aa58aaaef, et seq) + +- Run each test in a separate subprocess, isolating them from each other + (d99aa58aaaef, et seq) + +- Fix test failure with nonexisting $HOME + (#216, b2ac98b98150) + +- Test output is now colorized. + (4d3da30f8b72, 6fe07c096109) + +- Document `make install` + (a18a7427fd2c) + +- tests: Allow specifying the zsh binary to use. + (557bb7e0c6a0) + +- tests: Add 'make perf' target + (4513eaea71d7) + +- tests: Run each test in a sandbox directory + (c01533920245) + + +# Changes in version 0.3.0 + + +## Added highlighting of: + +- suffix aliases (requires zsh 5.1.1 or newer): + + ```zsh + alias -s png=display + foo.png + ``` + +- prefix redirections: + + ```zsh + foo.txt + ``` + +- arithmetic evaluations: + + ```zsh + (( 42 )) + ``` + +- $'' strings, including \x/\octal/\u/\U escapes + + ```zsh + : $'foo\u0040bar' + ``` + +- multiline strings: + + ```zsh + % echo "line 1 + line 2" + ``` + +- string literals that haven't been finished: + + ```zsh + % echo "Hello, world + ``` +- command words that involve tilde expansion: + + ```zsh + % ~/bin/foo + ``` + +## Fixed highlighting of: + +- quoted command words: + + ```zsh + % \ls + ``` + +- backslash escapes in "" strings: + + ```zsh + % echo "\x41" + ``` + +- noglob after command separator: + + ```zsh + % :; noglob echo * + ``` + +- glob after command separator, when the first command starts with 'noglob': + + ```zsh + % noglob true; echo * + ``` + +- the region (vi visual mode / set-mark-command) (issue #165) + +- redirection and command separators that would be highlighted as `path_approx` + + ```zsh + % echo foo;‸ + % echo <‸ + ``` + + (where `‸` represents the cursor location) + +- escaped globbing (outside quotes) + + ```zsh + % echo \* + ``` + + +## Other changes: + +- implemented compatibility with zsh's paste highlighting (issue #175) + +- `$?` propagated correctly to wrapped widgets + +- don't leak $REPLY into global scope + + +## Developer-visible changes: + +- added makefile with `install` and `test` targets + +- set `warn_create_global` internally + +- document release process + + + + +# Version 0.2.1 + +(Start of changelog.) + diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters.md new file mode 100644 index 0000000..fb64c3a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters.md @@ -0,0 +1,132 @@ +zsh-syntax-highlighting / highlighters +====================================== + +Syntax highlighting is done by pluggable highlighters: + +* `main` - the base highlighter, and the only one [active by default][main]. +* `brackets` - [matches brackets][brackets] and parenthesis. +* `pattern` - matches [user-defined patterns][pattern]. +* `regexp` - matches [user-defined regular expressions][regexp]. +* `cursor` - matches [the cursor position][cursor]. +* `root` - highlights the whole command line [if the current user is root][root]. +* `line` - applied to [the whole command line][line]. + +[main]: highlighters/main.md +[brackets]: highlighters/brackets.md +[pattern]: highlighters/pattern.md +[regexp]: highlighters/regexp.md +[cursor]: highlighters/cursor.md +[root]: highlighters/root.md +[line]: highlighters/line.md + + +Highlighter-independent settings +-------------------------------- + +By default, all command lines are highlighted. However, it is possible to +prevent command lines longer than a fixed number of characters from being +highlighted by setting the variable `${ZSH_HIGHLIGHT_MAXLENGTH}` to the maximum +length (in characters) of command lines to be highlighter. This is useful when +editing very long command lines (for example, with the [`fned`][fned] utility +function). Example: + +[fned]: https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#index-zed + +```zsh +ZSH_HIGHLIGHT_MAXLENGTH=512 +``` + + +How to activate highlighters +---------------------------- + +To activate an highlighter, add it to the `ZSH_HIGHLIGHT_HIGHLIGHTERS` array. +By default `ZSH_HIGHLIGHT_HIGHLIGHTERS` is `(main)`. For example to activate +`brackets`, `pattern`, and `cursor` highlighters, in `~/.zshrc` do: + +```zsh +ZSH_HIGHLIGHT_HIGHLIGHTERS+=(brackets pattern cursor) +``` + + +How to tweak highlighters +------------------------- + +Highlighters look up styles from the `ZSH_HIGHLIGHT_STYLES` associative array. +Navigate into the [individual highlighters' documentation](highlighters/) to +see what styles (keys) each highlighter defines; the syntax for values is the +same as the syntax of "types of highlighting" of the zsh builtin +`$zle_highlight` array, which is documented in [the `zshzle(1)` manual +page][zshzle-Character-Highlighting]. + +[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting + +Some highlighters support additional configuration parameters; see each +highlighter's documentation for details and examples. + + +How to implement a new highlighter +---------------------------------- + +To create your own `acme` highlighter: + +* Create your script at + `highlighters/acme/acme-highlighter.zsh`. + +* Implement the `_zsh_highlight_highlighter_acme_predicate` function. + This function must return 0 when the highlighter needs to be called and + non-zero otherwise, for example: + + ```zsh + _zsh_highlight_highlighter_acme_predicate() { + # Call this highlighter in SVN working copies + [[ -d .svn ]] + } + ``` + +* Implement the `_zsh_highlight_highlighter_acme_paint` function. + This function does the actual syntax highlighting, by calling + `_zsh_highlight_add_highlight` with the start and end of the region to + be highlighted and the `ZSH_HIGHLIGHT_STYLES` key to use. Define the default + style for that key in the highlighter script outside of any function with + `: ${ZSH_HIGHLIGHT_STYLES[key]:=value}`, being sure to prefix + the key with your highlighter name and a colon. For example: + + ```zsh + : ${ZSH_HIGHLIGHT_STYLES[acme:aurora]:=fg=green} + + _zsh_highlight_highlighter_acme_paint() { + # Colorize the whole buffer with the 'aurora' style + _zsh_highlight_add_highlight 0 $#BUFFER acme:aurora + } + ``` + + If you need to test which options the user has set, test `zsyh_user_options` + with a sensible default if the option is not present in supported zsh + versions. For example: + + ```zsh + [[ ${zsyh_user_options[ignoreclosebraces]:-off} == on ]] + ``` + + The option name must be all lowercase with no underscores and not an alias. + +* Name your own functions and global variables `_zsh_highlight_acme_*`. + + - In zsh-syntax-highlighting 0.4.0 and earlier, the entrypoints + `_zsh_highlight_highlighter_acme_predicate` and + `_zsh_highlight_highlighter_acme_paint` + were named + `_zsh_highlight_acme_highlighter_predicate` and + `_zsh_highlight_highlighter_acme_paint` respectively. + + These names are still supported for backwards compatibility; + however, support for them will be removed in a future major or minor release (v0.x.0 or v1.0.0). + +* Activate your highlighter in `~/.zshrc`: + + ```zsh + ZSH_HIGHLIGHT_HIGHLIGHTERS+=(acme) + ``` + +* [Write tests](../tests/README.md). diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/brackets.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/brackets.md new file mode 100644 index 0000000..0101699 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/brackets.md @@ -0,0 +1,31 @@ +zsh-syntax-highlighting / highlighters / brackets +------------------------------------------------- + +This is the `brackets` highlighter, that highlights brackets and parentheses, and +matches them. + + +### How to tweak it + +This highlighter defines the following styles: + +* `bracket-error` - unmatched brackets +* `bracket-level-N` - brackets with nest level N +* `cursor-matchingbracket` - the matching bracket, if cursor is on a bracket + +To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`, +for example in `~/.zshrc`: + +```zsh +# To define styles for nested brackets up to level 4 +ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=blue,bold' +ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=red,bold' +ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=yellow,bold' +ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold' +``` + +The syntax for values is the same as the syntax of "types of highlighting" of +the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` +manual page][zshzle-Character-Highlighting]. + +[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/cursor.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/cursor.md new file mode 100644 index 0000000..3f87d42 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/cursor.md @@ -0,0 +1,24 @@ +zsh-syntax-highlighting / highlighters / cursor +----------------------------------------------- + +This is the `cursor` highlighter, that highlights the cursor. + + +### How to tweak it + +This highlighter defines the following styles: + +* `cursor` - the style for the current cursor position + +To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`, +for example in `~/.zshrc`: + +```zsh +ZSH_HIGHLIGHT_STYLES[cursor]='bg=blue' +``` + +The syntax for values is the same as the syntax of "types of highlighting" of +the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` +manual page][zshzle-Character-Highlighting]. + +[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/line.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/line.md new file mode 100644 index 0000000..f76639e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/line.md @@ -0,0 +1,24 @@ +zsh-syntax-highlighting / highlighters / line +--------------------------------------------- + +This is the `line` highlighter, that highlights the whole line. + + +### How to tweak it + +This highlighter defines the following styles: + +* `line` - the style for the whole line + +To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`, +for example in `~/.zshrc`: + +```zsh +ZSH_HIGHLIGHT_STYLES[line]='bold' +``` + +The syntax for values is the same as the syntax of "types of highlighting" of +the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` +manual page][zshzle-Character-Highlighting]. + +[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/main.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/main.md new file mode 100644 index 0000000..4a27653 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/main.md @@ -0,0 +1,121 @@ +zsh-syntax-highlighting / highlighters / main +--------------------------------------------- + +This is the `main` highlighter, that highlights: + +* Commands +* Options +* Arguments +* Paths +* Strings + +This highlighter is active by default. + + +### How to tweak it + +This highlighter defines the following styles: + +* `unknown-token` - unknown tokens / errors +* `reserved-word` - shell reserved words (`if`, `for`) +* `alias` - aliases +* `suffix-alias` - suffix aliases (requires zsh 5.1.1 or newer) +* `global-alias` - global aliases +* `builtin` - shell builtin commands (`shift`, `pwd`, `zstyle`) +* `function` - function names +* `command` - command names +* `precommand` - precommand modifiers (e.g., `noglob`, `builtin`) +* `commandseparator` - command separation tokens (`;`, `&&`) +* `hashed-command` - hashed commands +* `autodirectory` - a directory name in command position when the `AUTO_CD` option is set +* `path` - existing filenames +* `path_pathseparator` - path separators in filenames (`/`); if unset, `path` is used (default) +* `path_prefix` - prefixes of existing filenames +* `path_prefix_pathseparator` - path separators in prefixes of existing filenames (`/`); if unset, `path_prefix` is used (default) +* `globbing` - globbing expressions (`*.txt`) +* `history-expansion` - history expansion expressions (`!foo` and `^foo^bar`) +* `command-substitution` - command substitutions (`$(echo foo)`) +* `command-substitution-unquoted` - an unquoted command substitution (`$(echo foo)`) +* `command-substitution-quoted` - a quoted command substitution (`"$(echo foo)"`) +* `command-substitution-delimiter` - command substitution delimiters (`$(` and `)`) +* `command-substitution-delimiter-unquoted` - an unquoted command substitution delimiters (`$(` and `)`) +* `command-substitution-delimiter-quoted` - a quoted command substitution delimiters (`"$(` and `)"`) +* `process-substitution` - process substitutions (`<(echo foo)`) +* `process-substitution-delimiter` - process substitution delimiters (`<(` and `)`) +* `arithmetic-expansion` - arithmetic expansion `$(( 42 ))`) +* `single-hyphen-option` - single-hyphen options (`-o`) +* `double-hyphen-option` - double-hyphen options (`--option`) +* `back-quoted-argument` - backtick command substitution (`` `foo` ``) +* `back-quoted-argument-unclosed` - unclosed backtick command substitution (`` `foo ``) +* `back-quoted-argument-delimiter` - backtick command substitution delimiters (`` ` ``) +* `single-quoted-argument` - single-quoted arguments (`` 'foo' ``) +* `single-quoted-argument-unclosed` - unclosed single-quoted arguments (`` 'foo ``) +* `double-quoted-argument` - double-quoted arguments (`` "foo" ``) +* `double-quoted-argument-unclosed` - unclosed double-quoted arguments (`` "foo ``) +* `dollar-quoted-argument` - dollar-quoted arguments (`` $'foo' ``) +* `dollar-quoted-argument-unclosed` - unclosed dollar-quoted arguments (`` $'foo ``) +* `rc-quote` - two single quotes inside single quotes when the `RC_QUOTES` option is set (`` 'foo''bar' ``) +* `dollar-double-quoted-argument` - parameter expansion inside double quotes (`$foo` inside `""`) +* `back-double-quoted-argument` - backslash escape sequences inside double-quoted arguments (`\"` in `"foo\"bar"`) +* `back-dollar-quoted-argument` - backslash escape sequences inside dollar-quoted arguments (`\x` in `$'\x48'`) +* `assign` - parameter assignments (`x=foo` and `x=( )`) +* `redirection` - redirection operators (`<`, `>`, etc) +* `comment` - comments, when `setopt INTERACTIVE_COMMENTS` is in effect (`echo # foo`) +* `comment` - elided parameters in command position (`$x ls` when `$x` is unset or empty) +* `named-fd` - named file descriptor (the `fd` in `echo foo {fd}>&2`) +* `numeric-fd` - numeric file descriptor (the `2` in `echo foo {fd}>&2`) +* `arg0` - a command word other than one of those enumerated above (other than a command, precommand, alias, function, or shell builtin command). +* `default` - everything else + +To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`, +for example in `~/.zshrc`: + +```zsh +# Declare the variable +typeset -A ZSH_HIGHLIGHT_STYLES + +# To differentiate aliases from other command types +ZSH_HIGHLIGHT_STYLES[alias]='fg=magenta,bold' + +# To have paths colored instead of underlined +ZSH_HIGHLIGHT_STYLES[path]='fg=cyan' + +# To disable highlighting of globbing expressions +ZSH_HIGHLIGHT_STYLES[globbing]='none' +``` + +The syntax for values is the same as the syntax of "types of highlighting" of +the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` +manual page][zshzle-Character-Highlighting]. + +#### Parameters + +To avoid partial path lookups on a path, add the path to the `ZSH_HIGHLIGHT_DIRS_BLACKLIST` array. + +```zsh +ZSH_HIGHLIGHT_DIRS_BLACKLIST+=(/mnt/slow_share) +``` + +### Useless trivia + +#### Forward compatibility. + +zsh-syntax-highlighting attempts to be forward-compatible with zsh. +Specifically, we attempt to facilitate highlighting _command word_ types that +had not yet been invented when this version of zsh-syntax-highlighting was +released. + +A _command word_ is something like a function name, external command name, et +cetera. (See +[Simple Commands & Pipelines in `zshmisc(1)`][zshmisc-Simple-Commands-And-Pipelines] +for a formal definition.) + +If a new _kind_ of command word is ever added to zsh — something conceptually +different than "function" and "alias" and "external command" — then command words +of that (new) kind will be highlighted by the style `arg0_$kind`, +where `$kind` is the output of `type -w` on the new kind of command word. If that +style is not defined, then the style `arg0` will be used instead. + +[zshmisc-Simple-Commands-And-Pipelines]: https://zsh.sourceforge.io/Doc/Release/Shell-Grammar.html#Simple-Commands-_0026-Pipelines + +[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/pattern.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/pattern.md new file mode 100644 index 0000000..ecaa6a7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/pattern.md @@ -0,0 +1,24 @@ +zsh-syntax-highlighting / highlighters / pattern +------------------------------------------------ + +This is the `pattern` highlighter, that highlights user-defined patterns. + + +### How to tweak it + +To use this highlighter, associate patterns with styles in the +`ZSH_HIGHLIGHT_PATTERNS` associative array, for example in `~/.zshrc`: + +```zsh +# Declare the variable +typeset -A ZSH_HIGHLIGHT_PATTERNS + +# To have commands starting with `rm -rf` in red: +ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red') +``` + +The syntax for values is the same as the syntax of "types of highlighting" of +the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` +manual page][zshzle-Character-Highlighting]. + +[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/regexp.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/regexp.md new file mode 100644 index 0000000..8c711a3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/regexp.md @@ -0,0 +1,65 @@ +zsh-syntax-highlighting / highlighters / regexp +------------------------------------------------ + +This is the `regexp` highlighter, that highlights user-defined regular +expressions. It's similar to the `pattern` highlighter, but allows more complex +patterns. + +### How to tweak it + +To use this highlighter, associate regular expressions with styles in the +`ZSH_HIGHLIGHT_REGEXP` associative array, for example in `~/.zshrc`: + +```zsh +typeset -A ZSH_HIGHLIGHT_REGEXP +ZSH_HIGHLIGHT_REGEXP+=('^rm .*' fg=red,bold) +``` + +This will highlight lines that start with a call to the `rm` command. + +The regular expressions flavour used is [PCRE][pcresyntax] when the +`RE_MATCH_PCRE` option is set and POSIX Extended Regular Expressions (ERE), +as implemented by the platform's C library, otherwise. For details on the +latter, see [the `zsh/regex` module's documentation][MAN_ZSH_REGEX] and the +`regcomp(3)` and `re_format(7)` manual pages on your system. + +For instance, to highlight `sudo` only as a complete word, i.e., `sudo cmd`, +but not `sudoedit`, one might use: + +* When the `RE_MATCH_PCRE` is set: + + ```zsh + typeset -A ZSH_HIGHLIGHT_REGEXP + ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' fg=123,bold) + ``` + +* When the `RE_MATCH_PCRE` is unset, on platforms with GNU `libc` (e.g., many GNU/Linux distributions): + + ```zsh + typeset -A ZSH_HIGHLIGHT_REGEXP + ZSH_HIGHLIGHT_REGEXP+=('\' fg=123,bold) + ``` + +* When the `RE_MATCH_PCRE` is unset, on BSD-based platforms (e.g., macOS): + + ```zsh + typeset -A ZSH_HIGHLIGHT_REGEXP + ZSH_HIGHLIGHT_REGEXP+=('[[:<:]]sudo[[:>:]]' fg=123,bold) + ``` + +Note, however, that PCRE and POSIX ERE have a large common subset: +for instance, the regular expressions `[abc]`, `a*`, and `(a|b)` have the same +meaning in both flavours. + +The syntax for values is the same as the syntax of "types of highlighting" of +the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` +manual page][zshzle-Character-Highlighting]. + +See also: [regular expressions tutorial][perlretut], zsh regexp operator `=~` +in [the `zshmisc(1)` manual page][zshmisc-Conditional-Expressions] + +[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting +[perlretut]: https://perldoc.perl.org/perlretut +[zshmisc-Conditional-Expressions]: https://zsh.sourceforge.io/Doc/Release/Conditional-Expressions.html#Conditional-Expressions +[MAN_ZSH_REGEX]: https://zsh.sourceforge.io/Doc/Release/Zsh-Modules.html#The-zsh_002fregex-Module +[pcresyntax]: https://www.pcre.org/original/doc/html/pcresyntax.html diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/root.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/root.md new file mode 100644 index 0000000..8197e4b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/docs/highlighters/root.md @@ -0,0 +1,25 @@ +zsh-syntax-highlighting / highlighters / root +--------------------------------------------- + +This is the `root` highlighter, that highlights the whole line if the current +user is root. + + +### How to tweak it + +This highlighter defines the following styles: + +* `root` - the style for the whole line if the current user is root. + +To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`, +for example in `~/.zshrc`: + +```zsh +ZSH_HIGHLIGHT_STYLES[root]='bg=red' +``` + +The syntax for values is the same as the syntax of "types of highlighting" of +the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` +manual page][zshzle-Character-Highlighting]. + +[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/README.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/README.md new file mode 100644 index 0000000..8490ddf --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/README.md @@ -0,0 +1,8 @@ +zsh-syntax-highlighting / highlighters +====================================== + +Navigate into the individual highlighters' documentation to see +what styles (`$ZSH_HIGHLIGHT_STYLES` keys) each highlighter defines. + +Refer to the [documentation on highlighters](../docs/highlighters.md) for further +information. diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/README.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/README.md new file mode 120000 index 0000000..6997bd6 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/README.md @@ -0,0 +1 @@ +../../docs/highlighters/brackets.md \ No newline at end of file diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/brackets-highlighter.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/brackets-highlighter.zsh new file mode 100644 index 0000000..bc388fd --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/brackets-highlighter.zsh @@ -0,0 +1,107 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + + +# Define default styles. +: ${ZSH_HIGHLIGHT_STYLES[bracket-error]:=fg=red,bold} +: ${ZSH_HIGHLIGHT_STYLES[bracket-level-1]:=fg=blue,bold} +: ${ZSH_HIGHLIGHT_STYLES[bracket-level-2]:=fg=green,bold} +: ${ZSH_HIGHLIGHT_STYLES[bracket-level-3]:=fg=magenta,bold} +: ${ZSH_HIGHLIGHT_STYLES[bracket-level-4]:=fg=yellow,bold} +: ${ZSH_HIGHLIGHT_STYLES[bracket-level-5]:=fg=cyan,bold} +: ${ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]:=standout} + +# Whether the brackets highlighter should be called or not. +_zsh_highlight_highlighter_brackets_predicate() +{ + [[ $WIDGET == zle-line-finish ]] || _zsh_highlight_cursor_moved || _zsh_highlight_buffer_modified +} + +# Brackets highlighting function. +_zsh_highlight_highlighter_brackets_paint() +{ + local char style + local -i bracket_color_size=${#ZSH_HIGHLIGHT_STYLES[(I)bracket-level-*]} buflen=${#BUFFER} level=0 matchingpos pos + local -A levelpos lastoflevel matching + + # Find all brackets and remember which one is matching + pos=0 + for char in ${(s..)BUFFER} ; do + (( ++pos )) + case $char in + ["([{"]) + levelpos[$pos]=$((++level)) + lastoflevel[$level]=$pos + ;; + [")]}"]) + if (( level > 0 )); then + matchingpos=$lastoflevel[$level] + levelpos[$pos]=$((level--)) + if _zsh_highlight_brackets_match $matchingpos $pos; then + matching[$matchingpos]=$pos + matching[$pos]=$matchingpos + fi + else + levelpos[$pos]=-1 + fi + ;; + esac + done + + # Now highlight all found brackets + for pos in ${(k)levelpos}; do + if (( $+matching[$pos] )); then + if (( bracket_color_size )); then + _zsh_highlight_add_highlight $((pos - 1)) $pos bracket-level-$(( (levelpos[$pos] - 1) % bracket_color_size + 1 )) + fi + else + _zsh_highlight_add_highlight $((pos - 1)) $pos bracket-error + fi + done + + # If cursor is on a bracket, then highlight corresponding bracket, if any. + if [[ $WIDGET != zle-line-finish ]]; then + pos=$((CURSOR + 1)) + if (( $+levelpos[$pos] )) && (( $+matching[$pos] )); then + local -i otherpos=$matching[$pos] + _zsh_highlight_add_highlight $((otherpos - 1)) $otherpos cursor-matchingbracket + fi + fi +} + +# Helper function to differentiate type +_zsh_highlight_brackets_match() +{ + case $BUFFER[$1] in + \() [[ $BUFFER[$2] == \) ]];; + \[) [[ $BUFFER[$2] == \] ]];; + \{) [[ $BUFFER[$2] == \} ]];; + *) false;; + esac +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/cursor-matchingbracket-line-finish.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/cursor-matchingbracket-line-finish.zsh new file mode 100644 index 0000000..b2acd31 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/cursor-matchingbracket-line-finish.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +WIDGET=zle-line-finish + +BUFFER=': $foo[bar]' +CURSOR=6 # cursor is zero-based + +expected_region_highlight=( +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/cursor-matchingbracket.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/cursor-matchingbracket.zsh new file mode 100644 index 0000000..e05b4e9 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/cursor-matchingbracket.zsh @@ -0,0 +1,47 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsorted=1 + +ZSH_HIGHLIGHT_STYLES[bracket-level-1]= +ZSH_HIGHLIGHT_STYLES[bracket-level-2]= +ZSH_HIGHLIGHT_STYLES[bracket-level-3]= + +BUFFER=': ((( )))' +CURSOR=2 # cursor is zero-based + +expected_region_highlight=( + "3 3 bracket-level-1" + "4 4 bracket-level-2" + "5 5 bracket-level-3" + "7 7 bracket-level-3" + "8 8 bracket-level-2" + "9 9 bracket-level-1" + "9 9 cursor-matchingbracket" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/empty-styles.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/empty-styles.zsh new file mode 100644 index 0000000..e60657b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/empty-styles.zsh @@ -0,0 +1,33 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': (x)' + +expected_region_highlight=( +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/loop-styles.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/loop-styles.zsh new file mode 100644 index 0000000..e5cfcdf --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/loop-styles.zsh @@ -0,0 +1,53 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsorted=1 + +ZSH_HIGHLIGHT_STYLES[bracket-level-1]= +ZSH_HIGHLIGHT_STYLES[bracket-level-2]= +ZSH_HIGHLIGHT_STYLES[bracket-level-3]= + +BUFFER=': ({[({[(x)]})]})' + +expected_region_highlight=( + "3 3 bracket-level-1" + "4 4 bracket-level-2" + "5 5 bracket-level-3" + "6 6 bracket-level-1" + "7 7 bracket-level-2" + "8 8 bracket-level-3" + "9 9 bracket-level-1" + "11 11 bracket-level-1" + "12 12 bracket-level-3" + "13 13 bracket-level-2" + "14 14 bracket-level-1" + "15 15 bracket-level-3" + "16 16 bracket-level-2" + "17 17 bracket-level-1" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/mismatch-patentheses.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/mismatch-patentheses.zsh new file mode 100644 index 0000000..5cc588f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/mismatch-patentheses.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsorted=1 + +ZSH_HIGHLIGHT_STYLES[bracket-level-1]= +ZSH_HIGHLIGHT_STYLES[bracket-level-2]= + +BUFFER='echo ({x}]' + +expected_region_highlight=( + "6 6 bracket-error" # ( + "7 7 bracket-level-2" # { + "9 9 bracket-level-2" # } + "10 10 bracket-error" # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/near-quotes.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/near-quotes.zsh new file mode 100644 index 0000000..49f002b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/near-quotes.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsorted=1 + +ZSH_HIGHLIGHT_STYLES[bracket-level-1]= +ZSH_HIGHLIGHT_STYLES[bracket-level-2]= + +BUFFER=': {"{x}"}' + +expected_region_highlight=( + "3 3 bracket-level-1" + "5 5 bracket-level-2" + "7 7 bracket-level-2" + "9 9 bracket-level-1" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/nested-parentheses.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/nested-parentheses.zsh new file mode 100644 index 0000000..21a20fb --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/nested-parentheses.zsh @@ -0,0 +1,45 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsorted=1 + +ZSH_HIGHLIGHT_STYLES[bracket-level-1]= +ZSH_HIGHLIGHT_STYLES[bracket-level-2]= +ZSH_HIGHLIGHT_STYLES[bracket-level-3]= + +BUFFER='echo $(echo ${(z)array})' + +expected_region_highlight=( + "7 7 bracket-level-1" # ( + "14 14 bracket-level-2" # { + "15 15 bracket-level-3" # ( + "17 17 bracket-level-3" # ) + "23 23 bracket-level-2" # } + "24 24 bracket-level-1" # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/only-error.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/only-error.zsh new file mode 100644 index 0000000..00fe557 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/only-error.zsh @@ -0,0 +1,34 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': x)' + +expected_region_highlight=( + "4 4 bracket-error" # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/quoted-patentheses.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/quoted-patentheses.zsh new file mode 100644 index 0000000..81ee04f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/quoted-patentheses.zsh @@ -0,0 +1,34 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo "foo ( bar"' + +expected_region_highlight=( +"11 11 bracket-error" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/simple-parentheses.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/simple-parentheses.zsh new file mode 100644 index 0000000..2ccfbab --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/simple-parentheses.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsorted=1 + +ZSH_HIGHLIGHT_STYLES[bracket-level-1]= +ZSH_HIGHLIGHT_STYLES[bracket-level-2]= + +BUFFER='echo ({x})' + +expected_region_highlight=( + "6 6 bracket-level-1" # ( + "7 7 bracket-level-2" # { + "9 9 bracket-level-2" # } + "10 10 bracket-level-1" # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/unclosed-patentheses.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/unclosed-patentheses.zsh new file mode 100644 index 0000000..d3f6560 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/unclosed-patentheses.zsh @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsorted=1 + +ZSH_HIGHLIGHT_STYLES[bracket-level-1]= +ZSH_HIGHLIGHT_STYLES[bracket-level-2]= + +BUFFER='echo ({x}' + +expected_region_highlight=( + "6 6 bracket-error" # ( + "7 7 bracket-level-2" # { + "9 9 bracket-level-2" # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/unclosed-patentheses2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/unclosed-patentheses2.zsh new file mode 100644 index 0000000..2c489c3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/brackets/test-data/unclosed-patentheses2.zsh @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsorted=1 + +ZSH_HIGHLIGHT_STYLES[bracket-level-1]= + +BUFFER='echo {x})' + +expected_region_highlight=( + "6 6 bracket-level-1" # { + "8 8 bracket-level-1" # } + "9 9 bracket-error" # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/cursor/README.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/cursor/README.md new file mode 120000 index 0000000..70e0c8c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/cursor/README.md @@ -0,0 +1 @@ +../../docs/highlighters/cursor.md \ No newline at end of file diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/cursor/cursor-highlighter.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/cursor/cursor-highlighter.zsh new file mode 100644 index 0000000..81633a3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/cursor/cursor-highlighter.zsh @@ -0,0 +1,47 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + + +# Define default styles. +: ${ZSH_HIGHLIGHT_STYLES[cursor]:=standout} + +# Whether the cursor highlighter should be called or not. +_zsh_highlight_highlighter_cursor_predicate() +{ + # remove cursor highlighting when the line is finished + [[ $WIDGET == zle-line-finish ]] || _zsh_highlight_cursor_moved +} + +# Cursor highlighting function. +_zsh_highlight_highlighter_cursor_paint() +{ + [[ $WIDGET == zle-line-finish ]] && return + + _zsh_highlight_add_highlight $CURSOR $(( $CURSOR + 1 )) cursor +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/line/README.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/line/README.md new file mode 120000 index 0000000..052fe20 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/line/README.md @@ -0,0 +1 @@ +../../docs/highlighters/line.md \ No newline at end of file diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/line/line-highlighter.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/line/line-highlighter.zsh new file mode 100644 index 0000000..f922dc9 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/line/line-highlighter.zsh @@ -0,0 +1,44 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + + +# Define default styles. +: ${ZSH_HIGHLIGHT_STYLES[line]:=} + +# Whether the root highlighter should be called or not. +_zsh_highlight_highlighter_line_predicate() +{ + _zsh_highlight_buffer_modified +} + +# root highlighting function. +_zsh_highlight_highlighter_line_paint() +{ + _zsh_highlight_add_highlight 0 $#BUFFER line +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/README.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/README.md new file mode 120000 index 0000000..0354731 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/README.md @@ -0,0 +1 @@ +../../docs/highlighters/main.md \ No newline at end of file diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/main-highlighter.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/main-highlighter.zsh new file mode 100644 index 0000000..3ec96d9 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/main-highlighter.zsh @@ -0,0 +1,1846 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + + +# Define default styles. +: ${ZSH_HIGHLIGHT_STYLES[default]:=none} +: ${ZSH_HIGHLIGHT_STYLES[unknown-token]:=fg=red,bold} +: ${ZSH_HIGHLIGHT_STYLES[reserved-word]:=fg=yellow} +: ${ZSH_HIGHLIGHT_STYLES[suffix-alias]:=fg=green,underline} +: ${ZSH_HIGHLIGHT_STYLES[global-alias]:=fg=cyan} +: ${ZSH_HIGHLIGHT_STYLES[precommand]:=fg=green,underline} +: ${ZSH_HIGHLIGHT_STYLES[commandseparator]:=none} +: ${ZSH_HIGHLIGHT_STYLES[autodirectory]:=fg=green,underline} +: ${ZSH_HIGHLIGHT_STYLES[path]:=underline} +: ${ZSH_HIGHLIGHT_STYLES[path_pathseparator]:=} +: ${ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]:=} +: ${ZSH_HIGHLIGHT_STYLES[globbing]:=fg=blue} +: ${ZSH_HIGHLIGHT_STYLES[history-expansion]:=fg=blue} +: ${ZSH_HIGHLIGHT_STYLES[command-substitution]:=none} +: ${ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]:=fg=magenta} +: ${ZSH_HIGHLIGHT_STYLES[process-substitution]:=none} +: ${ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]:=fg=magenta} +: ${ZSH_HIGHLIGHT_STYLES[single-hyphen-option]:=none} +: ${ZSH_HIGHLIGHT_STYLES[double-hyphen-option]:=none} +: ${ZSH_HIGHLIGHT_STYLES[back-quoted-argument]:=none} +: ${ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]:=fg=magenta} +: ${ZSH_HIGHLIGHT_STYLES[single-quoted-argument]:=fg=yellow} +: ${ZSH_HIGHLIGHT_STYLES[double-quoted-argument]:=fg=yellow} +: ${ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]:=fg=yellow} +: ${ZSH_HIGHLIGHT_STYLES[rc-quote]:=fg=cyan} +: ${ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]:=fg=cyan} +: ${ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]:=fg=cyan} +: ${ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]:=fg=cyan} +: ${ZSH_HIGHLIGHT_STYLES[assign]:=none} +: ${ZSH_HIGHLIGHT_STYLES[redirection]:=fg=yellow} +: ${ZSH_HIGHLIGHT_STYLES[comment]:=fg=black,bold} +: ${ZSH_HIGHLIGHT_STYLES[named-fd]:=none} +: ${ZSH_HIGHLIGHT_STYLES[numeric-fd]:=none} +: ${ZSH_HIGHLIGHT_STYLES[arg0]:=fg=green} + +# Whether the highlighter should be called or not. +_zsh_highlight_highlighter_main_predicate() +{ + # may need to remove path_prefix highlighting when the line ends + [[ $WIDGET == zle-line-finish ]] || _zsh_highlight_buffer_modified +} + +# Helper to deal with tokens crossing line boundaries. +_zsh_highlight_main_add_region_highlight() { + integer start=$1 end=$2 + shift 2 + + if (( $#in_alias )); then + [[ $1 == unknown-token ]] && alias_style=unknown-token + return + fi + if (( in_param )); then + if [[ $1 == unknown-token ]]; then + param_style=unknown-token + fi + if [[ -n $param_style ]]; then + return + fi + param_style=$1 + return + fi + + # The calculation was relative to $buf but region_highlight is relative to $BUFFER. + (( start += buf_offset )) + (( end += buf_offset )) + + list_highlights+=($start $end $1) +} + +_zsh_highlight_main_add_many_region_highlights() { + for 1 2 3; do + _zsh_highlight_main_add_region_highlight $1 $2 $3 + done +} + +_zsh_highlight_main_calculate_fallback() { + local -A fallback_of; fallback_of=( + alias arg0 + suffix-alias arg0 + global-alias dollar-double-quoted-argument + builtin arg0 + function arg0 + command arg0 + precommand arg0 + hashed-command arg0 + autodirectory arg0 + arg0_\* arg0 + + # TODO: Maybe these? — + # named-fd file-descriptor + # numeric-fd file-descriptor + + path_prefix path + # The path separator fallback won't ever be used, due to the optimisation + # in _zsh_highlight_main_highlighter_highlight_path_separators(). + path_pathseparator path + path_prefix_pathseparator path_prefix + + single-quoted-argument{-unclosed,} + double-quoted-argument{-unclosed,} + dollar-quoted-argument{-unclosed,} + back-quoted-argument{-unclosed,} + + command-substitution{-quoted,,-unquoted,} + command-substitution-delimiter{-quoted,,-unquoted,} + + command-substitution{-delimiter,} + process-substitution{-delimiter,} + back-quoted-argument{-delimiter,} + ) + local needle=$1 value + reply=($1) + while [[ -n ${value::=$fallback_of[(k)$needle]} ]]; do + unset "fallback_of[$needle]" # paranoia against infinite loops + reply+=($value) + needle=$value + done +} + +# Get the type of a command. +# +# Uses the zsh/parameter module if available to avoid forks, and a +# wrapper around 'type -w' as fallback. +# +# If $2 is 0, do not consider aliases. +# +# The result will be stored in REPLY. +_zsh_highlight_main__type() { + integer -r aliases_allowed=${2-1} + # We won't cache replies of anything that exists as an alias at all, to + # ensure the cached value is correct regardless of $aliases_allowed. + # + # ### We probably _should_ cache them in a cache that's keyed on the value of + # ### $aliases_allowed, on the assumption that aliases are the common case. + integer may_cache=1 + + # Cache lookup + if (( $+_zsh_highlight_main__command_type_cache )); then + REPLY=$_zsh_highlight_main__command_type_cache[(e)$1] + if [[ -n "$REPLY" ]]; then + return + fi + fi + + # Main logic + if (( $#options_to_set )); then + setopt localoptions $options_to_set; + fi + unset REPLY + if zmodload -e zsh/parameter; then + if (( $+aliases[(e)$1] )); then + may_cache=0 + fi + if (( ${+galiases[(e)$1]} )) && (( aliases_allowed )); then + REPLY='global alias' + elif (( $+aliases[(e)$1] )) && (( aliases_allowed )); then + REPLY=alias + elif [[ $1 == *.* && -n ${1%.*} ]] && (( $+saliases[(e)${1##*.}] )); then + REPLY='suffix alias' + elif (( $reswords[(Ie)$1] )); then + REPLY=reserved + elif (( $+functions[(e)$1] )); then + REPLY=function + elif (( $+builtins[(e)$1] )); then + REPLY=builtin + elif (( $+commands[(e)$1] )); then + REPLY=command + # None of the special hashes had a match, so fall back to 'type -w', for + # forward compatibility with future versions of zsh that may add new command + # types. + # + # zsh 5.2 and older have a bug whereby running 'type -w ./sudo' implicitly + # runs 'hash ./sudo=/usr/local/bin/./sudo' (assuming /usr/local/bin/sudo + # exists and is in $PATH). Avoid triggering the bug, at the expense of + # falling through to the $() below, incurring a fork. (Issue #354.) + # + # The first disjunct mimics the isrelative() C call from the zsh bug. + elif { [[ $1 != */* ]] || is-at-least 5.3 } && + # Add a subshell to avoid a zsh upstream bug; see issue #606. + # ### Remove the subshell when we stop supporting zsh 5.7.1 (I assume 5.8 will have the bugfix). + ! (builtin type -w -- "$1") >/dev/null 2>&1; then + REPLY=none + fi + fi + if ! (( $+REPLY )); then + # zsh/parameter not available or had no matches. + # + # Note that 'type -w' will run 'rehash' implicitly. + # + # We 'unalias' in a subshell, so the parent shell is not affected. + # + # The colon command is there just to avoid a command substitution that + # starts with an arithmetic expression [«((…))» as the first thing inside + # «$(…)»], which is area that has had some parsing bugs before 5.6 + # (approximately). + REPLY="${$(:; (( aliases_allowed )) || unalias -- "$1" 2>/dev/null; LC_ALL=C builtin type -w -- "$1" 2>/dev/null)##*: }" + if [[ $REPLY == 'alias' ]]; then + may_cache=0 + fi + fi + + # Cache population + if (( may_cache )) && (( $+_zsh_highlight_main__command_type_cache )); then + _zsh_highlight_main__command_type_cache[(e)$1]=$REPLY + fi + [[ -n $REPLY ]] + return $? +} + +# Checks whether $1 is something that can be run. +# +# Return 0 if runnable, 1 if not runnable, 2 if trouble. +_zsh_highlight_main__is_runnable() { + if _zsh_highlight_main__type "$1"; then + [[ $REPLY != none ]] + else + return 2 + fi +} + +# Check whether the first argument is a redirection operator token. +# Report result via the exit code. +_zsh_highlight_main__is_redirection() { + # A redirection operator token: + # - starts with an optional single-digit number; + # - is one of the tokens listed in zshmisc(1) + # - however (z) normalizes ! to | + [[ ${1#[0-9]} == (\<|\<\>|(\>|\>\>)(|\|)|\<\<(|-)|\<\<\<|\<\&|\&\<|(\>|\>\>)\&(|\|)|\&(\>|\>\>)(|\||\!)) ]] +} + +# Resolve alias. +# +# Takes a single argument. +# +# The result will be stored in REPLY. +_zsh_highlight_main__resolve_alias() { + if zmodload -e zsh/parameter; then + REPLY=${aliases[$arg]} + else + REPLY="${"$(alias -- $arg)"#*=}" + fi +} + +# Return true iff $1 is a global alias +_zsh_highlight_main__is_global_alias() { + if zmodload -e zsh/parameter; then + (( ${+galiases[$arg]} )) + elif [[ $arg == '='* ]]; then + # avoid running into «alias -L '=foo'» erroring out with 'bad assignment' + return 1 + else + alias -L -g -- "$1" >/dev/null + fi +} + +# Check that the top of $braces_stack has the expected value. If it does, set +# the style according to $2; otherwise, set style=unknown-token. +# +# $1: character expected to be at the top of $braces_stack +# $2: optional assignment to style it if matches +# return value is 0 if there is a match else 1 +_zsh_highlight_main__stack_pop() { + if [[ $braces_stack[1] == $1 ]]; then + braces_stack=${braces_stack:1} + if (( $+2 )); then + style=$2 + fi + return 0 + else + style=unknown-token + return 1 + fi +} + +# Main syntax highlighting function. +_zsh_highlight_highlighter_main_paint() +{ + setopt localoptions extendedglob + + # At the PS3 prompt and in vared, highlight nothing. + # + # (We can't check this in _zsh_highlight_highlighter_main_predicate because + # if the predicate returns false, the previous value of region_highlight + # would be reused.) + if [[ $CONTEXT == (select|vared) ]]; then + return + fi + + typeset -a ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR + typeset -a ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW + local -a options_to_set reply # used in callees + local REPLY + + # $flags_with_argument is a set of letters, corresponding to the option letters + # that would be followed by a colon in a getopts specification. + local flags_with_argument + # $flags_sans_argument is a set of letters, corresponding to the option letters + # that wouldn't be followed by a colon in a getopts specification. + local flags_sans_argument + # $flags_solo is a set of letters, corresponding to option letters that, if + # present, mean the precommand will not be acting as a precommand, i.e., will + # not be followed by a :start: word. + local flags_solo + # $precommand_options maps precommand name to values of $flags_with_argument, + # $flags_sans_argument, and flags_solo for that precommand, joined by a + # colon. (The value is NOT a getopt(3) spec, although it resembles one.) + # + # Currently, setting $flags_sans_argument is only important for commands that + # have a non-empty $flags_with_argument; see test-data/precommand4.zsh. + local -A precommand_options + precommand_options=( + # Precommand modifiers as of zsh 5.6.2 cf. zshmisc(1). + '-' '' + 'builtin' '' + 'command' :pvV + 'exec' a:cl + 'noglob' '' + # 'time' and 'nocorrect' shouldn't be added here; they're reserved words, not precommands. + + # miscellaneous commands + 'doas' aCu:Lns # as of OpenBSD's doas(1) dated September 4, 2016 + 'nice' n: # as of current POSIX spec + 'pkexec' '' # doesn't take short options; immune to #121 because it's usually not passed --option flags + # Not listed: -h, which has two different meanings. + 'sudo' Cgprtu:AEHPSbilns:eKkVv # as of sudo 1.8.21p2 + 'stdbuf' ioe: + 'eatmydata' '' + 'catchsegv' '' + 'nohup' '' + 'setsid' :wc + 'env' u:i + 'ionice' cn:t:pPu # util-linux 2.33.1-0.1 + 'strace' IbeaosXPpEuOS:ACdfhikqrtTvVxyDc # strace 4.26-0.2 + 'proxychains' f:q # proxychains 4.4.0 + 'torsocks' idq:upaP # Torsocks 2.3.0 + 'torify' idq:upaP # Torsocks 2.3.0 + 'ssh-agent' aEPt:csDd:k # As of OpenSSH 8.1p1 + 'tabbed' gnprtTuU:cdfhs:v # suckless-tools v44 + 'chronic' :ev # moreutils 0.62-1 + 'ifne' :n # moreutils 0.62-1 + 'grc' :se # grc - a "generic colouriser" (that's their spelling, not mine) + 'cpulimit' elp:ivz # cpulimit 0.2 + 'ktrace' fgpt:aBCcdiT + ) + # Commands that would need to skip one positional argument: + # flock + # ssh + # _wanted (skip two) + + if [[ $zsyh_user_options[ignorebraces] == on || ${zsyh_user_options[ignoreclosebraces]:-off} == on ]]; then + local right_brace_is_recognised_everywhere=false + else + local right_brace_is_recognised_everywhere=true + fi + + if [[ $zsyh_user_options[pathdirs] == on ]]; then + options_to_set+=( PATH_DIRS ) + fi + + ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR=( + '|' '||' ';' '&' '&&' + $'\n' # ${(z)} returns ';' but we convert it to $'\n' + '|&' + '&!' '&|' + # ### 'case' syntax, but followed by a pattern, not by a command + # ';;' ';&' ';|' + ) + + # Tokens that, at (naively-determined) "command position", are followed by + # a de jure command position. All of these are reserved words. + ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW=( + $'\x7b' # block + $'\x28' # subshell + '()' # anonymous function + 'while' + 'until' + 'if' + 'then' + 'elif' + 'else' + 'do' + 'time' + 'coproc' + '!' # reserved word; unrelated to $histchars[1] + ) + + if (( $+X_ZSH_HIGHLIGHT_DIRS_BLACKLIST )); then + print >&2 'zsh-syntax-highlighting: X_ZSH_HIGHLIGHT_DIRS_BLACKLIST is deprecated. Please use ZSH_HIGHLIGHT_DIRS_BLACKLIST.' + ZSH_HIGHLIGHT_DIRS_BLACKLIST=($X_ZSH_HIGHLIGHT_DIRS_BLACKLIST) + unset X_ZSH_HIGHLIGHT_DIRS_BLACKLIST + fi + + _zsh_highlight_main_highlighter_highlight_list -$#PREBUFFER '' 1 "$PREBUFFER$BUFFER" + + # end is a reserved word + local start end_ style + for start end_ style in $reply; do + (( start >= end_ )) && { print -r -- >&2 "zsh-syntax-highlighting: BUG: _zsh_highlight_highlighter_main_paint: start($start) >= end($end_)"; return } + (( end_ <= 0 )) && continue + (( start < 0 )) && start=0 # having start<0 is normal with e.g. multiline strings + _zsh_highlight_main_calculate_fallback $style + _zsh_highlight_add_highlight $start $end_ $reply + done +} + +# Try to expand $1, if it's possible to do so safely. +# +# Uses two parameters from the caller: $parameter_name_pattern and $res. +# +# If expansion was done, set $reply to the expansion and return true. +# Otherwise, return false. +_zsh_highlight_main_highlighter__try_expand_parameter() +{ + local arg="$1" + unset reply + { + # ### For now, expand just '$foo' or '${foo}', possibly with braces, but with + # ### no other features of the parameter expansion syntax. (No ${(x)foo}, + # ### no ${foo[x]}, no ${foo:-x}.) + { + local -a match mbegin mend + local MATCH; integer MBEGIN MEND + local parameter_name + local -a words + if [[ $arg[1] != '$' ]]; then + return 1 + fi + if [[ ${arg[2]} == '{' ]] && [[ ${arg[-1]} == '}' ]]; then + parameter_name=${${arg:2}%?} + else + parameter_name=${arg:1} + fi + if [[ $res == none ]] && + [[ ${parameter_name} =~ ^${~parameter_name_pattern}$ ]] && + [[ ${(tP)MATCH} != *special* ]] + then + # Set $arg and update $res. + case ${(tP)MATCH} in + (*array*|*assoc*) + words=( ${(P)MATCH} ) + ;; + ("") + # not set + words=( ) + ;; + (*) + # scalar, presumably + if [[ $zsyh_user_options[shwordsplit] == on ]]; then + words=( ${(P)=MATCH} ) + else + words=( ${(P)MATCH} ) + fi + ;; + esac + reply=( "${words[@]}" ) + else + return 1 + fi + } + } +} + +# $1 is the offset of $4 from the parent buffer. Added to the returned highlights. +# $2 is the initial braces_stack (for a closing paren). +# $3 is 1 if $4 contains the end of $BUFFER, else 0. +# $4 is the buffer to highlight. +# Returns: +# $REPLY: $buf[REPLY] is the last character parsed. +# $reply is an array of region_highlight additions. +# exit code is 0 if the braces_stack is empty, 1 otherwise. +_zsh_highlight_main_highlighter_highlight_list() +{ + integer start_pos end_pos=0 buf_offset=$1 has_end=$3 + # alias_style is the style to apply to an alias once $#in_alias == 0 + # Usually 'alias' but set to 'unknown-token' if any word expanded from + # the alias would be highlighted as unknown-token + # param_style is analogous for parameter expansions + local alias_style param_style last_arg arg buf=$4 highlight_glob=true saw_assignment=false style + local in_array_assignment=false # true between 'a=(' and the matching ')' + # in_alias is an array of integers with each element equal to the number + # of shifts needed until arg=args[1] pops an arg from the next level up + # alias or from BUFFER. + # in_param is analogous for parameter expansions + integer in_param=0 len=$#buf + local -a in_alias match mbegin mend list_highlights + # seen_alias is a map of aliases already seen to avoid loops like alias a=b b=a + local -A seen_alias + # Pattern for parameter names + readonly parameter_name_pattern='([A-Za-z_][A-Za-z0-9_]*|[0-9]+)' + list_highlights=() + + # "R" for round + # "Q" for square + # "Y" for curly + # "T" for [[ ]] + # "S" for $( ), =( ), <( ), >( ) + # "D" for do/done + # "$" for 'end' (matches 'foreach' always; also used with cshjunkiequotes in repeat/while) + # "?" for 'if'/'fi'; also checked by 'elif'/'else' + # ":" for 'then' + local braces_stack=$2 + + # State machine + # + # The states are: + # - :start: Command word + # - :start_of_pipeline: Start of a 'pipeline' as defined in zshmisc(1). + # Only valid when :start: is present + # - :sudo_opt: A leading-dash option to a precommand, whether it takes an + # argument or not. (Example: sudo's "-u" or "-i".) + # - :sudo_arg: The argument to a precommand's leading-dash option, + # when given as a separate word; i.e., "foo" in "-u foo" (two + # words) but not in "-ufoo" (one word). + # Note: :sudo_opt: and :sudo_arg: are used for any precommand + # declared in ${precommand_options}, not just for sudo(8). + # The naming is historical. + # - :regular: "Not a command word", and command delimiters are permitted. + # Mainly used to detect premature termination of commands. + # - :always: The word 'always' in the «{ foo } always { bar }» syntax. + # + # When the kind of a word is not yet known, $this_word / $next_word may contain + # multiple states. For example, after "sudo -i", the next word may be either + # another --flag or a command name, hence the state would include both ':start:' + # and ':sudo_opt:'. + # + # The tokens are always added with both leading and trailing colons to serve as + # word delimiters (an improvised array); [[ $x == *':foo:'* ]] and x=${x//:foo:/} + # will DTRT regardless of how many elements or repetitions $x has. + # + # Handling of redirections: upon seeing a redirection token, we must stall + # the current state --- that is, the value of $this_word --- for two iterations + # (one for the redirection operator, one for the word following it representing + # the redirection target). Therefore, we set $in_redirection to 2 upon seeing a + # redirection operator, decrement it each iteration, and stall the current state + # when it is non-zero. Thus, upon reaching the next word (the one that follows + # the redirection operator and target), $this_word will still contain values + # appropriate for the word immediately following the word that preceded the + # redirection operator. + # + # The "the previous word was a redirection operator" state is not communicated + # to the next iteration via $next_word/$this_word as usual, but via + # $in_redirection. The value of $next_word from the iteration that processed + # the operator is discarded. + # + # $in_redirection is currently used for: + # - comments + # - aliases + # - redirections + # - parameter elision in command position + # - 'repeat' loops + # + local this_word next_word=':start::start_of_pipeline:' + integer in_redirection + # Processing buffer + local proc_buf="$buf" + local -a args + if [[ $zsyh_user_options[interactivecomments] == on ]]; then + args=(${(zZ+c+)buf}) + else + args=(${(z)buf}) + fi + + # Special case: $(<*) isn't globbing. + if [[ $braces_stack == 'S' ]] && (( $+args[3] && ! $+args[4] )) && [[ $args[3] == $'\x29' ]] && + [[ $args[1] == *'<'* ]] && _zsh_highlight_main__is_redirection $args[1]; then + highlight_glob=false + fi + + while (( $#args )); do + last_arg=$arg + arg=$args[1] + shift args + if (( $#in_alias )); then + (( in_alias[1]-- )) + # Remove leading 0 entries + in_alias=($in_alias[$in_alias[(i)<1->],-1]) + if (( $#in_alias == 0 )); then + seen_alias=() + # start_pos and end_pos are of the alias (previous $arg) here + _zsh_highlight_main_add_region_highlight $start_pos $end_pos $alias_style + else + # We can't unset keys that contain special characters (] \ and some others). + # More details: https://www.zsh.org/workers/43269 + (){ + local alias_name + for alias_name in ${(k)seen_alias[(R)<$#in_alias->]}; do + seen_alias=("${(@kv)seen_alias[(I)^$alias_name]}") + done + } + fi + fi + if (( in_param )); then + (( in_param-- )) + if (( in_param == 0 )); then + # start_pos and end_pos are of the '$foo' word (previous $arg) here + _zsh_highlight_main_add_region_highlight $start_pos $end_pos $param_style + param_style="" + fi + fi + + # Initialize this_word and next_word. + if (( in_redirection == 0 )); then + this_word=$next_word + next_word=':regular:' + elif (( !in_param )); then + # Stall $next_word. + (( --in_redirection )) + fi + + # Initialize per-"simple command" [zshmisc(1)] variables: + # + # $style how to highlight $arg + # $in_array_assignment boolean flag for "between '(' and ')' of array assignment" + # $highlight_glob boolean flag for "'noglob' is in effect" + # $saw_assignment boolean flag for "was preceded by an assignment" + # + style=unknown-token + if [[ $this_word == *':start:'* ]]; then + in_array_assignment=false + if [[ $arg == 'noglob' ]]; then + highlight_glob=false + fi + fi + + if (( $#in_alias == 0 && in_param == 0 )); then + # Compute the new $start_pos and $end_pos, skipping over whitespace in $buf. + [[ "$proc_buf" = (#b)(#s)(''([ $'\t']|[\\]$'\n')#)(?|)* ]] + # The first, outer parenthesis + integer offset="${#match[1]}" + (( start_pos = end_pos + offset )) + (( end_pos = start_pos + $#arg )) + + # The zsh lexer considers ';' and newline to be the same token, so + # ${(z)} converts all newlines to semicolons. Convert them back here to + # make later processing simpler. + [[ $arg == ';' && ${match[3]} == $'\n' ]] && arg=$'\n' + + # Compute the new $proc_buf. We advance it + # (chop off characters from the beginning) + # beyond what end_pos points to, by skipping + # as many characters as end_pos was advanced. + # + # end_pos was advanced by $offset (via start_pos) + # and by $#arg. Note the `start_pos=$end_pos` + # below. + # + # As for the [,len]. We could use [,len-start_pos+offset] + # here, but to make it easier on eyes, we use len and + # rely on the fact that Zsh simply handles that. The + # length of proc_buf is len-start_pos+offset because + # we're chopping it to match current start_pos, so its + # length matches the previous value of start_pos. + # + # Why [,-1] is slower than [,length] isn't clear. + proc_buf="${proc_buf[offset + $#arg + 1,len]}" + fi + + # Handle the INTERACTIVE_COMMENTS option. + # + # We use the (Z+c+) flag so the entire comment is presented as one token in $arg. + if [[ $zsyh_user_options[interactivecomments] == on && $arg[1] == $histchars[3] ]]; then + if [[ $this_word == *(':regular:'|':start:')* ]]; then + style=comment + else + style=unknown-token # prematurely terminated + fi + _zsh_highlight_main_add_region_highlight $start_pos $end_pos $style + # Stall this arg + in_redirection=1 + continue + fi + + if [[ $this_word == *':start:'* ]] && ! (( in_redirection )); then + # Expand aliases. + # An alias is ineligible for expansion while it's being expanded (see #652/#653). + _zsh_highlight_main__type "$arg" "$(( ! ${+seen_alias[$arg]} ))" + local res="$REPLY" + if [[ $res == "alias" ]]; then + # Mark insane aliases as unknown-token (cf. #263). + if [[ $arg == ?*=* ]]; then + _zsh_highlight_main_add_region_highlight $start_pos $end_pos unknown-token + continue + fi + seen_alias[$arg]=$#in_alias + _zsh_highlight_main__resolve_alias $arg + local -a alias_args + # Elision is desired in case alias x='' + if [[ $zsyh_user_options[interactivecomments] == on ]]; then + alias_args=(${(zZ+c+)REPLY}) + else + alias_args=(${(z)REPLY}) + fi + args=( $alias_args $args ) + if (( $#in_alias == 0 )); then + alias_style=alias + else + # Transfer the count of this arg to the new element about to be appended. + (( in_alias[1]-- )) + fi + # Add one because we will in_alias[1]-- on the next loop iteration so + # this iteration should be considered in in_alias as well + in_alias=( $(($#alias_args + 1)) $in_alias ) + (( in_redirection++ )) # Stall this arg + continue + else + _zsh_highlight_main_highlighter_expand_path $arg + _zsh_highlight_main__type "$REPLY" 0 + res="$REPLY" + fi + fi + + # Analyse the current word. + if _zsh_highlight_main__is_redirection $arg ; then + if (( in_redirection == 1 )); then + # Two consecutive redirection operators is an error. + _zsh_highlight_main_add_region_highlight $start_pos $end_pos unknown-token + else + in_redirection=2 + _zsh_highlight_main_add_region_highlight $start_pos $end_pos redirection + fi + continue + elif [[ $arg == '{'${~parameter_name_pattern}'}' ]] && _zsh_highlight_main__is_redirection $args[1]; then + # named file descriptor: {foo}>&2 + in_redirection=3 + _zsh_highlight_main_add_region_highlight $start_pos $end_pos named-fd + continue + fi + + # Expand parameters. + if (( ! in_param )) && _zsh_highlight_main_highlighter__try_expand_parameter "$arg"; then + # That's not entirely correct --- if the parameter's value happens to be a reserved + # word, the parameter expansion will be highlighted as a reserved word --- but that + # incorrectness is outweighed by the usability improvement of permitting the use of + # parameters that refer to commands, functions, and builtins. + () { + local -a words; words=( "${reply[@]}" ) + if (( $#words == 0 )) && (( ! in_redirection )); then + # Parameter elision is happening + (( ++in_redirection )) + _zsh_highlight_main_add_region_highlight $start_pos $end_pos comment + continue + else + (( in_param = 1 + $#words )) + args=( $words $args ) + arg=$args[1] + _zsh_highlight_main__type "$arg" 0 + res=$REPLY + fi + } + fi + + # Parse the sudo command line + if (( ! in_redirection )); then + if [[ $this_word == *':sudo_opt:'* ]]; then + if [[ -n $flags_with_argument ]] && + { + # Trenary + if [[ -n $flags_sans_argument ]] + then [[ $arg == '-'[$flags_sans_argument]#[$flags_with_argument] ]] + else [[ $arg == '-'[$flags_with_argument] ]] + fi + } then + # Flag that requires an argument + this_word=${this_word//:start:/} + next_word=':sudo_arg:' + elif [[ -n $flags_with_argument ]] && + { + # Trenary + if [[ -n $flags_sans_argument ]] + then [[ $arg == '-'[$flags_sans_argument]#[$flags_with_argument]* ]] + else [[ $arg == '-'[$flags_with_argument]* ]] + fi + } then + # Argument attached in the same word + this_word=${this_word//:start:/} + next_word+=':start:' + next_word+=':sudo_opt:' + elif [[ -n $flags_sans_argument ]] && + [[ $arg == '-'[$flags_sans_argument]# ]]; then + # Flag that requires no argument + this_word=':sudo_opt:' + next_word+=':start:' + next_word+=':sudo_opt:' + elif [[ -n $flags_solo ]] && + { + # Trenary + if [[ -n $flags_sans_argument ]] + then [[ $arg == '-'[$flags_sans_argument]#[$flags_solo]* ]] + else [[ $arg == '-'[$flags_solo]* ]] + fi + } then + # Solo flags + this_word=':sudo_opt:' + next_word=':regular:' # no :start:, nor :sudo_opt: since we don't know whether the solo flag takes an argument or not + elif [[ $arg == '-'* ]]; then + # Unknown flag. We don't know whether it takes an argument or not, + # so modify $next_word as we do for flags that require no argument. + # With that behaviour, if the flag in fact takes no argument we'll + # highlight the inner command word correctly, and if it does take an + # argument we'll highlight the command word correctly if the argument + # was given in the same shell word as the flag (as in '-uphy1729' or + # '--user=phy1729' without spaces). + this_word=':sudo_opt:' + next_word+=':start:' + next_word+=':sudo_opt:' + else + # Not an option flag; nothing to do. (If the command line is + # syntactically valid, ${this_word//:sudo_opt:/} should be + # non-empty now.) + this_word=${this_word//:sudo_opt:/} + fi + elif [[ $this_word == *':sudo_arg:'* ]]; then + next_word+=':sudo_opt:' + next_word+=':start:' + fi + fi + + # The Great Fork: is this a command word? Is this a non-command word? + if [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR:#"$arg"} ]] && + [[ $braces_stack != *T* || $arg != ('||'|'&&') ]]; then + + # First, determine the style of the command separator itself. + if _zsh_highlight_main__stack_pop T || _zsh_highlight_main__stack_pop Q; then + # Missing closing square bracket(s) + style=unknown-token + elif $in_array_assignment; then + case $arg in + # Literal newlines are just fine. + ($'\n') style=commandseparator;; + # Semicolons are parsed the same way as literal newlines. Nevertheless, + # highlight them as errors since they're probably unintended. Compare + # issue #691. + (';') style=unknown-token;; + # Other command separators aren't allowed. + (*) style=unknown-token;; + esac + elif [[ $this_word == *':regular:'* ]]; then + style=commandseparator + elif [[ $this_word == *':start:'* ]] && [[ $arg == $'\n' ]]; then + style=commandseparator + elif [[ $this_word == *':start:'* ]] && [[ $arg == ';' ]] && (( $#in_alias )); then + style=commandseparator + else + # Empty commands (semicolon follows nothing) are valid syntax. + # However, in interactive use they are likely to be erroneous; + # therefore, we highlight them as errors. + # + # Alias definitions are exempted from this check to allow multiline aliases + # with explicit (redundant) semicolons: «alias foo=$'bar;\nbaz'» (issue #677). + # + # See also #691 about possibly changing the style used here. + style=unknown-token + fi + + # Second, determine the style of next_word. + if [[ $arg == $'\n' ]] && $in_array_assignment; then + # literal newline inside an array assignment + next_word=':regular:' + elif [[ $arg == ';' ]] && $in_array_assignment; then + # literal semicolon inside an array assignment + next_word=':regular:' + else + next_word=':start:' + highlight_glob=true + saw_assignment=false + (){ + local alias_name + for alias_name in ${(k)seen_alias[(R)<$#in_alias->]}; do + # We can't unset keys that contain special characters (] \ and some others). + # More details: https://www.zsh.org/workers/43269 + seen_alias=("${(@kv)seen_alias[(I)^$alias_name]}") + done + } + if [[ $arg != '|' && $arg != '|&' ]]; then + next_word+=':start_of_pipeline:' + fi + fi + + elif ! (( in_redirection)) && [[ $this_word == *':always:'* && $arg == 'always' ]]; then + # try-always construct + style=reserved-word # de facto a reserved word, although not de jure + highlight_glob=true + saw_assignment=false + next_word=':start::start_of_pipeline:' # only left brace is allowed, apparently + elif ! (( in_redirection)) && [[ $this_word == *':start:'* ]]; then # $arg is the command word + if (( ${+precommand_options[$arg]} )) && _zsh_highlight_main__is_runnable $arg; then + style=precommand + () { + set -- "${(@s.:.)precommand_options[$arg]}" + flags_with_argument=$1 + flags_sans_argument=$2 + flags_solo=$3 + } + next_word=${next_word//:regular:/} + next_word+=':sudo_opt:' + next_word+=':start:' + if [[ $arg == 'exec' || $arg == 'env' ]]; then + # To allow "exec 2>&1;" and "env | grep" where there's no command word + next_word+=':regular:' + fi + else + case $res in + (reserved) # reserved word + style=reserved-word + # Match braces and handle special cases. + case $arg in + (time|nocorrect) + next_word=${next_word//:regular:/} + next_word+=':start:' + ;; + ($'\x7b') + braces_stack='Y'"$braces_stack" + ;; + ($'\x7d') + # We're at command word, so no need to check $right_brace_is_recognised_everywhere + _zsh_highlight_main__stack_pop 'Y' reserved-word + if [[ $style == reserved-word ]]; then + next_word+=':always:' + fi + ;; + ($'\x5b\x5b') + braces_stack='T'"$braces_stack" + ;; + ('do') + braces_stack='D'"$braces_stack" + ;; + ('done') + _zsh_highlight_main__stack_pop 'D' reserved-word + ;; + ('if') + braces_stack=':?'"$braces_stack" + ;; + ('then') + _zsh_highlight_main__stack_pop ':' reserved-word + ;; + ('elif') + if [[ ${braces_stack[1]} == '?' ]]; then + braces_stack=':'"$braces_stack" + else + style=unknown-token + fi + ;; + ('else') + if [[ ${braces_stack[1]} == '?' ]]; then + : + else + style=unknown-token + fi + ;; + ('fi') + _zsh_highlight_main__stack_pop '?' + ;; + ('foreach') + braces_stack='$'"$braces_stack" + ;; + ('end') + _zsh_highlight_main__stack_pop '$' reserved-word + ;; + ('repeat') + # skip the repeat-count word + in_redirection=2 + # The redirection mechanism assumes $this_word describes the word + # following the redirection. Make it so. + # + # That word can be a command word with shortloops (`repeat 2 ls`) + # or a command separator (`repeat 2; ls` or `repeat 2; do ls; done`). + # + # The repeat-count word will be handled like a redirection target. + this_word=':start::regular:' + ;; + ('!') + if [[ $this_word != *':start_of_pipeline:'* ]]; then + style=unknown-token + else + # '!' reserved word at start of pipeline; style already set above + fi + ;; + esac + if $saw_assignment && [[ $style != unknown-token ]]; then + style=unknown-token + fi + ;; + ('suffix alias') + style=suffix-alias + ;; + ('global alias') + style=global-alias + ;; + (alias) :;; + (builtin) style=builtin + [[ $arg == $'\x5b' ]] && braces_stack='Q'"$braces_stack" + ;; + (function) style=function;; + (command) style=command;; + (hashed) style=hashed-command;; + (none) if (( ! in_param )) && _zsh_highlight_main_highlighter_check_assign; then + _zsh_highlight_main_add_region_highlight $start_pos $end_pos assign + local i=$(( arg[(i)=] + 1 )) + saw_assignment=true + if [[ $arg[i] == '(' ]]; then + in_array_assignment=true + _zsh_highlight_main_add_region_highlight start_pos+i-1 start_pos+i reserved-word + else + # assignment to a scalar parameter. + # (For array assignments, the command doesn't start until the ")" token.) + # + # Discard :start_of_pipeline:, if present, as '!' is not valid + # after assignments. + next_word+=':start:' + if (( i <= $#arg )); then + () { + local highlight_glob=false + [[ $zsyh_user_options[globassign] == on ]] && highlight_glob=true + _zsh_highlight_main_highlighter_highlight_argument $i + } + fi + fi + continue + elif (( ! in_param )) && + [[ $arg[0,1] = $histchars[0,1] ]] && (( $#arg[0,2] == 2 )); then + style=history-expansion + elif (( ! in_param )) && + [[ $arg[0,1] == $histchars[2,2] ]]; then + style=history-expansion + elif (( ! in_param )) && + ! $saw_assignment && + [[ $arg[1,2] == '((' ]]; then + # Arithmetic evaluation. + # + # Note: prior to zsh-5.1.1-52-g4bed2cf (workers/36669), the ${(z)...} + # splitter would only output the '((' token if the matching '))' had + # been typed. Therefore, under those versions of zsh, BUFFER="(( 42" + # would be highlighted as an error until the matching "))" are typed. + # + # We highlight just the opening parentheses, as a reserved word; this + # is how [[ ... ]] is highlighted, too. + _zsh_highlight_main_add_region_highlight $start_pos $((start_pos + 2)) reserved-word + if [[ $arg[-2,-1] == '))' ]]; then + _zsh_highlight_main_add_region_highlight $((end_pos - 2)) $end_pos reserved-word + fi + continue + elif (( ! in_param )) && + [[ $arg == '()' ]]; then + # anonymous function + style=reserved-word + elif (( ! in_param )) && + ! $saw_assignment && + [[ $arg == $'\x28' ]]; then + # subshell + style=reserved-word + braces_stack='R'"$braces_stack" + elif (( ! in_param )) && + [[ $arg == $'\x29' ]]; then + # end of subshell or command substitution + if _zsh_highlight_main__stack_pop 'S'; then + REPLY=$start_pos + reply=($list_highlights) + return 0 + fi + _zsh_highlight_main__stack_pop 'R' reserved-word + else + if _zsh_highlight_main_highlighter_check_path $arg 1; then + style=$REPLY + else + style=unknown-token + fi + fi + ;; + (*) _zsh_highlight_main_add_region_highlight $start_pos $end_pos arg0_$res + continue + ;; + esac + fi + if [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW:#"$arg"} ]]; then + next_word=':start::start_of_pipeline:' + fi + elif _zsh_highlight_main__is_global_alias "$arg"; then # $arg is a global alias that isn't in command position + style=global-alias + else # $arg is a non-command word + case $arg in + ($'\x29') + # subshell or end of array assignment + if $in_array_assignment; then + _zsh_highlight_main_add_region_highlight $start_pos $end_pos assign + _zsh_highlight_main_add_region_highlight $start_pos $end_pos reserved-word + in_array_assignment=false + next_word+=':start:' + continue + elif (( in_redirection )); then + style=unknown-token + else + if _zsh_highlight_main__stack_pop 'S'; then + REPLY=$start_pos + reply=($list_highlights) + return 0 + fi + _zsh_highlight_main__stack_pop 'R' reserved-word + fi + ;; + ($'\x28\x29') + # possibly a function definition + if (( in_redirection )) || $in_array_assignment; then + style=unknown-token + else + if [[ $zsyh_user_options[multifuncdef] == on ]] || false # TODO: or if the previous word was a command word + then + next_word+=':start::start_of_pipeline:' + fi + style=reserved-word + fi + ;; + (*) if false; then + elif [[ $arg = $'\x7d' ]] && $right_brace_is_recognised_everywhere; then + # Parsing rule: { + # + # Additionally, `tt(})' is recognized in any position if neither the + # tt(IGNORE_BRACES) option nor the tt(IGNORE_CLOSE_BRACES) option is set. + if (( in_redirection )) || $in_array_assignment; then + style=unknown-token + else + _zsh_highlight_main__stack_pop 'Y' reserved-word + if [[ $style == reserved-word ]]; then + next_word+=':always:' + fi + fi + elif [[ $arg[0,1] = $histchars[0,1] ]] && (( $#arg[0,2] == 2 )); then + style=history-expansion + elif [[ $arg == $'\x5d\x5d' ]] && _zsh_highlight_main__stack_pop 'T' reserved-word; then + : + elif [[ $arg == $'\x5d' ]] && _zsh_highlight_main__stack_pop 'Q' builtin; then + : + else + _zsh_highlight_main_highlighter_highlight_argument 1 $(( 1 != in_redirection )) + continue + fi + ;; + esac + fi + _zsh_highlight_main_add_region_highlight $start_pos $end_pos $style + done + (( $#in_alias )) && in_alias=() _zsh_highlight_main_add_region_highlight $start_pos $end_pos $alias_style + (( in_param == 1 )) && in_param=0 _zsh_highlight_main_add_region_highlight $start_pos $end_pos $param_style + [[ "$proc_buf" = (#b)(#s)(([[:space:]]|\\$'\n')#) ]] + REPLY=$(( end_pos + ${#match[1]} - 1 )) + reply=($list_highlights) + return $(( $#braces_stack > 0 )) +} + +# Check if $arg is variable assignment +_zsh_highlight_main_highlighter_check_assign() +{ + setopt localoptions extended_glob + [[ $arg == [[:alpha:]_][[:alnum:]_]#(|\[*\])(|[+])=* ]] || + [[ $arg == [0-9]##(|[+])=* ]] +} + +_zsh_highlight_main_highlighter_highlight_path_separators() +{ + local pos style_pathsep + style_pathsep=$1_pathseparator + reply=() + [[ -z "$ZSH_HIGHLIGHT_STYLES[$style_pathsep]" || "$ZSH_HIGHLIGHT_STYLES[$1]" == "$ZSH_HIGHLIGHT_STYLES[$style_pathsep]" ]] && return 0 + for (( pos = start_pos; $pos <= end_pos; pos++ )) ; do + if [[ $BUFFER[pos] == / ]]; then + reply+=($((pos - 1)) $pos $style_pathsep) + fi + done +} + +# Check if $1 is a path. +# If yes, return 0 and in $REPLY the style to use. +# Else, return non-zero (and the contents of $REPLY is undefined). +# +# $2 should be non-zero iff we're in command position. +_zsh_highlight_main_highlighter_check_path() +{ + _zsh_highlight_main_highlighter_expand_path "$1" + local expanded_path="$REPLY" tmp_path + integer in_command_position=$2 + + if [[ $zsyh_user_options[autocd] == on ]]; then + integer autocd=1 + else + integer autocd=0 + fi + + if (( in_command_position )); then + # ### Currently, this value is never returned: either it's overwritten + # ### below, or the return code is non-zero + REPLY=arg0 + else + REPLY=path + fi + + if [[ ${1[1]} == '=' && $1 == ??* && ${1[2]} != $'\x28' && $zsyh_user_options[equals] == 'on' && $expanded_path[1] != '/' ]]; then + REPLY=unknown-token # will error out if executed + return 0 + fi + + [[ -z $expanded_path ]] && return 1 + + # Check if this is a blacklisted path + if [[ $expanded_path[1] == / ]]; then + tmp_path=$expanded_path + else + tmp_path=$PWD/$expanded_path + fi + tmp_path=$tmp_path:a + + while [[ $tmp_path != / ]]; do + [[ -n ${(M)ZSH_HIGHLIGHT_DIRS_BLACKLIST:#$tmp_path} ]] && return 1 + tmp_path=$tmp_path:h + done + + if (( in_command_position )); then + if [[ -x $expanded_path ]]; then + if (( autocd )); then + if [[ -d $expanded_path ]]; then + REPLY=autodirectory + fi + return 0 + elif [[ ! -d $expanded_path ]]; then + # ### This seems unreachable for the current callers + return 0 + fi + fi + else + if [[ -L $expanded_path || -e $expanded_path ]]; then + return 0 + fi + fi + + # Search the path in CDPATH + if [[ $expanded_path != /* ]] && (( autocd || ! in_command_position )); then + # TODO: When we've dropped support for pre-5.0.6 zsh, use the *(Y1) glob qualifier here. + local cdpath_dir + for cdpath_dir in $cdpath ; do + if [[ -d "$cdpath_dir/$expanded_path" && -x "$cdpath_dir/$expanded_path" ]]; then + if (( in_command_position && autocd )); then + REPLY=autodirectory + fi + return 0 + fi + done + fi + + # If dirname($1) doesn't exist, neither does $1. + [[ ! -d ${expanded_path:h} ]] && return 1 + + # If this word ends the buffer, check if it's the prefix of a valid path. + if (( has_end && (len == end_pos) )) && + (( ! $#in_alias )) && + [[ $WIDGET != zle-line-finish ]]; then + # TODO: When we've dropped support for pre-5.0.6 zsh, use the *(Y1) glob qualifier here. + local -a tmp + if (( in_command_position )); then + # We include directories even when autocd is enabled, because those + # directories might contain executable files: e.g., BUFFER="/bi" en route + # to typing "/bin/sh". + tmp=( ${expanded_path}*(N-*,N-/) ) + else + tmp=( ${expanded_path}*(N) ) + fi + (( ${+tmp[1]} )) && REPLY=path_prefix && return 0 + fi + + # It's not a path. + return 1 +} + +# Highlight an argument and possibly special chars in quotes starting at $1 in $arg +# This command will at least highlight $1 to end_pos with the default style +# If $2 is set to 0, the argument cannot be highlighted as an option. +# +# This function currently assumes it's never called for the command word. +_zsh_highlight_main_highlighter_highlight_argument() +{ + local base_style=default i=$1 option_eligible=${2:-1} path_eligible=1 ret start style + local -a highlights + + local -a match mbegin mend + local MATCH; integer MBEGIN MEND + + case "$arg[i]" in + '%') + if [[ $arg[i+1] == '?' ]]; then + (( i += 2 )) + fi + ;; + '-') + if (( option_eligible )); then + if [[ $arg[i+1] == - ]]; then + base_style=double-hyphen-option + else + base_style=single-hyphen-option + fi + path_eligible=0 + fi + ;; + '=') + if [[ $arg[i+1] == $'\x28' ]]; then + (( i += 2 )) + _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,-1] + ret=$? + (( i += REPLY )) + highlights+=( + $(( start_pos + $1 - 1 )) $(( start_pos + i )) process-substitution + $(( start_pos + $1 - 1 )) $(( start_pos + $1 + 1 )) process-substitution-delimiter + $reply + ) + if (( ret == 0 )); then + highlights+=($(( start_pos + i - 1 )) $(( start_pos + i )) process-substitution-delimiter) + fi + fi + esac + + # This loop is a hot path. Keep it fast! + (( --i )) + while (( ++i <= $#arg )); do + i=${arg[(ib.i.)[\\\'\"\`\$\<\>\*\?]]} + case "$arg[$i]" in + "") break;; + "\\") (( i += 1 )); continue;; + "'") + _zsh_highlight_main_highlighter_highlight_single_quote $i + (( i = REPLY )) + highlights+=($reply) + ;; + '"') + _zsh_highlight_main_highlighter_highlight_double_quote $i + (( i = REPLY )) + highlights+=($reply) + ;; + '`') + _zsh_highlight_main_highlighter_highlight_backtick $i + (( i = REPLY )) + highlights+=($reply) + ;; + '$') + if [[ $arg[i+1] != "'" ]]; then + path_eligible=0 + fi + if [[ $arg[i+1] == "'" ]]; then + _zsh_highlight_main_highlighter_highlight_dollar_quote $i + (( i = REPLY )) + highlights+=($reply) + continue + elif [[ $arg[i+1] == $'\x28' ]]; then + if [[ $arg[i+2] == $'\x28' ]] && _zsh_highlight_main_highlighter_highlight_arithmetic $i; then + # Arithmetic expansion + (( i = REPLY )) + highlights+=($reply) + continue + fi + start=$i + (( i += 2 )) + _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,-1] + ret=$? + (( i += REPLY )) + highlights+=( + $(( start_pos + start - 1)) $(( start_pos + i )) command-substitution-unquoted + $(( start_pos + start - 1)) $(( start_pos + start + 1)) command-substitution-delimiter-unquoted + $reply + ) + if (( ret == 0 )); then + highlights+=($(( start_pos + i - 1)) $(( start_pos + i )) command-substitution-delimiter-unquoted) + fi + continue + fi + while [[ $arg[i+1] == [=~#+'^'] ]]; do + (( i += 1 )) + done + if [[ $arg[i+1] == [*@#?$!-] ]]; then + (( i += 1 )) + fi;; + [\<\>]) + if [[ $arg[i+1] == $'\x28' ]]; then # \x28 = open paren + start=$i + (( i += 2 )) + _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,-1] + ret=$? + (( i += REPLY )) + highlights+=( + $(( start_pos + start - 1)) $(( start_pos + i )) process-substitution + $(( start_pos + start - 1)) $(( start_pos + start + 1 )) process-substitution-delimiter + $reply + ) + if (( ret == 0 )); then + highlights+=($(( start_pos + i - 1)) $(( start_pos + i )) process-substitution-delimiter) + fi + continue + fi + ;| + *) + if $highlight_glob && + [[ $zsyh_user_options[multios] == on || $in_redirection -eq 0 ]] && + [[ ${arg[$i]} =~ ^[*?] || ${arg:$i-1} =~ ^\<[0-9]*-[0-9]*\> ]]; then + highlights+=($(( start_pos + i - 1 )) $(( start_pos + i + $#MATCH - 1)) globbing) + (( i += $#MATCH - 1 )) + path_eligible=0 + else + continue + fi + ;; + esac + done + + if (( path_eligible )); then + if (( in_redirection )) && [[ $last_arg == *['<>']['&'] && $arg[$1,-1] == (<0->|p|-) ]]; then + if [[ $arg[$1,-1] == (p|-) ]]; then + base_style=redirection + else + base_style=numeric-fd + fi + # This function is currently never called for the command word, so $2 is hard-coded as 0. + elif _zsh_highlight_main_highlighter_check_path $arg[$1,-1] 0; then + base_style=$REPLY + _zsh_highlight_main_highlighter_highlight_path_separators $base_style + highlights+=($reply) + fi + fi + + highlights=($(( start_pos + $1 - 1 )) $end_pos $base_style $highlights) + _zsh_highlight_main_add_many_region_highlights $highlights +} + +# Quote Helper Functions +# +# $arg is expected to be set to the current argument +# $start_pos is expected to be set to the start of $arg in $BUFFER +# $1 is the index in $arg which starts the quote +# $REPLY is returned as the end of quote index in $arg +# $reply is returned as an array of region_highlight additions + +# Highlight single-quoted strings +_zsh_highlight_main_highlighter_highlight_single_quote() +{ + local arg1=$1 i q=\' style + i=$arg[(ib:arg1+1:)$q] + reply=() + + if [[ $zsyh_user_options[rcquotes] == on ]]; then + while [[ $arg[i+1] == "'" ]]; do + reply+=($(( start_pos + i - 1 )) $(( start_pos + i + 1 )) rc-quote) + (( i++ )) + i=$arg[(ib:i+1:)$q] + done + fi + + if [[ $arg[i] == "'" ]]; then + style=single-quoted-argument + else + # If unclosed, i points past the end + (( i-- )) + style=single-quoted-argument-unclosed + fi + reply=($(( start_pos + arg1 - 1 )) $(( start_pos + i )) $style $reply) + REPLY=$i +} + +# Highlight special chars inside double-quoted strings +_zsh_highlight_main_highlighter_highlight_double_quote() +{ + local -a breaks match mbegin mend saved_reply + local MATCH; integer last_break=$(( start_pos + $1 - 1 )) MBEGIN MEND + local i j k ret style + reply=() + + for (( i = $1 + 1 ; i <= $#arg ; i += 1 )) ; do + (( j = i + start_pos - 1 )) + (( k = j + 1 )) + case "$arg[$i]" in + ('"') break;; + ('`') saved_reply=($reply) + _zsh_highlight_main_highlighter_highlight_backtick $i + (( i = REPLY )) + reply=($saved_reply $reply) + continue + ;; + ('$') style=dollar-double-quoted-argument + # Look for an alphanumeric parameter name. + if [[ ${arg:$i} =~ ^([A-Za-z_][A-Za-z0-9_]*|[0-9]+) ]] ; then + (( k += $#MATCH )) # highlight the parameter name + (( i += $#MATCH )) # skip past it + elif [[ ${arg:$i} =~ ^[{]([A-Za-z_][A-Za-z0-9_]*|[0-9]+)[}] ]] ; then + (( k += $#MATCH )) # highlight the parameter name and braces + (( i += $#MATCH )) # skip past it + elif [[ $arg[i+1] == '$' ]]; then + # $$ - pid + (( k += 1 )) # highlight both dollar signs + (( i += 1 )) # don't consider the second one as introducing another parameter expansion + elif [[ $arg[i+1] == [-#*@?] ]]; then + # $#, $*, $@, $?, $- - like $$ above + (( k += 1 )) # highlight both dollar signs + (( i += 1 )) # don't consider the second one as introducing another parameter expansion + elif [[ $arg[i+1] == $'\x28' ]]; then + saved_reply=($reply) + if [[ $arg[i+2] == $'\x28' ]] && _zsh_highlight_main_highlighter_highlight_arithmetic $i; then + # Arithmetic expansion + (( i = REPLY )) + reply=($saved_reply $reply) + continue + fi + + breaks+=( $last_break $(( start_pos + i - 1 )) ) + (( i += 2 )) + _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,-1] + ret=$? + (( i += REPLY )) + last_break=$(( start_pos + i )) + reply=( + $saved_reply + $j $(( start_pos + i )) command-substitution-quoted + $j $(( j + 2 )) command-substitution-delimiter-quoted + $reply + ) + if (( ret == 0 )); then + reply+=($(( start_pos + i - 1 )) $(( start_pos + i )) command-substitution-delimiter-quoted) + fi + continue + else + continue + fi + ;; + "\\") style=back-double-quoted-argument + if [[ \\\`\"\$${histchars[1]} == *$arg[$i+1]* ]]; then + (( k += 1 )) # Color following char too. + (( i += 1 )) # Skip parsing the escaped char. + else + continue + fi + ;; + ($histchars[1]) # ! - may be a history expansion + if [[ $arg[i+1] != ('='|$'\x28'|$'\x7b'|[[:blank:]]) ]]; then + style=history-expansion + else + continue + fi + ;; + *) continue ;; + + esac + reply+=($j $k $style) + done + + if [[ $arg[i] == '"' ]]; then + style=double-quoted-argument + else + # If unclosed, i points past the end + (( i-- )) + style=double-quoted-argument-unclosed + fi + (( last_break != start_pos + i )) && breaks+=( $last_break $(( start_pos + i )) ) + saved_reply=($reply) + reply=() + for 1 2 in $breaks; do + (( $1 != $2 )) && reply+=($1 $2 $style) + done + reply+=($saved_reply) + REPLY=$i +} + +# Highlight special chars inside dollar-quoted strings +_zsh_highlight_main_highlighter_highlight_dollar_quote() +{ + local -a match mbegin mend + local MATCH; integer MBEGIN MEND + local i j k style + local AA + integer c + reply=() + + for (( i = $1 + 2 ; i <= $#arg ; i += 1 )) ; do + (( j = i + start_pos - 1 )) + (( k = j + 1 )) + case "$arg[$i]" in + "'") break;; + "\\") style=back-dollar-quoted-argument + for (( c = i + 1 ; c <= $#arg ; c += 1 )); do + [[ "$arg[$c]" != ([0-9xXuUa-fA-F]) ]] && break + done + AA=$arg[$i+1,$c-1] + # Matching for HEX and OCT values like \0xA6, \xA6 or \012 + if [[ "$AA" =~ "^(x|X)[0-9a-fA-F]{1,2}" + || "$AA" =~ "^[0-7]{1,3}" + || "$AA" =~ "^u[0-9a-fA-F]{1,4}" + || "$AA" =~ "^U[0-9a-fA-F]{1,8}" + ]]; then + (( k += $#MATCH )) + (( i += $#MATCH )) + else + if (( $#arg > $i+1 )) && [[ $arg[$i+1] == [xXuU] ]]; then + # \x not followed by hex digits is probably an error + style=unknown-token + fi + (( k += 1 )) # Color following char too. + (( i += 1 )) # Skip parsing the escaped char. + fi + ;; + *) continue ;; + + esac + reply+=($j $k $style) + done + + if [[ $arg[i] == "'" ]]; then + style=dollar-quoted-argument + else + # If unclosed, i points past the end + (( i-- )) + style=dollar-quoted-argument-unclosed + fi + reply=($(( start_pos + $1 - 1 )) $(( start_pos + i )) $style $reply) + REPLY=$i +} + +# Highlight backtick substitutions +_zsh_highlight_main_highlighter_highlight_backtick() +{ + # buf is the contents of the backticks with a layer of backslashes removed. + # last is the index of arg for the start of the string to be copied into buf. + # It is either one past the beginning backtick or one past the last backslash. + # offset is a count of consumed \ (the delta between buf and arg). + # offsets is an array indexed by buf offset of when the delta between buf and arg changes. + # It is sparse, so search backwards to the last value + local buf highlight style=back-quoted-argument-unclosed style_end + local -i arg1=$1 end_ i=$1 last offset=0 start subshell_has_end=0 + local -a highlight_zone highlights offsets + reply=() + + last=$(( arg1 + 1 )) + # Remove one layer of backslashes and find the end + while i=$arg[(ib:i+1:)[\\\\\`]]; do # find the next \ or ` + if (( i > $#arg )); then + buf=$buf$arg[last,i] + offsets[i-arg1-offset]='' # So we never index past the end + (( i-- )) + subshell_has_end=$(( has_end && (start_pos + i == len) )) + break + fi + + if [[ $arg[i] == '\' ]]; then + (( i++ )) + # POSIX XCU 2.6.3 + if [[ $arg[i] == ('$'|'`'|'\') ]]; then + buf=$buf$arg[last,i-2] + (( offset++ )) + # offsets is relative to buf, so adjust by -arg1 + offsets[i-arg1-offset]=$offset + else + buf=$buf$arg[last,i-1] + fi + else # it's an unquoted ` and this is the end + style=back-quoted-argument + style_end=back-quoted-argument-delimiter + buf=$buf$arg[last,i-1] + offsets[i-arg1-offset]='' # So we never index past the end + break + fi + last=$i + done + + _zsh_highlight_main_highlighter_highlight_list 0 '' $subshell_has_end $buf + + # Munge the reply to account for removed backslashes + for start end_ highlight in $reply; do + start=$(( start_pos + arg1 + start + offsets[(Rb:start:)?*] )) + end_=$(( start_pos + arg1 + end_ + offsets[(Rb:end_:)?*] )) + highlights+=($start $end_ $highlight) + if [[ $highlight == back-quoted-argument-unclosed && $style == back-quoted-argument ]]; then + # An inner backtick command substitution is unclosed, but this level is closed + style_end=unknown-token + fi + done + + reply=( + $(( start_pos + arg1 - 1 )) $(( start_pos + i )) $style + $(( start_pos + arg1 - 1 )) $(( start_pos + arg1 )) back-quoted-argument-delimiter + $highlights + ) + if (( $#style_end )); then + reply+=($(( start_pos + i - 1)) $(( start_pos + i )) $style_end) + fi + REPLY=$i +} + +# Highlight special chars inside arithmetic expansions +_zsh_highlight_main_highlighter_highlight_arithmetic() +{ + local -a saved_reply + local style + integer i j k paren_depth ret + reply=() + + for (( i = $1 + 3 ; i <= end_pos - start_pos ; i += 1 )) ; do + (( j = i + start_pos - 1 )) + (( k = j + 1 )) + case "$arg[$i]" in + [\'\"\\@{}]) + style=unknown-token + ;; + '(') + (( paren_depth++ )) + continue + ;; + ')') + if (( paren_depth )); then + (( paren_depth-- )) + continue + fi + [[ $arg[i+1] == ')' ]] && { (( i++ )); break; } + # Special case ) at the end of the buffer to avoid flashing command substitution for a character + (( has_end && (len == k) )) && break + # This is a single paren and there are no open parens, so this isn't an arithmetic expansion + return 1 + ;; + '`') + saved_reply=($reply) + _zsh_highlight_main_highlighter_highlight_backtick $i + (( i = REPLY )) + reply=($saved_reply $reply) + continue + ;; + '$' ) + if [[ $arg[i+1] == $'\x28' ]]; then + saved_reply=($reply) + if [[ $arg[i+2] == $'\x28' ]] && _zsh_highlight_main_highlighter_highlight_arithmetic $i; then + # Arithmetic expansion + (( i = REPLY )) + reply=($saved_reply $reply) + continue + fi + + (( i += 2 )) + _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,end_pos] + ret=$? + (( i += REPLY )) + reply=( + $saved_reply + $j $(( start_pos + i )) command-substitution-quoted + $j $(( j + 2 )) command-substitution-delimiter-quoted + $reply + ) + if (( ret == 0 )); then + reply+=($(( start_pos + i - 1 )) $(( start_pos + i )) command-substitution-delimiter) + fi + continue + else + continue + fi + ;; + ($histchars[1]) # ! - may be a history expansion + if [[ $arg[i+1] != ('='|$'\x28'|$'\x7b'|[[:blank:]]) ]]; then + style=history-expansion + else + continue + fi + ;; + *) + continue + ;; + + esac + reply+=($j $k $style) + done + + if [[ $arg[i] != ')' ]]; then + # If unclosed, i points past the end + (( i-- )) + fi + style=arithmetic-expansion + reply=($(( start_pos + $1 - 1)) $(( start_pos + i )) arithmetic-expansion $reply) + REPLY=$i +} + + +# Called with a single positional argument. +# Perform filename expansion (tilde expansion) on the argument and set $REPLY to the expanded value. +# +# Does not perform filename generation (globbing). +_zsh_highlight_main_highlighter_expand_path() +{ + (( $# == 1 )) || print -r -- >&2 "zsh-syntax-highlighting: BUG: _zsh_highlight_main_highlighter_expand_path: called without argument" + + # The $~1 syntax normally performs filename generation, but not when it's on the right-hand side of ${x:=y}. + setopt localoptions nonomatch + unset REPLY + : ${REPLY:=${(Q)${~1}}} +} + +# ------------------------------------------------------------------------------------------------- +# Main highlighter initialization +# ------------------------------------------------------------------------------------------------- + +_zsh_highlight_main__precmd_hook() { + # Unset the WARN_NESTED_VAR option, taking care not to error if the option + # doesn't exist (zsh older than zsh-5.3.1-test-2). + setopt localoptions + if eval '[[ -o warnnestedvar ]]' 2>/dev/null; then + unsetopt warnnestedvar + fi + + _zsh_highlight_main__command_type_cache=() +} + +autoload -Uz add-zsh-hook +if add-zsh-hook precmd _zsh_highlight_main__precmd_hook 2>/dev/null; then + # Initialize command type cache + typeset -gA _zsh_highlight_main__command_type_cache +else + print -r -- >&2 'zsh-syntax-highlighting: Failed to load add-zsh-hook. Some speed optimizations will not be used.' + # Make sure the cache is unset + unset _zsh_highlight_main__command_type_cache +fi +typeset -ga ZSH_HIGHLIGHT_DIRS_BLACKLIST diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position1.zsh new file mode 100644 index 0000000..cfc12a5 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position1.zsh @@ -0,0 +1,35 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'/' + +expected_region_highlight=( + '1 1 path_prefix' # / +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position1b.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position1b.zsh new file mode 100644 index 0000000..88fe60c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position1b.zsh @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt autocd +BUFFER=$'/' + +expected_region_highlight=( + '1 1 autodirectory' # / +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position2.zsh new file mode 100644 index 0000000..5033d2c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position2.zsh @@ -0,0 +1,35 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'/bi' + +expected_region_highlight=( + '1 3 path_prefix' # /bi +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position3.zsh new file mode 100644 index 0000000..415e316 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position3.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'/bin; /bin' + +expected_region_highlight=( + '1 4 unknown-token' # /bin (in middle) + '5 5 commandseparator' # ; + '7 10 path_prefix' # /bin (at end) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position3b.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position3b.zsh new file mode 100644 index 0000000..0e65c98 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position3b.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt autocd +BUFFER=$'/bin; /bin' + +expected_region_highlight=( + '1 4 autodirectory' # /bin (in middle) + '5 5 commandseparator' # ; + '7 10 autodirectory' # /bin (at end) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position4.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position4.zsh new file mode 100644 index 0000000..9e935bf --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position4.zsh @@ -0,0 +1,35 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'/bin/s' + +expected_region_highlight=( + '1 6 path_prefix' # /bin/s +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position5.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position5.zsh new file mode 100644 index 0000000..e428b1a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/abspath-in-command-position5.zsh @@ -0,0 +1,35 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'/bin/sh' + +expected_region_highlight=( + '1 7 command' # /bin/sh +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-assignment1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-assignment1.zsh new file mode 100644 index 0000000..0c101c8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-assignment1.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Issue #263 (more-pathological case): aliases[x=y]=z works; the ${(z)} splitter considers +# that a single word; but it's not looked up as an alias. Hence, highlight it as an error. +aliases[x=y]='lorem ipsum dolor sit amet' +BUFFER='x=y ls' + +expected_region_highlight=( + "1 3 unknown-token" # x=y + "5 6 default" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-basic.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-basic.zsh new file mode 100644 index 0000000..7af8b7c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-basic.zsh @@ -0,0 +1,35 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias foo="echo hello world" +BUFFER="foo" + +expected_region_highlight+=( + "1 3 alias" # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-brackets.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-brackets.zsh new file mode 100644 index 0000000..ede6c9a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-brackets.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2021 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Have to use cat here as it must be a command that exists. +# Otherwise, the test would fail with the first token being recognized +# as an "unknown-token". +alias ]=cat + +BUFFER='] /' + +expected_region_highlight=( + '1 1 alias' # ] + '3 3 path' # / +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-command-substitution.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-command-substitution.zsh new file mode 100644 index 0000000..a7b77df --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-command-substitution.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Alias must be at least 4 characters to test the regression +# cf. 139ea2b189819c43cc251825981c116959b15cc3 +alias foobar='echo "$(echo foobar)"' +BUFFER='foobar' + +expected_region_highlight=( + "1 6 alias" # foobar +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-comment1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-comment1.zsh new file mode 100644 index 0000000..bae7ef6 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-comment1.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# see alias-comment2.zsh and comment-followed.zsh +setopt interactivecomments +alias x=$'# foo\npwd' +BUFFER='x' + +expected_region_highlight=( + '1 1 alias' # x +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-comment2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-comment2.zsh new file mode 100644 index 0000000..5a49822 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-comment2.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# see alias-comment1.zsh +setopt NO_interactivecomments +alias x=$'# foo\npwd' +BUFFER='x' + +expected_region_highlight=( + '1 1 unknown-token' # x (#) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-complex.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-complex.zsh new file mode 100644 index 0000000..5ad7c0a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-complex.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias x='echo && ls; >' + +BUFFER='x file echo' + +expected_region_highlight=( + '1 1 alias' # x + '3 6 default' # file + '8 11 builtin' # echo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-empty.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-empty.zsh new file mode 100644 index 0000000..535fccc --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-empty.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias x='' + +BUFFER='x echo foo' + +expected_region_highlight=( + '1 1 alias' # x + '3 6 builtin' # echo + '8 10 default' # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-eponymous1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-eponymous1.zsh new file mode 100644 index 0000000..2642e14 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-eponymous1.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias ls='command ls' + +BUFFER='ls' + +expected_region_highlight=( + "1 2 alias" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-eponymous2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-eponymous2.zsh new file mode 100644 index 0000000..dcd8565 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-eponymous2.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias ls=tmp tmp='command ls' + +BUFFER='ls' + +expected_region_highlight=( + "1 2 alias" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-in-cmdsubst.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-in-cmdsubst.zsh new file mode 100644 index 0000000..b3cf777 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-in-cmdsubst.zsh @@ -0,0 +1,43 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias p='print -r --' + +BUFFER=$'s=$(p foo)' + +expected_region_highlight=( + '1 10 assign' # s=$(p foo) + '3 10 default' # $(p foo) + '3 10 command-substitution-unquoted' # $(p foo) + '3 4 command-substitution-delimiter-unquoted' # $( + '5 5 alias' # p + '7 9 default' # foo + '10 10 command-substitution-delimiter-unquoted' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-loop.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-loop.zsh new file mode 100644 index 0000000..83992db --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-loop.zsh @@ -0,0 +1,44 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +function b() {} # beware of ALIAS_FUNC_DEF +alias a=b b=c c=b + +BUFFER='a foo; :' + +expected_region_highlight=( + # An alias is ineligible for expansion whilst it's being expanded. + # Therefore, the "b" in the expansion of the alias "c" is not considered + # as an alias. + '1 1 alias' # a + '3 5 default' # foo + '6 6 commandseparator' # ; + '8 8 builtin' # : +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-loop2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-loop2.zsh new file mode 100644 index 0000000..29e04ac --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-loop2.zsh @@ -0,0 +1,35 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias ls="ls" +BUFFER="ls" + +expected_region_highlight+=( + "1 2 alias" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-nested-precommand.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-nested-precommand.zsh new file mode 100644 index 0000000..6d4172b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-nested-precommand.zsh @@ -0,0 +1,43 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a=b b=sudo +sudo(){} + +BUFFER='a -u phy1729 echo; :' + +expected_region_highlight=( + '1 1 alias' # a + '3 4 single-hyphen-option' # -u + '6 12 default' # phy1729 + '14 17 builtin' # echo + '18 18 commandseparator' # ; + '20 20 builtin' # : +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-nested.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-nested.zsh new file mode 100644 index 0000000..b24b496 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-nested.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a=b b=: + +BUFFER='a foo; :' + +expected_region_highlight=( + '1 1 alias' # a + '3 5 default' # foo + '6 6 commandseparator' # ; + '8 8 builtin' # : +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-parameter.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-parameter.zsh new file mode 100644 index 0000000..21bc6b3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-parameter.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias '$foo'='echo alias' +local foo; foo=(echo param) + +BUFFER='$foo' + +expected_region_highlight=( + '1 4 alias' # $foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument1.zsh new file mode 100644 index 0000000..2d1f35c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument1.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# See also param-precommand-option-argument1.zsh +alias sudo_u='sudo -u' +sudo(){} + +BUFFER='sudo_u phy1729 echo foo' + +expected_region_highlight=( + '1 6 alias' # sudo_u + '8 14 default' # phy1729 + '17 19 command "issue #540"' # echo (not builtin) + '21 23 default' # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument2.zsh new file mode 100644 index 0000000..fbc6eec --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument2.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias sudo_b='sudo -b' +alias sudo_b_u='sudo_b -u' +sudo(){} + +BUFFER='sudo_b_u phy1729 echo foo' + +expected_region_highlight=( + '1 8 alias' # sudo_b_u + '10 16 default' # phy1729 + '18 21 command "issue #540"' # echo (not builtin) + '23 25 default' # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument3.zsh new file mode 100644 index 0000000..373f12b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument3.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# See also param-precommand-option-argument3.zsh +alias sudo_u='sudo -u' +sudo(){} + +BUFFER='sudo_u phy1729 ls foo' + +expected_region_highlight=( + '1 6 alias' # sudo_u + '8 14 default' # phy1729 + '16 17 command' # ls + '19 21 default' # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument4.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument4.zsh new file mode 100644 index 0000000..d47dccb --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-precommand-option-argument4.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias sudo_b='sudo -b' +alias sudo_b_u='sudo_b -u' +sudo(){} + +BUFFER='sudo_b_u phy1729 ls foo' + +expected_region_highlight=( + '1 8 alias' # sudo_b_u + '10 16 default' # phy1729 + '18 19 command' # ls + '21 23 default' # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-quoted.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-quoted.zsh new file mode 100644 index 0000000..e42e2f0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-quoted.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) YYYY zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a=: ls='ls -l' +BUFFER='"a" foo; \ls' + +expected_region_highlight=( + '1 3 unknown-token' # "a" + '5 7 default' # foo + '8 8 commandseparator' # ; + '10 12 command' # \ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-redirect.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-redirect.zsh new file mode 100644 index 0000000..acc3dcb --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-redirect.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias x=\> +BUFFER='x foo echo bar' + +expected_region_highlight=( + '1 1 alias' # x + '3 5 default' # foo + '7 10 builtin' # echo + '12 14 default' # bar +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse1.zsh new file mode 100644 index 0000000..1fd61a0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse1.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a=: b='a | a' + +BUFFER='b | b' + +expected_region_highlight=( + '1 1 alias' # b + '3 3 commandseparator' # | + '5 5 alias' # b +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse2.zsh new file mode 100644 index 0000000..37251fb --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse2.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a=: b='a && a' + +BUFFER='b && b' + +expected_region_highlight=( + '1 1 alias' # b + '3 4 commandseparator' # && + '6 6 alias' # b +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse3.zsh new file mode 100644 index 0000000..5d7150a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse3.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a=: b='a; a' + +BUFFER='b; b' + +expected_region_highlight=( + '1 1 alias' # b + '2 2 commandseparator' # ; + '4 4 alias' # b +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse4.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse4.zsh new file mode 100644 index 0000000..7ad7038 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse4.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a=: b='a $(a)' + +BUFFER='b $(b)' + +expected_region_highlight=( + '1 1 alias' # b + '3 6 default' # $(b) + '3 6 command-substitution-unquoted' # $(b) + '3 4 command-substitution-delimiter-unquoted' # $( + '5 5 alias' # b + '6 6 command-substitution-delimiter-unquoted' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse5.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse5.zsh new file mode 100644 index 0000000..881401b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-reuse5.zsh @@ -0,0 +1,43 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a=: b='a < <(a)' + +BUFFER='b < <(b)' + +expected_region_highlight=( + '1 1 alias' # b + '3 3 redirection' # < + '5 8 default' # <(b) + '5 8 process-substitution' # <(b) + '5 6 process-substitution-delimiter' # <( + '7 7 alias' # b + '8 8 process-substitution-delimiter' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-self.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-self.zsh new file mode 100644 index 0000000..c6f12b1 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-self.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias echo='echo foo' + +BUFFER='echo bar' + +expected_region_highlight=( + '1 4 alias' # echo + '6 8 default' # bar +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-self2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-self2.zsh new file mode 100644 index 0000000..fd6ae03 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-self2.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias cat='cat | cat' + +BUFFER='cat' + +expected_region_highlight=( + '1 3 alias' # cat +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-to-dir.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-to-dir.zsh new file mode 100644 index 0000000..30390d4 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-to-dir.zsh @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias x=/ +BUFFER=$'x' + +expected_region_highlight=( + '1 1 unknown-token' # x (/) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-to-dir1b.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-to-dir1b.zsh new file mode 100644 index 0000000..62ec521 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-to-dir1b.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt autocd +alias x=/ +BUFFER=$'x' + +expected_region_highlight=( + '1 1 alias' # x +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-unknown-token1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-unknown-token1.zsh new file mode 100644 index 0000000..9c996bf --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-unknown-token1.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a=b b=foo + +BUFFER='a ' + +expected_region_highlight=( + '1 1 unknown-token' # a +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-unknown-token2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-unknown-token2.zsh new file mode 100644 index 0000000..ab9facd --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias-unknown-token2.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a='() { ls "$@" ; foo }' + +BUFFER='a ' + +expected_region_highlight=( + '1 1 unknown-token' # a +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias.zsh new file mode 100644 index 0000000..4cafa80 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/alias.zsh @@ -0,0 +1,53 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias alias1="ls" +alias -s alias2="echo" +function alias1() {} # to check that it's highlighted as an alias, not as a function + +BUFFER='x.alias2; alias1; alias2' + +# Set expected_region_highlight as a function of zsh version. +# +# Highlight of suffix alias requires zsh-5.1.1 or newer; see issue #126, +# and commit 36403 to zsh itself. Therefore, check if the requisite zsh +# functionality is present, and skip verifying suffix-alias highlighting +# if it isn't. +expected_region_highlight=() +if zmodload -e zsh/parameter || [[ "$(type -w x.alias2)" == *suffix* ]]; then + expected_region_highlight+=( + "1 8 suffix-alias" # x.alias2 + ) +fi +expected_region_highlight+=( + "9 9 commandseparator" # ; + "11 16 alias" # alias1 + "17 17 commandseparator" # ; + "19 24 unknown-token" # alias2 +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always1.zsh new file mode 100644 index 0000000..ae40a72 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always1.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='{ ls } always { pwd }' + +expected_region_highlight=( + '1 1 reserved-word' # { + '3 4 command' # ls + '6 6 reserved-word' # } + '8 13 reserved-word' # always + '15 15 reserved-word' # { + '17 19 builtin' # pwd + '21 21 reserved-word' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always2.zsh new file mode 100644 index 0000000..991137c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always2.zsh @@ -0,0 +1,43 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'{\nls\n} always { pwd }' + +expected_region_highlight=( + '1 1 reserved-word' # { + '2 2 commandseparator' # \n + '3 4 command' # ls + '5 5 commandseparator' # \n + '6 6 reserved-word' # } + '8 13 reserved-word' # always + '15 15 reserved-word' # { + '17 19 builtin' # pwd + '21 21 reserved-word' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always3.zsh new file mode 100644 index 0000000..d41beeb --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/always3.zsh @@ -0,0 +1,43 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt ignorebraces +BUFFER='echo { foo } always { bar }' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 6 default' # { + '8 10 default' # foo + '12 12 default' # } + '14 19 default' # always + '21 21 default' # { + '23 25 default' # bar + '27 27 default' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/anonymous-function.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/anonymous-function.zsh new file mode 100644 index 0000000..9d67fb1 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/anonymous-function.zsh @@ -0,0 +1,44 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='() echo hello; () { echo world } "argument"' + +expected_region_highlight=( + "1 2 reserved-word" # () + "4 7 builtin" # echo + "9 13 default" # hello + "14 14 commandseparator" # ; + "16 17 reserved-word" # () + "19 19 reserved-word" # { + "21 24 builtin" # echo + "26 30 default" # world + "32 32 reserved-word" # } + "34 43 default" # "argument" + "34 43 double-quoted-argument" # "argument" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arg0-colon.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arg0-colon.zsh new file mode 100644 index 0000000..8955bd2 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arg0-colon.zsh @@ -0,0 +1,35 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=''\''x: /' + +expected_region_highlight=( + '1 5 unknown-token' # \'x: / +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith-cmdsubst-mess.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith-cmdsubst-mess.zsh new file mode 100644 index 0000000..82268ac --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith-cmdsubst-mess.zsh @@ -0,0 +1,46 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $((ls); (ls))' + +expected_region_highlight=( + '1 1 builtin' # : + '3 15 default' # $((ls); (ls)) + '3 15 command-substitution-unquoted' # $((ls); (ls)) + '3 4 command-substitution-delimiter-unquoted' # $( + '5 5 reserved-word' # ( + '6 7 command' # ls + '8 8 reserved-word' # ) + '9 9 commandseparator' # ; + '11 11 reserved-word' # ( + '12 13 command' # ls + '14 14 reserved-word' # ) + '15 15 command-substitution-delimiter-unquoted' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith1.zsh new file mode 100644 index 0000000..0462f73 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith1.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $(( 6 * 9 ))' + +expected_region_highlight=( + '1 1 builtin' # : + '3 14 default' # $(( 6 * 9 )) + '3 14 arithmetic-expansion' # $(( 6 * 9 )) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith2.zsh new file mode 100644 index 0000000..af981d7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arith2.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': "$(( 6 * 9 ))"' + +expected_region_highlight=( + '1 1 builtin' # : + '3 16 default' # "$(( 6 * 9 ))" + '3 16 double-quoted-argument' # "$(( 6 * 9 ))" + '4 15 arithmetic-expansion' # $(( 6 * 9 )) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-command-substitution.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-command-substitution.zsh new file mode 100644 index 0000000..07db0fb --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-command-substitution.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $(( $(echo 2) + 2 ))' + +expected_region_highlight=( + '1 1 builtin' # : + '3 22 default' # $(( $(echo 2) + 2 )) + '3 22 arithmetic-expansion' # $(( $(echo 2) + 2 )) + '7 15 command-substitution-quoted' # $(echo 2) + '7 8 command-substitution-delimiter-quoted' # $( + '9 12 builtin' # echo + '14 14 default' # 2 + '15 15 command-substitution-delimiter' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-doubled-parens.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-doubled-parens.zsh new file mode 100644 index 0000000..d582d67 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-doubled-parens.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $(( ((42)) ))' + +expected_region_highlight=( + '1 1 builtin' # : + '3 15 default' # $(( ((42)) )) + '3 15 arithmetic-expansion' # $(( ((42)) )) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-empty.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-empty.zsh new file mode 100644 index 0000000..bd75996 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-empty.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': "foo"$(())"bar"' + +expected_region_highlight=( + '1 1 builtin' # : + '3 17 default' # "foo"$(())"bar" + '3 7 double-quoted-argument' # "foo" + '8 12 arithmetic-expansion' # $(()) + '13 17 double-quoted-argument' # "bar" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-evaluation.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-evaluation.zsh new file mode 100644 index 0000000..e0eb6e7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-evaluation.zsh @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Must be at command word, since the word following 'if' isn't currently considered +# a command word (issue #207). +# +# An opening '((' without matching '))' is highlighted correctly under zsh-5.1.1-52-g4bed2cf +# or newer, only (issue #188). +BUFFER='(( x == 42 ))' + +expected_region_highlight=( + "1 2 reserved-word" # (( + "12 13 reserved-word" # )) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-hist-expn.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-hist-expn.zsh new file mode 100644 index 0000000..79af723 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-hist-expn.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $(( \!\! ))' + +expected_region_highlight=( + '1 1 builtin' # : + '3 11 default' # $(( !! )) + '3 11 arithmetic-expansion' # $(( !! )) + '7 8 history-expansion "issue #713"' # !! +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-invalid-chars.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-invalid-chars.zsh new file mode 100644 index 0000000..9ace438 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-invalid-chars.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $(( 0 * 1\'\'000 ))' + +expected_region_highlight=( + '1 1 builtin' # : + '3 19 default' # $(( 0 * 1\'\'000 )) + '3 19 arithmetic-expansion' # $(( 0 * 1\'\'000 )) + '12 12 unknown-token' # \' + '13 13 unknown-token' # \' +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-multiplication.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-multiplication.zsh new file mode 100644 index 0000000..65df0c9 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-multiplication.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': foo*$(( 42 * 1729 ))*bar' + +expected_region_highlight=( + '1 1 builtin' # : + '3 26 default' # foo*$(( 42 * 1729 ))*bar + '6 6 globbing' # * + '7 22 arithmetic-expansion' # $(( 42 * 1729 )) + '23 23 globbing' # * +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-nested.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-nested.zsh new file mode 100644 index 0000000..d734cd3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-nested.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $(( $(( 1 + 2 )) * 3 ))' + +expected_region_highlight=( + '1 1 builtin' # : + '3 25 default' # $(( $(( 1 + 2 )) * 3 )) + '3 25 arithmetic-expansion' # $(( $(( 1 + 2 )) * 3 )) + '7 18 arithmetic-expansion' # $(( 1 + 2 )) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-quoted.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-quoted.zsh new file mode 100644 index 0000000..917ddf7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-quoted.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': "$(( 1 + 1 ))"' + +expected_region_highlight=( + '1 1 builtin' # : + '3 16 default' # "$(( 1 + 1 ))" + '3 16 double-quoted-argument' # "$(( 1 + 1 ))" + '4 15 arithmetic-expansion' # $(( 1 + 1 )) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-unclosed.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-unclosed.zsh new file mode 100644 index 0000000..aa4eac7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-unclosed.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $(( 1' + +expected_region_highlight=( + '1 1 builtin' # : + '3 7 default' # $(( 1 + '3 7 arithmetic-expansion' # $(( 1 +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-unfinished.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-unfinished.zsh new file mode 100644 index 0000000..916c3da --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/arithmetic-unfinished.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $(( 1729 )' + +expected_region_highlight=( + '1 1 builtin' # : + '3 12 default' # $(( 1729 ) + '3 12 arithmetic-expansion' # $(( 1729 ) +) + +if [[ ${(z):-'$('} == '$( ' ]]; then # ignore zsh 5.0.8 bug + expected_region_highlight[2]='3 13 default' # $(( 1729 ) +fi diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep1.zsh new file mode 100644 index 0000000..2fd55c0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep1.zsh @@ -0,0 +1,45 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'a=( foo | bar )' +bar(){} + +expected_region_highlight=( + '1 3 assign' # a=( + '3 3 reserved-word' # ( + '5 7 default' # foo + '9 9 unknown-token' # | + # zsh reports a parse error at this point. Nevertheless, we test how we + # highlight the remainder of $BUFFER. Currently we recover by treating the pipe + # as a command separator. That's not the only reasonable behaviour, though; if + # we change the behaviour, we should adjust the following expectations accordingly. + '11 13 function' # bar + '15 15 unknown-token' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep2.zsh new file mode 100644 index 0000000..0bda676 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep2.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'a=( foo ; bar )' + +expected_region_highlight=( + '1 3 assign' # a=( + '3 3 reserved-word' # ( + '5 7 default' # foo + '9 9 unknown-token' # ; (not commandseparator; see highlighter source code) + '11 13 default' # bar + '15 15 assign' # ) + '15 15 reserved-word' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep3.zsh new file mode 100644 index 0000000..b4b3687 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/array-cmdsep3.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'a=( foo \n bar )' + +expected_region_highlight=( + '1 3 assign' # a=( + '3 3 reserved-word' # ( + '5 7 default' # foo + '9 9 commandseparator' # \n + '11 13 default' # bar + '15 15 assign' # ) + '15 15 reserved-word' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-append.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-append.zsh new file mode 100644 index 0000000..feb68e5 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-append.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='a+=(lorem ipsum)' + +expected_region_highlight=( + "1 4 assign" # a+=( + "4 4 reserved-word" # ( + "5 9 default" # lorem + "11 15 default" # ipsum + "16 16 assign" # ) + "16 16 reserved-word" # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-argv.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-argv.zsh new file mode 100644 index 0000000..ec5acc2 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-argv.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +touch foo +BUFFER='42=foo 43+=bar' + +expected_region_highlight=( + "1 6 assign" # 42=foo + "4 6 path" # foo + "8 14 assign" # 43+=bar + "12 14 default" # bar +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array.zsh new file mode 100644 index 0000000..ef0a666 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array.zsh @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='(A=(hello world))' + +expected_region_highlight=( + "1 1 reserved-word" # ( + "2 4 assign" # A=( + "4 4 reserved-word" # ( + "5 9 default" # hello + "11 15 default" # world + "16 16 assign" # ) + "16 16 reserved-word" # ) + "17 17 reserved-word" # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array2.zsh new file mode 100644 index 0000000..2d48721 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array2.zsh @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='A=(hello world) ls' + +expected_region_highlight=( + "1 3 assign" # A=( + "3 3 reserved-word" # ( + "4 8 default" # hello + "10 14 default" # world + "15 15 assign" # ) + "15 15 reserved-word" # ) + "17 18 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array3.zsh new file mode 100644 index 0000000..5eb645e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-array3.zsh @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='A=(hello world) b=42' + +expected_region_highlight=( + "1 3 assign" # A=( + "3 3 reserved-word" # ( + "4 8 default" # hello + "10 14 default" # world + "15 15 assign" # ) + "15 15 reserved-word" # ) + "17 20 assign" # b=42 + "19 20 default" # 42 +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-invalid-command.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-invalid-command.zsh new file mode 100644 index 0000000..557327e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-invalid-command.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'x=y nosuchcommand' + +expected_region_highlight=( + '1 3 assign' # x=y + '3 3 default' # y + '5 17 unknown-token' # nosuchcommand +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-not-array.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-not-array.zsh new file mode 100644 index 0000000..651ab80 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-not-array.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='a=foo( bar ) :' + +expected_region_highlight=( + '1 12 assign' # a=foo( bar ) + '3 12 default' # foo( bar ) + '14 14 builtin' # : +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-not-array2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-not-array2.zsh new file mode 100644 index 0000000..dfda106 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-not-array2.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='a=foo\( :' + +expected_region_highlight=( + '1 7 assign' # a=foo\( + '3 7 default' # foo\( + '9 9 builtin' # : +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-quoted-cmdsubst.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-quoted-cmdsubst.zsh new file mode 100644 index 0000000..d4a62df --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-quoted-cmdsubst.zsh @@ -0,0 +1,45 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'x="$(ls x y z)"' + +expected_region_highlight=( + '1 15 assign' # x="$(ls x y z)" + '3 15 default' # "$(ls x y z)" + '3 3 double-quoted-argument' # " + '15 15 double-quoted-argument' # " + '4 14 command-substitution-quoted' # $(ls x y z) + '4 5 command-substitution-delimiter-quoted' # $( + '6 7 command' # ls + '9 9 default' # x + '11 11 default' # y + '13 13 default' # z + '14 14 command-substitution-delimiter-quoted' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-semicolon.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-semicolon.zsh new file mode 100644 index 0000000..f748c94 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-semicolon.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='A=1; echo hello world' + +expected_region_highlight=( + "1 3 assign" # A=1 + "3 3 default" # 1 + "4 4 commandseparator" # ; + "6 9 builtin" # echo + "11 15 default" # hello + "17 21 default" # world +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-subshell.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-subshell.zsh new file mode 100644 index 0000000..2022889 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-subshell.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='(A=1)' + +expected_region_highlight=( + "1 1 reserved-word" # ( + "2 4 assign" # A=1 + "4 4 default" # 1 + "5 5 reserved-word" # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-value-quote1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-value-quote1.zsh new file mode 100644 index 0000000..b6d04fe --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-value-quote1.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'s="foo\'bar"' + +expected_region_highlight=( + '1 11 assign' # s="foo'bar" + '3 11 default' # "foo'bar" + '3 11 double-quoted-argument' # "foo'bar" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-value-quote2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-value-quote2.zsh new file mode 100644 index 0000000..3c5f93b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign-value-quote2.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'s="foo \'\' bar"' + +expected_region_highlight=( + '1 14 assign' # s="foo '' bar" + '3 14 default' # "foo '' bar" + '3 14 double-quoted-argument' # "foo '' bar" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign.zsh new file mode 100644 index 0000000..c6e8532 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assign.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='A=1 b=("foo" bar)' + +expected_region_highlight=( + "1 3 assign" # A=1 + "3 3 default" # 1 + "5 7 assign" # b=( + "7 7 reserved-word" # ( + "8 12 default" # "foo" + "8 12 double-quoted-argument" # "foo" + "14 16 default" # bar + "17 17 assign" # ) + "17 17 reserved-word" # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword1.zsh new file mode 100644 index 0000000..b271d4a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword1.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'foo=bar { :; }' + +expected_region_highlight=( + '1 7 assign' # foo=bar + '5 7 default' # bar + '9 9 unknown-token' # { + '11 11 builtin' # : + '12 12 commandseparator' # ; + '14 14 reserved-word' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword2.zsh new file mode 100644 index 0000000..247e41e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword2.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'foo=bar ( :; )' + +expected_region_highlight=( + '1 7 assign' # foo=bar + '5 7 default' # bar + '9 9 unknown-token' # ( + '11 11 builtin' # : + '12 12 commandseparator' # ; + '14 14 unknown-token' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword3.zsh new file mode 100644 index 0000000..5204189 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword3.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'foo=bar (( foo ))' + +expected_region_highlight=( + '1 7 assign' # foo=bar + '5 7 default' # bar + '9 17 unknown-token' # (( foo )) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword4.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword4.zsh new file mode 100644 index 0000000..cc3d523 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword4.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'foo=bar [[ -n foo ]]' + +expected_region_highlight=( + '1 7 assign' # foo=bar + '5 7 default' # bar + '9 10 unknown-token' # [[ + '12 13 single-hyphen-option' # -n + '15 17 default' # foo + '19 20 reserved-word' # ]] +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword5.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword5.zsh new file mode 100644 index 0000000..33f1ed1 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-before-resword5.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'foo=bar \! :' + +expected_region_highlight=( + '1 7 assign' # foo=bar + '5 7 default' # bar + '9 9 unknown-token' # \! + '11 11 builtin' # : +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-quoted.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-quoted.zsh new file mode 100644 index 0000000..18638ad --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/assignment-quoted.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'1="foo"' + +expected_region_highlight=( + '1 7 assign' # 1="foo" + '3 7 default' # "foo" + '3 7 double-quoted-argument' # "foo" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/back-quoted-argument.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/back-quoted-argument.zsh new file mode 100644 index 0000000..d504a2c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/back-quoted-argument.zsh @@ -0,0 +1,58 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo `echo \`42\`` "is `echo equal` to" `echo 6 times 9' + +expected_region_highlight=( + "1 4 builtin" # echo + "6 18 default" # `echo \`42\`` + "6 18 back-quoted-argument" # `echo \`42\`` + "6 6 back-quoted-argument-delimiter" # ` + "7 10 builtin" # echo + "12 17 default" # \`42\` + "12 17 back-quoted-argument" # \`42\` + "12 13 back-quoted-argument-delimiter" # \` + "14 15 unknown-token" # 42 + "16 17 back-quoted-argument-delimiter" # \` + "18 18 back-quoted-argument-delimiter" # ` + "20 39 default" # "is `echo equal` to" + "20 39 double-quoted-argument" # "is `echo equal` to" + "24 35 back-quoted-argument" # `echo equal` + "24 24 back-quoted-argument-delimiter" # ` + "25 28 builtin" # echo + "30 34 default" # equal + "35 35 back-quoted-argument-delimiter" # ` + "41 55 default" # `echo 6 times 9 + "41 55 back-quoted-argument-unclosed" # `echo 6 times 9 + "41 41 back-quoted-argument-delimiter" # ` + "42 45 builtin" # echo + "47 47 default" # 6 + "49 53 default" # times + "55 55 default" # 9 +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/back-quoted-open.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/back-quoted-open.zsh new file mode 100644 index 0000000..f188d81 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/back-quoted-open.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +touch foo +BUFFER=$': `ls fo' + +expected_region_highlight=( + '1 1 builtin' # : + '3 8 default' # `ls fo + '3 8 back-quoted-argument-unclosed' # `ls fo + '3 3 back-quoted-argument-delimiter' # ` + '4 5 command' # ls + '7 8 path_prefix' # fo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-continuation.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-continuation.zsh new file mode 100644 index 0000000..ebcf2e1 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-continuation.zsh @@ -0,0 +1,35 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +PREBUFFER=$'echo \\\n' +BUFFER='noglob' + +expected_region_highlight=( + "1 6 default" # 'noglob' highlighted as a string, not as a precomand +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-continuation2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-continuation2.zsh new file mode 100644 index 0000000..9e2ca62 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-continuation2.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'echo foo\\\nbar"baz"' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 18 default "issue #705"' # foo\\\nbar"baz" + '14 18 double-quoted-argument "issue #705"' # "baz" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-space.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-space.zsh new file mode 100644 index 0000000..0d8a63c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash-space.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'echo \\ \'foo\' ; ls' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 12 default' # \ \'foo\' + '8 12 single-quoted-argument' # 'foo' + '14 14 commandseparator' # ; + '16 17 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash.zsh new file mode 100644 index 0000000..ea0977f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/backslash.zsh @@ -0,0 +1,34 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'\\' + +expected_region_highlight=( + '1 1 unknown-token' # \\ +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-assign-array.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-assign-array.zsh new file mode 100644 index 0000000..a54cf2d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-assign-array.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'foo=(bar abaz) \! ls' + +expected_region_highlight=( + '1 5 assign' # foo=( + '5 5 reserved-word' # ( + '6 8 default' # bar + '10 13 default' # abaz + '14 14 assign' # ) + '14 14 reserved-word' # ) + '16 16 unknown-token' # \! + '18 19 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-assign-scalar.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-assign-scalar.zsh new file mode 100644 index 0000000..e919050 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-assign-scalar.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'foo=bar \! ls' + +expected_region_highlight=( + '1 7 assign' # foo=bar + '5 7 default' # bar + '9 9 unknown-token' # \! + '11 12 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-pipeline.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-pipeline.zsh new file mode 100644 index 0000000..fef25f1 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/bang-pipeline.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'\! ls | \! ls' + +expected_region_highlight=( + '1 1 reserved-word' # \! + '3 4 command' # ls + '6 6 commandseparator' # | + '8 8 unknown-token' # \! + '10 11 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/block-assignment-no-command.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/block-assignment-no-command.zsh new file mode 100644 index 0000000..ec52c98 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/block-assignment-no-command.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2022 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'{ a=42 }' + +expected_region_highlight=( + '1 1 reserved-word' # { + '3 6 assign' # a=42 + '5 6 default' # 42 + '8 8 reserved word "issue #854"' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/braces1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/braces1.zsh new file mode 100644 index 0000000..3c5b1f0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/braces1.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'() { echo }\n}' +# no special setopts + +expected_region_highlight=( + '1 2 reserved-word' # () + '4 4 reserved-word' # { + '6 9 builtin' # echo + '11 11 reserved-word' # } + '12 12 commandseparator' # \n + '13 13 unknown-token' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/braces2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/braces2.zsh new file mode 100644 index 0000000..a3ea7c9 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/braces2.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'() { echo }\n}' +setopt ignorebraces + +expected_region_highlight=( + '1 2 reserved-word' # () + '4 4 reserved-word' # { + '6 9 builtin' # echo + '11 11 default' # } + '12 12 commandseparator' # \n + '13 13 reserved-word' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-matching1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-matching1.zsh new file mode 100644 index 0000000..7cc6de5 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-matching1.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='[[ -n foo ]]' + +expected_region_highlight=( + '1 2 reserved-word' # [[ + '4 5 single-hyphen-option' # -n + '7 9 default' # foo + '11 12 reserved-word' # ]] +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-matching2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-matching2.zsh new file mode 100644 index 0000000..19c7f0d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-matching2.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='[ -n foo ]' + +expected_region_highlight=( + '1 1 builtin' # [ + '3 4 single-hyphen-option' # -n + '6 8 default' # foo + '10 10 builtin' # ] +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch1.zsh new file mode 100644 index 0000000..5e6e80f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch1.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='() { echo foo )' + +expected_region_highlight=( + '1 2 reserved-word' # () + '4 4 reserved-word' # { + '6 9 builtin' # echo + '11 13 default' # foo + '15 15 unknown-token' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch10-if-negative.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch10-if-negative.zsh new file mode 100644 index 0000000..9d0b53c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch10-if-negative.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='elif true; then echo two; fi' + +expected_region_highlight=( + '1 4 unknown-token' # elif + '6 9 builtin' # true + '10 10 commandseparator' # ; + '12 15 unknown-token' # then + '17 20 builtin' # echo + '22 24 default' # two + '25 25 commandseparator' # ; + '27 28 unknown-token' # fi +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch2.zsh new file mode 100644 index 0000000..2d98ac2 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch2.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='() ( echo foo }' + +expected_region_highlight=( + '1 2 reserved-word' # () + '4 4 reserved-word' # ( + '6 9 builtin' # echo + '11 13 default' # foo + '15 15 unknown-token' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch3.zsh new file mode 100644 index 0000000..e33040a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch3.zsh @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo )' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 6 unknown-token' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch4.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch4.zsh new file mode 100644 index 0000000..a9b15dc --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch4.zsh @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo }' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 6 unknown-token' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch5.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch5.zsh new file mode 100644 index 0000000..21e8bb2 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch5.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo { }' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 6 default' # { + '8 8 unknown-token' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch6.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch6.zsh new file mode 100644 index 0000000..9df8388 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch6.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='(repeat 1; do)' + +expected_region_highlight=( + '1 1 reserved-word' # ( + '2 7 reserved-word' # repeat + '9 9 default' # 1 + '10 10 commandseparator' # ; + '12 13 reserved-word' # do + '14 14 unknown-token' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch7.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch7.zsh new file mode 100644 index 0000000..1caa936 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch7.zsh @@ -0,0 +1,45 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2012 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='for n in *; do echo $n; end' + +expected_region_highlight=( + '1 3 reserved-word' # for + '5 5 default' # n + '7 8 default' # in + '10 10 default' # * + '10 10 globbing' # * + '11 11 commandseparator' # ; + '13 14 reserved-word' # do + '16 19 builtin' # echo + '21 22 default' # $n + '23 23 commandseparator' # ; + '25 27 unknown-token' # end +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch8-if-positive.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch8-if-positive.zsh new file mode 100644 index 0000000..d6838f0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch8-if-positive.zsh @@ -0,0 +1,53 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='if false; then echo one; elif true; then echo two; else echo three; fi' + +expected_region_highlight=( + '1 2 reserved-word' # if + '4 8 builtin' # false + '9 9 commandseparator' # ; + '11 14 reserved-word' # then + '16 19 builtin' # echo + '21 23 default' # one + '24 24 commandseparator' # ; + '26 29 reserved-word' # elif + '31 34 builtin' # true + '35 35 commandseparator' # ; + '37 40 reserved-word' # then + '42 45 builtin' # echo + '47 49 default' # two + '50 50 commandseparator' # ; + '52 55 reserved-word' # else + '57 60 builtin' # echo + '62 66 default' # three + '67 67 commandseparator' # ; + '69 70 reserved-word' # fi +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch8.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch8.zsh new file mode 100644 index 0000000..07a42e3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch8.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='(ls&)' + +expected_region_highlight=( + '1 1 reserved-word' # ( + '2 3 command' # ls + '4 4 commandseparator' # & + '5 5 reserved-word' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch9-if-positive.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch9-if-positive.zsh new file mode 100644 index 0000000..87c1ba7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-mismatch9-if-positive.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='if false; then echo one; fi' + +expected_region_highlight=( + '1 2 reserved-word' # if + '4 8 builtin' # false + '9 9 commandseparator' # ; + '11 14 reserved-word' # then + '16 19 builtin' # echo + '21 23 default' # one + '24 24 commandseparator' # ; + '26 27 reserved-word' # fi +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-premature-termination.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-premature-termination.zsh new file mode 100644 index 0000000..fa813da --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/brackets-premature-termination.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='[[ -n foo; echo ]]' + +expected_region_highlight=( + '1 2 reserved-word' # [[ + '4 5 single-hyphen-option' # -n + '7 9 default' # foo + '10 10 unknown-token' # ; + '12 15 builtin' # echo + '17 18 default' # ]] +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cdpath-abspath.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cdpath-abspath.zsh new file mode 100644 index 0000000..64707b2 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cdpath-abspath.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +cdpath=( $PWD ) +mkdir foo foo/bar + +BUFFER="/foo" + +expected_region_highlight=( + '1 4 unknown-token' # x (/) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cmdpos-elision-partial.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cmdpos-elision-partial.zsh new file mode 100644 index 0000000..6eda0d7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cmdpos-elision-partial.zsh @@ -0,0 +1,44 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Test elision of some, but not all of the words +# See issue #667 for the case of eliding all words +local -a x; x=(sudo "") + +sudo(){} +BUFFER=$'$x -u phy1729 ls' + +expected_region_highlight=( + '1 2 precommand' # $x + # The "" is elided. If it weren't elided, the «ls» would be highlighted as an ordinary argument. + '4 5 single-hyphen-option' # -u + '7 13 default' # phy1729 + '15 16 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-adjacent.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-adjacent.zsh new file mode 100644 index 0000000..3d5c0b9 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-adjacent.zsh @@ -0,0 +1,45 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo "$(echo)$(echo)' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 20 default' # "$(echo)$(echo) + '6 6 double-quoted-argument-unclosed' # " + '7 13 command-substitution-quoted' # $(echo) + '7 8 command-substitution-delimiter-quoted' # $( + '9 12 builtin' # echo + '13 13 command-substitution-delimiter-quoted' # ) + '14 20 command-substitution-quoted' # $(echo) + '14 15 command-substitution-delimiter-quoted' # $( + '16 19 builtin' # echo + '20 20 command-substitution-delimiter-quoted' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-in-assignment.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-in-assignment.zsh new file mode 100644 index 0000000..fafda49 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-in-assignment.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'foo=$(echo bar) :' + +expected_region_highlight=( + '1 15 assign' # foo=$(echo bar) + '5 15 default' # $(echo bar) + '5 15 command-substitution-unquoted' # $(echo bar) + '5 6 command-substitution-delimiter-unquoted' # $( + '7 10 builtin' # echo + '12 14 default' # bar + '15 15 command-substitution-delimiter-unquoted' # ) + '17 17 builtin' # : +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-unclosed.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-unclosed.zsh new file mode 100644 index 0000000..3229dfc --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/command-substitution-unclosed.zsh @@ -0,0 +1,45 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': foo$(echo bar' + +expected_region_highlight=( + '1 1 builtin' # : + '3 15 default' # foo$(echo bar + '6 15 command-substitution-unquoted' # $(echo bar + '6 7 command-substitution-delimiter-unquoted' # $( + '8 11 builtin' # echo + '13 15 default' # bar +) + +if [[ ${(z):-'$('} == '$( ' ]]; then # ignore zsh 5.0.8 bug + expected_region_highlight[2]='3 16 default' # foo$(echo bar + expected_region_highlight[3]='6 16 command-substitution-unquoted' # $(echo bar +fi diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/commandseparator.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/commandseparator.zsh new file mode 100644 index 0000000..f504847 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/commandseparator.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=':; pwd &! ls' + +expected_region_highlight=( + "1 1 builtin" # : + "2 2 commandseparator" # ; + "4 6 builtin" # pwd + "8 9 commandseparator" # &! + "11 12 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-followed.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-followed.zsh new file mode 100644 index 0000000..044f283 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-followed.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# see alias-comment1.zsh +setopt interactivecomments +BUFFER=$'# foo\ntrue' + +expected_region_highlight=( + '1 5 comment' # # foo + '6 6 commandseparator' # \n + '7 10 builtin' # true +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-leading.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-leading.zsh new file mode 100644 index 0000000..b4c9910 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-leading.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt interactive_comments + +BUFFER='# echo foo' + +expected_region_highlight=( + "1 10 comment" # # echo foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-off.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-off.zsh new file mode 100644 index 0000000..0381bdb --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comment-off.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsetopt interactive_comments + +BUFFER='# echo foo' + +expected_region_highlight=( + "1 1 unknown-token" # # + "3 6 default" # " echo foo" + "8 10 default" # " echo foo" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comments.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comments.zsh new file mode 100644 index 0000000..f3cc57e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/comments.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt interactive_comments + +BUFFER='echo "foo #bar" #baz # quux' + +expected_region_highlight=( + "1 4 builtin" # echo + "6 15 default" # "foo #bar" + "6 15 double-quoted-argument" # "foo #bar" + "17 27 comment" # #baz # quux +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/commmand-parameter.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/commmand-parameter.zsh new file mode 100644 index 0000000..48d20ba --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/commmand-parameter.zsh @@ -0,0 +1,45 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +local x=/usr/bin/env +local y=sudo +local -a z; z=(zsh -f) +sudo(){} + +BUFFER='$x "argument"; $y; $z' + +expected_region_highlight=( + "1 2 command" # $x + "4 13 default" # "argument" + "4 13 double-quoted-argument" # "argument" + "14 14 commandseparator" # ; + "16 17 precommand" # $y (sudo) + "18 18 unknown-token" # ; + "20 21 command" # $z - 'zsh' being the command +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow.zsh new file mode 100644 index 0000000..a610bdc --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow.zsh @@ -0,0 +1,57 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='while if echo Hello; then ls /; else ls; fi; do stat "x"; done; repeat 10 ls' + +expected_region_highlight+=( + "1 5 reserved-word" # while + "7 8 reserved-word" # if + "10 13 builtin" # echo + "15 19 default" # Hello + "20 20 commandseparator" # ; + "22 25 reserved-word" # then + "27 28 command" # ls + "30 30 path" # / + "31 31 commandseparator" # ; + "33 36 reserved-word" # else + "38 39 command" # ls + "40 40 commandseparator" # ; + "42 43 reserved-word" # fi + "44 44 commandseparator" # ; + "46 47 reserved-word" # do + "49 52 command" # stat + "54 56 default" # "x" + "54 56 double-quoted-argument" # "x" + "57 57 commandseparator" # ; + "59 62 reserved-word" # done + "63 63 commandseparator" # ; + "65 70 reserved-word" # repeat + "72 73 default" # 10 + "75 76 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow2.zsh new file mode 100644 index 0000000..acf99e1 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow2.zsh @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='repeat 42; do ls; done' + +expected_region_highlight+=( + "1 6 reserved-word" # repeat + "8 9 default" # 42 + "10 10 commandseparator" # ; + "12 13 reserved-word" # do + "15 16 command" # ls + "17 17 commandseparator" # ; + "19 22 reserved-word" # done +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow3.zsh new file mode 100644 index 0000000..58f507f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/control-flow3.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='repeat 42; ls; pwd' + +expected_region_highlight+=( + "1 6 reserved-word" # repeat + "8 9 default" # 42 + "10 10 commandseparator" # ; + "12 13 command" # ls + "14 14 commandseparator" # ; + "16 18 builtin" # pwd +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cthulhu.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cthulhu.zsh new file mode 100644 index 0000000..c8119a8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/cthulhu.zsh @@ -0,0 +1,70 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# 0000000 0 01111111111222222 222233333 3 333344 4 4 444444555555555 5 6 6666 6 6 6667777777777888 8 8 88888999 9 9999 9 9 00 00 0000001111 +# 1234567 8 90123456789012345 678901234 5 678901 2 3 456789012345678 9 0 1234 5 6 7890123456789012 3 4 56789012 3 4567 8 9 01 23 4567890123 +BUFFER=$'echo Ph\\\'ng`echo lui "mg"\\`echo lw\\\'nafh \\\\\\`echo Cthu"lhu\\\\\\` R\\\\\'ly$(echo eh wag\\\\\\`echo h\\\'nag\\\\\\`\'l\' fht)agn`' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 113 default' # Ph\'ng`echo lui "mg"\`echo lw\'nafh \\\`echo Cthu"lhu\\\` R\\'ly$(echo eh wag\\\`echo h\'nag\\\`'l' fht)agn` + '12 113 back-quoted-argument' # `echo lui "mg"\`echo lw\'nafh \\\`echo Cthu"lhu\\\` R\\'ly$(echo eh wag\\\`echo h\'nag\\\`'l' fht)agn` + '12 12 back-quoted-argument-delimiter' # ` + '13 16 builtin' # echo + '18 20 default' # lui + '22 112 default' # "mg"\`echo lw\'nafh \\\`echo Cthu"lhu\\\` R\\'ly$(echo eh wag\\\`echo h\'nag\\\`'l' fht)agn + '22 25 double-quoted-argument' # "mg" + '26 112 back-quoted-argument-unclosed' # \`echo lw\'nafh \\\`echo Cthu"lhu\\\` R\\'ly$(echo eh wag\\\`echo h\'nag\\\`'l' fht)agn + '26 27 back-quoted-argument-delimiter' # \` + '28 31 builtin' # echo + '33 40 default' # lw\'nafh + '42 62 default' # \\\`echo Cthu"lhu\\\` + '42 62 back-quoted-argument' # \\\`echo Cthu"lhu\\\` + '42 45 back-quoted-argument-delimiter' # \\\` + '46 49 builtin' # echo + '51 58 default' # Cthu"lhu + '55 58 double-quoted-argument-unclosed' # "lhu + '59 62 back-quoted-argument-delimiter' # \\\` + '64 112 default' # R\\'ly$(echo eh wag\\\`echo h\'nag\\\`'l' fht)agn + '70 109 command-substitution-unquoted' # $(echo eh wag\\\`echo h\'nag\\\`'l' fht) + '70 71 command-substitution-delimiter-unquoted' # $( + '72 75 builtin' # echo + '77 78 default' # eh + '80 104 default' # wag\\\`echo h\'nag\\\`'l' + '83 101 back-quoted-argument' # \\\`echo h\'nag\\\` + '83 86 back-quoted-argument-delimiter' # \\\` + '87 90 builtin' # echo + '92 97 default' # h\'nag + '98 101 back-quoted-argument-delimiter' # \\\` + '102 104 single-quoted-argument' # 'l' + '106 108 default' # fht + '109 109 command-substitution-delimiter-unquoted' # ) + '113 113 unknown-token' # ` +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dinbrack1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dinbrack1.zsh new file mode 100644 index 0000000..e2279d6 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dinbrack1.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'[[ foo && bar || baz ]]' + +expected_region_highlight=( + '1 2 reserved-word' # [[ + '4 6 default' # foo + '8 9 default' # && + '11 13 default' # bar + '15 16 default' # || + '18 20 default' # baz + '22 23 reserved-word' # ]] +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dirs_blacklist.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dirs_blacklist.zsh new file mode 100644 index 0000000..2d0222f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dirs_blacklist.zsh @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +mkdir foo +touch foo/bar +BUFFER=": foo/bar $PWD/foo foo/b" +ZSH_HIGHLIGHT_DIRS_BLACKLIST=($PWD/foo $PWD/bar) + +expected_region_highlight=( + '1 1 builtin' # : + '3 9 default' # foo/bar + "11 $(( 14 + $#PWD )) default" # $PWD/foo + "$(( 16 + $#PWD )) $(( 20 + $#PWD )) default" # foo/b +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-dollar.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-dollar.zsh new file mode 100644 index 0000000..e3f387c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-dollar.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': "$$ $$foo"' + +expected_region_highlight=( + '1 1 builtin' # : + '3 12 default' # "$$ $$foo" + '3 12 double-quoted-argument' # "$$ $$foo" + '4 5 dollar-double-quoted-argument' # $$ + '7 8 dollar-double-quoted-argument' # $$ +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-noise.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-noise.zsh new file mode 100644 index 0000000..9bb11bd --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-noise.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': "$- $# $* $@ $?"' + +expected_region_highlight=( + '1 1 builtin' # : + '3 18 default' # "$- $# $* $@ $?" + '3 18 double-quoted-argument' # "$- $# $* $@ $?" + '4 5 dollar-double-quoted-argument' # $- + '7 8 dollar-double-quoted-argument' # $# + '10 11 dollar-double-quoted-argument' # $* + '13 14 dollar-double-quoted-argument' # $@ + '16 17 dollar-double-quoted-argument' # $? +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-paren.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-paren.zsh new file mode 100644 index 0000000..2bbcef1 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-paren.zsh @@ -0,0 +1,49 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': "$(:)" "foo$(:)bar' + +expected_region_highlight=( + '1 1 builtin' # : + '3 8 default' # "$(:)" + '3 3 double-quoted-argument' # "$(:)" + '8 8 double-quoted-argument' # "$(:)" + '4 7 command-substitution-quoted' # $(:) + '4 5 command-substitution-delimiter-quoted' # $( + '6 6 builtin' # : + '7 7 command-substitution-delimiter-quoted' # ) + '10 20 default' # "foo$(:)bar + '10 13 double-quoted-argument-unclosed' # "foo + '18 20 double-quoted-argument-unclosed' # bar + '14 17 command-substitution-quoted' # $(:) + '14 15 command-substitution-delimiter-quoted' # $( + '16 16 builtin' # : + '17 17 command-substitution-delimiter-quoted' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted.zsh new file mode 100644 index 0000000..081a365 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=": \$'*' 'foo'" + +expected_region_highlight=( + "1 1 builtin" # : + "3 6 default" # $'*' + "3 6 dollar-quoted-argument" # $'*' - not a glob + "8 12 default" # 'foo' + "8 12 single-quoted-argument" # 'foo' +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted2.zsh new file mode 100644 index 0000000..ed7428b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted2.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=": \$'foo\xbar\udeadbeef\uzzzz'" + +expected_region_highlight=( + "1 1 builtin" # : + "3 29 default" # $'foo\xbar\udeadbeef\uzzzz' + "3 29 dollar-quoted-argument" # $'foo\xbar\udeadbeef\uzzzz' + "8 11 back-dollar-quoted-argument" # \xba + "13 18 back-dollar-quoted-argument" # \dead + "23 24 unknown-token" # \u +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted3.zsh new file mode 100644 index 0000000..365f351 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/dollar-quoted3.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Similar to double-quoted2.zsh +# This test checks that the '1' gets highlighted correctly. Do not append to the BUFFER. +BUFFER=": \$'\xa1" + +expected_region_highlight=( + "1 1 builtin" # : + "3 8 default" # $'\xa1 + "3 8 dollar-quoted-argument-unclosed" # $'\xa1 + "5 8 back-dollar-quoted-argument" # \xa1 +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-hyphen-option.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-hyphen-option.zsh new file mode 100644 index 0000000..e5cacd3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-hyphen-option.zsh @@ -0,0 +1,35 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='hello --world' + +expected_region_highlight=( + "1 5 unknown-token" # hello + "7 13 double-hyphen-option" # --world +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted.zsh new file mode 100644 index 0000000..0a4336c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': "foo$bar:\`:\":\$:' +BUFFER+=\\\\:\" + +expected_region_highlight=( + "1 1 builtin" # : + "3 24 default" # "foo$bar:\`:\":\$:\\:" + "3 24 double-quoted-argument" # "foo$bar:\`:\":\$:\\:" + "7 10 dollar-double-quoted-argument" # $bar + "12 13 back-double-quoted-argument" # \` + "15 16 back-double-quoted-argument" # \$ + "18 19 back-double-quoted-argument" # \" + "21 22 back-double-quoted-argument" # \\ +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted2.zsh new file mode 100644 index 0000000..c400e54 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted2.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Similar to dollar-quoted3.zsh +# This test checks that the 'r' gets highlighted correctly. Do not append to the BUFFER. +BUFFER=': "foo$bar' + +expected_region_highlight=( + "1 1 builtin" # : + "3 10 default" # "foo$bar + "3 10 double-quoted-argument-unclosed" # "foo$bar + "7 10 dollar-double-quoted-argument" # $bar +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted3.zsh new file mode 100644 index 0000000..86e3ced --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted3.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': "$" "$42foo"' +BUFFER+=\ \"\\\'\\x\" + +expected_region_highlight=( + "1 1 builtin" # : + "3 5 default" # "$" + "3 5 double-quoted-argument" # "$" + "7 14 default" # "$42foo" + "7 14 double-quoted-argument" # "$42foo" + "8 10 dollar-double-quoted-argument" # $42 + "16 21 default" # "\'\x" + "16 21 double-quoted-argument" # "\'\x" - \' and \x are not escape sequences +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted4.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted4.zsh new file mode 100644 index 0000000..c59d5d8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/double-quoted4.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': "${foo}bar"' + +expected_region_highlight=( + "1 1 builtin" # : + "3 13 default" # "${foo}bar" + "3 13 double-quoted-argument" # "${foo}bar" + "4 9 dollar-double-quoted-argument" # ${foo} +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command-newline.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command-newline.zsh new file mode 100644 index 0000000..4b7b35c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command-newline.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Newline after semicolon isn't unknown-token +BUFFER=$':;\n:' + +expected_region_highlight=( + '1 1 builtin' # : + '2 2 commandseparator' # ; + '3 3 commandseparator' # \n + '4 4 builtin' # : +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command.zsh new file mode 100644 index 0000000..5831464 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo; ;' + +expected_region_highlight=( + "1 4 builtin" # echo + "5 5 commandseparator" # ; + "7 7 unknown-token" # ; +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command2.zsh new file mode 100644 index 0000000..dcb4e6f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-command2.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Same test data and expectations as empty-command.zsh; the only difference is: +touch ';' + +BUFFER='echo; ;' + +expected_region_highlight=( + "1 4 builtin" # echo + "5 5 commandseparator" # ; + "7 7 unknown-token" # ; +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-line.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-line.zsh new file mode 100644 index 0000000..a4d6685 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/empty-line.zsh @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'\\\n; ls' + +expected_region_highlight=( + '3 3 unknown-token' # ; + '5 6 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals1.zsh new file mode 100644 index 0000000..77f46e8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals1.zsh @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': =ls' + +expected_region_highlight=( + '1 1 builtin' # : + '3 5 path' # =ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals2.zsh new file mode 100644 index 0000000..bd59ff7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals2.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsetopt equals + +BUFFER=$': =nosuchcommand' + +expected_region_highlight=( + '1 1 builtin' # : + '3 16 default' # =nosuchcommand +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals3.zsh new file mode 100644 index 0000000..8c10789 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals3.zsh @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': =nosuchcommand' + +expected_region_highlight=( + '1 1 builtin' # : + '3 16 unknown-token' # =nosuchcommand +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals4.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals4.zsh new file mode 100644 index 0000000..28bc214 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/equals4.zsh @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': =' + +expected_region_highlight=( + '1 1 builtin' # : + '3 3 default' # = +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/escaped-single-quote.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/escaped-single-quote.zsh new file mode 100644 index 0000000..4b2fe4b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/escaped-single-quote.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': \'foo\'\\\'\'bar\'' # <<<: 'foo'\''bar'>>> + +expected_region_highlight=( + '1 1 builtin' # : + '3 14 default' # 'foo'\''bar' + '3 7 single-quoted-argument' # 'foo' + '10 14 single-quoted-argument' # 'bar' +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/exec-redirection1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/exec-redirection1.zsh new file mode 100644 index 0000000..78a0c62 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/exec-redirection1.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='exec {foo}>&/tmp ls' + +expected_region_highlight=( + "1 4 precommand" # exec + "6 10 named-fd" # {foo} + "11 12 redirection" # >& + "13 16 path" # /tmp + "18 19 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/fd-target-not-filename.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/fd-target-not-filename.zsh new file mode 100644 index 0000000..5c3cd08 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/fd-target-not-filename.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +touch 2 + +BUFFER=$'echo foo>&2' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 8 default' # foo + '9 10 redirection' # >& + '11 11 numeric-fd' # 2 (not path) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-altsyntax.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-altsyntax.zsh new file mode 100644 index 0000000..0f9a833 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-altsyntax.zsh @@ -0,0 +1,45 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Define named and anonymous function using the alternative syntax +BUFFER=$'function f { pwd }; function { pwd }' + +expected_region_highlight=( + '1 8 reserved-word' # function + '10 10 default' # f + '12 12 reserved-word "issue #237"' # { + '14 16 command "issue #237"' # pwd + '18 18 reserved-word "issue #237"' # } + '19 19 commandseparator' # ; + '21 28 reserved-word' # function + '30 30 reserved-word "issue #237"' # { + '32 34 command "issue #237"' # pwd + '36 36 reserved-word "issue #237"' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-named1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-named1.zsh new file mode 100644 index 0000000..c962ddb --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-named1.zsh @@ -0,0 +1,44 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='f() pwd; f() { balanced braces }' + +expected_region_highlight=( + '1 1 TBD "issue #223"' # f + '2 3 reserved-word' # () + '5 7 builtin' # pwd + '8 8 commandseparator' # ; + '10 10 TBD "issue #223"' # f + '11 12 reserved-word' # () + '14 14 reserved-word' # { + '16 23 unknown-token' # balanced + '25 30 default' # braces + '32 32 reserved-word' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-named2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-named2.zsh new file mode 100644 index 0000000..e12fce6 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function-named2.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='f g h () pwd' + +expected_region_highlight=( + '1 1 TBD "issue #223"' # f + '3 3 TBD "issue #223"' # g + '5 5 TBD "issue #223"' # h + '7 8 reserved-word' # () + '10 12 builtin' # pwd +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function.zsh new file mode 100644 index 0000000..b1be853 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/function.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +cd() { + builtin cd "$@" +} +ls() { + command ls "$@" +} +BUFFER='cd;ls' + +expected_region_highlight=( + "1 2 function" # cd + "3 3 commandseparator" # ; + "4 5 function" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/glob.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/glob.zsh new file mode 100644 index 0000000..2ff1022 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/glob.zsh @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': foo* bar? *baz qux\?' + +expected_region_highlight=( + "1 1 builtin" # : + "3 6 default" # foo* + "6 6 globbing" # * + "8 11 default" # bar? + "11 11 globbing" # ? + "13 16 default" # *baz + "13 13 globbing" # * + "18 22 default" # qux\? +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/global-alias1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/global-alias1.zsh new file mode 100644 index 0000000..0022de3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/global-alias1.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias -g foo=bar + +BUFFER=$'foo foo' + +expected_region_highlight=( + '1 3 global-alias' # foo + '5 7 global-alias' # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/globs-with-quoting.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/globs-with-quoting.zsh new file mode 100644 index 0000000..d7d74bc --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/globs-with-quoting.zsh @@ -0,0 +1,43 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': "foo"*\'bar\'?"baz?"<17-29>"qu*ux"' + +expected_region_highlight=( + '1 1 builtin' # : + '3 34 default' # "foo"*'bar'?"baz?"<17-29>"qu*ux" + '3 7 double-quoted-argument' # "foo" + '8 8 globbing' # * + '9 13 single-quoted-argument' # 'bar' + '14 14 globbing' # ? + '15 20 double-quoted-argument' # "baz?" + '21 27 globbing' # <17-29> + '28 34 double-quoted-argument' # "qu*ux" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/hashed-command.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/hashed-command.zsh new file mode 100644 index 0000000..2983ef8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/hashed-command.zsh @@ -0,0 +1,35 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +hash zsh_syntax_highlighting_hash=/doesnotexist +BUFFER='zsh_syntax_highlighting_hash' + +expected_region_highlight=( + "1 28 hashed-command 'zsh/parameter cannot distinguish between hashed and command'" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-escaped.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-escaped.zsh new file mode 100644 index 0000000..7807cc0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-escaped.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo "Hello\!"' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 14 default' # "Hello\!" + '6 14 double-quoted-argument' # "Hello\!" + '12 13 back-double-quoted-argument' # \! +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-followed.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-followed.zsh new file mode 100644 index 0000000..6421ced --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-followed.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': !!= "!!="' + +expected_region_highlight=( + '1 1 builtin' # : + '3 4 history-expansion "issue #713"' # !! + '7 11 default' # "!!=" + '7 11 double-quoted-argument' # "!!=" + '8 9 history-expansion "issue #713' # !! +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-no.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-no.zsh new file mode 100644 index 0000000..e082dbc --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-no.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo "foo != bar !{baz}"' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 24 default' # "foo != bar !{baz}" + '6 24 double-quoted-argument' # "foo != bar !{baz}" - no history expansions +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-unescaped.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-unescaped.zsh new file mode 100644 index 0000000..cfe6a11 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-unescaped.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo "Hello!"' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 13 default' # "Hello!" + '6 13 double-quoted-argument' # "Hello!" + '12 12 history-expansion' # ! +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-yes.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-yes.zsh new file mode 100644 index 0000000..e963c3b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-double-quoted-yes.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='echo "foo !bar"' + +expected_region_highlight=( + '1 4 builtin' # echo + '6 15 default' # "foo !bar" + '6 15 double-quoted-argument' # "foo !bar" + '11 11 history-expansion' # ! +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-expansion.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-expansion.zsh new file mode 100644 index 0000000..05e20fc --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-expansion.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='!foo bar !baz ! ; !' + +expected_region_highlight=( + "1 4 history-expansion" # !foo + "6 8 default" # bar + "10 13 history-expansion" # !baz + "15 15 default" # ! + "17 17 commandseparator" # ; + "19 19 reserved-word" # ! +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-expansion2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-expansion2.zsh new file mode 100644 index 0000000..386d0df --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/history-expansion2.zsh @@ -0,0 +1,34 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='^foo^bar' + +expected_region_highlight=( + "1 8 history-expansion" # ^foo^bar +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/inheritance.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/inheritance.zsh new file mode 100644 index 0000000..e851ca3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/inheritance.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +_zsh_highlight_add_highlight() +{ + region_highlight+=("$1 $2 ${(j.,.)argv[3,-1]}") +} + +BUFFER='type' + +expected_region_highlight=( + '1 4 builtin,arg0' # type +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/jobsubst-isnt-glob.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/jobsubst-isnt-glob.zsh new file mode 100644 index 0000000..3a7e325 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/jobsubst-isnt-glob.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018.9958 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': %? %?foo' + +expected_region_highlight=( + '1 1 builtin' # : + '3 4 default' # %? + '6 10 default' # %?foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/jobsubst-isnt-glob2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/jobsubst-isnt-glob2.zsh new file mode 100644 index 0000000..51930bf --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/jobsubst-isnt-glob2.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': foo%?bar' + +expected_region_highlight=( + '1 1 builtin' # : + '3 10 default' # foo%?bar + '7 7 globbing' # ? +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/loop-newline.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/loop-newline.zsh new file mode 100644 index 0000000..d39ee11 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/loop-newline.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'for i in \\\n; do done' + +expected_region_highlight=( + '1 3 reserved-word' # for + '5 5 default' # i + '7 8 default' # in + '12 12 commandseparator' # ; + '14 15 reserved-word' # do + '17 20 reserved-word' # done +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/meta-no-eval1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/meta-no-eval1.zsh new file mode 100644 index 0000000..bb04077 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/meta-no-eval1.zsh @@ -0,0 +1,49 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $(kill -9 $$) ${:-$(kill -9 $$)}' + +expected_region_highlight=( + '1 1 builtin' # : + '3 15 default' # $(kill -9 $$) + '3 15 command-substitution-unquoted' # $(kill -9 $$) + '3 4 command-substitution-delimiter-unquoted' # $( + '5 8 builtin' # kill + '10 11 single-hyphen-option' # -9 + '13 14 default' # $$ + '15 15 command-substitution-delimiter-unquoted' # ) + '17 34 default' # ${:-$(kill -9 $$)} + '21 33 command-substitution-unquoted' # $(kill -9 $$) + '21 22 command-substitution-delimiter-unquoted' # $( + '23 26 builtin' # kill + '28 29 single-hyphen-option' # -9 + '31 32 default' # $$ + '33 33 command-substitution-delimiter-unquoted' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/meta-no-eval2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/meta-no-eval2.zsh new file mode 100644 index 0000000..61ef089 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/meta-no-eval2.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# We aren't testing how this is highlighted; we're testing that it's not +# evaluated. If it gets evaluated, the test suite will die. +BUFFER=$': /(e*exit 42*)' + +expected_region_highlight=( + '1 1 builtin' # : + '3 15 default' # /(e*exit 42*) + '6 6 globbing' # * + '14 14 globbing' # * +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-array-assignment1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-array-assignment1.zsh new file mode 100644 index 0000000..8906cfd --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-array-assignment1.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'foo=(\nbar) env' + +expected_region_highlight=( + '1 5 assign' # foo=( + '5 5 reserved-word' # ( + '6 6 commandseparator' # \n + '7 9 default' # bar + '10 10 assign' # ) + '10 10 reserved-word' # ) + '12 14 precommand' # env +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-string.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-string.zsh new file mode 100644 index 0000000..0127b4b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-string.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +PREBUFFER=$'echo "foo1\n' +BUFFER='foo2" ./' + +expected_region_highlight=( + "1 5 default" # 'foo2"' + "1 5 double-quoted-argument" # 'foo2"' + "7 8 path" # './' +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-string2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-string2.zsh new file mode 100644 index 0000000..3a90dce --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiline-string2.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'echo \'foo1\n' + +expected_region_highlight=( + "1 4 builtin" # echo + "6 11 default" # 'foo1\n + "6 11 single-quoted-argument-unclosed" # 'foo1\n +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multios-negates-globbing.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multios-negates-globbing.zsh new file mode 100644 index 0000000..7ece670 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multios-negates-globbing.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +unsetopt multios + +BUFFER=$'cat < *' + +expected_region_highlight=( + '1 3 command' # cat + '5 5 redirection' # < + '7 7 default' # * - not globbing +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multios-negates-globbing2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multios-negates-globbing2.zsh new file mode 100644 index 0000000..b6db983 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multios-negates-globbing2.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'cat < *' + +expected_region_highlight=( + '1 3 command' # cat + '5 5 redirection' # < + '7 7 default' # * + '7 7 globbing' # * +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiple-quotes.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiple-quotes.zsh new file mode 100644 index 0000000..dabf70c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiple-quotes.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': \'foo\'bar"baz$quux/foo\\\\bar"baz$\'quux\\nfoo\\001bar\'baz' + +expected_region_highlight=( + "1 1 builtin" # : + "3 54 default" # 'foo'bar"baz$quux/foo\\bar"baz$'quux\nfoo\001'baz + "3 7 single-quoted-argument" # 'foo' + "11 29 double-quoted-argument" #"baz + "15 19 dollar-double-quoted-argument" # $quux + "24 25 back-double-quoted-argument" # \\ + "33 51 dollar-quoted-argument" # $'quux\nfoo\001bar' + "39 40 back-dollar-quoted-argument" # \n + "44 47 back-dollar-quoted-argument" # \001 +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiple-redirections.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiple-redirections.zsh new file mode 100644 index 0000000..1545c1b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/multiple-redirections.zsh @@ -0,0 +1,46 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='id bob | grep java | sort | uniq | tail | head' + +expected_region_highlight=( + "1 2 command" # ps + "4 6 default" # aux + "8 8 commandseparator" # | + "10 13 command" # grep + "15 18 default" # java + "20 20 commandseparator" # | + "22 25 command" # sort + "27 27 commandseparator" # | + "29 32 command" # uniq + "34 34 commandseparator" # | + "36 39 command" # tail + "41 41 commandseparator" # | + "43 46 command" # head +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob-alias.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob-alias.zsh new file mode 100644 index 0000000..2f96445 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob-alias.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias x=command +BUFFER='x ls' + +expected_region_highlight=( + "1 1 alias" # x + "3 4 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob-always.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob-always.zsh new file mode 100644 index 0000000..6d55048 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob-always.zsh @@ -0,0 +1,45 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'{ noglob echo * } always { echo * }' + +expected_region_highlight=( + '1 1 reserved-word' # { + '3 8 precommand' # noglob + '10 13 builtin' # echo + '15 15 default' # * + '17 17 reserved-word' # } + '19 24 reserved-word' # always + '26 26 reserved-word' # { + '28 31 builtin' # echo + '33 33 default' # * + '33 33 globbing' # * + '35 35 reserved-word' # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob1.zsh new file mode 100644 index 0000000..1857db0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob1.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=':; noglob echo *' + +expected_region_highlight=( + "1 1 builtin" # : + "2 2 commandseparator" # ; + "4 9 precommand" # noglob + "11 14 builtin" # echo + "16 16 default" # * +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob2.zsh new file mode 100644 index 0000000..3b4fcd7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob2.zsh @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='noglob echo *; echo *' + +expected_region_highlight=( + "1 6 precommand" # noglob + "8 11 builtin" # echo + "13 13 default" # * + "14 14 commandseparator" # ; + "16 19 builtin" # echo + "21 21 default" # * + "21 21 globbing" # * +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob3.zsh new file mode 100644 index 0000000..c404aaa --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob3.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +touch \* + +BUFFER='noglob echo *' + +expected_region_highlight=( + "1 6 precommand" # noglob + "8 11 builtin" # echo + "13 13 path" # * +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob4.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob4.zsh new file mode 100644 index 0000000..cc7065f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/noglob4.zsh @@ -0,0 +1,45 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'noglob cat <(print -r -- *)' + +expected_region_highlight=( + '1 6 precommand' # noglob + '8 10 command' # cat + '12 27 default' # <(print -r -- *) + '12 27 process-substitution' # <(print -r -- *) + '12 13 process-substitution-delimiter' # <( + '14 18 builtin' # print + '20 21 single-hyphen-option' # -r + '23 24 double-hyphen-option' # -- + '26 26 default' # * + '26 26 globbing' # * + '27 27 process-substitution-delimiter' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/null-exec.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/null-exec.zsh new file mode 100644 index 0000000..be1e306 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/null-exec.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'exec >/dev/null;' + +expected_region_highlight=( + '1 4 precommand' # exec + '6 6 redirection' # > + '7 15 path' # /dev/null + '16 16 commandseparator' # ; +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/null-exec2-printenv.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/null-exec2-printenv.zsh new file mode 100644 index 0000000..59a2cef --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/null-exec2-printenv.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2021 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'env | grep $needle' + +expected_region_highlight=( + '1 3 precommand' # env + '5 5 commandseparator' # | + '7 10 command' # grep + '12 18 default' # $needle +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/number_range-glob.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/number_range-glob.zsh new file mode 100644 index 0000000..c840951 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/number_range-glob.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='print <-> x<->y ' + +expected_region_highlight=( + '1 5 builtin' # print + '7 9 default' # <-> + '7 9 globbing' # <-> + '11 15 default' # x<->y + '12 14 globbing' # <-> + '17 17 redirection' # < + '18 23 default' # foo2-3 (the filename) + '24 24 redirection' # > +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/off-by-one.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/off-by-one.zsh new file mode 100644 index 0000000..872143a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/off-by-one.zsh @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +alias a=: +f() {} + +BUFFER='a;f;' + +expected_region_highlight=( + "1 1 alias" # a + "2 2 commandseparator" # ; + "3 3 function" # f + "4 4 commandseparator" # ; +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/opt-shwordsplit1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/opt-shwordsplit1.zsh new file mode 100644 index 0000000..4a7689b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/opt-shwordsplit1.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt shwordsplit +local EDITOR='ed -s' + +ed() { command ed "$@" } + +BUFFER=$'$EDITOR' + +expected_region_highlight=( + '1 7 function' # $EDITOR +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/optimized-cmdsubst-input.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/optimized-cmdsubst-input.zsh new file mode 100644 index 0000000..ca55ef8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/optimized-cmdsubst-input.zsh @@ -0,0 +1,43 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# See getoutput() and getoutputfile() in zsh's C source code. + +BUFFER=$': $(<*)' + +expected_region_highlight=( + '1 1 builtin' # : + '3 7 default' # $(<*) + '3 7 command-substitution-unquoted' # $(<*) + '3 4 command-substitution-delimiter-unquoted' # $( + '5 5 redirection' # < + '6 6 default' # * - not globbing! + '7 7 command-substitution-delimiter-unquoted' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-dollar-quote-isnt-filename.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-dollar-quote-isnt-filename.zsh new file mode 100644 index 0000000..897a02e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-dollar-quote-isnt-filename.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': -$\'n\'' + +touch ./-n + +expected_region_highlight=( + '1 1 builtin' # : + '3 7 single-hyphen-option' # -$'n' + '4 7 dollar-quoted-argument' # $'n' +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-path_dirs.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-path_dirs.zsh new file mode 100644 index 0000000..0300c7e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-path_dirs.zsh @@ -0,0 +1,44 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +if [[ $OSTYPE == msys ]]; then + skip_test='Cannot chmod +x in msys2' +else + setopt PATH_DIRS + mkdir -p foo/bar + touch foo/bar/testing-issue-228 + chmod +x foo/bar/testing-issue-228 + path+=( "$PWD"/foo ) + + BUFFER='bar/testing-issue-228' + + expected_region_highlight=( + "1 21 command" # bar/testing-issue-228 + ) +fi diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-with-quotes.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-with-quotes.zsh new file mode 100644 index 0000000..6286f03 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/option-with-quotes.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': --user="phy1729"' + +expected_region_highlight=( + '1 1 builtin' # : + '3 18 double-hyphen-option' # --user="phy1729" + '10 18 double-quoted-argument' # "phy1729" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/order-path-after-dollar.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/order-path-after-dollar.zsh new file mode 100644 index 0000000..773c183 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/order-path-after-dollar.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +touch '$foo' +BUFFER=': $foo \$foo' + +expected_region_highlight=( + '1 1 builtin' # : + '3 6 default' # $foo - if we add a "unquoted parameter expansion" style then this expectation should change + '8 12 path' # \$foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/order-path-before-globbing.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/order-path-before-globbing.zsh new file mode 100644 index 0000000..8456b18 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/order-path-before-globbing.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +touch '*' +BUFFER=': * \*' + +expected_region_highlight=( + '1 1 builtin' # : + '3 3 default' # * + '3 3 globbing' # * + '5 6 path' # \* +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-positional-in-array-append.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-positional-in-array-append.zsh new file mode 100644 index 0000000..bd39e02 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-positional-in-array-append.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# This used to be an infinite loop. + +BUFFER=$'l+=( $1' + +expected_region_highlight=( + '1 4 assign' # l+=( + '4 4 reserved-word' # ( + '6 7 default' # $1 +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-precommand-option-argument1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-precommand-option-argument1.zsh new file mode 100644 index 0000000..84cf03a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-precommand-option-argument1.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# See also alias-precommand-option-argument1.zsh +local -a sudo_u; sudo_u=(sudo -u) +sudo(){} + +BUFFER='$sudo_u phy1729 echo foo' + +expected_region_highlight=( + '1 7 precommand' # $sudo_u + '9 15 default' # phy1729 + '18 20 command "issue #540"' # echo (not builtin) + '22 24 default' # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-precommand-option-argument3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-precommand-option-argument3.zsh new file mode 100644 index 0000000..9a8dde2 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/param-precommand-option-argument3.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# See also alias-precommand-option-argument3.zsh +local -a sudo_u; sudo_u=(sudo -u) +sudo(){} + +BUFFER='$sudo_u phy1729 ls foo' + +expected_region_highlight=( + '1 7 precommand' # sudo_u + '9 15 default' # phy1729 + '17 18 command' # ls + '20 22 default' # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-elision-command-word.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-elision-command-word.zsh new file mode 100644 index 0000000..25f649a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-elision-command-word.zsh @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='$x ls' + +expected_region_highlight=( + '1 2 comment' # $x + '4 5 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-shwordsplit.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-shwordsplit.zsh new file mode 100644 index 0000000..0bf6f4c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-shwordsplit.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2021 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt sh_word_split +local foo='echo foo' + +BUFFER='$foo' + +expected_region_highlight=( + '1 4 builtin' # $foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-untokenized1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-untokenized1.zsh new file mode 100644 index 0000000..8b8b5e4 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-untokenized1.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +local x="()" + +BUFFER=$'$x ls' + +expected_region_highlight=( + '1 2 unknown-token' # $x + '4 5 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-untokenized2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-untokenized2.zsh new file mode 100644 index 0000000..d23a1f2 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-expansion-untokenized2.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +local x="^foo^bar" + +BUFFER=$'$x ls' + +expected_region_highlight=( + '1 2 unknown-token' # $x + '4 5 default' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-star.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-star.zsh new file mode 100644 index 0000000..2311be0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-star.zsh @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='() { : $* }' + +# This tests that $* isn't highlighted as a glob. +# If we ever add a "unquoted parameter" style, the expectation may change. +expected_region_highlight=( + "1 2 reserved-word" # () + "4 4 reserved-word" # { + "6 6 builtin" # : + "8 9 default" # $* + "11 11 reserved-word" # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-to-global-alias.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-to-global-alias.zsh new file mode 100644 index 0000000..63f95da --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-to-global-alias.zsh @@ -0,0 +1,42 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +if type global_alias >/dev/null; then + skip_test="Test is written on the assumption that 'global_alias' is not a valid command name, but that assumption does not hold" + return 0 +fi +alias -g global_alias=y +local s=global_alias + +BUFFER=$'$s' + +expected_region_highlight=( + '1 2 unknown-token' # $s +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-value-contains-command-position1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-value-contains-command-position1.zsh new file mode 100644 index 0000000..05ea1bf --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-value-contains-command-position1.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +local foobar='x=$(ls)' + +BUFFER=$'$foobar' + +expected_region_highlight=( + # Used to highlight the "ba" as 'command' because the 'ls' showed through; issues #670 and #674 + '1 7 unknown-token' # $foobar (not an assignment) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-value-contains-command-position2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-value-contains-command-position2.zsh new file mode 100644 index 0000000..5042e89 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/parameter-value-contains-command-position2.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +local y='x=$(ls)' + +BUFFER=$'$y' + +expected_region_highlight=( + # Used to trigger a "BUG" message on stderr - issues #670 and #674 + '1 2 unknown-token' # $y (not an assignment) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/pasted-quotes.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/pasted-quotes.zsh new file mode 100644 index 0000000..f37f21b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/pasted-quotes.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2013 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': \'foo\'bar"baz"' + +expected_region_highlight=( + '1 1 builtin' # : + '3 15 default' # \'foo\'bar"baz" + '3 7 single-quoted-argument' # \'foo\' + '11 15 double-quoted-argument' # "baz" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-broken-symlink.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-broken-symlink.zsh new file mode 100644 index 0000000..baebee3 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-broken-symlink.zsh @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +if [[ $OSTYPE == msys ]]; then + skip_test='Cannot create symlinks in msys2' +else + ln -s /nonexistent broken-symlink + BUFFER=': broken-symlink' + CURSOR=5 # to make path_prefix ineligible + + expected_region_highlight=( + "1 1 builtin" # : + "3 16 path" # broken-symlink + ) +fi diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word.zsh new file mode 100644 index 0000000..99055da --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word.zsh @@ -0,0 +1,45 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +if [[ $OSTYPE == msys ]]; then + skip_test='Cannot chmod +x in msys2' # cargo culted from option-path_dirs.zsh +else + mkdir kappa + touch kappa.exe + chmod +x kappa.exe + cd kappa + + BUFFER='$PWD.exe; ${PWD}.exe' + + expected_region_highlight=( + "1 8 unknown-token" # $PWD.exe - not eval'd; issue #328 + "9 9 commandseparator" # ; + "11 20 unknown-token" # ${PWD}.exe + ) +fi diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word2.zsh new file mode 100644 index 0000000..f404d5d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word2.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +local lambda="''" +touch \$lambda +BUFFER=': \$lambda' + +expected_region_highlight=( + "1 1 builtin" # : + "3 10 path" # \$lambda +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word3.zsh new file mode 100644 index 0000000..ec981b1 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word3.zsh @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# «/usr» at this point would be highlighted as path_prefix; so should +# a parameter that expands to an equivalent string be highlighted. +# +# More complicated parameter substitutions aren't eval'd; issue #328. +BUFFER='$PWD; ${PWD}' + +expected_region_highlight=( + "1 4 unknown-token" # $PWD (without AUTO_CD) + "5 5 commandseparator" # ; + "7 12 path_prefix" # ${PWD} +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word3b.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word3b.zsh new file mode 100644 index 0000000..72a2f7c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word3b.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt autocd +BUFFER=$'$PWD; ${PWD}' + +expected_region_highlight=( + '1 4 autodirectory' # $PWD + '5 5 commandseparator' # ; + '7 12 autodirectory' # ${PWD} +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word4.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word4.zsh new file mode 100644 index 0000000..e29182c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-dollared-word4.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# This tests for a regression during development of issue #328: an interim version +# of that branch failed that test with "Bail out! output on stderr". +BUFFER='${' + +expected_region_highlight=( + "1 2 unknown-token" # ${ +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-mixed-quoting.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-mixed-quoting.zsh new file mode 100644 index 0000000..cbd0b38 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-mixed-quoting.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +touch foo + +BUFFER=$': \'f\'oo' + +expected_region_highlight=( + '1 1 builtin' # : + '3 7 path' # \'f\'oo + '3 5 single-quoted-argument' # \'f\' +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-separators.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-separators.zsh new file mode 100644 index 0000000..52749b7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-separators.zsh @@ -0,0 +1,53 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# ZSH_HIGHLIGHT_STYLES is empty in tests. The path-separator code however compares its values. +# Make sure the relevant ones are set to something. +ZSH_HIGHLIGHT_STYLES[path_pathseparator]=set +ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]=set + +mkdir A +touch A/mu +BUFFER='ls /bin/ / A/mu A/m' + +expected_region_highlight=( + "1 2 command" # ls + "4 8 path" # /bin/ + "4 4 path_pathseparator" # / + "8 8 path_pathseparator" # / + + "10 10 path" # / + "10 10 path_pathseparator" # / + + "12 15 path" # A/mu + "13 13 path_pathseparator" # / + + "17 19 path_prefix" # A/m + "18 18 path_prefix_pathseparator" # / +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-separators2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-separators2.zsh new file mode 100644 index 0000000..bc885a0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-separators2.zsh @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# ZSH_HIGHLIGHT_STYLES is empty in tests. The path-separator code however compares its values. +# For this test, make sure both these styles are set and identical: +ZSH_HIGHLIGHT_STYLES[path]=value +ZSH_HIGHLIGHT_STYLES[path_pathseparator]=value + +BUFFER='ls /bin/' + +expected_region_highlight=( + "1 2 command" # ls + "4 8 path" # /bin/ +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-space.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-space.zsh new file mode 100644 index 0000000..87cc22f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-space.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +mkdir A +touch "A/mu with spaces" +BUFFER='ls A/mu\ with\ spaces' + +expected_region_highlight=( + "1 2 command" # ls + "4 21 path" # A/mu\ with\ spaces +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home.zsh new file mode 100644 index 0000000..8b1c680 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +HOME="." +BUFFER='ls ~' + +expected_region_highlight=( + "1 2 command" # ls + "4 4 path" # ~ +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home2.zsh new file mode 100644 index 0000000..3f7b820 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home2.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +HOME="/nonexistent" +BUFFER='ls ~' + +expected_region_highlight=( + "1 2 command" # ls + "4 4 default" # ~ +) + diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home3.zsh new file mode 100644 index 0000000..5c076e8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-home3.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +HOME="." +BUFFER='ls \~' + +expected_region_highlight=( + "1 2 command" # ls + "4 5 default" # \~ +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-named.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-named.zsh new file mode 100644 index 0000000..335b3fd --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path-tilde-named.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +mkdir mydir +touch mydir/path-tilde-named.test +hash -d D=mydir + +BUFFER='ls ~D/path-tilde-named.test' + +expected_region_highlight=( + "1 2 command" # ls + "4 27 path" # ~D/path-tilde-named.test +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path.zsh new file mode 100644 index 0000000..d387eff --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +mkdir A +touch A/mu +BUFFER='ls A/mu' + +expected_region_highlight=( + "1 2 command" # ls + "4 7 path" # A/mu +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix.zsh new file mode 100644 index 0000000..3303bfb --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Assumes that '/bin/sh' exists and '/bin/s' does not exist. +# Related to path_prefix2.zsh + +BUFFER='ls /bin/s' + +expected_region_highlight=( + "1 2 command" # ls + "4 9 path_prefix" # /bin/s +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix2.zsh new file mode 100644 index 0000000..4f40f7e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix2.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Assumes that '/bin/sh' exists and '/bin/s' does not exist. +# Related to path_prefix.zsh + +BUFFER='ls /bin/s' +WIDGET=zle-line-finish + +expected_region_highlight=( + "1 2 command" # ls + "4 9 default" # /bin/s +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix3.zsh new file mode 100644 index 0000000..9f34f94 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/path_prefix3.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Assumes that '/bin/sh' exists and '/bin/s' does not exist. +# Related to path_prefix.zsh + +PREBUFFER=$'ls \\\n' +BUFFER='/bin/s' + +expected_region_highlight=( + '1 6 path_prefix' # /bin/s +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/plain-file-in-command-position.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/plain-file-in-command-position.zsh new file mode 100644 index 0000000..141ffac --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/plain-file-in-command-position.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +touch foo +chmod -x foo +BUFFER=$'./foo; ./foo' + +expected_region_highlight=( + '1 5 unknown-token' # ./foo (in middle) + '6 6 commandseparator' # ; + '8 12 unknown-token' # ./foo (at end) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-killing1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-killing1.zsh new file mode 100644 index 0000000..7598346 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-killing1.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +hash sudo=false +touch foo + +BUFFER='sudo -e ./foo' + +expected_region_highlight=( + '1 4 precommand' # sudo + '6 7 single-hyphen-option' # -e + '9 13 path' # ./foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-killing2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-killing2.zsh new file mode 100644 index 0000000..bc6fc86 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-killing2.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +hash sudo=false + +BUFFER='sudo -e /does/not/exist' + +expected_region_highlight=( + '1 4 precommand' # sudo + '6 7 single-hyphen-option' # -e + '9 23 default' # /does/not/exist +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-then-assignment.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-then-assignment.zsh new file mode 100644 index 0000000..f0bb75f --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-then-assignment.zsh @@ -0,0 +1,37 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'nice x=y ls' + +expected_region_highlight=( + '1 4 precommand' # nice + '6 8 unknown-token "issue #641.5"' # x=y + '10 11 default "issue #641.5 (fallout)"' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type1.zsh new file mode 100644 index 0000000..4ce817c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type1.zsh @@ -0,0 +1,61 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Test the behaviour of a builtin that exists as a command as well. +# The spaces in $BUFFER are to align precommand-type*.zsh test files. +BUFFER=$'test ; builtin test ; builtin command test ; nice test ' + +# Our expectations assumes that a 'test' external command exists (in addition +# to the 'test' builtin). Let's verify that, using the EQUALS option (which +# is on by default). If there's no 'test' command, the expansion will fail, +# diagnose a message on stdout, and the harness will detect a failure. +# +# This seems to work on all platforms, insofar as no one ever reported a bug +# about their system not having a 'test' binary in PATH. That said, if someone +# ever does see this test fail for this reason, we should explicitly create +# a 'test' executable in cwd and 'rehash'. +: =test + +expected_region_highlight=( + '1 4 builtin' # test + '7 7 commandseparator' # ; + + '9 15 precommand' # builtin + '17 20 builtin' # test + '23 23 commandseparator' # ; + + '25 31 precommand' # builtin + '33 39 precommand' # command + '41 44 command "issue #608"' # test + '47 47 commandseparator' # ; + + '49 52 precommand' # nice + '54 57 command "issue #608"' # test +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type2.zsh new file mode 100644 index 0000000..bf75f4b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type2.zsh @@ -0,0 +1,55 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Test the behaviour of a builtin that does not exist as a command. +# The spaces in $BUFFER are to align precommand-type*.zsh test files. +BUFFER=$'zstyle; builtin zstyle; builtin command zstyle; nice zstyle' + +# Verify that no $^path/zstyle(N) binary exists. +if (disable zstyle; type zstyle >/dev/null); then + echo >&2 "precommand-type2: error: 'zstyle' exists not only as a builtin" +fi + +expected_region_highlight=( + '1 6 builtin' # zstyle + '7 7 commandseparator' # ; + + '9 15 precommand' # builtin + '17 22 builtin' # zstyle + '23 23 commandseparator' # ; + + '25 31 precommand' # builtin + '33 39 precommand' # command + '41 46 unknown-token "issue #608"' # zstyle + '47 47 commandseparator' # ; + + '49 52 precommand' # nice + '54 59 unknown-token "issue #608"' # zstyle +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type3.zsh new file mode 100644 index 0000000..7fc7e4c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-type3.zsh @@ -0,0 +1,55 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Test an external command that does not exist as a builtin. +# The spaces in $BUFFER are to align precommand-type*.zsh test files. +BUFFER=$'ls ; builtin ls ; builtin command ls ; nice ls ' + +# Verify that the 'ls' command isn't shadowed. +if [[ $(type -w ls) != "ls: command" ]]; then + echo >&2 "precommand-type3: error: the 'ls' command is shadowed (or possibly missing altogether)" +fi + +expected_region_highlight=( + '1 2 command' # ls + '7 7 commandseparator' # ; + + '9 15 precommand' # builtin + '17 18 unknown-token "issue #608"' # ls + '23 23 commandseparator' # ; + + '25 31 precommand' # builtin + '33 39 precommand' # command + '41 42 command' # ls + '47 47 commandseparator' # ; + + '49 52 precommand' # nice + '54 55 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-uninstalled.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-uninstalled.zsh new file mode 100644 index 0000000..03c8a75 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-uninstalled.zsh @@ -0,0 +1,44 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Simulate sudo not being installed. +# +# The 'hash' step is because, if sudo _really_ isn't installed, 'unhash sudo' +# would error out and break the test. +hash sudo=/usr/bin/env && unhash sudo + +local PATH + +BUFFER=$'sudo ls' + +expected_region_highlight=( + '1 4 unknown-token' # sudo + '6 7 default' # ls - not 'command', since sudo isn't installed +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-unknown-option.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-unknown-option.zsh new file mode 100644 index 0000000..6baf9ff --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand-unknown-option.zsh @@ -0,0 +1,43 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +sudo(){} + +BUFFER='sudo -ux ls; sudo -x ls' + +expected_region_highlight=( + '1 4 precommand' # sudo + '6 8 single-hyphen-option' # -ux + '10 11 command' # ls + '12 12 commandseparator' # ; + '14 17 precommand' # sudo + '19 20 single-hyphen-option' # -x + '22 23 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand.zsh new file mode 100644 index 0000000..a03b331 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': command zzzzzz' + +expected_region_highlight=( + "1 1 builtin" # : + "3 9 default" # not precommand + "11 16 default" # not unknown-token (since 'zzzzzz' is not a command) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand2.zsh new file mode 100644 index 0000000..75dceab --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand2.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='command -v ls' + +expected_region_highlight=( + "1 7 precommand" # command + "9 10 single-hyphen-option" # -v + "12 13 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand3.zsh new file mode 100644 index 0000000..f8b0c78 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand3.zsh @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='nice -n10 ls; nice -n 10 ls' + +expected_region_highlight=( + "1 4 precommand" # nice + "6 9 single-hyphen-option" # -n10 + "11 12 command" # ls + "13 13 commandseparator" # ; + "15 18 precommand" # nice + "20 21 single-hyphen-option" # -n + "23 24 default" # 10 + "26 27 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand4.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand4.zsh new file mode 100644 index 0000000..b9e6119 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/precommand4.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +doas(){} +BUFFER=$'doas -nu phy1729 ls' + +expected_region_highlight=( + '1 4 precommand' # doas + '6 8 single-hyphen-option' # -nu + '10 16 default' # phy1729 + '18 19 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/prefix-redirection.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/prefix-redirection.zsh new file mode 100644 index 0000000..a0f0ed5 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/prefix-redirection.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='>/tmp >/tmp command echo >/tmp foo' + +expected_region_highlight=( + "1 1 redirection" # > + "2 5 path" # /tmp + "7 7 redirection" # > + "8 11 path" # /tmp + "13 19 precommand" # command + "21 24 builtin" # echo + "26 26 redirection" # > + "27 30 path" # /tmp + "32 34 default" # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/process-substitution-after-redirection.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/process-substitution-after-redirection.zsh new file mode 100644 index 0000000..2d58016 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/process-substitution-after-redirection.zsh @@ -0,0 +1,46 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017, 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'< <(pwd) > >(nl)' + +expected_region_highlight=( + '1 1 redirection' # < + '3 8 default' # <(pwd) + '3 8 process-substitution' # <(pwd) + '3 4 process-substitution-delimiter' # <( + '5 7 builtin' # pwd + '8 8 process-substitution-delimiter' # ) + '10 10 redirection' # > + '12 16 default' # >(nl) + '12 16 process-substitution' # >(nl) + '12 13 process-substitution-delimiter' # >( + '14 15 command' # nl + '16 16 process-substitution-delimiter' # ) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/process-substitution-redirection-isnt-globbing.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/process-substitution-redirection-isnt-globbing.zsh new file mode 100644 index 0000000..f8dbd6b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/process-substitution-redirection-isnt-globbing.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': =(" foo ls' + +expected_region_highlight=( + '1 3 unknown-token' # ">" - not "redirection" + '5 7 default' # foo + '9 10 default' # ls - not "command" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/rc-quotes.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/rc-quotes.zsh new file mode 100644 index 0000000..8cd427a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/rc-quotes.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt RC_QUOTES + +BUFFER=": 'foo''bar'baz" + +expected_region_highlight=( + "1 1 builtin" # : + "3 15 default" # 'foo''bar'baz + "3 12 single-quoted-argument" # 'foo''bar' + "7 8 rc-quote" # '' +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-all.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-all.zsh new file mode 100644 index 0000000..e8ffb5d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-all.zsh @@ -0,0 +1,95 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2024 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': foo 9<>foo >foo 9>foo >|foo >\!foo >>foo >>|foo >>\!foo <<&9 <&- >&- <&p >&p >&foo &>foo >&|foo >&\!foo &>|foo &>\!foo >>&foo &>>foo >>&|foo >>&\!foo &>>|foo &>>\!foo' + +expected_region_highlight=( + '1 1 builtin' # : + '3 3 redirection' # < + '4 6 default' # foo + '8 9 redirection' # 9< + '10 12 default' # foo + '14 15 redirection' # <> + '16 18 default' # foo + '20 22 redirection' # 9<> + '23 25 default' # foo + '27 27 redirection' # > + '28 30 default' # foo + '32 33 redirection' # 9> + '34 36 default' # foo + '38 39 redirection' # >| + '40 42 default' # foo + '44 45 redirection' # >\! + '46 48 default' # foo + '50 51 redirection' # >> + '52 54 default' # foo + '56 58 redirection' # >>| + '59 61 default' # foo + '63 65 redirection' # >>\! + '66 68 default' # foo + '70 72 redirection' # <<< + '73 75 default' # foo + '77 78 redirection' # <& + '79 79 numeric-fd' # 9 + '81 82 redirection' # >& + '83 83 numeric-fd' # 9 + '85 86 redirection' # <& + '87 87 redirection' # - + '89 90 redirection' # >& + '91 91 redirection' # - + '93 94 redirection' # <& + '95 95 redirection' # p + '97 98 redirection' # >& + '99 99 redirection' # p + '101 102 redirection' # >& + '103 105 default' # foo + '107 108 redirection' # &> + '109 111 default' # foo + '113 115 redirection' # >&| + '116 118 default' # foo + '120 122 redirection' # >&\! + '123 125 default' # foo + '127 129 redirection' # &>| + '130 132 default' # foo + '134 136 redirection' # &>\! + '137 139 default' # foo + '141 143 redirection' # >>& + '144 146 default' # foo + '148 150 redirection' # &>> + '151 153 default' # foo + '155 158 redirection' # >>&| + '159 161 default' # foo + '163 166 redirection' # >>&\! + '167 169 default' # foo + '171 174 redirection' # &>>| + '175 177 default' # foo + '179 182 redirection' # &>>\! + '183 185 default' # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-comment.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-comment.zsh new file mode 100644 index 0000000..a019100 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-comment.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +setopt interactive_comments + +BUFFER=': <<#foo' + +expected_region_highlight=( + "1 1 builtin" # : + "3 4 redirection" # << + "5 8 comment" # #foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-from-param.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-from-param.zsh new file mode 100644 index 0000000..42ae638 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-from-param.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +touch file +local fn=$PWD/file + +BUFFER=$'<$fn cat' + +expected_region_highlight=( + '1 1 redirection' # < + '2 4 path' # $fn + '6 8 command' # cat +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-in-cmdsubst.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-in-cmdsubst.zsh new file mode 100644 index 0000000..ed5eaef --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-in-cmdsubst.zsh @@ -0,0 +1,41 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$': $( -x >> --yy' + +expected_region_highlight=( + '1 1 builtin' # : + '3 3 redirection' # > + '5 6 default' # -x + '8 9 redirection' # >> + '11 14 default' # --yy +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-special-cases.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-special-cases.zsh new file mode 100644 index 0000000..733cf6b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection-special-cases.zsh @@ -0,0 +1,44 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# See xpandredir() in the zsh source. + +BUFFER=$'cat <&p; exec {myfd}>&-' + +expected_region_highlight=( + '1 3 command' # cat + '5 6 redirection' # <& + '7 7 redirection' # p + '8 8 commandseparator' # ; + '10 13 precommand' # exec + '15 20 named-fd' # {myfd} + '21 22 redirection' # >& + '23 23 redirection' # - +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection.zsh new file mode 100644 index 0000000..6a25971 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Redirection before and after the command word are implemented differently; test both. +BUFFER='<<>&!bar' + +expected_region_highlight=( + "1 3 redirection" # <<< + "4 6 default" # foo + "8 11 builtin" # echo + "13 16 redirection" # >>&! + "17 19 default" # bar +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection2.zsh new file mode 100644 index 0000000..d44c8e7 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection2.zsh @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='ls >(wc) | nl' + +expected_region_highlight=( + "1 2 command" # ls + "4 8 default" # >(wc) + "4 8 process-substitution" # >(wc) + "4 5 process-substitution-delimiter" # >( + "6 7 command" # wc + "8 8 process-substitution-delimiter" # ) + "10 10 commandseparator" # | + "12 13 command" # nl +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection3.zsh new file mode 100644 index 0000000..bf062cf --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/redirection3.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=': >>>; : <>\<<<> + "5 5 unknown-token" # > + "6 6 commandseparator" # ; + "8 8 builtin" # : + "10 11 redirection" # <> + "12 13 default" # \< + "14 16 redirection" # <<< + "17 19 default" # EOF +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/reserved-word.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/reserved-word.zsh new file mode 100644 index 0000000..aca3796 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/reserved-word.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='repeat "1" do done' + +expected_region_highlight=( + "1 6 reserved-word" # repeat + "8 10 default" # "1" + "8 10 double-quoted-argument" # "1" + "12 13 reserved-word" # do + "15 18 reserved-word" # done +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/simple-command.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/simple-command.zsh new file mode 100644 index 0000000..8bb41fd --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/simple-command.zsh @@ -0,0 +1,34 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='ls' + +expected_region_highlight=( + "1 2 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/simple-redirection.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/simple-redirection.zsh new file mode 100644 index 0000000..fb06f19 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/simple-redirection.zsh @@ -0,0 +1,38 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='id bob | grep java' + +expected_region_highlight=( + "1 2 command" # ps + "4 6 default" # aux + "8 8 commandseparator" # | + "10 13 command" # grep + "15 18 default" # java +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/subshell.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/subshell.zsh new file mode 100644 index 0000000..c068013 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/subshell.zsh @@ -0,0 +1,51 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='tar cf - * | (cd /target; tar xfp -) | { cat }' + +expected_region_highlight=( + "1 3 command" # tar + "5 6 default" # cf + "8 8 single-hyphen-option" # - + "10 10 default" # * + "10 10 globbing" # * + "12 12 commandseparator" # | + "14 14 reserved-word" # ( + "15 16 builtin" # cd + "18 24 default" # /target + "25 25 commandseparator" # ; + "27 29 command" # tar + "31 33 default" # xfp + "35 35 single-hyphen-option" # - + "36 36 reserved-word" # ) + "38 38 commandseparator" # | + "40 40 reserved-word" # { + "42 44 command" # cat + "46 46 reserved-word" # } +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-command.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-command.zsh new file mode 100644 index 0000000..941349a --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-command.zsh @@ -0,0 +1,54 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +sudo(){} + +# Tests three codepaths: +# * -i (no argument) +# * -C3 (pasted argument) +# * -u otheruser (non-pasted argument) +BUFFER='sudo -C3 -u otheruser -i ls /; sudo ; sudo -u ; sudo notacommand' + +expected_region_highlight=( + "1 4 precommand" # sudo + "6 8 single-hyphen-option" # -C3 + "10 11 single-hyphen-option" # -u + "13 21 default" # otheruser + "23 24 single-hyphen-option" # -i + "26 27 command" # ls + "29 29 path" # / + "30 30 commandseparator" # ; + "32 35 precommand" # sudo + "37 37 unknown-token" # ;, error because empty command + "39 42 precommand" # sudo + "44 45 single-hyphen-option" # -u + "47 47 unknown-token" # ;, error because incomplete command + "49 52 precommand" # sudo + "54 64 unknown-token" # notacommand - doesn't falls back to "not a command word" codepath +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-comment.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-comment.zsh new file mode 100644 index 0000000..74cd905 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-comment.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +sudo(){} + +setopt interactive_comments +BUFFER='sudo -u # comment' + +expected_region_highlight=( + "1 4 precommand" # sudo + "6 7 single-hyphen-option" # -u + "9 17 unknown-token" # "# comment" - error because argument missed +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-longopt.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-longopt.zsh new file mode 100644 index 0000000..ef768bf --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-longopt.zsh @@ -0,0 +1,38 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +hash sudo='false' +BUFFER='sudo --askpass ls' + +expected_region_highlight=( + '1 4 precommand' # sudo + '6 14 double-hyphen-option' # --askpass + '16 17 command' # ls (we don't know whether --askpass takes an argument) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection.zsh new file mode 100644 index 0000000..c675d7d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection.zsh @@ -0,0 +1,48 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +sudo(){} + +BUFFER='sudo -u >/tmp otheruser ls; sudo ls; sudo -i ls' + +expected_region_highlight=( + "1 4 precommand" # sudo + "6 7 single-hyphen-option" # -u + "9 9 redirection" # > + "10 13 path" # /tmp + "15 23 default" # otheruser + "25 26 command" # ls + "27 27 commandseparator" # ; + "29 32 precommand" # sudo + "34 35 command" # ls + "36 36 commandseparator" # ; + "38 41 precommand" # sudo + "43 44 single-hyphen-option" # -i + "46 47 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection2.zsh new file mode 100644 index 0000000..23ada53 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection2.zsh @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +sudo(){} + +BUFFER='sudo >/tmp -u otheruser ls' + +expected_region_highlight=( + "1 4 precommand" # sudo + "6 6 redirection" # > + "7 10 path" # /tmp + "12 13 single-hyphen-option" # -u + "15 23 default" # otheruser + "25 26 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection3.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection3.zsh new file mode 100644 index 0000000..80e55b5 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/sudo-redirection3.zsh @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +sudo(){} + +BUFFER='sudo 2>./. -u otheruser ls' + +expected_region_highlight=( + "1 4 precommand" # sudo + "6 7 redirection" # 2> + "8 10 path" # ./. # a 3-character path, for alignment with sudo-redirection2.zsh + "12 13 single-hyphen-option" # -u + "15 23 default" # otheruser + "25 26 command" # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/tilde-command-word.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/tilde-command-word.zsh new file mode 100644 index 0000000..67c996c --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/tilde-command-word.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +hash -d D=/usr/bin + +BUFFER='~D/env foo' + +expected_region_highlight=( + "1 6 command" # ~D/env [= /usr/bin/env + "8 10 default" # foo +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/time-and-nocorrect1.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/time-and-nocorrect1.zsh new file mode 100644 index 0000000..fb398ed --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/time-and-nocorrect1.zsh @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'time ls; nocorrect ls' + +expected_region_highlight=( + '1 4 reserved-word' # time + '6 7 command' # ls + '8 8 commandseparator' # ; + '10 18 reserved-word' # nocorrect + '20 21 command' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/time-and-nocorrect2.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/time-and-nocorrect2.zsh new file mode 100644 index 0000000..5549ee9 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/time-and-nocorrect2.zsh @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2019 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER=$'time ls; nocorrect ls' +alias time=':' nocorrect=':' + +expected_region_highlight=( + '1 4 alias' # time + '6 7 default' # ls + '8 8 commandseparator' # ; + '10 18 alias' # nocorrect + '20 21 default' # ls +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/unbackslash.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/unbackslash.zsh new file mode 100644 index 0000000..c8dfbd4 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/unbackslash.zsh @@ -0,0 +1,34 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='\sh' + +expected_region_highlight=( + "1 3 command" # \sh (runs 'sh', bypassing aliases) +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/unknown-command.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/unknown-command.zsh new file mode 100644 index 0000000..e71faec --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/unknown-command.zsh @@ -0,0 +1,34 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='azertyuiop' + +expected_region_highlight=( + "1 10 unknown-token" # azertyuiop +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/vanilla-newline.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/vanilla-newline.zsh new file mode 100644 index 0000000..bd60ad4 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/vanilla-newline.zsh @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +PREBUFFER=$'echo foo; echo bar\n\n\n' +BUFFER=' echo baz; echo qux' + +expected_region_highlight=( + "2 5 builtin" # echo + "7 9 default" # baz + "10 10 commandseparator" # semicolon + "12 15 builtin" # echo + "17 19 default" # qux +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/vi-linewise-mode.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/vi-linewise-mode.zsh new file mode 100644 index 0000000..7003c49 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/main/test-data/vi-linewise-mode.zsh @@ -0,0 +1,43 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# See issue #267 for the magic numbers +BUFFER=$'foo foo\nbar bar' +REGION_ACTIVE=2 +CURSOR=4 +MARK=12 + +expected_region_highlight=( + "1 3 unknown-token" # foo + "5 7 default" # foo + "8 8 commandseparator" # \n + "9 11 unknown-token" # bar + "13 15 default" # bar + "1 15 standout" # foo foo\nbar bar +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/README.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/README.md new file mode 120000 index 0000000..5ff00e6 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/README.md @@ -0,0 +1 @@ +../../docs/highlighters/pattern.md \ No newline at end of file diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/pattern-highlighter.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/pattern-highlighter.zsh new file mode 100644 index 0000000..e0422d0 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/pattern-highlighter.zsh @@ -0,0 +1,60 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + + +# List of keyword and color pairs. +typeset -gA ZSH_HIGHLIGHT_PATTERNS + +# Whether the pattern highlighter should be called or not. +_zsh_highlight_highlighter_pattern_predicate() +{ + _zsh_highlight_buffer_modified +} + +# Pattern syntax highlighting function. +_zsh_highlight_highlighter_pattern_paint() +{ + setopt localoptions extendedglob + local pattern + for pattern in ${(k)ZSH_HIGHLIGHT_PATTERNS}; do + _zsh_highlight_pattern_highlighter_loop "$BUFFER" "$pattern" + done +} + +_zsh_highlight_pattern_highlighter_loop() +{ + # This does *not* do its job syntactically, sorry. + local buf="$1" pat="$2" + local -a match mbegin mend + local MATCH; integer MBEGIN MEND + if [[ "$buf" == (#b)(*)(${~pat})* ]]; then + region_highlight+=("$((mbegin[2] - 1)) $mend[2] $ZSH_HIGHLIGHT_PATTERNS[$pat], memo=zsh-syntax-highlighting") + "$0" "$match[1]" "$pat"; return $? + fi +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/test-data/rm-rf.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/test-data/rm-rf.zsh new file mode 100644 index 0000000..2f76929 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/test-data/rm-rf.zsh @@ -0,0 +1,36 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red') + +BUFFER='rm -rf /' + +expected_region_highlight=( + "1 8 fg=white,bold,bg=red" # rm -rf / +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/README.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/README.md new file mode 120000 index 0000000..9f2522d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/README.md @@ -0,0 +1 @@ +../../docs/highlighters/regexp.md \ No newline at end of file diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/regexp-highlighter.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/regexp-highlighter.zsh new file mode 100644 index 0000000..0d43aac --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/regexp-highlighter.zsh @@ -0,0 +1,62 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + + +# List of keyword and color pairs. +typeset -gA ZSH_HIGHLIGHT_REGEXP + +# Whether the pattern highlighter should be called or not. +_zsh_highlight_highlighter_regexp_predicate() +{ + _zsh_highlight_buffer_modified +} + +# Pattern syntax highlighting function. +_zsh_highlight_highlighter_regexp_paint() +{ + setopt localoptions extendedglob + local pattern + for pattern in ${(k)ZSH_HIGHLIGHT_REGEXP}; do + _zsh_highlight_regexp_highlighter_loop "$BUFFER" "$pattern" + done +} + +_zsh_highlight_regexp_highlighter_loop() +{ + local buf="$1" pat="$2" + integer OFFSET=0 + local MATCH; integer MBEGIN MEND + local -a match mbegin mend + while true; do + [[ "$buf" =~ "$pat" ]] || return; + region_highlight+=("$((MBEGIN - 1 + OFFSET)) $((MEND + OFFSET)) $ZSH_HIGHLIGHT_REGEXP[$pat], memo=zsh-syntax-highlighting") + buf="$buf[$(($MEND+1)),-1]" + OFFSET=$((MEND+OFFSET)); + done +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/complex.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/complex.zsh new file mode 100644 index 0000000..4e0089b --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/complex.zsh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +ZSH_HIGHLIGHT_REGEXP+=('[0-9\+\-]+' 'fg=white,bold,bg=red') + +BUFFER='echo 1+9-3 7+2' + +expected_region_highlight=( + "6 10 fg=white,bold,bg=red" + "12 14 fg=white,bold,bg=red" +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/subexpression.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/subexpression.zsh new file mode 100644 index 0000000..308cb41 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/subexpression.zsh @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +BUFFER='ls foo' +ZSH_HIGHLIGHT_REGEXP=('(^| )(ls|cd)($| )' 'fg=green') + +expected_region_highlight=( + '1 3 fg=green' # "ls " +) diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/word-boundary.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/word-boundary.zsh new file mode 100644 index 0000000..1f4f666 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/regexp/test-data/word-boundary.zsh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +if zmodload zsh/pcre 2>/dev/null; then + setopt RE_MATCH_PCRE + + ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' 'fg=white,bold,bg=red') + + BUFFER='sudo ls' + + expected_region_highlight=( + "1 4 fg=white,bold,bg=red" + ) +else + skip_test='Test requires zsh/pcre' +fi diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/root/README.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/root/README.md new file mode 120000 index 0000000..ca6799d --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/root/README.md @@ -0,0 +1 @@ +../../docs/highlighters/root.md \ No newline at end of file diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/root/root-highlighter.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/root/root-highlighter.zsh new file mode 100644 index 0000000..3718c44 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/root/root-highlighter.zsh @@ -0,0 +1,44 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + + +# Define default styles. +: ${ZSH_HIGHLIGHT_STYLES[root]:=standout} + +# Whether the root highlighter should be called or not. +_zsh_highlight_highlighter_root_predicate() +{ + _zsh_highlight_buffer_modified +} + +# root highlighting function. +_zsh_highlight_highlighter_root_paint() +{ + if (( EUID == 0 )) { _zsh_highlight_add_highlight 0 $#BUFFER root } +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after1-smaller.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after1-smaller.png new file mode 100644 index 0000000..768294c Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after1-smaller.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after1.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after1.png new file mode 100644 index 0000000..ea378d3 Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after1.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after2-smaller.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after2-smaller.png new file mode 100644 index 0000000..8b5b1f8 Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after2-smaller.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after2.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after2.png new file mode 100644 index 0000000..ddcbfad Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after2.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after3-smaller.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after3-smaller.png new file mode 100644 index 0000000..d6aaa7b Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after3-smaller.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after3.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after3.png new file mode 100644 index 0000000..7a0af88 Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after3.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after4-smaller.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after4-smaller.png new file mode 100644 index 0000000..fc946cf Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/after4-smaller.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before1-smaller.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before1-smaller.png new file mode 100644 index 0000000..b29551e Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before1-smaller.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before1.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before1.png new file mode 100644 index 0000000..80c6f54 Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before1.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before2-smaller.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before2-smaller.png new file mode 100644 index 0000000..991a716 Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before2-smaller.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before2.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before2.png new file mode 100644 index 0000000..48cfc32 Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before2.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before3-smaller.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before3-smaller.png new file mode 100644 index 0000000..e525c6d Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before3-smaller.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before3.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before3.png new file mode 100644 index 0000000..40c3601 Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before3.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before4-smaller.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before4-smaller.png new file mode 100644 index 0000000..2dbd058 Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/before4-smaller.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/preview-smaller.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/preview-smaller.png new file mode 100644 index 0000000..6fb84d1 Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/preview-smaller.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/preview.png b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/preview.png new file mode 100644 index 0000000..545cc51 Binary files /dev/null and b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/images/preview.png differ diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/release.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/release.md new file mode 100644 index 0000000..f8565e8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/release.md @@ -0,0 +1,21 @@ +# Release procedure (for developers): + +- Ensure every `is-at-least` invocation passes a stable zsh release's version number as the first argument +- For minor (A.B.0) releases: + - Check whether the release uses any not-yet-released zsh features +- Check open issues and outstanding pull requests +- Confirm `make test` passes + - check with multiple zsh versions + (easiest to check GitHub Actions: https://github.com/zsh-users/zsh-syntax-highlighting/actions) +- Update changelog.md + `tig --abbrev=12 --abbrev-commit 0.4.1..upstream/master` +- Make sure there are no local commits and that `git status` is clean; + Remove `-dev` suffix from `./.version`; + Commit that using `git commit -m "Tag version $(<.version)." .version`; + Tag it using `git tag -s -m "Tag version $(<.version)" $(<.version)`; + Increment `./.version` and restore the `-dev` suffix; + Commit that using `git commit -C b5c30ae52638e81a38fe5329081c5613d7bd6ca5 .version`. +- Push with `git push && git push --tags` +- Notify downstreams (OS packages) + - anitya should autodetect the tag +- Update /topic on IRC diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/README.md b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/README.md new file mode 100644 index 0000000..eefeb54 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/README.md @@ -0,0 +1,124 @@ +zsh-syntax-highlighting / tests +=============================== + +Utility scripts for testing zsh-syntax-highlighting highlighters. + +The tests harness expects the highlighter directory to contain a `test-data` +directory with test data files. +See the [main highlighter](../highlighters/main/test-data) for examples. + +Tests should set the following variables: + +1. +Each test should define the string `$BUFFER` that is to be highlighted and the +array parameter `$expected_region_highlight`. +The value of that parameter is a list of strings of the form `"$i $j $style"`. +or `"$i $j $style $todo"`. +Each string specifies the highlighting that `$BUFFER[$i,$j]` should have; +that is, `$i` and `$j` specify a range, 1-indexed, inclusive of both endpoints. +`$style` is a key of `$ZSH_HIGHLIGHT_STYLES`. +If `$todo` exists, the test point is marked as TODO (the failure of that test +point will not fail the test), and `$todo` is used as the explanation. + +2. +If a test sets `$skip_test` to a non-empty string, the test will be skipped +with the provided string as the reason. + +3. +If a test sets `$fail_test` to a non-empty string, the test will be skipped +with the provided string as the reason. + +4. +If a test sets `unsorted=1` the order of highlights in `$expected_region_highlight` +need not match the order in `$region_highlight`. + +5. +Normally, tests fail if `$expected_region_highlight` and `$region_highlight` +have different numbers of elements. To mark this check as expected to fail, +tests may set `$expected_mismatch` to an explanation string (like `$todo`); +this is useful when the only difference between actual and expected is that actual +has some additional, superfluous elements. This check is skipped if the +`$todo` component is present in any regular test point. + +**Note**: `$region_highlight` uses the same `"$i $j $style"` syntax but +interprets the indexes differently. + +**Note**: Tests are run with `setopt NOUNSET WARN_CREATE_GLOBAL`, so any +variables the test creates must be declared local. + +**Isolation**: Each test is run in a separate subshell, so any variables, +aliases, functions, etc., it defines will be visible to the tested code (that +computes `$region_highlight`), but will not affect subsequent tests. The +current working directory of tests is set to a newly-created empty directory, +which is automatically cleaned up after the test exits. For example: + +```zsh +setopt PATH_DIRS +mkdir -p foo/bar +touch foo/bar/testing-issue-228 +chmod +x foo/bar/testing-issue-228 +path+=( "$PWD"/foo ) + +BUFFER='bar/testing-issue-228' + +expected_region_highlight=( + "1 21 command" # bar/testing-issue-228 +) +``` + + +Writing new tests +----------------- + +An experimental tool is available to generate test files: + +```zsh +zsh -f tests/generate.zsh 'ls -x' acme newfile +``` + +This generates a `highlighters/acme/test-data/newfile.zsh` test file based on +the current highlighting of the given `$BUFFER` (in this case, `ls -x`). + +_This tool is experimental._ Its interface may change. In particular it may +grow ways to set `$PREBUFFER` to inject free-form code into the generated file. + + +Highlighting test +----------------- + +[`test-highlighting.zsh`](tests/test-highlighting.zsh) tests the correctness of +the highlighting. Usage: + +```zsh +zsh test-highlighting.zsh +``` + +All tests may be run with + +```zsh +make test +``` + +which will run all highlighting tests and report results in [TAP format][TAP]. +By default, the results of all tests will be printed; to show only "interesting" +results (tests that failed but were expected to succeed, or vice-versa), run +`make quiet-test` (or `make test QUIET=y`). + +[TAP]: https://testanything.org/ + + +Performance test +---------------- + +[`test-perfs.zsh`](tests/test-perfs.zsh) measures the time spent doing the +highlighting. Usage: + +```zsh +zsh test-perfs.zsh +``` + +All tests may be run with + +```zsh +make perf +``` diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/edit-failed-tests b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/edit-failed-tests new file mode 100755 index 0000000..e3a7668 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/edit-failed-tests @@ -0,0 +1,40 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +type perl sponge >/dev/null || { print -ru2 -- "$0: This script requires perl(1) and sponge(1) [from moreutils]"; exit 1; } + +local editor=( "${(@Q)${(z)${VISUAL:-${EDITOR:-vi}}}}" ) +() { + > "$2" perl -nE '$highlighter = $1 if /^Running test (\S*)/; say "highlighters/${highlighter}/test-data/$1.zsh" if /^## (\S*)/' "$1" + >>"$2" echo "" + >>"$2" cat <"$1" + "${editor[@]}" -- "$2" +} =(${MAKE:-make} quiet-test) =(:) +# TODO: tee(1) the quiet-test output to /dev/tty as it's happening, with colors. diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/generate.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/generate.zsh new file mode 100755 index 0000000..5696020 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/generate.zsh @@ -0,0 +1,117 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2016 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +emulate -LR zsh +setopt localoptions extendedglob + +# Required for add-zle-hook-widget. +zmodload zsh/zle + +# Argument parsing. +if (( $# * $# - 7 * $# + 12 )) || [[ $1 == -* ]]; then + print -r -- >&2 "$0: usage: $0 BUFFER HIGHLIGHTER BASENAME [PREAMBLE]" + print -r -- >&2 "" + print -r -- >&2 "Generate highlighters/HIGHLIGHTER/test-data/BASENAME.zsh based on the" + print -r -- >&2 "current highlighting of BUFFER, using the setup code PREAMBLE." + exit 1 +fi +buffer=$1 +ZSH_HIGHLIGHT_HIGHLIGHTERS=( $2 ) +fname=${0:A:h:h}/highlighters/$2/test-data/${3%.zsh}.zsh +preamble=${4:-""} + +# Load the main script. +. ${0:A:h:h}/zsh-syntax-highlighting.zsh + +# Overwrite _zsh_highlight_add_highlight so we get the key itself instead of the style +_zsh_highlight_add_highlight() +{ + region_highlight+=("$1 $2 $3") +} + + +# Copyright block +year="`LC_ALL=C date +%Y`" +if ! { read -q "?Set copyright year to $year? " } always { echo "" }; then + year="YYYY" +fi +<$0 sed -n -e '1,/^$/p' | sed -e "s/2[0-9][0-9][0-9]/${year}/" > $fname +# Assumes stdout is line-buffered +git add -- $fname +exec > >(tee -a $fname) + +# Preamble +if [[ -n $preamble ]]; then + print -rl -- "$preamble" "" +fi + +# Buffer +print -n 'BUFFER=' +if [[ $buffer != (#s)[$'\t -~']#(#e) ]]; then + print -r -- ${(qqqq)buffer} +else + print -r -- ${(qq)buffer} +fi +echo "" + +# Expectations +print 'expected_region_highlight=(' +() { + local i + local PREBUFFER + local BUFFER + + PREBUFFER="" + BUFFER="$buffer" + region_highlight=() + eval $( + exec 3>&1 >/dev/null + typeset -r __tests_tmpdir="$(mktemp -d)" + { + # Use a subshell to ensure $__tests_tmpdir, which is to be rm -rf'd, won't be modified. + (cd -- "$__tests_tmpdir" && eval $preamble && _zsh_highlight && typeset -p region_highlight >&3) + : # workaround zsh bug workers/45305 with respect to the $(…) subshell we're in + } always { + rm -rf -- ${__tests_tmpdir} + } + ) + + for ((i=1; i<=${#region_highlight}; i++)); do + local -a highlight_zone; highlight_zone=( ${(z)region_highlight[$i]} ) + integer start=$highlight_zone[1] end=$highlight_zone[2] + if (( start < end )) # region_highlight ranges are half-open + then + (( --end )) # convert to closed range, like expected_region_highlight + (( ++start, ++end )) # region_highlight is 0-indexed; expected_region_highlight is 1-indexed + fi + printf " %s # %s\n" ${(qq):-"$start $end $highlight_zone[3]"} ${${(qqqq)BUFFER[start,end]}[3,-2]} + done +} +print ')' diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/tap-colorizer.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/tap-colorizer.zsh new file mode 100755 index 0000000..f3dc84e --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/tap-colorizer.zsh @@ -0,0 +1,71 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015, 2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# This is a stdin-to-stdout filter that takes TAP output (such as 'make test') +# on stdin and passes it, colorized, to stdout. + +emulate -LR zsh + +if [[ ! -t 1 ]] ; then + exec cat +fi + +while read -r line; +do + case $line in + # comment (filename header) or plan + (#* | <->..<->) + print -nP %F{blue} + ;; + # SKIP + (*# SKIP*) + print -nP %F{yellow} + ;; + # XPASS + (ok*# TODO*) + print -nP %F{red} + ;; + # XFAIL + (not ok*# TODO*) + print -nP %F{yellow} + ;; + # FAIL + (not ok*) + print -nP %F{red} + ;; + # PASS + (ok*) + print -nP %F{green} + ;; + esac + print -nr - "$line" + print -nP %f + echo "" # newline +done diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/tap-filter b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/tap-filter new file mode 100755 index 0000000..f9aa604 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/tap-filter @@ -0,0 +1,47 @@ +#!/usr/bin/env perl +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# vim: ft=perl sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# This is a stdin-to-stdout filter that takes TAP output (such as 'make test') +# on stdin and deletes lines pertaining to expected results. +# +# More specifically, if any of the test points in a test file either failed but +# was expected to pass, or passed but was expected to fail, then emit that test +# file's output; else, elide that test file's output. + +use v5.10.0; +use warnings; +use strict; + +undef $/; # slurp mode +print for + grep { /^ok.*# TODO/m or /^not ok(?!.*# TODO)/m or /^Bail out!/m } + # Split on plan lines and remove them from the output. (To keep them, + # use the lookahead syntax, «(?=…)», to make the match zero-length.) + split /^\d+\.\.\d+$/m, + ; diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-highlighting.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-highlighting.zsh new file mode 100755 index 0000000..8b564a8 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-highlighting.zsh @@ -0,0 +1,291 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2017 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + + +setopt NO_UNSET WARN_CREATE_GLOBAL + +# Required for add-zle-hook-widget. +zmodload zsh/zle + +local -r root=${0:h:h} +local -a anon_argv; anon_argv=("$@") + +(){ +set -- "${(@)anon_argv}" +# Check an highlighter was given as argument. +[[ -n "$1" ]] || { + echo >&2 "Bail out! You must provide the name of a valid highlighter as argument." + exit 2 +} + +# Check the highlighter is valid. +[[ -f $root/highlighters/$1/$1-highlighter.zsh ]] || { + echo >&2 "Bail out! Could not find highlighter ${(qq)1}." + exit 2 +} + +# Check the highlighter has test data. +[[ -d $root/highlighters/$1/test-data ]] || { + echo >&2 "Bail out! Highlighter ${(qq)1} has no test data." + exit 2 +} + +# Set up results_filter +local results_filter +if [[ ${QUIET-} == y ]]; then + if type -w perl >/dev/null; then + results_filter=$root/tests/tap-filter + else + echo >&2 "Bail out! quiet mode not supported: perl not found"; exit 2 + fi +else + results_filter=cat +fi +[[ -n $results_filter ]] || { echo >&2 "Bail out! BUG setting \$results_filter"; exit 2 } + +# Load the main script. +# While here, test that it doesn't eat aliases. +print > >($results_filter | $root/tests/tap-colorizer.zsh) -r -- "# global (driver) tests" +print > >($results_filter | $root/tests/tap-colorizer.zsh) -r -- "1..1" +alias -- +plus=plus +alias -- _other=other +local original_alias_dash_L_output="$(alias -L)" +. $root/zsh-syntax-highlighting.zsh +if [[ $original_alias_dash_L_output == $(alias -L) ]]; then + print -r -- "ok 1 # 'alias -- +foo=bar' is preserved" +else + print -r -- "not ok 1 # 'alias -- +foo=bar' is preserved" + exit 1 +fi > >($results_filter | $root/tests/tap-colorizer.zsh) + +# Overwrite _zsh_highlight_add_highlight so we get the key itself instead of the style +_zsh_highlight_add_highlight() +{ + region_highlight+=("$1 $2 $3") +} + +# Activate the highlighter. +ZSH_HIGHLIGHT_HIGHLIGHTERS=($1) + +# In zsh<5.3, 'typeset -p arrayvar' emits two lines, so we use this wrapper instead. +typeset_p() { + for 1 ; do + if [[ ${(tP)1} == *array* ]]; then + print -r -- "$1=( ${(@qqqqP)1} )" + else + print -r -- "$1=${(qqqqP)1}" + fi + done +} + +# Escape # as ♯ and newline as ↵ they are illegal in the 'description' part of TAP output +# The string to escape is «"$@"»; the result is returned in $REPLY. +tap_escape() { + local s="${(j. .)@}" + REPLY="${${s//'#'/♯}//$'\n'/↵}" +} + +# Runs a highlighting test +# $1: data file +run_test_internal() { + + local tests_tempdir="$1"; shift + local srcdir="$PWD" + builtin cd -q -- "$tests_tempdir" || { echo >&2 "Bail out! On ${(qq)1}: cd failed: $?"; return 1 } + + # Load the data and prepare checking it. + local BUFFER CURSOR MARK PENDING PREBUFFER REGION_ACTIVE WIDGET REPLY skip_test fail_test unsorted=0 + local expected_mismatch + local skip_mismatch + local -a expected_region_highlight region_highlight + + local ARG="$1" + local RETURN="" + () { + setopt localoptions + + # WARNING: The remainder of this anonymous function will run with the test's options in effect + if { ! . "$srcdir"/"$ARG" } || (( $#fail_test )); then + print -r -- "1..1" + print -r -- "## ${ARG:t:r}" + tap_escape $fail_test; fail_test=$REPLY + print -r -- "not ok 1 - failed setup: $fail_test" + return ${RETURN:=0} + fi + + (( $#skip_test )) && { + print -r -- "1..0 # SKIP $skip_test" + print -r -- "## ${ARG:t:r}" + return ${RETURN:=0} + } + + # Check the data declares $PREBUFFER or $BUFFER. + [[ -z $PREBUFFER && -z $BUFFER ]] && { echo >&2 "Bail out! On ${(qq)ARG}: Either 'PREBUFFER' or 'BUFFER' must be declared and non-blank"; return ${RETURN:=1}; } + [[ $PREBUFFER == (''|*$'\n') ]] || { echo >&2 "Bail out! On ${(qq)ARG}: PREBUFFER=${(qqqq)PREBUFFER} doesn't end with a newline"; return ${RETURN:=1}; } + + # Set sane defaults for ZLE variables + : ${CURSOR=$#BUFFER} ${PENDING=0} ${WIDGET=z-sy-h-test-harness-test-widget} + + # Process the data. + _zsh_highlight + }; [[ -z $RETURN ]] || return $RETURN + unset ARG + + integer print_expected_and_actual=0 + + if (( unsorted )); then + region_highlight=("${(@n)region_highlight}") + expected_region_highlight=("${(@n)expected_region_highlight}") + fi + + # Print the plan line, and some comments for human readers + echo "1..$(( $#expected_region_highlight + 1))" + echo "## ${1:t:r}" # note: tests/edit-failed-tests looks for the "##" emitted by this line + [[ -n $PREBUFFER ]] && printf '# %s\n' "$(typeset_p PREBUFFER)" + [[ -n $BUFFER ]] && printf '# %s\n' "$(typeset_p BUFFER)" + + local i + for ((i=1; i<=$#expected_region_highlight; i++)); do + local -a expected_highlight_zone; expected_highlight_zone=( ${(z)expected_region_highlight[i]} ) + integer exp_start=$expected_highlight_zone[1] exp_end=$expected_highlight_zone[2] + local todo= + if (( $+expected_highlight_zone[4] )); then + todo="# TODO $expected_highlight_zone[4]" + skip_mismatch="cardinality check disabled whilst regular test points are expected to fail" + fi + if ! (( $+region_highlight[i] )); then + print -r -- "not ok $i - unmatched expectation ($exp_start $exp_end $expected_highlight_zone[3])" \ + "${skip_mismatch:+"# TODO ${(qqq)skip_mismatch}"}" + if [[ -z $skip_mismatch ]]; then (( ++print_expected_and_actual )); fi + continue + fi + local -a highlight_zone; highlight_zone=( ${(z)region_highlight[i]} ) + integer start=$(( highlight_zone[1] + 1 )) end=$highlight_zone[2] + local desc="[$start,$end] «${BUFFER[$start,$end]}»" + tap_escape $desc; desc=$REPLY + if + [[ $start != $exp_start ]] || + [[ $end != $exp_end ]] || + [[ ${highlight_zone[3]%,} != ${expected_highlight_zone[3]} ]] # remove the comma that's before the memo field + then + print -r -- "not ok $i - $desc - expected ($exp_start $exp_end ${(qqq)expected_highlight_zone[3]}), observed ($start $end ${(qqq)highlight_zone[3]}). $todo" + if [[ -z $todo ]]; then (( ++print_expected_and_actual )); fi + else + print -r -- "ok $i - $desc${todo:+ - }$todo" + fi + unset expected_highlight_zone + unset exp_start exp_end + unset todo + unset highlight_zone + unset start end + unset desc + done + + # If both $skip_mismatch and $expected_mismatch are set, that means the test + # has some XFail test points, _and_ explicitly sets $expected_mismatch as + # well. Explicit settings should have priority, so we ignore $skip_mismatch + # if $expected_mismatch is set. + if [[ -n $skip_mismatch && -z $expected_mismatch ]]; then + tap_escape $skip_mismatch; skip_mismatch=$REPLY + print "ok $i - cardinality check" "# SKIP $skip_mismatch" + else + local todo + if [[ -n $expected_mismatch ]]; then + tap_escape $expected_mismatch; expected_mismatch=$REPLY + todo="# TODO $expected_mismatch" + fi + if (( $#expected_region_highlight == $#region_highlight )); then + print -r -- "ok $i - cardinality check${todo:+ - }$todo" + else + local details + details+="have $#expected_region_highlight expectations and $#region_highlight region_highlight entries: " + details+="«$(typeset_p expected_region_highlight)» «$(typeset_p region_highlight)»" + tap_escape $details; details=$REPLY + print -r -- "not ok $i - cardinality check - $details${todo:+ - }$todo" + if [[ -z $todo ]]; then (( ++print_expected_and_actual )); fi + fi + fi + if (( print_expected_and_actual )); then + () { + local -a left_column right_column + left_column=( "expected_region_highlight" "${(qq)expected_region_highlight[@]}" ) + right_column=( "region_highlight" "${(qq)region_highlight[@]}" ) + integer difference=$(( $#right_column - $#left_column )) + repeat $difference do left_column+=(.); done + paste \ + =(print -rC1 -- $left_column) \ + =(print -rC1 -- $right_column) \ + | if type column >/dev/null; then column -t -s $'\t'; else cat; fi \ + | sed 's/^/# /' + } + fi +} + +# Run a single test file. The exit status is 1 if the test harness had +# an error and 0 otherwise. The exit status does not depend on whether +# test points succeeded or failed. +run_test() { + # Do not combine the declaration and initialization: «local x="$(false)"» does not set $?. + local __tests_tempdir + __tests_tempdir="$(mktemp -d)" && [[ -d $__tests_tempdir ]] || { + echo >&2 "Bail out! mktemp failed"; return 1 + } + typeset -r __tests_tempdir # don't allow tests to override the variable that we will 'rm -rf' later on + + { + # Use a subshell to isolate tests from each other. + # (So tests can alter global shell state using 'cd', 'hash', etc) + { + # These braces are so multios don't come into play. + { (run_test_internal "$__tests_tempdir" "$@") 3>&1 >&2 2>&3 } | grep \^ + local ret=$pipestatus[1] stderr=$pipestatus[2] + if (( ! stderr )); then + # stdout will become stderr + echo "Bail out! On ${(qq)1}: output on stderr"; return 1 + else + return $ret + fi + } 3>&1 >&2 2>&3 + } always { + rm -rf -- "$__tests_tempdir" + } +} + +# Process each test data file in test data directory. +integer something_failed=0 +ZSH_HIGHLIGHT_STYLES=() +local data_file +for data_file in $root/highlighters/$1/test-data/*.zsh; do + run_test "$data_file" | tee >($results_filter | $root/tests/tap-colorizer.zsh) | grep -v '^not ok.*# TODO' | grep -Eq '^not ok|^ok.*# TODO' && (( something_failed=1 )) + (( $pipestatus[1] )) && exit 2 +done + +exit $something_failed +} diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-perfs.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-perfs.zsh new file mode 100755 index 0000000..aa139aa --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-perfs.zsh @@ -0,0 +1,103 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + + +# Required for add-zle-hook-widget. +zmodload zsh/zle + +# Check an highlighter was given as argument. +[[ -n "$1" ]] || { + echo >&2 "Bail out! You must provide the name of a valid highlighter as argument." + exit 2 +} + +# Check the highlighter is valid. +[[ -f ${0:h:h}/highlighters/$1/$1-highlighter.zsh ]] || { + echo >&2 "Bail out! Could not find highlighter ${(qq)1}." + exit 2 +} + +# Check the highlighter has test data. +[[ -d ${0:h:h}/highlighters/$1/test-data ]] || { + echo >&2 "Bail out! Highlighter ${(qq)1} has no test data." + exit 2 +} + +# Load the main script. +typeset -a region_highlight +. ${0:h:h}/zsh-syntax-highlighting.zsh + +# Activate the highlighter. +ZSH_HIGHLIGHT_HIGHLIGHTERS=($1) + +# Runs a highlighting test +# $1: data file +run_test_internal() { + local -a highlight_zone + + local tests_tempdir="$1"; shift + local srcdir="$PWD" + builtin cd -q -- "$tests_tempdir" || { echo >&2 "Bail out! cd failed: $?"; return 1 } + + # Load the data and prepare checking it. + PREBUFFER= BUFFER= ; + . "$srcdir"/"$1" + + # Check the data declares $PREBUFFER or $BUFFER. + [[ -z $PREBUFFER && -z $BUFFER ]] && { echo >&2 "Bail out! Either 'PREBUFFER' or 'BUFFER' must be declared and non-blank"; return 1; } + + # Set $? for _zsh_highlight + true && _zsh_highlight +} + +run_test() { + # Do not combine the declaration and initialization: «local x="$(false)"» does not set $?. + local __tests_tempdir + __tests_tempdir="$(mktemp -d)" && [[ -d $__tests_tempdir ]] || { + echo >&2 "Bail out! mktemp failed"; return 1 + } + typeset -r __tests_tempdir # don't allow tests to override the variable that we will 'rm -rf' later on + + { + (run_test_internal "$__tests_tempdir" "$@") + } always { + rm -rf -- "$__tests_tempdir" + } +} + +# Process each test data file in test data directory. +local data_file +TIMEFMT="%*Es" +{ time (for data_file in ${0:h:h}/highlighters/$1/test-data/*.zsh; do + run_test "$data_file" + (( $pipestatus[1] )) && exit 2 +done) } 2>&1 || exit $? + +exit 0 diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-zprof.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-zprof.zsh new file mode 100755 index 0000000..ada1618 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/tests/test-zprof.zsh @@ -0,0 +1,78 @@ +#!/usr/bin/env zsh +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2015 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# Load the main script. +typeset -a region_highlight +. ${0:h:h}/zsh-syntax-highlighting.zsh + +# Activate the highlighter. +ZSH_HIGHLIGHT_HIGHLIGHTERS=(main) + +source_file=0.7.1:highlighters/$1/$1-highlighter.zsh + +# Runs a highlighting test +# $1: data file +run_test_internal() { + setopt interactivecomments + + local -a highlight_zone + + local tests_tempdir="$1"; shift + local srcdir="$PWD" + builtin cd -q -- "$tests_tempdir" || { echo >&2 "Bail out! cd failed: $?"; return 1 } + + # Load the data and prepare checking it. + PREBUFFER= + BUFFER=$(cd -- "$srcdir" && git cat-file blob $source_file) + expected_region_highlight=() + + zmodload zsh/zprof + zprof -c + # Set $? for _zsh_highlight + true && _zsh_highlight + zprof +} + +run_test() { + # Do not combine the declaration and initialization: «local x="$(false)"» does not set $?. + local __tests_tempdir + __tests_tempdir="$(mktemp -d)" && [[ -d $__tests_tempdir ]] || { + echo >&2 "Bail out! mktemp failed"; return 1 + } + typeset -r __tests_tempdir # don't allow tests to override the variable that we will 'rm -rf' later on + + { + (run_test_internal "$__tests_tempdir" "$@") + } always { + rm -rf -- "$__tests_tempdir" + } +} + +run_test diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh new file mode 100644 index 0000000..f2456ae --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh @@ -0,0 +1,2 @@ +0=${(%):-%N} +source ${0:A:h}/zsh-syntax-highlighting.zsh diff --git a/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh new file mode 100644 index 0000000..4295c93 --- /dev/null +++ b/dots/zsh/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh @@ -0,0 +1,587 @@ +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2010-2020 zsh-syntax-highlighting contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * 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. +# * Neither the name of the zsh-syntax-highlighting contributors 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. +# ------------------------------------------------------------------------------------------------- +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- +# vim: ft=zsh sw=2 ts=2 et +# ------------------------------------------------------------------------------------------------- + +# First of all, ensure predictable parsing. +typeset zsh_highlight__aliases="$(builtin alias -Lm '[^+]*')" +# In zsh <= 5.2, aliases that begin with a plus sign ('alias -- +foo=42') +# are emitted by `alias -L` without a '--' guard, so they don't round trip. +# +# Hence, we exclude them from unaliasing: +builtin unalias -m '[^+]*' + +# Set $0 to the expected value, regardless of functionargzero. +0=${(%):-%N} +if true; then + # $0 is reliable + typeset -g ZSH_HIGHLIGHT_VERSION=$(<"${0:A:h}"/.version) + typeset -g ZSH_HIGHLIGHT_REVISION=$(<"${0:A:h}"/.revision-hash) + if [[ $ZSH_HIGHLIGHT_REVISION == \$Format:* ]]; then + # When running from a source tree without 'make install', $ZSH_HIGHLIGHT_REVISION + # would be set to '$Format:%H$' literally. That's an invalid value, and obtaining + # the valid value (via `git rev-parse HEAD`, as Makefile does) might be costly, so: + ZSH_HIGHLIGHT_REVISION=HEAD + fi +fi + +# This function takes a single argument F and returns True iff F is an autoload stub. +_zsh_highlight__function_is_autoload_stub_p() { + if zmodload -e zsh/parameter; then + #(( ${+functions[$1]} )) && + [[ "$functions[$1]" == *"builtin autoload -X"* ]] + else + #[[ $(type -wa -- "$1") == *'function'* ]] && + [[ "${${(@f)"$(which -- "$1")"}[2]}" == $'\t'$histchars[3]' undefined' ]] + fi + # Do nothing here: return the exit code of the if. +} + +# Return True iff the argument denotes a function name. +_zsh_highlight__is_function_p() { + if zmodload -e zsh/parameter; then + (( ${+functions[$1]} )) + else + [[ $(type -wa -- "$1") == *'function'* ]] + fi +} + +# This function takes a single argument F and returns True iff F denotes the +# name of a callable function. A function is callable if it is fully defined +# or if it is marked for autoloading and autoloading it at the first call to it +# will succeed. In particular, if F has been marked for autoloading +# but is not available in $fpath, then calling this function on F will return False. +# +# See users/21671 https://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=21671 +_zsh_highlight__function_callable_p() { + if _zsh_highlight__is_function_p "$1" && + ! _zsh_highlight__function_is_autoload_stub_p "$1" + then + # Already fully loaded. + return 0 # true + else + # "$1" is either an autoload stub, or not a function at all. + # + # Use a subshell to avoid affecting the calling shell. + # + # We expect 'autoload +X' to return non-zero if it fails to fully load + # the function. + ( autoload -U +X -- "$1" 2>/dev/null ) + return $? + fi +} + +# ------------------------------------------------------------------------------------------------- +# Core highlighting update system +# ------------------------------------------------------------------------------------------------- + +# Use workaround for bug in ZSH? +# zsh-users/zsh@48cadf4 https://www.zsh.org/mla/workers/2017/msg00034.html +autoload -Uz is-at-least +if is-at-least 5.4; then + typeset -g zsh_highlight__pat_static_bug=false +else + typeset -g zsh_highlight__pat_static_bug=true +fi + +# Array declaring active highlighters names. +typeset -ga ZSH_HIGHLIGHT_HIGHLIGHTERS + +# Update ZLE buffer syntax highlighting. +# +# Invokes each highlighter that needs updating. +# This function is supposed to be called whenever the ZLE state changes. +_zsh_highlight() +{ + # Store the previous command return code to restore it whatever happens. + local ret=$? + # Make it read-only. Can't combine this with the previous line when POSIX_BUILTINS may be set. + typeset -r ret + + # $region_highlight should be predefined, either by zle or by the test suite's mock (non-special) array. + (( ${+region_highlight[@]} )) || { + echo >&2 'zsh-syntax-highlighting: error: $region_highlight is not defined' + echo >&2 'zsh-syntax-highlighting: (Check whether zsh-syntax-highlighting was installed according to the instructions.)' + return $ret + } + + # Probe the memo= feature, once. + (( ${+zsh_highlight__memo_feature} )) || { + region_highlight+=( " 0 0 fg=red, memo=zsh-syntax-highlighting" ) + case ${region_highlight[-1]} in + ("0 0 fg=red") + # zsh 5.8 or earlier + integer -gr zsh_highlight__memo_feature=0 + ;; + ("0 0 fg=red memo=zsh-syntax-highlighting") + # zsh 5.9 or later + integer -gr zsh_highlight__memo_feature=1 + ;; + (" 0 0 fg=red, memo=zsh-syntax-highlighting") ;& + (*) + # We can get here in two ways: + # + # 1. When not running as a widget. In that case, $region_highlight is + # not a special variable (= one with custom getter/setter functions + # written in C) but an ordinary one, so the third case pattern matches + # and we fall through to this block. (The test suite uses this codepath.) + # + # 2. When running under a future version of zsh that will have changed + # the serialization of $region_highlight elements from their underlying + # C structs, so that none of the previous case patterns will match. + # + # In either case, fall back to a version check. + if is-at-least 5.9; then + integer -gr zsh_highlight__memo_feature=1 + else + integer -gr zsh_highlight__memo_feature=0 + fi + ;; + esac + region_highlight[-1]=() + } + + # Reset region_highlight to build it from scratch + if (( zsh_highlight__memo_feature )); then + region_highlight=( "${(@)region_highlight:#*memo=zsh-syntax-highlighting*}" ) + else + # Legacy codepath. Not very interoperable with other plugins (issue #418). + region_highlight=() + fi + + # Remove all highlighting in isearch, so that only the underlining done by zsh itself remains. + # For details see FAQ entry 'Why does syntax highlighting not work while searching history?'. + # This disables highlighting during isearch (for reasons explained in README.md) unless zsh is new enough + # and doesn't have the pattern matching bug + if [[ $WIDGET == zle-isearch-update ]] && { $zsh_highlight__pat_static_bug || ! (( $+ISEARCHMATCH_ACTIVE )) }; then + return $ret + fi + + # Before we 'emulate -L', save the user's options + local -A zsyh_user_options + if zmodload -e zsh/parameter; then + zsyh_user_options=("${(kv)options[@]}") + else + local canonical_options onoff option raw_options + raw_options=(${(f)"$(emulate -R zsh; set -o)"}) + canonical_options=(${${${(M)raw_options:#*off}%% *}#no} ${${(M)raw_options:#*on}%% *}) + for option in "${canonical_options[@]}"; do + [[ -o $option ]] + case $? in + (0) zsyh_user_options+=($option on);; + (1) zsyh_user_options+=($option off);; + (*) # Can't happen, surely? + echo "zsh-syntax-highlighting: warning: '[[ -o $option ]]' returned $?" + ;; + esac + done + fi + typeset -r zsyh_user_options + + emulate -L zsh + setopt localoptions warncreateglobal nobashrematch + local REPLY # don't leak $REPLY into global scope + + # Do not highlight if there are more than 300 chars in the buffer. It's most + # likely a pasted command or a huge list of files in that case.. + [[ -n ${ZSH_HIGHLIGHT_MAXLENGTH:-} ]] && [[ $#BUFFER -gt $ZSH_HIGHLIGHT_MAXLENGTH ]] && return $ret + + # Do not highlight if there are pending inputs (copy/paste). + (( KEYS_QUEUED_COUNT > 0 )) && return $ret + (( PENDING > 0 )) && return $ret + + { + local cache_place + local -a region_highlight_copy + + # Select which highlighters in ZSH_HIGHLIGHT_HIGHLIGHTERS need to be invoked. + local highlighter; for highlighter in $ZSH_HIGHLIGHT_HIGHLIGHTERS; do + + # eval cache place for current highlighter and prepare it + cache_place="_zsh_highlight__highlighter_${highlighter}_cache" + typeset -ga ${cache_place} + + # If highlighter needs to be invoked + if ! type "_zsh_highlight_highlighter_${highlighter}_predicate" >&/dev/null; then + echo "zsh-syntax-highlighting: warning: disabling the ${(qq)highlighter} highlighter as it has not been loaded" >&2 + # TODO: use ${(b)} rather than ${(q)} if supported + ZSH_HIGHLIGHT_HIGHLIGHTERS=( ${ZSH_HIGHLIGHT_HIGHLIGHTERS:#${highlighter}} ) + elif "_zsh_highlight_highlighter_${highlighter}_predicate"; then + + # save a copy, and cleanup region_highlight + region_highlight_copy=("${region_highlight[@]}") + region_highlight=() + + # Execute highlighter and save result + { + "_zsh_highlight_highlighter_${highlighter}_paint" + } always { + : ${(AP)cache_place::="${region_highlight[@]}"} + } + + # Restore saved region_highlight + region_highlight=("${region_highlight_copy[@]}") + + fi + + # Use value form cache if any cached + region_highlight+=("${(@P)cache_place}") + + done + + # Re-apply zle_highlight settings + + # region + () { + (( REGION_ACTIVE )) || return + integer min max + if (( MARK > CURSOR )) ; then + min=$CURSOR max=$MARK + else + min=$MARK max=$CURSOR + fi + if (( REGION_ACTIVE == 1 )); then + [[ $KEYMAP = vicmd ]] && (( max++ )) + elif (( REGION_ACTIVE == 2 )); then + local needle=$'\n' + # CURSOR and MARK are 0 indexed between letters like region_highlight + # Do not include the newline in the highlight + (( min = ${BUFFER[(Ib:min:)$needle]} )) + (( max = ${BUFFER[(ib:max:)$needle]} - 1 )) + fi + _zsh_highlight_apply_zle_highlight region standout "$min" "$max" + } + + # yank / paste (zsh-5.1.1 and newer) + (( $+YANK_ACTIVE )) && (( YANK_ACTIVE )) && _zsh_highlight_apply_zle_highlight paste standout "$YANK_START" "$YANK_END" + + # isearch + (( $+ISEARCHMATCH_ACTIVE )) && (( ISEARCHMATCH_ACTIVE )) && _zsh_highlight_apply_zle_highlight isearch underline "$ISEARCHMATCH_START" "$ISEARCHMATCH_END" + + # suffix + (( $+SUFFIX_ACTIVE )) && (( SUFFIX_ACTIVE )) && _zsh_highlight_apply_zle_highlight suffix bold "$SUFFIX_START" "$SUFFIX_END" + + + return $ret + + + } always { + typeset -g _ZSH_HIGHLIGHT_PRIOR_BUFFER="$BUFFER" + typeset -gi _ZSH_HIGHLIGHT_PRIOR_CURSOR=$CURSOR + } +} + +# Apply highlighting based on entries in the zle_highlight array. +# This function takes four arguments: +# 1. The exact entry (no patterns) in the zle_highlight array: +# region, paste, isearch, or suffix +# 2. The default highlighting that should be applied if the entry is unset +# 3. and 4. Two integer values describing the beginning and end of the +# range. The order does not matter. +_zsh_highlight_apply_zle_highlight() { + local entry="$1" default="$2" + integer first="$3" second="$4" + + # read the relevant entry from zle_highlight + # + # ### In zsh≥5.0.8 we'd use ${(b)entry}, but we support older zsh's, so we don't + # ### add (b). The only effect is on the failure mode for callers that violate + # ### the precondition. + local region="${zle_highlight[(r)${entry}:*]-}" + + if [[ -z "$region" ]]; then + # entry not specified at all, use default value + region=$default + else + # strip prefix + region="${region#${entry}:}" + + # no highlighting when set to the empty string or to 'none' + if [[ -z "$region" ]] || [[ "$region" == none ]]; then + return + fi + fi + + integer start end + if (( first < second )); then + start=$first end=$second + else + start=$second end=$first + fi + region_highlight+=("$start $end $region, memo=zsh-syntax-highlighting") +} + + +# ------------------------------------------------------------------------------------------------- +# API/utility functions for highlighters +# ------------------------------------------------------------------------------------------------- + +# Array used by highlighters to declare user overridable styles. +typeset -gA ZSH_HIGHLIGHT_STYLES + +# Whether the command line buffer has been modified or not. +# +# Returns 0 if the buffer has changed since _zsh_highlight was last called. +_zsh_highlight_buffer_modified() +{ + [[ "${_ZSH_HIGHLIGHT_PRIOR_BUFFER:-}" != "$BUFFER" ]] +} + +# Whether the cursor has moved or not. +# +# Returns 0 if the cursor has moved since _zsh_highlight was last called. +_zsh_highlight_cursor_moved() +{ + [[ -n $CURSOR ]] && [[ -n ${_ZSH_HIGHLIGHT_PRIOR_CURSOR-} ]] && (($_ZSH_HIGHLIGHT_PRIOR_CURSOR != $CURSOR)) +} + +# Add a highlight defined by ZSH_HIGHLIGHT_STYLES. +# +# Should be used by all highlighters aside from 'pattern' (cf. ZSH_HIGHLIGHT_PATTERN). +# Overwritten in tests/test-highlighting.zsh when testing. +_zsh_highlight_add_highlight() +{ + local -i start end + local highlight + start=$1 + end=$2 + shift 2 + for highlight; do + if (( $+ZSH_HIGHLIGHT_STYLES[$highlight] )); then + region_highlight+=("$start $end $ZSH_HIGHLIGHT_STYLES[$highlight], memo=zsh-syntax-highlighting") + break + fi + done +} + +# ------------------------------------------------------------------------------------------------- +# Setup functions +# ------------------------------------------------------------------------------------------------- + +# Helper for _zsh_highlight_bind_widgets +# $1 is name of widget to call +_zsh_highlight_call_widget() +{ + builtin zle "$@" && + _zsh_highlight +} + +# Decide whether to use the zle-line-pre-redraw codepath (colloquially known as +# "feature/redrawhook", after the topic branch's name) or the legacy "bind all +# widgets" codepath. +# +# We use the new codepath under two conditions: +# +# 1. If it's available, which we check by testing for add-zle-hook-widget's availability. +# +# 2. If zsh has the memo= feature, which is required for interoperability reasons. +# See issues #579 and #735, and the issues referenced from them. +# +# We check this with a plain version number check, since a functional check, +# as done by _zsh_highlight, can only be done from inside a widget +# function — a catch-22. +if is-at-least 5.9 && _zsh_highlight__function_callable_p add-zle-hook-widget +then + autoload -U add-zle-hook-widget + _zsh_highlight__zle-line-finish() { + # Reset $WIDGET since the 'main' highlighter depends on it. + # + # Since $WIDGET is declared by zle as read-only in this function's scope, + # a nested function is required in order to shadow its built-in value; + # see "User-defined widgets" in zshall. + () { + local -h -r WIDGET=zle-line-finish + _zsh_highlight + } + } + _zsh_highlight__zle-line-pre-redraw() { + # Set $? to 0 for _zsh_highlight. Without this, subsequent + # zle-line-pre-redraw hooks won't run, since add-zle-hook-widget happens to + # call us with $? == 1 in the common case. + true && _zsh_highlight "$@" + } + _zsh_highlight_bind_widgets(){} + if [[ -o zle ]]; then + add-zle-hook-widget zle-line-pre-redraw _zsh_highlight__zle-line-pre-redraw + add-zle-hook-widget zle-line-finish _zsh_highlight__zle-line-finish + fi +else + # Rebind all ZLE widgets to make them invoke _zsh_highlights. + _zsh_highlight_bind_widgets() + { + setopt localoptions noksharrays + typeset -F SECONDS + local prefix=orig-s$SECONDS-r$RANDOM # unique each time, in case we're sourced more than once + + # Load ZSH module zsh/zleparameter, needed to override user defined widgets. + zmodload zsh/zleparameter 2>/dev/null || { + print -r -- >&2 'zsh-syntax-highlighting: failed loading zsh/zleparameter.' + return 1 + } + + # Override ZLE widgets to make them invoke _zsh_highlight. + local -U widgets_to_bind + widgets_to_bind=(${${(k)widgets}:#(.*|run-help|which-command|beep|set-local-history|yank|yank-pop)}) + + # Always wrap special zle-line-finish widget. This is needed to decide if the + # current line ends and special highlighting logic needs to be applied. + # E.g. remove cursor imprint, don't highlight partial paths, ... + widgets_to_bind+=(zle-line-finish) + + # Always wrap special zle-isearch-update widget to be notified of updates in isearch. + # This is needed because we need to disable highlighting in that case. + widgets_to_bind+=(zle-isearch-update) + + local cur_widget + for cur_widget in $widgets_to_bind; do + case ${widgets[$cur_widget]:-""} in + + # Already rebound event: do nothing. + user:_zsh_highlight_widget_*);; + + # The "eval"'s are required to make $cur_widget a closure: the value of the parameter at function + # definition time is used. + # + # We can't use ${0/_zsh_highlight_widget_} because these widgets are always invoked with + # NO_function_argzero, regardless of the option's setting here. + + # User defined widget: override and rebind old one with prefix "orig-". + user:*) zle -N $prefix-$cur_widget ${widgets[$cur_widget]#*:} + eval "_zsh_highlight_widget_${(q)prefix}-${(q)cur_widget}() { _zsh_highlight_call_widget ${(q)prefix}-${(q)cur_widget} -- \"\$@\" }" + zle -N $cur_widget _zsh_highlight_widget_$prefix-$cur_widget;; + + # Completion widget: override and rebind old one with prefix "orig-". + completion:*) zle -C $prefix-$cur_widget ${${(s.:.)widgets[$cur_widget]}[2,3]} + eval "_zsh_highlight_widget_${(q)prefix}-${(q)cur_widget}() { _zsh_highlight_call_widget ${(q)prefix}-${(q)cur_widget} -- \"\$@\" }" + zle -N $cur_widget _zsh_highlight_widget_$prefix-$cur_widget;; + + # Builtin widget: override and make it call the builtin ".widget". + builtin) eval "_zsh_highlight_widget_${(q)prefix}-${(q)cur_widget}() { _zsh_highlight_call_widget .${(q)cur_widget} -- \"\$@\" }" + zle -N $cur_widget _zsh_highlight_widget_$prefix-$cur_widget;; + + # Incomplete or nonexistent widget: Bind to z-sy-h directly. + *) + if [[ $cur_widget == zle-* ]] && (( ! ${+widgets[$cur_widget]} )); then + _zsh_highlight_widget_${cur_widget}() { :; _zsh_highlight } + zle -N $cur_widget _zsh_highlight_widget_$cur_widget + else + # Default: unhandled case. + print -r -- >&2 "zsh-syntax-highlighting: unhandled ZLE widget ${(qq)cur_widget}" + print -r -- >&2 "zsh-syntax-highlighting: (This is sometimes caused by doing \`bindkey ${(q-)cur_widget}\` without creating the ${(qq)cur_widget} widget with \`zle -N\` or \`zle -C\`.)" + fi + esac + done + } +fi + +# Load highlighters from directory. +# +# Arguments: +# 1) Path to the highlighters directory. +_zsh_highlight_load_highlighters() +{ + setopt localoptions noksharrays bareglobqual + + # Check the directory exists. + [[ -d "$1" ]] || { + print -r -- >&2 "zsh-syntax-highlighting: highlighters directory ${(qq)1} not found." + return 1 + } + + # Load highlighters from highlighters directory and check they define required functions. + local highlighter highlighter_dir + for highlighter_dir ($1/*/(/)); do + highlighter="${highlighter_dir:t}" + [[ -f "$highlighter_dir${highlighter}-highlighter.zsh" ]] && + . "$highlighter_dir${highlighter}-highlighter.zsh" + if type "_zsh_highlight_highlighter_${highlighter}_paint" &> /dev/null && + type "_zsh_highlight_highlighter_${highlighter}_predicate" &> /dev/null; + then + # New (0.5.0) function names + elif type "_zsh_highlight_${highlighter}_highlighter" &> /dev/null && + type "_zsh_highlight_${highlighter}_highlighter_predicate" &> /dev/null; + then + # Old (0.4.x) function names + if false; then + # TODO: only show this warning for plugin authors/maintainers, not for end users + print -r -- >&2 "zsh-syntax-highlighting: warning: ${(qq)highlighter} highlighter uses deprecated entry point names; please ask its maintainer to update it: https://github.com/zsh-users/zsh-syntax-highlighting/issues/329" + fi + # Make it work. + eval "_zsh_highlight_highlighter_${(q)highlighter}_paint() { _zsh_highlight_${(q)highlighter}_highlighter \"\$@\" }" + eval "_zsh_highlight_highlighter_${(q)highlighter}_predicate() { _zsh_highlight_${(q)highlighter}_highlighter_predicate \"\$@\" }" + else + print -r -- >&2 "zsh-syntax-highlighting: ${(qq)highlighter} highlighter should define both required functions '_zsh_highlight_highlighter_${highlighter}_paint' and '_zsh_highlight_highlighter_${highlighter}_predicate' in ${(qq):-"$highlighter_dir${highlighter}-highlighter.zsh"}." + fi + done +} + + +# ------------------------------------------------------------------------------------------------- +# Setup +# ------------------------------------------------------------------------------------------------- + +# Try binding widgets. +_zsh_highlight_bind_widgets || { + print -r -- >&2 'zsh-syntax-highlighting: failed binding ZLE widgets, exiting.' + return 1 +} + +# Resolve highlighters directory location. +_zsh_highlight_load_highlighters "${ZSH_HIGHLIGHT_HIGHLIGHTERS_DIR:-${${0:A}:h}/highlighters}" || { + print -r -- >&2 'zsh-syntax-highlighting: failed loading highlighters, exiting.' + return 1 +} + +# Reset scratch variables when commandline is done. +_zsh_highlight_preexec_hook() +{ + typeset -g _ZSH_HIGHLIGHT_PRIOR_BUFFER= + typeset -gi _ZSH_HIGHLIGHT_PRIOR_CURSOR= +} +autoload -Uz add-zsh-hook +add-zsh-hook preexec _zsh_highlight_preexec_hook 2>/dev/null || { + print -r -- >&2 'zsh-syntax-highlighting: failed loading add-zsh-hook.' + } + +# Load zsh/parameter module if available +zmodload zsh/parameter 2>/dev/null || true + +# Initialize the array of active highlighters if needed. +[[ $#ZSH_HIGHLIGHT_HIGHLIGHTERS -eq 0 ]] && ZSH_HIGHLIGHT_HIGHLIGHTERS=(main) + +if (( $+X_ZSH_HIGHLIGHT_DIRS_BLACKLIST )); then + print >&2 'zsh-syntax-highlighting: X_ZSH_HIGHLIGHT_DIRS_BLACKLIST is deprecated. Please use ZSH_HIGHLIGHT_DIRS_BLACKLIST.' + ZSH_HIGHLIGHT_DIRS_BLACKLIST=($X_ZSH_HIGHLIGHT_DIRS_BLACKLIST) + unset X_ZSH_HIGHLIGHT_DIRS_BLACKLIST +fi + +# Restore the aliases we unned +eval "$zsh_highlight__aliases" +builtin unset zsh_highlight__aliases + +# Set $?. +true diff --git a/dots/zsh/.config/zsh/setup/aliases.zsh b/dots/zsh/.config/zsh/setup/aliases.zsh new file mode 100755 index 0000000..73b09b3 --- /dev/null +++ b/dots/zsh/.config/zsh/setup/aliases.zsh @@ -0,0 +1,27 @@ +#!/bin/sh + +#-- -- +alias gc="git checkout" +alias gcb="git checkout -b" +alias gcm="git commit -m" +alias ga="git add" +alias gaa="git add ." +alias gpl="git pull" +alias gps="git push" +alias gr="git rebase" +alias gss="git status" +alias gsa="git stash" +alias gsr="git stash pop" +alias gl="git log --oneline" +#-- -- + +#-- -- +alias fuckuctl="journalctl --user -fu" +alias fuckctl="journalctl -fu" + +alias ..="cd .." +#-- -- + +#-- -- +alias vim="nvim" +#-- -- diff --git a/dots/zsh/.config/zsh/setup/device.zsh b/dots/zsh/.config/zsh/setup/device.zsh new file mode 100755 index 0000000..d3f8c4b --- /dev/null +++ b/dots/zsh/.config/zsh/setup/device.zsh @@ -0,0 +1,30 @@ +#!/bin/zsh + +source log.sh "setup/device.zsh" + +#-- -- +platform="$(platform.sh)" +platform_setup="$ZDOTDIR/$platform" +init_platform="$platform_setup/init.zsh" +if [ ! -d "$platform_setup" ]; then + log ERROR "misconfigured platform $platform: $platform_setup is not a directory" + exit 1 +fi +if [ -e "$init_platform" ]; then + log DEBUG "executing $init_platform" + . "$init_platform" +else + log DEBUG "no platform-specific init for $platform at $init_platform" +fi +#-- -- + +#-- -- +machine="$(system_name.sh)" +machine_init="$platform_setup/$machine.zsh" +if [ -e "$machine_init" ]; then + log DEBUG "executing $platform.$machine $machine_init" + . "$machine_init" +else + log WARN "no machine-specific init for $platform.$machine at $machine_init" +fi +#-- -- diff --git a/dots/zsh/.config/zsh/setup/gpg.zsh.j2 b/dots/zsh/.config/zsh/setup/gpg.zsh.j2 new file mode 100755 index 0000000..4ffb38f --- /dev/null +++ b/dots/zsh/.config/zsh/setup/gpg.zsh.j2 @@ -0,0 +1,23 @@ +#!/bin/zsh + + +# -- -- +KEY_ID="{{ pgp.id }}" +gpg -k "$KEY_ID" >/dev/null 2>&1 || gpg --import "$HOME/.pubkey" + +cp $HOME/scripts/pinentry.sh /tmp/pinentry + + +export PINENTRY_USER_DATA="${PINENTRY_USER_DATA:-PINENTRY_USE_TTY}" +if [ "$SSH_CLIENT" ]; then + export PINENTRY_USER_DATA=PINENTRY_USE_CURSES + exit 0 +fi + +# yubikey! +unset SSH_AGENT_PID +export GPG_TTY=$(tty) +export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) +gpgconf --launch gpg-agent +gpg-connect-agent updatestartuptty /bye > /dev/null +# -- -- diff --git a/dots/zsh/.config/zsh/setup/history.zsh b/dots/zsh/.config/zsh/setup/history.zsh new file mode 100755 index 0000000..ea8ab9c --- /dev/null +++ b/dots/zsh/.config/zsh/setup/history.zsh @@ -0,0 +1,14 @@ +#!/bin/zsh + +HISTSIZE=2000000 +SAVEHIST=$HISTSIZE +: ${HISTFILE=$ZDOTDIR/zsh_history} + +setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format. +setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history. +setopt HIST_FIND_NO_DUPS # Do not display a previously found event. +setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate. +setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again. +setopt HIST_IGNORE_SPACE # Do not record an event starting with a space. +setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file. +setopt SHARE_HISTORY # Share history between all sessions. diff --git a/dots/zsh/.config/zsh/setup/misc.zsh b/dots/zsh/.config/zsh/setup/misc.zsh new file mode 100755 index 0000000..f301dcc --- /dev/null +++ b/dots/zsh/.config/zsh/setup/misc.zsh @@ -0,0 +1,11 @@ +#!/bin/zsh + +backward-kill-dir () { + local WORDCHARS=${WORDCHARS/\/} + zle backward-kill-word + zle -f kill +} +zle -N backward-kill-dir +bindkey '^[^?' backward-kill-dir + +bindkey \^K kill-line diff --git a/dots/zsh/.config/zsh/setup/tools.zsh b/dots/zsh/.config/zsh/setup/tools.zsh new file mode 100755 index 0000000..fd66b63 --- /dev/null +++ b/dots/zsh/.config/zsh/setup/tools.zsh @@ -0,0 +1,20 @@ +#!/bin/zsh + +#-- -- +eval "$(mise activate zsh)" +#-- -- + +#-- -- +eval "$(zoxide init --cmd z zsh)" +alias cd="z" +#-- -- + +#-- -- +eval "$(starship init zsh)" +#-- -- + +#-- -- +export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=#626262,underline' +source "$ZDOTDIR/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh" +source "$ZDOTDIR/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" +#-- -- diff --git a/dots/zsh/.hushlogin b/dots/zsh/.hushlogin new file mode 100644 index 0000000..e69de29 diff --git a/dots/zsh/.zshenv b/dots/zsh/.zshenv new file mode 100644 index 0000000..bc00d69 --- /dev/null +++ b/dots/zsh/.zshenv @@ -0,0 +1 @@ +ZDOTDIR=${XDG_CONFIG_HOME:-$HOME/.config}/zsh diff --git a/git/.config/git/rootignore b/git/.config/git/rootignore deleted file mode 100644 index 136db89..0000000 --- a/git/.config/git/rootignore +++ /dev/null @@ -1,7 +0,0 @@ -.classpath -.factorypath -.project -.settings -.idea -.cache -.vscode diff --git a/git/.gitconfig.j2 b/git/.gitconfig.j2 deleted file mode 100644 index 015ad96..0000000 --- a/git/.gitconfig.j2 +++ /dev/null @@ -1,12 +0,0 @@ -[user] - signingkey = {{ pgp.signing }} - user = {{ user.name }} - email = {{ user.email }} -[commit] - gpgsign = true -[core] - excludesFile = ~/.config/git/rootignore -[push] - autoSetupRemote = true -[pull] - rebase = true diff --git a/gpg/.gnupg/common.conf b/gpg/.gnupg/common.conf deleted file mode 100755 index 5add401..0000000 --- a/gpg/.gnupg/common.conf +++ /dev/null @@ -1 +0,0 @@ -use-keyboxd diff --git a/gpg/.gnupg/gpg-agent.conf b/gpg/.gnupg/gpg-agent.conf deleted file mode 100755 index 3578512..0000000 --- a/gpg/.gnupg/gpg-agent.conf +++ /dev/null @@ -1,2 +0,0 @@ -pinentry-program /tmp/pinentry -enable-ssh-support diff --git a/home/.pubkey.j2 b/home/.pubkey.j2 deleted file mode 100644 index e4e3602..0000000 --- a/home/.pubkey.j2 +++ /dev/null @@ -1 +0,0 @@ -{{ pgp.asc }} diff --git a/home/Documents/pubkey.asc b/home/Documents/pubkey.asc deleted file mode 100644 index e69de29..0000000 diff --git a/home/Pictures/pfp/bubblegum.png b/home/Pictures/pfp/bubblegum.png deleted file mode 100644 index 171bc62..0000000 Binary files a/home/Pictures/pfp/bubblegum.png and /dev/null differ diff --git a/home/Pictures/pfp/eejypenguin.png b/home/Pictures/pfp/eejypenguin.png deleted file mode 100644 index 2ae47cb..0000000 Binary files a/home/Pictures/pfp/eejypenguin.png and /dev/null differ diff --git a/home/Pictures/pfp/gus.jpg b/home/Pictures/pfp/gus.jpg deleted file mode 100644 index 8073311..0000000 Binary files a/home/Pictures/pfp/gus.jpg and /dev/null differ diff --git a/home/Pictures/pfp/mefr.png b/home/Pictures/pfp/mefr.png deleted file mode 100644 index 46e6948..0000000 Binary files a/home/Pictures/pfp/mefr.png and /dev/null differ diff --git a/home/Pictures/pfp/shoppingpenguin.png b/home/Pictures/pfp/shoppingpenguin.png deleted file mode 100644 index 02c14ec..0000000 Binary files a/home/Pictures/pfp/shoppingpenguin.png and /dev/null differ diff --git a/home/Pictures/wallpapers/beach.jpg b/home/Pictures/wallpapers/beach.jpg deleted file mode 100644 index e2e3949..0000000 Binary files a/home/Pictures/wallpapers/beach.jpg and /dev/null differ diff --git a/home/Pictures/wallpapers/flat-books.png b/home/Pictures/wallpapers/flat-books.png deleted file mode 100644 index 3e4cf16..0000000 Binary files a/home/Pictures/wallpapers/flat-books.png and /dev/null differ diff --git a/home/Pictures/wallpapers/ghibli-road.png b/home/Pictures/wallpapers/ghibli-road.png deleted file mode 100644 index bf7b60d..0000000 Binary files a/home/Pictures/wallpapers/ghibli-road.png and /dev/null differ diff --git a/home/Pictures/wallpapers/penguins-hugging.jpg b/home/Pictures/wallpapers/penguins-hugging.jpg deleted file mode 100644 index ee21cc5..0000000 Binary files a/home/Pictures/wallpapers/penguins-hugging.jpg and /dev/null differ diff --git a/home/Pictures/wallpapers/rose.png b/home/Pictures/wallpapers/rose.png deleted file mode 100644 index 0b11bcb..0000000 Binary files a/home/Pictures/wallpapers/rose.png and /dev/null differ diff --git a/home/Pictures/wallpapers/snowy-light-trees.jpg b/home/Pictures/wallpapers/snowy-light-trees.jpg deleted file mode 100644 index c2f6350..0000000 Binary files a/home/Pictures/wallpapers/snowy-light-trees.jpg and /dev/null differ diff --git a/home/Pictures/wallpapers/sunrise-mountains.webp b/home/Pictures/wallpapers/sunrise-mountains.webp deleted file mode 100644 index c59bd58..0000000 Binary files a/home/Pictures/wallpapers/sunrise-mountains.webp and /dev/null differ diff --git a/home/Pictures/wallpapers/table.png b/home/Pictures/wallpapers/table.png deleted file mode 100644 index bb86417..0000000 Binary files a/home/Pictures/wallpapers/table.png and /dev/null differ diff --git a/home/Pictures/wallpapers/wall.jpg b/home/Pictures/wallpapers/wall.jpg deleted file mode 100644 index f9df8f1..0000000 Binary files a/home/Pictures/wallpapers/wall.jpg and /dev/null differ diff --git a/home/scripts/greet.sh b/home/scripts/greet.sh deleted file mode 100755 index cb2aae5..0000000 --- a/home/scripts/greet.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -source log.sh "greet.sh" - -pick_greeting() { - path="$1" - greetings=("$1"/*) - greeting_path="${greetings[$RANDOM % ${#greetings[@]}]}" - echo "$greeting_path" -} - -GREETINGS_LIST="$XDG_CONFIG_HOME/zsh/greetings" -if [ ! -d "$GREETINGS_LIST" ]; then - log DEBUG "no such file $GREETINGS_LIST" - exit 0 -fi - -for greetings in $(ls "$GREETINGS_LIST" | sort); do - echo - log DEBUG "greeting $greetings" - - path="$GREETINGS_LIST/$greetings" - if [ ! -d "$path" ]; then - log DEBUG "greetings $path is not a directory" - continue - fi - - greeting=$(pick_greeting "$path") - cat "$greeting" -done diff --git a/home/scripts/log.sh b/home/scripts/log.sh deleted file mode 100755 index 8895097..0000000 --- a/home/scripts/log.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh - -# usage: -# > source log.sh -# > log INFO "hello" -# > log "this is epic" -# > log DEBUG "yo" - -_LOG_CALLER=$(basename "$1") - -log() { - LEVEL=$1 - shift - - case "$LEVEL" in - INFO|DEBUG|ERROR) - ;; - *) - set -- "INFO" "$LEVEL" "$@" - LEVEL="INFO" - ;; - esac - - TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') - MESSAGE="$*" - - if [ "$LEVEL" = "DEBUG" ] && [ -z "$DEBUG" ]; then - return - fi - - echo "[$TIMESTAMP] [$_LOG_CALLER] [$LEVEL] $MESSAGE" -} diff --git a/home/scripts/pinentry.sh b/home/scripts/pinentry.sh deleted file mode 100755 index f02ee6f..0000000 --- a/home/scripts/pinentry.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -source log.sh "pinentry.sh" - -#-- -- -bin="${HOMEBREW_PREFIX:-"/usr"}/bin" -case "$PINENTRY_USER_DATA" in - *USE_TTY*) pe=$bin/pinentry-tty ;; - *USE_CURSES*) pe=$bin/pinentry-curses ;; - *USE_QT*) pe=$bin/pinentry-qt ;; - *USE_MAC*) pe=$bin/pinentry-mac ;; - *USE_GTK2*) pe=$bin/pinentry-gtk-2 ;; - *USE_GNOME3*) pe=$bin/pinentry-gnome3 ;; - *USE_X11*) pe=$bin/pinentry-x11 ;; -esac - -log DEBUG "$pe" - -exec $pe "$@" -#-- -- diff --git a/home/scripts/platform.sh b/home/scripts/platform.sh deleted file mode 100755 index 9449ceb..0000000 --- a/home/scripts/platform.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -case "$OSTYPE" in - solaris*) echo "solaris" ;; - darwin*) echo "osx" ;; - linux*) echo "linux" ;; - bsd*) echo "bsd" ;; - msys*) echo "windows" ;; - cygwin*) echo "windows" ;; - *) echo "unknown" ;; -esac diff --git a/home/scripts/system_name.sh b/home/scripts/system_name.sh deleted file mode 100755 index 2625293..0000000 --- a/home/scripts/system_name.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -PLATFORM="${PLATFORM:-`platform.sh`}" - -MACHINE="$HOST" -if [ "$PLATFORM" = "osx" ]; then - MACHINE="$(scutil --get ComputerName)" -elif [ "$PLATFORM" = "linux" ]; then - MACHINE="$(cat /proc/sys/kernel/hostname)" -fi - -echo $MACHINE | awk -F\. '{print $1}' \ - | tr '[:upper:]' '[:lower:]' \ - | tr ' ' '-' diff --git a/home/scripts/theme.sh b/home/scripts/theme.sh deleted file mode 100755 index 830f56b..0000000 --- a/home/scripts/theme.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# usage: theme.sh - -source log.sh "theme.sh" - -THEME="$1" -log DEBUG "setting theme $THEME" - -THEME_SRC="$XDG_CONFIG_HOME/theme" -THEME_DEST="$HOME/.theme" -log DEBUG "src $THEME_SRC -> dest $THEME_DEST" - -THEME_TEMPL="{{THEME}}" - -find -L "$THEME_SRC/" -type f | while read source_file; do - destination_file=`echo "$source_file" | sed "s|^$THEME_SRC|$THEME_DEST|g"` - mkdir -p `dirname $destination_file` - log DEBUG "src $source_file -> dest $destination_file" - cat "$source_file" | sed "s|$THEME_TEMPL|$THEME|g" > $destination_file -done - diff --git a/kawaii_logger.py b/kawaii_logger.py index 9ef3491..745e303 100644 --- a/kawaii_logger.py +++ b/kawaii_logger.py @@ -16,15 +16,16 @@ MOOD_SUFFIXES = { } LEVEL_COLORS = { - logging.DEBUG: "\033[95m", # light magenta - logging.INFO: "\033[96m", # light cyan + logging.DEBUG: "\033[95m", # light magenta + logging.INFO: "\033[96m", # light cyan logging.WARNING: "\033[93m", # light yellow - logging.ERROR: "\033[91m", # light red - logging.CRITICAL: "\033[35m", # magenta + logging.ERROR: "\033[91m", # light red + logging.CRITICAL: "\033[35m", # magenta } RESET_COLOR = "\033[0m" + class KawaiiFormatter(logging.Formatter): def format(self, record): level = record.levelname.lower() @@ -65,4 +66,3 @@ def setup_logger(verbose: bool = False) -> logging.Logger: logger.propagate = False return logger - diff --git a/main.py b/main.py new file mode 100755 index 0000000..34dbc04 --- /dev/null +++ b/main.py @@ -0,0 +1,255 @@ +#!/usr/bin/env python3 + +import sys + +sys.dont_write_bytecode = True + +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, List, Optional, Any +import argparse +import json +import logging +import os +import subprocess +import sys +import shutil +from concurrent.futures import Executor, ThreadPoolExecutor, as_completed +from functools import reduce +import jinja2 +from kawaii_logger import setup_logger + + +@dataclass(frozen=True) +class Config: + default_target_dir: Path = Path.home() + default_source_dir: Path = Path(__file__).parent / "dots" + default_compiled_dir: Path = Path("./.compiled_dotfiles/") + + script_dir: Path = Path("home/scripts") + contexts: Path = Path("contexts.json") + max_workers: int = (os.cpu_count() or 1) * 2 + + +@dataclass(frozen=True) +class Environment: + platform: str + system_name: str + context: Dict[str, Any] + logger: logging.Logger + + +def main() -> None: + args = parse_arguments() + env = initialize_environment(args) + + if not (args.compile or args.stow or args.clean): + env.logger.error("you gotta specify at least one action nya~ (⁎⁍̴̆‾⁍̴̆⁎)") + sys.exit(1) + + if args.compile: + env.logger.info(f"compiling {args.source} to {args.comp} ✨✧˖°") + if not compile_dotfiles(Path(args.source), Path(args.comp), env): + env.logger.error("uh oh! failed to compile dotfiles (ɐ•゚́•̀ɐ)") + sys.exit(1) + + if args.stow: + if not stow_dotfiles(Path(args.comp), Path(args.target), env, clean=False): + env.logger.error("failed to stow dotfiles... nyaaa (╥゚╥)") + sys.exit(1) + + if args.clean: + env.logger.info(f"cleaning dotfiles from {args.target} (⌟‾╥ ‾╥)°") + if not stow_dotfiles(Path(args.comp), Path(args.target), env, clean=True): + env.logger.error("couldn’t clean dotfiles... sobs (ɐ•゚́•̀ɐ)") + sys.exit(1) + + env.logger.info("yay~ all done!! ₕᵒ. .ᵒₕ♡") + sys.exit(0) + + +def initialize_environment(args) -> Environment: + logger = setup_logger(args.verbose) + + scripts = args.source / Config.script_dir + platform = run_shell_command([str(scripts / "platform.sh")]) + os.environ["PLATFORM"] = platform + system_name = run_shell_command([str(scripts / "system_name.sh")]) + + context = load_context(platform, system_name, Config.contexts, logger) + return Environment(platform, system_name, context, logger) + + +def copy_with_templates_rendered( + executor: Executor, source: Path, destination: Path, env: Environment +) -> bool: + shutil.copytree(source, destination, dirs_exist_ok=True) + env.logger.debug(f"copied {source} to {destination} ₰˜⋉♡") + + templates = [t for t in destination.glob("**/*.j2") if t.is_file()] + if not templates: + env.logger.debug(f"no templates to render in {source} (•ᴗ•)⁎") + return True + + for template in templates: + env.logger.debug(f"submitting template render for {template} ₰˜൨൨") + executor.submit(replace_with_rendered_template, template, env) + + return True + + +def replace_with_rendered_template(template: Path, env: Environment) -> bool: + env.logger.debug(f"rendering template {template} ✧*ฺ") + jinja_env = jinja2.Environment( + loader=jinja2.BaseLoader, + undefined=jinja2.StrictUndefined, + trim_blocks=True, + lstrip_blocks=True, + ) + rendered = render(template, jinja_env, env) + with open(template, "w") as t: + t.write(rendered) + env.logger.debug(f"removing .j2 suffix from {template.absolute()} ✧˖°") + template.rename(template.with_suffix("")) + return True + + +def compile_dotfiles(source_dir: Path, target_dir: Path, env: Environment) -> bool: + target_dir.mkdir(exist_ok=True, parents=True) + + with ThreadPoolExecutor(max_workers=Config.max_workers) as executor: + dotfile_dirs = list_dotfile_stows(source_dir) + env.logger.debug(f"found dotfile dirs: {dotfile_dirs}") + + futures = [ + executor.submit( + copy_with_templates_rendered, + executor, + d, + target_dir / d.name, + env, + ) + for d in dotfile_dirs + ] + env.logger.info(f"submitted {len(futures)} tasks to executor ₰˜.༄") + + return sum(1 for f in as_completed(futures) if f.result()) == len(futures) + + +def render( + source: Path, jinja_env: jinja2.Environment, env: Environment +) -> Optional[str]: + try: + with open(source, "r") as f: + content = f.read() + env.logger.debug(f"reading template {source} ✿.。.:・") + template = jinja_env.from_string(content) + env.logger.debug(f"rendered template from {source} ~ nyaaa :3") + return template.render(**env.context) + except Exception as e: + env.logger.error(f"couldn’t render {source}: {e} (;⌓̀_⌓́)") + return None + + +def stow_dotfiles( + source_dir: Path, target_dir: Path, env: Environment, clean: bool = False +) -> bool: + if not stow_installed(): + env.logger.error("stow not installed (╥゚╥)") + return False + + packages = list_dotfile_stows(source_dir) + stow_cmd = ["-D"] if clean else ["--no-folding"] + + for pkg in packages: + env.logger.info(f"running stow {stow_cmd} for {pkg.name} ₰˜݆༿") + run_shell_command( + ["stow", "-d", source_dir, "-t", target_dir, *stow_cmd, pkg.name] + ) + + return True + + +def stow_installed() -> bool: + return run_shell_command(["stow", "--version"]) != "" + + +def run_shell_command(cmd: List[str]) -> str: + result = subprocess.run(cmd, capture_output=True, text=True, check=True) + return result.stdout.strip() + + +def list_dotfile_stows(p: Path) -> list[Path]: + denylist = [".", "__"] + return [ + d for d in p.iterdir() if d.is_dir() and all(y not in d.name for y in denylist) + ] + + +def load_context( + platform: str, system_name: str, context_file: Path, logger: logging.Logger +) -> Dict[str, Any]: + try: + logger.info(f"reading context file: {context_file} ✧*:。゚✧") + with open(context_file) as f: + contexts = json.load(f) + + global_config = contexts.get("_global", {}) + platform_defaults = contexts.get(platform, {}).get("_default", {}) + defaults = merge_dicts(global_config, platform_defaults) + + system_config = contexts.get(platform, {}).get(system_name, {}) + if not system_config: + logger.warning( + f"couldn’t find system-specific config for {platform}.{system_name} (ɐ•゚́•̀ɐ)" + ) + + return { + "platform": platform, + "system_name": system_name, + **merge_dicts(defaults, system_config) + } + except (FileNotFoundError, json.JSONDecodeError) as e: + logger.error(f"error loading context: {e} ⋆ฺ°☁。⋆ฺ °★ °。") + return {} + + +def merge_dicts(*dicts: Dict[str, Any]) -> Dict[str, Any]: + def merge(a: Dict[str, Any], b: Dict[str, Any]) -> Dict[str, Any]: + out = dict(a) + for k, v in b.items(): + if k in out and isinstance(out[k], dict) and isinstance(v, dict): + out[k] = merge(out[k], v) + else: + out[k] = v + return out + + return reduce(merge, dicts, {}) + + +def parse_arguments() -> argparse.Namespace: + parser = argparse.ArgumentParser(description="cute dotfiles manager ✧˖°") + parser.add_argument("--compile", action="store_true", help="compile dotfiles") + parser.add_argument("--stow", action="store_true", help="stow compiled dotfiles") + parser.add_argument("--clean", action="store_true", help="clean stowed dotfiles") + parser.add_argument( + "--source", default=Config.default_source_dir, help=f"directory with stowable dotfiles. default '{Config.default_source_dir}'." + ) + parser.add_argument( + "--comp", default=Config.default_compiled_dir, help=f"compiled template output dir. default '{Config.default_compiled_dir}'. :3" + ) + parser.add_argument( + "--target", default=Config.default_target_dir, help=f"stow target directory. default '{Config.default_target_dir}'. -.-" + ) + parser.add_argument( + "--verbose", + "-v", + action="store_true", + help="enable verbose logging. default False. :D", + default=False, + ) + return parser.parse_args() + + +if __name__ == "__main__": + main() diff --git a/mise/.config/mise/config.toml b/mise/.config/mise/config.toml deleted file mode 100644 index 7d382a3..0000000 --- a/mise/.config/mise/config.toml +++ /dev/null @@ -1,5 +0,0 @@ -[tools] -node = "lts" -python = "3.12" -deno = "2.3.3" -java = "21" diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua deleted file mode 100644 index ae56b98..0000000 --- a/nvim/.config/nvim/init.lua +++ /dev/null @@ -1,9 +0,0 @@ --- -- -vim.g.mapleader = " " -vim.g.maplocalleader = "\\" --- -- - --- -- -require("config.lazy") -require("config.options") --- -- diff --git a/nvim/.config/nvim/lua/.gitkeep b/nvim/.config/nvim/lua/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/nvim/.config/nvim/lua/config/lazy.lua b/nvim/.config/nvim/lua/config/lazy.lua deleted file mode 100644 index f5ee74c..0000000 --- a/nvim/.config/nvim/lua/config/lazy.lua +++ /dev/null @@ -1,35 +0,0 @@ --- Bootstrap lazy.nvim -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end -end -vim.opt.rtp:prepend(lazypath) - --- Make sure to setup `mapleader` and `maplocalleader` before --- loading lazy.nvim so that mappings are correct. --- This is also a good place to setup other settings (vim.opt) -vim.g.mapleader = " " -vim.g.maplocalleader = "\\" - --- Setup lazy.nvim -require("lazy").setup({ - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, -}) diff --git a/nvim/.config/nvim/lua/config/options.lua b/nvim/.config/nvim/lua/config/options.lua deleted file mode 100644 index 01489f0..0000000 --- a/nvim/.config/nvim/lua/config/options.lua +++ /dev/null @@ -1,39 +0,0 @@ -local options = { - cmdheight = 0, - - number = true, - relativenumber = true, - - clipboard = "unnamedplus", - - breakindent = true, - tabstop = 4, - softtabstop = 4, - shiftwidth = 4, - expandtab = true, - - undofile = true, - - hlsearch = false, - ignorecase = true, - smartcase = true, - - completeopt = "menuone,noselect", - - timeout = true, - timeoutlen = 500, - - foldcolumn = "0", - foldlevel = 99, - foldlevelstart = 99, - foldenable = true, - - spelllang = { "nb", "en" }, - spellcapcheck = "", -} - -vim.g.spellfile_URL = "https://ftp.nluug.nl/pub/vim/runtime/spell/" - -for k, v in pairs(options) do - vim.opt[k] = v -end diff --git a/nvim/.config/nvim/lua/plugins/comment.lua b/nvim/.config/nvim/lua/plugins/comment.lua deleted file mode 100644 index fe9adbe..0000000 --- a/nvim/.config/nvim/lua/plugins/comment.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "numToStr/Comment.nvim", - opts = {}, - lazy = false, -} - diff --git a/nvim/.config/nvim/lua/plugins/lualine.lua b/nvim/.config/nvim/lua/plugins/lualine.lua deleted file mode 100644 index a5c341d..0000000 --- a/nvim/.config/nvim/lua/plugins/lualine.lua +++ /dev/null @@ -1,34 +0,0 @@ -return { - { - 'nvim-lualine/lualine.nvim', - event = 'VeryLazy', - opts = function() - return { - options = { - icons_enabled = true, - theme = 'gruvbox', - component_separators = { left = '', right = ''}, - section_separators = { left = '', right = ''}, - }, - sections = { - lualine_c = { - { 'filename', path = 1 }, - }, - lualine_y = { - { - require('tmux-status').tmux_windows, - cond = require('tmux-status').show, - padding = { left = 1, right = 1 }, - }, - } - }, - } - end, - }, - { - "christopher-francisco/tmux-status.nvim", --- lazy = true, - opts = {}, - }, -} - diff --git a/nvim/.config/nvim/lua/plugins/telescope.lua b/nvim/.config/nvim/lua/plugins/telescope.lua deleted file mode 100644 index 47b0b36..0000000 --- a/nvim/.config/nvim/lua/plugins/telescope.lua +++ /dev/null @@ -1,25 +0,0 @@ -return { - "nvim-telescope/telescope.nvim", - branch = "0.1.x", - dependencies = { - "nvim-lua/plenary.nvim", - { - "nvim-telescope/telescope-fzf-native.nvim", - build = "make", - cond = function() - return vim.fn.executable "make" == 1 - end, - }, - }, - config = function () - pcall(require("telescope").load_extension, "fzf") - end, - opt = { - pickers = { - colorscheme = { - enable_preview = true - } - } - }, -} - diff --git a/nvim/.config/nvim/lua/plugins/theme.lua b/nvim/.config/nvim/lua/plugins/theme.lua deleted file mode 100644 index 7f53fa8..0000000 --- a/nvim/.config/nvim/lua/plugins/theme.lua +++ /dev/null @@ -1,9 +0,0 @@ -return { - "ellisonleao/gruvbox.nvim", - opts = { - transparent_mode = true, - }, - init = function() - vim.cmd("colorscheme gruvbox") - end -} diff --git a/nvim/.config/nvim/lua/plugins/whichkey.lua b/nvim/.config/nvim/lua/plugins/whichkey.lua deleted file mode 100644 index 1173e06..0000000 --- a/nvim/.config/nvim/lua/plugins/whichkey.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "folke/which-key.nvim", - event = "VeryLazy", - opts = {}, -} - diff --git a/ssh/.ssh/config b/ssh/.ssh/config deleted file mode 100644 index 698b53c..0000000 --- a/ssh/.ssh/config +++ /dev/null @@ -1,16 +0,0 @@ -Include config.d/* - -Host coffee - User serve - ForwardAgent yes - Hostname outbound.liz.coffee - -Host coffee-one - User serve - ForwardAgent yes - Hostname outbound-one.liz.coffee - -Host coffee-src - User liz - Hostname src.liz.coffee - Port 2222 diff --git a/ssh/.ssh/config.d/.gitkeep b/ssh/.ssh/config.d/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/starship/.config/starship.toml b/starship/.config/starship.toml deleted file mode 100644 index 1967fe4..0000000 --- a/starship/.config/starship.toml +++ /dev/null @@ -1,53 +0,0 @@ -format = """ -${custom.tztime} \ -$username\ -$hostname\ -$directory\ -$git_branch\ -$git_state\ -$git_status\ -$cmd_duration\ -$line_break\ -$character""" - -[username] -show_always = true - -[hostname] -ssh_only = false - -[directory] -style = "blue" - -[character] -success_symbol = "[λ](blue)" -error_symbol = "[λ](red)" -vimcmd_symbol = "[λ](green)" - -[git_branch] -format = "[$branch]($style)" -style = "bright-black" - -[git_status] -format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218) ($ahead_behind$stashed)]($style)" -style = "cyan" -conflicted = "​" -untracked = "​" -modified = "​" -staged = "​" -renamed = "​" -deleted = "​" -stashed = "≡" - -[git_state] -format = '\([$state( $progress_current/$progress_total)]($style)\) ' -style = "bright-black" - -[cmd_duration] -format = "[$duration]($style) " -style = "yellow" - -[custom.tztime] -command = 'date +"%a %b %d %Y %l:%M%p (%Z%z)"' -when = "true" -format = '[\[$symbol($output)\]](green)' diff --git a/theme/.config/theme/alacritty.toml b/theme/.config/theme/alacritty.toml deleted file mode 100644 index d3c158b..0000000 --- a/theme/.config/theme/alacritty.toml +++ /dev/null @@ -1,4 +0,0 @@ -[general] -import = [ - "~/.config/alacritty/alacritty-theme/themes/{{THEME}}.toml" -] diff --git a/tmux/.config/tmux/tmux.conf b/tmux/.config/tmux/tmux.conf deleted file mode 100644 index 3f2862a..0000000 --- a/tmux/.config/tmux/tmux.conf +++ /dev/null @@ -1,26 +0,0 @@ -#-- -- -set -g prefix C-s - -unbind r -bind r source-file ~/.config/tmux/tmux.conf - -bind-key h select-pane -L -bind-key j select-pane -D -bind-key k select-pane -U -bind-key l select-pane -R -#-- -- - -#-- -- -set -g @plugin 'tmux-plugins/tpm' -set -g @plugin 'tmux-plugins/tmux-sensible' -#-- -- - -#-- -- -set -g @plugin 'egel/tmux-gruvbox' -set -g @tmux-gruvbox 'dark' -#-- -- - -#-- -- -# keep at bottom -run '~/.tmux/plugins/tpm/tpm' -#-- -- diff --git a/tmux/.tmux/plugins/tpm/.gitattributes b/tmux/.tmux/plugins/tpm/.gitattributes deleted file mode 100644 index 80772e4..0000000 --- a/tmux/.tmux/plugins/tpm/.gitattributes +++ /dev/null @@ -1,9 +0,0 @@ -# Force text files to have unix eols, so Windows/Cygwin does not break them -*.* eol=lf - -# These files are unfortunately not recognized as text files so -# explicitly listing them here -tpm eol=lf -bin/* eol=lf -bindings/* eol=lf -tests/* eol=lf diff --git a/tmux/.tmux/plugins/tpm/.gitignore b/tmux/.tmux/plugins/tpm/.gitignore deleted file mode 100644 index 8a94156..0000000 --- a/tmux/.tmux/plugins/tpm/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -**/.vagrant/ -run_tests -tests/run_tests_in_isolation -tests/helpers/helpers.sh diff --git a/tmux/.tmux/plugins/tpm/.gitmodules b/tmux/.tmux/plugins/tpm/.gitmodules deleted file mode 100644 index 5e44e3c..0000000 --- a/tmux/.tmux/plugins/tpm/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "lib/tmux-test"] - path = lib/tmux-test - url = https://github.com/tmux-plugins/tmux-test.git diff --git a/tmux/.tmux/plugins/tpm/.travis.yml b/tmux/.tmux/plugins/tpm/.travis.yml deleted file mode 100644 index ac45d8b..0000000 --- a/tmux/.tmux/plugins/tpm/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -# generic packages and tmux -before_install: - - sudo apt-get update - - sudo apt-get install -y git-core expect - - sudo apt-get install -y python-software-properties software-properties-common - - sudo apt-get install -y libevent-dev libncurses-dev - - git clone https://github.com/tmux/tmux.git - - cd tmux - - git checkout 2.0 - - sh autogen.sh - - ./configure && make && sudo make install - -install: - - git fetch --unshallow --recurse-submodules || git fetch --recurse-submodules - # manual `git clone` required for testing `tmux-test` plugin itself - - git clone https://github.com/tmux-plugins/tmux-test lib/tmux-test; true - - lib/tmux-test/setup - -script: ./tests/run_tests_in_isolation diff --git a/tmux/.tmux/plugins/tpm/CHANGELOG.md b/tmux/.tmux/plugins/tpm/CHANGELOG.md deleted file mode 100644 index a9ce81e..0000000 --- a/tmux/.tmux/plugins/tpm/CHANGELOG.md +++ /dev/null @@ -1,86 +0,0 @@ -# Changelog - -### master - -### v3.1.0, 2023-01-03 -- upgrade to new version of `tmux-test` -- bug: when using `emacs` copy mode, Enter does not quit screen after tpm - installation/update. Fix by making `Escape` the key for emacs mode. -- add a doc with troubleshooting instructions -- add `.gitattributes` file that forces linefeed characters (classic `\n`) as - line endings - helps with misconfigured git on windows/cygwin -- readme update: announce Cygwin support -- un-deprecate old plugin definition syntax: `set -g @tpm_plugins` -- More stuff, check `git log`. - -### v3.0.0, 2015-08-03 -- refactor `shared_set_tpm_path_constant` function -- move all instructions to `docs/` dir -- add `bin/install_plugins` cli executable script -- improved test runner function -- switch to using [tmux-test](https://github.com/tmux-plugins/tmux-test) - framework -- add `bin/update_plugins` cli executable script -- refactor test `expect` scripts, make them simpler and ensure they properly - assert expectations -- refactor code that sets 'TMUX_PLUGIN_MANAGER_PATH' global env var -- stop using global variable for 'tpm path' -- support defining plugins via `set -g @plugin` in sourced files as well - -### v2.0.0, 2015-07-07 -- enable overriding default key bindings -- start using `C-c` to clear screen -- add uninstall/clean procedure and keybinding (prefix+alt+u) (@chilicuil) -- add new `set @plugin 'repo'` plugin definition syntax (@chilicuil) -- revert back to using `-g` flag in new plugin definition syntax -- permit leading whitespace with new plugin definition syntax (thanks @chilicuil) -- make sure `TMUX_PLUGIN_MANAGER_PATH` always has trailng slash -- ensure old/deprecated plugin syntax `set -g @tpm_plugins` works alongside new - `set -g @plugin` syntax - -### v1.2.2, 2015-02-08 -- set GIT_TERMINAL_PROMPT=0 when doing `git clone`, `pull` or `submodule update` - to ensure git does not prompt for username/password in any case - -### v1.2.1, 2014-11-21 -- change the way plugin name is expanded. It now uses the http username - and password by default, like this: `https://git::@github.com/`. This prevents - username and password prompt (and subsequently tmux install hanging) with old - git versions. Fixes #7. - -### v1.2.0, 2014-11-20 -- refactor tests so they can be used on travis -- add travis.yml, add travis badge to the readme - -### v1.1.0, 2014-11-19 -- if the plugin is not downloaded do not source it -- remove `PLUGINS.md`, an obsolete list of plugins -- update readme with instructions about uninstalling plugins -- tilde char and `$HOME` in `TMUX_SHARED_MANAGER_PATH` couldn't be used because - they are just plain strings. Fixing the problem by manually expanding them. -- bugfix: fragile `*.tmux` file globbing (@majutsushi) - -### v1.0.0, 2014-08-05 -- update readme because of github organization change to - [tmux-plugins](https://github.com/tmux-plugins) -- update tests to pass -- update README to suggest different first plugin -- update list of plugins in the README -- remove README 'about' section -- move key binding to the main file. Delete `key_binding.sh`. -- rename `display_message` -> `echo_message` -- installing plugins installs just new plugins. Already installed plugins aren't - updated. -- add 'update plugin' binding and functionality -- add test for updating a plugin - -### v0.0.2, 2014-07-17 -- run all *.tmux plugin files as executables -- fix all redirects to /dev/null -- fix bug: TPM shared path is created before sync (cloning plugins from github - is done) -- add test suite running in Vagrant -- add Tmux version check. `TPM` won't run if Tmux version is less than 1.9. - -### v0.0.1, 2014-05-21 -- get TPM up and running diff --git a/tmux/.tmux/plugins/tpm/HOW_TO_PLUGIN.md b/tmux/.tmux/plugins/tpm/HOW_TO_PLUGIN.md deleted file mode 100644 index 9901619..0000000 --- a/tmux/.tmux/plugins/tpm/HOW_TO_PLUGIN.md +++ /dev/null @@ -1,2 +0,0 @@ -Instructions moved to -[docs/how_to_create_plugin.md](docs/how_to_create_plugin.md). diff --git a/tmux/.tmux/plugins/tpm/LICENSE.md b/tmux/.tmux/plugins/tpm/LICENSE.md deleted file mode 100644 index 1222865..0000000 --- a/tmux/.tmux/plugins/tpm/LICENSE.md +++ /dev/null @@ -1,20 +0,0 @@ -MIT license -Copyright (C) 2014 Bruno Sutic - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tmux/.tmux/plugins/tpm/README.md b/tmux/.tmux/plugins/tpm/README.md deleted file mode 100644 index 2371863..0000000 --- a/tmux/.tmux/plugins/tpm/README.md +++ /dev/null @@ -1,101 +0,0 @@ -# Tmux Plugin Manager - -[![Build Status](https://travis-ci.org/tmux-plugins/tpm.svg?branch=master)](https://travis-ci.org/tmux-plugins/tpm) - -Installs and loads `tmux` plugins. - -Tested and working on Linux, OSX, and Cygwin. - -See list of plugins [here](https://github.com/tmux-plugins/list). - -### Installation - -Requirements: `tmux` version 1.9 (or higher), `git`, `bash`. - -Clone TPM: - -```bash -git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm -``` - -Put this at the bottom of `~/.tmux.conf` (`$XDG_CONFIG_HOME/tmux/tmux.conf` -works too): - -```bash -# List of plugins -set -g @plugin 'tmux-plugins/tpm' -set -g @plugin 'tmux-plugins/tmux-sensible' - -# Other examples: -# set -g @plugin 'github_username/plugin_name' -# set -g @plugin 'github_username/plugin_name#branch' -# set -g @plugin 'git@github.com:user/plugin' -# set -g @plugin 'git@bitbucket.com:user/plugin' - -# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) -run '~/.tmux/plugins/tpm/tpm' -``` - -Reload TMUX environment so TPM is sourced: - -```bash -# type this in terminal if tmux is already running -tmux source ~/.tmux.conf -``` - -That's it! - -### Installing plugins - -1. Add new plugin to `~/.tmux.conf` with `set -g @plugin '...'` -2. Press `prefix` + I (capital i, as in **I**nstall) to fetch the plugin. - -You're good to go! The plugin was cloned to `~/.tmux/plugins/` dir and sourced. - -### Uninstalling plugins - -1. Remove (or comment out) plugin from the list. -2. Press `prefix` + alt + u (lowercase u as in **u**ninstall) to remove the plugin. - -All the plugins are installed to `~/.tmux/plugins/` so alternatively you can -find plugin directory there and remove it. - -### Key bindings - -`prefix` + I -- Installs new plugins from GitHub or any other git repository -- Refreshes TMUX environment - -`prefix` + U -- updates plugin(s) - -`prefix` + alt + u -- remove/uninstall plugins not on the plugin list - -### Docs - -- [Help, tpm not working](docs/tpm_not_working.md) - problem solutions - -More advanced features and instructions, regular users probably do not need -this: - -- [How to create a plugin](docs/how_to_create_plugin.md). It's easy. -- [Managing plugins via the command line](docs/managing_plugins_via_cmd_line.md) -- [Changing plugins install dir](docs/changing_plugins_install_dir.md) -- [Automatic TPM installation on a new machine](docs/automatic_tpm_installation.md) - -### Tests - -Tests for this project run on [Travis CI](https://travis-ci.org/tmux-plugins/tpm). - -When run locally, [vagrant](https://www.vagrantup.com/) is required. -Run tests with: - -```bash -# within project directory -./run_tests -``` - -### License - -[MIT](LICENSE.md) diff --git a/tmux/.tmux/plugins/tpm/bin/clean_plugins b/tmux/.tmux/plugins/tpm/bin/clean_plugins deleted file mode 100755 index 12f8730..0000000 --- a/tmux/.tmux/plugins/tpm/bin/clean_plugins +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -# Script intended for use via the command line. -# -# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system, -# but does not need to be started in order to run this script. - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -SCRIPTS_DIR="$CURRENT_DIR/../scripts" - -main() { - "$SCRIPTS_DIR/clean_plugins.sh" # has correct exit code -} -main diff --git a/tmux/.tmux/plugins/tpm/bin/install_plugins b/tmux/.tmux/plugins/tpm/bin/install_plugins deleted file mode 100755 index c66b15b..0000000 --- a/tmux/.tmux/plugins/tpm/bin/install_plugins +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -# Script intended for use via the command line. -# -# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system, -# but does not need to be started in order to run this script. - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -SCRIPTS_DIR="$CURRENT_DIR/../scripts" - -main() { - "$SCRIPTS_DIR/install_plugins.sh" # has correct exit code -} -main diff --git a/tmux/.tmux/plugins/tpm/bin/update_plugins b/tmux/.tmux/plugins/tpm/bin/update_plugins deleted file mode 100755 index 30a5646..0000000 --- a/tmux/.tmux/plugins/tpm/bin/update_plugins +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash - -# Script intended for use via the command line. -# -# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system, -# but does not need to be started in order to run this script. - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -SCRIPTS_DIR="$CURRENT_DIR/../scripts" -PROGRAM_NAME="$0" - -if [ $# -eq 0 ]; then - echo "usage:" - echo " $PROGRAM_NAME all update all plugins" - echo " $PROGRAM_NAME tmux-foo update plugin 'tmux-foo'" - echo " $PROGRAM_NAME tmux-bar tmux-baz update multiple plugins" - exit 1 -fi - -main() { - "$SCRIPTS_DIR/update_plugin.sh" --shell-echo "$*" # has correct exit code -} -main "$*" - diff --git a/tmux/.tmux/plugins/tpm/bindings/clean_plugins b/tmux/.tmux/plugins/tpm/bindings/clean_plugins deleted file mode 100755 index 9a0d5d7..0000000 --- a/tmux/.tmux/plugins/tpm/bindings/clean_plugins +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -# Tmux key-binding script. -# Scripts intended to be used via the command line are in `bin/` directory. - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -SCRIPTS_DIR="$CURRENT_DIR/../scripts" -HELPERS_DIR="$SCRIPTS_DIR/helpers" - -source "$HELPERS_DIR/tmux_echo_functions.sh" -source "$HELPERS_DIR/tmux_utils.sh" - -main() { - reload_tmux_environment - "$SCRIPTS_DIR/clean_plugins.sh" --tmux-echo >/dev/null 2>&1 - reload_tmux_environment - end_message -} -main diff --git a/tmux/.tmux/plugins/tpm/bindings/install_plugins b/tmux/.tmux/plugins/tpm/bindings/install_plugins deleted file mode 100755 index 3ade3c4..0000000 --- a/tmux/.tmux/plugins/tpm/bindings/install_plugins +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -# Tmux key-binding script. -# Scripts intended to be used via the command line are in `bin/` directory. - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -SCRIPTS_DIR="$CURRENT_DIR/../scripts" -HELPERS_DIR="$SCRIPTS_DIR/helpers" - -source "$HELPERS_DIR/tmux_echo_functions.sh" -source "$HELPERS_DIR/tmux_utils.sh" - -main() { - reload_tmux_environment - "$SCRIPTS_DIR/install_plugins.sh" --tmux-echo >/dev/null 2>&1 - reload_tmux_environment - end_message -} -main diff --git a/tmux/.tmux/plugins/tpm/bindings/update_plugins b/tmux/.tmux/plugins/tpm/bindings/update_plugins deleted file mode 100755 index 28cc281..0000000 --- a/tmux/.tmux/plugins/tpm/bindings/update_plugins +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env bash - -# Tmux key-binding script. -# Scripts intended to be used via the command line are in `bin/` directory. - -# This script: -# - shows a list of installed plugins -# - starts a prompt to enter the name of the plugin that will be updated - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -SCRIPTS_DIR="$CURRENT_DIR/../scripts" -HELPERS_DIR="$SCRIPTS_DIR/helpers" - -source "$HELPERS_DIR/plugin_functions.sh" -source "$HELPERS_DIR/tmux_echo_functions.sh" -source "$HELPERS_DIR/tmux_utils.sh" - -display_plugin_update_list() { - local plugins="$(tpm_plugins_list_helper)" - tmux_echo "Installed plugins:" - tmux_echo "" - - for plugin in $plugins; do - # displaying only installed plugins - if plugin_already_installed "$plugin"; then - local plugin_name="$(plugin_name_helper "$plugin")" - tmux_echo " $plugin_name" - fi - done - - tmux_echo "" - tmux_echo "Type plugin name to update it." - tmux_echo "" - tmux_echo "- \"all\" - updates all plugins" - tmux_echo "- ENTER - cancels" -} - -update_plugin_prompt() { - tmux command-prompt -p 'plugin update:' " \ - send-keys C-c; \ - run-shell '$SCRIPTS_DIR/update_plugin_prompt_handler.sh %1'" -} - -main() { - reload_tmux_environment - display_plugin_update_list - update_plugin_prompt -} -main diff --git a/tmux/.tmux/plugins/tpm/docs/automatic_tpm_installation.md b/tmux/.tmux/plugins/tpm/docs/automatic_tpm_installation.md deleted file mode 100644 index 630573f..0000000 --- a/tmux/.tmux/plugins/tpm/docs/automatic_tpm_installation.md +++ /dev/null @@ -1,12 +0,0 @@ -# Automatic tpm installation - -One of the first things we do on a new machine is cloning our dotfiles. Not everything comes with them though, so for example `tpm` most likely won't be installed. - -If you want to install `tpm` and plugins automatically when tmux is started, put the following snippet in `.tmux.conf` before the final `run '~/.tmux/plugins/tpm/tpm'`: - -``` -if "test ! -d ~/.tmux/plugins/tpm" \ - "run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'" -``` - -This useful tip was submitted by @acr4 and narfman0. diff --git a/tmux/.tmux/plugins/tpm/docs/changing_plugins_install_dir.md b/tmux/.tmux/plugins/tpm/docs/changing_plugins_install_dir.md deleted file mode 100644 index 27de96d..0000000 --- a/tmux/.tmux/plugins/tpm/docs/changing_plugins_install_dir.md +++ /dev/null @@ -1,16 +0,0 @@ -# Changing plugins install dir - -By default, TPM installs plugins in a subfolder named `plugins/` inside -`$XDG_CONFIG_HOME/tmux/` if a `tmux.conf` file was found at that location, or -inside `~/.tmux/` otherwise. - -You can change the install path by putting this in `.tmux.conf`: - - set-environment -g TMUX_PLUGIN_MANAGER_PATH '/some/other/path/' - -Tmux plugin manager initialization in `.tmux.conf` should also be updated: - - # initializes TMUX plugin manager in a new path - run /some/other/path/tpm/tpm - -Please make sure that the `run` line is at the very bottom of `.tmux.conf`. diff --git a/tmux/.tmux/plugins/tpm/docs/how_to_create_plugin.md b/tmux/.tmux/plugins/tpm/docs/how_to_create_plugin.md deleted file mode 100644 index f7d9c13..0000000 --- a/tmux/.tmux/plugins/tpm/docs/how_to_create_plugin.md +++ /dev/null @@ -1,108 +0,0 @@ -# How to create Tmux plugins - -Creating a new plugin is easy. - -For demonstration purposes we'll create a simple plugin that lists all -installed TPM plugins. Yes, a plugin that lists plugins :) We'll bind that to -`prefix + T`. - -The source code for this example plugin can be found -[here](https://github.com/tmux-plugins/tmux-example-plugin). - -### 1. create a new git project - -TPM depends on git for downloading and updating plugins. - -To create a new git project: - - $ mkdir tmux_my_plugin - $ cd tmux_my_plugin - $ git init - -### 2. create a `*.tmux` plugin run file - -When it sources a plugin, TPM executes all `*.tmux` files in your plugins' -directory. That's how plugins are run. - -Create a plugin run file in plugin directory: - - $ touch my_plugin.tmux - $ chmod u+x my_plugin.tmux - -You can have more than one `*.tmux` file, and all will get executed. However, usually -you'll need just one. - -### 3. create a plugin key binding - -We want the behavior of the plugin to trigger when a user hits `prefix + T`. - -Key `T` is chosen because: - - it's "kind of" a mnemonic for `TPM` - - the key is not used by Tmux natively. Tmux man page, KEY BINDINGS section - contains a list of all the bindings Tmux uses. There's plenty of unused keys - and we don't want to override any of Tmux default key bindings. - -Open the plugin run file in your favorite text editor: - - $ vim my_plugin.tmux - # or - $ subl my_plugin.tmux - -Put the following content in the file: - - #!/usr/bin/env bash - - CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - tmux bind-key T run-shell "$CURRENT_DIR/scripts/tmux_list_plugins.sh" - -As you can see, plugin run file is a simple bash script that sets up the binding. - -When pressed, `prefix + T` will execute another shell script: -`tmux_list_plugins.sh`. That script should be in `scripts/` directory - -relative to the plugin run file. - - -### 4. listing plugins - -Now that we have the binding, let's create a script that's invoked with -`prefix + T`. - - $ mkdir scripts - $ touch scripts/tmux_list_plugins.sh - $ chmod u+x scripts/tmux_list_plugins.sh - -And here's the script content: - - #!/usr/bin/env bash - - # fetching the directory where plugins are installed - plugin_path="$(tmux show-env -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)" - - # listing installed plugins - ls -1 "$plugin_path" - -### 5. try it out - -To see if this works, execute the plugin run file: - - $ ./my_plugin.tmux - -That should set up the key binding. Now hit `prefix + T` and see if it works. - -### 6. publish the plugin - -When everything is ready, push the plugin to an online git repository, -preferably GitHub. - -Other users can install your plugin by just adding plugin git URL to the -`@plugin` list in their `.tmux.conf`. - -If the plugin is on GitHub, your users will be able to use the shorthand of -`github_username/repository`. - -### Conclusion - -Hopefully, that was easy. As you can see, it's mostly shell scripting. - -You can use other scripting languages (ruby, python etc) but plain old shell -is preferred because of portability. diff --git a/tmux/.tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md b/tmux/.tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md deleted file mode 100644 index 7aefd7d..0000000 --- a/tmux/.tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md +++ /dev/null @@ -1,36 +0,0 @@ -# Managing plugins via the command line - -Aside from tmux key bindings, TPM provides shell interface for managing plugins -via scripts located in [bin/](../bin/) directory. - -Tmux does not need to be started in order to run scripts (but it's okay if it -is). If you [changed tpm install dir](../docs/changing_plugins_install_dir.md) -in `.tmux.conf` that should work fine too. - -Prerequisites: - -- tmux installed on the system (doh) -- `.tmux.conf` set up for TPM - -### Installing plugins - -As usual, plugins need to be specified in `.tmux.conf`. Run the following -command to install plugins: - - ~/.tmux/plugins/tpm/bin/install_plugins - -### Updating plugins - -To update all installed plugins: - - ~/.tmux/plugins/tpm/bin/update_plugins all - -or update a single plugin: - - ~/.tmux/plugins/tpm/bin/update_plugins tmux-sensible - -### Removing plugins - -To remove plugins not on the plugin list: - - ~/.tmux/plugins/tpm/bin/clean_plugins diff --git a/tmux/.tmux/plugins/tpm/docs/tpm_not_working.md b/tmux/.tmux/plugins/tpm/docs/tpm_not_working.md deleted file mode 100644 index 6680291..0000000 --- a/tmux/.tmux/plugins/tpm/docs/tpm_not_working.md +++ /dev/null @@ -1,102 +0,0 @@ -# Help, tpm not working! - -Here's the list of issues users had with `tpm`: - -
- -> Nothing works. `tpm` key bindings `prefix + I`, `prefix + U` not even - defined. - -Related [issue #22](https://github.com/tmux-plugins/tpm/issues/22) - -- Do you have required `tmux` version to run `tpm`?
- Check `tmux` version with `$ tmux -V` command and make sure it's higher or - equal to the required version for `tpm` as stated in the readme. - -- ZSH tmux plugin might be causing issues.
- If you have it installed, try disabling it and see if `tpm` works then. - -
- -> Help, I'm using custom config file with `tmux -f /path/to/my_tmux.conf` -to start Tmux and for some reason plugins aren't loaded!? - -Related [issue #57](https://github.com/tmux-plugins/tpm/issues/57) - -`tpm` has a known issue when using custom config file with `-f` option. -The solution is to use alternative plugin definition syntax. Here are the steps -to make it work: - -1. remove all `set -g @plugin` lines from tmux config file -2. in the config file define the plugins in the following way: - - # List of plugins - set -g @tpm_plugins ' \ - tmux-plugins/tpm \ - tmux-plugins/tmux-sensible \ - tmux-plugins/tmux-resurrect \ - ' - - # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) - run '~/.tmux/plugins/tpm/tpm' - -3. Reload TMUX environment so TPM is sourced: `$ tmux source /path/to/my_tmux.conf` - -The plugins should now be working. - -
- -> Weird sequence of characters show up when installing or updating plugins - -Related: [issue #25](https://github.com/tmux-plugins/tpm/issues/25) - -- This could be caused by [tmuxline.vim](https://github.com/edkolev/tmuxline.vim) - plugin. Uninstall it and see if things work. - -
- -> "failed to connect to server" error when sourcing .tmux.conf - -Related: [issue #48](https://github.com/tmux-plugins/tpm/issues/48) - -- Make sure `tmux source ~/.tmux.conf` command is ran from inside `tmux`. - -
- -> tpm not working: '~/.tmux/plugins/tpm/tpm' returned 2 (Windows / Cygwin) - -Related: [issue #81](https://github.com/tmux-plugins/tpm/issues/81) - -This issue is most likely caused by Windows line endings. For example, if you -have git's `core.autocrlf` option set to `true`, git will automatically convert -all the files to Windows line endings which might cause a problem. - -The solution is to convert all line ending to Unix newline characters. This -command handles that for all files under `.tmux/` dir (skips `.git` -subdirectories): - -```bash -find ~/.tmux -type d -name '.git*' -prune -o -type f -print0 | xargs -0 dos2unix -``` - -
- -> '~/.tmux/plugins/tpm/tpm' returned 127 (on macOS, w/ tmux installed using brew) - -Related: [issue #67](https://github.com/tmux-plugins/tpm/issues/67) - -This problem is because tmux's `run-shell` command runs a shell which doesn't read from user configs, thus tmux installed in a brew prefix (e.g. `/usr/local/bin`) will not be found. - -The solution is to find your brew prefix - -```sh -> echo "$(brew --prefix)/bin" -/opt/homebrew/bin -``` - -And prepend it to the `PATH` environment variable -``` -set-environment -g PATH "/opt/homebrew/bin:/bin:/usr/bin" -``` - -before any `run-shell`/`run` commands in `~/.tmux.conf`. diff --git a/tmux/.tmux/plugins/tpm/scripts/check_tmux_version.sh b/tmux/.tmux/plugins/tpm/scripts/check_tmux_version.sh deleted file mode 100755 index b0aedec..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/check_tmux_version.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env bash - -VERSION="$1" -UNSUPPORTED_MSG="$2" - -get_tmux_option() { - local option=$1 - local default_value=$2 - local option_value=$(tmux show-option -gqv "$option") - if [ -z "$option_value" ]; then - echo "$default_value" - else - echo "$option_value" - fi -} - -# Ensures a message is displayed for 5 seconds in tmux prompt. -# Does not override the 'display-time' tmux option. -display_message() { - local message="$1" - - # display_duration defaults to 5 seconds, if not passed as an argument - if [ "$#" -eq 2 ]; then - local display_duration="$2" - else - local display_duration="5000" - fi - - # saves user-set 'display-time' option - local saved_display_time=$(get_tmux_option "display-time" "750") - - # sets message display time to 5 seconds - tmux set-option -gq display-time "$display_duration" - - # displays message - tmux display-message "$message" - - # restores original 'display-time' value - tmux set-option -gq display-time "$saved_display_time" -} - -# this is used to get "clean" integer version number. Examples: -# `tmux 1.9` => `19` -# `1.9a` => `19` -get_digits_from_string() { - local string="$1" - local only_digits="$(echo "$string" | tr -dC '[:digit:]')" - echo "$only_digits" -} - -tmux_version_int() { - local tmux_version_string=$(tmux -V) - echo "$(get_digits_from_string "$tmux_version_string")" -} - -unsupported_version_message() { - if [ -n "$UNSUPPORTED_MSG" ]; then - echo "$UNSUPPORTED_MSG" - else - echo "Error, Tmux version unsupported! Please install Tmux version $VERSION or greater!" - fi -} - -exit_if_unsupported_version() { - local current_version="$1" - local supported_version="$2" - if [ "$current_version" -lt "$supported_version" ]; then - display_message "$(unsupported_version_message)" - exit 1 - fi -} - -main() { - local supported_version_int="$(get_digits_from_string "$VERSION")" - local current_version_int="$(tmux_version_int)" - exit_if_unsupported_version "$current_version_int" "$supported_version_int" -} -main diff --git a/tmux/.tmux/plugins/tpm/scripts/clean_plugins.sh b/tmux/.tmux/plugins/tpm/scripts/clean_plugins.sh deleted file mode 100755 index a025524..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/clean_plugins.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -HELPERS_DIR="$CURRENT_DIR/helpers" - -source "$HELPERS_DIR/plugin_functions.sh" -source "$HELPERS_DIR/utility.sh" - -if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions - source "$HELPERS_DIR/tmux_echo_functions.sh" -else # shell output functions - source "$HELPERS_DIR/shell_echo_functions.sh" -fi - -clean_plugins() { - local plugins plugin plugin_directory - plugins="$(tpm_plugins_list_helper)" - - for plugin_directory in "$(tpm_path)"/*; do - [ -d "${plugin_directory}" ] || continue - plugin="$(plugin_name_helper "${plugin_directory}")" - case "${plugins}" in - *"${plugin}"*) : ;; - *) - [ "${plugin}" = "tpm" ] && continue - echo_ok "Removing \"$plugin\"" - rm -rf "${plugin_directory}" >/dev/null 2>&1 - [ -d "${plugin_directory}" ] && - echo_err " \"$plugin\" clean fail" || - echo_ok " \"$plugin\" clean success" - ;; - esac - done -} - -main() { - ensure_tpm_path_exists - clean_plugins - exit_value_helper -} -main diff --git a/tmux/.tmux/plugins/tpm/scripts/helpers/plugin_functions.sh b/tmux/.tmux/plugins/tpm/scripts/helpers/plugin_functions.sh deleted file mode 100644 index f33d215..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/helpers/plugin_functions.sh +++ /dev/null @@ -1,104 +0,0 @@ -# using @tpm_plugins is now deprecated in favor of using @plugin syntax -tpm_plugins_variable_name="@tpm_plugins" - -# manually expanding tilde char or `$HOME` variable. -_manual_expansion() { - local path="$1" - local expanded_tilde="${path/#\~/$HOME}" - echo "${expanded_tilde/#\$HOME/$HOME}" -} - -_tpm_path() { - local string_path="$(tmux start-server\; show-environment -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)/" - _manual_expansion "$string_path" -} - -_CACHED_TPM_PATH="$(_tpm_path)" - -# Get the absolute path to the users configuration file of TMux. -# This includes a prioritized search on different locations. -# -_get_user_tmux_conf() { - # Define the different possible locations. - xdg_location="${XDG_CONFIG_HOME:-$HOME/.config}/tmux/tmux.conf" - default_location="$HOME/.tmux.conf" - - # Search for the correct configuration file by priority. - if [ -f "$xdg_location" ]; then - echo "$xdg_location" - - else - echo "$default_location" - fi -} - -_tmux_conf_contents() { - user_config=$(_get_user_tmux_conf) - cat /etc/tmux.conf "$user_config" 2>/dev/null - if [ "$1" == "full" ]; then # also output content from sourced files - local file - for file in $(_sourced_files); do - cat $(_manual_expansion "$file") 2>/dev/null - done - fi -} - -# return files sourced from tmux config files -_sourced_files() { - _tmux_conf_contents | - sed -E -n -e "s/^[[:space:]]*source(-file)?[[:space:]]+(-q+[[:space:]]+)?['\"]?([^'\"]+)['\"]?/\3/p" -} - -# Want to be able to abort in certain cases -trap "exit 1" TERM -export TOP_PID=$$ - -_fatal_error_abort() { - echo >&2 "Aborting." - kill -s TERM $TOP_PID -} - -# PUBLIC FUNCTIONS BELOW - -tpm_path() { - if [ "$_CACHED_TPM_PATH" == "/" ]; then - echo >&2 "FATAL: Tmux Plugin Manager not configured in tmux.conf" - _fatal_error_abort - fi - echo "$_CACHED_TPM_PATH" -} - -tpm_plugins_list_helper() { - # lists plugins from @tpm_plugins option - echo "$(tmux start-server\; show-option -gqv "$tpm_plugins_variable_name")" - - # read set -g @plugin "tmux-plugins/tmux-example-plugin" entries - _tmux_conf_contents "full" | - awk '/^[ \t]*set(-option)? +-g +@plugin/ { gsub(/'\''/,""); gsub(/'\"'/,""); print $4 }' -} - -# Allowed plugin name formats: -# 1. "git://github.com/user/plugin_name.git" -# 2. "user/plugin_name" -plugin_name_helper() { - local plugin="$1" - # get only the part after the last slash, e.g. "plugin_name.git" - local plugin_basename="$(basename "$plugin")" - # remove ".git" extension (if it exists) to get only "plugin_name" - local plugin_name="${plugin_basename%.git}" - echo "$plugin_name" -} - -plugin_path_helper() { - local plugin="$1" - local plugin_name="$(plugin_name_helper "$plugin")" - echo "$(tpm_path)${plugin_name}/" -} - -plugin_already_installed() { - local plugin="$1" - local plugin_path="$(plugin_path_helper "$plugin")" - [ -d "$plugin_path" ] && - cd "$plugin_path" && - git remote >/dev/null 2>&1 -} diff --git a/tmux/.tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh b/tmux/.tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh deleted file mode 100644 index ecaa37e..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh +++ /dev/null @@ -1,7 +0,0 @@ -echo_ok() { - echo "$*" -} - -echo_err() { - fail_helper "$*" -} diff --git a/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh b/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh deleted file mode 100644 index 7a6ef0a..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh +++ /dev/null @@ -1,28 +0,0 @@ -_has_emacs_mode_keys() { - $(tmux show -gw mode-keys | grep -q emacs) -} - -tmux_echo() { - local message="$1" - tmux run-shell "echo '$message'" -} - -echo_ok() { - tmux_echo "$*" -} - -echo_err() { - tmux_echo "$*" -} - -end_message() { - if _has_emacs_mode_keys; then - local continue_key="ESCAPE" - else - local continue_key="ENTER" - fi - tmux_echo "" - tmux_echo "TMUX environment reloaded." - tmux_echo "" - tmux_echo "Done, press $continue_key to continue." -} diff --git a/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_utils.sh b/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_utils.sh deleted file mode 100644 index 238952d..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/helpers/tmux_utils.sh +++ /dev/null @@ -1,6 +0,0 @@ -HELPERS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -source "$HELPERS_DIR/plugin_functions.sh" - -reload_tmux_environment() { - tmux source-file $(_get_user_tmux_conf) >/dev/null 2>&1 -} diff --git a/tmux/.tmux/plugins/tpm/scripts/helpers/utility.sh b/tmux/.tmux/plugins/tpm/scripts/helpers/utility.sh deleted file mode 100644 index de6eb35..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/helpers/utility.sh +++ /dev/null @@ -1,17 +0,0 @@ -ensure_tpm_path_exists() { - mkdir -p "$(tpm_path)" -} - -fail_helper() { - local message="$1" - echo "$message" >&2 - FAIL="true" -} - -exit_value_helper() { - if [ "$FAIL" == "true" ]; then - exit 1 - else - exit 0 - fi -} diff --git a/tmux/.tmux/plugins/tpm/scripts/install_plugins.sh b/tmux/.tmux/plugins/tpm/scripts/install_plugins.sh deleted file mode 100755 index e2450ac..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/install_plugins.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -HELPERS_DIR="$CURRENT_DIR/helpers" - -source "$HELPERS_DIR/plugin_functions.sh" -source "$HELPERS_DIR/utility.sh" - -if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions - source "$HELPERS_DIR/tmux_echo_functions.sh" -else # shell output functions - source "$HELPERS_DIR/shell_echo_functions.sh" -fi - -clone() { - local plugin="$1" - local branch="$2" - if [ -n "$branch" ]; then - cd "$(tpm_path)" && - GIT_TERMINAL_PROMPT=0 git clone -b "$branch" --single-branch --recursive "$plugin" >/dev/null 2>&1 - else - cd "$(tpm_path)" && - GIT_TERMINAL_PROMPT=0 git clone --single-branch --recursive "$plugin" >/dev/null 2>&1 - fi -} - -# tries cloning: -# 1. plugin name directly - works if it's a valid git url -# 2. expands the plugin name to point to a GitHub repo and tries cloning again -clone_plugin() { - local plugin="$1" - local branch="$2" - clone "$plugin" "$branch" || - clone "https://git::@github.com/$plugin" "$branch" -} - -# clone plugin and produce output -install_plugin() { - local plugin="$1" - local branch="$2" - local plugin_name="$(plugin_name_helper "$plugin")" - - if plugin_already_installed "$plugin"; then - echo_ok "Already installed \"$plugin_name\"" - else - echo_ok "Installing \"$plugin_name\"" - clone_plugin "$plugin" "$branch" && - echo_ok " \"$plugin_name\" download success" || - echo_err " \"$plugin_name\" download fail" - fi -} - -install_plugins() { - local plugins="$(tpm_plugins_list_helper)" - for plugin in $plugins; do - IFS='#' read -ra plugin <<< "$plugin" - install_plugin "${plugin[0]}" "${plugin[1]}" - done -} - -verify_tpm_path_permissions() { - local path="$(tpm_path)" - # check the write permission flag for all users to ensure - # that we have proper access - [ -w "$path" ] || - echo_err "$path is not writable!" -} - -main() { - ensure_tpm_path_exists - verify_tpm_path_permissions - install_plugins - exit_value_helper -} -main diff --git a/tmux/.tmux/plugins/tpm/scripts/source_plugins.sh b/tmux/.tmux/plugins/tpm/scripts/source_plugins.sh deleted file mode 100755 index 6381d54..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/source_plugins.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -HELPERS_DIR="$CURRENT_DIR/helpers" - -source "$HELPERS_DIR/plugin_functions.sh" - -plugin_dir_exists() { - [ -d "$1" ] -} - -# Runs all *.tmux files from the plugin directory. -# Files are ran as executables. -# No errors if the plugin dir does not exist. -silently_source_all_tmux_files() { - local plugin_path="$1" - local plugin_tmux_files="$plugin_path*.tmux" - if plugin_dir_exists "$plugin_path"; then - for tmux_file in $plugin_tmux_files; do - # if the glob didn't find any files this will be the - # unexpanded glob which obviously doesn't exist - [ -f "$tmux_file" ] || continue - # runs *.tmux file as an executable - $tmux_file >/dev/null 2>&1 - done - fi -} - -source_plugins() { - local plugin plugin_path - local plugins="$(tpm_plugins_list_helper)" - for plugin in $plugins; do - IFS='#' read -ra plugin <<< "$plugin" - plugin_path="$(plugin_path_helper "${plugin[0]}")" - silently_source_all_tmux_files "$plugin_path" - done -} - -main() { - source_plugins -} -main diff --git a/tmux/.tmux/plugins/tpm/scripts/update_plugin.sh b/tmux/.tmux/plugins/tpm/scripts/update_plugin.sh deleted file mode 100755 index e533664..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/update_plugin.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env bash - -# this script handles core logic of updating plugins - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -HELPERS_DIR="$CURRENT_DIR/helpers" - -source "$HELPERS_DIR/plugin_functions.sh" -source "$HELPERS_DIR/utility.sh" - -if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions - source "$HELPERS_DIR/tmux_echo_functions.sh" -else # shell output functions - source "$HELPERS_DIR/shell_echo_functions.sh" -fi - -# from now on ignore first script argument -shift - -pull_changes() { - local plugin="$1" - local plugin_path="$(plugin_path_helper "$plugin")" - cd "$plugin_path" && - GIT_TERMINAL_PROMPT=0 git pull && - GIT_TERMINAL_PROMPT=0 git submodule update --init --recursive -} - -update() { - local plugin="$1" output - output=$(pull_changes "$plugin" 2>&1) - if (( $? == 0 )); then - echo_ok " \"$plugin\" update success" - echo_ok "$(echo "$output" | sed -e 's/^/ | /')" - else - echo_err " \"$plugin\" update fail" - echo_err "$(echo "$output" | sed -e 's/^/ | /')" - fi -} - -update_all() { - echo_ok "Updating all plugins!" - echo_ok "" - local plugins="$(tpm_plugins_list_helper)" - for plugin in $plugins; do - IFS='#' read -ra plugin <<< "$plugin" - local plugin_name="$(plugin_name_helper "${plugin[0]}")" - # updating only installed plugins - if plugin_already_installed "$plugin_name"; then - update "$plugin_name" & - fi - done - wait -} - -update_plugins() { - local plugins="$*" - for plugin in $plugins; do - IFS='#' read -ra plugin <<< "$plugin" - local plugin_name="$(plugin_name_helper "${plugin[0]}")" - if plugin_already_installed "$plugin_name"; then - update "$plugin_name" & - else - echo_err "$plugin_name not installed!" & - fi - done - wait -} - -main() { - ensure_tpm_path_exists - if [ "$1" == "all" ]; then - update_all - else - update_plugins "$*" - fi - exit_value_helper -} -main "$*" diff --git a/tmux/.tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh b/tmux/.tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh deleted file mode 100755 index 5e1f7d9..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -HELPERS_DIR="$CURRENT_DIR/helpers" - -if [ $# -eq 0 ]; then - exit 0 -fi - -source "$HELPERS_DIR/tmux_echo_functions.sh" -source "$HELPERS_DIR/tmux_utils.sh" - -main() { - "$CURRENT_DIR/update_plugin.sh" --tmux-echo "$*" - reload_tmux_environment - end_message -} -main "$*" diff --git a/tmux/.tmux/plugins/tpm/scripts/variables.sh b/tmux/.tmux/plugins/tpm/scripts/variables.sh deleted file mode 100644 index 5601a86..0000000 --- a/tmux/.tmux/plugins/tpm/scripts/variables.sh +++ /dev/null @@ -1,13 +0,0 @@ -install_key_option="@tpm-install" -default_install_key="I" - -update_key_option="@tpm-update" -default_update_key="U" - -clean_key_option="@tpm-clean" -default_clean_key="M-u" - -SUPPORTED_TMUX_VERSION="1.9" - -DEFAULT_TPM_ENV_VAR_NAME="TMUX_PLUGIN_MANAGER_PATH" -DEFAULT_TPM_PATH="$HOME/.tmux/plugins/" diff --git a/tmux/.tmux/plugins/tpm/tests/expect_failed_plugin_download b/tmux/.tmux/plugins/tpm/tests/expect_failed_plugin_download deleted file mode 100755 index b970477..0000000 --- a/tmux/.tmux/plugins/tpm/tests/expect_failed_plugin_download +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env expect - -# disables script output -log_user 0 - -spawn tmux - -# Waiting for tmux to attach. If this is not done, next command, `send` will -# not work properly. -sleep 1 - -# this is tmux prefix + I -send "I" - -# cloning might take a while -set timeout 20 - -expect_after { - timeout { exit 1 } -} - -expect { - "Installing \"non-existing-plugin\"" -} - -expect { - "\"non-existing-plugin\" download fail" -} - -expect { - "Done, press ENTER to continue" { - exit 0 - } -} - -exit 1 diff --git a/tmux/.tmux/plugins/tpm/tests/expect_successful_clean_plugins b/tmux/.tmux/plugins/tpm/tests/expect_successful_clean_plugins deleted file mode 100755 index 987c49d..0000000 --- a/tmux/.tmux/plugins/tpm/tests/expect_successful_clean_plugins +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env expect - -# disables script output -log_user 0 - -spawn tmux - -# Waiting for tmux to attach. If this is not done, next command, `send` will -# not work properly. -sleep 1 - -# this is tmux prefix + alt + u -send "u" - -set timeout 5 - -expect_after { - timeout { exit 1 } -} - -expect { - "Removing \"tmux-example-plugin\"" -} - -expect { - "\"tmux-example-plugin\" clean success" -} - -expect { - "Done, press ENTER to continue." { - exit 0 - } -} - -exit 1 diff --git a/tmux/.tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download b/tmux/.tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download deleted file mode 100755 index cc87a26..0000000 --- a/tmux/.tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env expect - -# disables script output -log_user 0 - -spawn tmux - -# Waiting for tmux to attach. If this is not done, next command, `send` will -# not work properly. -sleep 1 - -# this is tmux prefix + I -send "I" - -# cloning might take a while -set timeout 15 - -expect_after { - timeout { exit 1 } -} - -expect { - "Installing \"tmux-example-plugin\"" -} - -expect { - "\"tmux-example-plugin\" download success" -} - -expect { - "Installing \"tmux-copycat\"" -} - -expect { - "\"tmux-copycat\" download success" -} - -expect { - "Done, press ENTER to continue." { - exit 0 - } -} - -exit 1 diff --git a/tmux/.tmux/plugins/tpm/tests/expect_successful_plugin_download b/tmux/.tmux/plugins/tpm/tests/expect_successful_plugin_download deleted file mode 100755 index 388f05d..0000000 --- a/tmux/.tmux/plugins/tpm/tests/expect_successful_plugin_download +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env expect - -# disables script output -log_user 0 - -spawn tmux - -# Waiting for tmux to attach. If this is not done, next command, `send` will -# not work properly. -sleep 1 - -# this is tmux prefix + I -send "I" - -# cloning might take a while -set timeout 15 - -expect_after { - timeout { exit 1 } -} - -expect { - "Installing \"tmux-example-plugin\"" -} - -expect { - "\"tmux-example-plugin\" download success" -} - -expect { - "Done, press ENTER to continue" { - send " " - } -} - -sleep 1 -# this is tmux prefix + I -send "I" - -expect { - "Already installed \"tmux-example-plugin\"" -} - -expect { - "Done, press ENTER to continue" { - exit 0 - } -} - -exit 1 diff --git a/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_a_single_plugin b/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_a_single_plugin deleted file mode 100755 index bcd64fe..0000000 --- a/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_a_single_plugin +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env expect - -# disables script output -log_user 0 - -spawn tmux - -# Waiting for tmux to attach. If this is not done, next command, `send` will -# not work properly. -sleep 1 - -# this is tmux prefix + U -send "U" - -set timeout 15 - -expect_after { - timeout { exit 1 } -} - -expect { - "Installed plugins" -} - -expect { - "tmux-example-plugin" -} - -expect { - "\"all\" - updates all plugins" -} - -expect { - "ENTER - cancels" -} - -# wait for tmux to display prompt before sending characters -sleep 1 -send "tmux-example-plugin\r" - -expect { - "Updating \"tmux-example-plugin\"" -} - -expect { - "\"tmux-example-plugin\" update success" -} - -expect { - "Done, press ENTER to continue." { - exit 0 - } -} - -exit 1 diff --git a/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_all_plugins b/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_all_plugins deleted file mode 100755 index 4f3a4a3..0000000 --- a/tmux/.tmux/plugins/tpm/tests/expect_successful_update_of_all_plugins +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env expect - -# disables script output -log_user 0 - -spawn tmux - -# Waiting for tmux to attach. If this is not done, next command, `send` will -# not work properly. -sleep 1 - -# this is tmux prefix + U -send "U" - -set timeout 5 - -expect_after { - timeout { exit 1 } -} - -expect { - "Installed plugins" -} - -expect { - "tmux-example-plugin" -} - -expect { - "\"all\" - updates all plugins" -} - -expect { - "ENTER - cancels" -} - -# wait for tmux to display prompt before sending characters -sleep 1 -send "all\r" - -expect { - "Updating all plugins!" -} - -expect { - "Updating \"tmux-example-plugin\"" -} - -expect { - "\"tmux-example-plugin\" update success" -} - -expect { - "Done, press ENTER to continue." { - exit 0 - } -} - -exit 1 diff --git a/tmux/.tmux/plugins/tpm/tests/helpers/tpm.sh b/tmux/.tmux/plugins/tpm/tests/helpers/tpm.sh deleted file mode 100644 index 1594afb..0000000 --- a/tmux/.tmux/plugins/tpm/tests/helpers/tpm.sh +++ /dev/null @@ -1,13 +0,0 @@ -check_dir_exists_helper() { - [ -d "$1" ] -} - -# runs the scripts and asserts it has the correct output and exit code -script_run_helper() { - local script="$1" - local expected_output="$2" - local expected_exit_code="${3:-0}" - $script 2>&1 | - grep "$expected_output" >/dev/null 2>&1 && # grep -q flag quits the script early - [ "${PIPESTATUS[0]}" -eq "$expected_exit_code" ] -} diff --git a/tmux/.tmux/plugins/tpm/tests/test_plugin_clean.sh b/tmux/.tmux/plugins/tpm/tests/test_plugin_clean.sh deleted file mode 100755 index d36c468..0000000 --- a/tmux/.tmux/plugins/tpm/tests/test_plugin_clean.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -TPM_DIR="$PWD" -PLUGINS_DIR="$HOME/.tmux/plugins" - -source "$CURRENT_DIR/helpers/helpers.sh" -source "$CURRENT_DIR/helpers/tpm.sh" - -manually_install_the_plugin() { - rm -rf "$PLUGINS_DIR" - mkdir -p "$PLUGINS_DIR" - cd "$PLUGINS_DIR" - git clone --quiet https://github.com/tmux-plugins/tmux-example-plugin -} - -# TMUX KEY-BINDING TESTS - -test_plugin_uninstallation_via_tmux_key_binding() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - run-shell "$TPM_DIR/tpm" - HERE - - manually_install_the_plugin - - "$CURRENT_DIR/expect_successful_clean_plugins" || - fail_helper "[key-binding] clean fails" - - teardown_helper -} - -# SCRIPT TESTS - -test_plugin_uninstallation_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - run-shell "$TPM_DIR/tpm" - HERE - - manually_install_the_plugin - - script_run_helper "$TPM_DIR/bin/clean_plugins" '"tmux-example-plugin" clean success' || - fail_helper "[script] plugin cleaning fails" - - teardown_helper -} - -test_unsuccessful_plugin_uninstallation_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - run-shell "$TPM_DIR/tpm" - HERE - - manually_install_the_plugin - chmod 000 "$PLUGINS_DIR/tmux-example-plugin" # disable directory deletion - - local expected_exit_code=1 - script_run_helper "$TPM_DIR/bin/clean_plugins" '"tmux-example-plugin" clean fail' "$expected_exit_code" || - fail_helper "[script] unsuccessful plugin cleaning doesn't fail" - - chmod 755 "$PLUGINS_DIR/tmux-example-plugin" # enable directory deletion - - teardown_helper -} - -run_tests diff --git a/tmux/.tmux/plugins/tpm/tests/test_plugin_installation.sh b/tmux/.tmux/plugins/tpm/tests/test_plugin_installation.sh deleted file mode 100755 index 94fb674..0000000 --- a/tmux/.tmux/plugins/tpm/tests/test_plugin_installation.sh +++ /dev/null @@ -1,284 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -PLUGINS_DIR="$HOME/.tmux/plugins" -TPM_DIR="$PWD" - -CUSTOM_PLUGINS_DIR="$HOME/foo/plugins" -ADDITIONAL_CONFIG_FILE_1="$HOME/.tmux/additional_config_file_1" -ADDITIONAL_CONFIG_FILE_2="$HOME/.tmux/additional_config_file_2" - -source "$CURRENT_DIR/helpers/helpers.sh" -source "$CURRENT_DIR/helpers/tpm.sh" - -# TMUX KEY-BINDING TESTS - -test_plugin_installation_via_tmux_key_binding() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @plugin "tmux-plugins/tmux-example-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - "$CURRENT_DIR/expect_successful_plugin_download" || - fail_helper "[key-binding] plugin installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[key-binding] plugin download fails" - - teardown_helper -} - -test_plugin_installation_via_tmux_key_binding_set_option() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set-option -g @plugin "tmux-plugins/tmux-example-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - "$CURRENT_DIR/expect_successful_plugin_download" || - fail_helper "[key-binding][set-option] plugin installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[key-binding][set-option] plugin download fails" - - teardown_helper -} - -test_plugin_installation_custom_dir_via_tmux_key_binding() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR' - - set -g @plugin "tmux-plugins/tmux-example-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - "$CURRENT_DIR/expect_successful_plugin_download" || - fail_helper "[key-binding][custom dir] plugin installation fails" - - check_dir_exists_helper "$CUSTOM_PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[key-binding][custom dir] plugin download fails" - - teardown_helper - rm -rf "$CUSTOM_PLUGINS_DIR" -} - -test_non_existing_plugin_installation_via_tmux_key_binding() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @plugin "tmux-plugins/non-existing-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - "$CURRENT_DIR/expect_failed_plugin_download" || - fail_helper "[key-binding] non existing plugin installation doesn't fail" - - teardown_helper -} - -test_multiple_plugins_installation_via_tmux_key_binding() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @plugin "tmux-plugins/tmux-example-plugin" - \ \ set -g @plugin 'tmux-plugins/tmux-copycat' - run-shell "$TPM_DIR/tpm" - HERE - - "$CURRENT_DIR/expect_successful_multiple_plugins_download" || - fail_helper "[key-binding] multiple plugins installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[key-binding] plugin download fails (tmux-example-plugin)" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || - fail_helper "[key-binding] plugin download fails (tmux-copycat)" - - teardown_helper -} - -test_plugins_installation_from_sourced_file_via_tmux_key_binding() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - source '$ADDITIONAL_CONFIG_FILE_1' - set -g @plugin 'tmux-plugins/tmux-example-plugin' - run-shell "$TPM_DIR/tpm" - HERE - - mkdir ~/.tmux - echo "set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1" - - "$CURRENT_DIR/expect_successful_multiple_plugins_download" || - fail_helper "[key-binding][sourced file] plugins installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[key-binding][sourced file] plugin download fails (tmux-example-plugin)" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || - fail_helper "[key-binding][sourced file] plugin download fails (tmux-copycat)" - - teardown_helper -} - -test_plugins_installation_from_multiple_sourced_files_via_tmux_key_binding() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - \ \ source '$ADDITIONAL_CONFIG_FILE_1' - source-file '$ADDITIONAL_CONFIG_FILE_2' - run-shell "$TPM_DIR/tpm" - HERE - - mkdir ~/.tmux - echo "set -g @plugin 'tmux-plugins/tmux-example-plugin'" > "$ADDITIONAL_CONFIG_FILE_1" - echo " set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_2" - - "$CURRENT_DIR/expect_successful_multiple_plugins_download" || - fail_helper "[key-binding][multiple sourced files] plugins installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[key-binding][multiple sourced files] plugin download fails (tmux-example-plugin)" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || - fail_helper "[key-binding][multiple sourced files] plugin download fails (tmux-copycat)" - - teardown_helper -} - -# SCRIPT TESTS - -test_plugin_installation_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @plugin "tmux-plugins/tmux-example-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || - fail_helper "[script] plugin installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[script] plugin download fails" - - script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' || - fail_helper "[script] plugin already installed message fail" - - teardown_helper -} - -test_plugin_installation_custom_dir_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR' - - set -g @plugin "tmux-plugins/tmux-example-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || - fail_helper "[script][custom dir] plugin installation fails" - - check_dir_exists_helper "$CUSTOM_PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[script][custom dir] plugin download fails" - - script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' || - fail_helper "[script][custom dir] plugin already installed message fail" - - teardown_helper - rm -rf "$CUSTOM_PLUGINS_DIR" -} - -test_non_existing_plugin_installation_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @plugin "tmux-plugins/non-existing-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - local expected_exit_code=1 - script_run_helper "$TPM_DIR/bin/install_plugins" '"non-existing-plugin" download fail' "$expected_exit_code" || - fail_helper "[script] non existing plugin installation doesn't fail" - - teardown_helper -} - -test_multiple_plugins_installation_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @plugin "tmux-plugins/tmux-example-plugin" - \ \ set -g @plugin 'tmux-plugins/tmux-copycat' - run-shell "$TPM_DIR/tpm" - HERE - - script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || - fail_helper "[script] multiple plugins installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[script] plugin download fails (tmux-example-plugin)" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || - fail_helper "[script] plugin download fails (tmux-copycat)" - - script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' || - fail_helper "[script] multiple plugins already installed message fail" - - teardown_helper -} - -test_plugins_installation_from_sourced_file_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - source '$ADDITIONAL_CONFIG_FILE_1' - set -g @plugin 'tmux-plugins/tmux-example-plugin' - run-shell "$TPM_DIR/tpm" - HERE - - mkdir ~/.tmux - echo "set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1" - - script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-copycat" download success' || - fail_helper "[script][sourced file] plugins installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[script][sourced file] plugin download fails (tmux-example-plugin)" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || - fail_helper "[script][sourced file] plugin download fails (tmux-copycat)" - - script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' || - fail_helper "[script][sourced file] plugins already installed message fail" - - teardown_helper -} - -test_plugins_installation_from_multiple_sourced_files_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - \ \ source '$ADDITIONAL_CONFIG_FILE_1' - source-file '$ADDITIONAL_CONFIG_FILE_2' - set -g @plugin 'tmux-plugins/tmux-example-plugin' - run-shell "$TPM_DIR/tpm" - HERE - - mkdir ~/.tmux - echo " set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1" - echo "set -g @plugin 'tmux-plugins/tmux-sensible'" > "$ADDITIONAL_CONFIG_FILE_2" - - script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-sensible" download success' || - fail_helper "[script][multiple sourced files] plugins installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[script][multiple sourced files] plugin download fails (tmux-example-plugin)" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || - fail_helper "[script][multiple sourced files] plugin download fails (tmux-copycat)" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-sensible/" || - fail_helper "[script][multiple sourced files] plugin download fails (tmux-sensible)" - - script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-sensible"' || - fail_helper "[script][multiple sourced files] plugins already installed message fail" - - teardown_helper -} - -run_tests diff --git a/tmux/.tmux/plugins/tpm/tests/test_plugin_installation_legacy.sh b/tmux/.tmux/plugins/tpm/tests/test_plugin_installation_legacy.sh deleted file mode 100755 index b1d0cf6..0000000 --- a/tmux/.tmux/plugins/tpm/tests/test_plugin_installation_legacy.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -PLUGINS_DIR="$HOME/.tmux/plugins" -TPM_DIR="$PWD" - -source "$CURRENT_DIR/helpers/helpers.sh" -source "$CURRENT_DIR/helpers/tpm.sh" - -# TMUX KEY-BINDING TESTS - -test_plugin_installation_via_tmux_key_binding() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @tpm_plugins "tmux-plugins/tmux-example-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - # opens tmux and test it with `expect` - $CURRENT_DIR/expect_successful_plugin_download || - fail_helper "[key-binding] plugin installation fails" - - # check plugin dir exists after download - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[key-binding] plugin download fails" - - teardown_helper -} - -test_legacy_and_new_syntax_for_plugin_installation_work_via_tmux_key_binding() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @tpm_plugins " \ - tmux-plugins/tmux-example-plugin \ - " - set -g @plugin 'tmux-plugins/tmux-copycat' - run-shell "$TPM_DIR/tpm" - HERE - - # opens tmux and test it with `expect` - "$CURRENT_DIR"/expect_successful_multiple_plugins_download || - fail_helper "[key-binding] multiple plugins installation fails" - - # check plugin dir exists after download - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[key-binding] plugin download fails (tmux-example-plugin)" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || - fail_helper "[key-binding] plugin download fails (tmux-copycat)" - - teardown_helper -} - -# SCRIPT TESTS - -test_plugin_installation_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @tpm_plugins "tmux-plugins/tmux-example-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || - fail_helper "[script] plugin installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[script] plugin download fails" - - script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' || - fail_helper "[script] plugin already installed message fail" - - teardown_helper -} - -test_legacy_and_new_syntax_for_plugin_installation_work_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @tpm_plugins " \ - tmux-plugins/tmux-example-plugin \ - " - set -g @plugin 'tmux-plugins/tmux-copycat' - run-shell "$TPM_DIR/tpm" - HERE - - script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || - fail_helper "[script] multiple plugin installation fails" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || - fail_helper "[script] plugin download fails (tmux-example-plugin)" - - check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || - fail_helper "[script] plugin download fails (tmux-copycat)" - - script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' || - fail_helper "[script] multiple plugins already installed message fail" - - teardown_helper -} - -run_tests diff --git a/tmux/.tmux/plugins/tpm/tests/test_plugin_sourcing.sh b/tmux/.tmux/plugins/tpm/tests/test_plugin_sourcing.sh deleted file mode 100755 index c06f1fe..0000000 --- a/tmux/.tmux/plugins/tpm/tests/test_plugin_sourcing.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -TPM_DIR="$PWD" -PLUGINS_DIR="$HOME/.tmux/plugins" - -CUSTOM_PLUGINS_DIR="$HOME/foo/plugins" - -source "$CURRENT_DIR/helpers/helpers.sh" -source "$CURRENT_DIR/helpers/tpm.sh" - -check_binding_defined() { - local binding="$1" - tmux list-keys | grep -q "$binding" -} - -create_test_plugin_helper() { - local plugin_path="$PLUGINS_DIR/tmux_test_plugin/" - rm -rf "$plugin_path" - mkdir -p "$plugin_path" - - while read line; do - echo "$line" >> "$plugin_path/test_plugin.tmux" - done - chmod +x "$plugin_path/test_plugin.tmux" -} - -check_tpm_path() { - local correct_tpm_path="$1" - local tpm_path="$(tmux start-server\; show-environment -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)" - [ "$correct_tpm_path" == "$tpm_path" ] -} - -test_plugin_sourcing() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @plugin "doesnt_matter/tmux_test_plugin" - run-shell "$TPM_DIR/tpm" - HERE - - # manually creates a local tmux plugin - create_test_plugin_helper <<- HERE - tmux bind-key R run-shell foo_command - HERE - - tmux new-session -d # tmux starts detached - check_binding_defined "R run-shell foo_command" || - fail_helper "Plugin sourcing fails" - - teardown_helper -} - -test_default_tpm_path() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - run-shell "$TPM_DIR/tpm" - HERE - - check_tpm_path "${PLUGINS_DIR}/" || - fail_helper "Default TPM path not correct" - - teardown_helper -} - -test_custom_tpm_path() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR' - run-shell "$TPM_DIR/tpm" - HERE - - check_tpm_path "$CUSTOM_PLUGINS_DIR" || - fail_helper "Custom TPM path not correct" - - teardown_helper -} - -run_tests diff --git a/tmux/.tmux/plugins/tpm/tests/test_plugin_update.sh b/tmux/.tmux/plugins/tpm/tests/test_plugin_update.sh deleted file mode 100755 index 4924d16..0000000 --- a/tmux/.tmux/plugins/tpm/tests/test_plugin_update.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -TPM_DIR="$PWD" -PLUGINS_DIR="$HOME/.tmux/plugins" - -source "$CURRENT_DIR/helpers/helpers.sh" -source "$CURRENT_DIR/helpers/tpm.sh" - -manually_install_the_plugin() { - mkdir -p "$PLUGINS_DIR" - cd "$PLUGINS_DIR" - git clone --quiet https://github.com/tmux-plugins/tmux-example-plugin -} - -# TMUX KEY-BINDING TESTS - -test_plugin_update_via_tmux_key_binding() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @plugin "tmux-plugins/tmux-example-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - manually_install_the_plugin - - "$CURRENT_DIR/expect_successful_update_of_all_plugins" || - fail_helper "[key-binding] 'update all plugins' fails" - - "$CURRENT_DIR/expect_successful_update_of_a_single_plugin" || - fail_helper "[key-binding] 'update single plugin' fails" - - teardown_helper -} - -# SCRIPT TESTS - -test_plugin_update_via_script() { - set_tmux_conf_helper <<- HERE - set -g mode-keys vi - set -g @plugin "tmux-plugins/tmux-example-plugin" - run-shell "$TPM_DIR/tpm" - HERE - - manually_install_the_plugin - - local expected_exit_code=1 - script_run_helper "$TPM_DIR/bin/update_plugins" 'usage' "$expected_exit_code" || - fail_helper "[script] running update plugins without args should fail" - - script_run_helper "$TPM_DIR/bin/update_plugins tmux-example-plugin" '"tmux-example-plugin" update success' || - fail_helper "[script] plugin update fails" - - script_run_helper "$TPM_DIR/bin/update_plugins all" '"tmux-example-plugin" update success' || - fail_helper "[script] update all plugins fails" - - teardown_helper -} - -run_tests diff --git a/tmux/.tmux/plugins/tpm/tpm b/tmux/.tmux/plugins/tpm/tpm deleted file mode 100755 index 7ad4b99..0000000 --- a/tmux/.tmux/plugins/tpm/tpm +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -BINDINGS_DIR="$CURRENT_DIR/bindings" -SCRIPTS_DIR="$CURRENT_DIR/scripts" - -source "$SCRIPTS_DIR/variables.sh" - -get_tmux_option() { - local option="$1" - local default_value="$2" - local option_value="$(tmux show-option -gqv "$option")" - if [ -z "$option_value" ]; then - echo "$default_value" - else - echo "$option_value" - fi -} - -tpm_path_set() { - tmux show-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" >/dev/null 2>&1 -} - -# Check if configuration file exists at an XDG-compatible location, if so use -# that directory for TMUX_PLUGIN_MANAGER_PATH. Otherwise use $DEFAULT_TPM_PATH. -set_default_tpm_path() { - local xdg_tmux_path="${XDG_CONFIG_HOME:-$HOME/.config}/tmux" - local tpm_path="$DEFAULT_TPM_PATH" - - if [ -f "$xdg_tmux_path/tmux.conf" ]; then - tpm_path="$xdg_tmux_path/plugins/" - fi - - tmux set-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" "$tpm_path" -} - -# Ensures TMUX_PLUGIN_MANAGER_PATH global env variable is set. -# -# Put this in `.tmux.conf` to override the default: -# `set-environment -g TMUX_PLUGIN_MANAGER_PATH "/some/other/path/"` -set_tpm_path() { - if ! tpm_path_set; then - set_default_tpm_path - fi -} - -# 1. Fetches plugin names from `@plugin` variables -# 2. Creates full plugin path -# 3. Sources all *.tmux files from each of the plugin directories -# - no errors raised if directory does not exist -# Files are sourced as tmux config files, not as shell scripts! -source_plugins() { - "$SCRIPTS_DIR/source_plugins.sh" >/dev/null 2>&1 -} - -# prefix + I - downloads TPM plugins and reloads TMUX environment -# prefix + U - updates a plugin (or all of them) and reloads TMUX environment -# prefix + alt + u - remove unused TPM plugins and reloads TMUX environment -set_tpm_key_bindings() { - local install_key="$(get_tmux_option "$install_key_option" "$default_install_key")" - tmux bind-key "$install_key" run-shell "$BINDINGS_DIR/install_plugins" - - local update_key="$(get_tmux_option "$update_key_option" "$default_update_key")" - tmux bind-key "$update_key" run-shell "$BINDINGS_DIR/update_plugins" - - local clean_key="$(get_tmux_option "$clean_key_option" "$default_clean_key")" - tmux bind-key "$clean_key" run-shell "$BINDINGS_DIR/clean_plugins" -} - -supported_tmux_version_ok() { - "$SCRIPTS_DIR/check_tmux_version.sh" "$SUPPORTED_TMUX_VERSION" -} - -main() { - if supported_tmux_version_ok; then - set_tpm_path - set_tpm_key_bindings - source_plugins - fi -} -main diff --git a/zed/.config/zed/keymap.json b/zed/.config/zed/keymap.json deleted file mode 100644 index 816b7c6..0000000 --- a/zed/.config/zed/keymap.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "context": "Workspace", - "bindings": { - "shift shift": "file_finder::Toggle" - } - }, - { - "context": "Editor", - "bindings": { - // "j k": ["workspace::SendKeystrokes", "escape"] - } - } -] diff --git a/zed/.config/zed/settings.json.j2 b/zed/.config/zed/settings.json.j2 deleted file mode 100644 index 6a11650..0000000 --- a/zed/.config/zed/settings.json.j2 +++ /dev/null @@ -1,280 +0,0 @@ -{ - // -- -- - "telemetry": { - "metrics": false, - "diagnostics": false - }, - "features": { - "copilot": false - }, - "show_copilot_suggestions": false, - // -- -- - - // -- -- - "vim_mode": true, - "base_keymap": "JetBrains", - // -- -- - - // -- -- - "ui_font_size": 14, - "tab_size": 4, - "buffer_font_size": 14, - "ui_font_family": "Agave Nerd Font Mono", - "buffer_font_family": "Agave Nerd Font Mono", - // -- -- - - // -- -- - "theme": { - "mode": "system", - "light": "Gruvbox Light Hard", - "dark": "Gruvbox Dark Soft" - }, - // -- -- - - // -- -- - "relative_line_numbers": true, - "current_line_highlight": "all", - "show_whitespaces": "selection", - // -- -- - - // -- -- - "format_on_save": "off", - "ensure_final_newline_on_save": true, - // -- -- - - // -- -- - "centered_layout": { - "left_padding": 0.1, - "right_padding": 0.1 - }, - "tab_bar": { - "show": false - }, - "toolbar": { - "breadcrumbs": false, - "quick_actions": false, - "selections_menu": false, - "agent_review": false, - "code_actions": false - }, - "project_panel": { - "dock": "right" - }, - // -- -- - - // -- -- - "lsp": { - "jdtls": { - "initialization_options": { - "settings": { - "java": { - "home": "~/.local/share/mise/installs/java/21", - "jdt": { - "ls": { - "lombokSupport": { - "enabled": true - } - } - } - } - } - } - } - }, - "languages": { - "Java": { - "formatter": "prettier", - "format_on_save": "off", - "language_servers": ["jdtls"] - }, - "TypeScript": { - "language_servers": ["typescript-language-server"], - "formatter": "prettier" - }, - "TSX": { - "language_servers": ["typescript-language-server"], - "formatter": "prettier" - } - }, - // -- -- - - // -- -- - "auto_install_extensions": { - "html": true, - "dockerfile": true, - "docker-compose": true, - "ansible": true, - "deno": true, - "java": true, - "kotlin": true, - "toml": true, - - // https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking - "mcp-server-sequential-thinking": true - }, - // -- -- - -{% if features.work_mode %} - // -- -- - "language_models": { - "bedrock": { - "authentication_method": "named_profile", - "profile": "cline", - "region": "us-west-2" - } - }, - "context_servers": { - // wasabi's MCP server - "wasabi": { - "command": { - "path": "wasabi", - "args": ["--mcp-server"], - "env": null - }, - "settings": {} - }, - // the internal general MCP server - "Amazon Internal MCP": { - "command": { - "path": "amzn_ai-mcp", - "args": [], - "env": null - }, - "settings": {} - }, - // offical AWS Docs MCP server built by Labs - "AWS Documentation MCP Server": { - "command": { - "path": "mise", - "args": [ - "exec", - "uv@latest", - "--", - "uvx", - "awslabs.aws-documentation-mcp-server@latest" - ], - "env": { - "FASTMCP_LOG_LEVEL": "ERROR" - } - } - } - }, - "agent": { - "dock": "left", - "profiles": { - "starter-profile": { - "name": "Starter Profile", - "tools": { - "copy_path": false, - "create_directory": false, - "delete_path": false, - "diagnostics": false, - "edit_file": true, - "fetch": false, - "find_path": false, - "grep": false, - "list_directory": true, - "move_path": false, - "terminal": false, - "read_file": true, - "open": true, - "now": true, - "thinking": true - }, - "context_servers": { - "wasabi": { - "tools": { - "WorkspaceSearch": true, - "ReadInternalWebsites": true, - "Delegate": true - } - }, - "mcp-server-sequential-thinking": { - "tools": { - "sequentialthinking": true - } - }, - "Amazon Internal MCP": { - "tools": { - "write_internal_website": true, - "tod_download_logs": true, - "taskei_get_task": true, - "slack-send-message": true, - "sim_update_issue": true, - "sim_search_issues": true, - "sim_get_issue": true, - "sim_get_folders": true, - "sim_create_issue": true, - "sim_add_tag": true, - "sim_add_comment": true, - "search_symphony": true, - "search_sable": true, - "search_products": true, - "search_quip": true, - "search_people": true, - "search_katal_components": true, - "search_internal_websites": true, - "search_internal_issues": true, - "search_datapath": true, - "search_internal_code": true, - "read_quip": true, - "read_orr": true, - "read_kingpin_goal": true, - "read_internal_website": true, - "read_coe": true, - "prompt_farm_search_prompts": true, - "prompt_farm_prompt_content": true, - "policy_engine_get_user_dashboard": true, - "policy_engine_get_risk": true, - "plantuml": true, - "pippin_update_project": true, - "pippin_update_artifact": true, - "pippin_list_projects": true, - "pippin_list_artifacts": true, - "pippin_get_project": true, - "pippin_get_artifact": true, - "pippin_create_project": true, - "pippin_create_artifact": true, - "mox_console": true, - "lookup_user_coding_activity_summary": true, - "lookup_team_code_resource": true, - "list_katal_components": true, - "get_recent_messages_quip": true, - "get_katal_component": true, - "edit_quip": true, - "create_quip": true - } - }, - "AWS Documentation MCP Server": { - "tools": { - "recommend": true, - "search_documentation": true, - "read_documentation": true - } - } - } - } - }, - "default_profile": "starter-profile", - "inline_assistant_model": { - "provider": "amazon-bedrock", - "model": "amazon.nova-lite-v1:0" - }, - "commit_message_model": { - "provider": "amazon-bedrock", - "model": "amazon.nova-lite-v1:0" - }, - "thread_summary_model": { - "provider": "amazon-bedrock", - "model": "amazon.nova-lite-v1:0" - }, - "always_allow_tool_actions": true, - "default_model": { - "provider": "amazon-bedrock", - "model": "anthropic.claude-3-7-sonnet-20250219-v1:0" - }, - "version": "2" - } - // -- -- -{% endif %} -} diff --git a/zsh/.config/zsh/.zshrc b/zsh/.config/zsh/.zshrc deleted file mode 100644 index a2376b7..0000000 --- a/zsh/.config/zsh/.zshrc +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/zsh - -#-- -- -export XDG_CONFIG_HOME="$HOME/.config" -export ZDOTDIR=${XDG_CONFIG_HOME:-$HOME/.config}/zsh -export PATH=$PATH:$HOME/scripts:$HOME/.local/bin - -source log.sh ".zshrc" -greet.sh -#-- -- - -#-- -- -. "$ZDOTDIR/setup/misc.zsh" -#-- -- - -#-- -- -. "$ZDOTDIR/setup/aliases.zsh" -#-- -- - -#-- -- -. "$ZDOTDIR/setup/history.zsh" -#-- -- - -#-- -- -. "$ZDOTDIR/setup/git.zsh" -#-- -- - -#-- -- -. "$ZDOTDIR/setup/device.zsh" -#-- -- - -#-- -- -. "$ZDOTDIR/setup/tools.zsh" -#-- -- - -#-- -- -. "$ZDOTDIR/setup/gpg.zsh" -#-- -- diff --git a/zsh/.config/zsh/greetings/00_art/another_penguin b/zsh/.config/zsh/greetings/00_art/another_penguin deleted file mode 100644 index 00f43e3..0000000 --- a/zsh/.config/zsh/greetings/00_art/another_penguin +++ /dev/null @@ -1,15 +0,0 @@ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣖⣫⠵⠔⢿⣿⣿⣿⡄⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⢠⠾⠯⣾⠃⠀⢀⣸⡿⠛⠻⢿⣆⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠆⣀⡀⠹⣶⣀⣨⡏⢀⣀⡀⠈⣿⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⢸⠀⠛⠃⢰⠋⠉⢻⠀⠘⠛⠃⠀⣿⡄⠀⠀ -⠀⠀⠀⠀⠀⢀⣀⣘⡀⠀⠀⠀⠀⠒⠉⠀⠀⠀⢀⣼⡟⠀⠀⠀ -⣠⣶⣶⣾⣿⣿⣿⣿⣯⡶⡀⠀⠀⠀⠀⢀⣀⢴⡻⣗⡄⠀⠀⠀ -⠹⡿⠿⠛⢿⣿⣿⣿⣟⣥⡈⠉⠁⠀⠀⠀⠀⢀⣵⢊⠨⠢⠀⠀ -⠀⠀⠀⠀⠘⠻⠿⠿⠿⠁⠘⠋⠒⠂⠀⠐⠊⠉⠈⠎⣦⡀⠱⡀ -⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠘⠟⢧⣱ -⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠀⢸⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⢸⣇⠀⡀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⢺⠆⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠻⣆⠳⢄⣀⠠⠀⠀⠐⡄⡇⠀⣠⡯⠟⠀ -⠀⠀⠀⠀⠀⠀⠀⣤⣎⣟⡖⣺⠗⠉⠉⠉⠉⠉⡖⡶⣟⢢⣐⠶ -⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠁⠒⠒⠒⠒⠒⠂⠉⠉⠉⠁⠀⠀ \ No newline at end of file diff --git a/zsh/.config/zsh/greetings/00_art/butterfly b/zsh/.config/zsh/greetings/00_art/butterfly deleted file mode 100644 index cea5d72..0000000 --- a/zsh/.config/zsh/greetings/00_art/butterfly +++ /dev/null @@ -1,9 +0,0 @@ -⠀⠀⠀⠀⊹ -⢶⢻⣑⣒⢤⡀⠀⢄⠀⠀⡠⠀⢀⡤⣆⣊⡿⡷ -⠀⠹⠹⣚⣣⠻⣦⡀⠀⠀⢀⣴⠟⣸⢓⢎⠏⠀ -⠀⠀⢡⣱⣖⣢⡾⢿⣾⣷⡿⢷⣖⣒⣎⡎⠀⠀ -⠀⠀⠀⣠⠓⢬⠅⡺⢻⡟⢗⠨⡥⠚⣄⠀⠀⠀ -⠀⠀⠀⣿⡆⠘⠆⢇⢸⡇⠸⠰⠃⢰⣿⠀⠀⠀ -⠀⠀⠀⠐⡻⣮⣬⠞⠈⠁⠳⣤⣴⢿⠂⠀⠀⠀ -⠀⠀⠀⡜⠀⠁⠉⠀⠀⠀⠀⠈⠈⠀⢣⠀⠀⠀⊹ -⊹ \ No newline at end of file diff --git a/zsh/.config/zsh/greetings/00_art/eebjy b/zsh/.config/zsh/greetings/00_art/eebjy deleted file mode 100644 index 6e6bbcf..0000000 --- a/zsh/.config/zsh/greetings/00_art/eebjy +++ /dev/null @@ -1,9 +0,0 @@ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀ -⠀⠀⠀⠀⢀⡴⣆⠀⠀⠀⠀⠀⣠⡀ ᶻ 𝗓 𐰁 .ᐟ ⣼⣿⡗⠀⠀⠀⠀ -⠀⠀⠀⣠⠟⠀⠘⠷⠶⠶⠶⠾⠉⢳⡄⠀⠀⠀⠀⠀⣧⣿⠀⠀⠀⠀⠀ -⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣤⣤⣤⣤⣤⣿⢿⣄⠀⠀⠀⠀ -⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣧⠀⠀⠀⠀⠀⠀⠙⣷⡴⠶⣦ -⠀⠀⢱⡀⠀⠉⠉⠀⠀⠀⠀⠛⠃⠀⢠⡟⠀⠀⠀⢀⣀⣠⣤⠿⠞⠛⠋ -⣠⠾⠋⠙⣶⣤⣤⣤⣤⣤⣀⣠⣤⣾⣿⠴⠶⠚⠋⠉⠁⠀⠀⠀⠀⠀⠀ -⠛⠒⠛⠉⠉⠀⠀⠀⣴⠟⢃⡴⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠛⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ diff --git a/zsh/.config/zsh/greetings/00_art/heart b/zsh/.config/zsh/greetings/00_art/heart deleted file mode 100644 index 3394514..0000000 --- a/zsh/.config/zsh/greetings/00_art/heart +++ /dev/null @@ -1,8 +0,0 @@ -.  +⠀ ⠀ -⠀˚⠀ ⣴⠟⠉⠉⠛⢦⡀⢀⣴⠛⠉⠈⠙⠻⣄ -⠀⠀⣼⠃⠀⠀⠀⠀⠀⠙⠋⠀⠀⠀⠀⠀⠀⠹⣦ -⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿ -⠀⠀⠿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡆ -⠀⠀⠀⢻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡼⠃ -⠀⠀⠀⠀⠀⠻⢦⣄⠀⠀⠀⠀⠀⣠⡴⠛ -⠀⠀⠀⠀⠀⠀⠀⠉⠛⠶⣄⠶⠋ ⠀⠀⠀+. * \ No newline at end of file diff --git a/zsh/.config/zsh/greetings/00_art/penguin b/zsh/.config/zsh/greetings/00_art/penguin deleted file mode 100644 index 6389d00..0000000 --- a/zsh/.config/zsh/greetings/00_art/penguin +++ /dev/null @@ -1,16 +0,0 @@ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡤⠴⠒⠒⠒⠶⢤⣄⡀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠈⠙⢦⡀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⡼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢳⡀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⢸⠁⠀⠀⣠⠖⠛⠛⠲⢤⠀⠀⠀⣰⠚⠛⢷⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⣿⠀⠀⣸⠃⠀⠀⢀⣀⠈⢧⣠⣤⣯⢠⣤⠘⣆⠀⠀⠀ -⠀⠀⠀⠀⠀⣿⠀⠀⡇⠀⠀⠀⠻⠟⠠⣏⣀⣀⣨⡇⠉⢀⣿⠀⠀⠀ -⠀⠀⠀⠀⢀⡟⠀⠀⠹⡄⠀⠀⠀⠀⠀⠉⠑⠚⠉⠀⣠⡞⢿⠀⠀⠀ -⠀⠀⠀⢀⡼⠁⠀⠀⠀⠙⠳⢤⡄⠀⠀⠀⠀⠀⠀⠀⠁⠙⢦⠳⣄⠀ -⠀⠀⢀⡾⠁⠀⠀⠀⠀⠀⠤⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠃⠙⡆ -⠀⠀⣼⠁⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⢠⡏⠀⠀⡇ -⠀⠀⣏⠀⠀⠀⠀⠲⣄⡀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⢸⠀⢀⡼⠁ -⢀⡴⢿⠀⠀⠀⠀⠀⢸⠟⢦⡀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠘⠗⣿⠁⠀ -⠸⣦⡘⣦⠀⠀⠀⠀⣸⣄⠀⡉⠓⠚⠀⠀⠀⠀⠀⠀⠀⠀⡴⢹⣦⡀ -⠀⠀⠉⠛⠳⢤⣴⠾⠁⠈⠟⠉⣇⠀⠀⠀⠀⠀⠀⠀⣠⠞⠁⣠⠞⠁ -⠀⠀⠀⠀⠀⠀⠙⢧⣀⠀⠀⣠⠏⠀⠀⢀⣀⣠⠴⠛⠓⠚⠋⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠋⠉⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀ diff --git a/zsh/.config/zsh/greetings/00_art/puppy b/zsh/.config/zsh/greetings/00_art/puppy deleted file mode 100644 index c4d7fbb..0000000 --- a/zsh/.config/zsh/greetings/00_art/puppy +++ /dev/null @@ -1,10 +0,0 @@ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣄⢀⡀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⡿⠀⠀⠀⠀ -⠀⠀⠀⠀⣀⣀⣤⠖⠛⠉⠉⠉⠉⠉⠙⠒⠦⣿⣏⣀⠀⠀⠀⠀ -⠀⠀⣠⠞⠁⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢵⡄⠀⠀ -⠀⢰⣯⠀⠀⢀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀⣿⠀⠀ -⠀⠈⣇⢀⢠⠇⠀⣶⡶⠄⠀⠀⠀⢠⣶⡶⠀⠀⣸⣀⣼⠟⠀⠀ -⠀⠀⠙⠛⠾⡆⠀⠙⠛⠃⠀⠀⠀⠀⠙⠋⠀⠀⣹⠟⠁⠀⠀⠀ -⢀⡴⠚⠉⠛⢿⠀⠀⠀⠀⢿⣿⠆⠀⠀⠀⠀⢀⣿⠋⠉⠉⢳⡄ -⢾⡀⡄⠀⣄⡼⠻⢧⠤⣤⠤⠤⣤⣠⣦⣾⠶⠞⢿⣤⡄⣠⣀⡷ -⠈⠙⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠀ \ No newline at end of file diff --git a/zsh/.config/zsh/greetings/00_art/totoro b/zsh/.config/zsh/greetings/00_art/totoro deleted file mode 100644 index 9a1ba92..0000000 --- a/zsh/.config/zsh/greetings/00_art/totoro +++ /dev/null @@ -1,13 +0,0 @@ -⠀⠀⠀⠀⣶⣄⠀⠀⠀⠀⠀⠀⢀⣶⡆⠀⠀⠀ -⠀⠀⠀⢸⣿⣿⡆⠀⠀⠀⠀⢀⣾⣿⡇⠀⠀⠀ -⠀⠀⠀⠘⣿⣿⣿⠀⠀⠀⠀⢸⣿⣿⡇⠀⠀⠀ -⠀⠀⠀⠀⢿⣿⣿⣤⣤⣤⣤⣼⣿⡿⠃⠀⠀⠀ -⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀ -⠀⠀⢠⣿⡃⣦⢹⣿⣟⣙⣿⣿⠰⡀⣿⣇⠀⠀ -⠠⠬⣿⣿⣷⣶⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⡭⠤ -⠀⣼⣿⣿⣿⣿⠿⠛⠛⠛⠛⠻⢿⣿⣿⣿⣿⡀ -⢰⣿⣿⣿⠋⠀⠀⠀⢀⣀⠀⠀⠀⠉⢿⣿⣿⣧ -⢸⣿⣿⠃⠜⠛⠂⠀⠋⠉⠃⠐⠛⠻⠄⢿⣿⣿ -⢸⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿ -⠘⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⡏ -⠀⠈⠻⠿⣤⣀⡀⠀⠀⠀⠀⠀⣀⣠⠾⠟⠋⠀ \ No newline at end of file diff --git a/zsh/.config/zsh/greetings/01_prompts/aww_motivation_lost b/zsh/.config/zsh/greetings/01_prompts/aww_motivation_lost deleted file mode 100644 index 59aeae6..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/aww_motivation_lost +++ /dev/null @@ -1 +0,0 @@ -404: motivation not found~ try again (︶︹︶) diff --git a/zsh/.config/zsh/greetings/01_prompts/bashful b/zsh/.config/zsh/greetings/01_prompts/bashful deleted file mode 100644 index 5a9bf7e..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/bashful +++ /dev/null @@ -1 +0,0 @@ -lil shell says hai~ (,,>﹏<,,) diff --git a/zsh/.config/zsh/greetings/01_prompts/bby b/zsh/.config/zsh/greetings/01_prompts/bby deleted file mode 100644 index b0378bb..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/bby +++ /dev/null @@ -1 +0,0 @@ -welcome back bby, whatcha codin~? ◝(˶˃ ᵕ ˂˶) ◜ ♡ diff --git a/zsh/.config/zsh/greetings/01_prompts/bot b/zsh/.config/zsh/greetings/01_prompts/bot deleted file mode 100644 index 9f1bfe5..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/bot +++ /dev/null @@ -1 +0,0 @@ -beep boop i’m ur smol shell bot~ (≧ ◡ ≦) diff --git a/zsh/.config/zsh/greetings/01_prompts/break_stuff b/zsh/.config/zsh/greetings/01_prompts/break_stuff deleted file mode 100644 index 38fba6b..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/break_stuff +++ /dev/null @@ -1 +0,0 @@ -──⋆⋅☆⋅⋆── what are u gonna break today? ──⋆⋅☆⋅⋆── diff --git a/zsh/.config/zsh/greetings/01_prompts/compiling_feelings b/zsh/.config/zsh/greetings/01_prompts/compiling_feelings deleted file mode 100644 index beeb049..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/compiling_feelings +++ /dev/null @@ -1 +0,0 @@ -current mood: compiling feelings... (っ´ω `)ノ(╥ ω ╥ ) diff --git a/zsh/.config/zsh/greetings/01_prompts/crashin b/zsh/.config/zsh/greetings/01_prompts/crashin deleted file mode 100644 index 78ce202..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/crashin +++ /dev/null @@ -1 +0,0 @@ -lowkey bashin’ and highkey crashin~ (∩^o^)⊃━☆゚.*・。゚ diff --git a/zsh/.config/zsh/greetings/01_prompts/desu b/zsh/.config/zsh/greetings/01_prompts/desu deleted file mode 100644 index 210ca3c..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/desu +++ /dev/null @@ -1 +0,0 @@ -terminal-chan desu~ ( ^・ω・^ ) diff --git a/zsh/.config/zsh/greetings/01_prompts/hacker_friend b/zsh/.config/zsh/greetings/01_prompts/hacker_friend deleted file mode 100644 index 8daadee..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/hacker_friend +++ /dev/null @@ -1 +0,0 @@ -hewwwooo hacker friend~ ( ˶ˆᗜ ˆ˵ )͜♡ ready 2 typey type? diff --git a/zsh/.config/zsh/greetings/01_prompts/hai b/zsh/.config/zsh/greetings/01_prompts/hai deleted file mode 100644 index 487c866..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/hai +++ /dev/null @@ -1 +0,0 @@ -ahh!! it’s you again~ kyaaa~!! (,,> ᴗ <,,) diff --git a/zsh/.config/zsh/greetings/01_prompts/input_output_love b/zsh/.config/zsh/greetings/01_prompts/input_output_love deleted file mode 100644 index 9d3964d..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/input_output_love +++ /dev/null @@ -1 +0,0 @@ -input accepted, output is love (´。• ω •。) ♡` diff --git a/zsh/.config/zsh/greetings/01_prompts/love_letter b/zsh/.config/zsh/greetings/01_prompts/love_letter deleted file mode 100644 index b2556fe..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/love_letter +++ /dev/null @@ -1 +0,0 @@ -shell prompt... or love letter? (⸝⸝๑﹏๑⸝⸝) diff --git a/zsh/.config/zsh/greetings/01_prompts/online b/zsh/.config/zsh/greetings/01_prompts/online deleted file mode 100644 index 0201fde..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/online +++ /dev/null @@ -1 +0,0 @@ -system online... awaiting ur magic~ ૮ ˶ᵔ ᵕ ᵔ˶ ა diff --git a/zsh/.config/zsh/greetings/01_prompts/production b/zsh/.config/zsh/greetings/01_prompts/production deleted file mode 100644 index 4deab12..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/production +++ /dev/null @@ -1 +0,0 @@ -plz don't break the server... or do, whatever ( ¬ ⤙ ¬ ) diff --git a/zsh/.config/zsh/greetings/01_prompts/sammich b/zsh/.config/zsh/greetings/01_prompts/sammich deleted file mode 100644 index f22df0a..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/sammich +++ /dev/null @@ -1 +0,0 @@ -sudo make me a sandwich? (・∀・) 🥪 ✧₊˚ʚ diff --git a/zsh/.config/zsh/greetings/01_prompts/shell_yeah b/zsh/.config/zsh/greetings/01_prompts/shell_yeah deleted file mode 100644 index 7826b64..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/shell_yeah +++ /dev/null @@ -1 +0,0 @@ -shell yeah!! let’s do some scripts~ (ノ≧ ڡ ≦) diff --git a/zsh/.config/zsh/greetings/01_prompts/time_to_hack b/zsh/.config/zsh/greetings/01_prompts/time_to_hack deleted file mode 100644 index afc0cb6..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/time_to_hack +++ /dev/null @@ -1 +0,0 @@ -*clickity clack* time 2 hack~ (。•̀ᴗ-)✧ diff --git a/zsh/.config/zsh/greetings/01_prompts/typing b/zsh/.config/zsh/greetings/01_prompts/typing deleted file mode 100644 index 6d4c0d0..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/typing +++ /dev/null @@ -1 +0,0 @@ -typing together forever~~ (づ。◕‿‿◕。)づ diff --git a/zsh/.config/zsh/greetings/01_prompts/yeehaw b/zsh/.config/zsh/greetings/01_prompts/yeehaw deleted file mode 100644 index 53eb098..0000000 --- a/zsh/.config/zsh/greetings/01_prompts/yeehaw +++ /dev/null @@ -1 +0,0 @@ -rootin' and tootin' with sudo~ yeehaw~ (⌒ ▽ ⌒) ☆ diff --git a/zsh/.config/zsh/linux/init.zsh b/zsh/.config/zsh/linux/init.zsh deleted file mode 100755 index 49db77e..0000000 --- a/zsh/.config/zsh/linux/init.zsh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/zsh - -#-- -- -export PINENTRY_USER_DATA="PINENTRY_USE_QT" -#-- -- - diff --git a/zsh/.config/zsh/osx/armin.zsh b/zsh/.config/zsh/osx/armin.zsh deleted file mode 100755 index cc54a2e..0000000 --- a/zsh/.config/zsh/osx/armin.zsh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/zsh - - diff --git a/zsh/.config/zsh/osx/bcd074b37296.zsh b/zsh/.config/zsh/osx/bcd074b37296.zsh deleted file mode 120000 index f99643e..0000000 --- a/zsh/.config/zsh/osx/bcd074b37296.zsh +++ /dev/null @@ -1 +0,0 @@ -work.zsh \ No newline at end of file diff --git a/zsh/.config/zsh/osx/init.zsh b/zsh/.config/zsh/osx/init.zsh deleted file mode 100755 index 0cb288d..0000000 --- a/zsh/.config/zsh/osx/init.zsh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/zsh - -#-- -- -# HOMEBREW_PREFIX, MANPATH, INFOPATH, etc. -eval "$(/opt/homebrew/bin/brew shellenv)" - -# use gnu coreutils -export PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH" -#-- -- - -#-- -- -export PINENTRY_USER_DATA="PINENTRY_USE_MAC" -#-- -- diff --git a/zsh/.config/zsh/osx/work.zsh b/zsh/.config/zsh/osx/work.zsh deleted file mode 100755 index 6fff676..0000000 --- a/zsh/.config/zsh/osx/work.zsh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/zsh - -#-- -- -export AWS_REGION=us-west-2 - -# finch -export DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock - -# bb ... -export PATH="$PATH:$HOME/.toolbox/bin" -alias bb='brazil-build' -alias bba='brazil-build apollo-pkg' -alias bre='brazil-runtime-exec' -alias brc='brazil-recursive-cmd' -alias bws='brazil ws' -alias bwsuse='bws use --gitMode -p' -alias bwscreate='bws create -n' -alias brc=brazil-recursive-cmd -alias bbr='brc brazil-build' -alias bball='brc --allPackages' -alias bbb='brc --allPackages brazil-build' -alias bbra='bbr apollo-pkg' -alias bbcr='bb && cr' -alias brazil-recursive-cmd='brazil-recursive-cmd-parallel' - -# run java repl with class path of package! :D -alias jshell='jshell --class-path "`brazil-path build.classpath`:`brazil-path run.classpath`"' -#-- -- - diff --git a/zsh/.config/zsh/plugins/zsh-autosuggestions b/zsh/.config/zsh/plugins/zsh-autosuggestions deleted file mode 160000 index 0e810e5..0000000 --- a/zsh/.config/zsh/plugins/zsh-autosuggestions +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0e810e5afa27acbd074398eefbe28d13005dbc15 diff --git a/zsh/.config/zsh/plugins/zsh-syntax-highlighting b/zsh/.config/zsh/plugins/zsh-syntax-highlighting deleted file mode 160000 index 5eb677b..0000000 --- a/zsh/.config/zsh/plugins/zsh-syntax-highlighting +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5eb677bb0fa9a3e60f0eff031dc13926e093df92 diff --git a/zsh/.config/zsh/setup/aliases.zsh b/zsh/.config/zsh/setup/aliases.zsh deleted file mode 100755 index 73b09b3..0000000 --- a/zsh/.config/zsh/setup/aliases.zsh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -#-- -- -alias gc="git checkout" -alias gcb="git checkout -b" -alias gcm="git commit -m" -alias ga="git add" -alias gaa="git add ." -alias gpl="git pull" -alias gps="git push" -alias gr="git rebase" -alias gss="git status" -alias gsa="git stash" -alias gsr="git stash pop" -alias gl="git log --oneline" -#-- -- - -#-- -- -alias fuckuctl="journalctl --user -fu" -alias fuckctl="journalctl -fu" - -alias ..="cd .." -#-- -- - -#-- -- -alias vim="nvim" -#-- -- diff --git a/zsh/.config/zsh/setup/device.zsh b/zsh/.config/zsh/setup/device.zsh deleted file mode 100755 index d3f8c4b..0000000 --- a/zsh/.config/zsh/setup/device.zsh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/zsh - -source log.sh "setup/device.zsh" - -#-- -- -platform="$(platform.sh)" -platform_setup="$ZDOTDIR/$platform" -init_platform="$platform_setup/init.zsh" -if [ ! -d "$platform_setup" ]; then - log ERROR "misconfigured platform $platform: $platform_setup is not a directory" - exit 1 -fi -if [ -e "$init_platform" ]; then - log DEBUG "executing $init_platform" - . "$init_platform" -else - log DEBUG "no platform-specific init for $platform at $init_platform" -fi -#-- -- - -#-- -- -machine="$(system_name.sh)" -machine_init="$platform_setup/$machine.zsh" -if [ -e "$machine_init" ]; then - log DEBUG "executing $platform.$machine $machine_init" - . "$machine_init" -else - log WARN "no machine-specific init for $platform.$machine at $machine_init" -fi -#-- -- diff --git a/zsh/.config/zsh/setup/gpg.zsh.j2 b/zsh/.config/zsh/setup/gpg.zsh.j2 deleted file mode 100755 index 4ffb38f..0000000 --- a/zsh/.config/zsh/setup/gpg.zsh.j2 +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/zsh - - -# -- -- -KEY_ID="{{ pgp.id }}" -gpg -k "$KEY_ID" >/dev/null 2>&1 || gpg --import "$HOME/.pubkey" - -cp $HOME/scripts/pinentry.sh /tmp/pinentry - - -export PINENTRY_USER_DATA="${PINENTRY_USER_DATA:-PINENTRY_USE_TTY}" -if [ "$SSH_CLIENT" ]; then - export PINENTRY_USER_DATA=PINENTRY_USE_CURSES - exit 0 -fi - -# yubikey! -unset SSH_AGENT_PID -export GPG_TTY=$(tty) -export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) -gpgconf --launch gpg-agent -gpg-connect-agent updatestartuptty /bye > /dev/null -# -- -- diff --git a/zsh/.config/zsh/setup/history.zsh b/zsh/.config/zsh/setup/history.zsh deleted file mode 100755 index ea8ab9c..0000000 --- a/zsh/.config/zsh/setup/history.zsh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/zsh - -HISTSIZE=2000000 -SAVEHIST=$HISTSIZE -: ${HISTFILE=$ZDOTDIR/zsh_history} - -setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format. -setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history. -setopt HIST_FIND_NO_DUPS # Do not display a previously found event. -setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate. -setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again. -setopt HIST_IGNORE_SPACE # Do not record an event starting with a space. -setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file. -setopt SHARE_HISTORY # Share history between all sessions. diff --git a/zsh/.config/zsh/setup/misc.zsh b/zsh/.config/zsh/setup/misc.zsh deleted file mode 100755 index f301dcc..0000000 --- a/zsh/.config/zsh/setup/misc.zsh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/zsh - -backward-kill-dir () { - local WORDCHARS=${WORDCHARS/\/} - zle backward-kill-word - zle -f kill -} -zle -N backward-kill-dir -bindkey '^[^?' backward-kill-dir - -bindkey \^K kill-line diff --git a/zsh/.config/zsh/setup/tools.zsh b/zsh/.config/zsh/setup/tools.zsh deleted file mode 100755 index fd66b63..0000000 --- a/zsh/.config/zsh/setup/tools.zsh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/zsh - -#-- -- -eval "$(mise activate zsh)" -#-- -- - -#-- -- -eval "$(zoxide init --cmd z zsh)" -alias cd="z" -#-- -- - -#-- -- -eval "$(starship init zsh)" -#-- -- - -#-- -- -export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=#626262,underline' -source "$ZDOTDIR/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh" -source "$ZDOTDIR/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" -#-- -- diff --git a/zsh/.hushlogin b/zsh/.hushlogin deleted file mode 100644 index e69de29..0000000 diff --git a/zsh/.zshenv b/zsh/.zshenv deleted file mode 100644 index bc00d69..0000000 --- a/zsh/.zshenv +++ /dev/null @@ -1 +0,0 @@ -ZDOTDIR=${XDG_CONFIG_HOME:-$HOME/.config}/zsh -- cgit v1.2.3-70-g09d2