GNU bug report logs - #55808
29.0.50; If a Python class is on the first line, mark-defun does not mark the entire class

Previous Next

Package: emacs;

Reported by: kobarity <kobarity <at> gmail.com>

Date: Sun, 5 Jun 2022 14:20:01 UTC

Severity: normal

Found in version 29.0.50

Fixed in version 29.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 55808 in the body.
You can then email your comments to 55808 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to mbork <at> mbork.pl, bug-gnu-emacs <at> gnu.org:
bug#55808; Package emacs. (Sun, 05 Jun 2022 14:20:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to kobarity <kobarity <at> gmail.com>:
New bug report received and forwarded. Copy sent to mbork <at> mbork.pl, bug-gnu-emacs <at> gnu.org. (Sun, 05 Jun 2022 14:20:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: kobarity <kobarity <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; If a Python class is on the first line, mark-defun does not
 mark the entire class
Date: Sun, 5 Jun 2022 23:19:29 +0900
X-Debbugs-CC: Marcin Borkowski <mbork <at> mbork.pl>

Hi,

The following steps will mark only the method baz, not the entire
class Foo.

1. emacs -Q
2. Load the following Python file using M-x find-file

#+begin_src python
class Foo:
    def bar():
        pass

    def baz():
        pass
#+end_src

3. M-x mark-defun

This issue happens only if the class is on the first line of the file.

The direct cause of this issue is the following condition in
`mark-defun':

#+begin_src elisp
                       (= beg (point-min))) ; we were before the first defun!
#+end_src

This condition was introduced in Message #98 of Bug #21072. I understand
that this is necessary to avoid marking the comment line like following:

#+begin_src elisp
;; Comment header

(defun func-1 (arg)
  "docstring"
  body)
#+end_src

However, I feel that this condition is too broad to test if "we were
before the first defun". Any ideas?

Best Regards,

--

In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu)
 of 2022-06-05 built on ubuntu
Repository revision: 6011d39b6a4bc659da364255bcae22c4e6ef3a3f
Repository branch: master
System Description: Ubuntu 22.04 LTS

Configured using:
 'configure --without-x --with-gnutls=ifavailable'

Configured features:
ACL LIBXML2 MODULES NOTIFY INOTIFY PDUMPER SECCOMP SOUND SQLITE3 THREADS
XIM ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Python

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media rmc puny
dired dnd dired-loaddefs rfc822 mml mml-sec password-cache epa derived
epg rfc6068 epg-config gnus-util text-property-search time-date
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
mail-utils vc-mtn python json map comint regexp-opt ring cl-loaddefs
cl-lib ansi-color seq term/screen term/xterm xterm gv subr-x byte-opt
bytecomp byte-compile cconv iso-transl tooltip eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode tabulated-list
replace newcomment text-mode lisp-mode prog-mode register page tab-bar
menu-bar rfn-eshadow isearch easymenu timer select mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads inotify multi-tty
make-network-process emacs)

Memory information:
((conses 16 54149 7992)
 (symbols 48 6657 1)
 (strings 32 18794 1945)
 (string-bytes 1 610563)
 (vectors 16 10669)
 (vector-slots 8 126166 8797)
 (floats 8 26 262)
 (intervals 56 218 0)
 (buffers 992 12))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#55808; Package emacs. (Sat, 25 Jun 2022 14:02:01 GMT) Full text and rfc822 format available.

Message #8 received at 55808 <at> debbugs.gnu.org (full text, mbox):

From: kobarity <kobarity <at> gmail.com>
To: 55808 <at> debbugs.gnu.org
Subject: 29.0.50; If a Python class is on the first line, mark-defun does not
 mark the entire class
Date: Sat, 25 Jun 2022 23:01:20 +0900
Hello,

I wrote:
> The following steps will mark only the method baz, not the entire
> class Foo.
>
> 1. emacs -Q
> 2. Load the following Python file using M-x find-file
>
> #+begin_src python
> class Foo:
>     def bar():
>         pass
>
>     def baz():
>         pass
> #+end_src
>
> 3. M-x mark-defun
>
> This issue happens only if the class is on the first line of the file.

It turned out that there was a bug in `python-nav-beginning-of-defun'.
Fixing the bug #56105 also resolved this issue #55808. So #55808 can
now be closed.

Thanks,




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#55808; Package emacs. (Sat, 25 Jun 2022 14:52:02 GMT) Full text and rfc822 format available.

Message #11 received at 55808 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: kobarity <kobarity <at> gmail.com>
Cc: 55808 <at> debbugs.gnu.org
Subject: Re: bug#55808: 29.0.50; If a Python class is on the first line,
 mark-defun does not mark the entire class
Date: Sat, 25 Jun 2022 16:51:16 +0200
kobarity <kobarity <at> gmail.com> writes:

> It turned out that there was a bug in `python-nav-beginning-of-defun'.
> Fixing the bug #56105 also resolved this issue #55808. So #55808 can
> now be closed.

Thanks; closing this bug report, then.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




bug marked as fixed in version 29.1, send any further explanations to 55808 <at> debbugs.gnu.org and kobarity <kobarity <at> gmail.com> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Sat, 25 Jun 2022 14:52:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 24 Jul 2022 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 355 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.