From 9024cf03f23562d366aacbd463c4241a5a764126 Mon Sep 17 00:00:00 2001 From: Hydroxycarbamide Date: Fri, 21 Jun 2024 00:12:00 +0200 Subject: [PATCH] rofi, fish --- dot_config/private_fish/completions/bun.fish | 184 ++++++++++++++++++ .../completions/fzf_configure_bindings.fish | 8 + dot_config/private_fish/conf.d/aliases.fish | 5 + dot_config/private_fish/conf.d/fzf.fish | 28 +++ .../private_fish/conf.d/git_aliases.fish | 159 +++++++++++++++ dot_config/private_fish/conf.d/omf.fish | 7 + dot_config/private_fish/config.fish | 120 ++++++++++++ .../private_fish/dot_git/COMMIT_EDITMSG | 1 + dot_config/private_fish/dot_git/FETCH_HEAD | 1 + dot_config/private_fish/dot_git/HEAD | 1 + .../private_fish/dot_git/branches/.keep | 0 dot_config/private_fish/dot_git/config | 11 ++ dot_config/private_fish/dot_git/description | 1 + .../hooks/executable_applypatch-msg.sample | 15 ++ .../hooks/executable_commit-msg.sample | 24 +++ .../executable_fsmonitor-watchman.sample | 173 ++++++++++++++++ .../hooks/executable_post-update.sample | 8 + .../hooks/executable_pre-applypatch.sample | 14 ++ .../hooks/executable_pre-commit.sample | 49 +++++ .../hooks/executable_pre-merge-commit.sample | 13 ++ .../dot_git/hooks/executable_pre-push.sample | 53 +++++ .../hooks/executable_pre-rebase.sample | 169 ++++++++++++++++ .../hooks/executable_pre-receive.sample | 24 +++ .../executable_prepare-commit-msg.sample | 42 ++++ .../hooks/executable_push-to-checkout.sample | 78 ++++++++ .../dot_git/hooks/executable_update.sample | 128 ++++++++++++ dot_config/private_fish/dot_git/index | Bin 0 -> 3689 bytes dot_config/private_fish/dot_git/info/exclude | 6 + dot_config/private_fish/dot_git/logs/HEAD | 2 + .../dot_git/logs/refs/heads/master | 2 + .../dot_git/logs/refs/remotes/origin/master | 2 + ...nly_09e498fb691ece39d6716ba484d74e1f8caa1a | Bin 0 -> 1059 bytes ...nly_3172a72b60a0f43bf77c22bb7d09bfcbd90cab | Bin 0 -> 175 bytes ...nly_085be84fed7180bb7e293f4838a911c073c381 | Bin 0 -> 859 bytes ...nly_bed86cdaf2f38d1e42f8d093a9608d37fcbd31 | Bin 0 -> 69 bytes ...nly_f3dfa5df898a1015ebab982bf97c7753c65802 | Bin 0 -> 2551 bytes ...nly_aaa17635b2ce79f9a13a81aed44e60bfdd517f | Bin 0 -> 2229 bytes ...nly_def783dc4ca73f9fac862acab78eb7edbc9344 | Bin 0 -> 322 bytes ...nly_1cfcc9356c38e6ca22cf4ee29dc55e523a155f | Bin 0 -> 507 bytes ...nly_cf4f137add8b863ec9f4557f759420eec2683b | Bin 0 -> 610 bytes ...nly_e74057d36bf32202a4c95bf6700cfdf4137724 | Bin 0 -> 733 bytes ...nly_3af165d6a1255b9a5098b1f5e1163a11db6cb3 | 4 + ...nly_d6f849726105c2fab021b7bf9404d277f362f5 | Bin 0 -> 738 bytes ...nly_f4f0c97acb87ca685d42ebd80a04beb6a759dc | Bin 0 -> 1070 bytes ...nly_81fe386b7c57b9e35786a7d1257749daa11875 | Bin 0 -> 332 bytes ...nly_75c1d9a81a93cbfae07871e514d30224338e7e | Bin 0 -> 704 bytes ...nly_63c3fb57f96e7746995d053ae08f824f383632 | Bin 0 -> 365 bytes ...nly_9794fe390c3451a20f7501bb0615944d3014cb | Bin 0 -> 24 bytes ...nly_0f6d634e51c40ef05459c71709e34eb7dba1cb | 1 + ...nly_bfa69c19ea1b2cb2c023a0490782c823351340 | 3 + ...nly_e17fc2a3b34833a957391b1b9ae0e1701192f3 | Bin 0 -> 1771 bytes ...nly_e02e1ca3311dbc345fa4b7d137bdd3d51f2195 | 2 + ...nly_d527d414481eefd6b7a1ecc2d1f0d66f656e55 | Bin 0 -> 1133 bytes ...nly_1fc78e6245676911b3f8da27646eab8a52e0e2 | Bin 0 -> 106 bytes ...nly_d3d132512054a5fe3851771db095e0c4ee42ef | Bin 0 -> 958 bytes ...nly_86a49c9af94660e4c627d5bc58db2605fc63c8 | Bin 0 -> 519 bytes ...nly_e2cb83e67f2094b2ad9924dd88d0ed2f624002 | Bin 0 -> 654 bytes ...nly_e8fe4cafe17ce1571975eda85e71f333314454 | Bin 0 -> 276 bytes ...nly_4f2262de22398af2ced75f5c6269dfd2b723e5 | Bin 0 -> 902 bytes ...nly_a5c79d9ac6c1de6e21937c0f401986aa2bf8f3 | Bin 0 -> 709 bytes ...nly_debde6595c9660ab7e42679172554235c28e70 | Bin 0 -> 72 bytes ...nly_586715f4c323221440d302a7ba61e2d74f6344 | Bin 0 -> 1620 bytes ...nly_03e1847ba4ba4c4cfe514f01e16bfee75ab8a0 | Bin 0 -> 52 bytes ...nly_56c11b8f2d1cb411af6337007f5f27f9fd4f9f | Bin 0 -> 668 bytes ...nly_4c697b310cd472cd7252ea8ca9d8be09d97977 | Bin 0 -> 639 bytes ...nly_fb64fabc28f32f26d6f4de2c7be32d3d5a1086 | Bin 0 -> 308 bytes ...nly_0c69a7209a44949cab061d498f3a21e52e7416 | Bin 0 -> 325 bytes ...nly_e0a4ad6cdc0c4df0876cb2befbe990d8199fef | Bin 0 -> 218 bytes ...nly_1c4a423af53a0f0e1c786e6d9b503da6fe0ea8 | Bin 0 -> 161 bytes ...nly_24aad6647f29e3922a8ec8cd4cad862f2968ea | Bin 0 -> 699 bytes ...nly_a3a9102ee69290c0928b12ec5d5df12f3b70d5 | 1 + ...nly_ea4afc83012b6d8f0171b3db81e037d932590b | Bin 0 -> 324 bytes ...nly_5145378a3ce3b864c9938b1668a82a2f1b83ac | Bin 0 -> 766 bytes ...nly_3219b26aff2d061ca0a5c57d1e06c0c268cdb2 | Bin 0 -> 1043 bytes ...nly_5465fdac46aef7635148783ece374d2cc9e6d3 | Bin 0 -> 1429 bytes ...nly_58b02dd48461b63cf1ee569a4a104cb5f0c7e2 | Bin 0 -> 691 bytes ...nly_9c536d5cdefff22f699736b0cada8d823bdc87 | Bin 0 -> 70 bytes ...nly_545891a25bc9529f0d7a4eca1cacbf4796aeb5 | Bin 0 -> 57 bytes ...nly_8fd54ddcc25601a2e4aa8afe2ace07dd3ff781 | 1 + ...nly_c3dc43a2df64e340efc8c4ea6fe1559179644e | Bin 0 -> 610 bytes ...nly_287016a62d11df427a8fb8d4d5f39e610d2e7f | Bin 0 -> 689 bytes ...nly_f271f02e104124e4275c9c8699cfefb356c765 | Bin 0 -> 72 bytes ...nly_30d7ddcfbd415f146de612389eb71e6fdef212 | Bin 0 -> 1034 bytes ...nly_928dc30d8cb0d865612408edc1e99b466bc92b | 3 + ...nly_db55c1fecf9d84d7581c08767b7601bac7ece6 | Bin 0 -> 968 bytes ...nly_6ea63bbeda675e4216951b5dc09ae2f9e9ea8d | Bin 0 -> 325 bytes ...nly_480e6696c4870ea853151c2b3213e4574c8cb3 | Bin 0 -> 668 bytes ...nly_e8c3d98e803da4682ac81b59107aef9ba95f21 | Bin 0 -> 545 bytes ...nly_95c5c725fea0baaed65b4fd736a35f617c75ff | Bin 0 -> 594 bytes ...nly_bf06d552c36b7133550d8bd02ae96a2c8c1084 | Bin 0 -> 79 bytes ...nly_4e9523ad3293e2009b9ea00cb9a3f782775630 | 1 + ...nly_ef59fd3e0cb9331b8e0c0a6ce5d17663f0bd03 | Bin 0 -> 685 bytes ...nly_f8e9fee0d547af4d4ef1c080e03111e320f7c6 | Bin 0 -> 1158 bytes ...nly_a68d053889e50383bbece3bcdf43cc9b23ec2e | Bin 0 -> 742 bytes ...nly_24f73d247ccc545d9dc0dcfc7e805060bada79 | Bin 0 -> 962 bytes ...nly_7db935048fa1ec80613262c7bc072af18c7642 | Bin 0 -> 200 bytes ...nly_fe68ec80206b0fa55c0a934f5c5ab78d2c7a37 | Bin 0 -> 1052 bytes ...nly_a2453c89124f483e78edfc93fa72503122af1d | Bin 0 -> 949 bytes ...nly_5a4617f3ddeb656946f6dbf7bfd280a8821a86 | 3 + ...nly_306476ea72d9688fa66cd538782271979e5dc5 | 1 + ...nly_ae37599bd8f8d961ab0aa1361609d8664621b3 | Bin 0 -> 736 bytes ...nly_e63085a64e93240d08f2eac27296f1cd5d92b8 | Bin 0 -> 1004 bytes .../private_fish/dot_git/objects/info/.keep | 0 .../private_fish/dot_git/objects/pack/.keep | 0 .../private_fish/dot_git/refs/heads/master | 1 + .../dot_git/refs/remotes/origin/master | 1 + .../private_fish/dot_git/refs/tags/.keep | 0 dot_config/private_fish/fish_plugins | 4 + dot_config/private_fish/fish_variables | 66 +++++++ dot_config/private_fish/fishfile | 1 + dot_config/private_fish/functions/__bass.py | 138 +++++++++++++ .../_fzf_configure_bindings_help.fish | 43 ++++ .../functions/_fzf_extract_var_info.fish | 15 ++ .../functions/_fzf_preview_changed_file.fish | 49 +++++ .../functions/_fzf_preview_file.fish | 43 ++++ .../functions/_fzf_report_diff_type.fish | 18 ++ .../functions/_fzf_report_file_type.fish | 6 + .../functions/_fzf_search_directory.fish | 34 ++++ .../functions/_fzf_search_git_log.fish | 30 +++ .../functions/_fzf_search_git_status.fish | 36 ++++ .../functions/_fzf_search_history.fish | 31 +++ .../functions/_fzf_search_processes.fish | 29 +++ .../functions/_fzf_search_variables.fish | 48 +++++ .../private_fish/functions/_fzf_wrapper.fish | 20 ++ dot_config/private_fish/functions/bass.fish | 29 +++ .../functions/fish_user_key_bindings.fish | 3 + .../functions/fzf_configure_bindings.fish | 46 +++++ dot_config/private_fish/functions/man.fish | 41 ++++ dot_config/private_fish/functions/n.fish | 36 ++++ dot_config/private_fish/functions/nvm.fish | 53 +++++ dot_config/private_fish/functions/su.fish | 3 + .../functions/symlink_fish_prompt.fish | 1 + .../functions/symlink_fish_prompt.old.fish | 1 + .../functions/symlink_triton.fish | 1 + .../themes/Catppuccin Frappe.theme | 26 +++ .../themes/Catppuccin Latte.theme | 26 +++ .../themes/Catppuccin Macchiato.theme | 26 +++ .../themes/Catppuccin Mocha.theme | 26 +++ .../github.com/dukejones/triton/LICENSE | 21 ++ .../github.com/dukejones/triton/README.md | 82 ++++++++ .../dukejones/triton/dot_git/FETCH_HEAD | 1 + .../github.com/dukejones/triton/dot_git/HEAD | 1 + .../dukejones/triton/dot_git/branches/.keep | 0 .../dukejones/triton/dot_git/config | 11 ++ .../dukejones/triton/dot_git/description | 1 + .../hooks/executable_applypatch-msg.sample | 15 ++ .../hooks/executable_commit-msg.sample | 24 +++ .../executable_fsmonitor-watchman.sample | 174 +++++++++++++++++ .../hooks/executable_post-update.sample | 8 + .../hooks/executable_pre-applypatch.sample | 14 ++ .../hooks/executable_pre-commit.sample | 49 +++++ .../hooks/executable_pre-merge-commit.sample | 13 ++ .../dot_git/hooks/executable_pre-push.sample | 53 +++++ .../hooks/executable_pre-rebase.sample | 169 ++++++++++++++++ .../hooks/executable_pre-receive.sample | 24 +++ .../executable_prepare-commit-msg.sample | 42 ++++ .../hooks/executable_push-to-checkout.sample | 78 ++++++++ .../dot_git/hooks/executable_update.sample | 128 ++++++++++++ .../github.com/dukejones/triton/dot_git/index | Bin 0 -> 819 bytes .../dukejones/triton/dot_git/info/exclude | 6 + .../dukejones/triton/dot_git/logs/HEAD | 1 + .../triton/dot_git/logs/refs/heads/master | 1 + .../dot_git/logs/refs/remotes/origin/HEAD | 1 + .../triton/dot_git/objects/info/.keep | 0 ...c5d7e7226ca384048adfb4f34689b59079a6cc.idx | Bin 0 -> 3620 bytes ...5d7e7226ca384048adfb4f34689b59079a6cc.pack | Bin 0 -> 17829 bytes .../dukejones/triton/dot_git/packed-refs | 2 + .../triton/dot_git/refs/heads/master | 1 + .../triton/dot_git/refs/remotes/origin/HEAD | 1 + .../dukejones/triton/dot_git/refs/tags/.keep | 0 .../dukejones/triton/executable_install | 25 +++ .../dukejones/triton/functions/triton.fish | 161 +++++++++++++++ .../triton/template/conf.d/aliases.fish | 5 + .../dukejones/triton/template/conf.d/fzf.fish | 11 ++ .../dukejones/triton/template/config.fish | 31 +++ .../dukejones/triton/template/fishfile | 1 + .../triton/github.com/edc/bass/LICENSE | 21 ++ .../triton/github.com/edc/bass/Makefile | 19 ++ .../triton/github.com/edc/bass/README.md | 108 ++++++++++ .../triton/github.com/edc/bass/dot_git/HEAD | 1 + .../edc/bass/dot_git/branches/.keep | 0 .../triton/github.com/edc/bass/dot_git/config | 11 ++ .../github.com/edc/bass/dot_git/description | 1 + .../hooks/executable_applypatch-msg.sample | 15 ++ .../hooks/executable_commit-msg.sample | 24 +++ .../executable_fsmonitor-watchman.sample | 174 +++++++++++++++++ .../hooks/executable_post-update.sample | 8 + .../hooks/executable_pre-applypatch.sample | 14 ++ .../hooks/executable_pre-commit.sample | 49 +++++ .../hooks/executable_pre-merge-commit.sample | 13 ++ .../dot_git/hooks/executable_pre-push.sample | 53 +++++ .../hooks/executable_pre-rebase.sample | 169 ++++++++++++++++ .../hooks/executable_pre-receive.sample | 24 +++ .../executable_prepare-commit-msg.sample | 42 ++++ .../hooks/executable_push-to-checkout.sample | 78 ++++++++ .../dot_git/hooks/executable_update.sample | 128 ++++++++++++ .../triton/github.com/edc/bass/dot_git/index | Bin 0 -> 1394 bytes .../github.com/edc/bass/dot_git/info/exclude | 6 + .../github.com/edc/bass/dot_git/logs/HEAD | 1 + .../edc/bass/dot_git/logs/refs/heads/master | 1 + .../dot_git/logs/refs/remotes/origin/HEAD | 1 + .../edc/bass/dot_git/objects/info/.keep | 0 ...38ec9db8275c33a457d7fca6ce6968cc404b3e.idx | Bin 0 -> 9976 bytes ...8ec9db8275c33a457d7fca6ce6968cc404b3e.pack | Bin 0 -> 65981 bytes .../github.com/edc/bass/dot_git/packed-refs | 3 + .../edc/bass/dot_git/refs/heads/master | 1 + .../edc/bass/dot_git/refs/remotes/origin/HEAD | 1 + .../edc/bass/dot_git/refs/tags/.keep | 0 .../triton/github.com/edc/bass/dot_travis.yml | 13 ++ .../github.com/edc/bass/functions/__bass.py | 138 +++++++++++++ .../github.com/edc/bass/functions/bass.fish | 29 +++ .../edc/bass/test/fixtures/alias.sh | 1 + .../edc/bass/test/fixtures/dollar_output.sh | 5 + .../bass/test/fixtures/trailing_semicolon.sh | 5 + .../github.com/edc/bass/test/test_alias.fish | 10 + .../github.com/edc/bass/test/test_bass.fish | 18 ++ .../edc/bass/test/test_dollar_on_output.fish | 6 + .../bass/test/test_non_zero_returncode.fish | 11 ++ .../bass/test/test_trailing_semicolon.fish | 7 + .../github.com/jethrokuan/fzf/LICENSE.md | 21 ++ .../github.com/jethrokuan/fzf/README.md | 93 +++++++++ .../github.com/jethrokuan/fzf/conf.d/fzf.fish | 63 ++++++ .../github.com/jethrokuan/fzf/dot_git/HEAD | 1 + .../jethrokuan/fzf/dot_git/branches/.keep | 0 .../github.com/jethrokuan/fzf/dot_git/config | 11 ++ .../jethrokuan/fzf/dot_git/description | 1 + .../hooks/executable_applypatch-msg.sample | 15 ++ .../hooks/executable_commit-msg.sample | 24 +++ .../executable_fsmonitor-watchman.sample | 174 +++++++++++++++++ .../hooks/executable_post-update.sample | 8 + .../hooks/executable_pre-applypatch.sample | 14 ++ .../hooks/executable_pre-commit.sample | 49 +++++ .../hooks/executable_pre-merge-commit.sample | 13 ++ .../dot_git/hooks/executable_pre-push.sample | 53 +++++ .../hooks/executable_pre-rebase.sample | 169 ++++++++++++++++ .../hooks/executable_pre-receive.sample | 24 +++ .../executable_prepare-commit-msg.sample | 42 ++++ .../hooks/executable_push-to-checkout.sample | 78 ++++++++ .../dot_git/hooks/executable_update.sample | 128 ++++++++++++ .../github.com/jethrokuan/fzf/dot_git/index | Bin 0 -> 1381 bytes .../jethrokuan/fzf/dot_git/info/exclude | 6 + .../jethrokuan/fzf/dot_git/logs/HEAD | 1 + .../fzf/dot_git/logs/refs/heads/master | 1 + .../fzf/dot_git/logs/refs/remotes/origin/HEAD | 1 + .../jethrokuan/fzf/dot_git/objects/info/.keep | 0 ...9b27e22004791ebe272b2a53aad15c8605db62.idx | Bin 0 -> 22912 bytes ...b27e22004791ebe272b2a53aad15c8605db62.pack | Bin 0 -> 159217 bytes .../jethrokuan/fzf/dot_git/packed-refs | 8 + .../jethrokuan/fzf/dot_git/refs/heads/master | 1 + .../fzf/dot_git/refs/remotes/origin/HEAD | 1 + .../jethrokuan/fzf/dot_git/refs/tags/.keep | 0 .../fzf/dot_github/workflows/ci.yml | 22 +++ .../jethrokuan/fzf/functions/__fzf_cd.fish | 49 +++++ .../fzf/functions/__fzf_complete.fish | 168 ++++++++++++++++ .../fzf/functions/__fzf_complete_preview.fish | 31 +++ .../fzf/functions/__fzf_find_file.fish | 29 +++ .../fzf/functions/__fzf_get_dir.fish | 17 ++ .../jethrokuan/fzf/functions/__fzf_open.fish | 63 ++++++ .../functions/__fzf_parse_commandline.fish | 23 +++ .../fzf/functions/__fzf_reverse_isearch.fish | 6 + .../jethrokuan/fzf/functions/__fzfcmd.fish | 9 + dot_config/rofi/config.rasi | 18 ++ dot_config/rofi/userconfig/config.rasi | 18 ++ dot_config/rofi/userconfig/rofi.rasi | 113 +++++++++++ dot_config/rofi/userconfig/window.rasi | 85 ++++++++ .../share/rofi/themes/catppuccin-frappe.rasi | 111 +++++++++++ .../share/rofi/themes/catppuccin-latte.rasi | 111 +++++++++++ .../rofi/themes/catppuccin-macchiato.rasi | 122 ++++++++++++ .../share/rofi/themes/catppuccin-mocha.rasi | 111 +++++++++++ .../share/rofi/themes/colors-rofi-dark.rasi | 161 +++++++++++++++ dot_local/share/rofi/themes/default.rasi | 93 +++++++++ dot_local/share/rofi/themes/everblush.rasi | 114 +++++++++++ .../share/rofi/themes/rounded-common.rasi | 94 +++++++++ .../rofi/themes/rounded-everblush-dark.rasi | 18 ++ 274 files changed, 7229 insertions(+) create mode 100644 dot_config/private_fish/completions/bun.fish create mode 100644 dot_config/private_fish/completions/fzf_configure_bindings.fish create mode 100644 dot_config/private_fish/conf.d/aliases.fish create mode 100644 dot_config/private_fish/conf.d/fzf.fish create mode 100644 dot_config/private_fish/conf.d/git_aliases.fish create mode 100644 dot_config/private_fish/conf.d/omf.fish create mode 100644 dot_config/private_fish/config.fish create mode 100644 dot_config/private_fish/dot_git/COMMIT_EDITMSG create mode 100644 dot_config/private_fish/dot_git/FETCH_HEAD create mode 100644 dot_config/private_fish/dot_git/HEAD create mode 100644 dot_config/private_fish/dot_git/branches/.keep create mode 100644 dot_config/private_fish/dot_git/config create mode 100644 dot_config/private_fish/dot_git/description create mode 100644 dot_config/private_fish/dot_git/hooks/executable_applypatch-msg.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_commit-msg.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_fsmonitor-watchman.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_post-update.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_pre-applypatch.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_pre-commit.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_pre-merge-commit.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_pre-push.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_pre-rebase.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_pre-receive.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_prepare-commit-msg.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_push-to-checkout.sample create mode 100644 dot_config/private_fish/dot_git/hooks/executable_update.sample create mode 100644 dot_config/private_fish/dot_git/index create mode 100644 dot_config/private_fish/dot_git/info/exclude create mode 100644 dot_config/private_fish/dot_git/logs/HEAD create mode 100644 dot_config/private_fish/dot_git/logs/refs/heads/master create mode 100644 dot_config/private_fish/dot_git/logs/refs/remotes/origin/master create mode 100644 dot_config/private_fish/dot_git/objects/12/readonly_09e498fb691ece39d6716ba484d74e1f8caa1a create mode 100644 dot_config/private_fish/dot_git/objects/12/readonly_3172a72b60a0f43bf77c22bb7d09bfcbd90cab create mode 100644 dot_config/private_fish/dot_git/objects/15/readonly_085be84fed7180bb7e293f4838a911c073c381 create mode 100644 dot_config/private_fish/dot_git/objects/19/readonly_bed86cdaf2f38d1e42f8d093a9608d37fcbd31 create mode 100644 dot_config/private_fish/dot_git/objects/19/readonly_f3dfa5df898a1015ebab982bf97c7753c65802 create mode 100644 dot_config/private_fish/dot_git/objects/1a/readonly_aaa17635b2ce79f9a13a81aed44e60bfdd517f create mode 100644 dot_config/private_fish/dot_git/objects/1e/readonly_def783dc4ca73f9fac862acab78eb7edbc9344 create mode 100644 dot_config/private_fish/dot_git/objects/27/readonly_1cfcc9356c38e6ca22cf4ee29dc55e523a155f create mode 100644 dot_config/private_fish/dot_git/objects/27/readonly_cf4f137add8b863ec9f4557f759420eec2683b create mode 100644 dot_config/private_fish/dot_git/objects/29/readonly_e74057d36bf32202a4c95bf6700cfdf4137724 create mode 100644 dot_config/private_fish/dot_git/objects/2b/readonly_3af165d6a1255b9a5098b1f5e1163a11db6cb3 create mode 100644 dot_config/private_fish/dot_git/objects/30/readonly_d6f849726105c2fab021b7bf9404d277f362f5 create mode 100644 dot_config/private_fish/dot_git/objects/30/readonly_f4f0c97acb87ca685d42ebd80a04beb6a759dc create mode 100644 dot_config/private_fish/dot_git/objects/31/readonly_81fe386b7c57b9e35786a7d1257749daa11875 create mode 100644 dot_config/private_fish/dot_git/objects/33/readonly_75c1d9a81a93cbfae07871e514d30224338e7e create mode 100644 dot_config/private_fish/dot_git/objects/34/readonly_63c3fb57f96e7746995d053ae08f824f383632 create mode 100644 dot_config/private_fish/dot_git/objects/37/readonly_9794fe390c3451a20f7501bb0615944d3014cb create mode 100644 dot_config/private_fish/dot_git/objects/3e/readonly_0f6d634e51c40ef05459c71709e34eb7dba1cb create mode 100644 dot_config/private_fish/dot_git/objects/3f/readonly_bfa69c19ea1b2cb2c023a0490782c823351340 create mode 100644 dot_config/private_fish/dot_git/objects/3f/readonly_e17fc2a3b34833a957391b1b9ae0e1701192f3 create mode 100644 dot_config/private_fish/dot_git/objects/49/readonly_e02e1ca3311dbc345fa4b7d137bdd3d51f2195 create mode 100644 dot_config/private_fish/dot_git/objects/53/readonly_d527d414481eefd6b7a1ecc2d1f0d66f656e55 create mode 100644 dot_config/private_fish/dot_git/objects/57/readonly_1fc78e6245676911b3f8da27646eab8a52e0e2 create mode 100644 dot_config/private_fish/dot_git/objects/57/readonly_d3d132512054a5fe3851771db095e0c4ee42ef create mode 100644 dot_config/private_fish/dot_git/objects/59/readonly_86a49c9af94660e4c627d5bc58db2605fc63c8 create mode 100644 dot_config/private_fish/dot_git/objects/65/readonly_e2cb83e67f2094b2ad9924dd88d0ed2f624002 create mode 100644 dot_config/private_fish/dot_git/objects/65/readonly_e8fe4cafe17ce1571975eda85e71f333314454 create mode 100644 dot_config/private_fish/dot_git/objects/74/readonly_4f2262de22398af2ced75f5c6269dfd2b723e5 create mode 100644 dot_config/private_fish/dot_git/objects/79/readonly_a5c79d9ac6c1de6e21937c0f401986aa2bf8f3 create mode 100644 dot_config/private_fish/dot_git/objects/7b/readonly_debde6595c9660ab7e42679172554235c28e70 create mode 100644 dot_config/private_fish/dot_git/objects/7d/readonly_586715f4c323221440d302a7ba61e2d74f6344 create mode 100644 dot_config/private_fish/dot_git/objects/7f/readonly_03e1847ba4ba4c4cfe514f01e16bfee75ab8a0 create mode 100644 dot_config/private_fish/dot_git/objects/81/readonly_56c11b8f2d1cb411af6337007f5f27f9fd4f9f create mode 100644 dot_config/private_fish/dot_git/objects/82/readonly_4c697b310cd472cd7252ea8ca9d8be09d97977 create mode 100644 dot_config/private_fish/dot_git/objects/84/readonly_fb64fabc28f32f26d6f4de2c7be32d3d5a1086 create mode 100644 dot_config/private_fish/dot_git/objects/89/readonly_0c69a7209a44949cab061d498f3a21e52e7416 create mode 100644 dot_config/private_fish/dot_git/objects/89/readonly_e0a4ad6cdc0c4df0876cb2befbe990d8199fef create mode 100644 dot_config/private_fish/dot_git/objects/93/readonly_1c4a423af53a0f0e1c786e6d9b503da6fe0ea8 create mode 100644 dot_config/private_fish/dot_git/objects/94/readonly_24aad6647f29e3922a8ec8cd4cad862f2968ea create mode 100644 dot_config/private_fish/dot_git/objects/94/readonly_a3a9102ee69290c0928b12ec5d5df12f3b70d5 create mode 100644 dot_config/private_fish/dot_git/objects/9b/readonly_ea4afc83012b6d8f0171b3db81e037d932590b create mode 100644 dot_config/private_fish/dot_git/objects/9e/readonly_5145378a3ce3b864c9938b1668a82a2f1b83ac create mode 100644 dot_config/private_fish/dot_git/objects/a1/readonly_3219b26aff2d061ca0a5c57d1e06c0c268cdb2 create mode 100644 dot_config/private_fish/dot_git/objects/a1/readonly_5465fdac46aef7635148783ece374d2cc9e6d3 create mode 100644 dot_config/private_fish/dot_git/objects/a1/readonly_58b02dd48461b63cf1ee569a4a104cb5f0c7e2 create mode 100644 dot_config/private_fish/dot_git/objects/a3/readonly_9c536d5cdefff22f699736b0cada8d823bdc87 create mode 100644 dot_config/private_fish/dot_git/objects/a4/readonly_545891a25bc9529f0d7a4eca1cacbf4796aeb5 create mode 100644 dot_config/private_fish/dot_git/objects/a7/readonly_8fd54ddcc25601a2e4aa8afe2ace07dd3ff781 create mode 100644 dot_config/private_fish/dot_git/objects/a8/readonly_c3dc43a2df64e340efc8c4ea6fe1559179644e create mode 100644 dot_config/private_fish/dot_git/objects/a9/readonly_287016a62d11df427a8fb8d4d5f39e610d2e7f create mode 100644 dot_config/private_fish/dot_git/objects/a9/readonly_f271f02e104124e4275c9c8699cfefb356c765 create mode 100644 dot_config/private_fish/dot_git/objects/ac/readonly_30d7ddcfbd415f146de612389eb71e6fdef212 create mode 100644 dot_config/private_fish/dot_git/objects/ad/readonly_928dc30d8cb0d865612408edc1e99b466bc92b create mode 100644 dot_config/private_fish/dot_git/objects/ad/readonly_db55c1fecf9d84d7581c08767b7601bac7ece6 create mode 100644 dot_config/private_fish/dot_git/objects/ba/readonly_6ea63bbeda675e4216951b5dc09ae2f9e9ea8d create mode 100644 dot_config/private_fish/dot_git/objects/c5/readonly_480e6696c4870ea853151c2b3213e4574c8cb3 create mode 100644 dot_config/private_fish/dot_git/objects/c6/readonly_e8c3d98e803da4682ac81b59107aef9ba95f21 create mode 100644 dot_config/private_fish/dot_git/objects/d7/readonly_95c5c725fea0baaed65b4fd736a35f617c75ff create mode 100644 dot_config/private_fish/dot_git/objects/d8/readonly_bf06d552c36b7133550d8bd02ae96a2c8c1084 create mode 100644 dot_config/private_fish/dot_git/objects/dd/readonly_4e9523ad3293e2009b9ea00cb9a3f782775630 create mode 100644 dot_config/private_fish/dot_git/objects/e3/readonly_ef59fd3e0cb9331b8e0c0a6ce5d17663f0bd03 create mode 100644 dot_config/private_fish/dot_git/objects/e5/readonly_f8e9fee0d547af4d4ef1c080e03111e320f7c6 create mode 100644 dot_config/private_fish/dot_git/objects/ea/readonly_a68d053889e50383bbece3bcdf43cc9b23ec2e create mode 100644 dot_config/private_fish/dot_git/objects/ec/readonly_24f73d247ccc545d9dc0dcfc7e805060bada79 create mode 100644 dot_config/private_fish/dot_git/objects/ec/readonly_7db935048fa1ec80613262c7bc072af18c7642 create mode 100644 dot_config/private_fish/dot_git/objects/ec/readonly_fe68ec80206b0fa55c0a934f5c5ab78d2c7a37 create mode 100644 dot_config/private_fish/dot_git/objects/ed/readonly_a2453c89124f483e78edfc93fa72503122af1d create mode 100644 dot_config/private_fish/dot_git/objects/f1/readonly_5a4617f3ddeb656946f6dbf7bfd280a8821a86 create mode 100644 dot_config/private_fish/dot_git/objects/f5/readonly_306476ea72d9688fa66cd538782271979e5dc5 create mode 100644 dot_config/private_fish/dot_git/objects/f8/readonly_ae37599bd8f8d961ab0aa1361609d8664621b3 create mode 100644 dot_config/private_fish/dot_git/objects/fe/readonly_e63085a64e93240d08f2eac27296f1cd5d92b8 create mode 100644 dot_config/private_fish/dot_git/objects/info/.keep create mode 100644 dot_config/private_fish/dot_git/objects/pack/.keep create mode 100644 dot_config/private_fish/dot_git/refs/heads/master create mode 100644 dot_config/private_fish/dot_git/refs/remotes/origin/master create mode 100644 dot_config/private_fish/dot_git/refs/tags/.keep create mode 100644 dot_config/private_fish/fish_plugins create mode 100644 dot_config/private_fish/fish_variables create mode 100644 dot_config/private_fish/fishfile create mode 100644 dot_config/private_fish/functions/__bass.py create mode 100644 dot_config/private_fish/functions/_fzf_configure_bindings_help.fish create mode 100644 dot_config/private_fish/functions/_fzf_extract_var_info.fish create mode 100644 dot_config/private_fish/functions/_fzf_preview_changed_file.fish create mode 100644 dot_config/private_fish/functions/_fzf_preview_file.fish create mode 100644 dot_config/private_fish/functions/_fzf_report_diff_type.fish create mode 100644 dot_config/private_fish/functions/_fzf_report_file_type.fish create mode 100644 dot_config/private_fish/functions/_fzf_search_directory.fish create mode 100644 dot_config/private_fish/functions/_fzf_search_git_log.fish create mode 100644 dot_config/private_fish/functions/_fzf_search_git_status.fish create mode 100644 dot_config/private_fish/functions/_fzf_search_history.fish create mode 100644 dot_config/private_fish/functions/_fzf_search_processes.fish create mode 100644 dot_config/private_fish/functions/_fzf_search_variables.fish create mode 100644 dot_config/private_fish/functions/_fzf_wrapper.fish create mode 100644 dot_config/private_fish/functions/bass.fish create mode 100644 dot_config/private_fish/functions/fish_user_key_bindings.fish create mode 100644 dot_config/private_fish/functions/fzf_configure_bindings.fish create mode 100644 dot_config/private_fish/functions/man.fish create mode 100644 dot_config/private_fish/functions/n.fish create mode 100644 dot_config/private_fish/functions/nvm.fish create mode 100644 dot_config/private_fish/functions/su.fish create mode 100644 dot_config/private_fish/functions/symlink_fish_prompt.fish create mode 100644 dot_config/private_fish/functions/symlink_fish_prompt.old.fish create mode 100644 dot_config/private_fish/functions/symlink_triton.fish create mode 100644 dot_config/private_fish/themes/Catppuccin Frappe.theme create mode 100644 dot_config/private_fish/themes/Catppuccin Latte.theme create mode 100644 dot_config/private_fish/themes/Catppuccin Macchiato.theme create mode 100644 dot_config/private_fish/themes/Catppuccin Mocha.theme create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/LICENSE create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/README.md create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/FETCH_HEAD create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/HEAD create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/branches/.keep create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/config create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/description create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_applypatch-msg.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_commit-msg.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_fsmonitor-watchman.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_post-update.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-applypatch.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-commit.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-merge-commit.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-push.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-rebase.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-receive.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_prepare-commit-msg.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_push-to-checkout.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_update.sample create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/index create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/info/exclude create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/HEAD create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/refs/heads/master create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/refs/remotes/origin/HEAD create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/objects/info/.keep create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/objects/pack/readonly_pack-3fc5d7e7226ca384048adfb4f34689b59079a6cc.idx create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/objects/pack/readonly_pack-3fc5d7e7226ca384048adfb4f34689b59079a6cc.pack create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/packed-refs create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/heads/master create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/remotes/origin/HEAD create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/tags/.keep create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/executable_install create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/functions/triton.fish create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/template/conf.d/aliases.fish create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/template/conf.d/fzf.fish create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/template/config.fish create mode 100644 dot_config/private_fish/triton/github.com/dukejones/triton/template/fishfile create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/LICENSE create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/Makefile create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/README.md create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/HEAD create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/branches/.keep create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/config create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/description create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_applypatch-msg.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_commit-msg.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_fsmonitor-watchman.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_post-update.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-applypatch.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-commit.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-merge-commit.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-push.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-rebase.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-receive.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_prepare-commit-msg.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_push-to-checkout.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_update.sample create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/index create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/info/exclude create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/logs/HEAD create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/logs/refs/heads/master create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/logs/refs/remotes/origin/HEAD create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/objects/info/.keep create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/objects/pack/readonly_pack-2238ec9db8275c33a457d7fca6ce6968cc404b3e.idx create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/objects/pack/readonly_pack-2238ec9db8275c33a457d7fca6ce6968cc404b3e.pack create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/packed-refs create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/heads/master create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/remotes/origin/HEAD create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/tags/.keep create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/dot_travis.yml create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/functions/__bass.py create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/functions/bass.fish create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/alias.sh create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/dollar_output.sh create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/trailing_semicolon.sh create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/test/test_alias.fish create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/test/test_bass.fish create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/test/test_dollar_on_output.fish create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/test/test_non_zero_returncode.fish create mode 100644 dot_config/private_fish/triton/github.com/edc/bass/test/test_trailing_semicolon.fish create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/LICENSE.md create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/README.md create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/conf.d/fzf.fish create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/HEAD create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/branches/.keep create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/config create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/description create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_applypatch-msg.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_commit-msg.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_fsmonitor-watchman.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_post-update.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-applypatch.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-commit.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-merge-commit.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-push.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-rebase.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-receive.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_prepare-commit-msg.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_push-to-checkout.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_update.sample create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/index create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/info/exclude create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/HEAD create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/refs/heads/master create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/refs/remotes/origin/HEAD create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/objects/info/.keep create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/objects/pack/readonly_pack-179b27e22004791ebe272b2a53aad15c8605db62.idx create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/objects/pack/readonly_pack-179b27e22004791ebe272b2a53aad15c8605db62.pack create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/packed-refs create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/heads/master create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/remotes/origin/HEAD create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/tags/.keep create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_github/workflows/ci.yml create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_cd.fish create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_complete.fish create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_complete_preview.fish create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_find_file.fish create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_get_dir.fish create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_open.fish create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_parse_commandline.fish create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_reverse_isearch.fish create mode 100644 dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzfcmd.fish create mode 100644 dot_config/rofi/config.rasi create mode 100644 dot_config/rofi/userconfig/config.rasi create mode 100644 dot_config/rofi/userconfig/rofi.rasi create mode 100644 dot_config/rofi/userconfig/window.rasi create mode 100644 dot_local/share/rofi/themes/catppuccin-frappe.rasi create mode 100644 dot_local/share/rofi/themes/catppuccin-latte.rasi create mode 100644 dot_local/share/rofi/themes/catppuccin-macchiato.rasi create mode 100644 dot_local/share/rofi/themes/catppuccin-mocha.rasi create mode 100644 dot_local/share/rofi/themes/colors-rofi-dark.rasi create mode 100644 dot_local/share/rofi/themes/default.rasi create mode 100644 dot_local/share/rofi/themes/everblush.rasi create mode 100644 dot_local/share/rofi/themes/rounded-common.rasi create mode 100644 dot_local/share/rofi/themes/rounded-everblush-dark.rasi diff --git a/dot_config/private_fish/completions/bun.fish b/dot_config/private_fish/completions/bun.fish new file mode 100644 index 0000000..19f3dfa --- /dev/null +++ b/dot_config/private_fish/completions/bun.fish @@ -0,0 +1,184 @@ +# This is terribly complicated +# It's because: +# 1. bun run has to have dynamic completions +# 2. there are global options +# 3. bun {install add remove} gets special options +# 4. I don't know how to write fish completions well +# Contributions very welcome!! + +function __fish__get_bun_bins + string split ' ' (bun getcompletes b) +end + +function __fish__get_bun_scripts + set -lx SHELL bash + set -lx MAX_DESCRIPTION_LEN 40 + string trim (string split '\n' (string split '\t' (bun getcompletes z))) +end + +function __fish__get_bun_packages + if test (commandline -ct) != "" + set -lx SHELL fish + string split ' ' (bun getcompletes a (commandline -ct)) + end +end + +function __history_completions + set -l tokens (commandline --current-process --tokenize) + history --prefix (commandline) | string replace -r \^$tokens[1]\\s\* "" | string replace -r \^$tokens[2]\\s\* "" | string split ' ' +end + +function __fish__get_bun_bun_js_files + string split ' ' (bun getcompletes j) +end + +set -l bun_install_boolean_flags yarn production optional development no-save dry-run force no-cache silent verbose global +set -l bun_install_boolean_flags_descriptions "Write a yarn.lock file (yarn v1)" "Don't install devDependencies" "Add dependency to optionalDependencies" "Add dependency to devDependencies" "Don't install devDependencies" "Don't install anything" "Always request the latest versions from the registry & reinstall all dependencies" "Ignore manifest cache entirely" "Don't output anything" "Excessively verbose logging" "Use global folder" + +set -l bun_builtin_cmds_without_run dev create help bun upgrade discord install remove add init pm x +set -l bun_builtin_cmds_accepting_flags create help bun upgrade discord run init link unlink pm x + +function __bun_complete_bins_scripts --inherit-variable bun_builtin_cmds_without_run -d "Emit bun completions for bins and scripts" + # Do nothing if we already have a builtin subcommand, + # or any subcommand other than "run". + if __fish_seen_subcommand_from $bun_builtin_cmds_without_run + or not __fish_use_subcommand && not __fish_seen_subcommand_from run + return + end + # Do we already have a bin or script subcommand? + set -l bins (__fish__get_bun_bins) + if __fish_seen_subcommand_from $bins + return + end + # Scripts have descriptions appended with a tab separator. + # Strip off descriptions for the purposes of subcommand testing. + set -l scripts (__fish__get_bun_scripts) + if __fish_seen_subcommand_from $(string split \t -f 1 -- $scripts) + return + end + # Emit scripts. + for script in $scripts + echo $script + end + # Emit binaries and JS files (but only if we're doing `bun run`). + if __fish_seen_subcommand_from run + for bin in $bins + echo "$bin"\t"package bin" + end + for file in (__fish__get_bun_bun_js_files) + echo "$file"\t"Bun.js" + end + end +end + + +# Clear existing completions +complete -e -c bun + +# Dynamically emit scripts and binaries +complete -c bun -f -a "(__bun_complete_bins_scripts)" + +# Complete flags if we have no subcommand or a flag-friendly one. +set -l flag_applies "__fish_use_subcommand; or __fish_seen_subcommand_from $bun_builtin_cmds_accepting_flags" +complete -c bun \ + -n $flag_applies --no-files -s 'u' -l 'origin' -r -d 'Server URL. Rewrites import paths' +complete -c bun \ + -n $flag_applies --no-files -s 'p' -l 'port' -r -d 'Port number to start server from' +complete -c bun \ + -n $flag_applies --no-files -s 'd' -l 'define' -r -d 'Substitute K:V while parsing, e.g. --define process.env.NODE_ENV:\"development\"' +complete -c bun \ + -n $flag_applies --no-files -s 'e' -l 'external' -r -d 'Exclude module from transpilation (can use * wildcards). ex: -e react' +complete -c bun \ + -n $flag_applies --no-files -l 'use' -r -d 'Use a framework (ex: next)' +complete -c bun \ + -n $flag_applies --no-files -l 'hot' -r -d 'Enable hot reloading in Bun\'s JavaScript runtime' + +# Complete dev and create as first subcommand. +complete -c bun \ + -n "__fish_use_subcommand" -a 'dev' -d 'Start dev server' +complete -c bun \ + -n "__fish_use_subcommand" -a 'create' -f -d 'Create a new project from a template' + +# Complete "next" and "react" if we've seen "create". +complete -c bun \ + -n "__fish_seen_subcommand_from create" -a 'next' -d 'new Next.js project' + +complete -c bun \ + -n "__fish_seen_subcommand_from create" -a 'react' -d 'new React project' + +# Complete "upgrade" as first subcommand. +complete -c bun \ + -n "__fish_use_subcommand" -a 'upgrade' -d 'Upgrade bun to the latest version' -x +# Complete "-h/--help" unconditionally. +complete -c bun \ + -s "h" -l "help" -d 'See all commands and flags' -x + +# Complete "-v/--version" if we have no subcommand. +complete -c bun \ + -n "not __fish_use_subcommand" -l "version" -s "v" -d 'Bun\'s version' -x + +# Complete additional subcommands. +complete -c bun \ + -n "__fish_use_subcommand" -a 'discord' -d 'Open bun\'s Discord server' -x + + +complete -c bun \ + -n "__fish_use_subcommand" -a 'bun' -d 'Generate a new bundle' + + +complete -c bun \ + -n "__fish_seen_subcommand_from bun" -F -d 'Bundle this' + +complete -c bun \ + -n "__fish_seen_subcommand_from create; and __fish_seen_subcommand_from react next" -F -d "Create in directory" + + +complete -c bun \ + -n "__fish_use_subcommand" -a 'init' -F -d 'Start an empty Bun project' + +complete -c bun \ + -n "__fish_use_subcommand" -a 'install' -f -d 'Install packages from package.json' + +complete -c bun \ + -n "__fish_use_subcommand" -a 'add' -F -d 'Add a package to package.json' + +complete -c bun \ + -n "__fish_use_subcommand" -a 'remove' -F -d 'Remove a package from package.json' + + +for i in (seq (count $bun_install_boolean_flags)) + complete -c bun \ + -n "__fish_seen_subcommand_from install add remove" -l "$bun_install_boolean_flags[$i]" -d "$bun_install_boolean_flags_descriptions[$i]" +end + +complete -c bun \ + -n "__fish_seen_subcommand_from install add remove" -l 'cwd' -d 'Change working directory' + +complete -c bun \ + -n "__fish_seen_subcommand_from install add remove" -l 'cache-dir' -d 'Choose a cache directory (default: $HOME/.bun/install/cache)' + +complete -c bun \ + -n "__fish_seen_subcommand_from add" -d 'Popular' -a '(__fish__get_bun_packages)' + +complete -c bun \ + -n "__fish_seen_subcommand_from add" -d 'History' -a '(__history_completions)' + +complete -c bun \ + -n "__fish_seen_subcommand_from pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) cache;" -a 'bin ls cache hash hash-print hash-string' -f + +complete -c bun \ + -n "__fish_seen_subcommand_from pm; and __fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts);" -a 'rm' -f + +# Add built-in subcommands with descriptions. +complete -c bun -n "__fish_use_subcommand" -a "create" -f -d "Create a new project from a template" +complete -c bun -n "__fish_use_subcommand" -a "build bun" --require-parameter -F -d "Transpile and bundle one or more files" +complete -c bun -n "__fish_use_subcommand" -a "upgrade" -d "Upgrade Bun" +complete -c bun -n "__fish_use_subcommand" -a "run" -d "Run a script or package binary" +complete -c bun -n "__fish_use_subcommand" -a "install" -d "Install dependencies from package.json" -f +complete -c bun -n "__fish_use_subcommand" -a "remove" -d "Remove a dependency from package.json" -f +complete -c bun -n "__fish_use_subcommand" -a "add" -d "Add a dependency to package.json" -f +complete -c bun -n "__fish_use_subcommand" -a "init" -d "Initialize a Bun project in this directory" -f +complete -c bun -n "__fish_use_subcommand" -a "link" -d "Register or link a local npm package" -f +complete -c bun -n "__fish_use_subcommand" -a "link" -d "Unregister a local npm package" -f +complete -c bun -n "__fish_use_subcommand" -a "pm" -d "Additional package management utilities" -f +complete -c bun -n "__fish_use_subcommand" -a "x" -d "Execute a package binary, installing if needed" -f diff --git a/dot_config/private_fish/completions/fzf_configure_bindings.fish b/dot_config/private_fish/completions/fzf_configure_bindings.fish new file mode 100644 index 0000000..ec7db93 --- /dev/null +++ b/dot_config/private_fish/completions/fzf_configure_bindings.fish @@ -0,0 +1,8 @@ +complete fzf_configure_bindings --no-files +complete fzf_configure_bindings --long help --short h --description "Print help" +complete fzf_configure_bindings --long directory --description "Change the key binding for searching directory" +complete fzf_configure_bindings --long git_log --description "Change the key binding for searching git log" +complete fzf_configure_bindings --long git_status --description "Change the key binding for searching git status" +complete fzf_configure_bindings --long history --description "Change the key binding for searching history" +complete fzf_configure_bindings --long processes --description "Change the key binding for searching processes" +complete fzf_configure_bindings --long variables --description "Change the key binding for searching variables" diff --git a/dot_config/private_fish/conf.d/aliases.fish b/dot_config/private_fish/conf.d/aliases.fish new file mode 100644 index 0000000..571fc78 --- /dev/null +++ b/dot_config/private_fish/conf.d/aliases.fish @@ -0,0 +1,5 @@ + +# alias g="git" +# alias gpr="git pull -r" + +# alias dns="dscacheutil -flushcache; sudo killall -HUP mDNSResponder" diff --git a/dot_config/private_fish/conf.d/fzf.fish b/dot_config/private_fish/conf.d/fzf.fish new file mode 100644 index 0000000..8156c11 --- /dev/null +++ b/dot_config/private_fish/conf.d/fzf.fish @@ -0,0 +1,28 @@ +# fzf.fish is only meant to be used in interactive mode. If not in interactive mode and not in CI, skip the config to speed up shell startup +if not status is-interactive && test "$CI" != true + exit +end + +# Because of scoping rules, to capture the shell variables exactly as they are, we must read +# them before even executing _fzf_search_variables. We use psub to store the +# variables' info in temporary files and pass in the filenames as arguments. +# This variable is global so that it can be referenced by fzf_configure_bindings and in tests +set --global _fzf_search_vars_command '_fzf_search_variables (set --show | psub) (set --names | psub)' + + +# Install the default bindings, which are mnemonic and minimally conflict with fish's preset bindings +fzf_configure_bindings + +# Doesn't erase autoloaded _fzf_* functions because they are not easily accessible once key bindings are erased +function _fzf_uninstall --on-event fzf_uninstall + _fzf_uninstall_bindings + + set --erase _fzf_search_vars_command + functions --erase _fzf_uninstall _fzf_migration_message _fzf_uninstall_bindings fzf_configure_bindings + complete --erase fzf_configure_bindings + + set_color cyan + echo "fzf.fish uninstalled." + echo "You may need to manually remove fzf_configure_bindings from your config.fish if you were using custom key bindings." + set_color normal +end diff --git a/dot_config/private_fish/conf.d/git_aliases.fish b/dot_config/private_fish/conf.d/git_aliases.fish new file mode 100644 index 0000000..7d58671 --- /dev/null +++ b/dot_config/private_fish/conf.d/git_aliases.fish @@ -0,0 +1,159 @@ +# migrating from https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/git.plugin.zsh + +# Aliases +alias g='git' +#compdef g=git +alias gst='git status' +#compdef _git gst=git-status +alias gd='git diff' +#compdef _git gd=git-diff +alias gdc='git diff --cached' +#compdef _git gdc=git-diff +alias gl='git pull' +#compdef _git gl=git-pull +alias gup='git pull --rebase' +#compdef _git gup=git-fetch +alias gp='git push' +#compdef _git gp=git-push +alias gd='git diff' + +function gdv + git diff -w $argv | view - +end + +#compdef _git gdv=git-diff +alias gc='git commit -v' +#compdef _git gc=git-commit +alias gc!='git commit -v --amend' +#compdef _git gc!=git-commit +alias gca='git commit -v -a' +#compdef _git gc=git-commit +alias gca!='git commit -v -a --amend' +#compdef _git gca!=git-commit +alias gcmsg='git commit -m' +#compdef _git gcmsg=git-commit +alias gco='git checkout' +#compdef _git gco=git-checkout +alias gcm='git checkout master' +alias gr='git remote' +#compdef _git gr=git-remote +alias grv='git remote -v' +#compdef _git grv=git-remote +alias grmv='git remote rename' +#compdef _git grmv=git-remote +alias grrm='git remote remove' +#compdef _git grrm=git-remote +alias grset='git remote set-url' +#compdef _git grset=git-remote +alias grup='git remote update' +#compdef _git grset=git-remote +alias grbi='git rebase -i' +#compdef _git grbi=git-rebase +alias grbc='git rebase --continue' +#compdef _git grbc=git-rebase +alias grba='git rebase --abort' +#compdef _git grba=git-rebase +alias gb='git branch' +#compdef _git gb=git-branch +alias gba='git branch -a' +#compdef _git gba=git-branch +alias gcount='git shortlog -sn' +#compdef gcount=git +alias gcl='git config --list' +alias gcp='git cherry-pick' +#compdef _git gcp=git-cherry-pick +alias glg='git log --stat --max-count=10' +#compdef _git glg=git-log +alias glgg='git log --graph --max-count=10' +#compdef _git glgg=git-log +alias glgga='git log --graph --decorate --all' +#compdef _git glgga=git-log +alias glo='git log --oneline' +#compdef _git glo=git-log +alias gss='git status -s' +#compdef _git gss=git-status +alias ga='git add' +#compdef _git ga=git-add +alias gm='git merge' +#compdef _git gm=git-merge +alias grh='git reset HEAD' +alias grhh='git reset HEAD --hard' +alias gclean='git reset --hard; and git clean -dfx' +alias gwc='git whatchanged -p --abbrev-commit --pretty=medium' + +#remove the gf alias +#alias gf='git ls-files | grep' + +alias gpoat='git push origin --all; and git push origin --tags' +alias gmt='git mergetool --no-prompt' +#compdef _git gm=git-mergetool + +alias gg='git gui citool' +alias gga='git gui citool --amend' +alias gk='gitk --all --branches' + +alias gsts='git stash show --text' +alias gsta='git stash' +alias gstp='git stash pop' +alias gstd='git stash drop' + +# Will cd into the top of the current repository +# or submodule. +alias grt='cd (git rev-parse --show-toplevel; or echo ".")' + +# Git and svn mix +alias git-svn-dcommit-push='git svn dcommit; and git push github master:svntrunk' +#compdef git-svn-dcommit-push=git + +alias gsr='git svn rebase' +alias gsd='git svn dcommit' +# +# Will return the current branch name +# Usage example: git pull origin $(current_branch) +# +function current_branch + set ref (git symbolic-ref HEAD 2> /dev/null); or \ + set ref (git rev-parse --short HEAD 2> /dev/null); or return + echo ref | sed s-refs/heads-- +end + +function current_repository + set ref (git symbolic-ref HEAD 2> /dev/null); or \ + set ref (git rev-parse --short HEAD 2> /dev/null); or return + echo (git remote -v | cut -d':' -f 2) +end + +# these aliases take advantage of the previous function +alias ggpull='git pull origin (current_branch)' +#compdef ggpull=git +alias ggpur='git pull --rebase origin (current_branch)' +#compdef ggpur=git +alias ggpush='git push origin (current_branch)' +#compdef ggpush=git +alias ggpnp='git pull origin (current_branch); and git push origin (current_branch)' +#compdef ggpnp=git + +# Pretty log messages +function _git_log_prettily + if ! [ -z $1 ]; then + git log --pretty=$1 + end +end + +alias glp="_git_log_prettily" +#compdef _git glp=git-log + +# Work In Progress (wip) +# These features allow to pause a branch development and switch to another one (wip) +# When you want to go back to work, just unwip it +# +# This function return a warning if the current branch is a wip +function work_in_progress + if git log -n 1 | grep -q -c wip; then + echo "WIP!!" + end +end + +# these alias commit and uncomit wip branches +alias gwip='git add -A; git ls-files --deleted -z | xargs -0 git rm; git commit -m "wip"' +alias gunwip='git log -n 1 | grep -q -c wip; and git reset HEAD~1' \ No newline at end of file diff --git a/dot_config/private_fish/conf.d/omf.fish b/dot_config/private_fish/conf.d/omf.fish new file mode 100644 index 0000000..3e0f6d6 --- /dev/null +++ b/dot_config/private_fish/conf.d/omf.fish @@ -0,0 +1,7 @@ +# Path to Oh My Fish install. +set -q XDG_DATA_HOME + and set -gx OMF_PATH "$XDG_DATA_HOME/omf" + or set -gx OMF_PATH "$HOME/.local/share/omf" + +# Load Oh My Fish configuration. +source $OMF_PATH/init.fish diff --git a/dot_config/private_fish/config.fish b/dot_config/private_fish/config.fish new file mode 100644 index 0000000..8878ae7 --- /dev/null +++ b/dot_config/private_fish/config.fish @@ -0,0 +1,120 @@ +zoxide init fish | source +if status is-interactive + # fenv source /etc/profile + # Commands to run in interactive sessions can go here + + # doas + # alias sudo='doas' + + # ls + alias exa='eza' + alias l='exa -lh --icons' + alias ls='exa --icons --group-directories-first' + alias ll='exa -lah --icons' + alias lm='exa -m' + alias lr='exa -R' + alias lg='exa -l --group-directories-first --icons' + alias tree='exa --tree' + + # git + alias gcl='git clone --depth 1' + alias gi='git init' + alias ga='git add' + alias gc='git commit -m' + alias gp='git push origin master' + + # cat + alias cat='bat -p' + + # cd/zoxide + alias cd='z' + + # helix + alias hx='helix' + alias h='helix' + + # vim + alias vim='nvim' + alias v='vim' + + # emacs + # alias emacs='emacsclient -nc -s instance1' + + # pn + alias pn='pnpm' + + # paru + alias pa='paru' + alias yay='paru' + + # codium wayland + # alias codium='codium --enable-features=UseOzonePlatform --ozone-platform=wayland' + alias codiumwl='codium --enable-features=UseOzonePlatform --ozone-platform=wayland' + alias codewl='code --enable-features=UseOzonePlatform --ozone-platform=wayland' + + # systemctl + alias sys='systemctl' + + alias sysuser='systemctl --user' + + # fancy cp + alias fcp='rsync -avP' + + # pager + alias less='bat --style plain' + + # helix + alias hx='helix' + + # unset + alias unset 'set --erase' + + # adb + alias adb='HOME="$XDG_DATA_HOME"/android adb' + + function nnn_cd + if test -n "$NNN_PIPE" + printf "%s\0" "0c$PWD" > "$NNN_PIPE" !& + end + end + + trap nnn_cd EXIT +end + +thefuck --alias | source + +# pnpm +set -gx PNPM_HOME "/home/eric/.local/share/pnpm" +if not string match -q -- $PNPM_HOME $PATH + set -gx PATH "$PNPM_HOME" $PATH +end +# pnpm end + +# nnn +alias N="sudo -E nnn" +set -gx LC_COLLATE "C" +set -gx NNN_PAGER "cat" +set -gx NNN_OPTS "eaA" +set -gx NNN_OPENER '/home/eric/.config/nnn/plugins/nuke' +set -gx NNN_PLUG 'd:dragdrop;f:finder;i:!fish -i*;m:mtpmount;o:fzopen;p:preview-tui;r:rsynccp;s:suedit;t:nmount;v:imgview;z:autojump' +set -gx SPLIT 'v' # to split Kitty vertically + +set BLK "03" +set CHR "03" +set DIR "04" +set EXE "02" +set REG "07" +set HARDLINK "05" +set SYMLINK "05" +set MISSING "08" +set ORPHAN "01" +set FIFO "06" +set SOCK "03" +set UNKNOWN "01" +set -gx NNN_FCOLORS "$BLK$CHR$DIR$EXE$REG$HARDLINK$SYMLINK$MISSING$ORPHAN$FIFO$SOCK$UNKNOWN" +set -gx NNN_COLORS "#04020301;4231" +set -gx NNN_TERMINAL "foot" + +# source /opt/miniconda3/etc/fish/conf.d/conda.fish + +starship init fish | source diff --git a/dot_config/private_fish/dot_git/COMMIT_EDITMSG b/dot_config/private_fish/dot_git/COMMIT_EDITMSG new file mode 100644 index 0000000..c6f4d30 --- /dev/null +++ b/dot_config/private_fish/dot_git/COMMIT_EDITMSG @@ -0,0 +1 @@ +Update fish diff --git a/dot_config/private_fish/dot_git/FETCH_HEAD b/dot_config/private_fish/dot_git/FETCH_HEAD new file mode 100644 index 0000000..41f6d7c --- /dev/null +++ b/dot_config/private_fish/dot_git/FETCH_HEAD @@ -0,0 +1 @@ +f5306476ea72d9688fa66cd538782271979e5dc5 branch 'master' of git.siklos-chaneru.dev:Siklos/fish-config diff --git a/dot_config/private_fish/dot_git/HEAD b/dot_config/private_fish/dot_git/HEAD new file mode 100644 index 0000000..cb089cd --- /dev/null +++ b/dot_config/private_fish/dot_git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/dot_config/private_fish/dot_git/branches/.keep b/dot_config/private_fish/dot_git/branches/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_fish/dot_git/config b/dot_config/private_fish/dot_git/config new file mode 100644 index 0000000..60e097c --- /dev/null +++ b/dot_config/private_fish/dot_git/config @@ -0,0 +1,11 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[remote "origin"] + url = git@git.siklos-chaneru.dev:Siklos/fish-config.git + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "master"] + remote = origin + merge = refs/heads/master diff --git a/dot_config/private_fish/dot_git/description b/dot_config/private_fish/dot_git/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/dot_config/private_fish/dot_git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/dot_config/private_fish/dot_git/hooks/executable_applypatch-msg.sample b/dot_config/private_fish/dot_git/hooks/executable_applypatch-msg.sample new file mode 100644 index 0000000..a5d7b84 --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/dot_config/private_fish/dot_git/hooks/executable_commit-msg.sample b/dot_config/private_fish/dot_git/hooks/executable_commit-msg.sample new file mode 100644 index 0000000..b58d118 --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/dot_config/private_fish/dot_git/hooks/executable_fsmonitor-watchman.sample b/dot_config/private_fish/dot_git/hooks/executable_fsmonitor-watchman.sample new file mode 100644 index 0000000..14ed0aa --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_fsmonitor-watchman.sample @@ -0,0 +1,173 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + } + my $query = <<" END"; + ["query", "$git_work_tree", { + "since": $last_update_token, + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/dot_config/private_fish/dot_git/hooks/executable_post-update.sample b/dot_config/private_fish/dot_git/hooks/executable_post-update.sample new file mode 100644 index 0000000..ec17ec1 --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/dot_config/private_fish/dot_git/hooks/executable_pre-applypatch.sample b/dot_config/private_fish/dot_git/hooks/executable_pre-applypatch.sample new file mode 100644 index 0000000..4142082 --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/dot_config/private_fish/dot_git/hooks/executable_pre-commit.sample b/dot_config/private_fish/dot_git/hooks/executable_pre-commit.sample new file mode 100644 index 0000000..e144712 --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/dot_config/private_fish/dot_git/hooks/executable_pre-merge-commit.sample b/dot_config/private_fish/dot_git/hooks/executable_pre-merge-commit.sample new file mode 100644 index 0000000..399eab1 --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/dot_config/private_fish/dot_git/hooks/executable_pre-push.sample b/dot_config/private_fish/dot_git/hooks/executable_pre-push.sample new file mode 100644 index 0000000..4ce688d --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/dot_config/private_fish/dot_git/hooks/executable_pre-rebase.sample b/dot_config/private_fish/dot_git/hooks/executable_pre-rebase.sample new file mode 100644 index 0000000..6cbef5c --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/dot_config/private_fish/dot_git/hooks/executable_pre-receive.sample b/dot_config/private_fish/dot_git/hooks/executable_pre-receive.sample new file mode 100644 index 0000000..a1fd29e --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/dot_config/private_fish/dot_git/hooks/executable_prepare-commit-msg.sample b/dot_config/private_fish/dot_git/hooks/executable_prepare-commit-msg.sample new file mode 100644 index 0000000..10fa14c --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/dot_config/private_fish/dot_git/hooks/executable_push-to-checkout.sample b/dot_config/private_fish/dot_git/hooks/executable_push-to-checkout.sample new file mode 100644 index 0000000..af5a0c0 --- /dev/null +++ b/dot_config/private_fish/dot_git/hooks/executable_push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/dot_config/private_fish/dot_git/index b/dot_config/private_fish/dot_git/index new file mode 100644 index 0000000000000000000000000000000000000000..4cd9e0d90912f11b288507062ab463752c920c07 GIT binary patch literal 3689 zcma)<2~bma9>@RT2uJ0J2$m8M35SA&qgW6uDu;r@Edo{C_()z3$z={X1_iXEgMuuF zM>#BqA{IPW*0q8wRH%Tq+jSJHh;nI1C?05Aq$=(|@8v;Wkj`c%^UWlg&-Zuzj~5ai z7YqQB~z>sS3J`t$aiTmIT`)NL{= zZNs%B9k75c5lMxpLLd>#JyMinCRZTmLn?f6f)@okzphRu6z4Jw$Xs2kv7MKe>lIdy zE?hC-emg=2q{%%ipJ zOyXJo*3NKPu=j+hIZ;`p+MxdF99TnSQ z`Xc^|&V@$9Q5Wx5-Z2rUrV}osEnd zZ_63*q7BgWDjERXpwu(gS9BI)`u6~~ns<-Po8M9$kG^YMduD7fLKGunbJKeGB%wI3E}F~(M!rW%r&i4KiLEhHQd+2%rIDTsZU93S zk1G(OaNb>CzVY6*AdOIr!^wG0=9pEk8qB_0+Z6Wcsl*jFHe~~YQd;pVV8K<2+4w4A zu~HDZoGHz~)5X_OOxGc74x!>)hu37TQNY*~e=Ns7)$ByFaY=OYri%s3GJS!Y2KU3u zh{Z>RQtf^@Z#BMy`9Xz#aPA!@$$mP&Jcv5PIPG0B1j>(9&AU`Pu{$ln6F6%5q3H@4 z!d9?g#aRL|SE6Br@g-P1BQe7QgPhjPXk6WGt; z^VfX1e>%J+^L0vn*zIo;C&g)NzuKbjKTxx1WAkA?GL)^5$TGD1KilU$*@voIopjFq z_Ls=NR*pYQC|hqHap6Vh5OC1yi`qxEJqjf}4HtFY8WXIse4yg_FknSB&o^rEvDi@G z{VRvR<#d-Eu;SOddf4n~1Wt4N$Q6h}sc~Xp{FbAe2vz$~$Ub_PTz-nS$b4{MZ(#Rt z8?%+A_Rp^J1Ln$yFOX|hO`XqdA9$8)=A++H>iEqaPWIB_V%LLRKSrG1>#>wSI#++B zG6@@%lMg^FkL$hVgsSt=CHojYdRh~@GH-r#SYZ0owQ%j^)b?&tOpv=N=Z}+@9hL|w3fsIyw(qxEKipn(b_`Y0_P>$`( zQ1Lu+#>sr0VmJSB^iH+Y=CYWh|M-2-%Aa;$*rd5HW4rRq^#-m-+X{wr{VPIouEQSy zRKeLI?oA+|wqk=Q`QiJQ9)csEox9#!usfh{ANXV@Zv2Fk!F!ZKGi=EJ#L3#_h@2Dr z@z0K{_L$-Pg5Lj&Z}(xoM97);-~`)!0|w_WB~%^%1i3C?`SJLqqMFU!abKHcMqQ^j zwyryT=7Q$Bz~WcRQ5h>0&6ssNQ_m~;9tHPDhCbQHm^bD)@wsEx5AjLo%nZ?OQN5!7Q#7#Fjl=Ii&xq~dj=b&jJLy^8OZNb;xE*TiMX$$Y=quoz0Ix6bf_(kMkSXH)DLLIKT0l z7QZ)dp5UZ?Sx9L`1JyRX(0}n`rosv=p3RR$*lfN4QApGt7`G*Vlu$LlQ;XkIKDz$x z9*Uc&kg~n$e(r$pJ?}3*`cV9l5_l=nh(A6qG!&L87Px!a`xxWT6{^pk#&~SN2YxJ} zuMhJ7-QUcVo-P)Z$9!HlWm-SoQvBZ 1654631308 +0200 commit (initial): Added my fish config +f5306476ea72d9688fa66cd538782271979e5dc5 123172a72b60a0f43bf77c22bb7d09bfcbd90cab Hydroxycarbamide 1680532839 +0200 commit: Update fish diff --git a/dot_config/private_fish/dot_git/logs/refs/heads/master b/dot_config/private_fish/dot_git/logs/refs/heads/master new file mode 100644 index 0000000..e78ed93 --- /dev/null +++ b/dot_config/private_fish/dot_git/logs/refs/heads/master @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 f5306476ea72d9688fa66cd538782271979e5dc5 Hydroxycarbamide 1654631308 +0200 commit (initial): Added my fish config +f5306476ea72d9688fa66cd538782271979e5dc5 123172a72b60a0f43bf77c22bb7d09bfcbd90cab Hydroxycarbamide 1680532839 +0200 commit: Update fish diff --git a/dot_config/private_fish/dot_git/logs/refs/remotes/origin/master b/dot_config/private_fish/dot_git/logs/refs/remotes/origin/master new file mode 100644 index 0000000..98a7bdd --- /dev/null +++ b/dot_config/private_fish/dot_git/logs/refs/remotes/origin/master @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 f5306476ea72d9688fa66cd538782271979e5dc5 Hydroxycarbamide 1654631324 +0200 update by push +f5306476ea72d9688fa66cd538782271979e5dc5 123172a72b60a0f43bf77c22bb7d09bfcbd90cab Hydroxycarbamide 1680532842 +0200 update by push diff --git a/dot_config/private_fish/dot_git/objects/12/readonly_09e498fb691ece39d6716ba484d74e1f8caa1a b/dot_config/private_fish/dot_git/objects/12/readonly_09e498fb691ece39d6716ba484d74e1f8caa1a new file mode 100644 index 0000000000000000000000000000000000000000..35c353accf025fe5a632c275c59431546c16ef49 GIT binary patch literal 1059 zcmV+;1l;?00hLzKZrer>?6baNVHBu~SOi++sem68hjxY7k|NnbiZ~EXJGUey*^rA=PZD`IyF0rxt5s!J^!wZ2-u_fHCJWjcS{C1nWoAvG*Nx-lN}F7p zwO^K8ZD=^m*=J5~h5RpqHRTw9|vdf+GO>+Ew+3hm2ZJQb`0c<>3ODl6Me+ediWU7}1GS}|pf54P6d zIR_=qHtUiUW!B;P#tMyO6gW~3OjamtOOK3nMaHlF=O3b*NqRG#j4ueKQ(yYQ`-|y( zo-St7$@}r-il%!W;+X|2mz9)j$62uM36B7I5nT0VRE0N}bb8rVt1JGs1;u-`xW6FP z9w4oCpvtc0=poWIon8wPUUon+(r}0iOFTPMp#*c~nlTRmI3?N7APj=ab;{2auHD^uPT}q>Zx~Wbh0r z(mkWonILrsVs(PFyC6s-(~Smgb%^s5htu=l4V#SVQB@6Q2PHWTC5rO;A&jEaP-8c- zXS6NRSi)$wvnKEn)HVUQEmW?3TXxiNhm_E$2SET8NP99i9FDi+pr9j(*Xd2*Yc{sk zRG*dKaHb0lNvIX_PUyp-*p%a5k2n!4=+KaM9^bGFR9lpq3?#tVP+(VkvPG;w=PEkU zt6DFVhR}6E8-={e^=0EwxvQesS2A3{b{#x-Xav`77dELb$N1Zr3C2PiTHCB!=J$=j7LWuH6CtD(R`LTzI3eO z(_pDq2DwyEdpO*zkI)j+cN(35!v2dJb}CM(G6&{|v^P+Uwv9)m&M7&UtXGWw?AjHx zG`uBifZ=T{xN||r8yF<#0N`(&HTVi78C4(YinU>)y^q_bn@0%%AwYq3Len_vaUjum zco7EU=t=@bRVu+-*drZ7sLLd+8IzqvchkG1qsGqW1#2!L? zz#a}|v$YcPUvSP;#_f*jijaM@UpJjJ_Rewt^D7m;iq%8V z3R>>%fI5FZSWKWm{QgRiqMyAQYj4-*_gQP%$EtW1xnlLm=%wtL-ijNuif#Czh=*+TPM#+}ygqR3O6 dk9Gy&SBYP{y@2n#MY`v9a57+U^Dpj>CxD^P4zd6M literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/12/readonly_3172a72b60a0f43bf77c22bb7d09bfcbd90cab b/dot_config/private_fish/dot_git/objects/12/readonly_3172a72b60a0f43bf77c22bb7d09bfcbd90cab new file mode 100644 index 0000000000000000000000000000000000000000..33402680b2e7aa7ca3e7b2ce80d122affe563190 GIT binary patch literal 175 zcmV;g08syU0j-W*3IZV%MtgP@z6XPUR~?Axu?@6g*DC+Iu&Q@eL`zP1nr$y z>LqBr5WNeaZHQ=03JUz&Xv^XJmGT&=$NCm;2y}qpI*P62BopX@|Bt|ROZ6=@ z&QI};_90%vCjqV)K{u#_3|BiF~U7%NC;Jj8S;wMzAhdR73+ zptj_L=)*NRe4ckkkIhCqUnO?$NKGJZ0FT*H{?}z-{FYE16W(MiHF-IOjp9qEh(WsvJ*hGp3|1n%vT| zgyli1!SW7Z&%#b(uDCNIQ5{!-<>oox9_|Jw-3l&EJs1ov)7fd3fy^0(K5-Dm&lDzH zwP7+757wrzpPq5~usq~?K8@~klQ5@E%u%6VaZtRzDquMgeqPM!DMSh^O9jQT3wiS=3B44r z5GiNDt&c&ZG6dlyRguIyyO+g|QdRd2m(_dM^-&g*7hQ|GQ~R>#iSmu^v<#7N#1@}f z+nglt81F`2vcEK+6Ranf%zh>=dW`rr6x>9H+G^UZi)6p!zfCg7zo!21bl5Gqvq=WZ zu05LSu{>wX(F@*PUn$yN*?}ebnC*V&#V&l_&v|?EhKbSrXWhBPyMg?EeSH4UID|8sd(E%F|*vXe-c{5FUKdl%ion>p`jyT_b}$+HmB8;_UtY+R4gDr9Ys l@qL`u=$m6(TES}Uw$Kq7ALg6i&YTFfjSKen#cyW1pIPjOwFCeF literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/19/readonly_bed86cdaf2f38d1e42f8d093a9608d37fcbd31 b/dot_config/private_fish/dot_git/objects/19/readonly_bed86cdaf2f38d1e42f8d093a9608d37fcbd31 new file mode 100644 index 0000000000000000000000000000000000000000..12a358032d2d465ee3358a34f5dfc4042eb34ed0 GIT binary patch literal 69 zcmV-L0J{Hp0ZYosPf{?oWC%zsDauUFb~DsZt4h;L%Ph{|N=Z%5FDljtv2~O4bMlK) bQ*?6^^SF`|O9~1~lan*^z;avw608@vIK>{$ literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/19/readonly_f3dfa5df898a1015ebab982bf97c7753c65802 b/dot_config/private_fish/dot_git/objects/19/readonly_f3dfa5df898a1015ebab982bf97c7753c65802 new file mode 100644 index 0000000000000000000000000000000000000000..1d2ad98df7adf5f78d2ca604d928f78bb6f06eff GIT binary patch literal 2551 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 literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/1a/readonly_aaa17635b2ce79f9a13a81aed44e60bfdd517f b/dot_config/private_fish/dot_git/objects/1a/readonly_aaa17635b2ce79f9a13a81aed44e60bfdd517f new file mode 100644 index 0000000000000000000000000000000000000000..838db7bb2612d4575df303f68508500c347c53c7 GIT binary patch literal 2229 zcmV;m2uk;O0p(h4a~ro2?pN_wtQk#7dU|x2CYh-`{g7Bntk#h|lAU(Ov^n4%NS<}X zU4T1LOxyq7X93)a?_~56E7I5+i6DU8XR+@3s9;-~RLky&c7d@IRMY$NgkV zVLHx|I25^zYG2TC-Z0dcp(u4p3s4P|b~WHOBBmVDi&V~SGM$mv|A z6B^+MEKGEqOB%#xG|K=@WRif37pcktt*~_ILh31h1DNv3lUi+1sF1&*UXM5E^+37@ zh`m1es_hvpRYS0n#5pzaugUN+$BIej64Ghaq>47|WI`QhId3L&3X)4YdwKNg74?M~ zU5)+p-M@Q>M`tfikKepKetpt=b#y{se_1gAHpbMP=ccQ`&caZ>io;)9t!+GJB0LvE z2`1wKbiw4*1j4aUQ4%XjL72Db$=|77uk9_sV5#xoc0q~dJzKRsmffQKpp$v3r#&xZ zt4^LQ&ih;{v#?bV7FtV{2boSoX$%E{ofrQqLBel`!A#3Rd^xwcMgJwwyp~xaLZH>u z{kZQ4z3+VJc1`ywpl_M@)ryIg-Yh{}P&O#sCj$*k_y~58<)_61WtFvi#-^w8QO|M@ z#F2FB$12`<%Lj`C_R?~)Wb4P5C;5mh{03GDJuJp7Pnb1ST$OsdTKZWULds6Ns~O8O z4FceUpP|Ob=KGJqhxXGJENZ{Q1j&mV`;^*OsJt4bK>kAYeN|tQBjfg(ir>6u1NY%L zTGSlN`#e#e)!Ixk5hm|p-VKP=n@s0@(D~4+6D+F&=jF)2yld?B(=?F+2b_qZp{dY{ zpy*NIJePB+aFmg}kV%^H!I4S>V?DE;2JEc|sfK1_G!)@Tl7XgS7QA6UHKlW|Z6n>A z(I!Lne_6jPEJN)i4bS0&6G=_W;6(?x>W9`@mo6R*9?A^XE>##ygYUnC(~rubDU`2T;+ zeOH|pjx>p+uGeOdtzW>zVwePLIwVA)mOw%ynPfI{7uisY2oXCrVX6^vp&KO%7kzCY zjuqk^T>m*0%Kpm6bh(aDZxZJt0O|2&yAWMRa3>-hfES6Bs4N2>*^P*Ju`!)%iEbw( zC5O8bTRfkgi1%MAwKKZlA^<74gbrfU&Q^&bd2s3kL2JTf)#|L0{_3qda+7 zW|>HP4fwuL?N4Uy;j=9-C(fPS%y`KY?6z#lSgpdYw|?tVHW)uF0f#-X3V(|5D9Gsm zrP?Y!UDxh^Goz(fzY0~)VWR=^PFvehV5m`m*Mu6Wj*-*gZ*BQLlN!kuy*qu?rc-H4 zdNd}+S*ml&L_S)7g17B!SL8$UAS{Z^paiL4SY5Z7)OrA{W%DW zA#xZZ6vawbD9(z$$>Y30+W60dpJ_7Uq&^c!gw^mbB-_I_PSma8GK90$wp17Glh=nw zy`z(#54v^aO=Tt0t=~7)j1>AOFHwsskyN;mcqau?<1s2LAa)tQ7RqEXssS#bo1svI z=u1y&5+_k8G%Ce5$;$)IDv)W1(1rVBYXAvmD|}o!2*5%~KS}jDHJNV(F~CvYE2c;3 zl}Q~b(Z^w62=Yx*5pg>%Rs^r!MQidO;zFF+{u);@c{~Q(+TJ=e55d>Nv~Z%xY|gBA z;R?lhn1>MI_<+h(+jVm~+hU(92_O;|{$99xS3t2R?43TzFn6Xb(APw38`UsWWSxd= zizQ0|ze@dmX~Op8Ji*k<1l*T#kk2Fn8#-{_ za~SI~Y_F8D-ky?w2CPU_>b?gFgGSHwqD~&aA9f<};qYqg^42`u=Rgh5CE>QA^cU0O7Hej`lxt==G-;4q3p)E<(s5ogVb}b**DGNh+Yb&)f!U1e9F~A74Fw3e-B+g_MHVp zLC01==6>eFSGz3le$=#pX4v%{BNcDV^Gf zJ2Qf^-IE1TJvP5I^Q4JAb`8&Dh-$crrKO>^d+CfEh; zsmKb^-Rz3*{z?Y?+)@01nnE)*uF6&cxR&c)zE|B6#4Hak9?ib;!0_PzhlVZv DTjFD# literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/1e/readonly_def783dc4ca73f9fac862acab78eb7edbc9344 b/dot_config/private_fish/dot_git/objects/1e/readonly_def783dc4ca73f9fac862acab78eb7edbc9344 new file mode 100644 index 0000000000000000000000000000000000000000..85d93be8d6f13ba683669aa3cfad54dd3c3ddeef GIT binary patch literal 322 zcmV-I0lofs0ew(QYQr!P?b@dpoGcQIy9ktAqtF8wSsGcQvPQ_`rU^cL$96sqg=#l? zzj@OJYT@m8eA$4*kT8R#42`|mCT0Bccxtp$u|v~XAF$X!%0BV{G%^g-BRd~E2>x@% zs`~mW87BB(B|?~<5j#fBp5mI4F;V8mcxxLzCxp6Ixf^?oTu0U80KXxFgU&uJ^74J& z1e6d4_TmYe0%ZwwsEjn}Q3=i@E2C8!h1z+Bq*%MxvH*D-h-2Rhmn@WZIg?FRC-4KX zLkJisCz>y_vaLf&1~SIh0a)qa1M zI?Db+kyU6~%5#P4CR<(QIIHjWDW%?5#mz*5J%4VT?_>Zvca<}vmPmW4M+iF@!w03-okS!& z6su0GYFK^TuRiTp_weWUFDT$SD@%r)yzG14SO|}@zJ@Ouj#C6PVa3R|gJx|{|G^If z`txBuITk(HT-01a@9|ON3Dn^E4Ea_tkhaHk>QdJc;PXnh)Yk3Q)!;kmd?N4}~h*>o=3n4A(;zF7bQ?nR{9*S|?{$?M~a#_BN0iH5h zx}IHrxh2~bmr>5d943jIF&(-A4qJdF`x*uUfe&zY3wV2X`{7O9o07FPkk!w1Mwt7u$r?>;{SlO^kV>yz z?3g~rDwMYCa#O+3wS)(BZC)a9gQ?hRgK*H?#8bi+OU7y}FQ*fb-_?i#9r_)DHl_8> z`kawcscdqylmE519ax#+q1My@A(0TL0ZB8U_tq2GorT9~(3=W9aj-HS*VcDA10B1%jFMv ziCN4710#7-xgmWyV0c*_q|XXQVVP~Wezy*Kyl$U`i#Q}MvySOZMDZ!ah+L~hroZA| zfyd77#a6LGEbZKIUs5K=tR%q)C_miY;K)u?TzuJ9+e(E8gvUBPqN58~EF#3sDgNV4 wn#oY^2^2oTZJKeWXtezFnGo@2Bd?U<_)fZ2|Gt>MQ9?GCfJ{Q)A1D2PS=+)kT>t<8 literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/29/readonly_e74057d36bf32202a4c95bf6700cfdf4137724 b/dot_config/private_fish/dot_git/objects/29/readonly_e74057d36bf32202a4c95bf6700cfdf4137724 new file mode 100644 index 0000000000000000000000000000000000000000..d936ca72b8de26b81160a57bf08f4fb76f6eb72d GIT binary patch literal 733 zcmV<30wVo*0i9G$kDD+M?K!_<#73o+mPlJLE148dAsv$jb}e|?_~ zOF|cQSIa4c`FQWmo2j&|=);%KpWfV1%erSr&0u6u)=*;|mCc`~^emig%UU^>!Mbs` zgrv{Ccr>}Gb-V^CiGLmPyd9m=R>w5 zJU3La6oY3%mgC%$v2+$A1xv?4IAH?EZz60%rCxZ?K4#-*Xk*?J&~qo@fr3f6?Y9_|X%1*%a@UIfBMXI3+6l5T>T!7>E)qRDEoo`gjhBWtrgYQSh`& zA5=queW2n8W&5a1ipU^=A3LqgeTteyF*c}XB0vgNU;GrAfqDfOIM~fqe&7I>EjM_`>R&@JpOf2V_hforQMT3Lb$6UlY>};-=b~vueOelgBEZ-1Yh7H zJkc*626iLG9k@1mDZ6@!od?43Fj&C*qGx&-EM^)1=)^rHFgPYY2~8Lj!}^oaCskn( z2r-!mVy_CP9EiOE0D>(h$tS82N~F6gQNf5s;lrr;&J10}&f`5z=}u^@l3z)(u=k%8{zoFtAX@!+)Rb9{L24Z_Gw$``A zza{rrM%eX`w&-wJ*heDB|DKMbC#i8p;>JbEJyj!#zK24XTJ&&bHR?72+ZY!vZIcn* znvk?z7jFYXfeWRtmuP9cExX(fP7C0;w=SgXTgDY$g;FM4TuB+B)i~2~LbtUV)hclT z^pYNxw(|bD`oCUX-=jK*glO%?{?#S3IG&n%)$>J*h4XZ-F8f8bWpDBT%fL>DjK048 PIKjb^#EJa{fwoHmnxb!k literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/2b/readonly_3af165d6a1255b9a5098b1f5e1163a11db6cb3 b/dot_config/private_fish/dot_git/objects/2b/readonly_3af165d6a1255b9a5098b1f5e1163a11db6cb3 new file mode 100644 index 0000000..35b517e --- /dev/null +++ b/dot_config/private_fish/dot_git/objects/2b/readonly_3af165d6a1255b9a5098b1f5e1163a11db6cb3 @@ -0,0 +1,4 @@ +xRMo0 ݙ_a!NӴ'* +4(Nk$ x==TV( 4Zg̝ @\ba.T` ْܝx +b\Jd +^;JG%wM2`xմ`7l} %0\Lݫ=[Vٶqis/XF+9F2XVm6[νȧW3ϳ?[b7ӚeðC5Z)pFaYxf7iKro&NswHh%FKbKb1B<4S%)9Q5xyTj%Z=kp1Eo zrT7TDtQWH6Ghw}H|A5ebEC-Es?43eEp;07P*Q1`(&^P0#&TPkt6->OuclL?7GMlqm&tlGE<~9lFH6AxE{2 zwY}Q}o2|3WeFIbn5n5?vyt3Lv8lnXv^$xoDhnO?LbDY^w*w0R~i`EOy6LOaiAW7fO;Sie;UFo^JI zzs~6UAZ8`EUjmYHfJzp7syPTtS33#a-Rq?fSZ*%Z`(K!-E)40fu37Aw&OUu1zUTuK)WrHw1-6if+9x}5sB22l8-4r;+e&FWTK&5spO>rK zA738Gx9<=4@#A*F-H)k4>BsGqCmG%*ct!DlI-O7HEX6D4o;S}Xv≺Vx|&Of}?qG zI^zkSJ8)jSJOjSCzH!gS_cu3R({bu$DkY@t;hp}j zR!Q|!0LYvVeYCwFl~!eCcNJY=J-+d8H_P8||61O~QEhZoC`OAY5i%+j)g6=&x17W; z94*8z;PG@e?ib9z22B{XRaG;LpG;N_$5n;Fb-RWLeF3bGRAiAe7ug(2FwvhK2?67k zrd0(F>R&%@FY)GB@)v6Dx!kXmv0PA#3wM_GSH*HySB>9&>RhOp8jhiB)1_tdnfMw8 zPVlm%60@~8QE4ri-!TyaorJTwqfk++1$#;_y~wYWOqTC1L2sF)$Y@rl)o&!7tFEV57@?1TbnZt;F<70oX3{N zz!*4J{pG+pnZNN32v3QlvliYt?;3EM&4GA?297|NRRK*GI4ro^7>YW>BRTFG#9P6p zH~FTFel&+G_|wn#n@i~Xx(Dqj)K#YOB;>>@G9xo=_m{i_xt-HAJ3?!#Or2$5Tp;lr zuBVG2kWtB?h~J!814~Sm=o^n0l=5^I(sBrpcCRmN!(#wGyGeuW4JTSD8*2zU2&kQ2 z(VOca8?;vXfcIb+tsqXvY|iE(c}(Z?f%LRni?CYjCdOu1NmLQ^Hdn?TNR@j{G?dE1 z-gG^|^G0b*nV*nCK9|(89Qmy)ls#oy)e`Fn$26T3HH27F>5>+4Gs}bkssfFtvc_~L z9D>%LB>&uXcgcIj1*QArG(wd?$7#yWfenZ63-(GoFSd3>4Vvoj^E$ z2bjJ^?<>>VfQ}alzhX2byT)OT6YLB9y5WL>E`)ruSeXWFJ~9i`2UbQmF2sI|t_2xB ze63v3%uR}JfG0^;BmuiaAa3Ti`vogy2<5oBv}h_K)L@2K95hm~4KC_yn8Nst3GT=t z(75@QQ;i8ZHnN^Fh;g@)!z#mAkL9#6zXx~qhzqG&05gK!1!3);j{ ou1bgiXJY^5k<`+C*kIh?KXr!JW_Z(m19i~mi345y24eqs&FEGIB>(^b literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/31/readonly_81fe386b7c57b9e35786a7d1257749daa11875 b/dot_config/private_fish/dot_git/objects/31/readonly_81fe386b7c57b9e35786a7d1257749daa11875 new file mode 100644 index 0000000000000000000000000000000000000000..2e00ffa7cd39c6c78a12c6ef0f9f7072cdba9f89 GIT binary patch literal 332 zcmV-S0ki&i0fkaYZo@DP>^ZL>kV8(Xvv`pM^wftKG)*svZK;%mG{3JJq>YRQD0Jft z#hD@NQP)r$@|QKtIPnQK@92#2M8gcNpfS9G)f&8v0qdPJ_LL;u;Cf%blAaR!r6=uR z`%T~);g&_XscNKiC)&@=368sCn&zw3H>)B&YN=)|6OKT6vum>$2p>;4H=qcSIYtZ$ zPQYA;7uU~xy=ZBG3w2OwjC^?Q7%*@4s*LMF-ylqG(7|Y0D_(SQn9gn47J1wgTxoeS zqZ7PBaV*Mm@rmW}K480jMDdpH(=1zPv5Z1}HKC&({^4rFf-cCoi+;q(meBB%aL_w# zeb=$Qx&14Ya3&s~7^6#wAtP1p;uyST0ktQ!+(ECcTdd4r$8z7b5#0$}yNGE?;CA@@ eado?r7!D_4M!xBf?{_l?_M>%se-ZwisnaCcoeRZ#iI&^wvUkKHTue_E=F8` zj=K;fg6%`s2e1uLEO4waHFOR)3J0ic+p6Ff@CiFDDvT*r?;M%{!9JmZK?NC?J!-51 z*83!o!pp_=70^#LU~GsL2srPA^GH2W#k^Jy9+ow3mZsMl?jCMeF@@8xk``tc&T|hR z2~HUhd(6&y6|CDXX7F%(7XeUv9FcCoBSLMfzNOAZWTCMxX4A730pj_j)ipW~^esc^ z{QYvtP5P=`5EV-T@Nt27y7_R5c3546myly?usx}rN-DHL4_n(uszg~b!Qzaq*Dy#` zNl+eok4>+Ed-P(X%p;I|NOb#-WOxlFX*M8{Pn=1yAz>`wOUK%=jD+l@^j>X+$x=}tm+5Vbnjo`ux@wp}ou&R5%Luh< zN%gq(B^Bn|xI3Hlbg&Kkw9v{BP4h8;U2yPao>x{|w-$O3TTk}c3Af%o?i0>G9FF`> z6s*0pF2FDNIsuG^8l31lA}P;>@#-vs%jS98>u`A|C?o;J(^{DtUoIx^Culw6_NkA7 z0MGjOWJFr+L?F$7u71xh0zLQWw(B`hBB{#+G16`X^EiUpg}j6>0V*9?wO#Nd1KIdS zQyI_)NVt)n7{zCJGww16Y`<8MMlJbUs7Wlxv&T-nUF@!pf^Pztlj)+5J57v`dJ4&W zE4ZeA!bOgaF%9>FEs-~)e=@0g?C${2&sb-QKi=yEER+dX9QOwmk=On`)Kysk literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/34/readonly_63c3fb57f96e7746995d053ae08f824f383632 b/dot_config/private_fish/dot_git/objects/34/readonly_63c3fb57f96e7746995d053ae08f824f383632 new file mode 100644 index 0000000000000000000000000000000000000000..44b82dc959fd27208ea1bdaa6ea10a41ea8f3ba4 GIT binary patch literal 365 zcmV-z0h0cB0c}xTPJ=)Y_L);mC=WIUWBSl@n0NrPz$|QBb~ejktxv`?w8zl)Og)LS zP>Y%p9$>zo`DUiHRKj}waI=6Gt;YbG0u=g97e3&N!A()M$~9OQ+E`2$;Dd480}Tv4 zb;zx84OsIWvD5zZw0pn)?!O{o_W@6=#4di0isN;<*z6C99$dwS+>|Jwr@%#Rv@Uq- z5%OGxX6Vpy?o@|8{Dx}mt6=;nPak7yP(tY0h$mEJDM*YKRV`C@s03${@ldM@h1wVf zuefUO(*)#MfE&6}xTGP?(@3s^+JNbSTLg=);WmQtuV-o4L{3Ssa0jb#uU^%)lt;TB z8Dt<-TvRkj^V?2|ekJ7Fv-)hAU8Y(tFH&n9UWk*AtYdP@{`ks%XBm?(N(ymgIaU^3 zPI8$zUkp@oH^av>d`Nz9Nh(`|Em}*Pv4~Ymkj<`hF^#vLqsMzsdz>V5r+?;-LZ@tk Lu1>xI_pSTGuL`l3 literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/37/readonly_9794fe390c3451a20f7501bb0615944d3014cb b/dot_config/private_fish/dot_git/objects/37/readonly_9794fe390c3451a20f7501bb0615944d3014cb new file mode 100644 index 0000000000000000000000000000000000000000..aef29f191ba35726182a771fe8094429b747c857 GIT binary patch literal 24 fcmbiAyέڤl6T뻤%VbW;YZCV++UH?Uy¬|v4S`T9:TrTl-aG0SR҈nr :% +ZɀAO@a +ۿAQ/XVնGDmGg7`K.4&zt! avI ֌Ov9,m&G _/jK~ @LF!nU;_ ZSQ2GB_uf~?wf08F&Ҭ=L,/%K\ n V+6y6g$D㤊M;9*EYwWzgm52L >|R\\mgPdH]MJ5>A|F{AEnDƵ_ri_̋1JV{&'xB;9ݭ0${+]XLֻ[2٦ \ No newline at end of file diff --git a/dot_config/private_fish/dot_git/objects/3f/readonly_e17fc2a3b34833a957391b1b9ae0e1701192f3 b/dot_config/private_fish/dot_git/objects/3f/readonly_e17fc2a3b34833a957391b1b9ae0e1701192f3 new file mode 100644 index 0000000000000000000000000000000000000000..76f033abcef1d6060ad17f5d4f3c9d8f6666761c GIT binary patch literal 1771 zcmVt0hL#6PuxZj?q~ms$pNvg94080s(_q`z!6X>K|s=0fGnTAhRylB?(X`I zQn;A+qF!2P;S$w;_cr)|YFY?qKcLQt>t10w9`dA&1Dm5S;W zDACA_!QVSkwV3Zz3qFrfo4@Y^zLP<~#a9*Xw}P9=<36NS4ss6L1>kF^ja9klkuzQ) z#T=5PXmlf4k^rCALTacbuQaY&Pdv{pe^sJtpM`3l6u+<1vU_W$wG`z?3G1mGQzaRNy@UKqJzMRnm(y4`9 z(PPbPrgW+sMQ{Dnf=Pw^`(uk>fWJ&GuTDRmlOXY))I2w6Lg^}o>R!%1>}@Y}>l=BxmuLr9hf1RU-eBX|My z1~K|e9_;~anA8BSK(aIkQI)GPOdAaksRC8AjHe|&S9!^+`z~^lVW28FPD{ni;)YWP zLO(FsW5FVoJe`(Itr@`a?2u?{9%Y|HzLt#zZcWA$t@}b6FCwH`YDL)}j3|o9@#piy zk#qGqtTn4W;)tm%ty!QnCfdC_xnYu+axBW5d96STw5lX8R_*}&)dqaMHis^h0l8M#6JeXT;hh7%XH}vy z$!i^SJblK?j^RdxvJ^{X5O}4uNuvUG8YOq8yxL*a!cvIoh0k1yicG}%080j0TDb(u z8D^TPW%H)geB0PGJkX^Q1XNFKrina948>F!85}&2P$pv%#xUAau$_VL>V{Bb3d_E& zE5RT{-)4IYL&R*nKqo+`$Z3waW^)yU-^0)!!4?E+g?o=IYc!>GXq2Y%UeT?jEX06p zXBd{=kUJwI8eQYHia~XiDasyLHcRYIKpOz$B;4+y!LgE%TyL)$`CAwbc_(IgI`fqZ_kd;EQq{vllN}6L^MP}VG zU>8k-B1=VXa4qK{V6iOvB8H)JaVqexrc^uID3H&Fqy%G!mRf;6M0K=G@$QB2B8JyJ zqD(nnwn6F~re(?U3)|u*QVQAgOgikH&#-mGHQGSsnqGS1Nhq7=@$*!!%h_y;Ten{I z9(1v_?6eXwxTp0D?eo{%y;7vP3f$t400Rk!<ija&$qmvPE!uw0SwG92cGs@Z!6yfwFwJm^Sax*^@+bOj3ubS znWiraH%@uZCCg|`dujtY(EliRI$^5+i?#*snGV=WJ~gz}-MQO&`z$?Xw!Vk$M`URj zCh~wxM@j?5a2a0;@q8%|%d5SI}I|1PW^D?Rjgfa%!0@|g&GrvyIR;!a ziJxe|s9nA2e83j2G!AT-Tx7a!b@*MȠתR6P)F'!8 IKz JZܲaJN}=8,"(9^XW0MFQ& f Eo( +-9lϓnyСB] \ No newline at end of file diff --git a/dot_config/private_fish/dot_git/objects/53/readonly_d527d414481eefd6b7a1ecc2d1f0d66f656e55 b/dot_config/private_fish/dot_git/objects/53/readonly_d527d414481eefd6b7a1ecc2d1f0d66f656e55 new file mode 100644 index 0000000000000000000000000000000000000000..7724f559498e17ccc191ff32631e8864aef295e7 GIT binary patch literal 1133 zcmV-z1d{uB0j*YTZ|XJ_-e-P=Z<;OAq%`zpyAvprSW9nFX+S`A@1#kU>o~!?iJjRF z1+*W(EdzMnfIMXO&YK#6vO4O3j0n3om zSl0?M6*8`=#6+_l9Uyp}p&L<_n5PP9fn?1g0=zpTq^MF%aD@owC>Ll;B^@}|RAA+P z;(}p?RGo@AFmTY?6xPD(=^n=cJ>sD8vRDDg9;2|>qA+9xQk`g(Q(G075l!t`@^3^<`sTjyQzUb>3MLB%V`)@re=`+BH$1yG;O z0Uuh>IT4Yvxh3!+Y(OzMS{`a`lMKxpjAGo?Ar~^z{Np#VxDPVEXDO}~144735dstIt#u0gbk|fW|*>dVN(T&=?DhaDML*BRQx1oo;A@P@= zZ$0#L-vNF2uJfU8#M)TxqgEM5te$X5w-=k%+ ze0;uNJWi1pZAD2VDjA8+3qf!ZsV$Z?GWMRiSGdq{w*cuJmWU>>Z2y1+$bXCBFDILO zpw&eO5l+(?cwlTS3`a`@HFVF+2?myG5_{%iLE+SZUdMEP^L(?I&nFw8dh-UG(k_;p zHS#E){2iVq(-jK(2ZI|YV|fITqpGN3AF7DgU!j>T<)&5hr%xzIN2$blDn&KUMj7KN zm18#g&|J46`+i)GN?nzr=6Wnf*-=!KkE>B7>5kFYP}giMN6mDSYOF@8rYX~7J>u47 zH)3UOEXT(YuC@5RE@9=iEY{2UY=eSb09Q8L)T%0Aw?8ng4`@fFX3(ADFlfwwnLohn zT-l@F+^^n*+nEurt!DZK>NdQz!fN^ngpXFZpR8`@v&2OC!6NHlA5VeD*?K)ojL%Qj zVzFA@PZE$Xtb8}STY&VV^IzQbI6Wl~$>MX*IE1+~Wxj)cE>_SvAI{(dbsre}K-33* zeoM=DYKMbUqw`t$aFq319YC6uN0pf1iGNHR9jZP_jl|sOq%Gy3hpTt literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/57/readonly_1fc78e6245676911b3f8da27646eab8a52e0e2 b/dot_config/private_fish/dot_git/objects/57/readonly_1fc78e6245676911b3f8da27646eab8a52e0e2 new file mode 100644 index 0000000000000000000000000000000000000000..f5a1decc0836bac48b7a5e04a1ec8bfd2748cfdd GIT binary patch literal 106 zcmV-w0G0oE0ZYosPf{>6G-cpYR!GdrOe|JNw^d5dEKx%63yQ!Z3I(M(ISRT(N?dTM zl)PeFrIh02#N>?B(vnP|Y+6ofaR!)gtx#N=lCO}RnUj+U(&rHxppfh07aWvYT#%oa Mk_t2j08B0?(b-Eco&W#< literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/57/readonly_d3d132512054a5fe3851771db095e0c4ee42ef b/dot_config/private_fish/dot_git/objects/57/readonly_d3d132512054a5fe3851771db095e0c4ee42ef new file mode 100644 index 0000000000000000000000000000000000000000..2135ea0ab3b9a58015f5cdb3b1536fef660e383a GIT binary patch literal 958 zcmV;v13~A%z3|JN~^MVQ%lLOLoV_ysme9+T?G-tC2SDj0-$8A?R-nV zC0~{XKvHCuRY_HJkw^?MJu}@69ko5u+jno?|4?uZHig_p4KVUOl9XBn?PgimVV<_i;`!{!G2~#XBF!7+Ox*VEU8kOsTHC2+tm%> zbBkO)IAtD-@+^ziaizWxzD~&Esgm?zPd{znZC_L6Y!g>nHWKl)-BGaQSc{-e{i*3p z&jA|`w#5NOQCe-?Ug)#9#K)Mdo#tA{4)ozS*Zp`Y++)`y7)8-^Iw))x#w$u&(1Da< z+>&d)D{a#VBegOdv*&&lY4N@uU0L*|R50Zwpgl3NQK6m(*eytYxqJZhjEJBZ{7V%wh zLZP9Ll)ydoZ3G_;W< zf&HZjIXo+u&^WCc6{m=ZP>YE`$0QkNFCdDnpAtML*e}3Kb$ z@z?M3-o%(g(maf&_kpEu+(GQ?LAP%|>?EIdrUMDTWtTd;*khN~H$u;vV(s}q7W&k& zyZn2do0oNd{l1yySSsv)6=CE})(04y$hY=EgbudFPxN}seM`S6UuS`ql2p@bRjQyb zgnd&1B?|R!2_q3%K9Mb$_DM;W+sUCHE!C{E)E8dA{*a4-yGX@FrsW8>8L;n+-PCbN~PV literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/59/readonly_86a49c9af94660e4c627d5bc58db2605fc63c8 b/dot_config/private_fish/dot_git/objects/59/readonly_86a49c9af94660e4c627d5bc58db2605fc63c8 new file mode 100644 index 0000000000000000000000000000000000000000..cc58753d864e09221e7340315758f405b05422ad GIT binary patch literal 519 zcmV+i0{H!S0V^p=O;s>AGG;I|FfcPQQHW2gN{dg<&r8cpFD*)qPs+?o$;?YHj?YNV zDbP#HEY4sM;(RjWcc$Dq%WH+%OIoh`$@i?1Le`vGQBstcToPZFSQMX`mzEFFb=PmI z@>-+Gj~HgpTfnn(@%N_kFau;=1x2Z4nW^RRX_+~x5FMJ&9l|eXe^z2zax(f`0ngtr z!sRN+I*L*Y@{3Bq8sbYT3!u6@ALz*}Hk93C62D~oMf1IvugWV8Jt_mO|?cy<~~_wjJ$JiSU4VSWu8!1o6yDjRLV{x`Owe zs`__ax%zotBClROR52*6!~p;V7#vW88K8%`>RB;!>zfJ{5k@6L3^{q8>A+ZRYv+o5PN$ J0suV3D5B@$3Jw4O literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/65/readonly_e2cb83e67f2094b2ad9924dd88d0ed2f624002 b/dot_config/private_fish/dot_git/objects/65/readonly_e2cb83e67f2094b2ad9924dd88d0ed2f624002 new file mode 100644 index 0000000000000000000000000000000000000000..6e862feca0672974ac852fd58df6931daa269156 GIT binary patch literal 654 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 K2mt_@2N0<~R23uu literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/81/readonly_56c11b8f2d1cb411af6337007f5f27f9fd4f9f b/dot_config/private_fish/dot_git/objects/81/readonly_56c11b8f2d1cb411af6337007f5f27f9fd4f9f new file mode 100644 index 0000000000000000000000000000000000000000..c88f411d1b3655ed40e5395ba49a9cbc02e2b515 GIT binary patch literal 668 zcmV;N0%QGn0d-VOZxb;Te^oU*)2i*c*foj zqNt4`Me(!e&6^p!9YRa@pT2y4b3^8j*&8c8S)t&EGdWg1Q3}*DW#Nvj$2W0QI@u>C z7dqb4!H^H>r5Y*UEwzWk9m%5|DfLV`cwa z_V$(%OQOxYhr@>6ex(#MH-r!Wwy9y?HO&ouW351%f+5jiwEjdf4=i`3tyW{okt><0 z^OK5JwWtFG<6(LwrHtRmcl3;DGkQi=9l%j=P{jmb@DqC+Vx3cIa)gXWVHI_MTtWBr zvr0&#q>9q9Wnf_KCKG3{2O)@WTo8sQV!+Qjx4BN3$c}TR7f*ZZneKCfd zXBWKHRUv1+bvSjd0UNAN^lVcPwWQw)jgbq71*Um<)}__3rWPluC-zrvtUlF^OKX9z7u#3diITIYsLH%YBu> zB7%Z9>*cOwVsLa084c^(G(Uu{eQ|nM5M63L;nDxU+ChY C0Z7vT literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/82/readonly_4c697b310cd472cd7252ea8ca9d8be09d97977 b/dot_config/private_fish/dot_git/objects/82/readonly_4c697b310cd472cd7252ea8ca9d8be09d97977 new file mode 100644 index 0000000000000000000000000000000000000000..34d7538ce53871875329d466cd575252c5e7a2ce GIT binary patch literal 639 zcmV-_0)YK^0V^p=O;xZoFlR6{FfcPQQHW2gN{dg<&r8cpFD*)qPs+?o$;?YHj?YNV zDbP#HEY4sM;(RjWcc$Dq%WH+%OIoh`$@i?1Le`vGQBstcToPZFSQMX`mzEFFb=PmI z@>-+Gj~HgpTfnn(@%N_kFau;=1x2Z4nW^RR$r*`x>8UC4X_+~x5S_x6WqK-K%%E8`Wh=|t#wwXB!bqVp+p^X@l~_uO|rGh6wM9s z(PLbC@a77s$)|rks3?3Ya+yiRxUUX}p5l_klG0*`wjb-vBWK_EaWio>*FrNf&KqfN zikq=$%g8K7IPdz@qsLYME!eg0TD1Rlv&Hd=HKqTt=qV`5Pfjf^PKDa^_Xj^+b^x(hqb6c)Q$Z(WZmoe@-{^l7}TW(?=M2-FaWpgB7 zN$YGnpuE77z3GIqsjvf7O4AlPaVbQ}%1?zK Z^aLDLo~XynX`6Ze{pPUasQ?F7bY^H^P#^#R literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/84/readonly_fb64fabc28f32f26d6f4de2c7be32d3d5a1086 b/dot_config/private_fish/dot_git/objects/84/readonly_fb64fabc28f32f26d6f4de2c7be32d3d5a1086 new file mode 100644 index 0000000000000000000000000000000000000000..46e6f2661d42b938eb6bea1e39a465ceac625c07 GIT binary patch literal 308 zcmV-40n7e)0aa2>bmPw)$zmtt|C3ve}cVIbC&Di&iaU2y<8ukf8?G|4g4 z3}s28Am2d(MrO*1!I}gRDnT%b>z5# zu>;Hg)=!7}X9l3PFL{}@qk^{PLdg0;g=@>N1#yqi>%SWIhIpz?1>Q=&0)Y)Vp-4NN z>jbA(%F{+!o8RG5(i&=<>tMSpO6SF^yW;%3Ip;-YD5-myM>H%0ITEy{O;D^+osH)C)TKv+=m~dvF&&twzO-7Z6HkYUb3KNsgi70vM3$F3 G!oy`_hLlPG literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/89/readonly_0c69a7209a44949cab061d498f3a21e52e7416 b/dot_config/private_fish/dot_git/objects/89/readonly_0c69a7209a44949cab061d498f3a21e52e7416 new file mode 100644 index 0000000000000000000000000000000000000000..18ad9be36d76d06aaebb1b343f74703181420b85 GIT binary patch literal 325 zcmV-L0lNNp0fkb_YQr!P>^WZ{$RVfHA$|vX>W7&1YGs?)mb#Ki^Y>LlXeDasRWqx3 z?Dn(nMV+5s_F{#FF5>VG&KQq4tzrShaRR3gVz(Eb=Kzn+8GFgHVREDIUr{d^{!CeSxthrk?FE9%PnX57e!p94&QZxWk6)|Ff zVG-(t6;|>4mF_pqQjl!wHbFkTb|j#Z&?Xwe-^7G&(yLHqFDaR#psq@2YZa@6RGK$5 z28O$+sLmT1(=E+Uf#dPFinqMVp-BF<1dL<1fWuMz!_|g3Y=yT>TLeQJ?SOaM`e7jZ zi2K(m!iqF+B*R;#|INrBw6Ii#2LQ;whIYRcB`9+ literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/89/readonly_e0a4ad6cdc0c4df0876cb2befbe990d8199fef b/dot_config/private_fish/dot_git/objects/89/readonly_e0a4ad6cdc0c4df0876cb2befbe990d8199fef new file mode 100644 index 0000000000000000000000000000000000000000..e4c877c1110af008ff1056f3383736b2357c5cf4 GIT binary patch literal 218 zcmV<0044u;0V^p=O;s>5vS2VV00M>N{M>?^)RN5nykdsxdwZWn#!O3CUFVcOu_)BZ z^iW>`OjTZ*UJApM#VZB$o=uu?U{bfxo7mWo`ql+k4Gj#;OiY00!oEDXE3z< zPWiP*dSpXTQX5Fl8__FfcPQQE*NyDJUpSPR`6za4SkIC`i>S$w)i5M1L`NhdHrc-)Xwc^EZls% P@qzhGqeyN5cT7=h#57K~ literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/94/readonly_24aad6647f29e3922a8ec8cd4cad862f2968ea b/dot_config/private_fish/dot_git/objects/94/readonly_24aad6647f29e3922a8ec8cd4cad862f2968ea new file mode 100644 index 0000000000000000000000000000000000000000..61ebeb70b449ab87da0800d4479595bf76b8a4b6 GIT binary patch literal 699 zcmV;s0!00I0ew_WYuqpp?K!_<*lckEtI&neLcoQz?^y6_2s9J?~2waudRWs_)}zr(y20QoK;AK1VZFU%IPNF zS!|;nWL1G{jnU=-rn?ug!KRW5!IucCbqr+pd!ZgdW|h_8edDv$YyaIrW6 zeomn!j1iP9{?j18*(gUTX`s~tEC@Y$;d~{lw^cGDjAT%Rf}X24}@3; zKu+IwKn>?gpiRuC&{*YQWQ`QD2tB)UC-9fXE-PveXXIU|_@`x`WR*a|)r4O@();Vp z&E1Z_IHu#{y=q!M98tR2ZnN9F?AsUqCNG^&x4Y}jF5BIHzu~`>t!ruWCp;u?hIpsT?ZUf{=Mk34oxHVrzaujU@<19N~FA0e2$y7B4A>-`w`Gc0C( zo?3Lza5luQv_TFt&@Cd}=d-?&X`C^hLZKabh=8{BP3wa=_RpbWO(3B}nWI|)S?CZ9 zvX#lKrF#VJK@uCLE{r9HQ;6PE1ZYavvk7n@W{&`WGoG?J!Wwih)ROYp zf_S=8s}iE*sAO451FRvE56Cz?4?0fCY-)qR(na9aLb5y-T>_$kzw1|cc>z=kZehu#iozuY-3=>FA#kC4ytU%W9 zGrz|9Wp0IF=`N-q{ZIv1M(dLeAE$6Q%d8@Iu(}L(Q7Lew!lTe}3H1wP%KbkB!C8#~ hIKSgP0tqL3SY@B`lit_gj2(=r5)a%U1 zo*BCtOauFD_qK)!M?S*l3%#|0sGndo)Zu2eh9JYtblzKcOp>W*D(rp^@yH2_(y9j3;LUlXVZ?*@{4vbc;iCbvb)E9 zc1k!A4=<9@W$xj?8R|G#a4c{rI8(bA?u_$`n^|mG9>=y~T4CoFJuL;S`|m}pn4W*a W4t)0?KTIr9>_~bWXZ!(lpawp3DWe(y literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/9e/readonly_5145378a3ce3b864c9938b1668a82a2f1b83ac b/dot_config/private_fish/dot_git/objects/9e/readonly_5145378a3ce3b864c9938b1668a82a2f1b83ac new file mode 100644 index 0000000000000000000000000000000000000000..22dadc5d134e817a2623c827d4484a716846ebb6 GIT binary patch literal 766 zcmV`!wF6L!R`{q7%Rz_QO01D(SF>9QRK6&RhCpqZkE0L z_nlb3UJ0K&&wT43O$&6~ z3KN5pyBGkzM$oM{tp{BKg+mvf!7UoeIK~LxT8qkq*Y~JkFMJ&zJCw*h7ElU_V3@C6 zmYe~7L*N9-D*Z@G?}J!6)V%aIH#FwU$L;xR%;xod_Ey_w3+^ zHk8_u7QK{o-x8k~>Hr@}6JP7Ls*h3%N0p;q)U6Tb)KsV&R8D!9{#T`8R<738!>>`l zQJ1}C#-JrJnQ{WYj3NShnl`QU({GH`jq#h~@ZVD-chMbNNG72kTC|7FlIx~ns*pm3 zDfVtiqZ=+J^9)U0;C|E1vcJoD%~XX&9_{k;_hK?t`FfMAvuvuNd9XIg*LynG#=Aj) zi{Xmg=h1nXALYaccsaZcBF&yyofvg$v)1c|T)>%>2cTtP25I=TA)R|@K^jf4p?wz| zK`sENJEv=*s$i6zrUVP#9{LBwxsYQ6%pz!sd%&V1D9#-H68s*8?YBv>CKhL8V)B+O zV26O;y~PHpJIgG>60<6U#Mi=IDa68E#iprnauOrZ4XeNVGvqDDqa!9di=u(v5B)KbzD{hY48J_8(`LQfn0pDIyK@~!ooSACJ^1ynJ5Moo_g w`j34j2DU%hiOZ4PH?l7*=sO>gKe;HB2vmkr;}XN44`DN*{8@7e9@u;(Ei5O6w>qzn7V3yY`N zLhDb)q}-Z(W!t)-6_cV`8>Z6Ph7d+6j3yI=xNuH9T~Bf8_Lj=lgT~>!9I6-BdyWszOo&KisLMWE=#gy|M`&(#U@85gx8oH zH};X~TWbT7t~gh%X9<2jt82kVo4^h&1ulRR-mAKPrq%P1yia5-8AeR7$Qjd7SD~8Y zk{z2|n>C$E(?b!#i3*Fd#s&gqV636ex`O-$r2?+>$*T}H{4^RcPv%!E>NV9WkT#J~(NnHNZ@5c=*D%E1^6n7w9VW+5`OI zL*GZKoexxV01g6b)Q2doQBVzF_rR;*r*rb0TLZ*WXgb1Z4^lZe=7YhYx{1%5m$Bj( zQLVGf>BmpgpT}7&CL^NQ?o_ejRtnqc(l9lfH4wkppJw-R-%}<%9nX;fxdb$CWE;|n z)H1sX9{a~t^w`LY1opeKe z2+Ycm9YblmNfG7wTo%}nS0z^2lJXwT5gi~dp!N`d8fcjDE#wcv#2urfobHl+fc}v5 zIOXraIlXZHHt+XA0rR9DiISH%Rx&^V%Nk%`z?*WhCvD=4{RSF-1Yo;67eR|xwoVlV ziH#zR1$bY8Or^HAgB8dhV3V$_Z5Ma+TMH@2=fE!?fBkfId2uxiEmw~Zeoc3KQK?9T z6MWIe`Y=h;C8vtK%ZYV*t&K_scAlir>EzRij!wg^#bqJ_@IweQ8a>E|;fm|1qS)CW zsVy&YMoFJ3Q)C8@vZ#>3MZ|}(&5e43iA*LS4iB%h#CI~qlqUTi)Ddk|_T@k(uPXh0 z@s&#kdKl2-s6R zF618pu=}d602C|#xJ_}MSNDI2i6q~<#pcE68pv7p>L_yugzYuA NZA|{k&wsfl2Quzl6cqpf literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/a1/readonly_5465fdac46aef7635148783ece374d2cc9e6d3 b/dot_config/private_fish/dot_git/objects/a1/readonly_5465fdac46aef7635148783ece374d2cc9e6d3 new file mode 100644 index 0000000000000000000000000000000000000000..df3d81f74307e023ddce5d7410feab56a8629712 GIT binary patch literal 1429 zcmV;G1#0?u0i{@NbDKC2zR&#?p6TZnzr{)T=EkJ;ob6<6CwIN+j7CTcXab0nATRy( zw-Oj^2RlygLsQVcJiCuptHpjS{m$_G^6Zb#opmI1ClE1om`rmjQuC&xPLYa7P@2Y_ zN2&z%QGr7sQjrUp>aU+ZckaFAYI?J9JA<#?Pb+VIcRyZszI=h_Osc%|?QTJ)i`9BO zo4HOT6L3HY=KOl@gI}bt^}We-eY14aN0HRR>wm7v)y@2N=B+)qUoY1fMn3Vb$9JxRV%HonT#bW47eYn znvYKu{~ruS13C=wiJA3stv~Fa+b5-o{R-dT23ZCZ>jsCaz4$Br|MV zmYN7m;*EY8Z@uAmpQo$wx0y%&^nQMuE+*5(_m$g}ozb|)W&DFWSTpnSV&YO0gyqY4 zuZfEU=a6o%h%l9Ev+)p$dFRAnM{}DYCdse-6}3)L%G?U z4ZMw`x0}g&e)l)|;Z48)Si3_L_F3((uKmSgfqBkumbU5#-C?)i9dvuhtUv4zn)qsi z+r{mi{J5EW`^PbsjK+?Rr~)TTv*!5KrfY9GcLOOKT6RR!#dzjEh&+FJ9p?RXb%)ZO zV@-(ZFvRu}8jIh+-NCTiP+-NN2%~wH6%1>Z^sh@B)2K8a^K-DB1Y1@hLdUps@(2>p z&Q)z>7`|3C%gn}t75{qf;mfJUGn(fgwVhMOB0+OJY#+j&OBR_UQpR2Lx}k;xlS
js{4MOjYp62yWvy|d)& zRQn7s6#-8KcQXxfd(6Ik)W=6`6`0$Ya1jI~e<_cG+3!>1uj~!_#UjL4z;dau zGTz5uWsfbH#L~2LTdk)?zh$j+niqA&z0(2CNdF^vyz>}n4If3{3}ElJf3n@rj4!9M z)_!u{bYKpfQQ{6dI6*tfVkleCalltyDT|8`M^v}$f41=>9Iu+6d9*#P2hH74DfIw5 znp1Y29@GtHJK$GnMHVU?qd3VW8ImF1J3U@2**nYv6I$d_7hwq6B;}6ad~ngK$Y{zS zcK61cEl*4)m;iS#DCNPh4a;ainjegXJ#iOP9bN{l)=!)$yvSVztpNgJ2WRy1yww_% zlIlqGpc&1;4Z3W^Ms4s&=gSd#s$)i2p;Vb;IqCW`ZjCmQIzK{{5fcT8%;6wi5AgDY zGyajJ5}LCJ?W<5IdkB>*QXJrL=2w1PKwG9bPbM^W%fYuzL1v(EJWxot&!Lqqnb~qW zRCO6uG&w@{zlBMhjySz+=EtpC!xFGv*_7Qm2Fjyr%Q>lB-%R6wk}Q`fp~7+)m=4-1ZdrQ zB)1hcj+-f`3RyWdv&LjA$JeFYjgJt#E$-sJSvNKq)}PCCyUDDU=pU{ zZAI(-&$m=Oo5O`eh8fZvoOY1{*!#%^63XoOzz-;tAA#-0`yYrc{_zJ5h6gFIlfQ$F j%fXo^Ie>+~|J0H~tDR@P3Bd?GH|g literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/a1/readonly_58b02dd48461b63cf1ee569a4a104cb5f0c7e2 b/dot_config/private_fish/dot_git/objects/a1/readonly_58b02dd48461b63cf1ee569a4a104cb5f0c7e2 new file mode 100644 index 0000000000000000000000000000000000000000..014a8872b11b19c28d4d32778dc0e87288e2515e GIT binary patch literal 691 zcmV;k0!;mQ0ew_WbJ{Qv?K!_7n!vXh zU}u|DpezcOMLwzV3ffwgHK+hhz*VDx;2_AYGHW2wkwglP#Jhrmlx~qEqe^SJB{?nN zqhrNcd_wk6ptfy~3bTIB7P85QX<>B*g>G;*sp-`t#m+zgt;?M>vx%%upJ}y2P3W^p z|EuBh^=uMOv5Ziu4Ye(8eVa)0qub3odT6R{%`}f5VAJJV8B%ZB1+c6~lL=w02(@iR zP-`P&%J|E{ombqKm+nMiMAjhAK?#t@8wFyX}xrgWEDc1pq@l9 zBOx}8j>9`qA+=oIFO;e9aqzJ7cH`pWI8q;}kDu&%38NRH(_Aew)`81^UUZ0(P3mMM zPyL?%%?5#zhZj?xPjU|{%}D#f6lpML1Lt}YS{Fm7*Q{I7s6-4A#!RH4HsAxi>2_H$ zws*=%12}%(@m?&)voX$QC*NNxIo}U34bi7LahepNmMbJj&q=-!j5*1P7(?-s#)0mN zJ`M|dx?9FCrD+{=05 ZcZBEvl(&!H-Sz}5m5CP|_YZI$*2_35T1fx^ literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/a3/readonly_9c536d5cdefff22f699736b0cada8d823bdc87 b/dot_config/private_fish/dot_git/objects/a3/readonly_9c536d5cdefff22f699736b0cada8d823bdc87 new file mode 100644 index 0000000000000000000000000000000000000000..94d2e19d35ec168dc0e05b0675891938bd991a68 GIT binary patch literal 70 zcmV-M0J;Bo0ZYosPf{?oWYEvZ&rQ`&Ey_&R*UQOIPR!9S&PXgu)z8mO(=W+L%}p)V cPs*=I%Ph{&2NCfFMfte}C3+w>02b63d>eowbN~PV literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/a4/readonly_545891a25bc9529f0d7a4eca1cacbf4796aeb5 b/dot_config/private_fish/dot_git/objects/a4/readonly_545891a25bc9529f0d7a4eca1cacbf4796aeb5 new file mode 100644 index 0000000000000000000000000000000000000000..9ec1298ff55708540faae7b9346dcc6424ef2751 GIT binary patch literal 57 zcmV-90LK4#0ZYosPf{>7W=Jc|OD@UG&r?XtEY658Elw?p&rYq3Ps+?o$;?YH=Hg7N PN<$S%%}W6Qv?CU}-n$to literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/a7/readonly_8fd54ddcc25601a2e4aa8afe2ace07dd3ff781 b/dot_config/private_fish/dot_git/objects/a7/readonly_8fd54ddcc25601a2e4aa8afe2ace07dd3ff781 new file mode 100644 index 0000000..c392dcd --- /dev/null +++ b/dot_config/private_fish/dot_git/objects/a7/readonly_8fd54ddcc25601a2e4aa8afe2ace07dd3ff781 @@ -0,0 +1 @@ +xA E]U^4@L3PzzilF쎐y?} %7 @%ȝ=8:Ƃ%ϒӀ8B{̴ 4eu*:n8f,P%ltQ]Bar4QTUEƫ.WPBJ+F C \ No newline at end of file diff --git a/dot_config/private_fish/dot_git/objects/a8/readonly_c3dc43a2df64e340efc8c4ea6fe1559179644e b/dot_config/private_fish/dot_git/objects/a8/readonly_c3dc43a2df64e340efc8c4ea6fe1559179644e new file mode 100644 index 0000000000000000000000000000000000000000..f324238dc19c18581bf406f4fd6df28f1d30ad85 GIT binary patch literal 610 zcmV-o0-gPM0d-TsP8%^0?KxlZlpqD9WFszB&uxJsK`0ePJwY7rY}Sg`PHitFmwr1l z&L%X4uC$WvnRzqw-pt(kIZjVMef%)M4|1v@q}oJO#`4LdQAyYQM94N@<#W|Kos4(A z0jO9M_%kWAca>R8DiiC;&KxJMkOy}2VFXo{IocXWQNRUuxDCvH!<@G0^>zSo7>}QW zT17Y~=aQlhW+k~XjO}XWL&~P#tw~U>gszoa5K0qBCm%M$9{3yJv-NrjPMnNefcp?Y z;}F|6$hs!IjNsC^pvSxG@8_3SXPy5^ zhjsa$QNR>*8tByMsc!vm2@E;bMe9jen9c zA@s-VKB~a*bDwH#g`Jc2&!Z0O*`(UHX)B8`FJV$kEV9P|;lI9KJbt;Eo?l)(e!ICo zdnHhq8Ltoe?;ri+Jz=gUg;g~ns_;#0fO_!}-6Ywr(M}*HY{nQ(#)ZrX&sY|$D*;G>w zQvp*Od26{R6PiZ*GR?l@Ox9D#HO5Ib zJC`mdjEBS+&;_HNRODLYYDOg|sWs51K+)aztD74NT~4-S0*_o<(4O=f!4l^^lv4cE zhM1?q(`gW#C)Ux_1KG2qiNueJu76*zzFl2^eYm+_{kpxsBf$HR37~T{V=qsm3Q2pW zk}KW0yr1Kand+R|^m(yZ+gx|W1$r(XJJ0LR`vs&vKJZHIy&5RkYS#=5|8yLmUlAJa zjRu-$>N=pq+k( z$V=GI5zaU`mv;3CNGl;JLe8N9nr*BZ0EeEsvCisi&ujQN?+3FHv0;I#v%C=J#Lo+rF z7z4LXll4#mKGnONiX>mo_QQ;;GOfs~=$|MxMhuJjG7m~kb}4nBy;A>^MyYA2+4<~b X=*+$xH%|U{-s-sC9?7eJYn`nAuCiH7 literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/a9/readonly_f271f02e104124e4275c9c8699cfefb356c765 b/dot_config/private_fish/dot_git/objects/a9/readonly_f271f02e104124e4275c9c8699cfefb356c765 new file mode 100644 index 0000000000000000000000000000000000000000..20f63fb2f1508aeeb710450071fcec1d5021affa GIT binary patch literal 72 zcmV-O0Jr~m0ZYosPf{?oU`Q*?OD@UG&r>Ka{IU=n9 literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/ac/readonly_30d7ddcfbd415f146de612389eb71e6fdef212 b/dot_config/private_fish/dot_git/objects/ac/readonly_30d7ddcfbd415f146de612389eb71e6fdef212 new file mode 100644 index 0000000000000000000000000000000000000000..fb21bb37d3a20ffd1e4abe75dd3dda938b823fa1 GIT binary patch literal 1034 zcmV+l1oiuP0fkn7Z`(Ey-QW2X54M2VYh>68(rzm@EbEFbK(GdLimu24gO;d>n?yP! zWyeE4{O%~(rZ)t206XUWdiU<>=w)q|$g&8n6bAyRp1I|SY;{eVXJyh8e@F!*}X`ZE1y zfHXyNefirj^!{$~?)LM|`|#i8_4Qj&A51`pV(`PD!xj)Lx3I?efcY(iE@IDN@7c4L zZ;F_jxMebR9H|nyX&O$Hx<}-HyS53?c?v^VGMGmFBMWf0z*l7cB#8@G!B-NiYU@-^ z)42Kca{%UBtH~lfl=g-=3egkX@=+s&b|{pUxi?lxhf(WVQPfy zMZc6G;Cea3`Ij@0%PS@)!XS0A?`Zdk({M+e5E%KP8FL9BH|Fo57W#7)@MB+0Owjjp$#RT7>VZ9F>adyw5;@Ar6!4&Rr&F{)ZN}E^4da1#C zlep=M^Gfo@pf)}0JE`%N*W;srUf43P3{uToGdTj!N>4a(4`pxO{pJW)@Cl>&7oNJJ E!Nm9v_y7O^ literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/ad/readonly_928dc30d8cb0d865612408edc1e99b466bc92b b/dot_config/private_fish/dot_git/objects/ad/readonly_928dc30d8cb0d865612408edc1e99b466bc92b new file mode 100644 index 0000000..d366185 --- /dev/null +++ b/dot_config/private_fish/dot_git/objects/ad/readonly_928dc30d8cb0d865612408edc1e99b466bc92b @@ -0,0 +1,3 @@ +x5 QKGH2ul|,籁KBHY + wqSqkVMi,S +_x \ No newline at end of file diff --git a/dot_config/private_fish/dot_git/objects/ad/readonly_db55c1fecf9d84d7581c08767b7601bac7ece6 b/dot_config/private_fish/dot_git/objects/ad/readonly_db55c1fecf9d84d7581c08767b7601bac7ece6 new file mode 100644 index 0000000000000000000000000000000000000000..44c4f143e5d9964284bdc575ac5785bb8dea5d2c GIT binary patch literal 968 zcmV;(12_D50hLzKZsRr(>~p?i;TXw_6(>&Y+_lIZiazBVnnIwZl|>vysU+pZhx_;r zDVeg*uB!&IY>KPd-Pu{L)~a69Vzqkw<(ht1?_y_3YU_kjmex||Qg193wefe^I1)Oi zoD0z^M^&A3*t4=~l+2{th5hwBBk8CVmV~Nm>qysRWzGo~1!wN+no8#y`|EtZkBn);_uF5SeDX8 zv#l^vtQFg^)0jGAvv7lo~tgPB%vuR zx3u^&&v`r7tx^FEEO`oO+NYmrru(qt8Ro342_@VLCG$Q-pS+-^w$c|^C<1OZv$|>lru? zwiv*AyZ?gf6?`_d$78h4^b%lSfb+3E4QRdHC8$`w^I*#XELvWIi{(ELw;JH0<)k~N zIzhe`{^TCcNudmjd`J9&Gsw=U#kmN6l=8!*kOqf?A4GyO#X^%+!VMZhf9~gjJ?K(Q zh6ocULzJtJBed-W8`k*{wD%vT9uD(;gLZ@Q2s0dH368!KSwa(jKKUcl56@|LJuwSG zSr#TM)2QGvE+E!1E?{=(qSy5p2hi^r2Qd5DK_~SwKA`F`K45m}qi=vQ4xscg4*G_G zhWb*VEiB$NstRvGLuYsu{Y%Bs17jS)>@btqE-{y55$@l6!ZWAR^&?o9Y@|!}eSCZ< qM_3^gWoXf(l;Ow# literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/ba/readonly_6ea63bbeda675e4216951b5dc09ae2f9e9ea8d b/dot_config/private_fish/dot_git/objects/ba/readonly_6ea63bbeda675e4216951b5dc09ae2f9e9ea8d new file mode 100644 index 0000000000000000000000000000000000000000..527d3b5b70e8e19b6e03bd75fa7782016c0c245f GIT binary patch literal 325 zcmV-L0lNNp0fkb#Zo@DP?3}L>BK20<&K2DF~FQphq_FUhQr)p!zB4td$f9YNp3gnlxMAZTh#Pzu`>)m5HWnGJ93 z7#MD%MacU+Ug1bT795YiQM@6_TtZ3&#<82h<0$^&8cPg5$k-6=5G-w^1FJV~9R_lD zyML7;EJ%988D2xC>O_T%^{$Rs6ir*UNz|ipKDn8Nf%tK3%VuD5F3Bk+keWUdTQMAd X!fLwfj~^zcNOH)NjXiz=@YDweg6fz_ literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/c5/readonly_480e6696c4870ea853151c2b3213e4574c8cb3 b/dot_config/private_fish/dot_git/objects/c5/readonly_480e6696c4870ea853151c2b3213e4574c8cb3 new file mode 100644 index 0000000000000000000000000000000000000000..4f1c0fe590dab241c7d5d925a581d9bef2c085f9 GIT binary patch literal 668 zcmV;N0%QGn0hLtSZqq;z<<}LgK|*&zzmhnX{9WI)TyT?b(aGQmK<#fm$uYJhraqS>Ygjg4zA2`N!!k zT!1#fwz9MRiH3-8pd}d| zAc)Ok^?mek1Yzl5)bl)%78?3(LFW)VC*`7M za*6eHp*J~$*7Xkhl@)lA+jSUKxOr13_?7yh^ji7oK2$B1DxSF1&K>4Jl$aE+9E>?g zv5gvXL>N(8=t$$^VHs>(Y&=&D%^h#zT1L{QS<}Tz&T1JI=o)NAxii2VIn~*fD zosMdf#}9;JY%|bZ*!Dj%TC1UiW$e;IWF19=B(?>FDfm`bCKa1$BMU=vg-VA=@dYWX zyB2IG@Q)}(OL6!cg55l!-nZfGX3-_ht|9LkYf@PkmnG7cqilE5y#Z6P(xHLv0+`o& zAk!{TE8lZqH^t3mDKG{E2bCYKUQ=z2jv?$rKo_{)y+MT~D6y_z%)mM$)uJXFHMRo( za0VZOFPC3$SV%25&Sy?CE#uFe6`_fSW8qe5_&zoyP4l#-QG<< z&nQ|NTLI(Y@$eYGqvku}^BBMAp>IN#6F#2|`CMBP!c5pcVaq9>PZL^XjXb~U3TI4` z#NCMSGlZas3b`nR0jB|<3DE8hdFLT$=)>s!t1*SBA2}@>W{wfG3;9LYjs69~M$7gO C`AD|_ literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/c6/readonly_e8c3d98e803da4682ac81b59107aef9ba95f21 b/dot_config/private_fish/dot_git/objects/c6/readonly_e8c3d98e803da4682ac81b59107aef9ba95f21 new file mode 100644 index 0000000000000000000000000000000000000000..6660d46f232ff2830b6b7b7f8c457ad69f514039 GIT binary patch literal 545 zcmV++0^a?20gaQvZrd;nhIh_Wa7}=0K<28uU;)4@LRAECLEI>!Q+B1QOJS$rOaI zAk?lk3U&wrjJ61+cY9zNbTY^?mUvnK=2gx?n+=q$m86{w%apqDc+hw(WG!rkswlO= zywss)HQd9)`pf-ho$nPN9{|38`?~(Ijc3R{4X4SFvV$GV$RG-X^ty?q;c8pEBT$Xd zTJl0Zp;|;_23UZwYRQeawtE2`SpaQQM5PaCAz@xkfPVoAG6RjE8r}u++Ojc?VH4*3 z%-E;H`=8nBR}xP-(gy;AMC`CDqlccN)qBCVF;}dl@R@;7I;#e0cXf3BDHb4)*e9%s zn(%SCWZSbK_qlZYrE)TKFVeV{*ZIwD{$X0UmYS9>u~V&nsxSEMjvX^-EADC4_i!22 zV-yi%JebYnwysCgq&&I=LiS@rQ%pDo>oOLW`k8lDiZ);xX^PPSggJ^+;H&5`+t>(?3dn(`fQCoK{{k-t zN(@2x)0rTyKq7Pv1#Ve7=Nn1lc+|kMqtLq`rk~C{RcBn^)HwKDuVq1u1|60dCL#M literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/d7/readonly_95c5c725fea0baaed65b4fd736a35f617c75ff b/dot_config/private_fish/dot_git/objects/d7/readonly_95c5c725fea0baaed65b4fd736a35f617c75ff new file mode 100644 index 0000000000000000000000000000000000000000..d2dc2ece3940e3a28975e28f63f43e0760fa0417 GIT binary patch literal 594 zcmV-Y0!!EnD*J6f0=vbI7sUn>$U3b}U z*e~2K8Ku}-wrn{Fh~Cp9`AE9#YzcRFZ{NLY22-)N2J+^)$q5TzwRx+Ftv`ZNHB#lZ zi;V0cqEOksFH8+1YX$e{x}rkh78BTMgK*H?##_P;E5>?)SJ@2YcQt81kA8=sO=Z2a zzF?#TRc&E*^1t!62P-i=G@4o;>p;p2MX=Nb1`h!yD6uLAIuoe`EhXncGEjjN!x3_dBi$NZy^h$)(R*yrqmg#B z%#Jqeb&dO08>W@EYhvH9?xj~222-Oa4y{brjrD!OK*zqc-O1X28KG3HL@8?RK?T8W zw&>NOhQ)`?;^SuV06%|xhYVg)W^uj_zHm-zSIT2i-@;>pLlmW?4TdkTqX`#e)>w+n z=dG4PzFfdh1N!6kdhAMY@aBT!Jnl6fwi#BfmH6=W&1&@xUgCu1LD$HXsKSuW{`XiN zgl9#gw9K~OyxxQ=|EABwdX00GTgP-}jkq6%gIuSj_}`XYfydtNrCDOIG^%&w7Nkj= zCLq~3O8IdkgU>thX8Gx{eymkEARL=?#6B%yxr`Dwr=gzqV=h5?AW--Ow<*S%qp^{v ggf0ZYosPf{?mU`R<#&Mzv~Ps=RM&`r+I$uCMx(alZF<4R5}DJUpSPR`5& l%WZetu>4Efd0RRpk8wQ1@AwvKF literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/dd/readonly_4e9523ad3293e2009b9ea00cb9a3f782775630 b/dot_config/private_fish/dot_git/objects/dd/readonly_4e9523ad3293e2009b9ea00cb9a3f782775630 new file mode 100644 index 0000000..4b9ab98 --- /dev/null +++ b/dot_config/private_fish/dot_git/objects/dd/readonly_4e9523ad3293e2009b9ea00cb9a3f782775630 @@ -0,0 +1 @@ +x_K0}8tA(/ |\Ȓ۔~xo?ZQC {2%n&hHdQwhƢ?‘US섕T䢋$୨P/ DM%-pp ט}a:vkrm?qz Klb+o >"/ҿgt1{v,">`i \ No newline at end of file diff --git a/dot_config/private_fish/dot_git/objects/e3/readonly_ef59fd3e0cb9331b8e0c0a6ce5d17663f0bd03 b/dot_config/private_fish/dot_git/objects/e3/readonly_ef59fd3e0cb9331b8e0c0a6ce5d17663f0bd03 new file mode 100644 index 0000000000000000000000000000000000000000..19f140f28ecff1707a901e3b436622fb5885cee1 GIT binary patch literal 685 zcmV;e0#f~W0ew_WZ`&{o-MPPlNHaJEqGH*4Dv(1r^iT{dh9t)Uh9c9oR$EdXMU$3eOPaIH=A9)yZd&_pOkGHX^QOPE$&!;?#EE0 zMKZ?va6aM&gyo>i!4+QM$7D}^?7VaiJ-4sn8tDUbgqR*7o?7(Juo!@9ZIFG2-ig$^ zi_^}Mn{vu}4yE=KAVJzTxHiOI@1J7=nm|H@vOvECvd|$IWGnZkk^T{M07-0^lA0LD zjS#)7h}g7Vou22q8emb7 zd_cxwf$Jpu)8q!ptY@)P7P9%Vj4}`o{;vMP%L|~Y_`nxwB7?y%*+%g)?Z_RA%WQTk zO(6zP(P>lIZav%E5NvaObsc4J(r+FIewyCgy3i~C;w+Ut)(N?RbCzsqITd_@4^u;U z>c+W^HJiWTjFO#>#+Jot5+Z8S@Vx7S4wOAi6}g(T6~b77jSJ7bO*6^;6#{1b8-w(N z5@8vwCmUbR;cz}#O8($FGT0@xz>yS>LZ^$RzZ53!|CtMBH3ndQ$9Dr{O!hF#p7KQZ T7XOS?RcO6D3Re literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/e5/readonly_f8e9fee0d547af4d4ef1c080e03111e320f7c6 b/dot_config/private_fish/dot_git/objects/e5/readonly_f8e9fee0d547af4d4ef1c080e03111e320f7c6 new file mode 100644 index 0000000000000000000000000000000000000000..25be1f65e888b99ac37863b3d7a069c04b0079ab GIT binary patch literal 1158 zcmV;11bO>-0j*YTZ`(Ey-e>=ctE^4H098)Xc7qKM$Wpg4>ez;pq8%_GU?@uFCXpOT zxpA-`zoSSg^3d(eW*C<5xfedXJ0A5=$p<)pefH*?C;7;823&9p1vh*66O3#$Wg}jI zvBWk8xJkLNOcQGPfsFt^1rvv02pO|9Q(6|h^2#w>$+{*YH(({`MqqgS_7T7^W4IIs zC=pOf*fY&WZQL>Bl9=$9RGb(vO)lq&gOkpt@)lmt9?3jmPb6u*JXRs{NFc5DkfxmC zQYTsy)Lw-qrIw9KbFLY+Qgdd~f@@<>ocfsL>p|-fv_A3D0o|RTWykNI*ZvxDs~PL4 zyZ?PcN^S?cFDY_G2xuh*!$3Jxb`NJm3MKa@uJ9)~Ceyi+JU@YHh=_$nZF;iFQhB9n zuzxUpC6>D;2J77uq-01CrFrr|Fphe*$TQ!IgN@L9o;>vydsgwsfp-5mPg-n9bl+pG z;~!NR0Uuj!VW3;XkW04{`a^nM0IWXAGn4jm?L&sO>H&EDPr@a zSA@)mQF1hmVR$5aHL`F>U!MYtc?7Bk@d}FVt2 zQ_Mwg|1a$ucGC#MhR39pAwke3OB2%__@WUwilqP{#69&L;ifW5knFMxN?=9=U4< z(uD(~p6Tl9{%W&YUEU$pt7q7ycC)>^g@}>Mzr&05Vh71^V|f1*yv#6irm6;~qsc_` zI~KE}+?Hzf@jWE@G}olewN$fWT5ypwJ>%0C?aiF>?`QS2wyKtmuroO=o}^-8rlv}> z17}}S+whs5w!KQ#%uG$ga&BjKD!j{K%Infu&Yq^EvGTX3#sS>1xZSRncaR(s7`uDh zs0t_j2X5^V4oq8))v1o7*8Jzy2ke~-zxAu@-Lvp^>4aBav-pg8o1A-Lw|I}j4_>&w z+`U~b*DlIykKF!pa|+xnZ*P}t=kuet*zC5~mur;Iy!>wYZiCXB;J>*VaQe9Zu-<$c z7^m2GF3s<-o|_$3F2+5?NIgczF%pfDU)<4(1DiOIi2d5JTQa`ImEy2~U%Lz5#U4*y zP0lA5le5{Y^NYZ?v$^WbtP=cxjBBSjomlWuwrydIQ0|bg%SwtvOAt}4+*LO%M zwAC1C5T7h*A2YK%+i2U+=exU4@2;t5J+h;2GBPM@sI!jh?oU^H7Ebncs~pQ<-Aux? zn=gA6Y9BxFYXQ<^fB)l z=(UsZK*1#3ej3<>TRJjHt2Oi>p>?Y9^wAS|*%a@U*@MPGI3*hViMj>HK$Kvi>QnR7 z$8$(5>jdWp1rJy0gX$=-4^;i2;wCDSA__?0=Rqs;kfIh*j18)r3A(t{4>Ow_M1qR3 zSwK~^v8afrH646Kvbm7YXI`nAfoI(H;FhakWQr*uphumC)nozKQ8biFyz!w z3@bIW*7lf-vFt4s<%w2F%4027XmKj#%~`8*9sjndv2GCh)b80JA>3J!WrJ9QU)Hw! zS6j#XNedVPf@io0PxPzDiQ$B3kMkw3<g=<2(c^?#NHH6IS~5-00@?sq+F;*D3R`_M1w`FDj#Oe_huRzb{@}Z zO7}v;N`50r&SkT3-0IhEg0Y*~X*ux)@eq7LI}Zno#vZn~FHm38U(5WOs&AwfEY+*F zUC#}~_As{Ax5U3Ck1!+Fb(dVU+hr2VRIBglUV4%mXCyiR2n8;bJ~vTrd|7sRIXD@>@n~I0*SC%q-h@&idt6Bwp|v>E zazS^=8qFp#1A0x5MqBytzxu!4T;HQQhlFUmjpLh37I8c+jcVkR7Mb&Mu1@}<*0MKc Yz{+5qb_IQX|7C##lf;Sr1=p-qm8?8y{Qv*} literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/ec/readonly_24f73d247ccc545d9dc0dcfc7e805060bada79 b/dot_config/private_fish/dot_git/objects/ec/readonly_24f73d247ccc545d9dc0dcfc7e805060bada79 new file mode 100644 index 0000000000000000000000000000000000000000..5c646193ba0343b1934400188cca7bb833fae2b8 GIT binary patch literal 962 zcmV;z13mnB0hLzKZsRr(>~p?i;TXw_6(>&Y+_lIZiazBVnu9<~D~mXaQc22*5BKpM zQZi+q4OcZ{MKo8lyR)-gtyR6I#cK8V+co{E-o?(6)Yb{5EUl%^rQTR7YU6)p<4EY7 zaxO%x994DBVb98{Q8JTm7xvfljHIJdSQ4tLts`BNl{qI|6r8!MYbu>vcje^Vb02$P{OTHGVfFL$qQ;~D}8~5BH*?aYe(;> z5Q5*LX!+fQzT7M#PLuNt)o?FIenC`wO4F0C&NVWXn8@DlZ1fe1T6brMB0^9MaZ zI#CQWT433$VMdSrqN~7+p0MuqFry_FQ4lj)VHp(>)9@4_;B*N1jo-3@{8fdkrMJw4 zy9Re#w9Z=wD73FLwVGiEE3~a>269e`j~UR-O{mL})4w0Sp-s9HMa!;JJr$>LJp<># z76Vvs_g_%Gg3pHbc#PJWUIOe3a6Y!D0j;;Y1QpA79&9;)MaxTYvHa)ZRs&qLoOH)j zC&<^rpWMSaDU@N6?}$He2H6?4I2XZ>Qht~e(%^9LgGf-OSZK0JxIrW6&;2~G2VIKE z5MknEh;sFDgton4!#W>=_Wr}v!(qN}&~7juVTOY&!O?djOK8H+Cx2x6;W_QDCuSii z%fe)38WlXo1;jeW1*qHhw&w68W=#o}eAs_>#UG~clZ_wPL+xKru+5v)r#(k1)GJ3f?;;_u~% k_mVKlf6?qE)4mbHYoQhX4=|?BMI8fvV8A41(Q5N4hR=q;QeNBETCw_hLQkQy4vR{_mTZ3TVbKF zf4MZ9JU^TMD5@&lQ}@EFje&G?mv6S(H3?f(#cknMy4rU$LS`s`byJxu-8K(vRV6R@ Cx?J-B literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/ec/readonly_fe68ec80206b0fa55c0a934f5c5ab78d2c7a37 b/dot_config/private_fish/dot_git/objects/ec/readonly_fe68ec80206b0fa55c0a934f5c5ab78d2c7a37 new file mode 100644 index 0000000000000000000000000000000000000000..26f9705dbe2213496174dfa5f2b6d00fafe99f9e GIT binary patch literal 1052 zcmV+%1mpX70i{;kP9sMU&9lFvgd)YO#Umvv&*_>Tz#9{-6hBz*+o{{BQ(iW9Nk4t~`NMZrYl@()p+)tjS`^k)deu5!EVU`M zS@}iH&4xy!l6~RyMy?*roHoHzsF~z=&EBgOQ)M0Phsh2Ggbx?BrGvY{&3t^C{~}xa z@6)Hz=y-Z@F}|D}efll`b1~07Bu1)r{Mmp0CYt0Y)Rj0myb>r-mYtXQ1gh>He2p`6wm=Vq_%ApyNi!PG1ZUG- zh&~BUS|`>vYLrPHM{+rqOase#3>X zwvk&J3bc<@(m>K0=rh!^jGUH$dtPTCg^y1DZ!5;qgKAptJBAawV7G>LRWU!hRB>(`zLl3s zX-KrLXrsVEXotBsQFoF8ipKI2DvydQBYr}m6yA8fioz2fV>Hm9?gc0lWk*D}D-V6N zkFgUZwWS3+jSanPyd!!(#V~^}G^!CgI$5S%3_lJ&1h4(>;FHPmqyygOe~d3?=lNXR zoFw`0^FvDrdtCJG@}f>a7i~HbxBt~m{c-HdTfvS!b@%;SIen#LM|VYq7@iyL=#KA- zhqwJJQ*$IAlE!?K%_J{Ja(RrBtX7R(W2Vag2C$*jRmF~x#8ljGf{jAj2_Rxw#d>ry zhE=^285YmVbTk;u^PI+ww_@bl5}L^w3}DPYh2a;v!TS2Y0Y)BUFrq@kAKytO;_O}E W%EGZi6JR?V91Pf$gMR=E`4Z%dPzP85 literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/ed/readonly_a2453c89124f483e78edfc93fa72503122af1d b/dot_config/private_fish/dot_git/objects/ed/readonly_a2453c89124f483e78edfc93fa72503122af1d new file mode 100644 index 0000000000000000000000000000000000000000..ea0b5d109d12d3c589c27997808aae97e50a55aa GIT binary patch literal 949 zcmV;m14{gO0ew}$ZsRr(?KxjDu+=&#Rz}waTA-+N>tRnVy4#|M1q50e#cU-~A*m?I z?*4lpNl}q(XMHdrY32>*&6~$VqYt#({ruB6Yx;1Mmg-)WPHIK`*m3DBxg%4pn??^( z-H{tK33J!CtepMjYCS#BTiTQEUDrF(HCtXBvlPyRndcJdbS=yG!34N6o-cGywdJcB_&#%y`y<*}G5 z;`FJ}Jc6U8!Z%cmZTjc%CB4Y=ifw6R7YJOv4~U_w&hUfef$WjzU2W-4?ix{YV501e z0j=cpf2?K%af3myrzVoIU0o4=vL?qCEI-pKJ3UJb@nM~j%GI>_)_znQ+Fb6{@O>{0 z2;5Brwc8Edez&^{wLDO%+ZGdQq+)P0k!QFQs4#^YcD+&16s`SV%R*U<7ju=>1dbQ< z$M5go{S(qyRk6&PetRsNzKVQ6j!v7Wsc)){Zt1{Yhn?)e2ifdV*6lJ>VA%doJZ30y$vBFx#zHWmJH zJEu3DA6q4;?aL#Oonu3Tc=C1lQM8`S6erXZzJxRR?SWz^HAbCbs~o0zN3C!`%X84m z#!Udfo;7$AdG&Ckx{9c->*X}Zk9qibGt%;xy`)PV9BR%x-Sv%d@P_9aRNwdDYfJB- zN%+N5$p^lZ%8sC6?*(OV$Z)G4u=y^|)#n8ivKk-)qjOjStjow+Y}$vVMHu(ki!*fC zKx$Vi1=F4IK1SCnZ;uEmU6zQA12iG*R&bUHmI`F!8V{wGZ+bd`zA6Pj;v-_QBUDQ z#OI~lUv9P}oz&=dhJfX=binx8-?Z>Z&rIB{4n~BM-XR3mJY@&9zd(FtfgzG4_!rfB z@qnTe2Z8N}iyCY3{pnInr}e4+H|GAU;iW6Dw(L`uPIs~{Ulz&SjNTk^;{PeyYfwuh XTonl<`qXrJED1TgpM2c^um|Ns?49h- literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/f1/readonly_5a4617f3ddeb656946f6dbf7bfd280a8821a86 b/dot_config/private_fish/dot_git/objects/f1/readonly_5a4617f3ddeb656946f6dbf7bfd280a8821a86 new file mode 100644 index 0000000..4b549b6 --- /dev/null +++ b/dot_config/private_fish/dot_git/objects/f1/readonly_5a4617f3ddeb656946f6dbf7bfd280a8821a86 @@ -0,0 +1,3 @@ +xURAj0 9)C +;Xβ,}|M!x4K#b>=p +g 8 R.,S4a5CY*{@Hsp dPˌ(GC7/EwĞ#O8u`WXJ^f빐0=sk!3oݐ 8W!p1'RiOsk+xwvEu^k.[p^tZzyL(:@mz UggmF`\yjbzM ];YZaޗX]ە#>c*ϣYA3P/ẑ \ No newline at end of file diff --git a/dot_config/private_fish/dot_git/objects/f5/readonly_306476ea72d9688fa66cd538782271979e5dc5 b/dot_config/private_fish/dot_git/objects/f5/readonly_306476ea72d9688fa66cd538782271979e5dc5 new file mode 100644 index 0000000..7a95515 --- /dev/null +++ b/dot_config/private_fish/dot_git/objects/f5/readonly_306476ea72d9688fa66cd538782271979e5dc5 @@ -0,0 +1 @@ +xA @Qלb& Kb -0i"Csj`thϞ,j)l11sѹQmRѩʧD ˰/5UI>=|ўf;^਍Wĩ;17@)1 M# \ No newline at end of file diff --git a/dot_config/private_fish/dot_git/objects/f8/readonly_ae37599bd8f8d961ab0aa1361609d8664621b3 b/dot_config/private_fish/dot_git/objects/f8/readonly_ae37599bd8f8d961ab0aa1361609d8664621b3 new file mode 100644 index 0000000000000000000000000000000000000000..ceaeb2658d436d37aa0670b76229236c8c4ee109 GIT binary patch literal 736 zcmV<60w4W&0gYA3Zrd;r?KxjDkd4?m$cfXUhX(eg$e}-e|jl<=d;*uZq^lpsazc_)%mYg_BiQs*w30LhB(-bM(@w zCKe?Ru>eAaVB65N0c-(O4qf>I?y=EAVyuv@b7%qt`-ld%Dpc{YM~yOI4u#SPjR=)r zBxgV$Re-S};yHXy8{s_C1caaF%E9_F$LCAaY7N)x^JQGZ%TQJpW~T|fgF8Z021F0r zSg(S0yTuIF=hqPfwZ{R>Ba!JR%;In`A6{~|349XXgS4hlW$Q!~Mp|v%q7z{y^j7RV z(T2i0(xR7=?pxv$OFiH-X%Z^imepQL<*9Sji>7T4lWS$zl-}GlntO2)u^|%`ZdaW( z{aq$2VM@%i=>E^&vlC0FoW(;3Gus3|Onfn1QCtH00Mk8xe1fatEwh>&Ws_#^tWTX@fL>tW;Ero_}qZ`lFb*?8$wj_`;07(-HYYins++8Cs27 S4F48{EtCmoT=xg*v*9P;?`cN> literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/dot_git/objects/fe/readonly_e63085a64e93240d08f2eac27296f1cd5d92b8 b/dot_config/private_fish/dot_git/objects/fe/readonly_e63085a64e93240d08f2eac27296f1cd5d92b8 new file mode 100644 index 0000000000000000000000000000000000000000..4613f28515f7d0f41c10380ca2dbcc2aeeacafba GIT binary patch literal 1004 zcmVHUlF5cV4d%N0eyN8$eclSS)tto=C26p9Bx$`JoQSGF1SOn|N zkmnM8;Zzf2vOnW{2o*xnI)^5}5W9vyu+gHx$?IT0qJfhNRs7ncrjt=ZsWd_(Lgm-l z70~CJuzYaJ9P;8M^TuJR9)bQG3B^Mx;msCauV1b2pmet8Hw_v|@vz=Nu;5UOppM|HL$?!eWRHbtJ%S2L4?;V_JHtb3`EI<0y(m6< zEqq0EPD*R2(R*l{$bqkIpwOQycSNS=kuDPYcahDM>ne5l8h$Tl^rDESf=cjr z!3jkTJwPOP+qIGOXdqPs6jn;AX)ma{i#TJXDxqUmi%?WV>!DSo5o%WU^Cp8uPk3C+ zix&{kQ;>vgE+EO5CCqXoVKl7Ek?xpDJ}}wNoe|k37jPNuuOR`9s4E6s#bi96cH*hGUx!3cy*g#Q2-L#}ZB9eVrEp*#QB~h+NhrYE?p-x^WIr20*q7w&J8l{v-R2<&IiDcOZ zOI{)!YC`R#AIC9kc(`T0bmBC^$iW)QurwRv%M1C4%)j8;b)sUE&tC$UELgh}= (3, 4): + os.set_inheritable(pipe_w, True) + command = 'eval $1 && ({}; alias) >&{}'.format( + env_reader, + pipe_w + ) + args = [BASH, '-c', command, 'bass', ' '.join(sys.argv[1:])] + p = subprocess.Popen(args, universal_newlines=True, close_fds=False) + os.close(pipe_w) + with os.fdopen(pipe_r) as f: + new_env = f.readline() + alias_str = f.read() + if p.wait() != 0: + raise subprocess.CalledProcessError( + returncode=p.returncode, + cmd=' '.join(sys.argv[1:]), + output=new_env + alias_str + ) + new_env = new_env.strip() + + old_env = json.loads(old_env) + new_env = json.loads(new_env) + + script_lines = [] + + for k, v in new_env.items(): + if ignored(k): + continue + v1 = old_env.get(k) + if not v1: + script_lines.append(comment('adding %s=%s' % (k, v))) + elif v1 != v: + script_lines.append(comment('updating %s=%s -> %s' % (k, v1, v))) + # process special variables + if k == 'PWD': + script_lines.append('cd %s' % escape(v)) + continue + else: + continue + if k == 'PATH': + value = ' '.join([escape(directory) + for directory in v.split(':')]) + else: + value = escape(v) + script_lines.append('set -g -x %s %s' % (k, value)) + + for var in set(old_env.keys()) - set(new_env.keys()): + script_lines.append(comment('removing %s' % var)) + script_lines.append('set -e %s' % var) + + script = '\n'.join(script_lines) + + alias_lines = [] + for line in alias_str.splitlines(): + _, rest = line.split(None, 1) + k, v = rest.split("=", 1) + alias_lines.append("alias " + escape_identifier(k) + "=" + v) + alias = '\n'.join(alias_lines) + + return script + '\n' + alias + +script_file = os.fdopen(3, 'w') + +if not sys.argv[1:]: + print('__bass_usage', file=script_file, end='') + sys.exit(0) + +try: + script = gen_script() +except subprocess.CalledProcessError as e: + sys.exit(e.returncode) +except Exception: + print('Bass internal error!', file=sys.stderr) + raise # traceback will output to stderr +except KeyboardInterrupt: + signal.signal(signal.SIGINT, signal.SIG_DFL) + os.kill(os.getpid(), signal.SIGINT) +else: + script_file.write(script) diff --git a/dot_config/private_fish/functions/_fzf_configure_bindings_help.fish b/dot_config/private_fish/functions/_fzf_configure_bindings_help.fish new file mode 100644 index 0000000..ecfe68e --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_configure_bindings_help.fish @@ -0,0 +1,43 @@ +function _fzf_configure_bindings_help --description "Prints the help message for fzf_configure_bindings." + echo "\ +USAGE: + fzf_configure_bindings [--COMMAND=[KEY_SEQUENCE]...] + +DESCRIPTION + fzf_configure_bindings installs key bindings for fzf.fish's commands and erases any bindings it + previously installed. It installs bindings for both default and insert modes. fzf.fish executes + it without options on fish startup to install the out-of-the-box key bindings. + + By default, commands are bound to a mnemonic key sequence, shown below. Each command's binding + can be configured using a namesake corresponding option: + COMMAND | DEFAULT KEY SEQUENCE | CORRESPONDING OPTION + Search Directory | Ctrl+Alt+F (F for file) | --directory + Search Git Log | Ctrl+Alt+L (L for log) | --git_log + Search Git Status | Ctrl+Alt+S (S for status) | --git_status + Search History | Ctrl+R (R for reverse) | --history + Search Processes | Ctrl+Alt+P (P for process) | --processes + Search Variables | Ctrl+V (V for variable) | --variables + Override a command's binding by specifying its corresponding option with the desired key + sequence. Disable a command's binding by specifying its corresponding option with no value. + + Because fzf_configure_bindings erases bindings it previously installed, it can be cleanly + executed multiple times. Once the desired fzf_configure_bindings command has been found, add it + to your config.fish in order to persist the customized bindings. + + In terms of validation, fzf_configure_bindings fails if passed unknown options. It expects an + equals sign between an option's name and value. However, it does not validate key sequences. + + Pass -h or --help to print this help message and exit. + +EXAMPLES + Default bindings but bind Search Directory to Ctrl+F and Search Variables to Ctrl+Alt+V + \$ fzf_configure_bindings --directory=\cf --variables=\e\cv + Default bindings but disable Search History + \$ fzf_configure_bindings --history= + An agglomeration of different options + \$ fzf_configure_bindings --git_status=\cg --history=\ch --variables= --processes= + +SEE Also + To learn more about fish key bindings, see bind(1) and fish_key_reader(1). +" +end diff --git a/dot_config/private_fish/functions/_fzf_extract_var_info.fish b/dot_config/private_fish/functions/_fzf_extract_var_info.fish new file mode 100644 index 0000000..dd4e952 --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_extract_var_info.fish @@ -0,0 +1,15 @@ +# helper function for _fzf_search_variables +function _fzf_extract_var_info --argument-names variable_name set_show_output --description "Extract and reformat lines pertaining to \$variable_name from \$set_show_output." + # Extract only the lines about the variable, all of which begin with either + # $variable_name: ...or... $variable_name[ + string match --regex "^\\\$$variable_name(?::|\[).*" <$set_show_output | + + # Strip the variable name prefix, including ": " for scope info lines + string replace --regex "^\\\$$variable_name(?:: )?" '' | + + # Distill the lines of values, replacing... + # [1]: |value| + # ...with... + # [1] value + string replace --regex ": \|(.*)\|" ' $1' +end diff --git a/dot_config/private_fish/functions/_fzf_preview_changed_file.fish b/dot_config/private_fish/functions/_fzf_preview_changed_file.fish new file mode 100644 index 0000000..a13219b --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_preview_changed_file.fish @@ -0,0 +1,49 @@ +# helper for _fzf_search_git_status +# arg should be a line from git status --short, e.g. +# MM functions/_fzf_preview_changed_file.fish +# D README.md +# R LICENSE -> "New License" +function _fzf_preview_changed_file --argument-names path_status --description "Show the git diff of the given file." + # remove quotes because they'll be interpreted literally by git diff + # no need to requote when referencing $path because fish does not perform word splitting + # https://fishshell.com/docs/current/fish_for_bash_users.html + set -l path (string unescape (string sub --start 4 $path_status)) + # first letter of short format shows index, second letter shows working tree + # https://git-scm.com/docs/git-status/2.35.0#_short_format + set -l index_status (string sub --length 1 $path_status) + set -l working_tree_status (string sub --start 2 --length 1 $path_status) + + set diff_opts --color=always + + if test $index_status = '?' + _fzf_report_diff_type Untracked + _fzf_preview_file $path + else if contains {$index_status}$working_tree_status DD AU UD UA DU AA UU + # Unmerged statuses taken directly from git status help's short format table + # Unmerged statuses are mutually exclusive with other statuses, so if we see + # these, then safe to assume the path is unmerged + _fzf_report_diff_type Unmerged + git diff $diff_opts -- $path + else + if test $index_status != ' ' + _fzf_report_diff_type Staged + + # renames are only detected in the index, never working tree, so only need to test for it here + # https://stackoverflow.com/questions/73954214 + if test $index_status = R + # diff the post-rename path with the original path, otherwise the diff will show the entire file as being added + set orig_and_new_path (string split --max 1 -- ' -> ' $path) + git diff --staged $diff_opts -- $orig_and_new_path[1] $orig_and_new_path[2] + # path currently has the form of "original -> current", so we need to correct it before it's used below + set path $orig_and_new_path[2] + else + git diff --staged $diff_opts -- $path + end + end + + if test $working_tree_status != ' ' + _fzf_report_diff_type Unstaged + git diff $diff_opts -- $path + end + end +end diff --git a/dot_config/private_fish/functions/_fzf_preview_file.fish b/dot_config/private_fish/functions/_fzf_preview_file.fish new file mode 100644 index 0000000..eaa68d0 --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_preview_file.fish @@ -0,0 +1,43 @@ +# helper function for _fzf_search_directory and _fzf_search_git_status +function _fzf_preview_file --description "Print a preview for the given file based on its file type." + # because there's no way to guarantee that _fzf_search_directory passes the path to _fzf_preview_file + # as one argument, we collect all the arguments into one single variable and treat that as the path + set file_path $argv + + if test -L "$file_path" # symlink + # notify user and recurse on the target of the symlink, which can be any of these file types + set -l target_path (realpath "$file_path") + + set_color yellow + echo "'$file_path' is a symlink to '$target_path'." + set_color normal + + _fzf_preview_file "$target_path" + else if test -f "$file_path" # regular file + if set --query fzf_preview_file_cmd + # need to escape quotes to make sure eval receives file_path as a single arg + eval "$fzf_preview_file_cmd '$file_path'" + else + bat --style=numbers --color=always "$file_path" + end + else if test -d "$file_path" # directory + if set --query fzf_preview_dir_cmd + # see above + eval "$fzf_preview_dir_cmd '$file_path'" + else + # -A list hidden files as well, except for . and .. + # -F helps classify files by appending symbols after the file name + command ls -A -F "$file_path" + end + else if test -c "$file_path" + _fzf_report_file_type "$file_path" "character device file" + else if test -b "$file_path" + _fzf_report_file_type "$file_path" "block device file" + else if test -S "$file_path" + _fzf_report_file_type "$file_path" socket + else if test -p "$file_path" + _fzf_report_file_type "$file_path" "named pipe" + else + echo "$file_path doesn't exist." >&2 + end +end diff --git a/dot_config/private_fish/functions/_fzf_report_diff_type.fish b/dot_config/private_fish/functions/_fzf_report_diff_type.fish new file mode 100644 index 0000000..3463c3f --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_report_diff_type.fish @@ -0,0 +1,18 @@ +# helper for _fzf_preview_changed_file +# prints out something like +# ╭────────╮ +# │ Staged │ +# ╰────────╯ +function _fzf_report_diff_type --argument-names diff_type --description "Print a distinct colored header meant to preface a git patch." + # number of "-" to draw is the length of the string to box + 2 for padding + set repeat_count (math 2 + (string length $diff_type)) + set line (string repeat --count $repeat_count ─) + set top_border ╭$line╮ + set btm_border ╰$line╯ + + set_color yellow + echo $top_border + echo "│ $diff_type │" + echo $btm_border + set_color normal +end diff --git a/dot_config/private_fish/functions/_fzf_report_file_type.fish b/dot_config/private_fish/functions/_fzf_report_file_type.fish new file mode 100644 index 0000000..49e02e1 --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_report_file_type.fish @@ -0,0 +1,6 @@ +# helper function for _fzf_preview_file +function _fzf_report_file_type --argument-names file_path file_type --description "Explain the file type for a file." + set_color red + echo "Cannot preview '$file_path': it is a $file_type." + set_color normal +end diff --git a/dot_config/private_fish/functions/_fzf_search_directory.fish b/dot_config/private_fish/functions/_fzf_search_directory.fish new file mode 100644 index 0000000..15085be --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_search_directory.fish @@ -0,0 +1,34 @@ +function _fzf_search_directory --description "Search the current directory. Replace the current token with the selected file paths." + # Directly use fd binary to avoid output buffering delay caused by a fd alias, if any. + # Debian-based distros install fd as fdfind and the fd package is something else, so + # check for fdfind first. Fall back to "fd" for a clear error message. + set fd_cmd (command -v fdfind || command -v fd || echo "fd") + set --append fd_cmd --color=always $fzf_fd_opts + + # $fzf_dir_opts is the deprecated version of $fzf_directory_opts + set fzf_arguments --multi --ansi $fzf_dir_opts $fzf_directory_opts + set token (commandline --current-token) + # expand any variables or leading tilde (~) in the token + set expanded_token (eval echo -- $token) + # unescape token because it's already quoted so backslashes will mess up the path + set unescaped_exp_token (string unescape -- $expanded_token) + + # If the current token is a directory and has a trailing slash, + # then use it as fd's base directory. + if string match --quiet -- "*/" $unescaped_exp_token && test -d "$unescaped_exp_token" + set --append fd_cmd --base-directory=$unescaped_exp_token + # use the directory name as fzf's prompt to indicate the search is limited to that directory + set --prepend fzf_arguments --prompt="Search Directory $unescaped_exp_token> " --preview="_fzf_preview_file $expanded_token{}" + set file_paths_selected $unescaped_exp_token($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments) + else + set --prepend fzf_arguments --prompt="Search Directory> " --query="$unescaped_exp_token" --preview='_fzf_preview_file {}' + set file_paths_selected ($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments) + end + + + if test $status -eq 0 + commandline --current-token --replace -- (string escape -- $file_paths_selected | string join ' ') + end + + commandline --function repaint +end diff --git a/dot_config/private_fish/functions/_fzf_search_git_log.fish b/dot_config/private_fish/functions/_fzf_search_git_log.fish new file mode 100644 index 0000000..a158b02 --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_search_git_log.fish @@ -0,0 +1,30 @@ +function _fzf_search_git_log --description "Search the output of git log and preview commits. Replace the current token with the selected commit hash." + if not git rev-parse --git-dir >/dev/null 2>&1 + echo '_fzf_search_git_log: Not in a git repository.' >&2 + else + if not set --query fzf_git_log_format + # %h gives you the abbreviated commit hash, which is useful for saving screen space, but we will have to expand it later below + set fzf_git_log_format '%C(bold blue)%h%C(reset) - %C(cyan)%ad%C(reset) %C(yellow)%d%C(reset) %C(normal)%s%C(reset) %C(dim normal)[%an]%C(reset)' + end + set selected_log_lines ( + git log --no-show-signature --color=always --format=format:$fzf_git_log_format --date=short | \ + _fzf_wrapper --ansi \ + --multi \ + --tiebreak=index \ + --prompt="Search Git Log> " \ + --preview='git show --color=always --stat --patch {1}' \ + --query=(commandline --current-token) \ + $fzf_git_log_opts + ) + if test $status -eq 0 + for line in $selected_log_lines + set abbreviated_commit_hash (string split --field 1 " " $line) + set full_commit_hash (git rev-parse $abbreviated_commit_hash) + set --append commit_hashes $full_commit_hash + end + commandline --current-token --replace (string join ' ' $commit_hashes) + end + end + + commandline --function repaint +end diff --git a/dot_config/private_fish/functions/_fzf_search_git_status.fish b/dot_config/private_fish/functions/_fzf_search_git_status.fish new file mode 100644 index 0000000..9e51453 --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_search_git_status.fish @@ -0,0 +1,36 @@ +function _fzf_search_git_status --description "Search the output of git status. Replace the current token with the selected file paths." + if not git rev-parse --git-dir >/dev/null 2>&1 + echo '_fzf_search_git_status: Not in a git repository.' >&2 + else + set selected_paths ( + # Pass configuration color.status=always to force status to use colors even though output is sent to a pipe + git -c color.status=always status --short | + _fzf_wrapper --ansi \ + --multi \ + --prompt="Search Git Status> " \ + --query=(commandline --current-token) \ + --preview='_fzf_preview_changed_file {}' \ + --nth="2.." \ + $fzf_git_status_opts + ) + if test $status -eq 0 + # git status --short automatically escapes the paths of most files for us so not going to bother trying to handle + # the few edges cases of weird file names that should be extremely rare (e.g. "this;needs;escaping") + set cleaned_paths + + for path in $selected_paths + if test (string sub --length 1 $path) = R + # path has been renamed and looks like "R LICENSE -> LICENSE.md" + # extract the path to use from after the arrow + set --append cleaned_paths (string split -- "-> " $path)[-1] + else + set --append cleaned_paths (string sub --start=4 $path) + end + end + + commandline --current-token --replace -- (string join ' ' $cleaned_paths) + end + end + + commandline --function repaint +end diff --git a/dot_config/private_fish/functions/_fzf_search_history.fish b/dot_config/private_fish/functions/_fzf_search_history.fish new file mode 100644 index 0000000..27cf4f1 --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_search_history.fish @@ -0,0 +1,31 @@ +function _fzf_search_history --description "Search command history. Replace the command line with the selected command." + # history merge incorporates history changes from other fish sessions + # it errors out if called in private mode + if test -z "$fish_private_mode" + builtin history merge + end + + # Delinate commands throughout pipeline using null rather than newlines because commands can be multi-line + set commands_selected ( + # Reference https://devhints.io/strftime to understand strftime format symbols + builtin history --null --show-time="%m-%d %H:%M:%S │ " | + _fzf_wrapper --read0 \ + --print0 \ + --multi \ + --tiebreak=index \ + --prompt="Search History> " \ + --query=(commandline) \ + --preview="echo -- {4..} | fish_indent --ansi" \ + --preview-window="bottom:3:wrap" \ + $fzf_history_opts | + string split0 | + # remove timestamps from commands selected + string replace --regex '^\d\d-\d\d \d\d:\d\d:\d\d │ ' '' + ) + + if test $status -eq 0 + commandline --replace -- $commands_selected + end + + commandline --function repaint +end diff --git a/dot_config/private_fish/functions/_fzf_search_processes.fish b/dot_config/private_fish/functions/_fzf_search_processes.fish new file mode 100644 index 0000000..9424aad --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_search_processes.fish @@ -0,0 +1,29 @@ +function _fzf_search_processes --description "Search all running processes. Replace the current token with the pid of the selected process." + # use all caps to be consistent with ps default format + # snake_case because ps doesn't seem to allow spaces in the field names + set ps_preview_fmt (string join ',' 'pid' 'ppid=PARENT' 'user' '%cpu' 'rss=RSS_IN_KB' 'start=START_TIME' 'command') + set processes_selected ( + ps -A -opid,command | \ + _fzf_wrapper --multi \ + --prompt="Search Processes> " \ + --query (commandline --current-token) \ + --ansi \ + # first line outputted by ps is a header, so we need to mark it as so + --header-lines=1 \ + # ps uses exit code 1 if the process was not found, in which case show an message explaining so + --preview="ps -o '$ps_preview_fmt' -p {1} || echo 'Cannot preview {1} because it exited.'" \ + --preview-window="bottom:4:wrap" \ + $fzf_processes_opts + ) + + if test $status -eq 0 + for process in $processes_selected + set --append pids_selected (string split --no-empty --field=1 -- " " $process) + end + + # string join to replace the newlines outputted by string split with spaces + commandline --current-token --replace -- (string join ' ' $pids_selected) + end + + commandline --function repaint +end diff --git a/dot_config/private_fish/functions/_fzf_search_variables.fish b/dot_config/private_fish/functions/_fzf_search_variables.fish new file mode 100644 index 0000000..eda2453 --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_search_variables.fish @@ -0,0 +1,48 @@ +# This function expects the following two arguments: +# argument 1 = output of (set --show | psub), i.e. a file with the scope info and values of all variables +# argument 2 = output of (set --names | psub), i.e. a file with all variable names +function _fzf_search_variables --argument-names set_show_output set_names_output --description "Search and preview shell variables. Replace the current token with the selected variable." + if test -z "$set_names_output" + printf '%s\n' '_fzf_search_variables requires 2 arguments.' >&2 + + commandline --function repaint + return 22 # 22 means invalid argument in POSIX + end + + # Exclude the history variable from being piped into fzf because + # 1. it's not included in $set_names_output + # 2. it tends to be a very large value => increases computation time + # 3._fzf_search_history is a much better way to examine history anyway + set all_variable_names (string match --invert history <$set_names_output) + + set current_token (commandline --current-token) + # Use the current token to pre-populate fzf's query. If the current token begins + # with a $, remove it from the query so that it will better match the variable names + set cleaned_curr_token (string replace -- '$' '' $current_token) + + set variable_names_selected ( + printf '%s\n' $all_variable_names | + _fzf_wrapper --preview "_fzf_extract_var_info {} $set_show_output" \ + --prompt="Search Variables> " \ + --preview-window="wrap" \ + --multi \ + --query=$cleaned_curr_token \ + # $fzf_shell_vars_opts is the deprecated version of $fzf_variables_opts + $fzf_shell_vars_opts $fzf_variables_opts + ) + + if test $status -eq 0 + # If the current token begins with a $, do not overwrite the $ when + # replacing the current token with the selected variable. + # Uses brace expansion to prepend $ to each variable name. + commandline --current-token --replace ( + if string match --quiet -- '$*' $current_token + string join " " \${$variable_names_selected} + else + string join " " $variable_names_selected + end + ) + end + + commandline --function repaint +end diff --git a/dot_config/private_fish/functions/_fzf_wrapper.fish b/dot_config/private_fish/functions/_fzf_wrapper.fish new file mode 100644 index 0000000..a928701 --- /dev/null +++ b/dot_config/private_fish/functions/_fzf_wrapper.fish @@ -0,0 +1,20 @@ +function _fzf_wrapper --description "Prepares some environment variables before executing fzf." + # Make sure fzf uses fish to execute preview commands, some of which + # are autoloaded fish functions so don't exist in other shells. + # Use --local so that it doesn't clobber SHELL outside of this function. + set --local --export SHELL (command --search fish) + + # If FZF_DEFAULT_OPTS is not set, then set some sane defaults. + # See https://github.com/junegunn/fzf#environment-variables + if not set --query FZF_DEFAULT_OPTS + # cycle allows jumping between the first and last results, making scrolling faster + # layout=reverse lists results top to bottom, mimicking the familiar layouts of git log, history, and env + # border shows where the fzf window begins and ends + # height=90% leaves space to see the current command and some scrollback, maintaining context of work + # preview-window=wrap wraps long lines in the preview window, making reading easier + # marker=* makes the multi-select marker more distinguishable from the pointer (since both default to >) + set --export FZF_DEFAULT_OPTS '--cycle --layout=reverse --border --height=90% --preview-window=wrap --marker="*"' + end + + fzf $argv +end diff --git a/dot_config/private_fish/functions/bass.fish b/dot_config/private_fish/functions/bass.fish new file mode 100644 index 0000000..2b3af16 --- /dev/null +++ b/dot_config/private_fish/functions/bass.fish @@ -0,0 +1,29 @@ +function bass + set -l bash_args $argv + set -l bass_debug + if test "$bash_args[1]_" = '-d_' + set bass_debug true + set -e bash_args[1] + end + + set -l script_file (mktemp) + if command -v python3 >/dev/null 2>&1 + command python3 -sS (dirname (status -f))/__bass.py $bash_args 3>$script_file + else + command python -sS (dirname (status -f))/__bass.py $bash_args 3>$script_file + end + set -l bass_status $status + if test $bass_status -ne 0 + return $bass_status + end + + if test -n "$bass_debug" + cat $script_file + end + source $script_file + command rm $script_file +end + +function __bass_usage + echo "Usage: bass [-d] " +end diff --git a/dot_config/private_fish/functions/fish_user_key_bindings.fish b/dot_config/private_fish/functions/fish_user_key_bindings.fish new file mode 100644 index 0000000..a454589 --- /dev/null +++ b/dot_config/private_fish/functions/fish_user_key_bindings.fish @@ -0,0 +1,3 @@ +function fish_user_key_bindings + fzf_key_bindings +end \ No newline at end of file diff --git a/dot_config/private_fish/functions/fzf_configure_bindings.fish b/dot_config/private_fish/functions/fzf_configure_bindings.fish new file mode 100644 index 0000000..ec24f73 --- /dev/null +++ b/dot_config/private_fish/functions/fzf_configure_bindings.fish @@ -0,0 +1,46 @@ +# Always installs bindings for insert and default mode for simplicity and b/c it has almost no side-effect +# https://gitter.im/fish-shell/fish-shell?at=60a55915ee77a74d685fa6b1 +function fzf_configure_bindings --description "Installs the default key bindings for fzf.fish with user overrides passed as options." + # no need to install bindings if not in interactive mode or running tests + status is-interactive || test "$CI" = true; or return + + set options_spec h/help 'directory=?' 'git_log=?' 'git_status=?' 'history=?' 'processes=?' 'variables=?' + argparse --max-args=0 --ignore-unknown $options_spec -- $argv 2>/dev/null + if test $status -ne 0 + echo "Invalid option or a positional argument was provided." >&2 + _fzf_configure_bindings_help + return 22 + else if set --query _flag_help + _fzf_configure_bindings_help + return + else + # Initialize with default key sequences and then override or disable them based on flags + # index 1 = directory, 2 = git_log, 3 = git_status, 4 = history, 5 = processes, 6 = variables + set key_sequences \e\cf \e\cl \e\cs \cr \e\cp \cv # \c = control, \e = escape + set --query _flag_directory && set key_sequences[1] "$_flag_directory" + set --query _flag_git_log && set key_sequences[2] "$_flag_git_log" + set --query _flag_git_status && set key_sequences[3] "$_flag_git_status" + set --query _flag_history && set key_sequences[4] "$_flag_history" + set --query _flag_processes && set key_sequences[5] "$_flag_processes" + set --query _flag_variables && set key_sequences[6] "$_flag_variables" + + # If fzf bindings already exists, uninstall it first for a clean slate + if functions --query _fzf_uninstall_bindings + _fzf_uninstall_bindings + end + + for mode in default insert + test -n $key_sequences[1] && bind --mode $mode $key_sequences[1] _fzf_search_directory + test -n $key_sequences[2] && bind --mode $mode $key_sequences[2] _fzf_search_git_log + test -n $key_sequences[3] && bind --mode $mode $key_sequences[3] _fzf_search_git_status + test -n $key_sequences[4] && bind --mode $mode $key_sequences[4] _fzf_search_history + test -n $key_sequences[5] && bind --mode $mode $key_sequences[5] _fzf_search_processes + test -n $key_sequences[6] && bind --mode $mode $key_sequences[6] "$_fzf_search_vars_command" + end + + function _fzf_uninstall_bindings --inherit-variable key_sequences + bind --erase -- $key_sequences + bind --erase --mode insert -- $key_sequences + end + end +end diff --git a/dot_config/private_fish/functions/man.fish b/dot_config/private_fish/functions/man.fish new file mode 100644 index 0000000..3fbfa69 --- /dev/null +++ b/dot_config/private_fish/functions/man.fish @@ -0,0 +1,41 @@ +function man --wraps man --description 'Format and display manual pages' + set -q man_blink; and set -l blink (set_color $man_blink); or set -l blink (set_color -o red) + set -q man_bold; and set -l bold (set_color $man_bold); or set -l bold (set_color -o 5fafd7) + set -q man_standout; and set -l standout (set_color $man_standout); or set -l standout (set_color 949494) + set -q man_underline; and set -l underline (set_color $man_underline); or set -l underline (set_color -u afafd7) + + set -l end (printf "\e[0m") + + set -lx LESS_TERMCAP_mb $blink + set -lx LESS_TERMCAP_md $bold + set -lx LESS_TERMCAP_me $end + set -lx LESS_TERMCAP_so $standout + set -lx LESS_TERMCAP_se $end + set -lx LESS_TERMCAP_us $underline + set -lx LESS_TERMCAP_ue $end + set -lx LESS '-R -s' + + set -lx GROFF_NO_SGR yes # fedora + + set -lx MANPATH (string join : $MANPATH) + if test -z "$MANPATH" + type -q manpath + and set MANPATH (command manpath) + end + + # Check data dir for Fish 2.x compatibility + set -l fish_data_dir + if set -q __fish_data_dir + set fish_data_dir $__fish_data_dir + else + set fish_data_dir $__fish_datadir + end + + set -l fish_manpath (dirname $fish_data_dir)/fish/man + if test -d "$fish_manpath" -a -n "$MANPATH" + set MANPATH "$fish_manpath":$MANPATH + command man $argv + return + end + command man $argv +end diff --git a/dot_config/private_fish/functions/n.fish b/dot_config/private_fish/functions/n.fish new file mode 100644 index 0000000..a8c3dc4 --- /dev/null +++ b/dot_config/private_fish/functions/n.fish @@ -0,0 +1,36 @@ +# Rename this file to match the name of the function +# e.g. ~/.config/fish/functions/n.fish +# or, add the lines to the 'config.fish' file. + +function n --wraps nnn --description 'support nnn quit and change directory' + # Block nesting of nnn in subshells + if test -n "$NNNLVL" -a "$NNNLVL" -ge 1 + echo "nnn is already running" + return + end + + # The behaviour is set to cd on quit (nnn checks if NNN_TMPFILE is set) + # If NNN_TMPFILE is set to a custom path, it must be exported for nnn to + # see. To cd on quit only on ^G, remove the "-x" from both lines below, + # without changing the paths. + if test -n "$XDG_CONFIG_HOME" + set -x NNN_TMPFILE "$XDG_CONFIG_HOME/nnn/.lastd" + else + set -x NNN_TMPFILE "$HOME/.config/nnn/.lastd" + end + + # Unmask ^Q (, ^V etc.) (if required, see `stty -a`) to Quit nnn + # stty start undef + # stty stop undef + # stty lwrap undef + # stty lnext undef + + # The command function allows one to alias this function to `nnn` without + # making an infinitely recursive alias + command nnn $argv + + if test -e $NNN_TMPFILE + source $NNN_TMPFILE + rm $NNN_TMPFILE + end +end diff --git a/dot_config/private_fish/functions/nvm.fish b/dot_config/private_fish/functions/nvm.fish new file mode 100644 index 0000000..c5480e6 --- /dev/null +++ b/dot_config/private_fish/functions/nvm.fish @@ -0,0 +1,53 @@ +function nvm-fast + set -q NVM_DIR ; or set -l NVM_DIR ~/.nvm + set -l brigand_nvm_fish_path $NVM_DIR/versions/node + if test (count $argv[1]) -lt 1 + echo 'nvm-fast: at least one argument is required' + end + + set -l command $argv[1] + if test $command = 'use' + set target_version "unknown" + if test (count $argv) -eq 1 + if test -f .nvmrc + set target_version (cat .nvmrc) + else + echo "Error: No version provided and no .nvmrc found" + return + end + else + set target_version $argv[2] + end + set -l target_version $target_version + + set -l matched_version (bash -c "source $NVM_DIR/nvm.sh --no-use; nvm_version $target_version") + + if test -z $matched_version -o $matched_version = 'N/A' + echo "No version installed for $target_version, run nvm install $target_version" + echo "Installed versions: " + for file in $brigand_nvm_fish_path/v* + echo ' -' $file + end + else + set -l new_path (string match -ev "$brigand_nvm_fish_path" $PATH) + if test $matched_version != 'system' + set new_path $brigand_nvm_fish_path/$matched_version/bin $new_path + end + set -gx PATH $new_path + set -gx NVM_BIN (which node) + end + else + bash -c "source $NVM_DIR/nvm.sh --no-use; nvm $argv" + set -gx NVM_BIN (which node) + end +end + +function nvm + switch "$FISH_VERSION" + case 2.0.0 2.1.0 2.1.1 2.1.2 2.2.0 2.2b1 2.3.0 2.3.1 2.3b1 2.3b2 2.4.0 2.4b1 2.5.0 2.5b1 + echo "You need fish 2.6.0 or higher to use fast-nvm-fish." 1>&2 + return 1 + end + nvm-fast $argv +end + diff --git a/dot_config/private_fish/functions/su.fish b/dot_config/private_fish/functions/su.fish new file mode 100644 index 0000000..a9f271f --- /dev/null +++ b/dot_config/private_fish/functions/su.fish @@ -0,0 +1,3 @@ +function su + command su --shell=/usr/bin/fish $argv +end diff --git a/dot_config/private_fish/functions/symlink_fish_prompt.fish b/dot_config/private_fish/functions/symlink_fish_prompt.fish new file mode 100644 index 0000000..3745694 --- /dev/null +++ b/dot_config/private_fish/functions/symlink_fish_prompt.fish @@ -0,0 +1 @@ +/home/eric/.local/share/omf/themes/boxfish/fish_prompt.fish diff --git a/dot_config/private_fish/functions/symlink_fish_prompt.old.fish b/dot_config/private_fish/functions/symlink_fish_prompt.old.fish new file mode 100644 index 0000000..3745694 --- /dev/null +++ b/dot_config/private_fish/functions/symlink_fish_prompt.old.fish @@ -0,0 +1 @@ +/home/eric/.local/share/omf/themes/boxfish/fish_prompt.fish diff --git a/dot_config/private_fish/functions/symlink_triton.fish b/dot_config/private_fish/functions/symlink_triton.fish new file mode 100644 index 0000000..48cd8fb --- /dev/null +++ b/dot_config/private_fish/functions/symlink_triton.fish @@ -0,0 +1 @@ +/home/eric/.config/fish/triton/github.com/dukejones/triton/functions/triton.fish diff --git a/dot_config/private_fish/themes/Catppuccin Frappe.theme b/dot_config/private_fish/themes/Catppuccin Frappe.theme new file mode 100644 index 0000000..3181fe3 --- /dev/null +++ b/dot_config/private_fish/themes/Catppuccin Frappe.theme @@ -0,0 +1,26 @@ +# name: 'Catppuccin frappe' +# url: 'https://github.com/catppuccin/fish' +# preferred_background: 303446 + +fish_color_normal c6d0f5 +fish_color_command 8caaee +fish_color_param eebebe +fish_color_keyword e78284 +fish_color_quote a6d189 +fish_color_redirection f4b8e4 +fish_color_end ef9f76 +fish_color_error e78284 +fish_color_gray 737994 +fish_color_selection --background=414559 +fish_color_search_match --background=414559 +fish_color_operator f4b8e4 +ish_color_escape eebebe +fish_color_autosuggestion 737994 +fish_color_cancel e78284 +fish_color_cwd e5c890 +fish_color_user 81c8be +fish_color_host 8caaee +fish_pager_color_progress 737994 +fish_pager_color_prefix f4b8e4 +fish_pager_color_completion c6d0f5 +fish_pager_color_description 737994 diff --git a/dot_config/private_fish/themes/Catppuccin Latte.theme b/dot_config/private_fish/themes/Catppuccin Latte.theme new file mode 100644 index 0000000..ba6ea63 --- /dev/null +++ b/dot_config/private_fish/themes/Catppuccin Latte.theme @@ -0,0 +1,26 @@ +# name: 'Catppuccin latte' +# url: 'https://github.com/catppuccin/fish' +# preferred_background: eff1f5 + +fish_color_normal 4c4f69 +fish_color_command 1e66f5 +fish_color_param dd7878 +fish_color_keyword d20f39 +fish_color_quote 40a02b +fish_color_redirection ea76cb +fish_color_end fe640b +fish_color_error d20f39 +fish_color_gray 9ca0b0 +fish_color_selection --background=ccd0da +fish_color_search_match --background=ccd0da +fish_color_operator ea76cb +fish_color_escape dd7878 +fish_color_autosuggestion 9ca0b0 +fish_color_cancel d20f39 +fish_color_cwd df8e1d +fish_color_user 179299 +fish_color_host 1e66f5 +fish_pager_color_progress 9ca0b0 +fish_pager_color_prefix ea76cb +fish_pager_color_completion 4c4f69 +fish_pager_color_description 9ca0b0 diff --git a/dot_config/private_fish/themes/Catppuccin Macchiato.theme b/dot_config/private_fish/themes/Catppuccin Macchiato.theme new file mode 100644 index 0000000..890c69a --- /dev/null +++ b/dot_config/private_fish/themes/Catppuccin Macchiato.theme @@ -0,0 +1,26 @@ +# name: 'Catppuccin macchiato' +# url: 'https://github.com/catppuccin/fish' +# preferred_background: 24273a + +fish_color_normal cad3f5 +fish_color_command 8aadf4 +fish_color_param f0c6c6 +fish_color_keyword ed8796 +fish_color_quote a6da95 +fish_color_redirection f5bde6 +fish_color_end f5a97f +fish_color_error ed8796 +fish_color_gray 6e738d +fish_color_selection --background=363a4f +fish_color_search_match --background=363a4f +fish_color_operator f5bde6 +fish_color_escape f0c6c6 +fish_color_autosuggestion 6e738d +fish_color_cancel ed8796 +fish_color_cwd eed49f +fish_color_user 8bd5ca +fish_color_host 8aadf4 +fish_pager_color_progress 6e738d +fish_pager_color_prefix f5bde6 +fish_pager_color_completion cad3f5 +fish_pager_color_description 6e738d diff --git a/dot_config/private_fish/themes/Catppuccin Mocha.theme b/dot_config/private_fish/themes/Catppuccin Mocha.theme new file mode 100644 index 0000000..9bea4af --- /dev/null +++ b/dot_config/private_fish/themes/Catppuccin Mocha.theme @@ -0,0 +1,26 @@ +# name: 'Catppuccin mocha' +# url: 'https://github.com/catppuccin/fish' +# preferred_background: 1e1e2e + +fish_color_normal cdd6f4 +fish_color_command 89b4fa +fish_color_param f2cdcd +fish_color_keyword f38ba8 +fish_color_quote a6e3a1 +fish_color_redirection f5c2e7 +fish_color_end fab387 +fish_color_error f38ba8 +fish_color_gray 6c7086 +fish_color_selection --background=313244 +fish_color_search_match --background=313244 +fish_color_operator f5c2e7 +fish_color_escape f2cdcd +fish_color_autosuggestion 6c7086 +fish_color_cancel f38ba8 +fish_color_cwd f9e2af +fish_color_user 94e2d5 +fish_color_host 89b4fa +fish_pager_color_progress 6c7086 +fish_pager_color_prefix f5c2e7 +fish_pager_color_completion cdd6f4 +fish_pager_color_description 6c7086 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/LICENSE b/dot_config/private_fish/triton/github.com/dukejones/triton/LICENSE new file mode 100644 index 0000000..4d91e60 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Duke Jones + +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/dot_config/private_fish/triton/github.com/dukejones/triton/README.md b/dot_config/private_fish/triton/github.com/dukejones/triton/README.md new file mode 100644 index 0000000..bf634ce --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/README.md @@ -0,0 +1,82 @@ +# Install # +Installation Script: + +`wget -qO- https://git.io/fp7xA | fish` + +## Quickstart ## + +```bash +wget -qO- https://git.io/fp7xA | fish +triton bootstrap +nano ~/.config/fish/config.fish +``` + +Each package is a single line in config.fish which can be commented or edited. When you fire up your shell it simply loads whatever you tell it to. + +Optionally clean up your config.fish by adding packages in ~/.config/fish/fishfile. + +It supports github libraries only for now. + +e.g. for https://github.com/joehillen/to-fish chop the first part off and write `triton joehillen/to-fish`. + +## Usage ## +`triton` : Initialize Triton. This initializes triton, and loads or installs all of the libraries listed in your fishfile. + +`triton bootstrap` : Copy the included configuration file templates into the config directory. + +`triton [repo/lib]` : Load or install the specified library. e.g. `triton joehillen/to-fish` is at https://github.com/joehillen/to-fish + +`triton fishfile [file]` : Load/install all of the libraries in the given fishfile. + +## What Does It Do? ## + +You give triton just about any repository that is meant to be a fish plugin, and it will install it. If it's already installed in triton's plugin installation directory, it will load it. + +The end result is a nice list of all of installed packages in config.fish and fishfile, not a confusing pile of symlinks or a maze of deeply nested calls across multiple directories. Everything is in `~/.config/fish/`, and everything triton is in the `triton` subdirectory. + +## Great Packages ## + +We suggest putting themes in config.fish to be able to comment them out at will, but reference them later. +Libraries that are must-haves and always givens can go into `Fishfile`. + +```bash +# Some suggestions for your config.fish: + +# triton oh-my-fish/theme-bobthefish +triton oh-my-fish/theme-agnoster +# triton oh-my-fish/theme-es +# triton jorgebucaran/fish-sol +# triton jorgebucaran/fish-sektor + +triton joehillen/to-fish # Fish shell directory bookmarks +triton oh-my-fish/plugin-spark +triton oh-my-fish/plugin-node-binpath + +# this requires the fzf binary installed +triton jethrokuan/fzf +# And this requires The Silver Searcher binary `ag`. +set -U FZF_FIND_FILE_COMMAND "ag -l --hidden --ignore .git" +set -U FZF_ENABLE_OPEN_PREVIEW 1 +``` + +And here is my fishfile: +```bash +edc/bass +joehillen/to-fish +jethrokuan/z +``` + +### Other Package Lists ### +* [Awesome Fish](https://github.com/jorgebucaran/awesome-fish) + +## Origin Story ## + +One day I was searching for a setting in a Fish plugin that was causing a problem, but when I started looking through my Fish config, I became lost in a dense and impenetrable forest of references. I couldn't find where the actual library files lived. Was it symlinked from fisherman? Was it in one of oh-my-fish's numerous special directories? How was it even being loaded?! What was being loaded?!! Functions, or conf.d.... I had to read through the source code of oh-my-fish to figure out what the heck was going on. It was almost enough to send me back to Zsh, again. + +But recall that Fish has an actual scripting language that makes sense. And so, armed with that and a few design principles I set out to make something discoverable, explicit, and magical enough to surprise and delight. Please enjoy and drop me a line if you like it or have feedback. + +Inspirations include: antigen.zsh, Vim+Pathogen. + + +# Triton # +![Triton](https://greekgodsandgoddesses.net/wp-content/uploads/2017/02/triton-1024x885.jpg "Triton") diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/FETCH_HEAD b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/FETCH_HEAD new file mode 100644 index 0000000..96212e7 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/FETCH_HEAD @@ -0,0 +1 @@ +fc3620321f9c2dbaef0885daafc4aa464ef502d0 branch 'master' of https://github.com/dukejones/triton diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/HEAD b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/HEAD new file mode 100644 index 0000000..cb089cd --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/branches/.keep b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/branches/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/config b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/config new file mode 100644 index 0000000..749928b --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/config @@ -0,0 +1,11 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[remote "origin"] + url = https://github.com/dukejones/triton.git + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "master"] + remote = origin + merge = refs/heads/master diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/description b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_applypatch-msg.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_applypatch-msg.sample new file mode 100644 index 0000000..a5d7b84 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_commit-msg.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_commit-msg.sample new file mode 100644 index 0000000..b58d118 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_fsmonitor-watchman.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_fsmonitor-watchman.sample new file mode 100644 index 0000000..23e856f --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_fsmonitor-watchman.sample @@ -0,0 +1,174 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + my $last_update_line = ""; + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + $last_update_line = qq[\n"since": $last_update_token,]; + } + my $query = <<" END"; + ["query", "$git_work_tree", {$last_update_line + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_post-update.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_post-update.sample new file mode 100644 index 0000000..ec17ec1 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-applypatch.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-applypatch.sample new file mode 100644 index 0000000..4142082 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-commit.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-commit.sample new file mode 100644 index 0000000..e144712 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-merge-commit.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-merge-commit.sample new file mode 100644 index 0000000..399eab1 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-push.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-push.sample new file mode 100644 index 0000000..4ce688d --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-rebase.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-rebase.sample new file mode 100644 index 0000000..6cbef5c --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-receive.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-receive.sample new file mode 100644 index 0000000..a1fd29e --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_prepare-commit-msg.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_prepare-commit-msg.sample new file mode 100644 index 0000000..10fa14c --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_push-to-checkout.sample b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_push-to-checkout.sample new file mode 100644 index 0000000..af5a0c0 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/hooks/executable_push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/index b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/index new file mode 100644 index 0000000000000000000000000000000000000000..cdfba7e6062590c83248d6a6d3f8381a70fe199e GIT binary patch literal 819 zcmZ?q402{*U|<4bjudAZ2WzGIzhE>2BQqys#4=U}hQ=if49qWp_$31ai?;8?XPoC* z;sxf+GM>Z9#SqrmsP>J4-N)0})i2l;Xb?<4jE0({fNBo!#{J1Y?=5y;_3nr{UoiWI zZvQKRpmqk%AXi5hUst`{6kO)0pqe8lsNb}+vtW0^4CYH5MRSk6yyd|2Hitnptu!yW zBr`v+Sihtwvm`%HFDj`DQI1ec^ zuxI8Kmn7!oz|1jxWDfQxkcRrx9o2md#o_YD`;uJKGX*#QxTT(wx4J9n!6OEllGNOS zoWzn;{p9?-G`$r4#GK5;;?!b%RG~W}|e8ve!XI#Cc_W$H&RRKohH>q7bPrM$V zXOKWQKdmYaYBtQhFdFJ^Z&Y)co}c$GTyfLzlh#(r)l=_q9Qf+|{n=Uu5fpPX(+RuR z2i05#PV?zg{#o*v1TNw)W!%jsI>pyOLT#Dja_AYfYM5slf5k<;!7-J;&|^U8t*f Y&9s%bdj7OcS^juH{*5~fdK13^0MG0cg#Z8m literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/info/exclude b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/info/exclude new file mode 100644 index 0000000..a5196d1 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/HEAD b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/HEAD new file mode 100644 index 0000000..c5f4473 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 fc3620321f9c2dbaef0885daafc4aa464ef502d0 Hydroxycarbamide 1682119744 +0200 clone: from https://github.com/dukejones/triton.git diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/refs/heads/master b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/refs/heads/master new file mode 100644 index 0000000..c5f4473 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/refs/heads/master @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 fc3620321f9c2dbaef0885daafc4aa464ef502d0 Hydroxycarbamide 1682119744 +0200 clone: from https://github.com/dukejones/triton.git diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/refs/remotes/origin/HEAD b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/refs/remotes/origin/HEAD new file mode 100644 index 0000000..c5f4473 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/logs/refs/remotes/origin/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 fc3620321f9c2dbaef0885daafc4aa464ef502d0 Hydroxycarbamide 1682119744 +0200 clone: from https://github.com/dukejones/triton.git diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/objects/info/.keep b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/objects/info/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/objects/pack/readonly_pack-3fc5d7e7226ca384048adfb4f34689b59079a6cc.idx b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/objects/pack/readonly_pack-3fc5d7e7226ca384048adfb4f34689b59079a6cc.idx new file mode 100644 index 0000000000000000000000000000000000000000..d73e1e9fab850947d217300d68e6ab32362e0fea GIT binary patch literal 3620 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 literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/objects/pack/readonly_pack-3fc5d7e7226ca384048adfb4f34689b59079a6cc.pack b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/objects/pack/readonly_pack-3fc5d7e7226ca384048adfb4f34689b59079a6cc.pack new file mode 100644 index 0000000000000000000000000000000000000000..e7d50b16f3b0917f1e7adce3506ddff9be8d70b6 GIT binary patch literal 17829 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 literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/packed-refs b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/packed-refs new file mode 100644 index 0000000..2a86707 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/packed-refs @@ -0,0 +1,2 @@ +# pack-refs with: peeled fully-peeled sorted +fc3620321f9c2dbaef0885daafc4aa464ef502d0 refs/remotes/origin/master diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/heads/master b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/heads/master new file mode 100644 index 0000000..9777094 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/heads/master @@ -0,0 +1 @@ +fc3620321f9c2dbaef0885daafc4aa464ef502d0 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/remotes/origin/HEAD b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/remotes/origin/HEAD new file mode 100644 index 0000000..6efe28f --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/remotes/origin/HEAD @@ -0,0 +1 @@ +ref: refs/remotes/origin/master diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/tags/.keep b/dot_config/private_fish/triton/github.com/dukejones/triton/dot_git/refs/tags/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/executable_install b/dot_config/private_fish/triton/github.com/dukejones/triton/executable_install new file mode 100644 index 0000000..3ee7e41 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/executable_install @@ -0,0 +1,25 @@ +#!/usr/bin/env fish + +if [ ! (which git) ] + echo "`git` is required for installation. Please try again after installing an accessible git binary." + exit 1 +end + +set -q XDG_CONFIG_HOME + and set FISH_PATH "$XDG_CONFIG_HOME/fish" + or set FISH_PATH "$HOME/.config/fish" + +[ -d "$FISH_PATH/triton/github.com/dukejones/triton" ] + or git clone https://github.com/dukejones/triton.git "$FISH_PATH/triton/github.com/dukejones/triton" + +mkdir -p "$FISH_PATH/functions" +[ -f "$FISH_PATH/functions/triton.fish" ] + or ln -s "$FISH_PATH/triton/github.com/dukejones/triton/functions/triton.fish" "$FISH_PATH/functions/" + +exec fish + +echo "Welcome to Triton! To bootstrap a nice set of default fish configuration files you may wish to run:" +echo +echo "triton bootstrap" +echo +echo "Triton: calling forth packages from the primordial ocean of the internet for ultimate shell happiness. 👑" diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/functions/triton.fish b/dot_config/private_fish/triton/github.com/dukejones/triton/functions/triton.fish new file mode 100644 index 0000000..2f82b98 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/functions/triton.fish @@ -0,0 +1,161 @@ + +function triton + [ -z "$TRITON_PATH" ]; and set -l do_init true + + set -q XDG_CONFIG_HOME + and set -gx TRITON_PATH "$XDG_CONFIG_HOME/fish/triton" + or set -gx TRITON_PATH "$HOME/.config/fish/triton" + + test -d $TRITON_PATH; or mkdir -p $TRITON_PATH + + if [ -n "$do_init" -a "$argv[1]" != "init" ] + triton init + end + + switch "$argv[1]" + case "" + [ -n "$do_init" ]; and return # if first initialization, don't show usage. + # TODO: all this as completions + echo "Usage: find some libraries. Load 'em up" + echo "triton init" + echo "triton list" + echo "triton update" + echo "triton fishfile " + echo "triton bootstrap" + case "init" + __triton_load_fishfile $TRITON_PATH/../fishfile + case "list" + __triton_list $argv + case "update" + __triton_update $argv + case "fishfile" + __triton_load_fishfile $argv + case "bootstrap" + __triton_bootstrap_template $argv + case "*" + __triton_main $argv + end +end + +function __triton_main -a library + contains $library $__triton_libs + and return + + set lib_path (realpath $TRITON_PATH/github.com/$library 2> /dev/null ) + # TODO: if it includes a domain, use it. [non-github are people too] + + if [ ! -d "$lib_path" ] + __triton_run_cmd \ + "git clone -q https://github.com/$library $TRITON_PATH/github.com/$library" \ + "Triton: Installing '$library'. 💾" + if [ -f "$lib_path/.gitmodules" ] + set -l prev_dir $PWD + cd $lib_path + git rev-parse --show-toplevel + __triton_run_cmd \ + "git submodule update --init" \ + "Installing git submodules." + cd $prev_dir + end + # test -f $lib_path/hooks/install.fish ; and source $lib_path/hooks/install.fish + end + + if [ -f "$lib_path/fishfile" ] + __triton_load_fishfile $lib_path/fishfile + end + [ -f "$lib_path/before.init.fish" ]; and source $lib_path/before.init.fish + [ -d "$lib_path/functions" ] + and not contains "$lib_path/functions" $fish_function_path + and set fish_function_path $fish_function_path[1] \ + $lib_path/functions \ + $fish_function_path[2..-1] + [ -d "$lib_path/completions" ] + and not contains "$lib_path/completions" $fish_complete_path + and set fish_complete_path $fish_complete_path[1] \ + $lib_path/completions \ + $fish_complete_path[2..-1] + if [ (count $lib_path/conf.d/*.fish) -gt 0 ] + for file in $lib_path/conf.d/*.fish + source $file + end + end + if [ (count $lib_path/*.fish) -gt 0 ] + source $lib_path/*.fish + + contains $lib_path $fish_function_path + or set fish_function_path $fish_function_path[1] \ + $lib_path \ + $fish_function_path[2..-1] + end + contains $library $__triton_libs + or set -g __triton_libs $__triton_libs $library +end + +function __triton_load_fishfile -a fishfile + [ -f "$fishfile" ] ; or return + for lib in (cat $fishfile) + triton $lib + end +end + +function __triton_update + set -l triton_lib_path $TRITON_PATH/github.com/dukejones/triton + echo (set_color green)"Updating triton lib in path $triton_lib_path"(set_color normal) + pushd . + cd $triton_lib_path + + git fetch + if git status | grep "is up to date" > /dev/null + echo (set_color green)Your Triton install is already up to date!(set_color normal) + return + end + + + if not git status | grep "working tree clean" > /dev/null + echo (set_color yellow)"Stashing changes, merging latest, and applying stashed changes."(set_color normal) + git stash + git merge origin/master + git stash apply + else + echo (set_color yellow)"Merging the latest code."(set_color normal) + git merge origin/master + end + popd + echo (set_color green)Done!(set_color normal) +end + +function __triton_list + echo (set_color yellow)Installed Fish Plugins(set_color green) 💾 + for l in $__triton_libs + echo " $l" + end + echo (set_color yellow)A few places to look for more(set_color blue) 🛒 + echo " https://github.com/topics/fish-plugin" + echo " https://github.com/topics/fish-plugins" + echo " https://github.com/oh-my-fish/oh-my-fish/blob/master/docs/Themes.md" + set_color normal +end + +function __triton_run_cmd -a cmd msg -d "Display the message & run the cmd, displaying it in nice colors." + [ -n "$msg" ]; and echo (set_color yellow)$msg + echo (set_color blue)"> $cmd" + eval $cmd +end + +function __triton_bootstrap_template + echo (set_color -r -o green)"Bootstrapping fish config files."(set_color normal) + triton dukejones/triton # so meta + set FISH_PATH (realpath "$TRITON_PATH/..") + for file in {config.fish,fishfile,conf.d/aliases.fish} + if not test -f $FISH_PATH/$file + echo (set_color green)"[adding]"(set_color normal) "$FISH_PATH/$file" + mkdir -p (dirname "$FISH_PATH/$file") + cp $TRITON_PATH/github.com/dukejones/triton/template/$file $FISH_PATH/$file + else + echo (set_color yellow)"[exists]"(set_color normal) "$FISH_PATH/$file" + end + end + exec fish + echo (set_color -o green)Complete!(set_color normal) + # source $FISH_PATH/config.fish +end diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/template/conf.d/aliases.fish b/dot_config/private_fish/triton/github.com/dukejones/triton/template/conf.d/aliases.fish new file mode 100644 index 0000000..571fc78 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/template/conf.d/aliases.fish @@ -0,0 +1,5 @@ + +# alias g="git" +# alias gpr="git pull -r" + +# alias dns="dscacheutil -flushcache; sudo killall -HUP mDNSResponder" diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/template/conf.d/fzf.fish b/dot_config/private_fish/triton/github.com/dukejones/triton/template/conf.d/fzf.fish new file mode 100644 index 0000000..c598d5d --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/template/conf.d/fzf.fish @@ -0,0 +1,11 @@ +# Completion / FZF # +# FZF is the Ctrl+R solution you've been looking for. +# `brew install fzf` or `apt install fzf` +# https://github.com/jethrokuan/fzf + +# triton jethrokuan/fzf +# set -g FZF_COMPLETE 2 +# set -g FZF_FIND_FILE_COMMAND "ag -l --hidden --ignore .git" +# set -g FZF_DEFAULT_OPTS "--height 40% --layout=reverse --border" +# set -g FZF_LEGACY_KEYBINDINGS 0 +# set -g FZF_ENABLE_OPEN_PREVIEW 1 diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/template/config.fish b/dot_config/private_fish/triton/github.com/dukejones/triton/template/config.fish new file mode 100644 index 0000000..cf4f71a --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/template/config.fish @@ -0,0 +1,31 @@ +### INIT ### +triton init +# fish_vi_key_bindings + +### THEMES ### + +triton oh-my-fish/theme-bobthefish +set -g theme_powerline_fonts no # Go ahead and turn this on when you get a powerline font! +set -g theme_nerd_fonts no # And nerd fonts for the ultimate in nerdy goodness. + +# Powerline Themes # +# triton oh-my-fish/theme-agnoster +# triton oh-my-fish/theme-es +# triton jorgebucaran/fish-sol +# triton jorgebucaran/fish-sektor + +### PACKAGES ### +triton joehillen/to-fish # Fish shell directory bookmarks + +triton oh-my-fish/plugin-node-binpath +triton kennethreitz/fish-pipenv +set -gx VIRTUAL_ENV_DISABLE_PROMPT yes + + +### CUSTOMIZATION ### +# function fish_greeting +# figlet -w 250 Fortune Favors the Bold +# end + +### ENVIRONMENT ### +set -g EDITOR vim diff --git a/dot_config/private_fish/triton/github.com/dukejones/triton/template/fishfile b/dot_config/private_fish/triton/github.com/dukejones/triton/template/fishfile new file mode 100644 index 0000000..379794f --- /dev/null +++ b/dot_config/private_fish/triton/github.com/dukejones/triton/template/fishfile @@ -0,0 +1 @@ +edc/bass diff --git a/dot_config/private_fish/triton/github.com/edc/bass/LICENSE b/dot_config/private_fish/triton/github.com/edc/bass/LICENSE new file mode 100644 index 0000000..bf7a119 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Eddie Cao + +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/dot_config/private_fish/triton/github.com/edc/bass/Makefile b/dot_config/private_fish/triton/github.com/edc/bass/Makefile new file mode 100644 index 0000000..1bb29c2 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/Makefile @@ -0,0 +1,19 @@ +all: + @echo "Run 'make install' to deploy bass to your function directory." + +install: + install -d ~/.config/fish/functions + install functions/__bass.py ~/.config/fish/functions + install functions/bass.fish ~/.config/fish/functions + +uninstall: + rm -f ~/.config/fish/functions/__bass.py + rm -f ~/.config/fish/functions/bass.fish + +test: + fish test/test_bass.fish + fish test/test_dollar_on_output.fish + fish test/test_trailing_semicolon.fish + fish test/test_non_zero_returncode.fish + +.PHONY: test diff --git a/dot_config/private_fish/triton/github.com/edc/bass/README.md b/dot_config/private_fish/triton/github.com/edc/bass/README.md new file mode 100644 index 0000000..d5b7ac6 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/README.md @@ -0,0 +1,108 @@ +# Bass + +![](https://travis-ci.org/edc/bass.svg?branch=master) + +Bass makes it easy to use utilities written for Bash in [fish shell](https://github.com/fish-shell/fish-shell/). + +Regular bash scripts can be used in fish shell just as scripts written in any language with proper shebang or explicitly using the interpreter (i.e. using `bash script.sh`). However, many utilities, such as virtualenv, modify the shell environment and need to be sourced, and therefore cannot be used in fish. Sometimes, counterparts (such as the excellent [virtualfish](http://virtualfish.readthedocs.org/en/latest/)) are created, but that's often not the case. + +Bass is created to make it possible to use bash utilities in fish shell without any modification. It works by capturing what environment variables are modified by the utility of interest, and replay the changes in fish. + +You might not need Bass for simple use cases. A great simple alternative (suggested by @jorgebucaran) is to just use `exec bash -c "source some-bash-setup.sh; exec fish"`. + +# Installation + +Bass is compatible with fish versions 2.6.0 and later. + + +## Manually + +Use the Makefile. + +`make install` will copy two files to `~/.config/fish/functions/`. + +`make uninstall` will remove those two files. + +Relaunch the shell for the change to take effect. + +## With [Oh My Fish](https://github.com/oh-my-fish/oh-my-fish) + +```console +omf install bass +``` + +## With [Fisher](https://github.com/jorgebucaran/fisher) + +```console +fisher install edc/bass +``` + +## With [Fundle](https://github.com/tuvistavie/fundle) + +Add + +```console +fundle plugin 'edc/bass' +``` + +to your fish config, relaunch the shell and run `fundle install`. + +# Example + +Bass is simple to use. Just prefix your bash utility command with `bass`: + +``` +> bass export X=3 +> echo $X +3 +``` + +Notice that `export X=3` is bash syntax. Bass "transported" the new bash +environment variable back to fish. + +Bass has a debug option so you can see what happened: + +``` +> bass -d export X=4 +# updating X=3 -> 4 +set -g -x X 4 +``` + +## nvm + +Here is a more realistic example, using the excellent +[nvm](https://github.com/creationix/nvm): + +``` +> bass source ~/.nvm/nvm.sh --no-use ';' nvm use iojs +Now using io.js v1.1.0 +``` + +Note that semicolon is quoted to avoid being consumed by fish. + +This example takes advantage of the nvm bash utility to switch to iojs. +After the command, iojs is accessible: + +``` +> which iojs +/Users/edc/.nvm/versions/io.js/v1.1.0/bin/iojs +``` + +You can then very easily pack the command as a function and feel more at home: + +``` +> funced nvm +nvm> function nvm + bass source ~/.nvm/nvm.sh --no-use ';' nvm $argv + end + +> nvm list +-> iojs-v1.1.0 + system +> nvm ls-remote + v0.1.14 + v0.1.15 +... +``` + +(`--no-use` is an important option to `nvm.sh`. See [#13](https://github.com/edc/bass/issues/13) for background.) diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/HEAD b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/HEAD new file mode 100644 index 0000000..cb089cd --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/branches/.keep b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/branches/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/config b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/config new file mode 100644 index 0000000..d9a2a57 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/config @@ -0,0 +1,11 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[remote "origin"] + url = https://github.com/edc/bass + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "master"] + remote = origin + merge = refs/heads/master diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/description b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_applypatch-msg.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_applypatch-msg.sample new file mode 100644 index 0000000..a5d7b84 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_commit-msg.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_commit-msg.sample new file mode 100644 index 0000000..b58d118 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_fsmonitor-watchman.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_fsmonitor-watchman.sample new file mode 100644 index 0000000..23e856f --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_fsmonitor-watchman.sample @@ -0,0 +1,174 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + my $last_update_line = ""; + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + $last_update_line = qq[\n"since": $last_update_token,]; + } + my $query = <<" END"; + ["query", "$git_work_tree", {$last_update_line + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_post-update.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_post-update.sample new file mode 100644 index 0000000..ec17ec1 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-applypatch.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-applypatch.sample new file mode 100644 index 0000000..4142082 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-commit.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-commit.sample new file mode 100644 index 0000000..e144712 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-merge-commit.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-merge-commit.sample new file mode 100644 index 0000000..399eab1 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-push.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-push.sample new file mode 100644 index 0000000..4ce688d --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-rebase.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-rebase.sample new file mode 100644 index 0000000..6cbef5c --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-receive.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-receive.sample new file mode 100644 index 0000000..a1fd29e --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_prepare-commit-msg.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_prepare-commit-msg.sample new file mode 100644 index 0000000..10fa14c --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_push-to-checkout.sample b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_push-to-checkout.sample new file mode 100644 index 0000000..af5a0c0 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/hooks/executable_push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/index b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/index new file mode 100644 index 0000000000000000000000000000000000000000..8848073db5a81d596e52283e28be5abe2ffa699e GIT binary patch literal 1394 zcmZ?q402{*U|<4bz7%Jfc>?DmmceKSMrKaNh~;w`7#f!_FfhLW;+H^m*Y-1L$tEnx z_wVSB@jkv;f9?sxu00IgdL>1PWtqi#mAN@UMIZn(2S!89TZ(EPi`M=s!CA93>*oC3 zc~)rm^@E8mLAxRu*nK>mUHyVxahtOY)f~pR(wpX}ojDwDR^)f9C+PXhyJk#ljx%uh zCT6FmW#**fbkA~BbGUV`ZeNpPeErLd{|B!7Y}&M3@B^DR!6;y&l3#a>5 zqMFMzN!#jU>a~Tc(X#?(Z2bCA%u4Wf&SqqD!KS8V7H8l$cNMC+3}T-jH5~o^)2hK} z(N^i{qTaXT@5N^`h?S%km*}TuR+N+$r55Wa=42)o>p_f$#Vd@4#_wu0b7Nn27{-Jz z>@5AgS;FGzvK?kz^1Ce=-nyRc@|zUV-Nw`10v!fVS@;GSh&DwX!xu{HJ6di@P~~4oq{q~iw7Rx^n%_TidPw}u>uXxJ42lSQu*5Ccnvft@Q1Ma4U}&OX#AVg) z^nsHv|KUcjr%qQ5KmAR!Q{)Ai!C;|a$mQ@g`Y^NWjOnSNlT=>JVl^*}&b 1682119838 +0200 clone: from https://github.com/edc/bass diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/logs/refs/heads/master b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/logs/refs/heads/master new file mode 100644 index 0000000..7a8294b --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/logs/refs/heads/master @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 2fd3d2157d5271ca3575b13daec975ca4c10577a Hydroxycarbamide 1682119838 +0200 clone: from https://github.com/edc/bass diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/logs/refs/remotes/origin/HEAD b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/logs/refs/remotes/origin/HEAD new file mode 100644 index 0000000..7a8294b --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/logs/refs/remotes/origin/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 2fd3d2157d5271ca3575b13daec975ca4c10577a Hydroxycarbamide 1682119838 +0200 clone: from https://github.com/edc/bass diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/objects/info/.keep b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/objects/info/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/objects/pack/readonly_pack-2238ec9db8275c33a457d7fca6ce6968cc404b3e.idx b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/objects/pack/readonly_pack-2238ec9db8275c33a457d7fca6ce6968cc404b3e.idx new file mode 100644 index 0000000000000000000000000000000000000000..fdf1aa2aab6a96c289570ecbbb7d9d785a183182 GIT binary patch literal 9976 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 JCIqDU{uhUBLd^gG literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/packed-refs b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/packed-refs new file mode 100644 index 0000000..1cde345 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/packed-refs @@ -0,0 +1,3 @@ +# pack-refs with: peeled fully-peeled sorted +2fd3d2157d5271ca3575b13daec975ca4c10577a refs/remotes/origin/master +7aae6a85c24660422ea3f3f4629bb4a8d30df3ba refs/tags/v1.0 diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/heads/master b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/heads/master new file mode 100644 index 0000000..24c0f89 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/heads/master @@ -0,0 +1 @@ +2fd3d2157d5271ca3575b13daec975ca4c10577a diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/remotes/origin/HEAD b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/remotes/origin/HEAD new file mode 100644 index 0000000..6efe28f --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/remotes/origin/HEAD @@ -0,0 +1 @@ +ref: refs/remotes/origin/master diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/tags/.keep b/dot_config/private_fish/triton/github.com/edc/bass/dot_git/refs/tags/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_fish/triton/github.com/edc/bass/dot_travis.yml b/dot_config/private_fish/triton/github.com/edc/bass/dot_travis.yml new file mode 100644 index 0000000..bf002a1 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/dot_travis.yml @@ -0,0 +1,13 @@ +language: python +python: + - "2.7" + - "3.5" + - "3.6" + - "3.7" + +before_install: + - sudo add-apt-repository -y ppa:fish-shell/release-2 + - sudo apt-get update + - sudo apt-get -y install fish + +script: make test diff --git a/dot_config/private_fish/triton/github.com/edc/bass/functions/__bass.py b/dot_config/private_fish/triton/github.com/edc/bass/functions/__bass.py new file mode 100644 index 0000000..3fe17fc --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/functions/__bass.py @@ -0,0 +1,138 @@ +""" +To be used with a companion fish function like this: + + function refish + set -l _x (python /tmp/bass.py source ~/.nvm/nvim.sh ';' nvm use iojs); source $_x; and rm -f $_x + end + +""" + +from __future__ import print_function + +import json +import os +import signal +import subprocess +import sys +import traceback + + +BASH = 'bash' + +FISH_READONLY = [ + 'PWD', 'SHLVL', 'history', 'pipestatus', 'status', 'version', + 'FISH_VERSION', 'fish_pid', 'hostname', '_', 'fish_private_mode' +] + +IGNORED = [ + 'PS1', 'XPC_SERVICE_NAME' +] + +def ignored(name): + if name == 'PWD': # this is read only, but has special handling + return False + # ignore other read only variables + if name in FISH_READONLY: + return True + if name in IGNORED or name.startswith("BASH_FUNC"): + return True + return False + +def escape(string): + # use json.dumps to reliably escape quotes and backslashes + return json.dumps(string).replace(r'$', r'\$') + +def escape_identifier(word): + return escape(word.replace('?', '\\?')) + +def comment(string): + return '\n'.join(['# ' + line for line in string.split('\n')]) + +def gen_script(): + # Use the following instead of /usr/bin/env to read environment so we can + # deal with multi-line environment variables (and other odd cases). + env_reader = "%s -c 'import os,json; print(json.dumps({k:v for k,v in os.environ.items()}))'" % (sys.executable) + args = [BASH, '-c', env_reader] + output = subprocess.check_output(args, universal_newlines=True) + old_env = output.strip() + + pipe_r, pipe_w = os.pipe() + if sys.version_info >= (3, 4): + os.set_inheritable(pipe_w, True) + command = 'eval $1 && ({}; alias) >&{}'.format( + env_reader, + pipe_w + ) + args = [BASH, '-c', command, 'bass', ' '.join(sys.argv[1:])] + p = subprocess.Popen(args, universal_newlines=True, close_fds=False) + os.close(pipe_w) + with os.fdopen(pipe_r) as f: + new_env = f.readline() + alias_str = f.read() + if p.wait() != 0: + raise subprocess.CalledProcessError( + returncode=p.returncode, + cmd=' '.join(sys.argv[1:]), + output=new_env + alias_str + ) + new_env = new_env.strip() + + old_env = json.loads(old_env) + new_env = json.loads(new_env) + + script_lines = [] + + for k, v in new_env.items(): + if ignored(k): + continue + v1 = old_env.get(k) + if not v1: + script_lines.append(comment('adding %s=%s' % (k, v))) + elif v1 != v: + script_lines.append(comment('updating %s=%s -> %s' % (k, v1, v))) + # process special variables + if k == 'PWD': + script_lines.append('cd %s' % escape(v)) + continue + else: + continue + if k == 'PATH': + value = ' '.join([escape(directory) + for directory in v.split(':')]) + else: + value = escape(v) + script_lines.append('set -g -x %s %s' % (k, value)) + + for var in set(old_env.keys()) - set(new_env.keys()): + script_lines.append(comment('removing %s' % var)) + script_lines.append('set -e %s' % var) + + script = '\n'.join(script_lines) + + alias_lines = [] + for line in alias_str.splitlines(): + _, rest = line.split(None, 1) + k, v = rest.split("=", 1) + alias_lines.append("alias " + escape_identifier(k) + "=" + v) + alias = '\n'.join(alias_lines) + + return script + '\n' + alias + +script_file = os.fdopen(3, 'w') + +if not sys.argv[1:]: + print('__bass_usage', file=script_file, end='') + sys.exit(0) + +try: + script = gen_script() +except subprocess.CalledProcessError as e: + sys.exit(e.returncode) +except Exception: + print('Bass internal error!', file=sys.stderr) + raise # traceback will output to stderr +except KeyboardInterrupt: + signal.signal(signal.SIGINT, signal.SIG_DFL) + os.kill(os.getpid(), signal.SIGINT) +else: + script_file.write(script) diff --git a/dot_config/private_fish/triton/github.com/edc/bass/functions/bass.fish b/dot_config/private_fish/triton/github.com/edc/bass/functions/bass.fish new file mode 100644 index 0000000..2b3af16 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/functions/bass.fish @@ -0,0 +1,29 @@ +function bass + set -l bash_args $argv + set -l bass_debug + if test "$bash_args[1]_" = '-d_' + set bass_debug true + set -e bash_args[1] + end + + set -l script_file (mktemp) + if command -v python3 >/dev/null 2>&1 + command python3 -sS (dirname (status -f))/__bass.py $bash_args 3>$script_file + else + command python -sS (dirname (status -f))/__bass.py $bash_args 3>$script_file + end + set -l bass_status $status + if test $bass_status -ne 0 + return $bass_status + end + + if test -n "$bass_debug" + cat $script_file + end + source $script_file + command rm $script_file +end + +function __bass_usage + echo "Usage: bass [-d] " +end diff --git a/dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/alias.sh b/dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/alias.sh new file mode 100644 index 0000000..f3e280c --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/alias.sh @@ -0,0 +1 @@ +alias k?="echo hello" diff --git a/dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/dollar_output.sh b/dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/dollar_output.sh new file mode 100644 index 0000000..e988315 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/dollar_output.sh @@ -0,0 +1,5 @@ +function dollar_output { + echo 'some program output with the $ symbol in it' +} + +dollar_output \ No newline at end of file diff --git a/dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/trailing_semicolon.sh b/dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/trailing_semicolon.sh new file mode 100644 index 0000000..5c5a0e0 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/test/fixtures/trailing_semicolon.sh @@ -0,0 +1,5 @@ +function trailing_semicolon() { + echo 'export SEMICOLON_RSTRIPPED=1;' +} + +trailing_semicolon diff --git a/dot_config/private_fish/triton/github.com/edc/bass/test/test_alias.fish b/dot_config/private_fish/triton/github.com/edc/bass/test/test_alias.fish new file mode 100644 index 0000000..1c86a80 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/test/test_alias.fish @@ -0,0 +1,10 @@ +set root (dirname (dirname (status -f))) +source $root/functions/bass.fish + +bass source $root/test/fixtures/alias.sh +set OUT (k\?) +if [ $OUT = "hello" ] + echo 'Success' +else + exit 1 +end diff --git a/dot_config/private_fish/triton/github.com/edc/bass/test/test_bass.fish b/dot_config/private_fish/triton/github.com/edc/bass/test/test_bass.fish new file mode 100644 index 0000000..31f81c2 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/test/test_bass.fish @@ -0,0 +1,18 @@ +source (dirname (status -f))/../functions/bass.fish + +bass +bass -d +bass -d export X=3 +bass export X=3 + +if test $status -ne 0 + echo 'failed: bass exited with status' $status + exit 1 +end + +if test -z "$X" + echo 'failed: $X should be set' + exit 1 +end + +echo 'Success' diff --git a/dot_config/private_fish/triton/github.com/edc/bass/test/test_dollar_on_output.fish b/dot_config/private_fish/triton/github.com/edc/bass/test/test_dollar_on_output.fish new file mode 100644 index 0000000..35f605d --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/test/test_dollar_on_output.fish @@ -0,0 +1,6 @@ +set root (dirname (status -f))/.. +source $root/functions/bass.fish + +bass source $root/test/fixtures/dollar_output.sh | grep -q 'some program output with the $ symbol in it' + +echo 'Success' diff --git a/dot_config/private_fish/triton/github.com/edc/bass/test/test_non_zero_returncode.fish b/dot_config/private_fish/triton/github.com/edc/bass/test/test_non_zero_returncode.fish new file mode 100644 index 0000000..36470dc --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/test/test_non_zero_returncode.fish @@ -0,0 +1,11 @@ +set root (dirname (dirname (status -f))) +source $root/functions/bass.fish + +bass false + +if test $status -ne 1 + echo 'failed: bass exited with status' $status 'when 1 is expected' + exit 1 +end + +echo 'Success' diff --git a/dot_config/private_fish/triton/github.com/edc/bass/test/test_trailing_semicolon.fish b/dot_config/private_fish/triton/github.com/edc/bass/test/test_trailing_semicolon.fish new file mode 100644 index 0000000..095b847 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/edc/bass/test/test_trailing_semicolon.fish @@ -0,0 +1,7 @@ +set root (dirname (dirname (status -f))) +source $root/functions/bass.fish + +bass (sh $root/test/fixtures/trailing_semicolon.sh) +and if [ "$SEMICOLON_RSTRIPPED" = "1" ] + echo 'Success' +end diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/LICENSE.md b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/LICENSE.md new file mode 100644 index 0000000..a0e5551 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2016 Jethro Kuan + +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/dot_config/private_fish/triton/github.com/jethrokuan/fzf/README.md b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/README.md new file mode 100644 index 0000000..eb6c8a1 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/README.md @@ -0,0 +1,93 @@ +# Fzf + +Integrate [fzf](https://github.com/junegunn/fzf) (command-line fuzzy finder) functionality into [Fish](https://github.com/fish-shell/fish-shell). Includes handy functions to: + +- complete commands via Tab +- search command history +- find and `cd` into sub-directories +- find and open files + +All functions: + +- are lazily-loaded to keep shell startup time down +- have configurable key bindings + +## Installation + +### System Requirements + +- [fzf](https://github.com/junegunn/fzf) >= `0.11.3` +- [Fish](https://github.com/fish-shell/fish-shell) >= `2.4.0` + +Install with [Fisher](https://github.com/jorgebucaran/fisher): + +```console +fisher install jethrokuan/fzf +``` + +## Quickstart + +| Legacy | New Keybindings | Remarks | +| ----------- | --------------- | ----------------------------------------------- | +| Ctrl-t | Ctrl-o | Find a file. | +| Ctrl-r | Ctrl-r | Search through command history. | +| Alt-c | Alt-c | cd into sub-directories (recursively searched). | +| Alt-Shift-c | Alt-Shift-c | cd into sub-directories, including hidden ones. | +| Ctrl-o | Alt-o | Open a file/dir using default editor ($EDITOR) | +| Ctrl-g | Alt-Shift-o | Open a file/dir using xdg-open or open command | + +Legacy keybindings are kept by default, but these have conflict with key bindings in Fish 2.4.0. If you want to use the new keybindings, ƒenter the following into your terminal: + +```fish +set -U FZF_LEGACY_KEYBINDINGS 0 +``` + +You can disable default keybindings altogether by running: + +```fish +set -U FZF_DISABLE_KEYBINDINGS 1 +``` + +> **Note:** On OS X, Alt+C (Option-C) types ç by default. In iTerm2, you can send the right escape sequence with Esc+C. If you configure the option key to act as +Esc (iTerm2 Preferences > Profiles > Default > Keys > Left option (⌥) acts as: > +Esc), then Alt+C will work for `fzf` as documented. + +## Commands + +| Variable | Remarks | Example | +| ---------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `FZF_FIND_FILE_COMMAND` | Modify the command used to generate the list of files | `set -U FZF_FIND_FILE_COMMAND "ag -l --hidden --ignore .git . \$dir 2> /dev/null"` or `set -U FZF_FIND_FILE_COMMAND "fd --type f . \$dir"` (`$dir` represents the directory being completed) | +| `FZF_CD_COMMAND` | Similar to ^ | Similar to ^ | +| `FZF_CD_WITH_HIDDEN_COMMAND` | Similar to ^ | Similar to ^ | +| `FZF_OPEN_COMMAND` | Similar to ^ | Similar to ^ | +| `FZF_PREVIEW_FILE_CMD` | Modify the command used to generate preview of files. | `set -U FZF_PREVIEW_FILE_CMD "head -n 10"` | +| `FZF_PREVIEW_DIR_CMD` | Modify the command used to generate preview of directories. | `set -U FZF_PREVIEW_DIR_CMD "ls"` | + +## Variables + +| Variable | Remarks | Example | +| -------------------------- | ------------------------------------------------------------- | ----------------------------------------------------- | +| `FZF_DEFAULT_OPTS` | Default options passed to every fzf command | `set -U FZF_DEFAULT_OPTS "--height 40"` | +| `FZF_FIND_FILE_OPTS` | Pass in additional arguments to the fzf command for find file | `set -U FZF_FIND_FILE_OPTS "--reverse --inline-info"` | +| `FZF_CD_OPTS` | Similar to ^ | Similar to ^ | +| `FZF_CD_WITH_HIDDEN_OPTS` | Similar to ^ | Similar to ^ | +| `FZF_REVERSE_ISEARCH_OPTS` | Similar to ^ | Similar to ^ | +| `FZF_OPEN_OPTS` | Similar to ^ | Similar to ^ | +| `FZF_COMPLETE_OPTS` | Similar to ^ | Similar to ^ | +| `FZF_TMUX` | Runs a tmux-friendly version of fzf instead. | `set -U FZF_TMUX 1` | +| `FZF_ENABLE_OPEN_PREVIEW` | Enable preview window open command. | `set -U FZF_ENABLE_OPEN_PREVIEW 1` | + +## `fzf` Tab Completions + +This package ships with a `fzf` widget for fancy tab completions. + +Please see [the wiki page](https://github.com/jethrokuan/fzf/wiki/FZF-Tab-Completions) for details. + +## Alternatives + +- [fzf.fish](https://github.com/patrickf3139/fzf.fish) is a newer fzf plugin with very similar features. It lacks fzf tab completion but includes functions for searching git log, git status, and browsing shell variables using fzf. Additionally, it is more likely to be maintained going forward. You can read more about the differences between it and this plugin on this `fzf.fish` [Wiki page](https://github.com/PatrickF1/fzf.fish/wiki/Prior-Art). +- The `fzf` utility ships with its [own out-of-the-box Fish integration](https://github.com/junegunn/fzf/blob/master/shell/key-bindings.fish). What sets this package apart is that it has better shell integration, most notably tab completions. They are not compatible so use one or the other. + +[tmux]: https://tmux.github.io/ + +## License + +[MIT](LICENSE.md) diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/conf.d/fzf.fish b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/conf.d/fzf.fish new file mode 100644 index 0000000..d22f583 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/conf.d/fzf.fish @@ -0,0 +1,63 @@ +set -q FZF_TMUX_HEIGHT; or set -U FZF_TMUX_HEIGHT "40%" +set -q FZF_DEFAULT_OPTS; or set -U FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT" +set -q FZF_LEGACY_KEYBINDINGS; or set -U FZF_LEGACY_KEYBINDINGS 1 +set -q FZF_DISABLE_KEYBINDINGS; or set -U FZF_DISABLE_KEYBINDINGS 0 +set -q FZF_PREVIEW_FILE_CMD; or set -U FZF_PREVIEW_FILE_CMD "head -n 10" +set -q FZF_PREVIEW_DIR_CMD; or set -U FZF_PREVIEW_DIR_CMD "ls" + +if test "$FZF_DISABLE_KEYBINDINGS" -ne 1 + if test "$FZF_LEGACY_KEYBINDINGS" -eq 1 + bind \ct '__fzf_find_file' + bind \cr '__fzf_reverse_isearch' + bind \ec '__fzf_cd' + bind \eC '__fzf_cd --hidden' + bind \cg '__fzf_open' + bind \co '__fzf_open --editor' + + if ! test "$fish_key_bindings" = fish_default_key_bindings + bind -M insert \ct '__fzf_find_file' + bind -M insert \cr '__fzf_reverse_isearch' + bind -M insert \ec '__fzf_cd' + bind -M insert \eC '__fzf_cd --hidden' + bind -M insert \cg '__fzf_open' + bind -M insert \co '__fzf_open --editor' + end + else + bind \co '__fzf_find_file' + bind \cr '__fzf_reverse_isearch' + bind \ec '__fzf_cd' + bind \eC '__fzf_cd --hidden' + bind \eO '__fzf_open' + bind \eo '__fzf_open --editor' + + if ! test "$fish_key_bindings" = fish_default_key_bindings + bind -M insert \co '__fzf_find_file' + bind -M insert \cr '__fzf_reverse_isearch' + bind -M insert \ec '__fzf_cd' + bind -M insert \eC '__fzf_cd --hidden' + bind -M insert \eO '__fzf_open' + bind -M insert \eo '__fzf_open --editor' + end + end + + if not bind --user \t >/dev/null 2>/dev/null + if set -q FZF_COMPLETE + bind \t '__fzf_complete' + if ! test "$fish_key_bindings" = fish_default_key_bindings + bind -M insert \t '__fzf_complete' + end + end + end +end + +function _fzf_uninstall -e fzf_uninstall + bind --user \ + | string replace --filter --regex -- "bind (.+)( '?__fzf.*)" 'bind -e $1' \ + | source + + set --names \ + | string replace --filter --regex '(^FZF)' 'set --erase $1' \ + | source + + functions --erase _fzf_uninstall +end diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/HEAD b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/HEAD new file mode 100644 index 0000000..cb089cd --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/branches/.keep b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/branches/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/config b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/config new file mode 100644 index 0000000..cb174ba --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/config @@ -0,0 +1,11 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[remote "origin"] + url = https://github.com/jethrokuan/fzf + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "master"] + remote = origin + merge = refs/heads/master diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/description b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_applypatch-msg.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_applypatch-msg.sample new file mode 100644 index 0000000..a5d7b84 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_commit-msg.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_commit-msg.sample new file mode 100644 index 0000000..b58d118 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_fsmonitor-watchman.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_fsmonitor-watchman.sample new file mode 100644 index 0000000..23e856f --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_fsmonitor-watchman.sample @@ -0,0 +1,174 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + my $last_update_line = ""; + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + $last_update_line = qq[\n"since": $last_update_token,]; + } + my $query = <<" END"; + ["query", "$git_work_tree", {$last_update_line + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_post-update.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_post-update.sample new file mode 100644 index 0000000..ec17ec1 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-applypatch.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-applypatch.sample new file mode 100644 index 0000000..4142082 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-commit.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-commit.sample new file mode 100644 index 0000000..e144712 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-merge-commit.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-merge-commit.sample new file mode 100644 index 0000000..399eab1 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-push.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-push.sample new file mode 100644 index 0000000..4ce688d --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-rebase.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-rebase.sample new file mode 100644 index 0000000..6cbef5c --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-receive.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-receive.sample new file mode 100644 index 0000000..a1fd29e --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_prepare-commit-msg.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_prepare-commit-msg.sample new file mode 100644 index 0000000..10fa14c --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_push-to-checkout.sample b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_push-to-checkout.sample new file mode 100644 index 0000000..af5a0c0 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/hooks/executable_push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/index b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/index new file mode 100644 index 0000000000000000000000000000000000000000..ff212f44401d020bb73ec7283d4397c3b217c63b GIT binary patch literal 1381 zcmZ?q402{*U|<4b-V|qV zvKTFR8Y)xn^h}+(y!(0{*Uc8wy&j1STt1%8u71I;dbue;H-Z7o92gBXZ!fBO(i2|i zbV)rb3-{7=w0l&zWxCv=0|k-{oI$RRF1}#nVESP+)SUgO=5XA)q#t23{SU{}m>P!7 z3itT53XdO^W#CWF&r8!w(NC*N(@V=N&H%a$W)6&ons)%zJk~wOXBEZ1wsDSTJiTN^ z;#t|Jp8}4xGl-{^<|UV8=I0gb$HxN=jZaP?VD3RwbA_8dpYjvMhXZr<-|wo>&3Gw#({^Xty2T7K=;o)Vmc*xI79pIED}Ilnn$Lc2 zRm?Jp71K?nL7w+9%zsUVv&i&GPek~0X0(+O02816U8q;hY08}@5kxC7&+DVH|= z5V?_okq?q{;rSpW$ki2?&E_%~8Y>uc)$iT@qe$~P^Gb)GCm*^s-MM<`EdwM^G8ift zaCLER=4dyMQ!bakaAfw)zs{@OY`;Q_D4@I{*A2zKty8t9Mwp*-xV3MkFmG_!DHV9p z1va5MUEswzsrO=bzh-FOos`}8{MLv6@IYX&1lqByC9N}0;NyYMlj=;XbuTt*WS(8D Y=6PMj)JHj7oSi}Yg4K&!q0i}c0M=E(00000 literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/info/exclude b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/info/exclude new file mode 100644 index 0000000..a5196d1 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/HEAD b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/HEAD new file mode 100644 index 0000000..aa2a393 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 479fa67d7439b23095e01b64987ae79a91a4e283 Hydroxycarbamide 1682119803 +0200 clone: from https://github.com/jethrokuan/fzf diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/refs/heads/master b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/refs/heads/master new file mode 100644 index 0000000..aa2a393 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/refs/heads/master @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 479fa67d7439b23095e01b64987ae79a91a4e283 Hydroxycarbamide 1682119803 +0200 clone: from https://github.com/jethrokuan/fzf diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/refs/remotes/origin/HEAD b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/refs/remotes/origin/HEAD new file mode 100644 index 0000000..aa2a393 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/logs/refs/remotes/origin/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 479fa67d7439b23095e01b64987ae79a91a4e283 Hydroxycarbamide 1682119803 +0200 clone: from https://github.com/jethrokuan/fzf diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/objects/info/.keep b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/objects/info/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/objects/pack/readonly_pack-179b27e22004791ebe272b2a53aad15c8605db62.idx b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/objects/pack/readonly_pack-179b27e22004791ebe272b2a53aad15c8605db62.idx new file mode 100644 index 0000000000000000000000000000000000000000..bb39a96fdd93d8f393d9327ece86a60022a0f106 GIT binary patch literal 22912 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 L(w{cFntT2aCa53@ literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/objects/pack/readonly_pack-179b27e22004791ebe272b2a53aad15c8605db62.pack b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/objects/pack/readonly_pack-179b27e22004791ebe272b2a53aad15c8605db62.pack new file mode 100644 index 0000000000000000000000000000000000000000..7ace81d33ebac1aec5576758c3a44bf86caa8e4f GIT binary patch literal 159217 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%0A>~%i6u%-So!|K-T5E#6;>Bi-fKX^N`|ITZD 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%0APrUACYK>1cO@ z0kxg(Mh6N;nF^I5om5AVprG!2dD$q|mpc91^Pu(pma%|)8HcmAR&$R~P5I^+*dLK~ zl1Ez#ngVLm#7jY-VWpZC6z-5%)v8&9HUycHCtxKY-?G(y>SVibvXecZ)wiAPa(jC? zff&uCl)UV?-&02>ATfufHo*)40zVL?{ufv0a#h9yq}gyS_r?@opKg{)SBh)Yg9NA( zlRTV)W)ZzI+21DF|NqZqm&pCiWNU#n@Q4E$DzbqMs+WOgmS~t$QvXu z0RcsEgS-Dx&uD>jvN5GH^S1K=Z?sQbXO>Z&JMewV-<|f}y`mSm(~LWIx!Dh`MoXBJ zd(SCP4*%@5XD-5=5%8ywaojZT{k+_FPk{hSB7g({P`Gja-?jQMu6@zFn+Hug@R|3N zYt@6J5L=wDwYt?)ZyBjRMHqq|Rv;EG&yxcu)evh5hS_#L(5Dm>`tv8q&!~%{tOI2w zrj#CADJJ}um55S$@B0^Hog0JiZq`0q={$B~tt1{xht!1#5bQ^mG^{qJr^%LEi?gfqI`|1$nJCzybdEQUR-z#l=f$z zV8yPeK_hSH_2e4-4I1<`?R&{J+YnVjLiOrNKm8w0n>4Q&zljbCgz=&8-x&$m{E6{B zK^Q;uYW5t7Cpe}OvbZVG5QOnN8^H@rLLr&+6nY6W9(a;S4!`>j+Lbio+JF zE_A_X^!KWXqz5*^eM(06|Bj8h78g|t#%Ceg+e8tSZcTKUwD_F#p&5ET=Zpm=cMd-U|9pe4^JhvgcHU;5{I zupxlQY57DeF8ng`n8#>aTu72w0yizpQ25(Rvy+@khx%(~xTtxLG^) zhDdu$&K4Sdx6V~dF{i&AGoCtHfa7vLrCT~(2}i1qy54J@SQC91KzvwJcCU_-j7b{x zExHIX?1*3fM1*)munYY3kt%Pd^<7t*QLK)^z&QVnO*-+?D%$79~2+V@E3f(ew z6c-1~R7^Z1pV%{%HX`@ogTE$XHkfi*bSQu4$hcLS4}DCLkES@$en%E8kC0!#>ma9z zh^-4dpV?IYoI2!uRbheynIwUcp%FR1!uoy>?8BuKhujbA zs44CnznLQ2Sr!=>_Oy-6*2A8X5p0FaIZuygmqT}tb>4QrNk-Y^v%80b-NsPbnOi1K z`k-B9HVR7ycTsw?@Wauc(1*ceWN2QZPrgU{OAk7IhvgnMHI0fTNoUoX>sq>cTC}QC z6U^V(H|?v86m#VG7qTt9WiVN+!7VZ&u-~BQE(=1>M4h~Xe2ZO*u_+35pnB4z4i;|% z-8zDk(${J})3?2af=$|o@Fg!4Wrx<4#g#FVS2DJ4HOLw=o2G6t{OdgNt(;9ywA{`f zXJRM4&)un4k@imCTX07`SNRWYt&<2JON)?fYT$ zME2u|e<8mErYV|S1WL4Xq~#EsccP^cW#Tx@DeP4^1XJ`9%!C{XV#b>}XjoaVy+cwh zX;bw0s=1=IQEY?AB56c-H6m6wOEFz&hfLz$^OgEQbyn^^Z_M>-c5W%WcSIkGHSiU^ z7rvr*w>{bCbYcphfwy9(R`tA2`98)UNpB?{>+A|AOrMM-)=xDXp3;zuU;b&Ccg1Pj}Bo zu?HyZTq?QIF{x0{AK%jd3mcfyp?(ygBXGPshm-{U2A$g(>uW~xeQ<6IQFSpFJ0CYc zCnqx_IVCHyrPO~RUZMR!F9mrpMkgyn_hG{4o2rXj?^sddPr~gquFU?*mn*|zxzpaE zmN9~!=ZFvhdfh?Z`_R7NAXC%mD;pSoWARdSjP%5M z#AVA@8Plxu%#n5cH7&>2H#Ia=$iw3`@C=l)^cn_b=^?0KsbOl_{2HbQ<Xk|$_*(|XJ}L3Bq{?tmOlBn+@@;X_ggYuB|ccEW+zHt#)xb77mX%N-ZaWU0|HT5 zg7(3EK&S9G{fvR`e81%MrpCC?zJ!?jqV?G&#Lu=pmU;zUC6Q24@%`zP(D`Cl2c1!6 zvTOWrIZJ!ZcnE(BXu#p~LXH&aFC@J=?~SQK(F06vHSWB|D|3g@B4&X@b%~0A_}7>%3HlM4u~|7f zxiPxU5B?XkN>WXLdRBPh8hICBr1B`p7KYNcPYdOTYy&50hlefZyRMlHskkG5DNp1h zAeGP`M1sR-xb$N%IiDbDJ3mr3_p`I0qLdGxCsh7_ixPhP+mY|B`C6dewP zj~PVtqL#~z7vD+ep@vl&JhJHH!(BzzK0a(mE!A|B^z<k%5Z%7*y0J4qDvbwU9YWH(APy1j zzTN#5pld;49l4Y2h->82%Gh54aQzHpVT*_3>->;)ds&tO>&qBcastciDC zlQO2Os=6$8hx6mGz6oSi#tQp3kWG=vH#4u82mVHVZj7xqLsA+=GV)5X1tM#r2!(@( zZ*zm!q-Oa_#ArlJ$)4XAnloT%CyaCjR@OMGG3K!xS97NX)+Udo8`cTV?2J49m={PfJ8Q6g3jentONhLn)f+){ zigaxR7X?khoVH5ehU(VzDPb8TH=4^_KWNmruhP!zCrA?$2(0n?B2+Ht%S`;;@!yfp z30=;ELy}wKt?PuKg9aZuI5%#_ALew{+THl*Qt0=ws1@i$1rv>Xgw!?5#<(Oc+13&I zQp?dIKj1bJ^0e&q|n?Y{(OuUf~=qgX( zw9|)zkuPMfRb-6rHo~C&03TpQ<_L=gBaJP^C63!`RlegF3T8h{ZAs+kH!l?(f73z6`SBN+Uh?;~AKINhSWqB#ego7+W1s1H~J^I0RUD4C) zg?8q+aT9cFKMGm5VMq`{vgO{V?$slD%CHQF3zN%x`()c=RXT3-e>$E?yru1{xW)32 zOwU)k3XBH(a83M6ADXA55{cKClWauM+TWzW=jzMm zb8pObPn(2MmGC~>b4CO!xXC(VF)jIV=xOy z3OhF{akU_h_2nm^s6H*QdDO7{-r^Y0ulPvD z`k*S2)1K{9@audW-q0D|-l3a|?&i#@d1V}S7sCrZ>ZhOg{+wMR2`wgrR)ZJ%SGK4d zTHH*P!`l}7vW^`KdkRJYjOAbBeIFC8Zu4gPYRV0j)|cCuOuJv?7q0HElphD}kdk24 zF)qZ`dl_q%o}m}u@HZ~@>Few9iYwOm9<4}cl6EWZt0I>;U0(nQw&y1MK>t@3l7UO( zli!j^IGxy4X!y8KAN^7!|9&+%zz`p1@hd3h-zlaYG^!S1@WvgE_V5#@_AiL9#MML; z6nwes{W+MtMSZZ~;FGe;c?Z5>1ynEJI&VkK_$c5I7VhOfvc8eBeDDJA50c2>DGpwe zdW3_V)#R^EL-`dWkMi0*~k$%QB5tHG*J;;S2F({H=-B0xA{l1D5FKs_e0W5 zeZnXHD=$q3+2Vug16JSm?=&OCf`Q?FRpD(zwydy(BvaUHpya4)Y!*s$9!axW{W{_F zcT2~Xfv((#j2GXgYW>PaQOA5;aE#cxEh=dBybXdwjLiOX&@0&nkn!wWB zPJ{b4Y`)f21))~T7)NWHkkyvA++)vwcnWC zrVQ%P9pE7|=<=0=99zAfm>>-!vN{XS1*dy;<_-{`^b0z5A3P54e+E;A-@#wO{klu-hHp8rxM zX#v5`x=8^<2^YG{JNL4kjF&anHv`GbAhu3`WuT_~A9~uMlTO>y6WeFYgPp}sk9BL9 z^~O+8jjt;#`XSPN2R6TXU1FuG)d2TqXMS}do!sTx4hVP;3&jRn=Wnh35X+a`I=S)+ z=$^L5$z86(POUQfDvwtMe**`CxHagMj~3f2YYixF_QF>mngC>vkX9!^!9UIeqyV0o z^SPF^x@Wmjn>*({mwuRZ(&%%3Wp?{;5DxxbxgfFh(Y0khZ*jPEaA52#=oarmCCdeI z({ig;iFO-wM<}vf%!Cu;x}8vTT(4g6Ebxbup8i-Z7^faysR9E~X_8QX2P0>?SUo=70`@hrY47=Poo4`}h zRs1i?t8MT?kTCq8ij*8(l54Z_b^DjA+p=i=zK^(*jJvNq87C2%&Bce-5n?&P`7^E4 z+F?jDJ1;OCz!9(zr2GA|X@0%YTbB4{uEhneU#q{s`WZ9bDgywBV}`TX0s7=)y@on; z`g{AMz7I}w0)^6hxvm?NflX-V_LDy`t6D2U zf5NZw3i0Z^BeQZN1|+z^U$%f)VW*mjb&JL%_Nav2gh=Z7*bp7Y^6$xcw%DGvDV;FUwRqrOm04@7 zlmmu1)=d>@guxhB3%Ln$8v+zVP}YzyM+YAs%7XKQd3z5Z!WiGIE3zBu&|=4-h@F|D zI0kXLLDQA?PJ`*G95gaP4>0&7fo0*@@lvr>v<IUn~pBr6Fg zjnVI2v#yS3yVk{^+!3Qr=U(82?0hSVr7f+i+Ft z5m3z)ChQ0p0Q&czPswAMc!W1EXIM}jk5_Gg&4WKLAHfT-+#Rvz6!-=79{s&>SUhA| zpBl#M#(^oOyGED3&%v)|UiR`5nPw9K80kSIJpu;4?jyg;RfcMnf(r+a?l3Z#TW$<~ zv0rH}v7WpEd`(1TIt6Be_?7?JnsuNTwUe^VN6?5pP<$nqYb;nILarXAjWT4uq)jTv zwTTp#=q*@m23H>vo{G1}B!_PRmbV1M&1(ATiKHeLD2EsfltV0Kq+$sCD~A{kNK*F6 zL^<(aa)|9WbH`YJ$&Az}nk14#b@%I)@DybS3tSshr+9{THJ<5}H`l*2y#8*P=fgfV zj9f6#aDh0;S|oIt*7$}E_j?Vslqsap#zv_$O{5(>b{&2(HA-C<|Mnt>HMq4^`L#~o z!=kLJ$})qcK9^9eLO3Xg*z&kWcuM^f641h#{)T?cdvd$~283*yT)ezoQr}6d$Xq&L zd*C5mP5B&jXA!~u)Nzr`QcpvSAP&3l8VxWG4s_0=!d(yS!Z=fI^$K>YQd(1iUDZ)Y zZL3?R!j&H@EqoTMMEE_27!H&}%=wx_?Cpz6j*U^Da3Q`BQBYThQExbHsYx1L@e2O9#tzYeW=}DJ{ z%}J%}mP5Q`K`2$Vy*)@-FGv>II_8jO=Fj`4$PGl71^L<5^ca7nkX$%i#wNcSca=Vm z@SuSdEip+g**za_riS~F{*hG;)Ksh3KnXYkMuKKQ|M|*zj(Us?*0V9uo5ZOv+mVqk z-}6d80F-begzkd}>HQNex}&Qc(B%<@9od4NiS=Z%u{Wl222RIDJE5yE+m?tVC1q|G zxaHUpf z-CwCm@i)mGqAeCobxkGzU4D3PXghu9{Y)=6zPNhYP@wXjNcI<*vckU*zSTGF_WOQ2 zRwnc{7_)J@S|>G9rOS|j^@I;#AQKsAkN(ZW*$wOl#%Q7Mjr1hzG01)zV_83oU!e5F z9}|y>{iwKgfYkfb&Sy)+B_k3Pp782bnaOXU6yQ>pK=o~-@E}uItdvKlqAm#KpDVs2 zaS9c|sHt6FTC*5BTd^Ed|nvsSJXz4lUf84+y{K@zA-@F9h!0g8-m~%GgBx3 z*)H<@Rs`&($Uy;xNghhS)LLU47O`1XM}ugWLgQsY;jZ&}>-tB6ExMbxSw-c6NEs%1 z3@irB9k8q9Rze8XAcfii5L{5M`3IMfV%8nhIjRxtw;3WOHWgQ}utpqJdqaKE%M`)5 znh5GM`@q{RpJ3MyyxnKk&^%+2miIrM{zdrN*0%ZSi!xK zSYLnLD9S7!Vr;b7U>?4kDrefv7~KLH*8Z6fRgfv8I6E|WHw7#|(?voMO2j+v_kAhU zq0Y*K{b|!vNPfLt3Tlu}-JG`Uk#_)ZWPz;iOA3jyk#_!;ikGzbChC%` zG)4fAUSi3NJ3R46LJkfwB|0Z_rVSGXv$6>q_J{C-Vi+ivfsdBlai+D>n3(cv-vGog zOZ+c3*C$4Wxyl5)Y?VaeeNGDeKk9-@zTVhKo26TZzBjc9QdjG0zvy<~)!I#G&{$w< z_+}F|WoQLMh1KOBdqPyic8uMEV3oj0J00 zTr$v2^BWe+DRb5cPXwkLvpg@X*zRBiS)G%J@K3PFbIS3Nvu*!#|7uS6ty98>8i9>8-l*!7gNa~AxEzuTiXI#(3T-ahovSY1g7R?n8#^T znoMOl^i8tbVm1&Y9AuvdFnV(V5b=y~5;7B8wotS!MApE3ZVEzulhigLdE*+|Xx5-x zoXk%M)mlQi@m4NhnEFz0ndUx_zoxN5Lo^4uwge5fy52VpynlGOe|O(ZCXKnfa832Q z30!SRPDx^POp<;<$;SsbFyOcJFnLJrdyE7Y#Wzamju+?%hzV#EAN4U}MXE>pSz!zk zVH%^r<5WNf@RDKjJJD1k_|R&aB5d=1LCnx`);r8vnJuG6yDJArFq$*uPgnjHl7ROs z?2OFRlqx_|4Oh@aGrp+_zd0U|=xlYhuMNF@7^``gVg=?b#DH0(8^t(!$e4Co7r+#e zxVr^+{Tdpz^KF#lRpir-LP6R({F0hL8O%H&=QV8JSDsz=UL%$|klA|++>Xy1^6K`s zuC(rU2R()hIuBFCmDT8ZXECC5y7(7PDm8V9>!CJCsr293PxaX)Q(dXyn8`n}{&Ik~ zSCmqm@5TixIkT{zAo(DGD&x`X2&10zVQuNv1<+C;xl=Amd`4w90b!PEB4!q-p;j~z zNERPWmzQ0Zo))JOr^jZuG&=kkM28&~s z;5XOJUlYJ@oj*Tk<=^P>xm$14mY+GBT5g_Wb;$d(T(C%8&ai~DVwc`14~^;|>s$+n zn10M1-Uv*#CWIBjF!`sb4&8l&)|o+~Lv?{fi<$nQewU#&zf=cMEhYoXjCV)K5JpSTa0P`Hn|PM6$|Ustjzo{fQr@EGz-wB|0foRZv~vudBSB3zKs{kKjCbS zp5q$^VS&*NBn++%*h*uWfC!b>Ud;rB6zo&sHw7pv9DTAWm>Z17od<%uCufyB$pBsmUL z>riJ`?&h_kHcEnh8Z#7ch(yxE{^%4p2}69@VnPHe7t=mpXte}id?-G3-_!I67lyoL z^Zc66N*j+TU)X5T+7&eqvQ-Bac6&_UO_#j|bbWx| zKLG}#{&i*{H`a0M$b98v9_~s-QzhLAP^{!4l}! zFp{Q`}>&t{gfmNxjtK+Kbws!ZXK~grQA|c%!(%s$NAT8Y~ zC?V2~lyryEB_-VV1O?W@$NH9 zAP{IWE6{&!o~v-T=^Y}SRB=W&wUl_kfuj+FbTo#&77o{9kn>5)2+;8F@cnju7m+40 z-B;mHF;3Rif$n6lulKfBF>tZC{Yj!HMP^1js^*&uWDMprPOnjLBZx&64FdjjBX~SA z&9s*^owbN_!GRQ)B3^ii@!l@_fg$Uc0F|Sm4#_Bk6%ixZ@`^k?kI@ST$xonej>@+x zk^N~zI2F0x-k*YXE4*;#Ic(%IW(GBJt zF0Y*PifT_MwfeLgYQILBHF5lnW-XwVYao66_^QU*XBNk;`cNl8BIw!QwSZ2lz7fJ~ zoTM{MYQ=D--gst?w6}UHrdIt83O~Cy$4v+EJa}XVwARt3NeQR3j){88lMJ9~bE$|8 zSbr#H%mM1XYX&!iqc|a^Zpu?-Z_XX)S1Uw07~ZGOB7c{JV#c?F8P~=KrzeuNO?eJi zmSzrLw&bFt=vOhGd|rYR1I7>pwE|PSP3^wRQbze+tv zfevT)%?uT(dNrsR=&5=bX_R_~M+QqL;6oj8L?G5Vrnu|m8!!aFx<8^cH1y_*i4}T~ z3z~5k5>v~``LI2!2azpMkne+`0+aWL^!|mt|J{qB!(v4*v-#fvj1ODo;rpCD`JNqx zp%*5J=H4?fJjtjqMi(yoAcd;z>h)iHe=+Vwg}J@C5XU%Oq4fSEwo?bcu5(z=eR_ag0a(fl#QA7kbs#og275`_0zc<|XSL1)J`v=Ub>D7%!0 zFzbo*7E&4M2!ok8GX_jy6V@}OF5d#LbOU_HAkyuJ#q)S2{c{TSl$jkk&FuwnM74S8 zIb|qMYi=9}$ZB7%g9;;EzA`TNPQdWX8c187j>jnGg75Ow!bmdopLz56NV{9)iM#Wf zVEJYgt|fh#3iB94>pvG_0v+s9`Mx0&H4rOhEJ53LV_9+E_M5#vV%&uc^C|q z;tzuRyC%<^ykc&G2j9bQC&vpBTR0znb&ohP@2V>LbnM#vsd2`}R&Jj1mVWtIUvR3S za)J#(?`gztxR21ds1uVN>P=(#1;5wwu?I^}tON<4!0TKckH;1>IL-qS7rngX!M)lY zJ2r?J)yuw=jjs->Xpsgq$-4$UKdJFizMv{9y3i*^aBF;?lP&;y+TW*+~98K$EWMArl6V*Q}b;}*ul`htK**{E$3EsNw>8e@?Ym$<`!P@k4mK{8rUG6#FG!J6cVp@89eQ=O4Zhg0VNSP6A58zlRtES>)#pq-rv(>Y z`Y%o5%k0Lbx-AtdJ?kC(j)$MBhQ_$U$U$sT9MnQ6jUNeBurd^BQY9E~7xReIk$ePq zv)Jk(CqzaU@gK26cCm#EM>B&vwP?i6dEHXTVW?{ZbEM`cFqmbBGk&kZ)-{CKn{#U}8?Uy&t?Nic9HK_O5kt zzb%V0drZjGuhsSrHdE`#GP@e<@->v5i>2tobn{r&A zIySWTIv268sIIPWWG~@NXc=e`7kH$Egz*D?@$#$d&5C&S>y2X1uQo&TedWOdalPE& zEtpZ@mIqUTrtb!!_i)Ek``wy{oa~!u;$_$9nnV{dY;hp4 zfSPfrQ1kDrfGotKa_CDAYv93b5{^>E`X?)in`jxw8Dk8*z2~8T2OFU*XFo28sb&cm zp`^xjI8 zFL*|7Z0vD@&B4G>Q?kd2Z`qBf?~$XW0rn3kq1E$l6D+)%6?Chx0s z0#vRClA`-*)Xs(8MoMeVr^o#939|Z&8>ymIgDqC|u70PHXcQuY3Br%z=A`x5S5QKq z2!%Qo_9+rznd~-Pg(L+K!P14Mg`rBKM>Rfec&dCvz?~NqBJ*;NSBa)aq+TDs_md21XJFLkigfSO42h-#YiY7Sfva(FLQ*9L?Sqv`y?}} zFq`p=OP}x)saf`vpk{j$yB?ey-jFrBp8E%6%Caai$31DDe#Gb_e_{(($>U&n3}vS8 zOia9SY2Vu%YI+%DGSTeC<9!7_6vNwkw!eu9?RUif8HJS9V=N?FDk0-|t(r-p#<9$0 zhD&JwmUDAR$pVeI`VIFE%;y)rPQ%d-L*^ANL)$BpR5);ys|Sy13A^LC(ebBCU9LAr zOZIK#KSe0y;JjC4LkbU$RFqeyB{&oYcSjzC#S}ydux{@=nwaQj2`K1 z&K2v=7icK@sk!W&NmU+uEi+o+3KQ>xqZR*o6eUBtFGse$mq&;zzC7S1+;*E0t_6@CO}I%g>V>{#NmQLogYwY_Q5eU z{~Wo-zwY>9B2(FyL?j(a{?t4F-5Nn)(SzO!Tx}ByI08%P1}ygxcgB5|I9cT8m9KTG_j-xYr$TCie8~`?t@i+k0=}w60z%% zDuY!uG!+rEmvP}%S`uA>n!zQ62ebx%(7XjR3nlITOVcElqcdKAmR2v;R0=tZ2aAoC zh}r|D$;%7d55NQdh%A0PZ4SO@flGa6$B>qIlEFmP-HQB}5DIh77%f(K~ zUJsW=#-7iGqsI3&2O2-AIth|8?IA6AQ0vALRdRtrTzE8aTVPipFVyXuVJiZM9q#8} z{B2D%udml2>6B83RRR`d;faL%Uqu)DB{5i%$5yQ$Ne@3+!|(K(k?Pws{9XGrqhySc z{AYyE+$a9Mutu$m(za*qSlPs-Y>f3}tODgpBob5ERnj#DOwRi=UvPBFW(LaBOOZZN z|4qA6laaof>y^<#aLyGWy{ba$?XqVdp>CE%28+OP?h=VGDU;Jdp?gLQ(+_ zv<0)o^6%!f&wcpHW8O1wFNJ9Grn}S;GlAj&nA6)FNZ&e4KHxHXbsquHB7*o`#A6o% zf*Z2V)}h}6&tfsf`7q1WGQM{GFXm6AhL^DUuvF0XBo z{p2Kx5BO+yw=lK0V3whm|G)e&Jt4&TRZ5|Iomeo=hzbqq`N2n5z?5`E9tPS416B-J zrVQKm#R#vlWQzMk%bWmz3}~kUY}b1;0~m$gk}VXi&AI9u^_fcg1;PUMSczPp6*xUW z>G47D7R(Aj3HuE-)c*-JAh^CicC(S^Y}(5~^YYta@%1~Q^117@9S18AV2#>&0+xB$ zHO{uZKH^}JMgF#L0v^N*LL31CJR;yt{&Zu!A=j$K=i!NOa8w52Z)wtX5df)!72vg( zdC+gSU{-nm-D`XOkX(~(g!OpOvDF~ZbxEK+U^yh10|N8kgmYMh& z6p*eDQtT>h5b)=}pW4;21qJ>k{T+Br{*J~rYs@0b@&f1y39Ln*@LPIMZEj6ETeWtX zIcSht8i?=+e-CC2DlSA18UtLo8^DEo26f>K%q?xqe)(~r9D@A#9sk~sBbg`M`(1pZ z+I+ph&~elfJeN% z`ur%8jWUf@E9EFsS=q|d{3%prC4qbcAY5i{C6{zV2o=+#lVgh%<5H5cGgCh(+LS7$ zX~V4HCT_$*Xbaj11Vbm90I@UTM*}^wDpXSR3`!%VFe#{Ng=|{UTC&V&FNB4R&GnJz zZ?h+2#z;e)l%2v<0*csB$Bx4@IRbnT*}-M-`+7-`o))F@r(0mhh2)>I(pc z-3#X4pZUUnxx%$&=w3VE5P+9?e?Hr#vEEtGNg42^nI)@YB&N%&TPRI9FT#S}6(BbO z&x!o`Tr{Ff`Fr+u9)3Dq{L!yH8$Zm?)g1s4Qcl#pHJA!O$OxF!ds|rAYSF)m*i^UL z`$t-b6bHH(>-U*@m{WuLhEZI10JWIE#^na@AB;URm|tobZK!`f!TU{ZPoEJ~b%}bh z4hHl9=7wtGZQH54>mn?w2nbdw(v{MmbT~f-8Rj5$ufqEm0N=Uwn&#lI?8i>50n1b4 zfs6~mv|$4wK7RgE8hUdCiJ|at5O_cL zvGy9A5^xU=*1WRqkm>G?Oorp6WpZGBP~`4vCeROmkFS{W-j zz801eSMs&=d=1ERGbjp$35%OMNck$|F0Q@NMM)jk48td=r}$>-0u#ex!y2&0!NE!V zGjR}J@_8i>tD~)*i9k1Z@|*CE*_TAp397mca*FjFnjE!U>YQ~v>Krp%*it!J z7%eTRaACP?elY> z#~cYYwq$1~`NgwHI7pCa@Y66H_L)6pX3KCnWTcq)<`!;8F}B8WQ@F5G~H_v!s{ISzihyiI16BquEgF4>#XRlE315bRp!?ja8i!S#li}&A-Q= z&;RNv&P8Y}P1;^=y5%%}MC0ddREm7XWtgHwCEk*vSXHH)7N#*$oE+|K$yb-LxQ~>a zbKhO~u0xJ|yTy5jG(*0zng`S=x%oSeVmu;VXGvl;cF{vL+kU(q-%_@iTeV%RuPX5J zPNkeEnwjf|N~4LuYz^k4R6?ixnG#za^nna!wr7c69hP`_+K9*;V&Y4zpN(l|*zmIh zq#}8rR>AG01xXd`0?1mHs87K>N|rKm-408@gZ*$SbH%fII&LQY7p$eZRA+5pl|5Fo zXktn{ZP%*%+e}s$c@??tX4v)_s#~KcPXs%@CLy4BDiH42PsW#6YNfi`wvKM^?$-QB z*awicjZvYHsmmA%E(D*HfxT*x*W*D>6)#X17s$_;-Hwi1O%;VB-(Cd-eVQYeSnpL^ zH_s?woKaEb^4Qr%uq;kAt+CsjwIFh&-eWvA+ym%7K|sFhw_Tb~;QtG{bjO;Pxb@RT3v=!c$dpCQ-D}5K>rLg5g}*&aJfcfZtF|# z5)Vxow~tL^OS_Pt_39+mfAMmWe_^$wWb?PvGhR-Wh><^cwS`;Gx^YOt-S^2l1 zOcG?_eei2$V1|ElPy8EQdPR{E+dnsIW^v9)fAzY2p$WJr3ti~zfD89W9Q^xr%3v~T znfA5M0%t8TuKI^ymMi=*qN&e@Innd1{W+ntc1ST1Av{^DAFu#FjfVrY@!tUU_wT=V z`)EMFvnRA}n$+zsiq~j=EIG(CxbB02i#7ENTcl-RanI%Im4W7-^T!9hiAAYy z!ZP&4j@?zE(GuVu7BoW}e`wq?d>d=~3TE7#Gfz?+MCbuKxDO7&_-n7qEUf!h6XEs3 z?>fs0X-sAsI}fxjJCPee-z3ntfV~1%`LC@KgOq=1-FjXx#II`q$Tz)*hC)#*DKA

LUCsm& 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 Wih&fXw;$ z@%N4qnfNKAyE{}VX66VqWWQUFzh)uOFf%)8D`_y`VJD>tUo7FHkfh0|#^k2$Sf_o7 w$0?v_$B=-v9L5Q^O;hry5g1THH0cUP2E{HRm^*$a1r4=Q*^E{Q_?p500grb!uK)l5 literal 0 HcmV?d00001 diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/packed-refs b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/packed-refs new file mode 100644 index 0000000..57867e3 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/packed-refs @@ -0,0 +1,8 @@ +# pack-refs with: peeled fully-peeled sorted +12557ee6359c6d4d25dd1e64945e31e18c8198d7 refs/remotes/origin/feat/remove-hardcoded-sort +479fa67d7439b23095e01b64987ae79a91a4e283 refs/remotes/origin/master +8e694416e4fc413731117724b2bfb616326ecb99 refs/tags/0.12.1-beta +31c1e193bc8fa6acf126c0595d320de25fa1fe4d refs/tags/0.13.3 +d165e1f7cbf068b3508cf7c78719e28a11d27995 refs/tags/0.15.1 +67b52003b4509d06140eb82fa6be801079f62937 refs/tags/0.16.5 +c3defd4a922e97120503b45e26efa775bc672b50 refs/tags/0.16.6 diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/heads/master b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/heads/master new file mode 100644 index 0000000..86421c7 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/heads/master @@ -0,0 +1 @@ +479fa67d7439b23095e01b64987ae79a91a4e283 diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/remotes/origin/HEAD b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/remotes/origin/HEAD new file mode 100644 index 0000000..6efe28f --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/remotes/origin/HEAD @@ -0,0 +1 @@ +ref: refs/remotes/origin/master diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/tags/.keep b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_git/refs/tags/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_github/workflows/ci.yml b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_github/workflows/ci.yml new file mode 100644 index 0000000..e120ed9 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/dot_github/workflows/ci.yml @@ -0,0 +1,22 @@ +name: CI + +on: push + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Install Fish + run: | + sudo apt-add-repository -yn ppa:fish-shell/release-3 + sudo apt-get update + sudo apt-get install -y fish + + - name: Install Tools + run: | + curl -sL https://git.io/fisher | source + fisher install $GITHUB_WORKSPACE + bind --user | string match --entire __fzf + shell: fish {0} diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_cd.fish b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_cd.fish new file mode 100644 index 0000000..c79a725 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_cd.fish @@ -0,0 +1,49 @@ +function __fzf_cd -d "Change directory" + set -l commandline (__fzf_parse_commandline) + set -l dir $commandline[1] + set -l fzf_query $commandline[2] + + if not type -q argparse + # Fallback for fish shell version < 2.7 + function argparse + functions -e argparse # deletes itself + end + if contains -- --hidden $argv; or contains -- -h $argv + set _flag_hidden "yes" + end + end + + # Fish shell version >= v2.7, use argparse + set -l options "h/hidden" + argparse $options -- $argv + + set -l COMMAND + + set -q FZF_CD_COMMAND + or set -l FZF_CD_COMMAND " + command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \ + -o -type d -print 2> /dev/null | sed 's@^\./@@'" + + set -q FZF_CD_WITH_HIDDEN_COMMAND + or set -l FZF_CD_WITH_HIDDEN_COMMAND " + command find -L \$dir \ + \\( -path '*/\\.git*' -o -fstype 'dev' -o -fstype 'proc' \\) -prune \ + -o -type d -print 2> /dev/null | sed 1d | cut -b3-" + + if set -q _flag_hidden + set COMMAND $FZF_CD_WITH_HIDDEN_COMMAND + else + set COMMAND $FZF_CD_COMMAND + end + + eval "$COMMAND | "(__fzfcmd)" +m $FZF_DEFAULT_OPTS $FZF_CD_OPTS --query \"$fzf_query\"" | read -l select + + if not test -z "$select" + builtin cd "$select" + + # Remove last token from commandline. + commandline -t "" + end + + commandline -f repaint +end diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_complete.fish b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_complete.fish new file mode 100644 index 0000000..e8848fa --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_complete.fish @@ -0,0 +1,168 @@ +## +# Use fzf as fish completion widget. +# +# +# When FZF_COMPLETE variable is set, fzf is used as completion +# widget for the fish shell by binding the TAB key. +# +# FZF_COMPLETE can have some special numeric values: +# +# `set FZF_COMPLETE 0` basic widget accepts with TAB key +# `set FZF_COMPLETE 1` extends 0 with candidate preview window +# `set FZF_COMPLETE 2` same as 1 but TAB walks on candidates +# `set FZF_COMPLETE 3` multi TAB selection, RETURN accepts selected ones. +# +# Any other value of FZF_COMPLETE is given directly as options to fzf. +# +# If you prefer to set more advanced options, take a look at the +# `__fzf_complete_opts` function and override that in your environment. + + +# modified from https://github.com/junegunn/fzf/wiki/Examples-(fish)#completion +function __fzf_complete -d 'fzf completion and print selection back to commandline' + # As of 2.6, fish's "complete" function does not understand + # subcommands. Instead, we use the same hack as __fish_complete_subcommand and + # extract the subcommand manually. + set -l cmd (commandline -co) (commandline -ct) + + switch $cmd[1] + case env sudo + for i in (seq 2 (count $cmd)) + switch $cmd[$i] + case '-*' + case '*=*' + case '*' + set cmd $cmd[$i..-1] + break + end + end + end + + set -l cmd_lastw $cmd[-1] + set cmd (string join -- ' ' $cmd) + + set -l initial_query '' + test -n "$cmd_lastw"; and set initial_query --query="$cmd_lastw" + + set -l complist (complete -C$cmd) + set -l result + + # do nothing if there is nothing to select from + test -z "$complist"; and return + + set -l compwc (echo $complist | wc -w) + if test $compwc -eq 1 + # if there is only one option dont open fzf + set result "$complist" + else + + set -l query + string join -- \n $complist \ + | eval (__fzfcmd) (string escape --no-quoted -- $initial_query) --print-query (__fzf_complete_opts) \ + | cut -f1 \ + | while read -l r + # first line is the user entered query + if test -z "$query" + set query $r + # rest of lines are selected candidates + else + set result $result $r + end + end + + # exit if user canceled + if test -z "$query" ;and test -z "$result" + commandline -f repaint + return + end + + # if user accepted but no candidate matches, use the input as result + if test -z "$result" + set result $query + end + end + + set prefix (string sub -s 1 -l 1 -- (commandline -t)) + for i in (seq (count $result)) + set -l r $result[$i] + switch $prefix + case "'" + commandline -t -- (string escape -- $r) + case '"' + if string match '*"*' -- $r >/dev/null + commandline -t -- (string escape -- $r) + else + commandline -t -- '"'$r'"' + end + case '~' + commandline -t -- (string sub -s 2 (string escape -n -- $r)) + case '*' + commandline -t -- $r + end + [ $i -lt (count $result) ]; and commandline -i ' ' + end + + commandline -f repaint +end + +function __fzf_complete_opts_common + if set -q FZF_DEFAULT_OPTS + echo $FZF_DEFAULT_OPTS + end + echo --cycle --reverse --inline-info +end + +function __fzf_complete_opts_tab_accepts + echo --bind tab:accept,btab:cancel +end + +function __fzf_complete_opts_tab_walks + echo --bind tab:down,btab:up +end + +function __fzf_complete_opts_preview + set -l file (status -f) + echo --with-nth=1 --preview-window=right:wrap --preview="fish\ '$file'\ __fzf_complete_preview\ '{1}'\ '{2..}'" +end + +test "$argv[1]" = "__fzf_complete_preview"; and __fzf_complete_preview $argv[2..3] + +function __fzf_complete_opts_0 -d 'basic single selection with tab accept' + __fzf_complete_opts_common + echo --no-multi + __fzf_complete_opts_tab_accepts +end + +function __fzf_complete_opts_1 -d 'single selection with preview and tab accept' + __fzf_complete_opts_0 + __fzf_complete_opts_preview +end + +function __fzf_complete_opts_2 -d 'single selection with preview and tab walks' + __fzf_complete_opts_1 + __fzf_complete_opts_tab_walks +end + +function __fzf_complete_opts_3 -d 'multi selection with preview' + __fzf_complete_opts_common + echo --multi + __fzf_complete_opts_preview +end + +function __fzf_complete_opts -d 'fzf options for fish tab completion' + switch $FZF_COMPLETE + case 0 + __fzf_complete_opts_0 + case 1 + __fzf_complete_opts_1 + case 2 + __fzf_complete_opts_2 + case 3 + __fzf_complete_opts_3 + case '*' + echo $FZF_COMPLETE + end + if set -q FZF_COMPLETE_OPTS + echo $FZF_COMPLETE_OPTS + end +end diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_complete_preview.fish b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_complete_preview.fish new file mode 100644 index 0000000..585ab92 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_complete_preview.fish @@ -0,0 +1,31 @@ +function __fzf_complete_preview -d 'generate preview for completion widget. + argv[1] is the currently selected candidate in fzf + argv[2] is a string containing the rest of the output produced by `complete -Ccmd` + ' + + if test "$argv[2]" = "Redefine variable" + # show environment variables current value + set -l evar (echo $argv[1] | cut -d= -f1) + echo $argv[1]$$evar + else + echo $argv[1] + end + + set -l path (string replace "~" $HOME -- $argv[1]) + + # list directories on preview + if test -d "$path" + eval $FZF_PREVIEW_DIR_CMD (string escape $path) + end + + # show ten lines of non-binary files preview + if test -f "$path"; and grep -qI . "$path" + eval $FZF_PREVIEW_FILE_CMD (string escape $path) + end + + # if fish knows about it, let it show info + type -q "$path" 2>/dev/null; and type -a "$path" + + # show aditional data + echo $argv[2] +end diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_find_file.fish b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_find_file.fish new file mode 100644 index 0000000..1900006 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_find_file.fish @@ -0,0 +1,29 @@ +function __fzf_find_file -d "List files and folders" + set -l commandline (__fzf_parse_commandline) + set -l dir $commandline[1] + set -l fzf_query $commandline[2] + + set -q FZF_FIND_FILE_COMMAND + or set -l FZF_FIND_FILE_COMMAND " + command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \ + -o -type f -print \ + -o -type d -print \ + -o -type l -print 2> /dev/null | sed 's@^\./@@'" + + begin + eval "$FZF_FIND_FILE_COMMAND | "(__fzfcmd) "-m $FZF_DEFAULT_OPTS $FZF_FIND_FILE_OPTS --query \"$fzf_query\"" | while read -l s; set results $results $s; end + end + + if test -z "$results" + commandline -f repaint + return + else + commandline -t "" + end + + for result in $results + commandline -it -- (string escape $result) + commandline -it -- " " + end + commandline -f repaint +end diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_get_dir.fish b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_get_dir.fish new file mode 100644 index 0000000..77c873c --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_get_dir.fish @@ -0,0 +1,17 @@ +function __fzf_get_dir -d 'Find the longest existing filepath from input string' + set dir $argv + + # Strip all trailing slashes. Ignore if $dir is root dir (/) + if test (string length $dir) -gt 1 + set dir (string replace -r '/*$' '' $dir) + end + + # Iteratively check if dir exists and strip tail end of path + while test ! -d "$dir" + # If path is absolute, this can keep going until ends up at / + # If path is relative, this can keep going until entire input is consumed, dirname returns "." + set dir (dirname "$dir") + end + + echo $dir +end diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_open.fish b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_open.fish new file mode 100644 index 0000000..aa5ca61 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_open.fish @@ -0,0 +1,63 @@ +function __fzf_open -d "Open files and directories." + function __fzf_open_get_open_cmd -d "Find appropriate open command." + if type -q xdg-open + echo "xdg-open" + else if type -q open + echo "open" + end + end + + set -l commandline (__fzf_parse_commandline) + set -l dir $commandline[1] + set -l fzf_query $commandline[2] + + if not type -q argparse + set created_argparse + function argparse + functions -e argparse # deletes itself + end + if contains -- --editor $argv; or contains -- -e $argv + set _flag_editor "yes" + end + if contains -- --preview $argv; or contains -- -p $argv + set _flag_preview "yes" + end + end + + set -l options "e/editor" "p/preview=?" + argparse $options -- $argv + + set -l preview_cmd + if set -q FZF_ENABLE_OPEN_PREVIEW + set preview_cmd "--preview-window=right:wrap --preview='fish -c \"__fzf_complete_preview {}\"'" + end + + set -q FZF_OPEN_COMMAND + or set -l FZF_OPEN_COMMAND " + command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \ + -o -type f -print \ + -o -type d -print \ + -o -type l -print 2> /dev/null | sed 's@^\./@@'" + + set -l select (eval "$FZF_OPEN_COMMAND | "(__fzfcmd) $preview_cmd "-m $FZF_DEFAULT_OPTS $FZF_OPEN_OPTS --query \"$fzf_query\"" | string escape) + + # set how to open + set -l open_cmd + if set -q _flag_editor + set open_cmd "$EDITOR" + else + set open_cmd (__fzf_open_get_open_cmd) + if test -z "$open_cmd" + echo "Couldn't find appropriate open command to use. Do you have 'xdg-open' or 'open' installed?"; and return 1 + end + end + + set -l open_status 0 + if not test -z "$select" + commandline "$open_cmd $select"; and commandline -f execute + set open_status $status + end + + commandline -f repaint + return $open_status +end diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_parse_commandline.fish b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_parse_commandline.fish new file mode 100644 index 0000000..2cc9dfb --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_parse_commandline.fish @@ -0,0 +1,23 @@ +function __fzf_parse_commandline -d 'Parse the current command line token and return split of existing filepath and rest of token' + # eval is used to do shell expansion on paths + set -l commandline (eval "printf '%s' "(commandline -t)) + + if test -z $commandline + # Default to current directory with no --query + set dir '.' + set fzf_query '' + else + set dir (__fzf_get_dir $commandline) + + if test "$dir" = "." -a (string sub -l 1 $commandline) != '.' + # if $dir is "." but commandline is not a relative path, this means no file path found + set fzf_query $commandline + else + # Also remove trailing slash after dir, to "split" input properly + set fzf_query (string replace -r "^$dir/?" '' "$commandline") + end + end + + echo $dir + echo $fzf_query +end diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_reverse_isearch.fish b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_reverse_isearch.fish new file mode 100644 index 0000000..2ebbe20 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzf_reverse_isearch.fish @@ -0,0 +1,6 @@ +function __fzf_reverse_isearch + history merge + history -z | eval (__fzfcmd) --read0 --print0 --tiebreak=index --toggle-sort=ctrl-r $FZF_DEFAULT_OPTS $FZF_REVERSE_ISEARCH_OPTS -q '(commandline)' | read -lz result + and commandline -- $result + commandline -f repaint +end diff --git a/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzfcmd.fish b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzfcmd.fish new file mode 100644 index 0000000..821c650 --- /dev/null +++ b/dot_config/private_fish/triton/github.com/jethrokuan/fzf/functions/__fzfcmd.fish @@ -0,0 +1,9 @@ +function __fzfcmd + set -q FZF_TMUX; or set FZF_TMUX 0 + set -q FZF_TMUX_HEIGHT; or set FZF_TMUX_HEIGHT 40% + if test $FZF_TMUX -eq 1 + echo "fzf-tmux -d$FZF_TMUX_HEIGHT" + else + echo "fzf" + end +end diff --git a/dot_config/rofi/config.rasi b/dot_config/rofi/config.rasi new file mode 100644 index 0000000..9cb7461 --- /dev/null +++ b/dot_config/rofi/config.rasi @@ -0,0 +1,18 @@ +configuration{ + modi: "run,drun,window"; + icon-theme: "Oranchelo"; + show-icons: true; + terminal: "alacritty"; + drun-display-format: "{icon} {name}"; + location: 0; + disable-history: false; + hide-scrollbar: true; + display-drun: " 󰵆 Apps "; + display-run: "  Run "; + display-window: " 﩯 Window"; + display-Network: " 󰤨 Network"; + sidebar-mode: true; +} + +@theme "catppuccin-macchiato" + diff --git a/dot_config/rofi/userconfig/config.rasi b/dot_config/rofi/userconfig/config.rasi new file mode 100644 index 0000000..fb503d3 --- /dev/null +++ b/dot_config/rofi/userconfig/config.rasi @@ -0,0 +1,18 @@ +configuration{ + modi: "run,drun,window"; + icon-theme: "Oranchelo"; + show-icons: true; + terminal: "alacritty"; + drun-display-format: "{icon} {name}"; + location: 0; + disable-history: false; + hide-scrollbar: true; + display-drun: "  Apps "; + display-run: "  Run "; + display-window: " 﩯 Window"; + display-Network: " 󰤨 Network"; + sidebar-mode: true; +} + +@theme "catppuccin-mocha" + diff --git a/dot_config/rofi/userconfig/rofi.rasi b/dot_config/rofi/userconfig/rofi.rasi new file mode 100644 index 0000000..2c8bca6 --- /dev/null +++ b/dot_config/rofi/userconfig/rofi.rasi @@ -0,0 +1,113 @@ +configuration { + font: "JetBrainsMono NF 12"; + show-icons: true; + icon-theme: "Papirus-Dark"; + display-drun: ""; + drun-display-format: "{name}"; + disable-history: false; + sidebar-mode: false; +} + +* { + background: #00000060; + background-alt: #00000000; + background-bar: #f2f2f215; + foreground: #f2f2f2EE; + accent: #ffffff66; +} + +window { + transparency: "real"; + background-color: @background; + text-color: @foreground; + border: 0px; + border-radius: 0px; + width: 100%; + height: 100%; + fullscreen: true; +} + +prompt { + enabled: true; + padding: 0.30% -0.5% 0% 0.5%; + background-color: @background-alt; + text-color: @foreground; + font: "JetBrainsMono Nerd Font 12"; +} + +entry { + background-color: @background-alt; + text-color: @foreground; + placeholder-color: @foreground; + expand: true; + horizontal-align: 0; + placeholder: "Search"; + padding: 0% 0% 0% 0%; + blink: true; +} + +inputbar { + children: [ prompt, entry ]; + background-color: @background-bar; + text-color: @foreground; + expand: false; + border: 0.1%; + border-radius: 8px; + border-color: @accent; + margin: 0% 25% 0% 25%; + padding: 1%; +} + +listview { + background-color: @background-alt; + columns: 7; + lines: 4; + spacing: 2%; + cycle: false; + dynamic: true; + layout: vertical; +} + +mainbox { + background-color: @background-alt; + border: 0% 0% 0% 0%; + border-radius: 0% 0% 0% 0%; + border-color: @accent; + children: [ inputbar, listview ]; + spacing: 8%; + padding: 10% 8.5% 10% 8.5%; +} + +element { + background-color: @background-alt; + text-color: @foreground; + orientation: vertical; + border-radius: 0%; + padding: 2.5% 0% 2.5% 0%; +} + +element-icon { + background-color: @background-alt; + text-color: inherit; + horizontal-align: 0.5; + vertical-align: 0.5; + size: 81px; + border: 0px; +} + +element-text { + background-color: @background-alt; + text-color: inherit; + expand: true; + horizontal-align: 0.5; + vertical-align: 0.5; + margin: 0.5% 0.5% -0.5% 0.5%; +} + +element selected { + background-color: @background-bar; + text-color: @foreground; + border: 0% 0% 0% 0%; + border-radius: 12px; + border-color: @accent; +} diff --git a/dot_config/rofi/userconfig/window.rasi b/dot_config/rofi/userconfig/window.rasi new file mode 100644 index 0000000..58d6ce6 --- /dev/null +++ b/dot_config/rofi/userconfig/window.rasi @@ -0,0 +1,85 @@ +configuration { + font: "JetBrainsMono NF 12"; + show-icons: true; + icon-theme: "Papirus-Dark"; + display-drun: ""; + drun-display-format: "{name}"; + disable-history: false; + sidebar-mode: false; +} + + +* { + background: #00000000; + background-alt: #00000000; + background-bar: #f2f2f215; + foreground: #f2f2f2EE; + accent: #3DAEE966; +} + +window { + transparency: "real"; + background-color: #21212188; + text-color: @foreground; + border: 1px; + border-radius: 25px; + //width: 26%; + location: center; + x-offset: 0; + y-offset: 0; +} + +prompt, entry, inputbar { + enabled: false; +} + +listview { + background-color: @background-alt; + columns: 100; + lines: 1; + spacing: 1%; + cycle: false; + dynamic: true; + layout: vertical; +} + +mainbox { + background-color: @background-alt; + border: 0% 0% 0% 0%; + border-color: @accent; + children: [ inputbar, listview ]; + spacing: 2%; + padding: 2% 1% 2% 1%; +} + +element { + background-color: @background-alt; + text-color: @foreground; + orientation: vertical; + padding: 2.5% 0% 2.5% 0%; +} + +element-icon { + background-color: @background-alt; + text-color: inherit; + horizontal-align: 0.5; + vertical-align: 0.5; + size: 6%; +} + +element-text { + background-color: @background-alt; + text-color: inherit; + expand: false; + horizontal-align: 0.5; + vertical-align: 0.5; + margin: 0.5% 0.5% -0.5% 0.5%; +} + +element selected { + background-color: #40404088; + text-color: @foreground; + border: 0% 0% 0% 0%; + border-radius: 12px; + border-color: @accent; +} diff --git a/dot_local/share/rofi/themes/catppuccin-frappe.rasi b/dot_local/share/rofi/themes/catppuccin-frappe.rasi new file mode 100644 index 0000000..e6e8783 --- /dev/null +++ b/dot_local/share/rofi/themes/catppuccin-frappe.rasi @@ -0,0 +1,111 @@ +* { + bg-col: #303446; + bg-col-light: #303446; + border-col: #303446; + selected-col: #303446; + blue: #8caaee; + fg-col: #c6d0f5; + fg-col2: #e78284; + grey: #737994; + + width: 600; + font: "JetBrainsMono Nerd Font 14"; +} + +element-text, element-icon , mode-switcher { + background-color: inherit; + text-color: inherit; +} + +window { + height: 360px; + border: 3px; + border-color: @border-col; + background-color: @bg-col; +} + +mainbox { + background-color: @bg-col; +} + +inputbar { + children: [prompt,entry]; + background-color: @bg-col; + border-radius: 5px; + padding: 2px; +} + +prompt { + background-color: @blue; + padding: 6px; + text-color: @bg-col; + border-radius: 3px; + margin: 20px 0px 0px 20px; +} + +textbox-prompt-colon { + expand: false; + str: ":"; +} + +entry { + padding: 6px; + margin: 20px 0px 0px 10px; + text-color: @fg-col; + background-color: @bg-col; +} + +listview { + border: 0px 0px 0px; + padding: 6px 0px 0px; + margin: 10px 0px 0px 20px; + columns: 2; + lines: 5; + background-color: @bg-col; +} + +element { + padding: 5px; + background-color: @bg-col; + text-color: @fg-col ; +} + +element-icon { + size: 25px; +} + +element selected { + background-color: @selected-col ; + text-color: @fg-col2 ; +} + +mode-switcher { + spacing: 0; + } + +button { + padding: 10px; + background-color: @bg-col-light; + text-color: @grey; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +button selected { + background-color: @bg-col; + text-color: @blue; +} + +message { + background-color: @bg-col-light; + margin: 2px; + padding: 2px; + border-radius: 5px; +} + +textbox { + padding: 6px; + margin: 20px 0px 0px 20px; + text-color: @blue; + background-color: @bg-col-light; +} diff --git a/dot_local/share/rofi/themes/catppuccin-latte.rasi b/dot_local/share/rofi/themes/catppuccin-latte.rasi new file mode 100644 index 0000000..6826db6 --- /dev/null +++ b/dot_local/share/rofi/themes/catppuccin-latte.rasi @@ -0,0 +1,111 @@ +* { + bg-col: #eff1f5; + bg-col-light: #eff1f5; + border-col: #eff1f5; + selected-col: #eff1f5; + blue: #1e66f5; + fg-col: #4c4f69; + fg-col2: #d20f39; + grey: #9ca0b0; + + width: 600; + font: "JetBrainsMono Nerd Font 14"; +} + +element-text, element-icon , mode-switcher { + background-color: inherit; + text-color: inherit; +} + +window { + height: 360px; + border: 3px; + border-color: @border-col; + background-color: @bg-col; +} + +mainbox { + background-color: @bg-col; +} + +inputbar { + children: [prompt,entry]; + background-color: @bg-col; + border-radius: 5px; + padding: 2px; +} + +prompt { + background-color: @blue; + padding: 6px; + text-color: @bg-col; + border-radius: 3px; + margin: 20px 0px 0px 20px; +} + +textbox-prompt-colon { + expand: false; + str: ":"; +} + +entry { + padding: 6px; + margin: 20px 0px 0px 10px; + text-color: @fg-col; + background-color: @bg-col; +} + +listview { + border: 0px 0px 0px; + padding: 6px 0px 0px; + margin: 10px 0px 0px 20px; + columns: 2; + lines: 5; + background-color: @bg-col; +} + +element { + padding: 5px; + background-color: @bg-col; + text-color: @fg-col ; +} + +element-icon { + size: 25px; +} + +element selected { + background-color: @selected-col ; + text-color: @fg-col2 ; +} + +mode-switcher { + spacing: 0; + } + +button { + padding: 10px; + background-color: @bg-col-light; + text-color: @grey; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +button selected { + background-color: @bg-col; + text-color: @blue; +} + +message { + background-color: @bg-col-light; + margin: 2px; + padding: 2px; + border-radius: 5px; +} + +textbox { + padding: 6px; + margin: 20px 0px 0px 20px; + text-color: @blue; + background-color: @bg-col-light; +} diff --git a/dot_local/share/rofi/themes/catppuccin-macchiato.rasi b/dot_local/share/rofi/themes/catppuccin-macchiato.rasi new file mode 100644 index 0000000..8a6eb81 --- /dev/null +++ b/dot_local/share/rofi/themes/catppuccin-macchiato.rasi @@ -0,0 +1,122 @@ +* { + bg-col: #24273a; + bg-col-light: #24273a; + border-col: #f4dbd6; + selected-col: #363a4f; + blue: #f4dbd6; + fg-col: #cad3f5; + fg-col2: #cad3f5; + grey: #6e738d; + + width: 600; + font: "JetBrainsMono Nerd Font 14"; +} + +element-text, element-icon , mode-switcher { + background-color: inherit; + text-color: inherit; +} + +window { + height: 420px; + border: 3px; + border-radius: 10px; + border-color: @border-col; + background-color: @bg-col; +} + +mainbox { + background-color: @bg-col; +} + +inputbar { + children: [prompt,entry]; + background-color: @bg-col; + border-radius: 5px; + padding: 2px; +} + +prompt { + background-color: @blue; + padding: 6px; + text-color: @bg-col; + border-radius: 3px; + margin: 20px 0px 0px 20px; +} + +textbox-prompt-colon { + expand: false; + str: ":"; +} + +entry { + padding: 6px; + margin: 20px 0px 0px 10px; + text-color: @fg-col; + background-color: @bg-col; +} + +listview { + border: 0px 0px 0px; + padding: 6px 0px 0px; + margin: 10px 20px 0px 20px; + scrollbar: true; + columns: 1; + lines: 5; + background-color: @bg-col; +} + +scrollbar { + handle-width: 5px; + handle-color: @border-col; + border-radius: 20px; + background-color: @selected-col; + margin: 0 10px; +} + +element { + padding: 8px; + border-radius: 10px; + background-color: @bg-col; + text-color: @fg-col ; +} + +element-icon { + size: 25px; +} + +element selected { + background-color: @selected-col ; + text-color: @fg-col2 ; +} + +mode-switcher { + spacing: 0; + } + +button { + padding: 10px; + background-color: @bg-col-light; + text-color: @grey; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +button selected { + background-color: @bg-col; + text-color: @blue; +} + +message { + background-color: @bg-col-light; + margin: 2px; + padding: 2px; + border-radius: 5px; +} + +textbox { + padding: 6px; + margin: 20px 0px 0px 20px; + text-color: @blue; + background-color: @bg-col-light; +} diff --git a/dot_local/share/rofi/themes/catppuccin-mocha.rasi b/dot_local/share/rofi/themes/catppuccin-mocha.rasi new file mode 100644 index 0000000..38c0b80 --- /dev/null +++ b/dot_local/share/rofi/themes/catppuccin-mocha.rasi @@ -0,0 +1,111 @@ +* { + bg-col: #1e1e2e; + bg-col-light: #1e1e2e; + border-col: #1e1e2e; + selected-col: #1e1e2e; + blue: #89b4fa; + fg-col: #cdd6f4; + fg-col2: #f38ba8; + grey: #6c7086; + + width: 600; + font: "JetBrainsMono Nerd Font 14"; +} + +element-text, element-icon , mode-switcher { + background-color: inherit; + text-color: inherit; +} + +window { + height: 360px; + border: 3px; + border-color: @border-col; + background-color: @bg-col; +} + +mainbox { + background-color: @bg-col; +} + +inputbar { + children: [prompt,entry]; + background-color: @bg-col; + border-radius: 5px; + padding: 2px; +} + +prompt { + background-color: @blue; + padding: 6px; + text-color: @bg-col; + border-radius: 3px; + margin: 20px 0px 0px 20px; +} + +textbox-prompt-colon { + expand: false; + str: ":"; +} + +entry { + padding: 6px; + margin: 20px 0px 0px 10px; + text-color: @fg-col; + background-color: @bg-col; +} + +listview { + border: 0px 0px 0px; + padding: 6px 0px 0px; + margin: 10px 0px 0px 20px; + columns: 2; + lines: 5; + background-color: @bg-col; +} + +element { + padding: 5px; + background-color: @bg-col; + text-color: @fg-col ; +} + +element-icon { + size: 25px; +} + +element selected { + background-color: @selected-col ; + text-color: @fg-col2 ; +} + +mode-switcher { + spacing: 0; + } + +button { + padding: 10px; + background-color: @bg-col-light; + text-color: @grey; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +button selected { + background-color: @bg-col; + text-color: @blue; +} + +message { + background-color: @bg-col-light; + margin: 2px; + padding: 2px; + border-radius: 5px; +} + +textbox { + padding: 6px; + margin: 20px 0px 0px 20px; + text-color: @blue; + background-color: @bg-col-light; +} diff --git a/dot_local/share/rofi/themes/colors-rofi-dark.rasi b/dot_local/share/rofi/themes/colors-rofi-dark.rasi new file mode 100644 index 0000000..9cb512e --- /dev/null +++ b/dot_local/share/rofi/themes/colors-rofi-dark.rasi @@ -0,0 +1,161 @@ +* { + active-background: #7D827E; + active-foreground: @foreground; + normal-background: @background; + normal-foreground: @foreground; + urgent-background: #936E5B; + urgent-foreground: @foreground; + + alternate-active-background: @background; + alternate-active-foreground: @foreground; + alternate-normal-background: @background; + alternate-normal-foreground: @foreground; + alternate-urgent-background: @background; + alternate-urgent-foreground: @foreground; + + selected-active-background: #936E5B; + selected-active-foreground: @foreground; + selected-normal-background: #7D827E; + selected-normal-foreground: @foreground; + selected-urgent-background: #A28F6B; + selected-urgent-foreground: @foreground; + + background-color: @background; + background: #1c1b19; + foreground: #cacbc7; + border-color: @background; + spacing: 2; +} + +#window { + background-color: @background; + border: 0; + padding: 2.5ch; +} + +#mainbox { + border: 0; + padding: 0; +} + +#message { + border: 2px 0px 0px; + border-color: @border-color; + padding: 1px; +} + +#textbox { + text-color: @foreground; +} + +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} + +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em; + text-color: @normal-foreground; +} + +#listview { + fixed-height: 0; + border: 2px 0px 0px; + border-color: @border-color; + spacing: 2px; + scrollbar: true; + padding: 2px 0px 0px; +} + +#element { + border: 0; + padding: 1px; +} + +#element.normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} + +#element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} + +#element.normal.active { + background-color: @active-background; + text-color: @active-foreground; +} + +#element.selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} + +#element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} + +#element.selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} + +#element.alternate.normal { + background-color: @alternate-normal-background; + text-color: @alternate-normal-foreground; +} + +#element.alternate.urgent { + background-color: @alternate-urgent-background; + text-color: @alternate-urgent-foreground; +} + +#element.alternate.active { + background-color: @alternate-active-background; + text-color: @alternate-active-foreground; +} + +#scrollbar { + width: 4px; + border: 0; + handle-width: 8px; + padding: 0; +} + +#sidebar { + border: 2px 0px 0px; + border-color: @border-color; +} + +#button { + text-color: @normal-foreground; +} + +#button.selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} + +#inputbar { + spacing: 0; + text-color: @normal-foreground; + padding: 1px; +} + +#case-indicator { + spacing: 0; + text-color: @normal-foreground; +} + +#entry { + spacing: 0; + text-color: @normal-foreground; +} + +#prompt { + spacing: 0; + text-color: @normal-foreground; +} diff --git a/dot_local/share/rofi/themes/default.rasi b/dot_local/share/rofi/themes/default.rasi new file mode 100644 index 0000000..15374b1 --- /dev/null +++ b/dot_local/share/rofi/themes/default.rasi @@ -0,0 +1,93 @@ +configuration { + modi: "drun"; + font: "JetBrainsMono Nerd Font 12"; + show-icons: true; + icon-theme: "oomox-Everblush"; + display-drun: ""; + drun-display-format: "{name}"; + sidebar-mode: false; +} + +@theme "/dev/null" + +* { + bg: #181f21; + fg: #dadada; + fg-alt: #181f21; + accent: #8ccf7e; + button: #ef7d7d; + + background-color: @bg; + text-color: @fg; +} + +window { + border-radius: 15px; + width: 45%; + padding: 32px; +} + +prompt { + background-color: @accent; + enabled: true; + padding: 0.5% 32px 0% -0.5%; + font: "JetBrainsMono Nerd Font 12"; +} + +entry { + placeholder: " 󰍉 Search "; + background-color: @accent; + placeholder-color: @fg-alt; + expand: true; + padding: 0.25% 100% 0% 0%; +} + +inputbar { + children: [ prompt, entry ]; + background-color: @accent; + expand: false; + border-radius: 6px; + margin: 0%; + padding: 10px; +} + +listview { + columns: 4; + lines: 3; + cycle: false; + dynamic: true; + layout: vertical; +} + +mainbox { + children: [ inputbar, listview ]; + spacing: 2%; + padding: 2% 1% 2% 1%; +} + +element { + orientation: vertical; + padding: 2% 0% 2% 0%; +} + +element-icon { + size: 48px; + horizontal-align: 0.5; +} + +element-text { + expand: true; + horizontal-align: 0.5; + vertical-align: 0.5; + margin: 0.5% 0.5% -0.5% 0.5%; +} + +element-text, element-icon { + background-color: inherit; + text-color: inherit; +} + +element selected { + background-color: @button; + border-radius: 6px; +} diff --git a/dot_local/share/rofi/themes/everblush.rasi b/dot_local/share/rofi/themes/everblush.rasi new file mode 100644 index 0000000..3168c45 --- /dev/null +++ b/dot_local/share/rofi/themes/everblush.rasi @@ -0,0 +1,114 @@ +configuration { + modi: "drun"; + font: "Proxima Nova Bold 15"; + show-icons: true; + icon-theme: "Reversal-black-dark"; + display-drun: "󰍉"; + drun-display-format: "{name}"; + sidebar-mode: false; +} + +@theme "/dev/null" + +* { + bg: #181f21; + fg: #dadada; + fg-alt: #181f21; + button: #ef7d7d; + accent: #8ccf7e; + accent-alt: #e5c76b; + border: #67b0e8; + another-color: #c47fd5; + + background-color: @bg; + text-color: @fg; +} + +window { + transparency: "real"; + border-radius: 15px; + width: 50%; + padding: 30px; + border: 4px; + border-color: @border; +} + +prompt { + enabled: true; + horizontal-align: 0.5; + vertical-align: 0.5; + background-color: @bg; + border: 4px; + border-color: @accent; + border-radius: 15px; + font: "Material Design Icons Desktop Bold 17"; + padding: 0 1% 0; + text-color: @button; +} + +entry { + placeholder: "Search"; + expand: true; + padding: 2%; + background-color: @bg; + placeholder-color: @another-color; + border: 4px; + border-color: @accent; + border-radius: 15px; + cursor: text; + text-color: @another-color; +} + +inputbar { + children: [ prompt, entry ]; + expand: false; + spacing: 1%; + text-color: @another-color; +} + +listview { + columns: 4; + lines: 3; + cycle: false; + dynamic: true; + layout: vertical; +} + +mainbox { + children: [ inputbar, listview ]; + spacing: 2%; + padding: 2% 1% 2% 1%; +} + +element { + orientation: vertical; + padding: 2% 0% 2% 0%; +} + +element-icon { + size: 48px; + horizontal-align: 0.5; +} + +element-text { + expand: true; + horizontal-align: 0.5; + vertical-align: 0.5; + margin: 0.5% 0.5% -0.5% 0.5%; + font: "Proxima Nova 15"; +} + +element selected { + background-color: @accent-alt; + text-color: @bg; + border-radius: 10px; +} + +element-text, element-icon { + background-color: inherit; + text-color: inherit; +} + +listview, element, element selected, element-icon, element-text { + cursor: pointer; +} \ No newline at end of file diff --git a/dot_local/share/rofi/themes/rounded-common.rasi b/dot_local/share/rofi/themes/rounded-common.rasi new file mode 100644 index 0000000..cea02bf --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-common.rasi @@ -0,0 +1,94 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + font: "Roboto 12"; + + background-color: transparent; + text-color: @fg0; + + margin: 0px; + padding: 0px; + spacing: 0px; +} + +window { + location: center; + width: 480; + y-offset: -200; + border-radius: 15px; + + background-color: @bg0; +} + +mainbox { + padding: 12px; +} + +inputbar { + background-color: @bg1; + border-color: @bg3; + + border: 2px; + border-radius: 16px; + + padding: 8px 16px; + spacing: 8px; + children: [ prompt, entry ]; +} + +prompt { + text-color: @fg2; +} + +entry { + placeholder: "Search"; + placeholder-color: @fg3; +} + +message { + margin: 12px 0 0; + border-radius: 16px; + border-color: @bg2; + background-color: @bg2; +} + +textbox { + padding: 8px 24px; +} + +listview { + background-color: transparent; + + margin: 12px 0 0; + lines: 8; + columns: 1; + + fixed-height: false; +} + +element { + padding: 8px 16px; + spacing: 8px; + border-radius: 16px; +} + +element normal active { + text-color: @bg3; +} + +element selected normal, element selected active { + background-color: @bg3; +} + +element-icon { + size: 1em; + vertical-align: 0.5; +} + +element-text { + text-color: inherit; +} diff --git a/dot_local/share/rofi/themes/rounded-everblush-dark.rasi b/dot_local/share/rofi/themes/rounded-everblush-dark.rasi new file mode 100644 index 0000000..a27943f --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-everblush-dark.rasi @@ -0,0 +1,18 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + bg0: #1c1b19F2; + bg1: #1c1b19; + bg2: #A28F6B80; + bg3: #7D827EF2; + fg0: #E6E6E6; + fg1: #FFFFFF; + fg2: #969696; + fg3: #936E5B; +} + +@import "rounded-common.rasi"