The ed-in-emacs function may err when given certain symbols as argument. In particular, multiple escaped characters in a symbol can trip it up.
For example, with AquaMacs + Clozure:
(ed 'a\ b\ c) => error in process filter: Wrong number of arguments: NIL, 3
(ed-in-emacs '|ab)c|) => error in process filter: No known definition for: common-lisp- user::ab (in nil)
The cause is that ed-in-emacs attempts to pass the raw symbol when dispatching :ED to emacs:
1. dispatch-event: (:EMACS-REX (SWANK:LISTENER-EVAL "(ed 'a\ b\ c)") "COMMON-LISP-USER" :REPL-THREAD 74) 2. send-event: #<PROCESS repl-thread(36)> (:EMACS-REX (SWANK:LISTENER- EVAL "(ed 'a\ b\ c)") "COMMON-LISP-USER" 74) 3. dispatch-event: (:ED COMMON-LISP-USER::|A B C|) 4. WRITE: (:ed common-lisp-user::|A B C|)
Common LISP typically outputs a symbol using bars for |multiple escape|. However, this is not understood by the emacs reader.
How can we change the encoding of the :ED dispatch symbol argument to fix this issue?
-- Terje Norderhaug
On Jul 2, 2009, at 7:23 AM, Helmut Eller wrote:
- Terje Norderhaug [2009-07-02 09:43+0200] writes:
How can we change the encoding of the :ED dispatch symbol argument to fix this issue?
I changed that: SWANK sends the symbol now as string.
Note that :ED also passes pathnames as strings, which may confuse the client. But I assume you already covered that.
-- Terje Norderhaug