Open chschmir opened 1 month ago
This is direnv
bug, not starship
bug.
Both direnv
and starship
hook to tcsh by aliasing to precmd. However, direnv simply overwrites existing precmd:
return "alias precmd 'eval `{{.SelfPath}} export tcsh`'", nil
And Starship respects existing hooks by wrapping them in USER_PRECMD and USER_POSTCMD:
$ /usr/bin/starship init tcsh --print-full-init
setenv STARSHIP_SHELL tcsh;
setenv STARSHIP_SESSION_KEY `/usr/bin/starship session`;
set USER_PRECMD = "`alias precmd`";
set USER_POSTCMD = "`alias postcmd`";
set STARSHIP_PRECMD = 'set STARSHIP_CMD_STATUS = $status;set STARSHIP_PATH = /usr/bin/starship;set STARSHIP_END_TIME = `$STARSHIP_PATH time`;set STARSHIP_DURATION = 0;if ( $STARSHIP_START_TIME != -1 ) @ STARSHIP_DURATION = $STARSHIP_END_TIME - $STARSHIP_START_TIME;set prompt = "`$STARSHIP_PATH prompt --status $STARSHIP_CMD_STATUS --cmd-duration $STARSHIP_DURATION`";set STARSHIP_START_TIME = -1';
set STARSHIP_POSTCMD = 'set STARSHIP_START_TIME = `/usr/bin/starship time`';
alias precmd "$STARSHIP_PRECMD;$USER_PRECMD";
alias postcmd "$STARSHIP_POSTCMD;$USER_POSTCMD";
set STARSHIP_START_TIME = `/usr/bin/starship time`;
If you init starship after direnv, both should work.
Current Behavior
I am using tcsh with direnv and starship. When I initialize them in the following order
direnv works, but I do not get a starship prompt.
If I initialize direnv first and then starship everything works as expected.
Expected Behavior
Both direnv and starship should work.
Environment