Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Entering vi insert mode eats one line above multi-line prompt #1641

Closed
burneyy opened this issue Nov 13, 2018 · 12 comments · Fixed by #1647, #1723 or #1987
Closed

Entering vi insert mode eats one line above multi-line prompt #1641

burneyy opened this issue Nov 13, 2018 · 12 comments · Fixed by #1647, #1723 or #1987

Comments

@burneyy
Copy link

burneyy commented Nov 13, 2018

Description

Using the vi key-bindings, the line above the multi-line prompt (e.g. pure) gets eaten up when entering from normal to insert mode.

Expected behavior

Entering insert mode should not change the lines above the current prompt.

Actual behavior

Entering the vi insert mode using any of the buttons "i", "I" or "R" removes the last line above the prompt and moves the prompt upwards.

In normal mode:
image
Entered insert mode by pressing "i":
image

However, it does not happen when entering insert mode by pressing "a" or "o".

Steps to Reproduce

  1. In zpreztorc: Change from emacs to vi keybindings and select a multi-line prompt (e.g. pure)
  2. Open a new terminal and enter a few commands so that the terminal fills up.
  3. Go to vi normal mode by pressing ESC and change back to insert mode by either pressing "i", "I" or "R".
  4. Note that the last line above the multi-line prompt got eaten up.

Versions

  • Prezto commit: e6eea17
  • ZSH version: 5.6.2, also tested with 5.3
  • OS information: Mac OS Mojave, iTerm2

Possible Solution ?

I found in these lines that there is a special treatment for the functions "vi-insert", "vi-insert-bol" and "vi-replace" and that by commenting out the 3 function definitions, I can get the expected behaviour.
However, I unfortunately understand too less of these things to anticipate the consequences of commenting out these lines. I hope some of you can shed some light on it.

@johnpneumann
Copy link
Collaborator

I can confirm that this is an issue with the pure theme. However, on other multiline prompts that are internal to prezto (giddie, paradox, peepcode, steeef), the issue does not appear. This appears to have been introduced in fbcae35, which updated the pure prompt to the latest version (1.8.0 - sindresorhus/pure@5976e54).

In regards to commenting out those lines: It appears that this works, due to the fact that pure is handling vi insert modes and changing the prompt styling like is done for the sorin or paradox themes in 1.8.0. However, because it's doing this, it's incompatible with the way that prezto expects themes to function (namely by using the editor-info flags). I can confirm that this issue does not exist with the latest version of prezto (e6eea17) and version 1.7.0 (sindresorhus/pure@fa9137e) of the pure theme.

@indrajitr @belak - How do you want to handle this? Revert back to 1.7.0 until we can sort out what should be done?

@belak
Copy link
Collaborator

belak commented Nov 29, 2018

That sounds reasonable to me. Thanks for investigating!

billimek added a commit to billimek/prezto that referenced this issue Dec 5, 2018
* upstream/master:
  Resolves sorin-ionescu#1641 - Roll the pure prompt back from 1.8.0 to 1.7.0
  Update submodules
  Fix issue sorin-ionescu#1635. Option to disable GNU ls to group directories first.
  prompt/sorin: Minor cleanup and reordering
  prompt/minimal: Add support for preview
  prompt/steeef: Add basic support for editor_info and preview
  Update submodule 'history-substring-search'
  doc: More copyediting and formatting for consistency
  general: Miscellaneous documentation updates
  submodule: Updating submodules
  doc: Bit of copyediting and formatting for consistency and clarification
  environment: only enable bracketed paste on non-dumb terminals
  python: respect PYENV_ROOT if already set
  python: use pure's magic value for VIRTUAL_ENV_DISABLE_PROMPT
  Updating submodules
masayukig pushed a commit to masayukig/prezto that referenced this issue Dec 12, 2018
code2k pushed a commit to code2k/prezto that referenced this issue Dec 17, 2018
* commit '9d3e2f0204f2de5a0f04da1e0cdcf63e8afe5add':
  python: Expand compctl matches for pip variants
  command-not-found: Minor reformatting
  homebrew: Load 'HOMEBREW_' prefixed variables only
  homebrew: Simplify array assignment
  archive: Enhance 'archive' helper to support multi file archive
  git: add documentation for new aliases
  Aliases to digital sign/verify commits and tags (sorin-ionescu#651)
  syntax-highlighting: Further clarify relative module ordering
  rsync: Update link to Bombich rsync page again
  node: Make nvm lookup mechanism more efficient in homebrewed environment
  python: Fix pip compctl file match pattern
  command-not-found: Support custom Homebrew tap on MacOS
  node: Cache completion for additional helpers
  python: Use more apropriate filename for pip completion
  python: Make cached completion file mangling more reliable
  command-not-found: Restore idiomatic homebrewed handler loading on MacOS
  Update submodules versions
  Resolves sorin-ionescu#1641 - Roll the pure prompt back from 1.8.0 to 1.7.0
  Update submodules
josh-h pushed a commit to josh-h/prezto that referenced this issue Dec 17, 2018
mezuzza added a commit to mezuzza/prezto that referenced this issue Dec 31, 2018
commit a338cba
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Mon Dec 17 14:10:51 2018 -0600

    python: Use brace expansion for pip compctl match

    Just use brace expansion only (and not a mix of brace expansion and
    path expansion) to expand `sed` match for more variants of 'pip*' (pip,
    pip2, pip3, pip2.7, pip3.7 etc.) in `compctl` assignment

commit 0e6429d
Author: Diego Rabatone Oliveira <diraol@diraol.eng.br>
Date:   Mon Dec 17 16:22:33 2018 -0200

    Remove duplicated information from git module README (sorin-ionescu#1657)

commit 9d3e2f0
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Fri Dec 14 21:32:10 2018 -0600

    python: Expand compctl matches for pip variants

    Expand `sed` match for more variants of 'pip*' (pip, pip2, pip3, pip2.7,
    pip3.7 etc.) for `compctl` assignment

commit dc8e168
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Fri Dec 14 20:57:10 2018 -0600

    command-not-found: Minor reformatting

commit 3093f1b
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Fri Dec 14 15:40:59 2018 -0600

    homebrew: Load 'HOMEBREW_' prefixed variables only

    Load 'HOMEBREW_' prefixed variables only. Avoid loading 'PATH'
    related variables as they are already handled in standard zsh
    configuration.

commit 1118408
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Fri Dec 14 15:34:42 2018 -0600

    homebrew: Simplify array assignment

    No need for nesting array assignment only to flatten it later.

commit 54dff31
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Thu Dec 13 01:14:59 2018 -0600

    archive: Enhance 'archive' helper to support multi file archive

    We now allow multiple paths (files/directories) to be archived in
    one shot. Validation of the target path(s) is now delegated to the
    actual archive helper.

commit eee3c9c
Author: Kaleb Elwert <belak@coded.io>
Date:   Thu Dec 13 10:51:56 2018 -0800

    git: add documentation for new aliases

commit 39e1a63
Author: Bruno Oliveira da Silva <bruno@abstractj.org>
Date:   Thu Dec 13 16:43:23 2018 -0200

    Aliases to digital sign/verify commits and tags (sorin-ionescu#651)

commit d275f31
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Wed Dec 12 23:02:59 2018 -0600

    syntax-highlighting: Further clarify relative module ordering

commit 6a2cc2e
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Wed Dec 12 22:42:02 2018 -0600

    rsync: Update link to Bombich rsync page again

commit d45d87b
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Wed Dec 12 22:17:16 2018 -0600

    node: Make nvm lookup mechanism more efficient in homebrewed environment

    In homebrewed environment, avoid using `brew --prefix nvm` which is
    ruby based and is super slow. Instead, rely on homebrew standard
    behavior wherein all installed packages are available in canonical
    path $(brew --prefix)/opt/<package> (for nvm it would obviously be
    `$(brew --prefix)/opt/nvm`).

    NB: `$(brew --prefix)` (without additional argument) is a simple shell
    shortcut and doesn't have the same performance impact.

commit a987c8b
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Wed Dec 12 16:18:58 2018 -0600

    python: Fix pip compctl file match pattern

    Make `sed` match more reliable while replacing the whole of 'pip*' with
    'pip pip2 pip3' for `compctl` assignment

commit f745645
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Tue Dec 11 11:02:37 2018 -0600

    command-not-found: Support custom Homebrew tap on MacOS

    Added support for homebrew-command-not-found from a non-default tap

commit a2398fc
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Fri Dec 7 17:08:12 2018 -0600

    node: Cache completion for additional helpers

    Add support for npm and additional well-known helper commands

commit e7fea33
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Sun Dec 9 17:16:21 2018 -0600

    python: Use more apropriate filename for pip completion

commit 53286eb
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Fri Dec 7 15:45:06 2018 -0600

    python: Make cached completion file mangling more reliable

    While mangling cached completion file, we cannot just assume that
    `$pip_command` would resolve to `pip` -- it might be `pip2` or `pip3`
    depending on the relative position in zsh `$commands` array. Thus
    replace the whole of 'pip*' with 'pip pip2 pip3' for compctl assignment.

commit 2286662
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Tue Jul 31 20:29:01 2018 -0500

    command-not-found: Restore idiomatic homebrewed handler loading on MacOS

    As is the convention in prezto, we cache the command-not-found handler to
    avoid incurring the performance penalty of loading ruby interpreter on
    every call. This restores the 'Homebrew way' of loading command-not-found
    handler.

    Further, the formally recommended command lookup mechanism in Homebrew
    (viz., `brew command command-not-found-init`) is ruby based and is super
    slow. To avoid performance penalty, we `find` it ourselves from
    `TAP_DIRECTORY` defined internally in Homebrew.

    This also reinstates support for custom taps or non-standard Homebrew location.

commit 3de1e24
Author: Diego Rabatone Oliveira <diraol@diraol.eng.br>
Date:   Wed Dec 5 09:38:07 2018 -0200

    Update submodules versions

commit 8bfed01
Author: John P. Neumann <john.p.neumann@gmail.com>
Date:   Thu Nov 29 17:13:23 2018 -0600

    Resolves sorin-ionescu#1641 - Roll the pure prompt back from 1.8.0 to 1.7.0

commit e6eea17
Author: Diego Rabatone Oliveira <diego.rabatone@easytaxi.com.br>
Date:   Thu Nov 8 13:02:10 2018 -0200

    Update submodules

    Updating to the latest released tags for modules:
    completetion
    syntax-highlighting

    And for agnoster prompt

commit 1ed5331
Author: Tercio Gaudencio Filho <terciofilho@gmail.com>
Date:   Mon Oct 15 09:56:41 2018 -0300

    Fix issue sorin-ionescu#1635. Option to disable GNU ls to group directories first.

commit bfe1815
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Sat Oct 13 23:16:20 2018 -0500

    prompt/sorin: Minor cleanup and reordering

commit a430931
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Sat Oct 13 23:13:16 2018 -0500

    prompt/minimal: Add support for preview

commit a3753d8
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Sat Oct 13 23:09:14 2018 -0500

    prompt/steeef: Add basic support for editor_info and preview

commit 58809b2
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Fri Oct 12 16:53:46 2018 -0500

    Update submodule 'history-substring-search'

    history-substring-search doesn't tag releases anymore and just maintains
    the master branch -- switching to tracking master instead.

commit 992b9de
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Fri Oct 12 10:52:24 2018 -0500

    doc: More copyediting and formatting for consistency

commit 6f603df
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Fri Oct 12 03:55:55 2018 -0500

    general: Miscellaneous documentation updates

    - Add missing documentation for options and environment variables
    - Rearrange definition and documentation of 'Options', 'Variables'
      and 'Aliases' in a consistent order

commit ff5bd93
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Thu Oct 11 17:26:38 2018 -0500

    submodule: Updating submodules

    'modules/prompt/external/async' updated to 'v1.7.1'
    'modules/syntax-highlighting/external' updated to latest 'master'

commit df4c618
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Thu Oct 11 17:10:35 2018 -0500

    doc: Bit of copyediting and formatting for consistency and clarification

commit 6c46804
Author: Kaleb Elwert <belak@coded.io>
Date:   Fri Sep 28 14:51:59 2018 -0700

    environment: only enable bracketed paste on non-dumb terminals

    Fixes sorin-ionescu#1552

commit e9387a1
Author: Kaleb Elwert <belak@coded.io>
Date:   Fri Sep 28 14:24:25 2018 -0700

    python: respect PYENV_ROOT if already set

    Fixes sorin-ionescu#1578

commit ee885d4
Author: Kaleb Elwert <belak@coded.io>
Date:   Fri Sep 28 14:04:20 2018 -0700

    python: use pure's magic value for VIRTUAL_ENV_DISABLE_PROMPT

    Fixes sorin-ionescu#1627

commit fbcae35
Author: Diego Rabatone Oliveira <diraol@diraol.eng.br>
Date:   Mon Sep 17 17:28:15 2018 -0300

    Updating submodules

    For the submodules that have some kind of release (tags), they were
    updated up to the most recent release. Otherwise, the submodule was
    updated to the latest commit.

commit f366e49
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Sat Sep 15 01:55:46 2018 -0500

    homebrew: Cleanup homebrew aliases

    - 'brew upgrade' does 'brew update' by default, no need for explicit call
    - replace 'brew remove' with 'brew uninstall' for consistency

commit ad861d3
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Sat Sep 15 01:45:57 2018 -0500

    homebrew: Replace deprecated casks with their brew counterpart

    Homebrew has deprecated `brew cask cleanup` and `brew cask search` in favor
    of `brew cleanup` and `brew search` respectively. They will stop working on
    2018-09-30. Further, `--outdated` has been removed.

    We should eventually remove the related aliases, but for a while we keep
    supporting them gracefully with deprecation warning.

    The documentation has been removed from README.md, however.

commit 2bbf5d0
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Fri Sep 14 23:40:08 2018 -0500

    homebrew: Load standard Homebrew environment variables into shell session.

    However, guard for legacy Homebrew as `brew shellenv` is relatively new.

commit dd7a26e
Author: Yutian Li <hotpxless@gmail.com>
Date:   Sat Sep 15 12:35:48 2018 -0400

    [git] Also check "commondir" when looking for a stash (sorin-ionescu#1620)

commit 7bb7a7c
Author: Bruce Clounie <bruce.w.clounie@gmail.com>
Date:   Sat Jul 21 01:06:31 2018 -0600

    Add explanation for extra git theme symbols in README.md

    Helps with sorin-ionescu#1589

commit 66487c9
Author: newtonne <newtonne@users.noreply.github.com>
Date:   Mon Aug 13 02:56:21 2018 +0100

    Correct alphabetical order in zprestorc

commit f2042a2
Author: Diego Rabatone Oliveira <diraol@diraol.eng.br>
Date:   Thu Aug 9 15:25:30 2018 -0300

    Update submodules (sorin-ionescu#1615)

    This updates the submodules for autosuggestions, completion,
    syntax-highlighting and the prompts async, powerlevel9k and pure.

    All submodules that have TAGs/Releases were updated to their latest
    TAG/release, except for syntax-highlighting because it's latest
    release/TAG is from more than one year ago, and the project seems to be
    well maintained but without releases.

commit dacef14
Author: Steven Loria <sloria1@gmail.com>
Date:   Sat Jul 14 09:40:39 2018 -0400

    Improve startup time by skipping pyenv rehash

    After profiling startup time, I found that "pyenv rehash" is
    by far the slowest piece. This change skips rehashing on init.

    See pyenv/pyenv#784 (comment)

    Also pass the shell explicitly, as suggested in
    pyenv/pyenv#784 (comment),
    which provides a modest improvement.

    In total, this improves startup time from 1s to 0.3s on my machine.
    Using the following command:
    python -m timeit "__import__('subprocess').Popen(['zsh', '-i', '-c', 'echo']).communicate()"

    Result before this change:
    10 loops, best of 3: 1 sec per loop

    Result after this change:
    10 loops, best of 3: 334 msec per loop

commit e064d5c
Author: Michael Kohl <citizen428@gmail.com>
Date:   Wed Jul 18 15:08:21 2018 +0700

    Make node-info work without nvm/nodenv

commit 152b4a1
Author: Tharre <tharre3@gmail.com>
Date:   Sat Jul 28 18:33:24 2018 +0200

    Fix broken gitref link in README.md

    gitref.org points to services.github.com, and has been for some time[0].

    [0] git/git-reference#112

commit e149367
Author: Colin Hebert <hebert.colin@gmail.com>
Date:   Wed Jun 27 09:28:04 2018 +1000

    coreutils: update list of included coreutils (sorin-ionescu#1592)

commit cd70822
Author: Indrajit Raychaudhuri <irc@indrajit.com>
Date:   Tue Jun 26 13:43:27 2018 -0500

    completion: Compact path to global ssh known hosts file

commit 0d6e7de
Author: Kaleb Elwert <belak@coded.io>
Date:   Mon Jun 18 14:16:36 2018 -0700

    syntax-highlighting: Update README to clarify module load order

    Fixes sorin-ionescu#1584

commit b11b9ce
Author: Alexander Neumann <alexander@bumpern.de>
Date:   Thu Jun 14 15:42:45 2018 +0200

    Fix path to global ssh known hosts file

    The path to the global known hosts file is /etc/ssh/ssh_known_hosts, not
    /etc/ssh_hosts.

commit d4332e2
Author: Andrew Janke <floss@apjanke.net>
Date:   Fri Jun 1 03:36:21 2018 -0400

    Fix spelling error in CONTRIBUTING.md (sorin-ionescu#1590)

commit 92e668e
Author: Christopher Bowns <github@cbowns.com>
Date:   Tue May 22 18:44:57 2018 -0700

    Remove zlogout's Apu quote (sorin-ionescu#1583)

    * Remove zlogout's Apu quote

    For questions about why, see https://en.wikipedia.org/wiki/The_Problem_with_Apu

    * Add a couple of random sayings per feedback in sorin-ionescu#1583

commit 3d911cd
Author: Jeff Widman <jeff@jeffwidman.com>
Date:   Sun May 20 13:48:14 2018 -0700

    Document `gpf` vs `gpF`

    Document the difference between `gpf` and `gpF`. These were changed in sorin-ionescu#1040 / sorin-ionescu@ddfc870, but never documented.

commit ae23bed
Author: Jeff Widman <jeff@jeffwidman.com>
Date:   Sun May 20 14:06:54 2018 -0700

    Document macOS support for `command-not-found`

    Document macOS support for `command-not-found`

commit 2995b7d
Author: Casey McGinty <casey.mcginty@gmail.com>
Date:   Sun May 6 13:19:35 2018 -0700

    Update cache files when .zpreztorc file is modified

    Fixes sorin-ionescu#1581

commit 6e179f2
Author: Casey McGinty <casey.mcginty@gmail.com>
Date:   Mon Apr 30 22:22:10 2018 -0700

    Export VIRTUAL_ENV_DISABLE_PROMPT when enabling virutalenv

    Adding `export` ensures the define is available in the shell so pyenv
    or virtualenvwrapper do not duplicate the virtualenv name on the
    prompt.

commit f8f93d4
Author: Kaleb Elwert <belak@coded.io>
Date:   Sun Apr 29 17:39:25 2018 -0700

    command-not-found: Directly source homebrew command-not-found handler

    Fixes sorin-ionescu#1577, Fixes sorin-ionescu#1451

commit b6b43eb
Author: Ashish Gandhi <ag@ashishgandhi.org>
Date:   Mon Apr 16 15:51:57 2018 -0700

    Rename "Mac OS X" to "macOS" in comments

    This only changes references in text for human consumption. It leaves
    out renaming paths because that can cause breaking changes.

    Related issue sorin-ionescu#1449.

commit 3001028
Author: Kaleb Elwert <belak@coded.io>
Date:   Fri Apr 6 11:35:39 2018 -0700

    Add proper prompt_opts to smiley prompt

commit 054eb35
Author: Kaleb Elwert <belak@coded.io>
Date:   Fri Apr 6 11:33:02 2018 -0700

    Revert "Only call reset-prompt when the appropriate zstyle is set"

    This reverts commit 6d00fdf.

    As unfortunate as it is, this workaround was a hack and doesn't take
    into account prompts like spaceship which don't use $editor_info but
    rely on $KEYMAP directly. We'll need to find a more consistent solution
    to fix this.

commit 1b441e7
Author: François VANTOMME <akarzim@gmail.com>
Date:   Thu Apr 5 00:20:21 2018 +0200

    Feat (git): add an alias displaying the commits yet to be applied to upstream (sorin-ionescu#1565)

commit 4430212
Author: Kaleb Elwert <belak@coded.io>
Date:   Fri Mar 30 17:47:05 2018 -0700

    Allow users to easily define LS_COLORS and LSCOLORS (sorin-ionescu#1546)

commit a0977cb
Author: Roman Peshkov <peshkovroman@gmail.com>
Date:   Sat Mar 31 02:37:05 2018 +0200

    Ignore tmux autostart in vscode terminal

commit b3c27bb
Author: Diego Rabatone Oliveira <diraol@diraol.eng.br>
Date:   Mon Mar 5 05:56:25 2018 -0300

    Replace git with 'command git' (sorin-ionescu#1551)

    to improve performance if git is aliased to hub or other wrappers.

commit e00562e
Author: bryndin <bryndin@gmail.com>
Date:   Fri Feb 23 13:39:45 2018 -0800

    python: autoload add-zsh-hook when needed (sorin-ionescu#1549)

    Fixes sorin-ionescu#1550

commit 742260b
Author: Kaleb Elwert <belak@coded.io>
Date:   Wed Feb 21 14:10:11 2018 -0800

    Remove support for pydf to make options more consistent

    Closes sorin-ionescu#1388

commit 580ddc4
Author: Philipp A <flying-sheep@web.de>
Date:   Fri Sep 25 12:38:12 2015 +0200

    Add another shadow to the git aliases

    Originally submitted in sorin-ionescu#979

commit 4325f74
Author: Rick Jones <rickjones@Rick-Jones.local>
Date:   Tue Mar 8 16:00:29 2016 +0000

    git: add tag aliases

    Originally submitted in sorin-ionescu#1094

commit 6d00fdf
Author: John P. Neumann <johnpneumann@users.noreply.github.com>
Date:   Tue Feb 20 22:36:29 2018 -0600

    Only call reset-prompt when the appropriate zstyle is set

    Resolves issue sorin-ionescu#1524 (sorin-ionescu#1548)

commit e263876
Author: Alexey Zapparov <ixti@member.fsf.org>
Date:   Mon Feb 12 04:28:51 2018 +0100

    Don't double-source chruby

    If chruby was installed using default way, most likely chruby and
    auto-switching will be already sourced (at least on most Linuxes).

commit d762262
Author: Kaleb Elwert <belak@coded.io>
Date:   Sat Feb 17 08:06:34 2018 -0800

    autosuggestions: add basic history troubleshooting information

commit 282b478
Author: Kaleb Elwert <belak@coded.io>
Date:   Fri Jan 26 18:14:10 2018 -0800

    Add vi-pound-insert as # in vicmd mode

    Fixes sorin-ionescu#1534

commit 904eef5
Author: Kaleb Elwert <belak@coded.io>
Date:   Fri Jan 26 14:52:11 2018 -0800

    Add `pound-toggle` zle widget to work around the buggy built-in `pound-insert`

    Refs sorin-ionescu#1533, sorin-ionescu#1534

commit 906ac99
Author: Kaleb Elwert <belak@coded.io>
Date:   Thu Jan 25 12:41:58 2018 -0800

    Move INTERACTIVE_COMMENTS from editor to environment

commit 0b62639
Author: Maxim Baz <git@maximbaz.com>
Date:   Thu Jan 25 20:59:21 2018 +0100

    Set INTERACTIVE_COMMENTS by default

    This allows using # to comment lines in the interactive shell

commit 54d2a76
Author: Kaleb Elwert <belak@coded.io>
Date:   Wed Jan 24 14:01:14 2018 -0800

    pacman: fix mistake where aurutils should be used, not aurtools

commit e32a96b
Author: Kaleb Elwert <belak@coded.io>
Date:   Wed Jan 24 13:47:20 2018 -0800

    pacman: Simplify support for AUR helpers

    There are a number of things happening here.

    - Extra support for yaourt has been removed
    - Docs have been updated to explicitly call out that AUR helpers are not
      officially supported
    - aurutils has been suggested to make common operations easier
    - A utility function called aurget (similar to aurfetch from aurutils)
      has been added to make cloning AUR repos easier.

    Fixes sorin-ionescu#1531

commit 73e94b8
Author: Salmanul Farzy <salmanulfarzy@gmail.com>
Date:   Sun Jan 14 14:15:28 2018 +0530

    Don't set auto_name_dirs because it messes up prompts

    This was ported from Oh-My-Zsh and since have been disabled in it.

    Explained in more detail
    rvm/rvm/issues/3091#issuecomment-60083194

    Related: sorin-ionescu#998, sorin-ionescu#1081
@giorni
Copy link

giorni commented Jan 16, 2019

Pure submodule was updated again (88456ec) and still don't work with vi bindings.

@johnpneumann
Copy link
Collaborator

johnpneumann commented Jan 22, 2019

@diraol @indrajitr @belak - should we lock the pure submodule to 1.7.0? I don't use pure and I'm not sure how we should continue to deal with this. Anyone have a relationship with pure or anyone in it? I don't love the idea of pinning it, but we also don't want to break everyone until we sort it out. Thoughts?

@belak
Copy link
Collaborator

belak commented Jan 23, 2019

My current preference would be to file an issue upstream and pin it with a link to that issue.

EDIT: I'm not 100% sure this is completely an issue with upstream - we do some weird nonsense with zle widgets and they might be conflicting.

alee pushed a commit to alee/prezto that referenced this issue Jan 28, 2019
@johnpneumann
Copy link
Collaborator

@belak - So I took some more time to look at this to see if it was something we're doing vs pure and the answer is, yes. The issue is that in the commit I referenced above (sindresorhus/pure@5976e54) pure is now doing a rest of the prompt the same as we are when using vi keybindings. This conflicts with the way that the editor module handles keybindings for vim as well. What pure introduced is basically the same thing that we've had with the editor:info:keymap bits that are set in the prompts. Specifically its to provide what prezto calls the "alternate" format, which shows when you're no longer in insert mode.

I am looking at ways to mitigate this, but I'm afraid that the change in pure is a breaking change that will continue to be an issue when upgrading.

Before I file an upstream issue, I'd like to have an idea of how we can have things coexist without either of us having to do nasty things (like us checking if it's the pure prompt or pure checking if it's being used in prezto).

I'll explore some more options, but the "easiest" option I can think of is to split the editor module off into its own repo and try to get that implementation to be the standard for prompts moving forward. It would allow other modules to state that folks would need that module as well, and then we could alleviate issues like this (with pure or spaceship or whatever prompt it is). If a consensus can be reached on how things should be implemented for prompts (think css but for zsh), then maybe that'd create consistency.

The long explanation probably sums up why "easiest" is in quotes. I'll see what else I can come up with.

lalonde pushed a commit to lalonde/prezto that referenced this issue Feb 28, 2019
charlie1404 pushed a commit to charlie1404/prezto that referenced this issue Mar 9, 2019
GuyHarwood pushed a commit to GuyHarwood/prezto that referenced this issue Mar 14, 2019
jcharum pushed a commit to jcharum/prezto that referenced this issue Mar 31, 2019
@belak
Copy link
Collaborator

belak commented May 28, 2019

@johnpneumann Did you get a chance to look in to this?

mverteuil pushed a commit to mverteuil/prezto that referenced this issue Jun 4, 2019
mnology pushed a commit to mnology/prezto that referenced this issue Jun 5, 2019
@johnpneumann
Copy link
Collaborator

johnpneumann commented Jun 6, 2019

I did and the net-net is someone has to add a check into their code to ensure that the update doesn't happen twice. Splitting the editor module out (while it might be nice), would mean that we'd need to find a new home for it and we'd be taking some fairly core functionality to address the issue at hand.

My preference would be that the check come from the theme side ONLY because we're a framework. If we add in one for this, we'll have to support multiple eventually and that sounds tedious and prone to breaking things long term. Thoughts?

@belak
Copy link
Collaborator

belak commented Jun 6, 2019

Thanks for looking into that. There's so much interacting here, it's hard to follow sometimes.

Could we provide a convenience function that a prompt could call in its setup function to enable the built-in reset? Along with a way to disable it on unload. Then we could still include the functionality in our themes, but it wouldn't interfere with external themes.

@johnpneumann
Copy link
Collaborator

@belak - Never responded, but I'm still looking at the best way of handling this. Yes, we can do what you're suggesting, but what I'm finding right now is that even when we disable any of the updating of the reset, pure 1.8.x and up eats the line above it. It's actually really irritating me right now, because I've tested this on 3 separate OS' (Arch [release: 2018-11-05; zsh version: 5.7.1], Debian Buster [zsh version: 5.7.1], and Mojave [release: 10.14.5; zsh version: 5.7.1]) and it exists on every OS. I even put the conditional around the entire editor-info block and it still occurs.

I'm hoping this isn't another 5.3.1 debacle, so I'm going to build 5.4.2 on a few systems to see if I can repro with that version, since that was the last version I can remember working fine. What's actually disconcerting about this, is that if you use one of the prompts we provide, it works just fine on all of the aforementioned OS'. I may try this with ohmyzsh to see what happens there as well.

landonpoch pushed a commit to landonpoch/prezto that referenced this issue Jul 3, 2019
@johnpneumann
Copy link
Collaborator

So here's where things are at: I've tested on 5.7.1 across multiple nix distros and MacOS. I also tested on 5.4.2. With everything being a conditional for the aforementioned functionality it works... Ish. It appears that there's a bug within the pure prompt, that when you go quickly from command mode to insert mode, you'll consume the previous line. I tested this with prezto, as well as, just with the pure prompt with nothing else.

So, I'll add in some hooks to disable the prompt management by the editor for non-prezto managed themes, but there will still be an upstream issue. Should have it wrapped up in a day or two (want to make sure we don't break our prompts in the process).

@johnpneumann
Copy link
Collaborator

johnpneumann commented Jul 12, 2019

PR opened to fix the issue. Anyone affected with this, please check the proposed changes. It's 2 lines (if you omit the readme update and the fact that I indented things).

You'll need to git checkout master in the pure directory as well and switch your prompt. I'm working on getting my test environment for Prezto open sourced, but $dayjob rules.

Also, please note my above comment that pure is still broken when quickly changing from command to insert mode.

zoqaeski added a commit to zoqaeski/prezto that referenced this issue Aug 17, 2019
SnipyJulmy pushed a commit to SnipyJulmy/prezto that referenced this issue Sep 10, 2019
eksop pushed a commit to eksop/prezto that referenced this issue Sep 23, 2019
rooney pushed a commit to rooney/prezto that referenced this issue Aug 19, 2020
joshpaulchan pushed a commit to joshpaulchan/prezto that referenced this issue Dec 10, 2020
ivanalejandro0 pushed a commit to ivanalejandro0/prezto that referenced this issue Feb 22, 2021
RIT80 pushed a commit to RIT80/prezto that referenced this issue Jan 25, 2022
RIT80 added a commit to RIT80/prezto that referenced this issue Jan 25, 2022
This was referenced Feb 15, 2022
aspin pushed a commit to aspin/prezto that referenced this issue Jul 19, 2022
* syntax-highlighting: Update README to clarify module load order

Fixes sorin-ionescu#1584

* completion: Compact path to global ssh known hosts file

* coreutils: update list of included coreutils (sorin-ionescu#1592)

* Fix broken gitref link in README.md

gitref.org points to services.github.com, and has been for some time[0].

[0] git/git-reference#112

* Make node-info work without nvm/nodenv

* Improve startup time by skipping pyenv rehash

After profiling startup time, I found that "pyenv rehash" is
by far the slowest piece. This change skips rehashing on init.

See pyenv/pyenv#784 (comment)

Also pass the shell explicitly, as suggested in
pyenv/pyenv#784 (comment),
which provides a modest improvement.

In total, this improves startup time from 1s to 0.3s on my machine.
Using the following command:
python -m timeit "__import__('subprocess').Popen(['zsh', '-i', '-c', 'echo']).communicate()"

Result before this change:
10 loops, best of 3: 1 sec per loop

Result after this change:
10 loops, best of 3: 334 msec per loop

* Update submodules (sorin-ionescu#1615)

This updates the submodules for autosuggestions, completion,
syntax-highlighting and the prompts async, powerlevel9k and pure.

All submodules that have TAGs/Releases were updated to their latest
TAG/release, except for syntax-highlighting because it's latest
release/TAG is from more than one year ago, and the project seems to be
well maintained but without releases.

* Correct alphabetical order in zprestorc

* Add explanation for extra git theme symbols in README.md

Helps with sorin-ionescu#1589

* [git] Also check "commondir" when looking for a stash (sorin-ionescu#1620)

* homebrew: Load standard Homebrew environment variables into shell session.

However, guard for legacy Homebrew as `brew shellenv` is relatively new.

* homebrew: Replace deprecated casks with their brew counterpart

Homebrew has deprecated `brew cask cleanup` and `brew cask search` in favor
of `brew cleanup` and `brew search` respectively. They will stop working on
2018-09-30. Further, `--outdated` has been removed.

We should eventually remove the related aliases, but for a while we keep
supporting them gracefully with deprecation warning.

The documentation has been removed from README.md, however.

* homebrew: Cleanup homebrew aliases

- 'brew upgrade' does 'brew update' by default, no need for explicit call
- replace 'brew remove' with 'brew uninstall' for consistency

* Updating submodules

For the submodules that have some kind of release (tags), they were
updated up to the most recent release. Otherwise, the submodule was
updated to the latest commit.

* python: use pure's magic value for VIRTUAL_ENV_DISABLE_PROMPT

Fixes sorin-ionescu#1627

* python: respect PYENV_ROOT if already set

Fixes sorin-ionescu#1578

* environment: only enable bracketed paste on non-dumb terminals

Fixes sorin-ionescu#1552

* doc: Bit of copyediting and formatting for consistency and clarification

* submodule: Updating submodules

'modules/prompt/external/async' updated to 'v1.7.1'
'modules/syntax-highlighting/external' updated to latest 'master'

* general: Miscellaneous documentation updates

- Add missing documentation for options and environment variables
- Rearrange definition and documentation of 'Options', 'Variables'
  and 'Aliases' in a consistent order

* doc: More copyediting and formatting for consistency

* Update submodule 'history-substring-search'

history-substring-search doesn't tag releases anymore and just maintains
the master branch -- switching to tracking master instead.

* prompt/steeef: Add basic support for editor_info and preview

* prompt/minimal: Add support for preview

* prompt/sorin: Minor cleanup and reordering

* Fix issue sorin-ionescu#1635. Option to disable GNU ls to group directories first.

* Update submodules

Updating to the latest released tags for modules:
completetion
syntax-highlighting

And for agnoster prompt

* Resolves sorin-ionescu#1641 - Roll the pure prompt back from 1.8.0 to 1.7.0

* Update submodules versions

* command-not-found: Restore idiomatic homebrewed handler loading on MacOS

As is the convention in prezto, we cache the command-not-found handler to
avoid incurring the performance penalty of loading ruby interpreter on
every call. This restores the 'Homebrew way' of loading command-not-found
handler.

Further, the formally recommended command lookup mechanism in Homebrew
(viz., `brew command command-not-found-init`) is ruby based and is super
slow. To avoid performance penalty, we `find` it ourselves from
`TAP_DIRECTORY` defined internally in Homebrew.

This also reinstates support for custom taps or non-standard Homebrew location.

* python: Make cached completion file mangling more reliable

While mangling cached completion file, we cannot just assume that
`$pip_command` would resolve to `pip` -- it might be `pip2` or `pip3`
depending on the relative position in zsh `$commands` array. Thus
replace the whole of 'pip*' with 'pip pip2 pip3' for compctl assignment.

* python: Use more apropriate filename for pip completion

* node: Cache completion for additional helpers

Add support for npm and additional well-known helper commands

* command-not-found: Support custom Homebrew tap on MacOS

Added support for homebrew-command-not-found from a non-default tap

* python: Fix pip compctl file match pattern

Make `sed` match more reliable while replacing the whole of 'pip*' with 
'pip pip2 pip3' for `compctl` assignment

* node: Make nvm lookup mechanism more efficient in homebrewed environment

In homebrewed environment, avoid using `brew --prefix nvm` which is
ruby based and is super slow. Instead, rely on homebrew standard
behavior wherein all installed packages are available in canonical
path $(brew --prefix)/opt/<package> (for nvm it would obviously be
`$(brew --prefix)/opt/nvm`).

NB: `$(brew --prefix)` (without additional argument) is a simple shell
shortcut and doesn't have the same performance impact.

* rsync: Update link to Bombich rsync page again

* syntax-highlighting: Further clarify relative module ordering

* Aliases to digital sign/verify commits and tags (sorin-ionescu#651)

* git: add documentation for new aliases

* archive: Enhance 'archive' helper to support multi file archive

We now allow multiple paths (files/directories) to be archived in
one shot. Validation of the target path(s) is now delegated to the
actual archive helper.

* homebrew: Simplify array assignment

No need for nesting array assignment only to flatten it later.

* homebrew: Load 'HOMEBREW_' prefixed variables only

Load 'HOMEBREW_' prefixed variables only. Avoid loading 'PATH'
related variables as they are already handled in standard zsh 
configuration.

* command-not-found: Minor reformatting

* python: Expand compctl matches for pip variants

Expand `sed` match for more variants of 'pip*' (pip, pip2, pip3, pip2.7, 
pip3.7 etc.) for `compctl` assignment

* Remove duplicated information from git module README (sorin-ionescu#1657)

* python: Use brace expansion for pip compctl match

Just use brace expansion only (and not a mix of brace expansion and
path expansion) to expand `sed` match for more variants of 'pip*' (pip,
pip2, pip3, pip2.7, pip3.7 etc.) in `compctl` assignment

* Fix typo: gupl --> gulp (sorin-ionescu#1668)

* Updating submodules to lastest tags/master commits

* Remove old prompt tempfile and pid variable

This is a leftover of sorin-ionescu#1385, the temp file and the PID variable is not
needed any more.

* Update syntax-highlighting submodule

* remove mutually exclusive option

* editor: allow alt+arrow keys for word movement (sorin-ionescu#1688)

* archive: enhance parallel operations

* Add zstyle option to disable zsh option CORRECT

* Disable node-info output when value is system.

This makes the behavior consistent with rbenv and pyenv.

* Update zsh-autosuggestions submodule

* Add powerlevel10k theme (sorin-ionescu#1695)

* prompt: update powerlevel10k to latest commit

* prompt: update powerlevel10k submodule (sorin-ionescu#1715)

* prompt: update powerlevel10k submodule to the latest commit (sorin-ionescu#1717)

A bunch of bug fixes. Most notably romkatv/powerlevel10k#89.

* prompt: update powerlevel10k submodule to the latest commit (sorin-ionescu#1726)

Changes include a few bug fixes and a score of new features.

* prompt: update powerlevel10k submodule to the latest commit (sorin-ionescu#1727)

The last update has picked up a nasty bug in gitstatus that disables all user aliases. This commit fixes it.

* Resolves 1641 - Checks whether the prompt is set to be managed or not. (sorin-ionescu#1723)

This is a new variable that will need to be set on all new prompts and
is not backwards compatible with custom prompts that are not prezto
managed, but use prezto's editor-info functionality. Updated the
README.md with additional information for themes.

* prompt: update powerlevel10k submodule to the latest commit

New feature: Configuration Wizard. Type `p10k configure` to
explore the unique styles and features Powerlevel10k has
to offer.

* prompt: update powerlevel10k submodule to the latest commit

A dozen bug fixes. Most important:

- rbenv and a few other segments didn't work if IFS was set
  to something unusual.
- vcs segment couldn't properly apply subsegment style if
  color overrides used mnemonic names.
- the check for .p10k.zsh already being sourced was too strict.

* prompt: update powerlevel10k submodule to the latest commit

- Several bug fixes. Most notable:
  - Don't hide command execution time on reset-prompt.
  - Support prezto with zsh 5.1.
  - Don't hide nvm prompt when there is no nvm command.
- New prompt: ranger.
- Add an option to hide rust version when outside of rust project tree.
- Add an option to show rvm gemset.

* syntax-highlighting: update external dependency

* prompt: update zsh-async to fix an infinite loop (sorin-ionescu#1734)

* prompt: update powerlevel10k submodule to the latest commit (sorin-ionescu#1738)

- New prompt segment: terraform.
- Configuration wizard:
  - Offer to install Meslo Nerd Font (only on iTerm2 and Termux).
  - Offer to enable `time` prompt segment.
  - New style options: round separators, heads and tails.
  - Reduce the minimum required terminal width to 55 columns.
- Several bug fixes. Most notable:
  - Fix network interface and ip parsing on Linux and WSL.
  - Disregard auto_name_dirs if it's set.

* history: Permit use of previously set HISTFILE

Honor the use of the HISTFILE environment variable, if it's already set.

* directory: update docs to clarify it doesn't really set AUTO_NAME_DIRS (sorin-ionescu#1740)

Module `directory` used to set AUTO_NAME_DIRS. This was changed in
73e94b8 but README.md hasn't been updated. This looks like an
accidental omission that this commit fixes.

* ruby: support environment variable RBENV_ROOT

* node: support environment variables NVM_DIR and NODENV_ROOT

* python: improve PYENV_ROOT detection

* node, python, ruby: update docs about new envars

* tmux: ignore tmux autostart in vscode terminal (sorin-ionescu#1718)

In certain situations VSCODE_PID isn't set any more, so we just need to check TERM_PROGRAM which has existed for a few years already.

* utility: fix safe-ops commands

Fixes sorin-ionescu#1699

* Remove alias for invalid `brew cleanup --force`

`brew cleanup --force` produces the following error message: `Error: invalid option: --force`. I can't seem to find any record of this being a valid option for the cleanup command, so either it was deprecated in the stone age or it was a simple mistake. However, there is a `--force` option available for `brew uninstall`, but that's a dicey thing to alias.

* Init submodules when using zprezto-update (sorin-ionescu#1713)

* Remove documentation for obsolete `brewC` alias

* homebrew: add alias `brewL`

* prompt: update powerlevel10k submodule to the latest commit (sorin-ionescu#1757)

- New feature: Instant Prompt.
  - Zsh starts instantly even if zshrc loads dozens of plugins.
  - Must be explicitly enabled via `p10k configure`.
- New prompt segment: azure.
- New styles: Pure and Rainbow.
- 6 times faster loading (independent of instant prompt).

* prompt: update powerlevel10k submodule to the latest commit (sorin-ionescu#1761)

New feature: Transient Prompt.

Demo:
https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/transient-prompt.gif

Announcement post:
https://www.reddit.com/r/zsh/comments/dsh1g3/new_powerlevel10k_feature_transient_prompt

* prompt: update powerlevel10k submodule to the latest commit (sorin-ionescu#1768)

- New prompt segments:
  - gcloud
  - fvm
  - vim_shell
  - midnight_commander
  - goenv
- Many bug fixes and new minor features.

* Allow mapping Ctrl+S and Ctrl+Q shortcuts (sorin-ionescu#1750)

* environment: apply `stty -ixon` only to tty (sorin-ionescu#1771)

* runcoms: don't raise an error in zlogin when stderr is not a TTY (sorin-ionescu#1775)

The existing code in runcoms/zlogin results in `$?` being
equal to `1` when starting a login shell if stderr is not
a TTY. For example:

  zsh -l 2>/dev/null

When using a theme that displays error/success status of
the last command, the first prompt will show an error.

This commit fixes it so that error code is zero after
sourcing zlogin (unless something unexpected and bad happens).

* Support pmodule-allow-overrides feature (sorin-ionescu#1780)

* autosuggestions: update to v0.6.4

* Allow module functions directory to be a symlink

The link must still point to a full directory.

* prompt: update powerlevel10k submodule to the latest commit (sorin-ionescu#1784)

- New features:
  - Show On Command -- Display prompt segments conditional on the
    command being typed. Demo:
    https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/show-on-command.gif
  - `p10k display` -- Quickly hide or show different parts of prompt.
  - `p10k-on-*` hooks -- Get notified about prompt-related events.
- New prompt segments:
  - google_app_cred -- Google Application Credentials.
  - luaenv -- Lua version from https://github.com/cehoffman/luaen.
  - jenv -- Java version from https://github.com/jenv/jenv.
  - plenv -- Perl version from https://github.com/tokuhirom/plenv.
  - nnn -- Shell indicator for https://github.com/jarun/nnn.
- Important fixes:
  - Ctrl-C no longer shortens prompt when used to terminate a zle widget
    with transient prompt enabled.
  - Don't print warnings in instant prompt when OMZ is updating.
  - rust_version now properly recognized rustup overrides.
- Smoother rendering when using transient prompt.
- New style in `p10k configure`: Lean restricted to 8 colors.

* node: suppress node-info when nvm points system-wide node (sorin-ionescu#802)

On modern versions of nvm, when virtual environment is not activated
(i.e. node comes from system-wide and `nvm version` == 'system'),
redundant node-info could be suppressed from showing.

* environment: improve the TTY check (sorin-ionescu#1785)

Bug report from @qosmio:
sorin-ionescu#1771 (comment)

I'm unable to reproduce it and @qosmio hasn't yet confirmed or
disconfirmed whether this fix works. It's a good idea to change
the code this way in either case.

(As I mentioned in sorin-ionescu#1771, this `stty -ixon` call may have been added
by mistake. It doesn't do what the comment suggest and is at least as
likely to be harming users as helping them.)

* Update documentation

- Fix an old link to the wrong issue tracker
- Add documentation to the history module about migration from oh-my-zsh

Closes sorin-ionescu#1766

* prompt: update powerlevel10k submodule to v1.1

==[ Changes since the last release ]==

- Complete documentation overhaul. Powerlevel10k documentation is no
  longer embarrassing (still no reference though; coming "soon").
- Worker pool and recursive globber have been rewritten for better
  performance and simpler code. Performance improvements (large
  speedup means an improvement in big-O and at least 2x in typical
  configurations):
  - +15% prompt speedup across the board.
  - Large prompt speedup for several rarely used prompt segments
    (disk_usage, ram, etc.).
  - Large prompt speedup for a few prompt segments on macOS
    (battery, swap, etc.).
  - Large prompt speedup when many prompt segments are active
    simultaneously.
  - Large prompt speedup when filesystem is slow.
- New prompt segments: nix_shell and timewarrior. Both enabled by
  default.
- Configuration wizard:
  - Many new options for Pure style (color scheme, number of lines,
    etc.)
  - Several new options for 8-color version of Pure style.
  - Better support for terminals with less than 256 colors.
  - Lean, Classic and Rainbow style configs now have disk_usage and
    swap prompt segments (disabled by default).
  - POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER now contains 'oc'.
- New parameters:
  - POWERLEVEL9K_LEGACY_ICON_SPACING=true makes spaces around icons
    appear just like in powerlevel9k.
  - When in a vcs repo, POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=true
    removes directory prefix that precedes repo root.
  - P9K_KUBECONTEXT_USER can now be used in kubecontext format.
  - POWERLEVEL9K_GOENV_SOURCES -- the same as
    POWERLEVEL9K_RBENV_SOURCES but or go.
  - POWERLEVEL9K_TERRAFORM_CLASSES -- the same as
    POWERLEVEL9K_AWS_CLASSES but for terraform.
- Bug fixes:
  - Configuration wizard now correctly follows symlinks when modifying
    ~/.zshrc and ~/.p10k.zsh.
  - ram prompt segment now works on WSL.
  - Powerlevel10k now correctly works with zsh-you-should-use in
    hardcore mode.
  - POWERLEVEL9K_PUBLIC_IP_HOST now points to a host that actually
    works.
  - Instant prompt no longer prints nonsensical "entry=" in rare
    circumstances.
- Misc:
  - Config templates no longer work with
    POWERLEVEL9K_VISUAL_IDENTIFIER='' defined after them.
  - Powerlevel10k now detects when Antigen corrupts its source and
    emits an appropriate error message.
  - Command line parser now understands 'tabbed'.
  - Remove all references to romkatv/dotfiles-public. Fonts are now
    hosted in romkatv/powerlevel10k-media together with all images
    and animations.

==[ Build time dependencies ]==

- https://github.com/romkatv/gitstatus/tree/edb99aa7b86d10ad0a1cfe25135b57c8031d82ad
- https://github.com/romkatv/libgit2/tree/75be63625a0de418ec3551306362ee1e21034039
- https://opensource.apple.com/tarballs/libiconv/libiconv-51.200.6.tar.gz

* Updated prompt pure to version 1.11.0

* prompt: update powerlevel10k submodule to v1.2.0

Release notes: https://github.com/romkatv/powerlevel10k/releases/tag/v1.2.0

* use $TTY instead of $(tty); it's faster and more reliable

`tty` command infers the current TTY from file descriptor 0.
`$TTY` gives current TTY directly. The latter works even when
file descriptor 0 is redirected. It's also over 1000 times faster.

* prompt: update powerlevel10k submodule to v1.3.0

Release notes: https://github.com/romkatv/powerlevel10k/releases/tag/v1.3.0

* prompt: update powerlevel10k submodule to v1.4.0

Release notes: https://github.com/romkatv/powerlevel10k/releases/tag/v1.4.0

* Update syntax-highlighting module

* feat(helper): add os-type helper functions

Add the following functions:

- is-darwin
- is-linux
- is-bsd
- is-cygwin

And apply them everywhere I found code doing that what these functions do.

* prompt: update powerlevel10k submodule to v1.5.0

Release notes: https://github.com/romkatv/powerlevel10k/releases/tag/v1.5.0

* Fix missing dependency on helper module for helpers added in sorin-ionescu#1793 (sorin-ionescu#1811)

PR sorin-ionescu#1793 introduced helper functions for OS detection in some modules.
These helpers require a module dependency on the 'helper' module.

* prompt: fix usage of zsh-async in sorin prompt (sorin-ionescu#1810)

* fix: regression in homebrew module (sorin-ionescu#1816)

* Use shallow clone for powerlevel9k and powerlevel10k submodules (sorin-ionescu#1819)

* homebrew: load helper dependency

Updates sorin-ionescu#1815

* prompt: update powerlevel10k submodule to v1.7.0

Release notes:

  - https://github.com/romkatv/powerlevel10k/releases/tag/v1.6.0
  - https://github.com/romkatv/powerlevel10k/releases/tag/v1.6.1
  - https://github.com/romkatv/powerlevel10k/releases/tag/v1.7.0

* Do not source history-substring-search if already loaded (sorin-ionescu#1830)

* [git] Add git pull autostash alias

Adds the gfma and gfra aliases with the `--autostash` flag.

* prompt: update powerlevel10k submodule to v1.10.0

Release notes:

- https://github.com/romkatv/powerlevel10k/releases/tag/v1.8.0
- https://github.com/romkatv/powerlevel10k/releases/tag/v1.8.1
- https://github.com/romkatv/powerlevel10k/releases/tag/v1.8.2
- https://github.com/romkatv/powerlevel10k/releases/tag/v1.9.0
- https://github.com/romkatv/powerlevel10k/releases/tag/v1.9.1
- https://github.com/romkatv/powerlevel10k/releases/tag/v1.10.0

* prompt: update powerlevel10k submodule to v1.11.0

Release notes: https://github.com/romkatv/powerlevel10k/releases/tag/v1.11.0

* Make .zcomp* location configurable (sorin-ionescu#1842)

* Remove `--all` from git alias `glg` (sorin-ionescu#1853)

* Ask pyenv whether pip exists if installed (sorin-ionescu#1848)

Pyenv will install shims for commands that exist in any interpreter, even if it is not the current one. This means that a command may technically exist, but when executed will tell the user to try a different interpreter. The original check for pip in the Python module can fail for this reason, in particular on Ubuntu 20.04.

This change checks with pyenv whether pip really exists in the current interpreter to work around this problem and fixes a bug in pip command detection.

* git-info: use tab as separator for splitting ahead_and_behind (sorin-ionescu#902)

The current implementation is not tamper-proof against a modified IFS. See discussion in sorin-ionescu#902 for details.

* prompt: update powerlevel10k submodule to v1.12.0

Release notes: https://github.com/romkatv/powerlevel10k/releases/tag/v1.12.0

* utility, helper: add aliases to use with termux terminal emulator (android) (sorin-ionescu#1859)

* README: fix small grammatical error (sorin-ionescu#1857)

* completion: bump version to tags/0.32.0 (sorin-ionescu#1856)

* Add check for empty WORKON_HOME (sorin-ionescu#1861)

When $WORKON_HOME is not set and $ENV_NAME is equal to
$PROJECT_ROOT/.venv which contains bin/activate then
the code wrongly assumes workon is available.

It should execute the second branch to source bin/activate.

* Add ^_ mapping to undo in viins mode (sorin-ionescu#1860)

This allows to cancel a tab completion, as ^_ in emacs mode.

* prompt: update powerlevel10k submodule to v1.13.0

Release notes: https://github.com/romkatv/powerlevel10k/releases/tag/v1.13.0

* prompt: update powerlevel10k submodule to v1.14.3

Release notes:

- https://github.com/romkatv/powerlevel10k/releases/tag/v1.14.0
- https://github.com/romkatv/powerlevel10k/releases/tag/v1.14.1
- https://github.com/romkatv/powerlevel10k/releases/tag/v1.14.2
- https://github.com/romkatv/powerlevel10k/releases/tag/v1.14.3

* prompt: update powerlevel10k submodule to v1.14.4

Release notes:

- https://github.com/romkatv/powerlevel10k/releases/tag/v1.14.4

* prompt: update powerlevel10k submodule to v1.14.5

Release notes:

- https://github.com/romkatv/powerlevel10k/releases/tag/v1.14.5

* prompt: update powerlevel10k submodule to v1.14.6

Release notes:

- https://github.com/romkatv/powerlevel10k/releases/tag/v1.14.6

* Fix a typo s/eigth/eighth/

* Update history-substring-search submodule to v1.0.2

* Enable `history-substring-search` as a default module

Resolves sorin-ionescu#1868

* osx module mand fix

> The {query} has to be percent-escaped in macOS 11.

Just replace `:` to `%3A` work fine.

But add function like this one I find on stackoverflow to encode the entire query string would be more robust.
```bash
urldecode() {
    # urldecode <string>

    local url_encoded="${1//+/ }"
    printf '%b' "${url_encoded//%/\\x}"
}
```

* history: Minor formatting update

* history: Update doc to accommodate recent macOS

In recent versions of macOS (Catalina and above), `HISTFILE` is set
via system `/etc/zshrc`.

* prompt: Remove Powerlevel9k

Powerlevel9k has been marked deprecated and unmaintained by the author.
Powerlevel10k is now the recommended replacement.

See: https://github.com/Powerlevel9k/powerlevel9k#powerlevel9k-is-deprecated-and-now-unmaintained-please-use-powerlevel10k

* prompt: Make 'powerlevel9k' removal warning message friendlier

* Add support for zstd compressed tarballs to module 'archive'

* base: Allow loading more specific 'run-help' function

Allow loading more specific 'run-help' function from $fpath. This
allows automatically looking up specific sub-command helper if
available instead of the static default ('man').

See: https://github.com/zsh-users/zsh/blob/ccc9cff9e244725ed604fd1ac20e4958339e3885/Functions/Misc/run-help#L3-L8

* utility: Autoload helper functions for 'run-help'

Now that, prezto is configured to lookup more specific 'run-help'
function, autoload the known ones for utility.

* git: Autoload helper functions for 'run-help'

Now that, prezto is configured to lookup more specific 'run-help'
function, autoload the known one for git.

* command-not-found: Simplify Homebrew on macOS setup

Now that 'command-not-found' helper loading has been significantly
simplified and the startup time improved in the official Homebrew tap,
the workaround for script detection (and caching) can be removed.

* prompt: Update 'powerlevel9k' removal warning with instruction

* command-not-found: Update docs for Homebrew

Update documentation for Homebrew to indicate that a recent version of 
Homebrew does not need to tap `command-not-found` Homebrew repository.

* prompt: Fixup `~/.zpreztorc` in p9k removal warning

* Ensure compinit updates its modified date

`compinit -i` doesn't always change zcompdump, which means that the
`compinit -C` condition fails to run until the completions change.
When we `compinit -i`, we should touch the file too to solve this.

* completion: Add note about keep zcompdump younger than cache time

* Delete prompt_powerlevel9k_setup

I think this should have been removed as part of sorin-ionescu@0a07ba2.

Currently I'm seeing this warning after updating to `master`:
```
Couldn't read file /Users/jeffwidman/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup containing theme powerlevel9k.
```

* base: Check for 'run-help' in `aliases` hash before evicting

Add guard to check for presence of 'run-help' in `aliases` hash before evicting.
In some systems (like Debian) '/etc/zshrc' might have already done it.

* helper: Update docs for OS detection helpers

* archive: Remove unnecessary interpreter directive

These files are expected to be `source`d in and not executed standalone.

* homebrew: cask aliases update

* homebrew: Remove wrapper function for deprecation warning

* homebrew: Add 'brew upgrade' alias for cask

This adds alias for 'brew upgrade --cask' specifically for casks
via alias 'casku' (analogous to 'brewu').

* homebrew: Update documentation

* history: Move HISTFILE path to more conventional one

Change default `HISTFILE` path from `~/.zhistory` to more conventional
`~/.zsh_history`. This aligns better with Debian variants, macOS and
Oh My Zsh.

This would provide an easier onboarding experience to users coming to
Prezto from standard (framework free) zsh or from Oh My Zsh.

For existing Prezto users, we attempt to automatically rename old
`HISTFILE` to new one iff the old one exists and the new one doesn't.
However, if both old and new `HISTFILE` exist and the old one is more
recent, we just alert the user about what changed with a suggested way
to accommodate the change.

* completion: Add completion for keg-only brewed curl when available

As curl bundled with macOS does not include `_curl` definitions, one
way to make `_curl` available is to install curl from Homebrew.

However, since curl from Hombrew is _keg-only_, its function path needs
to be explicitly included.

* node: Fixup nvm path detection for Homebrew based nvm

Prefer using `brew --prefix nvm` instead of just `brew --prefix` and
actually use the variable `nvm_prefix` once detected and set up.

* rsync: Remove broken HFS+ specific compression flag

Remove `--protect-decmpfs` by default since hfs-compression specific
changes have been marked by upstream as broken since 3.1.3 and there is
little likelihood of that changing.

* rsync: Check for new rsync before applying newer options

The newer options for extended attributes or file-flags got reliable
only after rsync v3.1.

* rsync: Recommend Homebrew or MacPorts rsync for macOS

Bundled `rsync` is 2.6.x which is too old. Prefer 3.2.x from Homebrew
or MacPorts instead.

* environment: Simplify nested conditional block

Avoid unnecessary nesting for conditional block.

* general: Reformat documentation with better formatting and wording

General purpose reformating and rewording in (a few places). This should
also make markdown linting happier.

Prefer back-ticks wherever useful and use `console` for code blocks to
be executed on terminal.

Also, update references links wherever possible (including update from
'http://' to 'https://').

* history: use external `mv` command for HISTFILE migration

This will make sure the actual external command `mv` is used instead of
wrapper function.

* prompt: Fix git submodule path for 'pure' with actual path

WARNING: This will require synchronizing submodules' remote URL
configuration setting to the value specified in `.gitmodules` by doing:
`git submodule sync --recursive` in your Prezto location.

Signed-off-by: Indrajit Raychaudhuri <irc@indrajit.com>

* general: Apply submodules' path change in doc and `zprezto-update`

We need to accommodate cases where a submodule local path (or remote)
URL can change. Accordingly, update instruction and `zprezto-update`
function to synchronizes submodules' remote URL configuration setting
to the updated value automatically.

* completion: Update zsh-completions submodule to 0.33.0

* prompt: Update async helper to 1.8.5

* utility: Detect GNU 'ls' before applying the relevant tweaks

Detect `ls` provided by GNU Core Utilities upfront before applying
the relevant settings and aliases.

The revised logic takes the following aspects into consideration:
- `is-callable 'dircolors'` is not a sufficient test for verifying if
  the `ls` in scope is _also_ provided by GNU Core Utilities. `ls` can
  continue to be the one provided by BSD Core Utilities because of its
  precedence in `$path`.
- The `ls` in scope anyway can be either GNU Utils provided or BSD Utils
  provided depending on either `$path` precedence, soft link (via
  `ln -s`), or wrapper function (via 'gnu-utility' module).
- So instead of '_guessing_' the possible one, just detect if it is from
  GNU Utils and apply the relevant settings and aliases.
- Note that GNU prefixed `ls` (`gls`) is intentionally not honored in
  this case to avoid possible conflict/shadowing with other `gls`
  callable (can happen if 'git' module is used, for example).
  Besides, honoring `gls` would imply we honor other commands (like
  `mv`, `rm` etc.) to be consistent. We have a module 'gnu-utils'
  dedicated for that after all.

* general: Update documentation better qualifying runcom paths

Zsh and Prezto files don't always reside in `~/`. Instead, they have
a more spec compliant location (`${ZDOTDIR:-$HOME}/`). Make them
unambiguous in the documentation. Likewise, for `$GNUPGHOME`.

Further, add instruction for optionally setting up Prezto in
`$XDG_CONFIG_HOME`.

While at this, also add clarification on relative ordering of some of
the modules, apply more formatting tweaks and doc improvements.

* utility: Honor pre-defined COLOR settings for grep

Honor `GREP_COLOR` or `GREP_COLORS` if already defined for coloring
`grep` output.

* utility: Check best-fit Python version for 'http-serve'

When creating `http-serve` alias, first check if Python is actually
available. And, if available, apply the most specific version.

* zprofile: Don't exit 'less' when everything fits the screen

This aligns better with default `less` behavior and allows for
'growable content' when `less` is used as a substitute for `tail`.

* utility: Always use 'git' fallback for 'wdiff' wrapper

Use `git` fallback (if present) even when color is off and `wdiff` is
not present.

Further, remove redundant `function` clause as per Prezto convention.

* utility: Remove redundant `function` clause in 'diff'

We don't use `function` clause in Prezto by convention.

* utility: Use Zsh native mechanism to detect GNU 'du'

Skip additional call to `grep` and use Zsh native mechanism to detect
GNU version of `du`.

Further, Remove redundant `function` clause as per Prezto convention.

* utility: Simplify conditional block for 'make' helper

Further, remove redundant `function` clause as per Prezto convention.

* gnu-utility: Add more utility commands and rearrange

Add missing `basenc`, `egrep`, `fgrep` etc. and reformat a bit.

* utility: Add support for 'aria2c' in 'get' alias

`get` alias now supports `aria2c` via optional `zstyle`.

To configure `aria2c` to be used for `get`, use:
zstyle -s ':prezto:module:utility:download' helper 'aria2c'

Note that we still fall back to `curl` when the desired download helper
isn't available.

* completion: Set standard style used by 'list-colors'

Set `LS_COLORS` if not already available so that it is available as
standard style `list-colors`.

This needs to be explicitly set in completion module to ensure that the
variable is available even if 'utility' module is not loaded earlier.

* node: Revamp and optimize 'node' module

Changes:
- nodenv and nvm now honors (and prioritizes) `$XDG_CONFIG_HOME` over
  `$HOME` to lookup local nodenv/nvm installation.
- Make `nvm` loading lazy (via `--no-use` argument).
- Remove redundant NODENV_ROOT or NVM_DIR, respective script already
  set them up.
- Adhere to more idiomatic Zsh operation and minimize external command
  usage (like `sed`).

* node: Prefer nodenv over nvm when available

Reverse `nodenv` vs `nvm` selection order, preferring `nodenv` instead.

For additional rationale, see: https://github.com/nodenv/nodenv/wiki/Why-nodenv%3F

* node: Optimize completions for loading lazily on demand

Move `grunt` and `gulp` to separate completion definitions wrapping
`grunt --completion=zsh` and `gulp --completion=zsh` respectively.

Since the completions are loaded lazily on demand, they avoid the
performance overhead during Zsh initialization.

Additionally, remove `npm` completion since it is already bundled with
Zsh for quite a while.

* node: Add environment variable to store 'n' cache

See: https://github.com/tj/n#installation for details.

* node: Add handy aliases for 'npm'

Add standard `npm` aliases that are used frequently.

* git: Alias and function cleanup and formatting for clarity

Changes:
- Prefer longer form of git switch for better clarity.
- Move `-S` (`--gpg-sign`) in all the alias definitions to  the end to
  allow custom keyid.
- Simplify operations in helper functions git native calls.
- Apply minor reformatting and rearranging.

* git: Optimize scripts for git helper functions

Optimize git internal calls and adjustment git helper functions to use
more idiomatic Zsh conventions avoiding external calls.

* git: Use `update` instead of `foreach` in alias 'gSu'

Modern `git` can use `submodule` option `update` instead of `foreach`
to achieve approximately similar outcome.

To allows call without assuming that all submodules will have default
branch as `master`, the preferred approach would be to call
`git submodule update --remote --recursive` after registering the
correct branch for submodule in `.gitmodules`:

```
git config -f .gitmodules submodule.<path>.branch <branch>
```

For more discussion, see: https://stackoverflow.com/a/33835815

Signed-off-by: Indrajit Raychaudhuri <irc@indrajit.com>

* git: Update minimum required git version to 2.11

Git 2.11+ has more versatile `submodule`, `fetch`, `rebase` options for
common use-cases.

* completion: Skip completion lookup for key-only brewed curl

Skip lookup for `_curl` completion function to avoid fallback
completion having higher priority.

* Fix broken source commands in node module

Placing `--no-use` inside the quoted string results in source
attempting to load a file which literally ends with ` --no-use`
instead of passing --no-use as an argument.

* completion: Avoid double-quoting LS_COLORS for completion

Double-quoting `LS_COLORS` prevents it from loading in environment,
which isn't what we want.

* python: Reformat and apply visual cleanup

Changes:
- Fallback to `virtualenvwrapper` without `pyenv` wrapper if `python` is
  available in path, regardless of whether `brew` is available.
- Look up for availability of `python2` and `python3`, not just `python`.
- Check for existence of path before adding to global `$path` array.
- Adhere to more idiomatic Zsh operation and minimize redundant syntaxes.
- Prefer looking up `$functions` for fully initialized `pyenv`.

* python: Optimize completion for loading lazily on demand

Move `pip` to separate completion definition delegating to pip to do
all the completion work.

Since the completion is loaded lazily on-demand, it avoids the
performance overhead during Zsh initialization.

Implementation note:
The helper function `_pip_completion` implementation is based on the
official pip completion function (which can be generated with
`pip completion --zsh`) adhering to the newer compsys style.

See: 'man zshcompsys' for more details.

* python: Update pyenv initialization flow per pyenv 2.0

In pyenv 2.0 onwards, it is not enough anymore to initialize pyenv in
shell by just calling `pyenv init -`. We also need to update `path` to
include pyenv shims by calling `pyenv init --path`.

Also, honor `$PYENV_ROOT` if set but, no need to set it explicitly if
not set. Instead, let the initialization script take care of that.

* ruby: Cleanup and optimize 'ruby' module

Changes:
- Honor `$RBENV_ROOT` or `RVM_DIR` if set but, no need to set it
  explicitly if not set. Instead, let the respective initialization
  scripts take care of that.
- Reverse `rbenv` vs `rvm` selection order, preferring `rbenv` instead.
- Check for availability of `rbenv` or `rvm` function instead of command
  to validate requirements. In a properly configured and initialized
  shell, `rbenv` or `rvm` will be available as function.
- Adhere to more idiomatic Zsh operation and minimize redundant syntaxes.

For additional rationale, see: https://github.com/rbenv/rbenv/wiki/Why-rbenv%3F

* completion: Unset local variable outside condition block

Unset `curl_prefix` outside condition block so that it is always
cleared. Also, avoid `brew --prefix <foo>` since it is triggering ruby
in fallback flow when `<foo>` is not present.

Also, apply minor formatting tweaks.

* node: Cleanup and optimize 'node' module

Changes:
- Simplify nodenv and nvm initialization
- Check for availability of `nodenv` or `nvm` function instead of command
- Unset local variables outside condition block

* prompt: update powerlevel10k submodule to v1.15.0

Release notes:

  - https://github.com/romkatv/powerlevel10k/releases/tag/v1.15.0

* Add conda to the list of requirements

If conda is not in the list of requirements, the scripts exit too early in case pyenv is not installed and the module is configured with:

 zstyle ':prezto:module:python' skip-virtualenvwrapper-init 'on' 
 zstyle ':prezto:module:python' conda-init 'on'

Tested on Amazon EC2 Linux for Deeplearning AMI 47.0 and MacOS 11.4

* utility: Pipe diff output through colordiff Instead of aliasing

`colordiff` behaves better as `stdin` filter. This is useful in
retaining color escape sequences when used with `less`.

* general: Clarify relative ordering of modules in docs

* general: Reformat runcom documentation

* autosuggestions: Update zsh-autosuggestions to 0.7.0

* general: Correct typo in installation instructions

Resolves “zsh: bad substitution”

* change polarity of test for BROWSER

* prompt: update powerlevel10k submodule to v1.16.0

Release notes:

  - https://github.com/romkatv/powerlevel10k/releases/tag/v1.16.0

* prompt: update powerlevel10k submodule to v1.16.1

Release notes:

  - https://github.com/romkatv/powerlevel10k/releases/tag/v1.16.1

* Fix crash on open caused by incorrect conditional in python module

* Update Pure prompt to 1.20.0

* prompt: Update pure submodule to 1.20.1

* Only export env variables in zprofile if unset

As per [zsh documentation](https://zsh.sourceforge.io/Intro/intro_3.html) environment variables should be expected to be in `.zshenv` and not be overridden in `.zprofile`. This change modifies BROWSER (on darwin systems only), EDITOR, VISUAL, PAGER, LESS, and LESSOPEN to only use zprezto defaults if they were not previously set in the loading order.

See:
nix-community/home-manager#2739
nix-community/home-manager#2751

* zprofile: adjust condition for `LESSOPEN` export

Split tests for condition for `export LESSOPEN` separate per convention

* Allow users to set a dirty-branch format

* fix: use inflating binaries instead of deflating in unarchive function

* fix: use deflating flag for pixz in unarchive function

* completion: Detect Homebrew prefix internally, not idiomatically

For performance reasons, we prefer detecting Homebrew prefix internally
instead of the more idiomatic form `brew --prefix`.

We attempt looking up $HOMEBREW_PREFIX or $HOMEBREW_REPOSITORY first (in
case `brew shellenv` has been sourced-in earlier). Else, we look it up
by resolving absolute path of $HOMEBREW_REPOSITORY. $HOMEBREW_PREFIX is
same as $HOMEBREW_REPOSITORY except when Homebrew is installed in
'/usr/local' ($HOMEBREW_REPOSITORY == '/usr/local/Homebrew'). This is
usually the case for Intel Macs.

This should work for most standard (and officially documented) Homebrew
installations.

For implementation details in Homebrew,
see: https://github.com/Homebrew/brew/blob/2a850e02d8f2dedcad7164c2f4b95d340a7200bb/bin/brew#L62-L70

Co-authored-by: mattmc3 <mattmc3@gmail.com>

* command-not-found: Detect Homebrew repo internally, not idiomatically

For performance reasons, we prefer detecting Homebrew prefix internally
instead of the more idiomatic form `brew --repository`.

We attempt looking up $HOMEBREW_REPOSITORY first (in case `brew shellenv`
has been sourced-in earlier). Else, we look it up by resolving absolute
path of $HOMEBREW_REPOSITORY.

This should work for most standard (and officially documented) Homebrew
installations.

* zprofile: Expand the default list of well known paths

Two additional sets of paths are now added to the default list of well
known paths: '$HOME/{bin,sbin}' and '/opt/{homebrew,local}/{bin,sbin}'.

- '$HOME/{bin,sbin}': Most users have custom scripts in '$HOME/bin'
anyway, we might as well honor those. '$HOME/sbin' is not really common,
but we can keep it for consistency.
- '/opt/{homebrew,local}/{bin,sbin}': With Homebrew changing default
installation location in macOS on Apple Silicon which will eventually
become ubiquitous, we have a good reason to add these paths by default.
While at it, we also honor MacPorts installation.

In all cases, we add them _iff_ the paths actually exist, not otherwise.
This has the side effect of a newly installed program not available
immediately in the '$path' in a mint fresh system (because of the fact
that '/opt/{homebrew,local}/{bin,sbin}' won't exist initially) until the
shell is reloaded. But that's a minor inconvenience to keep the '$path'
from getting unnecessarily bloated.

* feat(module/history): add full configurability

While previusly configurable, it was inconsistent with other
configuration options and it was missing configurability of in memory /
on disc history size.

Signed-off-by: Shea690901 <ginny690901@hotmail.de>

* fix: heading level for new hist file settings

* Update docker compose references

Docker For Mac has broken support for `docker-compose`. 

Since `docker compose` is a drop in replacement and it Just Works™, this PR converts `docker-compose` to `docker compose`

* Add Fig as an installation method to the README

Co-authored-by: Kaleb Elwert <belak@coded.io>
Co-authored-by: Indrajit Raychaudhuri <irc@indrajit.com>
Co-authored-by: Colin Hebert <hebert.colin@gmail.com>
Co-authored-by: Tharre <tharre3@gmail.com>
Co-authored-by: Michael Kohl <citizen428@gmail.com>
Co-authored-by: Steven Loria <sloria1@gmail.com>
Co-authored-by: Diego Rabatone Oliveira <diraol@diraol.eng.br>
Co-authored-by: newtonne <newtonne@users.noreply.github.com>
Co-authored-by: Bruce Clounie <bruce.w.clounie@gmail.com>
Co-authored-by: Yutian Li <hotpxless@gmail.com>
Co-authored-by: Tercio Gaudencio Filho <terciofilho@gmail.com>
Co-authored-by: Diego Rabatone Oliveira <diego.rabatone@easytaxi.com.br>
Co-authored-by: John P. Neumann <john.p.neumann@gmail.com>
Co-authored-by: Bruno Oliveira da Silva <bruno@abstractj.org>
Co-authored-by: Jeff Widman <jeff@jeffwidman.com>
Co-authored-by: Alexander Neumann <alexander@bumpern.de>
Co-authored-by: Maxim Baz <git@maximbaz.com>
Co-authored-by: monai <monai@cure.lt>
Co-authored-by: Chris Ewald <chrisewald@gmail.com>
Co-authored-by: Toshiki Murayama <murayama.toshiki@gmail.com>
Co-authored-by: Roman Perepelitsa <roman.perepelitsa@gmail.com>
Co-authored-by: John P. Neumann <johnpneumann@users.noreply.github.com>
Co-authored-by: Julien Brochet <julien@aerialls.io>
Co-authored-by: pedrosland <pedrosland@gmail.com>
Co-authored-by: Shane O'Grady <shane@ogrady.ie>
Co-authored-by: laggardkernel <laggardkernel@gmail.com>
Co-authored-by: Robson Roberto Souza Peixoto <124390+robsonpeixoto@users.noreply.github.com>
Co-authored-by: lambdanerd <hello.lambda.nerd@gmail.com>
Co-authored-by: Wouter Overmeire <lodagro@gmail.com>
Co-authored-by: Maxim Baz <github@maximbaz.com>
Co-authored-by: mattmc3 <mattmc3@gmail.com>
Co-authored-by: Ivan Smirnov <i.s.smirnov@gmail.com>
Co-authored-by: Joost Cassee <joost@cassee.net>
Co-authored-by: Jongwook Choi <wookayin@gmail.com>
Co-authored-by: Federico Frenguelli <synasius@gmail.com>
Co-authored-by: Kaspar Vollenweider <vok@panter.ch>
Co-authored-by: Charith Amarasinghe <995136+char8@users.noreply.github.com>
Co-authored-by: Ackerley Tng <ackerleytng@gmail.com>
Co-authored-by: Srijan R Shetty <srijan.shetty@gmail.com>
Co-authored-by: Vladimir Bauer <vbauerster@gmail.com>
Co-authored-by: Zac Bergquist <zbergquist99@gmail.com>
Co-authored-by: Amyn <amynbe@gmail.com>
Co-authored-by: Texas Toland <texastoland@gmail.com>
Co-authored-by: hidekuro <hidekuro@gmail.com>
Co-authored-by: Zhiming Wang <zmwangx@gmail.com>
Co-authored-by: Austin Sloane <Blaradox@users.noreply.github.com>
Co-authored-by: kwgchi <eiichi.kendoruki@gmail.com>
Co-authored-by: Yasuharu Iida <iiharu@alumni.tus.ac.jp>
Co-authored-by: Olaf Conradi <olaf@conradi.org>
Co-authored-by: Matthieu PETIOT <matt@ardeidae.com>
Co-authored-by: Kenichi Kamiya <kachick1@gmail.com>
Co-authored-by: Yang Tang <tangyang.cn@gmail.com>
Co-authored-by: Herobs <herobs@herobs.cn>
Co-authored-by: Poscat <poscat@mail.poscat.moe>
Co-authored-by: Roman Omarov <romnom@protonmail.com>
Co-authored-by: bXV0ZQ <44335359+bXV0ZQ@users.noreply.github.com>
Co-authored-by: Ehren Kret <ehren.kret@gmail.com>
Co-authored-by: Thomas Blaschke <tblaschke@users.noreply.github.com>
Co-authored-by: Andrew Kvalheim <Andrew@Kvalhe.im>
Co-authored-by: David Crook <idcrook@users.noreply.github.com>
Co-authored-by: zbirenbaum <zacharyobirenbaum@gmail.com>
Co-authored-by: Aaron Kanter <alkanter@gmail.com>
Co-authored-by: Jim Boulter <jboulter11@gmail.com>
Co-authored-by: Eugen Blattner <eugen.blattner@mayflower.de>
Co-authored-by: Shea690901 <ginny690901@hotmail.de>
Co-authored-by: Ben <benfreke@users.noreply.github.com>
Co-authored-by: Ilkin Bayramli <43158991+ibayramli2001@users.noreply.github.com>
Co-authored-by: Sorin Ionescu <sorin.ionescu@gmail.com>
MohamedBassem pushed a commit to MohamedBassem/prezto that referenced this issue Mar 11, 2023
dandrzejewski pushed a commit to dandrzejewski/prezto that referenced this issue Aug 23, 2023
tjmcs pushed a commit to tjmcs/prezto that referenced this issue Sep 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment