Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Brainstorming Features #63

Open
35 of 81 tasks
fdncred opened this issue Jun 18, 2021 · 16 comments
Open
35 of 81 tasks

Brainstorming Features #63

fdncred opened this issue Jun 18, 2021 · 16 comments

Comments

@fdncred
Copy link
Collaborator

fdncred commented Jun 18, 2021

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.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 starship or oh-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
  • 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 rich data within the history, such as:
    • run time in ms
    • date/time command was ran
    • sessionid of who ran the command assuming multiple sessions
  • 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 plugable technologies 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 plugable hints 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
@sholderbach
Copy link
Member

How should we vote or state our priorities?

@fdncred
Copy link
Collaborator Author

fdncred commented 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
Copy link
Contributor

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
Copy link
Member

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
Copy link
Collaborator Author

fdncred commented 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 history

@sholderbach
Copy link
Member

sholderbach commented 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!)

  • 👍
  • 👎
  • 😄
  • 🎉
  • 😕
  • ❤️
  • 🚀
  • 👀
# Current voting

Vote for the topic(s) you care about by selecting the corresponding emoji. (No judgement based on the emojis sentiment!)

- :+1: 
- :-1: 
- :smile: 
- :tada: 
- :confused: 
- :heart: 
- :rocket: 
- :eyes: 

@sholderbach
Copy link
Member

sholderbach commented 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!)

@sholderbach sholderbach added this to the Vision to Roadmap milestone Jun 19, 2021
@fdncred
Copy link
Collaborator Author

fdncred commented Jun 19, 2021

Thansk @sholderbach. Here's another feature that needs to go in some category.

  • Ability to integrate with fzf, skim, broot, zoxide, ranger, etc

@sholderbach
Copy link
Member

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
Copy link
Collaborator Author

fdncred commented Jun 19, 2021

Speaking of validation, there may need to be some type of Validator trait like rustyline's.

@fdncred
Copy link
Collaborator Author

fdncred commented 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 fdncred closed this as completed Jun 20, 2021
@fdncred
Copy link
Collaborator Author

fdncred commented Jun 20, 2021

oops, didn't notice it was pinned. Reopening. :)

@fdncred fdncred reopened this Jun 20, 2021
@nixypanda
Copy link
Contributor

Idea: Prefix based history search.

Example use-case:
(assuming you are using vi mode)

  1. Your start writing a command dock
  2. Hit escape and start going through history using k
  3. you will get suggestions like docker ls docker-compose ls docker-compose logs etc.

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
Copy link
Collaborator Author

fdncred commented 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 search

  • Ability to search history and travese backward and forward within the search criteria

@sholderbach sholderbach added A-Multiline Area: Support for multiline editing (Validation and interaction with `A-Display`) and removed A-Multiline Area: Support for multiline editing (Validation and interaction with `A-Display`) labels Nov 28, 2021
@hustcer
Copy link

hustcer commented Mar 30, 2022

In bash we can do :

nu \
  -c 'version'

to break lines, maybe we can add this feature too.

@sholderbach
Copy link
Member

In bash we can do :

nu \
  -c 'version'

to break lines, maybe we can add this feature too.

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 Validator trait 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants