diff --git a/misc/ruby-additional.el b/misc/ruby-additional.el index e3f6a02f4d..2aa20cba38 100644 --- a/misc/ruby-additional.el +++ b/misc/ruby-additional.el @@ -114,11 +114,23 @@ Emacs to Ruby." (setq end (set-marker (make-marker) end)) (goto-char beg) (while (and (< (point) end) - (re-search-forward "[^\C-@-~]+" end t)) - (let ((u (mapconcat (lambda (c) (format "%x" c)) (match-string-no-properties 0) " "))) + (re-search-forward "\\([\C-@-\C-I\C-K\C-_\C-?]+\\)\\|[^\C-@-\C-?]+" end t)) + (let ((str (match-string-no-properties 0)) sep b e f) + (if (match-beginning 1) + (setq b "" e "" sep "" + f (lambda (c) + (cond ((= c ?\t) "\\t") + ((= c ?\r) "\\r") + ((= c ?\e) "\\e") + ((= c ?\f) "\\f") + ((= c ?\b) "\\b") + ((= c ?\v) "\\v") + ((= c ?\C-?) "\\c?") + ((concat "\\c" (char-to-string (logior c #x40))))))) + (setq b "\\u{" e "}" sep " " f (lambda (c) (format "%x" c)))) + (setq str (mapconcat f str sep)) (delete-region (match-beginning 0) (match-end 0)) - (insert "\\u{" u "}")) - )) + (insert b str e)))) )) ;; monkey-patching ruby-mode.el in Emacs 24, as r49872.