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>
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.
Have updated which extentions trigger the terraform module, to remove
the `hcl` since this gives false positives as it is used by other
Hashicorp products and add the `tfstate` and `tfplan` which are more
accurate indicators.
Due to the introduction of utils::create_command, commands now have
stdin set to null, and stdout and stderr set to piped.
This prevents console editors from working when invoked via
starship config
Have added version formatting to the red and vlang modules. Note the
docs for red already mentioned the `version_format` string but it had
not actually been added.
* feat: Add the symbol and number thresholds respecting the threshold option
* fix: Maintain the old behavior + add lots of tests
* docs: Fix the jobs module documentation
* git_status: added symbol for when local branch is up-to-date with upstream
* updated docs
* removed unused variable, moved location of config comment
* changed uptodate default to empty string, simplified and made safer
* added uptodate default line back into docstring
* fixed linting and formatting errors
* refactored uptodate to up_to_date, removed redundant else statement
Have added the ability to use format the version of the package using
the `version_format` option. While doing this I have also done some
refactoring of the module to remove the if/else if/... block and replace
it with an iterator. This should make fix some edge cases where versions
are not correctly picked up due to other files an example would be a
python project that has a `pyproject.toml` file but using the
`setup.cfg` for the package version. It should also make it easier to
make the order of the list configurable in the future.
* 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
* Support package version from setup.cfg (python).
Add an additional package version extraction function to parse
the 'version' attribute under the 'metadata' section in a python
package 'setup.cfg' file.
Also add similar tests from the poetry extraction function to test
the desired behaviour.
This adds a dependency on ConfigParser:
https://crates.io/crates/configparser.
* Clean up comments
* Use rust_ini over ConfigParser
* Add mention to setup.cfg version parsing in docs
* 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
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.
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.
This PR adds a new module named git_metrics. It shows the added/deleted lines in the current git repository following the format: "[+$added_lines]($added_style) [-$deleted_lines]($deleted_style)".
* Add support for `rust-toolchain.toml`
* fix(rust): support for `rust-toolchain.toml`
* This commit adds support for `rusttoolchain.toml`.
* Added some tests.
* Added some comments on what the tests are checking.
* Changed code for `read_channel` to match the behavier of rustup.
* Update src/modules/rust.rs
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* Update rust module
Added back the functionality to cache
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* feat(formatter): Allow scoped variables (#1094)
* feat: Allow scoped variables
, with the following improvements to the format string parser.
- Add documentation to spec
- Simplify some syntax in the spec
- Rewrite for loop with iterators
* Added support for R programming language.
* Removed unnecessary debug log used during dev process.
* Make the `R` command upper case as the *nix OS executables are case sensitives and the correct command is upper-case.
* Changed comments to reflect R features (rather than node.js where code was coming from).
* feat(format_string): Allow positional segments (#1138)
* feat(format_string): Allow using variables in a style string (#1130)
* fix(format_string): Allow multiple variable mappers (#1142)
* refactor: Add error handling to variables (#1148)
* Squashed commit of changes with meta variables:
commit 5beb3bca18f0b0c822b740afb3778ccb1e3a7d19
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Mon Apr 27 09:52:59 2020 +0800
fix: Cache variables in meta variables properly
commit 49b9324942dd55350c87107d0e8c7d1592d92e8a
Merge: cc575bc 260a1ab
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Sun Apr 26 21:34:52 2020 +0800
Merge branch 'feat/format-string' into meta-variables
commit cc575bc27cbf87c4197e96d2fa5416d4932e45d7
Merge: 3ed2d32 e0c1901
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Sun Apr 26 12:16:12 2020 +0800
Merge branch 'feat/format-string' into meta-variables
commit 3ed2d326c9f625930bdd72cea736c1d0eab6d381
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Sun Apr 26 11:06:28 2020 +0800
refactor(format_string): Allow returning error in variable mapper
commit 766732fe697df947538fe12ca92a8eb8e7bfea3e
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Sat Apr 25 22:56:02 2020 +0800
fix: Add test for StyleVariableHolder
commit 444334ad206a68132fa6257b83c3992b7b790981
Merge: 479d4a7 9796a66
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Sat Apr 25 22:52:27 2020 +0800
Merge branch 'positional-segments' into style-variables
commit 9796a66a9679597676e7fd859197fd542e8042dc
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Sat Apr 25 22:51:26 2020 +0800
test: Add tests for VariableHolder
commit 479d4a72fa58fd8aa777acd8228d4834407a7b6a
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Sat Apr 25 22:41:47 2020 +0800
feat: Add trait StyleVariableHolder
commit 21d40c6f4e2d12b34fdec4e2e38b6ad0f91217a3
Merge: 3b459f4 e7dd987
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Sat Apr 25 22:17:11 2020 +0800
Merge branch 'positional-segments' into style-variables
commit e7dd987fd7b01a82c6012ba7055d1dd9b5fd84aa
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Sat Apr 25 15:10:12 2020 +0800
misc: Minor changes on docs and codes
commit 71020b0397a86e850ad5beda926aa9416250025c
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Fri Apr 24 20:51:45 2020 +0800
feat(format_string): Add syntax for positional segments
commit 3b459f4379b08defce50c57a903502513ad1b2b6
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Wed Apr 22 17:49:15 2020 +0800
fix: Fix clippy
commit 2fb052d68cb46680c081f5a0e25e2c3fbdc9e204
Author: heyrict <xiezh0831@yahoo.co.jp>
Date: Wed Apr 22 17:02:09 2020 +0800
feat: Add map_style method to feed values in style string
* fix: Change error type of StringFormatter::new
* fix: Fix rustfmt
* tests: Add tests to variable errors
* docs: Add documentation
* chore: Rename positional to conditional (#1166)
* docs: Add docs for format strings (#1083)
Co-authored-by: Thomas O'Donnell <andytom@users.noreply.github.com>
* refactor(rust): Use format strings (#1063)
* Updated to latest string formatter's changes.
* feat(format-string): add format string support to battery module (#1158)
* update battery module with format string
* update battery module docs
* update battery module with format string
* update battery module docs
* fix battery module with new StringFormatter api
* fix clippy warnings
* Update docs/config/README.md
Co-authored-by: Zhenhui Xie <xiezh0831@yahoo.co.jp>
* battery symbols now supports format-string
* battery symbols now support format-string
remove space between symbol and percentage
fix battery config
Co-authored-by: Zhenhui Xie <xiezh0831@yahoo.co.jp>
* refactor(golang): Use format strings (#1066)
* refactor(golang): Use format strings
* docs(golang): Update docs
* docs(golang): Update docs
* fix: Update to upstream API changes
* docs(golang): Update docs
Co-authored-by: heyrict <xiezh0831@yahoo.co.jp>
* Fixed a few inconsistencies.
* Removed string clone in favor of a reference.
* Update src/modules/r.rs
Reverting the r version string formatting to a more idiomatic way of handling it.
Co-authored-by: Thomas O'Donnell <andytom@users.noreply.github.com>
* Update src/configs/r.rs
Co-authored-by: Zhenhui Xie <xiezh0831@yahoo.co.jp>
* Updated documentation to reflect changes in config.
* refactor(java): Added formatter support for Java module. (#1084)
* refactor(haskell): Added formatter support for the Haskell module. (#1111)
* Added formatter support for the Haskell module.
* Updated haskell module with latest formatter code changes.
* Changed documentation for latest Haskell string formatter changes.
* Fixed a few inconsistencies.
* Removed unnecessary variable cloning for using reference instead.
* refactor(env_var): Added formatter support for the env_var module (#1180)
* refactor(memory_usage): Added formatter support for memory_usage module (#1182)
* Migrated the memory usage module to string formatter' support.
* Fixed a few inconsistencies.
* Removed cloning of variables to instead use references.
* refactor(cmd_duration): Use format strings (#1200)
* Fixed format issue in code.
* Fixed compilation error after adding new 'r' module in root config.
* Added .Rproj extension file to be detected with R prog lang.
* Aligned R module code with existing ones.
* Update src/configs/r.rs
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* fix: Added rconfig to fullconfig and fixed broken api calls
* Apply suggestions from code review
Co-authored-by: Dario Vladović <d.vladimyr@gmail.com>
* Update src/modules/r.rs
Co-authored-by: Dario Vladović <d.vladimyr@gmail.com>
* Addressed PR comments.
Cleaned up code and fixed code errors.
* Updated docs for consistency purpose.
Co-authored-by: Milo <50248166+Milo123459@users.noreply.github.com>
* refactor: Renamed the `r` module to `rlang`
* test: Provided R fixture and R module renderer test
* doc: Updated rlang mod config to reflect latest detection changes
* fix: Added missing rlang entry in config/mod
* feat: Added version formatted fined grained configuration
* Added version_format in R lang documentation.
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* review: Addressed later comments
* fix: README was missing a previously present section for Python
* Fix: Test was not updated for previous version string upgrade.
* fix: Upgraded R version in remaining test.
Co-authored-by: Zhenhui Xie <xiezh0831@yahoo.co.jp>
Co-authored-by: Thomas O'Donnell <andytom@users.noreply.github.com>
Co-authored-by: Luca Rinaldi <lucarin@protonmail.com>
Co-authored-by: John Letey <johnletey@gmail.com>
Co-authored-by: Tilmann Meyer <47182955+ATiltedTree@users.noreply.github.com>
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
Co-authored-by: Dario Vladović <d.vladimyr@gmail.com>
Co-authored-by: Milo <50248166+Milo123459@users.noreply.github.com>
* feat(nim): add support for nimble project package version
* Replace find_file with context scanner. Fixes the failing tests.
* Replace `utils::exec_cmd` with `context.exec_cmd` so that it uses
global timeout
* Add tests for nimble project version
* Add docs for nimble in package version module for english language
* Update docs/config/README.md
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* Add test for a case when nimble is not available
* Remove extract_vlang_version
I don't know why it did not come up while I was fixing merge conflicts
on rebase.
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* format crystal version with VersionFormatter
* update crystal dosc
* format crystal module
* fix typos
* format dart version with VersionFormatter
* fix dart malformed test
* update dart docs
* format cmake version with VersionFormatter
* update cmake docs
* format deno version with VersionFormatter
* update deno docs
* remove Version type
* format dotnet version with VersionFormatter
* update dotnet docs
* format erlang version with VersionFormatter
* update erlang docs
* format golang version with VersionFormatter
* refactor formatting in my modules
* format helm version with VersionFormatter
* format julia version with VersionFormatter
* format kotlin version with VersionFormatter
* format lua version with VersionFormatter
* format nim version with VersionFormatter
* format perl version with VersionFormatter
* format php version with VersionFormatter
* format purescript version with VersionFormatter
* format scala version with VersionFormatter
* format swift version with VersionFormatter
* format terraform version with VersionFormatter
* format vagrant version with VersionFormatter
* format zig version with VersionFormatter
* format elixir version with VersionFormatter
* format ocaml version with VersionFormatter
* update elixir docs
* update golang docs
* update helm docs
* update julia docs
* update kotlin docs
* update lua docs
* update nim docs
* update ocaml docs
* update perl docs
* update php docs
* update purescript docs
* update scala docs
* update swift docs
* update terraform docs
* update vagrant docs
* update zig docs
* format elm version with VersionFormatter
* update elm docs
* pass module_name as &str to format_module_version
* 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
* Add support for `reverse` keyword in style strings
* Duplicate test case and keep original
* Rename keyword to `inverted`
* Add explanatory sentence in readme
* feat: Add a symbol option to `battery.display`
* feat: Add a symbol option to `battery.display`
* use `impl defaulat` instead of `RootModuleConfig`
* edit the code according to clippy's linting
* change variable type to `Option<'a str>`
* update the documentation on the battery module
* updated documentation and source code according to review comment
* remove the unnecessary method and write the default value of BatteryDisplayConig to the document
* add 'charging_symbol' option to battery.display
* feat(config): print a suggestion for unknown fields
* Fix typo
Co-authored-by: Thomas O'Donnell <andytom@users.noreply.github.com>
Co-authored-by: Thomas O'Donnell <andytom@users.noreply.github.com>
* 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.
Previously attempting to use conditional format strings with
`$indicator` would never display an indicator, e.g.:
```toml
[shell]
fish_indicator = ""
bash_indicator = "B "
format = "($indicator )"
disabled = false
```
This would always display an empty string.
Fixes #2474.
* refactor(dotnet): ".NET" instead of "•NET"
"•NET" looks quite weird, especially since the official writing is ".NET".
* revert(docs): translated docs
Co-authored-by: Eyal Cherevatzki <eyal@hyperguest.com>
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`.
* fix(python): Handle PyPy python version correctly
* refactor: rework Python version retrieval and formatting
Align Python version retrieval and formatting with established
Starship conventions.
* fix(java): use consistent separators for java path
This switches us from just appending `/bin/java` to `$JAVA_HOME` to
treating `$JAVA_HOME` as a path. This should fix any issues on Windows
where $JAVA_HOME might use `\` rather than `/`.
* test(java): add test for JAVA_HOME
* refactor: remove duplicate defaults
* perf: sligntly better java path perf
* Update src/modules/java.rs
Co-authored-by: Dario Vladović <d.vladimyr@gmail.com>
* Update src/modules/java.rs
Co-authored-by: Dario Vladović <d.vladimyr@gmail.com>
* Update src/modules/java.rs
Co-authored-by: Dario Vladović <d.vladimyr@gmail.com>
Co-authored-by: Dario Vladović <d.vladimyr@gmail.com>
* 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>
The unicode hexagon symbol does not actually fit into a single column with a
fixed-width font. does. As starship requires a nerd font as a prerequisite,
it's safe to assume that this symbol is available.
Symbol link: https://www.nerdfonts.com/cheat-sheet?set=nf-mdi-nodejs
In the documentation, I've left the '⬢' symbols in '#### Text Group' as
they are, as they will continue displaying correctly in a browser
without a nerd font available. I feel like readability is more important
than consistency with the new nodejs symbol, especially as this
documentation section does not actually refer to nodejs, rather it's
just a symbol.
As `⬢` has been replaced, use `⌘` instead in documentation to avoid
any possible confusion
This makes it possible to configure when the purescript module is shown
based on the contents of a directory. This should make it possible to
be a lot more granular when configuring the module.
This makes it possible to configure when the php module is shown
based on the contents of a directory. This should make it possible to
be a lot more granular when configuring the module.
This makes it possible to configure when the perl module is shown
based on the contents of a directory. This should make it possible to
be a lot more granular when configuring the module.
This makes it possible to configure when the ocaml module is shown
based on the contents of a directory. This should make it possible to
be a lot more granular when configuring the module.
This makes it possible to configure when the nodejs module is shown
based on the contents of a directory. This should make it possible to
be a lot more granular when configuring the module.
This makes it possible to configure when the nim module is shown
based on the contents of a directory. This should make it possible to
be a lot more granular when configuring the module.
* feat(erlang): Configure when the module is shown
This makes it possible to configure when the erlang module is shown
based on the contents of a directory. This should make it possible to
be a lot more granular when configuring the module.
* Update docs/config/README.md
Co-authored-by: Shu Kutsuzawa <cappyzawa@gmail.com>
Co-authored-by: Shu Kutsuzawa <cappyzawa@gmail.com>