aboutsummaryrefslogtreecommitdiffstats
path: root/misc
diff options
context:
space:
mode:
Diffstat (limited to 'misc')
-rw-r--r--misc/ruby-additional.el20
1 files changed, 16 insertions, 4 deletions
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.