* progmodes/python.el: Explain how to restore "cc-mode"-like

forward-sexp movement in header documentation.
(python-nav--forward-sexp): Behave like emacs-lisp-mode in
comments and strings (GH bug 114).

Fixes: debbugs:13642
This commit is contained in:
Fabián Ezequiel Gallina 2013-02-13 21:42:11 -03:00
parent 5cd3d1e56e
commit ea5f4192b9
2 changed files with 29 additions and 20 deletions

View file

@ -1,3 +1,10 @@
2013-02-14 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el: Explain how to restore "cc-mode"-like
forward-sexp movement in header documentation (Bug#13642).
(python-nav--forward-sexp): Behave like emacs-lisp-mode in
comments and strings (GH bug 114).
2013-02-13 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el (python-info-current-defun): Fix current

View file

@ -54,8 +54,13 @@
;; `python-nav-beginning-of-statement', `python-nav-end-of-statement',
;; `python-nav-beginning-of-block' and `python-nav-end-of-block' are
;; included but no bound to any key. At last but not least the
;; specialized `python-nav-forward-sexp' allows easy
;; navigation between code blocks.
;; specialized `python-nav-forward-sexp' allows easy navigation
;; between code blocks. If you prefer `cc-mode'-like `forward-sexp'
;; movement, setting `forward-sexp-function' to nil is enough, You can
;; do that using the `python-mode-hook':
;; (add-hook 'python-mode-hook
;; (lambda () (setq forward-sexp-function nil)))
;; Shell interaction: is provided and allows you to execute easily any
;; block of code of your current buffer in an inferior Python process.
@ -1339,13 +1344,10 @@ backwards."
're-search-backward))
(context-type (python-syntax-context-type)))
(cond
((eq context-type 'string)
((memq context-type '(string comment))
;; Inside of a string, get out of it.
(while (and (funcall re-search-fn "[\"']" nil t)
(python-syntax-context 'string))))
((eq context-type 'comment)
;; Inside of a comment, just move forward.
(python-util-forward-comment dir))
(let ((forward-sexp-function))
(forward-sexp dir)))
((or (eq context-type 'paren)
(and forward-p (looking-at (python-rx open-paren)))
(and (not forward-p)
@ -1368,16 +1370,16 @@ backwards."
(save-excursion
(python-nav-lisp-forward-sexp-safe dir)
(point)))
(next-sexp-context
(save-excursion
(goto-char next-sexp-pos)
(cond
((python-info-beginning-of-block-p) 'block-start)
((python-info-end-of-block-p) 'block-end)
((python-info-beginning-of-statement-p) 'statement-start)
((python-info-end-of-statement-p) 'statement-end)
((python-info-statement-starts-block-p) 'starts-block)
((python-info-statement-ends-block-p) 'ends-block)))))
(next-sexp-context
(save-excursion
(goto-char next-sexp-pos)
(cond
((python-info-beginning-of-block-p) 'block-start)
((python-info-end-of-block-p) 'block-end)
((python-info-beginning-of-statement-p) 'statement-start)
((python-info-end-of-statement-p) 'statement-end)
((python-info-statement-starts-block-p) 'starts-block)
((python-info-statement-ends-block-p) 'ends-block)))))
(if forward-p
(cond ((and (not (eobp))
(python-info-current-line-empty-p))
@ -1401,8 +1403,8 @@ backwards."
(t (goto-char next-sexp-pos)))
(cond ((and (not (bobp))
(python-info-current-line-empty-p))
(python-util-forward-comment dir)
(python-nav--forward-sexp dir))
(python-util-forward-comment dir)
(python-nav--forward-sexp dir))
((eq context 'block-end)
(python-nav-beginning-of-block))
((eq context 'statement-end)