Here's a bit of code (originally thanks to Tobias) I'd like to make slime-indentation to use to make sexps parse right -- it sometimes messes up indentation most irritatingly when Emacs counts #p"foo" as two expressions instead of one.
(defun common-lisp-declare-dispatch-macro-char (def1 &rest more-defs) (let ((regexp (regexp-opt (cons def1 more-defs)))) (pushnew `(,regexp 0 "'") font-lock-syntactic-keywords :test #'equal)))
(defun common-lisp-extend-sexp-syntax () ;; Set up some of the finer points of CL syntax. (make-variable-buffer-local 'font-lock-syntactic-keywords) (set (make-variable-buffer-local 'parse-sexp-lookup-properties) t) (common-lisp-declare-dispatch-macro-char "#*" "#." "#=" "#A" "#C" "#P" "#S"))
I put this in lisp-mode-hook without trouble, and normal lisp buffers will be fine.
However, neither REPL nor inferior lisp use the lisp-mode, and even if I manually try to enable this for them by calling (common-lisp-extend-syntax), they presist in believing that sharp-macros such as these consititute two expressions. Looking at font-lock-syntactic-keywords I see just what I expect, so I'm a bit at a loss as to why it doesn't work.
Any ideas or suggestions?
Cheers,
-- Nikodemus