Commit 8f48d131 authored by Cameron Desautels's avatar Cameron Desautels Committed by Dmitry Gutov
Browse files

* lisp/progmodes/ruby-mode.el (ruby-forward-string): Document.

Handle caret-delimited strings.

Fixes: debbugs:16079
parent ff8c9764
2013-12-09 Cameron Desautels <camdez@gmail.com> (tiny change)
* progmodes/ruby-mode.el (ruby-forward-string): Document. Handle
caret-delimited strings (Bug#16079).
2013-12-09 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-accurate-end-of-block): When
......
......@@ -795,11 +795,28 @@ Can be one of `heredoc', `modifier', `expr-qstr', `expr-re'."
(t nil)))))))))
(defun ruby-forward-string (term &optional end no-error expand)
"TODO: document."
"Move forward across one balanced pair of string delimiters.
Skips escaped delimiters. If EXPAND is non-nil, also ignores
delimiters in interpolated strings.
TERM should be a string containing either a single, self-matching
delimiter (e.g. \"/\"), or a pair of matching delimiters with the
close delimiter first (e.g. \"][\").
When non-nil, search is bounded by position END.
Throws an error if a balanced match is not found, unless NO-ERROR
is non-nil, in which case nil will be returned.
This command assumes the character after point is an opening
delimiter."
(let ((n 1) (c (string-to-char term))
(re (if expand
(concat "[^\\]\\(\\\\\\\\\\)*\\([" term "]\\|\\(#{\\)\\)")
(concat "[^\\]\\(\\\\\\\\\\)*[" term "]"))))
(re (concat "[^\\]\\(\\\\\\\\\\)*\\("
(if (string= term "^") ;[^] is not a valid regexp
"\\^"
(concat "[" term "]"))
(when expand "\\|\\(#{\\)")
"\\)")))
(while (and (re-search-forward re end no-error)
(if (match-beginning 3)
(ruby-forward-string "}{" end no-error nil)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment