Function: ruby-do-end-to-brace
ruby-do-end-to-brace is a byte-compiled function defined in
ruby-mode.el.gz.
Signature
(ruby-do-end-to-brace ORIG END)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/ruby-mode.el.gz
(defun ruby-do-end-to-brace (orig end)
(let (beg-marker end-marker beg-pos end-pos)
(goto-char (- end 3))
(when (looking-at ruby-block-end-re)
(delete-char 3)
(setq end-marker (point-marker))
(insert "}")
(goto-char orig)
(delete-char 2)
;; Maybe this should be customizable, let's see if anyone asks.
(insert "{ ")
(setq beg-marker (point-marker))
(when (looking-at "\\s +|")
(delete-char (- (match-end 0) (match-beginning 0) 1))
(forward-char)
(re-search-forward "|" (line-end-position) t))
(save-excursion
(skip-chars-forward " \t\n\r")
(setq beg-pos (point))
(goto-char end-marker)
(skip-chars-backward " \t\n\r")
(setq end-pos (point)))
(when (or
(< end-pos beg-pos)
(and (= (line-number-at-pos beg-pos) (line-number-at-pos end-pos))
(< (+ (current-column) (- end-pos beg-pos) 2) fill-column)))
(just-one-space -1)
(goto-char end-marker)
(just-one-space -1))
(goto-char beg-marker)
t)))