Avoid overwriting existing PROMPT_COMMAND #46
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #43
There seems to be an existing report #43 by another user, but I have also faced a problem with
trueline
for its behavior overwritingPROMPT_COMMAND
. This PR fixes the problem.Problem
The current setup of
trueline
overwrites the existing value ofPROMPT_COMMAND
, so the setups by other plugins sourced beforetrueline
are all disabled.Bash 5.1 introduced the array
PROMPT_COMMAND
to resolve the conflictingPROMPT_COMMAND
, buttrueline
even completely breaks this new Bash 5.1 feature byunset PROMPT_COMMAND
. With Bash 5.1+, the plugins are supposed to add itsPROMPT_COMMAND
by e.g.PROMPT_COMMAND+=(_plugin_specific_prompt_command)
keeping the existing array elements as is. However, the currenttrueline
removes all the other elements by unsetting the entire array byunset PROMPT_COMMAND
.Solution
With Bash 5.1+, we may just use
PROMPT_COMMAND+=(_trueline_prompt_command)
. To protect it from some older plugins that does not support Bash 5.1+, we can optionally prependPROMPT_COMMAND=${PROMPT_COMMAND-}
as suggested by Martijn in the Bash mailing list [1].With Bash 5.0 and below, we can prepend
_trueline_prompt_command
in the existing value ofPROMPT_COMMAND
.