On 30 June 2018 at 11:40, Vladimir Sedach vsedach@gmail.com wrote:
I'm currently working on a project where I am bringing Maxima to CLIM
(I've
had some pretty good progress)
Very cool!
Thank you. The source repository is here: https://github.com/lokedhs/maxima-client and I made a couple of videos showing what it looks like. Here is a playlist: https://www.youtube.com/watch?v=AvC82EjoPYU&list=PL6AQVVynH5Dg3Wwpk3zNT9...
but one thing that has frustrated me is that CLIM does not have a consistent concept of keyboard control. I believe this comes from Genera. I wonder if it was designed at a time where it was thought that mouse control would be the primary mechanism of interaction.
I have not looked at Genera sources. I have poked around TI Explorer source code, and it looks to me like there was no convention for handling keyboard input as commands in the MIT derived Lisp Machines. This is a hard problem that went without an obviously satisfactory solution for a very long time. I believe the keymap and keymap inheritance and nesting mechanisms in GNU Emacs is the best model available today. One of the neat things in GNU Emacs is which-key mode (https://github.com/justbur/emacs-which-key), which is like the modeline help for mouse commands in Genera, for keyboard shortcuts.
CLIM does have a concept of keyboard shortcuts. You can bind keys to commands in a way that is somewhat similar to Emacs. Also, the default editor widget, Drei, is modelled on Emacs, and uses keybindings in a very similar way.
Thus, it's definitely possible to build a keyboard-driven application in CLIM, but you have to do everything yourself. In CLIM, you work a lot with graphical representation of objects, and clicking on an object (for example, a form in the REPL, or a subexpression in an equation in my Maxima client) will invoke various operations based on the current input context of the application.
Unfortunately CLIM has no provisions at all for keyboard navigation here. If I want to be able to select something using the keyboard, I have to build it all myself. What's even more surprising is that there isn't even a keybinding to navigate multiple text fields. You'd expect to be able to press Tab, but that will just invoke whatever that key is bound to in Drei.
People must have had one hand on the mouse more or less constantly while working in Genera.
Regards, Elias