First, congrats on writing a Rubik's Cube mode. That is a feat. There are, however, three parts I would love to see improved in a follow-up version:
- currentlyCurrently, none of the symbols are private; functions and variables that should not be used outside your module usually have two hyphens, e.g.,
rubic--paint-diamond. As far as I understood, almost all your functions and values should be considered private, the sole exception areother than the(interactive)commands. - theThe current variant is not consistent in its use of documentation strings. I'd argue that all functions should be documented there.
- This is probably the most important remark: your code does not work. You're missing
(require 'cl). But since Emacs 27,clis deprecated. You should(require 'cl-lib)and prefix the CL functions withcl(e.g., replaceloopwithcl-loop).
Other than that, there are some typos, e.g., rubic-cuve-back or te. Those should probably get fixed.
From a usability point of view, it would be great if the key bindings were listed below the history. That would ease the usage. Also, you should probably not bind g to a reset, at least not without a yes-or-no prompt.
Hope that helps!