I’ve been working on a shell for universe for a few months now, on and off but I’m starting to use it as my daily driver and I finally got the autocomplete working well. Now instead of just suggestions it will also auto complete the longest common substring in the list of suggestions which is super useful. The most useful feature however is I added search, now you can type a command, hit the up arrow key and start going through commands that contain the text. Once I’m happy using it, I’ll release it as right now there are still weird bugs and I do sometimes break out to run things directly from TCL.
The big features I want to add is the ability to have one command stack as right now, depending on where you launch from, it creates a command stack in different accounts. The other feature is to get the shell working in D3 as well as that would be useful if it could work in any multivalue system.
Writing a shell in BASIC is fun, I’ve learned a lot but also a lot about why abstractions are great. I don’t use any gosubs or external subroutines, so the entire thing is just 1000 lines. I think the structure is good and I try really hard to keep things simple and straightforward but it’s getting to the point where is is unwieldy and variables might begin clobbering each other. I wonder how real shells are written. I’ve simply built off the premise that I just execute commands typed in my shell and everything naturally flowed from there.
I’ll need to do some research later.