ruby-additional.el: escape control code

* misc/ruby-additional.el (ruby-encode-unicode): escape control
  code except for LF.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53393 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-12-31 01:38:28 +00:00
Родитель 34167345ac
Коммит 3e0f09dbe5
1 изменённых файлов: 16 добавлений и 4 удалений

Просмотреть файл

@ -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.