* progmodes/python.el (python-nav-end-of-statement): Rewrite in

order to improve efficiency (Based on Daniel Colascione's
<dancol@dancol.org> patch).

Fixes: debbugs:13182
parent 08f59219
2012-12-31 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el (python-nav-end-of-statement): Rewrite in
order to improve efficiency (Based on Daniel Colascione's
<dancol@dancol.org> patch). (Bug#13182)
2012-12-31 Glenn Morris <rgm@gnu.org>
* vc/log-edit.el (log-edit-header-contents-regexp): Add doc string.
......
......@@ -1177,16 +1177,27 @@ Returns nil if point is not in a def or class."
(forward-line -1))))
(point-marker))
(defun python-nav-end-of-statement ()
"Move to end of current statement."
(defun python-nav-end-of-statement (&optional noend)
"Move to end of current statement.
Optional argument NOEND is internal and makes the logic to not
jump to the end of line when moving forward searching for the end
of the statement."
(interactive "^")
(while (and (goto-char (line-end-position))
(not (eobp))
(when (or
(python-info-line-ends-backslash-p)
(python-syntax-context 'string)
(python-syntax-context 'paren))
(forward-line 1))))
(let (string-start bs-pos)
(while (and (or noend (goto-char (line-end-position)))
(not (eobp))
(cond ((setq string-start (python-syntax-context 'string))
(goto-char string-start)
(python-nav-end-of-statement t))
((python-syntax-context 'paren)
;; The statement won't end before we've escaped
;; at least one level of parenthesis.
(condition-case err
(goto-char (scan-lists (point) 1 -1))
(scan-error (goto-char (nth 3 err)))))
((setq bs-pos (python-info-line-ends-backslash-p))
(goto-char bs-pos)
(forward-line 1))))))
(point-marker))
(defun python-nav-backward-statement (&optional arg)
......
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