Hi Tobias,
-------- Original-Nachricht --------
Datum: Tue, 17 Nov 2009 21:04:21 +0100 Von: "Tobias C. Rittweiler" tcr@freebits.de An: slime-devel@common-lisp.net Betreff: Re: [slime-devel] broken clojure REPL
"Stefan Kamphausen" skampi@gmx.net writes:
[...]
While I understand that it would be nice to have a real symbol denoting the current cursor position, it feels rather hackish to me (and it /kills/ the swank-threads in Clojure). Would you mind replacing it with a not-so-special string? As far as I can tell, the code wouldn't need to change too much (cases of eq would probably become string= or something like that in a few places, but I may be wrong).
Using true symbols feels hackish to you but using strings which may legitimately appear as buffer forms does not? Uhm. :-)
Of course your are right. Having something definitive like a symbol is way better than a not-so-special string like "*HERE*" or something. The thing that feels strange to me is to create a symbol in elisp which uses the naming rules from common-lisp. Maybe another symbol name would be possible, hard for me to say, especially when dealing with packages/namespaces. A string is just a quick and easy solution, without being as robust as a symbol.
Clojure seems to conflate how symbols are named, and how they're read in. Is there no way to escape symbol names?
What remains then is an error message from eldoc, e.g.
eldoc error: (wrong-type-argument listp [string file line))
I still have to find the piece of code that throws this, but it seems to be related to braces and brackets, some code seems to rely on parens being the only kind of parenthesis.
Backtrace?
I can't get one, debug-on-error doesn't give it and the function debug-on-signal, which I seem to remember from Emacs 22.x seems to have gone in my 23.1 version. Uch, another focus.
You have to make sure that ?[ has a syntax-type "(", and ?]
a syntax-type ")" by using `modify-syntax-entry'.
Clojure-mode looks save here:
(defvar clojure-mode-syntax-table (let ((table (copy-syntax-table emacs-lisp-mode-syntax-table))) (modify-syntax-entry ?~ "' " table) (modify-syntax-entry ?, " " table) (modify-syntax-entry ?{ "(}" table) (modify-syntax-entry ?} "){" table) (modify-syntax-entry ?[ "(]" table) (modify-syntax-entry ?] ")[" table) (modify-syntax-entry ?^ "'" table) table))
Thank your for taking your time to help with this, although it's not your backend that's in trouble.
Best, Stefan