Post by Vladimir SedachPost by Elias MÃ¥rtensonI'm currently working on a project where I am bringing Maxima to CLIM
(I've
Post by Elias MÃ¥rtensonhad 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:
Post by Vladimir SedachPost by Elias MÃ¥rtensonbut 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