Repository navigation
Brainstorming Features #63
Copy link
Copy link
Open
Milestone
Description
1. Line Editor UI/UX Features
Brainstorming of ideas about what features would make a line editor and programs that use it best-in-class. I'm interested to see which of these people agree with. These aren't necessarily MVP type ideas and perhaps even greater than 1.0 ideas.
- 1. Line Editor UI/UX Features
- 1.2. Prompt Features Feature Vision Discussion: Prompt #64
- 1.3. Completions Features Feature Vision Discussion: Completions/Hints #65
- 1.4. History Features Feature Vision Discussion: History #66
- 1.5. Hinting Features Feature Vision Discussion: Completions/Hints #65
- 1.6. Syntax Highlighting Features Feature Vision Discussion: Syntax Highlighting #67
- 1.7. PopUps/PopUnders Features Feature Vision Discussion: Pop-ups/Annotations #68
- 1.8. Keybinding Feature Vision Discussion: Keybindings #69
- 1.9. Miscellaneous Feature Vision Discussion: Miscellaneous #70
1.2. Prompt Features #64
- Ability to have Colors/Styles/Themes
- Ability to have Left Side Prompt
- Ability to have Right Side Prompt
- Ability to have Animated Prompt - Clock, Ansi Spinners like -|/
- Ability to use external prompts like
starshiporoh-my-posh - Ability to make prompt extensible
1.3. Completions Features #65
- Ability to works as expected or better
- File and folder completion
- zsh-style partial path expansion
- Environment variable completion
$nu.env.A<tab> - Table column completion
(ls).n<tab> - Sub-Command completion
str <tab> - Other
- File and folder completion
- Ability to add external completions for things like
git - Ability to make completions extensible
1.4. History Features #66
- Ability to save commands in history
- Ability to save multi-line commands in history
- Ability to traverse backward and forward within history via keybindings
- Ability to search history
- Ability to search history and travese backward and forward within the search criteria
- Ability to have
richdata within the history, such as:- run time in
ms - date/time command was ran
- sessionid of who ran the command assuming multiple sessions
- run time in
- Ability to have multiple sessions successfull write to history file(s)
- Ability for each session to have it's own history or the appearance of it's own history so within history searching in a single session you only see the commands you created in that session
- Ability to send all commands from all sessions into a global history which search interfaces can use
- Ability to have
plugabletechnologies to make history searching and recall extensible - Ability to reset history
1.5. Hinting Features #65
- Ability to change the color of the hints
- Ability to create hints from history
- Ability to have
plugablehints specific to a vertical- Nushell
- Azure
- Dataframe/Polars/DataScience
- Maths
- Other
- Ability to complete hints with keybinding
- Ability to change location of hints
- On prompt line
- Under prompt line
- On status bar at the top
- On staus bar at the bottom
1.6. Syntax Highlighting Features #67
- Ability to define word-types to highlight as you type and continue coloring even in failure modes
- Keywords
- Commands
- External Commands
- Bareword
- Punctuation
- Sub-Commands
- Braces
{}, Brackets[], Parentheses() - Error modes
- Operators
- Paths
- Pipe
- Arguments/Flags
- Variables
- Comments
- DataTypes (strings, int, datetime, duration, bool, units, etc)
- Other
- Ability to have add things you want syntax highlighted through extensibility
1.7. PopUps/PopUnders Features #68
- Ability to have popups for things like progress bars
- Ability to have popunders, think of this as row(s) under your prompt, to display things like statuses, documentation, or hints
- Ability to have extensibility
1.8. Keybinding #69
- All major functionality should be exposed via keybindings
- Ability to have multiple keybindings
- VI Mode
- Emacs Mode
- JT Mode (the ability to code like JT)
- Other
- Ability to load keybindings from file
- Ability to execute previously defined code or externals via keybindings
- Ability to have keybinding chords (multiple keyboard shortcuts in succession execute a particular internal or external command)
1.9. Miscellaneous #70
- Validation to trigger multiline on incomplete lines
- Tested behaviour under various environments
- OSes
- Terminal emulators:
gnome-terminal,iTerm,alacritty - Multiplexers:
screen,tmux - As ssh session
- possible plugins to use file searches and terminal browsers:
fzf,skim,broot,zoxide,ranger, etc - Responsive resizing
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
sholderbach commentedon Jun 18, 2021
How should we vote or state our priorities?
fdncred commentedon Jun 18, 2021
Good question. Any suggestions? It would be nice to allow people to upvote certain things. Maybe there's some voting site that does that?
sophiajt commentedon Jun 18, 2021
One way to do the voting would be to let people pick their top three things, then count that. Folks could reply here if we do it that way.
sholderbach commentedon Jun 18, 2021
As the granularity/scope of the ideas/milestones varies we may want to break the main themes out into separate tracking issues under a milestone so that we can better keep track what is relevant in that area. We than can use the one here to weigh on the focus of the general themes. Using the emojis on github with individual comments would probably get quite messy.
fdncred commentedon Jun 19, 2021
@sholderbach I was going to split this up into issues like you did (Thanks!!!) but what do you think about adding the github emojis to allow people to vote by clicking on them? I think we just need to maybe number them and say to
vote for X use the +1/thumbs up emoji,to vote for Y use the -1/thumbs down emoji. I just see 8 emojis so maybe we can only have the top 8 things to vote on. What do you think?BTW - i added to History -
ability to remove historysholderbach commentedon Jun 19, 2021
My suggestion would be to put a list of the eight currently most important/controversial ideas in a comment below with the emojis as labels, so we can update the top comment as an overview as needed without screwing with the past votes.
Template below:
Current voting
Vote for the topic(s) you care about by selecting the corresponding emoji. (No judgement based on the emojis sentiment!)
sholderbach commentedon Jun 19, 2021
Voting on the feature areas you want the project to focus on
Vote for the topic(s) you care about by selecting the corresponding emoji. (No judgement based on the emojis sentiment!)
fdncred commentedon Jun 19, 2021
Thansk @sholderbach. Here's another feature that needs to go in some category.
fzf,skim,broot,zoxide,ranger, etcsholderbach commentedon Jun 19, 2021
I would like to add the category 'System interaction' including stuff like compatibility validation on ssh, tmux etc.
There it would fit in. Where is the responsibility boundary between line editor and integration with nushell?
fdncred commentedon Jun 19, 2021
Speaking of validation, there may need to be some type of
Validatortrait like rustyline's.fdncred commentedon Jun 20, 2021
Since these are all referenced in their own issues, I think I'm going to close this one to declutter. We can re-open if needed.
fdncred commentedon Jun 20, 2021
oops, didn't notice it was pinned. Reopening. :)
nixypanda commentedon Jun 21, 2021
Idea: Prefix based history search.
Example use-case:
(assuming you are using vi mode)
dockkdocker lsdocker-compose lsdocker-compose logsetc.Note: adding this separately from 'history search based on a criteria' as one doesn't need to hit
Cmd-r(or equivalent) for this.fdncred commentedon Jun 21, 2021
@sherubthakur This is what I meant by this item in the history list above. Maybe I should've named it
Prefix based searchhustcer commentedon Mar 30, 2022
In bash we can do :
nu \ -c 'version'to break lines, maybe we can add this feature too.
sholderbach commentedon Mar 31, 2022
This is beyond the scope of reedline as special casing characters in the buffer would constrain the grammar of the using language (nu might not want to adopt the backslash bashism as it is annoying with Windows paths). The
Validatortrait can be implemented to do checks whether an expression is complete. The submit on enter check could be extended on reedline's side to provide option to only submit on the last line/last char position.last-partizan commentedon May 2, 2025
This is great feature. I was using McFly on zsh, and Atuin on nushell. Both are awesome, but they both store their own histories, and features are slightly different.
This is probably out of scope for reedline, but it would be awesome to have standardized history format across all shells and tools working with history.
What I really want from the shell, to be the
best-in-class- is isolated per-directory history and autocomplete. I was using zshper-directory-historyplugin, and it's dead simple but very effective:This is very predictable pattern, and I always have my last command at autocomplete, and few of them behind up-arrow.
In nushell it seems there's only preference to use autocomplete from current cwd, but no real isolation. And no up-arrow history isolation at all. In the last few days when trying nushell i accidentally typed wrong commands because my muscle memory is too trained to expect them to be close.
(If i'm missing something, and there's a way to configure isolater per-dir history, please tell me how in this Discussion: nushell/nushell#15670 )