From 89c868adeef16e407569a3d607dd64ccadba17c7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabi=C3=A1n=20Ezequiel=20Gallina?= Date: Tue, 24 Dec 2013 16:48:40 -0300 Subject: [PATCH] * lisp/progmodes/python.el (python-nav-beginning-of-statement): Speed up. Fixes: debbugs:15295 --- lisp/ChangeLog | 5 +++++ lisp/progmodes/python.el | 24 +++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c3185a37a7..1c66a806c5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-12-24 Fabián Ezequiel Gallina + + * progmodes/python.el (python-nav-beginning-of-statement): Speed + up (Bug#15295). + 2013-12-24 Lars Ingebrigtsen * net/eww.el (eww-bookmark-browse): Use `quit-window' to restore diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index aeee179c7e..07a8bba6b1 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -1279,15 +1279,21 @@ nested definitions." (defun python-nav-beginning-of-statement () "Move to start of current statement." (interactive "^") - (while (and (or (back-to-indentation) t) - (not (bobp)) - (when (or - (save-excursion - (forward-line -1) - (python-info-line-ends-backslash-p)) - (python-syntax-context 'string) - (python-syntax-context 'paren)) - (forward-line -1)))) + (back-to-indentation) + (let* ((ppss (syntax-ppss)) + (context-point + (or + (python-syntax-context 'paren ppss) + (python-syntax-context 'string ppss)))) + (cond ((bobp)) + (context-point + (goto-char context-point) + (python-nav-beginning-of-statement)) + ((save-excursion + (forward-line -1) + (python-info-line-ends-backslash-p)) + (forward-line -1) + (python-nav-beginning-of-statement)))) (point-marker)) (defun python-nav-end-of-statement (&optional noend) -- 2.20.1