* Implement passthrough for benchmark
Add a new option -p,--passthrough to benchmark.
With this option, the benchmark command prints its results to stdout and passes the block's output to the next command in the pipeline.
* Add execution block for benchmark -p
`benchmark --passthrough` now takes a block where the benchmark output is sent.
Example:
`benchmark -p {save bench.toml} {ls}`
* Add global mode to str trim
The global mode allows skipping non-string values,
and processes rows and tables as well
* Add tests to action with ActionMode::Global
* Add system, user and idle times to benchmark command
* Feature-gate dependency on heim in benchmark
* Reorder let bindings in benchmark
* Fully feature-gate rich-benchmark and print 0sec on zero duration
* Remove completion code from help/value shells
* Tweak the `Completer` trait for nushell.
Previously, this trait was built around rustyline's completion traits, and for
`Shell` instances. Now it is built for individual completers inside of nushell
that will complete a specific location based on a partial string. For example,
for completing a partially typed command in the command position.
We introduce the `plugin` nu sub command (`nu plugin`) with basic plugin
loading support. We can choose to load plugins from a directory. Originally
introduced to make integration tests faster (by not loading any plugins on startup at all)
but `nu plugin --load some_path ; test_pipeline_that_uses_plugins_just_loaded` does not see it.
Therefore, a `nu_with_plugins!` macro for tests was introduced on top of nu`s `--skip-plugins`
switch executable which is set to true when running the integration tests that use the `nu!` macro now..
* Implement exclusive and inclusive ranges with .. and ..=
This commit adds right-exclusive ranges.
The original a..b inclusive syntax was changed to reflect the Rust notation.
New a..=b syntax was introduced to have the old behavior.
Currently, both a.. and b..= is valid, and it is unclear whether it's valid
to impose restrictions.
The original issue suggests .. for inclusive and ..< for exclusive ranges,
this can be implemented by making simple changes to this commit.
* Fix collect tests by changing ranges to ..=
* Fix clippy lints in exclusive range matching
* Implement exclusive ranges using `..<`
Previously, we weren't expanding `~`, so `std::fs::metadata` was failing. We now
make use of `PathSuggestion` to get the actual path, as represented by a
`PathBuf`.
* First commit updating `config` to use subcommands (#2119)
- Implemented `get` subcommand
* Implmented `config set` as a subcommand.
* Implemented `config set_into` as subcommand
* Fixed base `config` command
- Instead of outputting help, it now outputs the list of all
configuration parameters.
* Added `config clear` subcommand
* Added `config load` and `config remove` subcommands
* Added `config path` subcommand
* fixed clippy
* initial commit for implementing groups
* each group works
* each group is slightly cleaner + added example
* Added `each window` subcommand
- No support for stride flag yet
* each window stride implemented
* Added tests and minor documentation changes
* fixed clippy
* fixed clippy again
Previously, we'd check for a `~/` prefix and then return the home directory as
the base `PathBuf`. We failed to consider pushing any of the other possible path
components into this base dir, which prevent completions more than one level
deep (for example, `~/.config/<TAB>` would fail).
* WIP - compiling but not working
* semi-working
* making progress
* working except for table lines
* fmt + clippy
* cleaned up some comments
* working line colors
* fmt, clippy, updated sample config.toml
* merges
* clean up some comments
* WIP - compiling but not working
* semi-working
* making progress
* working except for table lines
* fmt + clippy
* cleaned up some comments
* working line colors
* fmt, clippy, updated sample config.toml
* merges
* added weather symbols/chars
Although convenient, since the user doesn't have to type the space, it could be
a little surprising to users since they may think that was the only completion
in certain completions modes (for example, `cycle`).
* fixed: .*.(ext|*)
* ls **/* does not return hidden files without the -a flag
* fixed formatting
* fixed clippy issues
* fixed clippy issues, v2
* added `#[cfg(unix)]` to windows-failing test
* WIP - compiling but not working
* semi-working
* making progress
* working except for table lines
* fmt + clippy
* cleaned up some comments
* working line colors
* fmt, clippy, updated sample config.toml
* merges
* shouldn't these both bet clipboard-cli?
* WIP - compiling but not working
* semi-working
* making progress
* working except for table lines
* fmt + clippy
* cleaned up some comments
* working line colors
* fmt, clippy, updated sample config.toml
* merges
* fixed bug where no config.toml or not set settings made weird defaults.
* clippy & fmt again
* Header default alignment is left.
Co-authored-by: Andrés N. Robalino <andres@androbtech.com>
* WIP - compiling but not working
* semi-working
* making progress
* working except for table lines
* fmt + clippy
* cleaned up some comments
* working line colors
* fmt, clippy, updated sample config.toml
* removed extra comments
* Use the cursor position for the span when between locations.
This fixes a bug where completing
ls <TAB>
would result in replacing the entire line.
* Revert to the default update implementation.
Replacing the length of the elected value was intended to do replacement when
one moves inside a quote. The problem is that a long elected suggestion could
replace bits of a pipeline that are after the cursor. For example:
ls <TAB> | get name | str collect
We ensure the partially cimpleted item doesn't include the end quote. We also
ensure that the appropriate span is replaced, not just the suggested position up
to the cursor position.
- Ensure quotes surround suggestion replacement when there are spaces.
- Ensure an appropriate quote character is chosen based on other quoting
characters being in the suggestions.
Previously, we used rustyline's filename completer. This allowed us to make
progress on the completion engine without building all the parts at once. We now
need our own filename completer to make progress.
The primary driver to having our own filename completer is that it can better
integrate with our path constructs. For example, if we have
> ls .../<TAB>
we want to show a list of suggestions that includes all files two directories up
from the current working directory. The least jarring experience to a user would
be to maintain the three dots. The easiest way for us to do this is by building
our own completer and path constructs.
Doing 'cd .' or an equal command used to modify the prompt: It appended an './' and was even
repeatable, leading to strange prompts (believe me, I tested it for too long).
This fixes#2432
* Show directories and executable for command completion.
Previously we chose from two sets for completing the command position:
1. internal commands, and
2. executables relative to the PATH environment variable.
We now also show directories/executables that match the relative/absolute path
that has been partially typed.
* Fix for Windows
* Allow the calculation of bytes and int.
* fix clippy.
* minimal implement the into_into command.
* Revert "fix clippy."
This reverts commit 0d7cf72ed2.
* Revert "Allow the calculation of bytes and int."
This reverts commit 9c4e3787f5.
* set the argument to any type.
* if the argument is an int, return it with no change in value.
* add tests for into-int command.
* fix a faild test.
* plugin changes to support script plugins
* all platforms can have plugins with file extensions
* added .cmd, .py, .ps1 for windows
* added more trace! statements to document request and response
* WIP
* pretty much working, need to figure out sink plugins
* added a home for scripting plugin examples, ran fmt
* Had a visit with my good friend Clippy. We're on speaking terms again.
* add viable plugin extensions
* clippy
* update to load plugins without extension in *nix/mac.
* fmt
Previously, lite parse would stack up opening delimiters in vec, and if we
didn't close everything off, it would simply return an error with a partial form
that didn't include the missing closing delimiters. This commits adds those
delimiters so that `classify_block` can parse correctly.
The parser sees this as a positional argument, but when requesting completions
this could be either a filename that starts with a hyphen, or it could be a
flag. This expands the completion engine's interface to return a vec of possible
completion locations instead of an optional one, because we want to show all
possibilities instead of assuming one or the either.