Quote:
First of all, I don't think it's a good idea to strip line numbers from the input history.
I strongly disagree. If a user needs to apply a recent entry to a particular line they can, as you said, use the navigation keys, but I can make a relevant change and add the appropriate line number with "home" faster than I can hit "insert" or "backspace". Also, stripping the line number means changes based solely on the line number don't pollute the queue.
Quote:
Besides that, I don't think the console should know anything about minibasic.
This I strongly agree with, but that has nothing to do with stripping line numbers. I could have added the change without breaking into the `console' class, but all of the classes are strongly tied together and to the idea that they are singletons I didn't really see a point. We have a lot of work to do in this area.
Quote:
Finally, the static variables [...] allocations whenever possible.
Avoiding the allocation is one thing, but marking a container as static isn't going to help the performance. And, you weren't necessarily avoiding the allocation/destruction, but you may have been. (It depends on the implementation.) If that is what you were trying to avoid, you need to avoid `resize'.
Quote:
One more thing: can we use some other combination of keys for navigation, or perhaps provide a command to set it?
Type a long line in "COMMAND.COM", "CMD.EXE", the BASH shell, and most other terminals and terminal based line editors. The up and down arrow keys almost never move between different layers of the same input line. I'd say clone part of the implementation for `UP' and `DOWN' into `LEFT' and `RIGHT', swap `UP' with `FUNCTION_05', and swap `DOWN' with `FUNCTION_06'.
"I left Soma's console code as is for now, but I really do think it should be more isolated from the minibasic class."
I completely agree. The problem is, we just don't have an organized list of all the primitives we need to cleanly separate the various classes.
1): The compiler has no business using the same global state as the editor.
2): The line editor has no business being an aspect of the virtual machine.
3): The queue feature should be rewritten as a feature of the class not as an implementation of the input.
4): Virtually everything pretends to have knowledge of everything else because everything uses the idea that various bits are currently implicit singletons.
This is just a short list off the top of my head that will take several days to sort properly.
I hate to throw your own words back at you, but let's get this one working before we start a rewrite. ^_^
Quote:
Is there a way to rollback all commits made before a single push?
I wouldn't worry about it. I think you'd probably just wind up with another head or another commit when you push it to the central repository. (You could easily revert back to commit two and still have the current source in your local repository.)
Soma