nushell/crates
Yash Thakur 5c2bcd068b
Enable exact match behavior for any path with slashes (#15458)
# Description

Closes #14794. This PR enables the strict exact match behavior requested
in #13204 and #14794 for any path containing a slash (#13302 implemented
this for paths ending in slashes).

If any of the components along the way *don't* exactly match a
directory, then the next components will use the old Fish-like
completion behavior rather than the strict behavior.

This change only affects those using prefix matching. Fuzzy matching
remains unaffected.

# User-Facing Changes

Suppose you have the following directory structure:
```
- foo
  - bar
    - xyzzy
  - barbaz
    - xyzzy
- foobar
  - bar
    - xyzzy
  - barbaz
    - xyzzy
```

- If you type `cd foo<TAB>`, you will be suggested `[foo, foobar]`
- This is because `foo` is the last component of the path, so the strict
behavior isn't activated
  - Similarly, `foo/bar` will show you `[foo/bar, foo/barbaz]`
- If you type `foo/bar/x`, you will be suggested `[foo/bar/xyzzy]`
  - This is because `foo` and `bar` both exactly matched a directory
- If you type `foo/b/x`, you will be suggested `[foo/bar/xyzzy,
foo/barbaz/xyzzy]`
- This is because `foo` matches a directory exactly, so `foobar/*` won't
be suggested, but `b` doesn't exactly match a directory, so both `bar`
and `barbaz` are suggested
- If you type `f/b/x`, you will be suggested all four of the `xyzzy`
files above
- If you type `f/bar/x`, you will be suggested all four of the `xyzzy`
files above
- Since `f` doesn't exactly match a directory, every component after it
won't use the strict matching behavior (even though `bar` exactly
matches a directory)

# Tests + Formatting

# After Submitting

This is a pretty minor change but should be mentioned somewhere in the
release notes in case it surprises someone.

---------

Co-authored-by: 132ikl <132@ikl.sh>
2025-03-31 14:19:09 -04:00
..
nu_plugin_custom_values Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_example Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_formats Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_gstat Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_inc Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_nu_example Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_polars Polars cut (#15431) 2025-03-27 06:58:34 -05:00
nu_plugin_python Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_query Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_stress_internals Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-cli Enable exact match behavior for any path with slashes (#15458) 2025-03-31 14:19:09 -04:00
nu-cmd-base Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-cmd-extra Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-cmd-lang Bugfix/into datetime ignores timezone with format (#15370) 2025-03-28 10:51:42 -05:00
nu-cmd-plugin Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-color-config Rename user-facing 'date' to 'datetime' (#15264) 2025-03-21 13:36:21 -04:00
nu-command Bugfix/into datetime ignores timezone with format (#15370) 2025-03-28 10:51:42 -05:00
nu-derive-value Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-engine reset argument/redirection state after eval_call errors (#15400) 2025-03-26 19:41:16 -04:00
nu-explore fix(explore): do not create extra layer for empty entries (#15367) 2025-03-20 06:53:06 -05:00
nu-glob Remove nu-glob's dependency on nu-protocol (#15349) 2025-03-20 17:32:41 +01:00
nu-json Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-lsp feat(lsp): parse_warnings in diagnostics report (#15449) 2025-03-29 07:16:44 -05:00
nu-parser fix(parser): skip eval_const if parsing errors detected to avoid panic (#15364) 2025-03-26 15:02:26 +01:00
nu-path Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-plugin Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-plugin-core Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-plugin-engine Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-plugin-protocol Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-plugin-test-support Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-pretty-hex Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-protocol refactor: ensure range is bounded (#15429) 2025-03-27 14:25:55 +01:00
nu-std Fixes clip copy stripping control characters when de-ansifying (#15428) 2025-03-28 19:15:17 -04:00
nu-system add more columns to macos ps -l (#15341) 2025-03-20 09:53:19 -05:00
nu-table Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-term-grid Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-test-support Remove nu-glob's dependency on nu-protocol (#15349) 2025-03-20 17:32:41 +01:00
nu-utils fix(nu-command): support ACL, SELinux, e.g. in cd have_permission check (#15360) 2025-03-27 14:23:41 +01:00
nuon Fix to nuon --serialize of closure (#15357) 2025-03-20 17:50:36 +01:00
README.md Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00

Nushell core libraries and plugins

These sub-crates form both the foundation for Nu and a set of plugins which extend Nu with additional functionality.

Foundational libraries are split into two kinds of crates:

  • Core crates - those crates that work together to build the Nushell language engine
  • Support crates - a set of crates that support the engine with additional features like JSON support, ANSI support, and more.

Plugins are likewise also split into two types:

  • Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features.
  • Extra plugins - these plugins run a wide range of different capabilities like working with different file types, charting, viewing binary data, and more.