From 9fff18585a75ad540aedc84b1147a4a327d1dbdf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabi=C3=A1n=20Ezequiel=20Gallina?= Date: Thu, 17 May 2012 00:03:15 -0300 Subject: [PATCH] Implemented python-nav-backward-sentence, python-nav-forward-sentence Also small fixes to python-nav-sentence-start and python-nav-sentence-end were added. --- lisp/progmodes/python.el | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index aa20c20fae6..b45b22c139c 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -189,6 +189,13 @@ (defvar python-mode-map (let ((map (make-sparse-keymap))) + ;; Movement + (substitute-key-definition 'backward-sentence + 'python-nav-backward-sentence + map global-map) + (substitute-key-definition 'forward-sentence + 'python-nav-forward-sentence + map global-map) ;; Indent specific (define-key map "\177" 'python-indent-dedent-line-backspace) (define-key map (kbd "") 'python-indent-dedent-line) @@ -957,6 +964,7 @@ Returns nil if point is not in a def or class." (save-excursion (forward-line -1) (python-info-line-ends-backslash-p)) + (python-info-ppss-context 'string) (python-info-ppss-context 'paren)) (forward-line -1))))) @@ -967,9 +975,35 @@ Returns nil if point is not in a def or class." (not (eobp)) (when (or (python-info-line-ends-backslash-p) + (python-info-ppss-context 'string) (python-info-ppss-context 'paren)) (forward-line 1))))) +(defun python-nav-backward-sentence (&optional arg) + "Move backward to start of sentence. With arg, do it arg times. +See `python-nav-forward-sentence' for more information." + (interactive "^p") + (or arg (setq arg 1)) + (python-nav-forward-sentence (- arg))) + +(defun python-nav-forward-sentence (&optional arg) + "Move forward to next end of sentence. With argument, repeat. +With negative argument, move backward repeatedly to start of sentence." + (interactive "^p") + (or arg (setq arg 1)) + (while (> arg 0) + (forward-comment 9999) + (python-nav-sentence-end) + (forward-line 1) + (setq arg (1- arg))) + (while (< arg 0) + (python-nav-sentence-end) + (forward-comment -9999) + (python-nav-sentence-start) + (forward-line -1) + (setq arg (1+ arg)))) + + ;;; Shell integration -- 2.39.5