mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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:
parent
34167345ac
commit
3e0f09dbe5
1 changed files with 16 additions and 4 deletions
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue