[HN Gopher] Show HN: Inshellisense - IDE style shell autocomplete
       ___________________________________________________________________
        
       Show HN: Inshellisense - IDE style shell autocomplete
        
       I built this terminal native runtime for Fig's autocomplete to
       support Windows and Linux. Would appreciate any feedback on it!
        
       Author : cpendery
       Score  : 97 points
       Date   : 2023-11-06 19:15 UTC (1 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | 100k wrote:
       | The name is terrific.
        
         | exikyut wrote:
         | The fact that it's coming from Microsoft is even crazier,
         | because obviously you know they had to go through clearance -
         | and made it.
         | 
         | I half wonder if the author checked the name first, _then_
         | started coding......
        
       | Y_Y wrote:
       | Ya, cool name, but worse privacy than gorilla, more awkward than
       | llm.sh and why would I ever get the Microsoft version of
       | something I can get elsewhere without the worry that I'm about to
       | be devoured by a corporate anglerfish.
        
         | smoldesu wrote:
         | Did you check the page? It's MIT-licensed and isn't about GPT
         | or text generation. It's Intellisense, for the shell.
        
           | hui-zheng wrote:
           | then what makes it better than withfig/autocomplete?
        
             | boxed wrote:
             | I downloaded fig, then immediately deleted it after it
             | requested way too much access to my github account to even
             | start. So... that's a big thing.
        
             | wrs wrote:
             | That's what it's based on.
        
             | Timon3 wrote:
             | It's available for Linux and Windows.
        
             | strbean wrote:
             | It is withfig/autocomplete. The only difference from their
             | runtime is that this gives results directly in the console,
             | instead of using a graphical overlay. I believe that means
             | you could use this in an SSH session.
        
       | monkellipse wrote:
       | Great idea! Also terrifying :) Given how often I accidentally
       | commit the wrong text in vscode, I shudder to think of the damage
       | I could do with this on my shell, hah! What safety measures are
       | there/could there be?
        
         | biellls wrote:
         | A simple approach might be that if the resulting exit code is
         | not 0 it won't be used to complete in the future.
        
         | owlstuffing wrote:
         | Generally, a destructive shell command prompts for approval.
         | But I suppose overfumbly fingers could still cause grief.
         | 
         | Type/command aware tooling is a night and day difference.
        
           | mksybr wrote:
           | Generally? Do you have examples in mind? The ones I think of
           | are destroy first and ask questions only if told to do so: mv
           | cp rm redirection tee
        
           | tombert wrote:
           | I feel like I've trashed millions of files I shouldn't have
           | with `rm` and trying to be clever with regular expressions.
        
             | doubled112 wrote:
             | I've done this enough times I use `ls` first, then `rm`
        
               | tombert wrote:
               | Yeah, I generally will use `find . -name "<my pattern"`
               | nowadays, just so I can see all the potentially recursive
               | files as well, and then when I'm 100% sure that what I'm
               | doing is good, I will pipe that into xargs or parallel.
               | 
               | My point was that I don't feel like Unix really stops you
               | from doing destructive scary stuff. It seems like it's
               | perfectly happy to let you break your machine.
        
               | doubled112 wrote:
               | Exactly, which is why we check for ourselves instead of
               | expecting it to hold our hand.
               | 
               | Unixy tools tend do what you tell them, nothing more and
               | nothing less. No confirmations, no output if successful,
               | no progress bars, etc.
               | 
               | That's a feature in my mind, but I can see how it is easy
               | to have your day ruined if you're expecting it to ask you
               | again.
        
               | tombert wrote:
               | I mostly agree, but sometimes I wish that `rm` would have
               | default to "confirm before destroying", and add a flag
               | like `-y` to not prompt, more or less like how `apt`
               | works on Ubuntu.
        
               | doubled112 wrote:
               | That's actually a way better experience than no
               | confirmation and confirming each item individually.
        
             | teddyh wrote:
             | Note: Normal shells use glob(7) expressions, not regular
             | expressions.
        
               | tombert wrote:
               | You know I googled this immediately after I posted it,
               | and you're absolutely right, but a good chunk of the
               | syntax still kind of looks like regular expressions so I
               | don't think I was too far off!
        
       | guessmyname wrote:
       | I wish they had written inShellisense in a more efficient
       | programming language than TypeScript.
       | 
       | I recall disabling bash_completion.sh on my computer some time
       | ago due to its negative impact on the startup speed of each
       | iTerm2 session and the delay it introduced when using the <TAB>
       | key for autocompletion.
       | 
       | Before I disabled this feature, I consistently experienced delays
       | of over 300ms between triggering autocomplete and receiving the
       | actual results. I must admit that this was on an Intel Core i7,
       | so I assume the performance is much better with newer processors.
       | However, even after more than two years without
       | bash_completion.sh, I have already committed many command line
       | tool flags to memory so I would only consider using a tool
       | written in a compiled programming language that can provide
       | autocomplete in 100ms or less, potentially requiring the
       | inclusion of hardcoded information in the binary.
        
         | explaininjs wrote:
         | Don't bring TypeScript into this. It is very possible to write
         | sub 100ms procedures in TS, but an inelegant algorithm will be
         | slow in any language, eventually.
        
           | cassianoleal wrote:
           | 100ms is a long time to wait for each completion suggestion.
        
             | nu11ptr wrote:
             | I was going to say the same thing. In what world is 100ms
             | fast on a computer? (for something not making a network
             | round trip)
        
               | explaininjs wrote:
               | The claim isn't that 100ms is fast, it's that the blame
               | for the latency lies in the engineering, not the
               | language.
        
             | emorning3 wrote:
             | Jakob Nielsen says that 0.1 second is about the limit for
             | having the user feel that the system is reacting
             | instantaneously, meaning that no special feedback is
             | necessary except to display the result...
             | 
             | https://www.nngroup.com/articles/response-
             | times-3-important-...
        
           | guessmyname wrote:
           | > _It is very possible to write sub 100ms procedures in TS,
           | [...]_
           | 
           | I won't dispute this statement since I currently lack the
           | means to assess inshellisense. Would it be possible for you
           | (or someone with a functional Node + NPM setup) to install
           | inshellisense and share the actual performance figures? You
           | could use a tool like hyperfine
           | (https://github.com/sharkdp/hyperfine) for this purpose.
           | 
           | As an attempt to test this myself, I used a Docker image
           | (version 21.1.0-bookworm from
           | https://hub.docker.com/_/node/). The TypeScript tool
           | installed without any issues, along with the binding, which
           | simply adds the following line into ~/.bashrc:
           | [ -f ~/.inshellisense/key-bindings.bash ] && source
           | ~/.inshellisense/key-bindings.bash
           | 
           | However, when I initiated a new Bash session within the same
           | Docker container to activate the updated Bash configuration,
           | I encountered the following error:                   bash:
           | /root/.inshellisense/key-bindings.bash: line 1: syntax error
           | near unexpected token `$'{\r''         'ash:
           | /root/.inshellisense/key-bindings.bash: line 1:
           | `__inshellisense__() {
           | 
           | Due to this issue, I am unable to perform a performance test
           | using hyperfine.
           | 
           | The version of Bash available in this Docker image is
           | 5.2.15(1)-release.
           | 
           | I verified that the content of /root/.inshellisense/key-
           | bindings.bash is exactly the same as https://github.com/micro
           | soft/inshellisense/blob/main/shell/k...
        
         | dlivingston wrote:
         | This was the first thing I noticed, too. Why TypeScript? Is it:
         | a) efficient enough, esp. compared to a Bash/Zsh/PWSH
         | alternative, that spawning a JS interpreter for each
         | autocomplete is no biggie? Is b) TypeScript just much more
         | efficient than I thought? Or c) is TypeScript Microsoft's
         | hammer, and everything looks like a nail?
        
           | yoyohello13 wrote:
           | I tend to think since VSCode plugins are javascript all new
           | tooling from Microsoft seems to be written in typescript. As
           | a non front end dev though `npm install` is an instant
           | turnoff for me.
        
             | dlivingston wrote:
             | I agree. I was going to install and backed out when I saw
             | `npm install` as well. I am wondering if my priors need to
             | be updated, though (namely: JavaScript is slow,
             | inefficient, and unsuited for anything outside of webdev).
        
               | yoyohello13 wrote:
               | I think javascript is plenty fast these days. My only
               | problem with Typescript/Javascipt is the toolchain is
               | very complex/confusing to someone on the outside. In my
               | experience, Rust/Go or even python is easier to get into
               | if you're not living it every day. Besides familiarity,
               | I'm not sure why someone would choose Typescript for non-
               | web work.
        
       | HomeDeLaPot wrote:
       | Awesome! And it supports fish! Just the other day, I was wishing
       | we had something like this.
        
       | Night_Thastus wrote:
       | I'd be curious how this compares with Fish, which has
       | autocomplete as well. It's worked fantastic for me so far. Once
       | you have it, it's hard to go back!
        
         | boxed wrote:
         | This looks much cooler than fish autocompletes imo. But this
         | replaces the nice fish stuff with `>` as a prompt, so I'll
         | stick with fish.
        
           | schmorptron wrote:
           | The readme for this project states that it supports fish,
           | does it replace the prompt?
        
       | boxed wrote:
       | I wish I had something like this without it replacing the shell
       | prompt with `>`.
        
       | filterfiber wrote:
       | Is this fully local? I glanced around and didn't see any mention
       | of chatgpt/gpt/codex so I'm thinking it is?
        
         | trey-jones wrote:
         | There is really not much code to speak of, and a quick perusal
         | didn't yield anything sus. Initial guess is that it's not very
         | efficient, but I really didn't look that closely.
        
       | Dudester230602 wrote:
       | 1980s... but like 2020s-style.
       | 
       | Coming next: auto-complete for punch cards.
        
         | leshenka wrote:
         | can you expand on this?
        
           | askiiart wrote:
           | I think they meant "using the terminal (1980s)... but like
           | 2020s-style (intellisense)"
           | 
           | Y'know, because it's not like tons of people use the terminal
           | on a daily basis in the modern era. /s
        
             | Dudester230602 wrote:
             | Yeah, they claim because it's better but the reality is
             | that they simply cannot build good cross-platform UIs on a
             | budget / on time.
        
         | dang wrote:
         | Could you please stop posting unsubstantive comments and
         | flamebait? You've unfortunately been doing it repeatedly. It's
         | not what this site is for, and destroys what it is for.
         | 
         | If you wouldn't mind reviewing
         | https://news.ycombinator.com/newsguidelines.html and taking the
         | intended spirit of the site more to heart, we'd be grateful.
        
       | mschrage wrote:
       | Co-founder of Fig here! Just want to say that I think this is
       | awesome.
       | 
       | It's really cool to see alternative implementations of IDE-style
       | autocomplete in the terminal. Nice work!
        
         | trey-jones wrote:
         | I'm pretty sure this is just a wrapper for Fig.
        
         | curiousgal wrote:
         | Looking at the main author's gorhub profile, they forker Fig's
         | repo.
        
         | nextaccountic wrote:
         | https://github.com/withfig/autocomplete is it this?
        
       | xnx wrote:
       | Starting to type "dir": "d[el /q /s _._ ]" (press any key to
       | accept)
        
       | bestest wrote:
       | ok. can someone explain to me. I've been using ctrl+r for god
       | knows how long and it solves all my shell completion needs.
       | 
       | is inshellisense for average users like me or more advanced
       | users?
        
         | serial_dev wrote:
         | I use zsh plugin, autosuggests, and ctrl r, too.
         | 
         | Ctrl r is okay and it is a very convenient if you already typed
         | the command.
         | 
         | Inshellisense seems to help with knowing what subcommands,
         | flags and file paths are available, and it even provides a
         | small docs helper for the flags and commands.
         | 
         | If you didn't try these tools, I'd encourage you take a look,
         | it helped me a lot, especially when I work with tools whose
         | commands I don't know by heart or used a while ago.
        
       ___________________________________________________________________
       (page generated 2023-11-06 21:00 UTC)