nushell / nushell/reedline

Brainstorming Features

Open
#63 17 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
818
Forks
249
Avg merge
4d 14h
Merged PRs (30d)
30

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 #64
    • 1.3. Completions Features #65
    • 1.4. History Features #66
    • 1.5. Hinting Features #65
    • 1.6. Syntax Highlighting Features #67
    • 1.7. PopUps/PopUnders Features #68
    • 1.8. Keybinding #69
    • 1.9. 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 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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

This issue is a broad brainstorming list and names no source files, tests, entry points, or acceptance criteria. Review the linked issues #64–#70 to determine whether any specific feature remains actionable; a suitable outcome would need a decided scope and a concrete definition of done.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli, developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.