microsoft/inshellisense

feat: provide better support for the underlying shells

Closed this issue · 2 comments

As mentioned in a number of issues (#5, #9, #10, #11, #19, and more) inshellisense's current support for the underlying shell is incomplete and needs to be improved. Currently inshellisense merely passes each command to a new pty session with the same shell as the user's current shell or the selected shell via the -s/--shell flag. This will be change moving forward to a more robust solution that will support complex shell behaviors with aliases, custom prompts, and more. As a result, PRs adding new functionality to the ink implementation of the root command will not be merged as that code will be removed in the rewrite.

More updates will be added to this issue when available.

  • implement isterm, a terminal layer that is capable of detecting a shell's input buffer via custom escape sequences in while passing through all the default behavior of the underlying shell #87
  • implement the ui layer which shows the suggestions with the shell's output #90
  • improve shell inference capabilities #91
  • allow users to "bring their own" prompt patterns for windows users #92
  • restore ui for argument descriptions #94
  • implement new shell integration scripts #101
  • fix coloration retention issue in xterm #103
  • support multi-line user input sequences
  • support multi-line prompts
  • more to come...

implement the ui layer which shows the suggestions with the shell's output

By this, do you mean that inshellisense will not start a new pseudo shell session, and will instead add the suggestions onto the existing shell UI, similar to other command-line tools?

implement the ui layer which shows the suggestions with the shell's output

By this, do you mean that inshellisense will not start a new pseudo shell session, and will instead add the suggestions onto the existing shell UI, similar to other command-line tools?

It will start a long running psuedo terminal which it will then add suggestions too, so while a new shell session will be started, that session will be a fully functional shell, similar to starting a new terminal session in VSCode