* 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
This commit is contained in:
Fabián Ezequiel Gallina 2012-12-31 17:58:57 -03:00
parent 08f592198a
commit 6861432ebd
2 changed files with 26 additions and 9 deletions

View file

@ -1,3 +1,9 @@
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.

View file

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