I have just started playing with the emacs-unicode-2 branch from the emacs CVS repository. It was not happy with slime.el, choking on this piece of code:
(define-key slime-doc-map (string modified) command)
where modified is the result of (slime-control-modified-char key): A very large integer.
The following patch seems to cure the problem.
Index: slime.el =================================================================== RCS file: /project/slime/cvsroot/slime/slime.el,v retrieving revision 1.556 diff -u -r1.556 slime.el --- slime.el 17 Oct 2005 18:15:32 -0000 1.556 +++ slime.el 18 Oct 2005 20:11:37 -0000 @@ -714,7 +714,7 @@ (define-key slime-doc-map (string key) command) (unless (equal key ?h) ; But don't bind C-h (let ((modified (slime-control-modified-char key))) - (define-key slime-doc-map (string modified) command))))) + (define-key slime-doc-map (vector modified) command))))) ;; C-c C-d is the prefix for the doc map. (slime-define-key "\C-d" slime-doc-map :prefixed t :inferior t) ;; Who-xref @@ -724,7 +724,7 @@ ;; We bind both unmodified and with control. (define-key slime-who-map (string key) command) (let ((modified (slime-control-modified-char key))) - (define-key slime-who-map (string modified) command)))) + (define-key slime-who-map (vector modified) command)))) ;; C-c C-w is the prefix for the who-xref map. (slime-define-key "\C-w" slime-who-map :prefixed t :inferior t))
In fact, I don't understand how the original code is supposed to work, since older emacsen seem to just strip off the high bits before putting them in the string. Surely, vectors are a more robust way than strings to specify key sequences?
The good news is that, with this modification, slime seems to work fine with this bleeding edge emacs. But then I have only played with it for two minutes.
- Harald