diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2009-02-09 21:59:23 +0100 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2009-02-09 21:59:23 +0100 |
commit | aacdd11a8816430e6bdd2704c52e07466f0cca19 (patch) | |
tree | 067d7a3d87453d0e8f6705eefae05e0233eeb47d /elisp/geiser-syntax.el | |
parent | 99c436f18a37a665156f130ab7de720b37c8cf90 (diff) | |
download | geiser-guile-aacdd11a8816430e6bdd2704c52e07466f0cca19.tar.gz geiser-guile-aacdd11a8816430e6bdd2704c52e07466f0cca19.tar.bz2 |
Better preparation of Scheme results for the Elisp reader.
Diffstat (limited to 'elisp/geiser-syntax.el')
-rw-r--r-- | elisp/geiser-syntax.el | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/elisp/geiser-syntax.el b/elisp/geiser-syntax.el index fa8e9b2..5e45470 100644 --- a/elisp/geiser-syntax.el +++ b/elisp/geiser-syntax.el @@ -53,7 +53,7 @@ ;;; Code parsing: (defsubst geiser-syntax--end-of-thing () - (let ((sc (syntax-class (syntax-after (point))))) + (let ((sc (or (syntax-class (syntax-after (point))) 0))) (when (= sc 7) (forward-char)) (cond ((nth 3 (syntax-ppss)) (skip-syntax-forward "^\"") @@ -77,6 +77,21 @@ (when (< (point) p) (setq arg-no (1+ arg-no)))) (cons proc arg-no))))) +(defun geiser-syntax--prepare-scheme-for-elisp-reader () + (goto-char (point-min)) + (while (re-search-forward "#\<\\([^>]*?\\)\>" nil t) + (let ((from (match-beginning 1)) + (to (match-end 1))) + (goto-char from) + (while (re-search-forward "\\([() ;'`]\\)" to t) + (replace-match "\\\\\\1")) + (goto-char to))) + (goto-char (point-min)) + (while (re-search-forward "#(" nil t) (replace-match "(vector ")) + (goto-char (point-min)) + (while (re-search-forward "#" nil t) (replace-match "\\\\#"))) + + ;;; Fontify strings as Scheme code: |