1
0
mirror of https://github.com/Llewellynvdm/starship.git synced 2024-06-16 23:32:22 +00:00
Commit Graph

82 Commits

Author SHA1 Message Date
moko256
0d573ac5ea
perf(elvish): Use built-in randint instead of starship session. (#3479) 2022-01-21 08:08:14 +01:00
Segev Finer
7e32fd952e
feat(pwsh): Set STARSHIP_SHELL to pwsh on PS >5 (#3443)
* feat(pwsh): Set STARSHIP_SHELL to pwsh ON PS >5

This is needed for the custom module to use the correct shell.

Closes #3376

* Update src/context.rs

Co-authored-by: David Knaack <davidkna@users.noreply.github.com>

Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
2022-01-16 20:28:26 +01:00
David Knaack
0fd6f05da4
fix(properties): fix regressions in status, pipestatus and terminal-width handling (#3399) 2022-01-15 04:21:38 -05:00
Segev Finer
0b6ffca35d
fix(pwsh): Avoid polluting the global function namespace (#3424)
* fix(pwsh): Avoid polluting the global function namespace

This is an alternative to #3386

* Review changes

* Move continuation prompt after setting starship env
2022-01-14 21:54:29 +01:00
Rashil Gandhi
c335b4267b
feat: add support for cmd (#3277)
* feat: add support for cmd

* add preprompt and precmd support

* add keymap support

* add info about minimum Clink version

* simplify escaping

* add handling for cmd custom commands

* add support for transient_prompt and transient_rprompt

* Revert 914057952508e81e20086fcb707ba2a0be85fdd3

This reverts commit "add support for transient_prompt and transient_rprompt"

* Apply suggestions from code review

* disable cmd shell custom commands

* any shell other than cmd can be used

* better error and correct script location

* move shell check in `map_no_escaping`
2022-01-09 23:47:53 -06:00
moko256
500dc3ea6e
feat(elvish): last command status (#3403) 2022-01-06 22:00:38 +01:00
Ryan Cohen
4deaa02d6f
feat: set a continuation prompt for supporting shells (#3322)
* feat: set a continuation prompt for supporting shells (#3134)

* docs: fixed wording of documentation

* fix: continuation prompt is now only set once

* fix(docs): fixed typo in advanced-config/README.md

Co-authored-by: Segev Finer <segev208@gmail.com>

* fix: update --continuation argument

Co-authored-by: David Knaack <davidkna@users.noreply.github.com>

* fix: updated continuation prompt

- PROMPT2 was fixed to be set only once in zsh.
- `continuation_symbol` and `continuation_format` were removed in
  place of a single variable; `continuation_prompt`.
- The continuation prompt was moved out of the character module.

* fix: ran rustfmt

* docs: updated continuation prompt docs

Co-authored-by: Segev Finer <segev208@gmail.com>
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
2022-01-01 14:12:11 +01:00
David Knaack
2b405042b9
feat(xonsh): support rprompt (#3362) 2021-12-31 08:23:01 +01:00
David Knaack
67cddb616b
fix(elvish): upgrade shell integration for v0.17 (#3310) 2021-12-30 09:49:55 +01:00
Mika Fischer
b21904c9d3
fix: Store $? and $LASTEXITCODE first in PowerShell (#3316)
These need to be stored before calling any PowerShell function or executable.
Otherwise the values will be overwritten and cannot be properly restored
or passed to starship.

Fixes: #3315
2021-12-13 10:15:02 +01:00
Derek Wilson
8ae6548dc0
fix: save pipestatus in fish init functions (#3160) 2021-11-09 14:27:30 -05:00
Thomas O'Donnell
c682329bd0
fix: Modules not working in fish RPROMPT (#3146)
This should fix some modules not working correctly in the fish
`RPROMPT`. I have done this the very naive way by simply duplicating the
code that is currently in the `fish_prompt` function to avoid having to
change the scope of any of the variables (currently all local).
2021-10-22 18:54:36 +02:00
Ikko Ashimine
425af13026
docs: fix typo in starship.ps1 (#3173)
preceeding -> preceding
2021-10-22 12:14:43 -04:00
Harry Sarson
c20a998d15
fix: allow unset KEYMAP and STARSHIP_DURATION in zsh (#3124)
* allow unset KEYMAP and STARSHIP_DURATION in zsh

which prevents errors if a user has `set -u` on in there terminal.

* fix: allow unset KEYMAP and STARSHIP_DURATION in zsh
2021-10-09 19:13:49 +02:00
Ajeet D'Souza
671365b505
fix(init): Use stderr for init error message (#3131)
* Use stderr for init error message

* Add a dummy commit to appease the Semantic PR bot

Co-authored-by: Kevin Song <chips@ksong.dev>
2021-10-09 08:35:17 +02:00
Michael J. Ryan
94d7de7f4e
feat: Add starship_precmd_user_func support for PowerShell. (#3115) 2021-10-07 20:08:31 +02:00
Rashil Gandhi
6464693165
fix(fill): Add terminal-width argument to explicitly define terminal's width (#3090)
Add `terminal-width` argument to explicitly define terminal's width
Update pwsh,bash,zsh,fish init scripts with `terminal-width` argument

Co-authored-by: Kevin Song <chips@ksong.dev>
Co-authored-by: Kevin Song <4605384+chipbuster@users.noreply.github.com>
2021-10-06 16:36:28 -05:00
Kevin Song
190743e4e0
fix: pipestatus quoting on Zsh/Bash (#3088)
Changes the parsing for pipestatus to allow for multiple arguments, a
single argument of space-separated values, or any mix of the two. All
inputs are flattened into a single array where no elements have spaces
in them.

Changes the initscripts to no longer fail when an empty pipestatus
is passed as an argument by quoting and changing expansions.
2021-10-05 18:19:55 -05:00
David Knaack
ab25bc82c5
fix(windows): make powershell init work on windows 8 again (#3067) 2021-09-25 14:07:23 -05:00
Matthew (Matt) Jeffryes
e64a99262e
fix(zsh init script): avoid adding preexec commands twice (#3049) 2021-09-09 16:19:01 -04:00
Matthew (Matt) Jeffryes
79585dcb17
feat: Add support for RPROMPT (right prompt) (#3026)
Adds support for zsh, fish, and elvish.

Co-authored-by: Matan Kushner <hello@matchai.dev>
2021-09-08 15:45:27 -04:00
Hugues Morisset
40cb667b9d
feat(status): Add pipestatus display in status module (#2481)
* feat: Add pipestatus display in status module

This MR is based on this one https://github.com/starship/starship/pull/370

* Documentation

* Add a test with map_symbol false

* Handle bash preexec pipestatus

* Add zsh support

* Add fish support

Thanks kidonng for the diff patch

* Rename sucess_symbol to success_symbol
2021-07-28 12:26:00 -04:00
David Knaack
31932c2990
fix(init): remove quotes in bash init (#2893) 2021-07-17 18:05:07 +02:00
Jeremy Schlatter
b1dcd5aecd
feat: add support for xonsh (#2807)
* feat: add support for xonsh

* xonsh: add STARSHIP_SESSION_KEY

* xonsh: implement STARSHIP_SESSION_KEY in xonsh

* docs: mention tcsh, elvish, and nu in more places

* xonsh: change STARSHIP_SESSION_KEY implementation

See https://github.com/starship/starship/pull/2807#discussion_r667064149

* xonsh: fix jobs implementation

* xonsh: do not silently discard stderr from starship
2021-07-16 15:25:01 -04:00
David Knaack
1eaf996a36
fix(windows): avoid inadvertly running exes from cwd (#2885)
On Windows when running commands with their name instead of the path with Command::new, executable with that name from the current working directory will be executed.

This PR replaces all instances of Command::new with a new create_command function which will first resolve any executable paths and avoid this issue.
2021-07-16 15:20:59 -04:00
Chrissy LeMaire
c9249dbe0b
fix(pwsh): replace Get-Error with $error[0] (#2873)
Get-Error does not exist in all versions of PowerShell, and attempting to use it on machines where it does not exist pollutes $error. Someone may be tempted to use -ErrorAction Ignore but since the command does not exist, it still ends up in $error

This is a dual bug fix because it actually gets errors on all machines now and it does not pollute $error.
2021-07-13 16:31:14 -04:00
David Knaack
9126d78d0e
fix(nu): use correct session key variable name (#2874) 2021-07-10 12:14:42 +02:00
David Knaack
cea1a1ceb1
feat: add support for nu shell (#2847) 2021-07-04 15:32:58 -04:00
David Knaack
a4a2adb0f8
fix(init): improve starship path escaping (#2848) 2021-07-03 23:30:27 +02:00
Munif Tanjim
baabc7743d
fix(zsh): preserve zle-keymap-select (#2717) 2021-05-12 22:14:48 +02:00
Kid
16855fe8e2
fix(fish): explicitly set scope in fish init script (#2636)
* fix: use correct scope in fish init script

* Prefix variable names with Starship

* Use `functions -e` to remove `fish_mode_prompt`

* Update src/init/starship.fish

Co-authored-by: Dario Vladović <d.vladimyr@gmail.com>

Co-authored-by: Dario Vladović <d.vladimyr@gmail.com>
2021-04-29 19:16:10 +02:00
Felipe Seré
0e23526f5f
fix(zsh): Reverts changes to background jobs retaining improvements around START_TIME (#2638)
* Revert "fix(zsh): Set PROMPT just once (#2428)"

This reverts commit 6fd7d7b501.

* Reintroduce fixes around START_TIME

* Bring back disabling virtualenv

* Expand the jobstates before passing the number to starship

Credit goes to @vladimyr
2021-04-29 16:16:25 +02:00
Dario Vladović
c7d5ce72b5
refactor(init): cleanup init stub (#2548)
* refactor(init): cleanup init stub

* refactor(init): use iex PowerShell alias

* fix(init): prevent bash scope pollution

* refactor(init): update PowerShell snippet
2021-04-05 16:52:10 +02:00
Thomas O'Donnell
e0da57df3f
style(init): Cleanup the unknown shell message (#2444)
* style(init): Cleanup the unknown shell message

Have make a small change to the message that is printed when an unknow
shell is used. This correct the placement of the trailing `"` so that
the two training new lines are correctly printed and updates the list of
supported shells.

* refactor(init): consolidate unknown shell errors

Have consolidated the two unknown shell errors

* refactor(init): Quote the shell name in the output

Quote the shell name in the script and combined the shell_name and
shell_basename to simplify the code a little.
2021-03-25 15:08:28 -05:00
Eric Nielsen
6fd7d7b501
fix(zsh): Set PROMPT just once (#2428)
No need to forcefully set the `PROMPT` variable every time the prompt is
to be shown. Just set it once, leaving the command to be evaluated every
time the prompt is to be shown, by enabling the `promptsubst` option.

Setting it once is also friendlier to users that want to experiment with
another prompt theme by temporarily setting `PROMPT` to something else.
This would currently not be possible, because the variable is always
reset before every prompt draw (precmd) and keymap change
(zle-keymap-select).

Some other updates to take better advantage of the zsh script dialect:

  * `$` is not required to read variables inside `(( ))` arithmetic
    expressions.
  * The zsh dialect to check if a variable is set is `${+var}`. Better
    than `${var+1}`, which substitutes 1 if var is set, which is
    intended for more general substitutions, not just to check if var is
    set.
  * The number of jobs can be read using the `%j` escape sequence, which
    is expanded when the `promptpercent` option is set.

Also simplified a couple of code lines by avoiding a temporary
`STARSHIP_START_TIME` variable, since we already have
`STARSHIP_CAPTURED_TIME`.
2021-03-15 11:39:35 +01:00
Vivek Malneedi
d21400a478
feat: add support for tcsh (#2288)
* feat: add support for tcsh

* add tcsh to install.sh install message

* list tcsh in bug_report.rs and main.rs

* quote starship path

Co-authored-by: David Knaack <davidkna@users.noreply.github.com>

* fix job count

* add tcsh support to shell module

* fix STARSHIP_START_TIME undefined error

* preserve existing user precmd and postcmd, remove jobs support

* remove unnecessary parentheses

* minor script improvement

* removes parens from install script message

* Update docs/config/README.md

Co-authored-by: Thomas O'Donnell <andytom@users.noreply.github.com>

Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
Co-authored-by: Thomas O'Donnell <andytom@users.noreply.github.com>
2021-02-27 19:55:27 +01:00
Jan Christoph Ebersbach
6bd4e724e9
fix: correct fish syntax error when setting variables (#2320) 2021-02-15 14:10:08 -05:00
Michael Sanders
19461a0694
perf(init): Prefer set -x over export for fish users (#2292) 2021-02-14 18:15:05 +01:00
Tim Grelka
4813763c35
fix(init): Quote path for elvish init (#2294)
Fixes starship/starship#2293
2021-02-13 19:53:02 +01:00
David Knaack
a24e843ee0
fix(init): make log messages on pwsh visible again (#2295) 2021-02-13 19:31:54 +01:00
Benjamin Fox
20d845f9b3
refactor(directory): Introduce logical-path argument which allows a shell to explicitly specify both a logical and physical filesystem path (#2104)
* refactor(directory): Introduce `logical-path` argument which allows a shell to explicitly specify both a logical and physical filesystem path

Fix `directory::module` to consume both path and logical-path (if provided).  The "logical" path is preferred when rendering the "display path", while the "physical" path is used to resolve the "read only" flag. Repo- and home-directory contraction behavior is maintained, based on the logical path if it is set, or the physical path if it is not.

The custom "get_current_dir" logic has been removed entirely, and the `directory` module now relies on `context.current_dir` / `context.logical_dir` entirely.

Changes have been made to `init/starship.ps1` to work with this new flag:
- Calculate and pass "physical" and "logical" paths explicitly (as other shells do not pass `--logical-path` that they fall back to rendering the physical path)
- Moved the "powershell provider prefix" cleanup code to the PowerShell script - this code _should_ now support any kind of powershell path prefix.

* fix(powershell): Fix an issue with trailing backslashes on file paths causing command line parsing issues.

This is a bit of a footgun!
The work-around chosen is to append a trailing space when a path string ends with a backslash, and then trim any extra whitespace away in the Context constructor.
Other alternatives considered and rejected:
1. Always trim trailing backslashes as the filesystem generally doesn't need them.
2. Escape trailing backslashes with another backslash. This proved complex as PS only quotes string args when the string includes some whitespace, and other backslashes within the string apparently don't need to be escaped.

* fix(powershell): Use Invoke-Native pattern for safely invoking native executables with strings which may contain characters which need to be escaped carefully.

* fix(context): Remove superfluous argument trims

These were in place to clean up extra whitespace sometimes injected by starship.ps1::prompt, and are no longer required with the new Invoke-Native helper in place.

* refactor(directory): Clean up the semantics of `logical_dir` defaulting it to `current_dir` but overridable by the `--logical-dir` flag.

- Restore `use_logical_path` config flag.
- Always attempt to contract repo paths from the `current_dir`.

* fix(directory) :Use logical_dir for contracting the home directory

This keeps the two calls to contract_path in sync.

* fix(directory): Remove test script

* refactor(directory): Convert current_dir to canonical filesystem path when use_logical_path = false

- This requires some clean-up to remove the extended-path prefix on Windows
- The configured logical_dir is ignored entirely in this mode - we calculate a new logical_dir by cleaning up the physical_dir path for display.
- Test coverage

* fix(directory): Use AsRef style for passing Path arguments

* fix(directory): Strip the windows extended-path prefix from the display string later in the render process

* fix(docs): Update docs/config/README.md for use_logical_path

* refactor(context): Populate `current_dir` from `--path` or `std::env::current_dir`, populate `logical_dir` from `--logical-path` or the `PWD` env var

- `current_dir` is always canonicalized
- On Windows, `current_dir` will have an extended-path prefix
- `logical_dir` is now always set
- `directory::module` now just selects between `current_dir` and `logical_dir` when picking which path to render
- Test coverage

* fix(directory): Fix path comparison operations in directory to ignore differences between path prefixes

- Added PathExt extension trait which adds `normalised_equals`, `normalised_starts_with` and `without_prefix`

* fix(path): Add test coverage for PathExt on *nix

* fix(directory): Test coverage for `contract_repo_path`, `contract_path` with variations of verbatim and non-verbatim paths

* fix(directory): Update path-slash to latest

This fixes the issue with the trailing character of some Windows paths being truncated, e.g. `\\server\share` and `C:`

* fix(powershell): Improve UTF8 output handling, argument encoding

- Use `ProcessStartInfo` to launch native executable, replacing manual UTF8 output encoding handling
- If we detect we're on PWSH6+ use the new `System.Diagnostics.ProcessStartInfo.ArgumentList` parameter, otherwise manually escape the argument string
- Move `Get-Cwd` and `Invoke-Native` into the prompt function scope so that they don't leak into the user's shell scope

* fix(path): Make PathExt methods no-ops on *nix

* fix(path): Cargo fmt

* fix(powershell): Remove typo ';'. Fix variable assignment lint.
2021-02-08 15:14:59 +01:00
David Knaack
22dc8b842e
feat: add support for elvish shell (#1725)
* feat: add support for elvish shell

* improve doc

* elvish 0.15 is out

* fix example init

* update systax for 0.15 stable

* udpate second init example too

* remove warning from swift module

* add warning to status module docs

* prefix elvish version with v
2021-02-02 12:59:55 +01:00
Rich Lafferty
3127a9aa87
fix(bash): Count jobs with for loop to fix MacOS count issue (#2250)
In #1897 we replaced a 'wc -l' with a bash-native job counter, but
subsequently discovered that bash on MacOS folds '<<<' output into
a single line, preventing line counting.

A for loop works around that problem, is still bash-native, and works
on Linux as well.

While we're at it, also removed the need for command substitution and
an echo by doing the work directly on NUM_JOBS.

Fixes #2241.
2021-01-31 22:56:06 +01:00
Gautham Warrier
5eacd3abee
perf: use built-in EPOCHREALTIME env-var to compute cmd_duration for ZSH5+ (#1751)
We currently invoke `starship time` in a sub-shell to compute time, which is non-performant. By using $EPOCHREALTIME,
which is an inbuilt env-var in ZSH5, we can get better performance. This commit only targets ZSH5+ and maintains the
old behaviour.
2021-01-23 11:25:41 +01:00
Zoritle
851cf22caa
feat: Add support for cygwin/msys2/git-bash evironment (#2020)
* feat: Add support for cygwin/msys2/git-bash evironment

* Update src/init/mod.rs

Co-authored-by: David Knaack <davidkna@users.noreply.github.com>

Co-authored-by: Thomas O'Donnell <andytom@users.noreply.github.com>
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
2021-01-07 19:13:57 +01:00
Thomas O'Donnell
8cd4850ab6
fix(bash): Fix broken bash init script (#2100)
This fixes a regression where the exit code of the most recently run
command was not correctly recorded in the bash init script.
2021-01-07 18:35:32 +01:00
David Knaack
452694903c
fix(pwsh): disable builtin venv prompt (#2090) 2021-01-07 18:16:02 +01:00
Kevin Song
55c3cafd94
fix(bash): bash-preexec detection and implementation (#2091)
* Fix bash-preexec detection and implementation

* Add detection for other arrays
2021-01-07 18:15:43 +01:00
Glandos
2e71dfa15b
perf(init): Use random for session-key in fish (#1904)
* perf(init): Use random for session-key in fish

Same as #1755 but for fish users

* Update src/init/starship.fish
2021-01-04 18:36:50 +01:00
Bjørn Forsman
f17556d389
feat(init): prefix STATUS and PREEXEC_READY shell vars with STARSHIP_ (#1710)
I was surprised to see these (unprefixed) variables being set in my
shell. I think it's better to have them in the STARSHIP_ "namespace".
(Actually, STATUS got the new name STARSHIP_CMD_STATUS.)
2020-12-19 12:04:15 +01:00