[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#29608: python.el movement functions
From: |
Glenn Morris |
Subject: |
bug#29608: python.el movement functions |
Date: |
Fri, 08 Dec 2017 12:56:44 -0500 |
User-agent: |
Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) |
Alex Branham wrote:
> Python movement statements do not always result in the behavior I'd
> expect. Consider this python file (with (|) representing point):
>
> (|)for i in [1, 2, 3]:
> print(i)
>
> I'd expect M-x python-nav-forward-statement to result in
>
> for i in [1, 2, 3]:
> print(i)
> (|)
>
> but instead you wind up with
>
> for i in [1, 2, 3]:
> (|)print(i)
The actual result seems reasonable to me?
> and python-nav-forward-block (bound to M-e) is even worse. It results
> in point not moving at all:
>
> (|)for i in [1, 2, 3]:
> print(i)
It seems that you disagree with python.el's definition of "statement" and
"block". Eg the block definition seems to be:
(defconst python-rx-constituents
`((block-start . ,(rx symbol-start
(or "def" "class" "if" "elif" "else" "try"
"except" "finally" "for" "while" "with"
;; Python 3.5+ PEP492
(and "async" (+ space)
(or "def" "for" "with")))
symbol-end))