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=PL6AQVVynH5Dg3Wwpk3zNT962GntKfssje
 
> 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