Subject: bug#24856: 25.1.50; Emacs stucks when using C-k to kill lines in python-mode if the next line is a beginning of a docstring

From: Clément Pit--Claudel <[email-masked]>
Date: Wed, 2 Nov 2016 02:59:29 -0400

Thanks, I can reproduce the bug.  Here's a simpler recipe:

    emacs -Q test.py --eval '(insert " \"")'

In other words, a mis-indented string on the first line is enough to reproduce the bug.  It seems to be an infinite loop in fontification:

Debugger entered--Lisp error: (quit)
  python-info-beginning-of-statement-p()
  python-nav--forward-sexp(-1 nil nil)
  python-nav-forward-sexp(-1 nil nil)
  python-nav-backward-sexp()
  python-info-docstring-p((0 nil nil t nil nil 0 nil 5 nil nil))
  python-font-lock-syntactic-face-function((0 nil nil t nil nil 0 nil 5 nil nil))
  font-lock-fontify-syntactically-region(1 9 nil)
  font-lock-default-fontify-region(1 9 nil)
  font-lock-fontify-region(1 9)
  #[257 "\211\300\301\"\211\242\306=\203

Clément.

On 2016-11-01 22:39, raynewang (王磊) wrote:
> Please look at the following python snippet:
> 
> class Test(object):
>   def func(self):
>     """
>     This is a test.
>     """
> 
> I was trying to kill lines (C-k) from line 1. Emacs stucked everytime
> after I killed line 2 and was going to kill line 3 (just before the
> docstring delimiters). Most time C-g would not work or just brought
> Emacs back for no more than 1 sec only. When it occurred, the only thing
> I could do was to kill Emacs process.
> 
> I tried to disable all of my Emacs configurations, nothing changed.
> 
> May it be a problem of built-in python-mode?
> 
> Wish you guys could help me. I love your works!
> 
> Sincerely
> 
> Lei
> 
> ======================================================================
> 
> 
> In GNU Emacs 25.1.50.1 (x86_64-apple-darwin15.6.0, NS appkit-1404.47 Version 10.11.6 (Build 15G31))
> of 2016-09-20 built on raynewang-rmbp.local
> Repository revision: 83fbb3a6dd75e01a768cb6b3348b7c947711ee46
> Windowing system distributor 'Apple', version 10.3.1504
> Recent messages:
> For information about GNU Emacs and the GNU system, type C-h C-a.
> <s-backspace> is undefined [2 times]
> funcall-interactively: Wrong type argument: char-or-string-p, nil
> 
> Configured using:
> 'configure --disable-dependency-tracking --disable-silent-rules
> --enable-locallisppath=/usr/local/share/emacs/site-lisp
> --infodir=/usr/local/Cellar/emacs/HEAD-83fbb3a/share/info/emacs
> --prefix=/usr/local/Cellar/emacs/HEAD-83fbb3a --without-x --with-xml2
> --without-dbus --without-gnutls --with-rsvg --with-ns
> --disable-ns-self-contained'
> 
> Configured features:
> JPEG RSVG NOTIFY ACL LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS
> 
> Important settings:
>   value of $LANG: en_US.UTF-8
>   locale-coding-system: utf-8-unix
> 
> Major mode: Fundamental
> 
> Minor modes in effect:
>   tooltip-mode: t
>   global-eldoc-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   tool-bar-mode: t
>   menu-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   blink-cursor-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>   buffer-read-only: t
>   line-number-mode: t
>   transient-mark-mode: t
> 
> Load-path shadows:
> None found.
> 
> Features:
> (shadow sort mail-extr emacsbug message subr-x puny seq byte-opt gv
> bytecomp byte-compile cl-extra help-mode cconv cl-loaddefs pcase cl-lib
> dired dired-loaddefs format-spec rfc822 mml easymenu mml-sec
> password-cache epa derived epg epg-config gnus-util rmail rmail-loaddefs
> mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
> mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
> mail-utils time-date mule-util tooltip eldoc electric uniquify
> ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win
> ucs-normalize term/common-win tool-bar dnd fontset image regexp-opt
> fringe tabulated-list newcomment elisp-mode lisp-mode prog-mode register
> page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock
> font-lock syntax facemenu font-core term/tty-colors frame cl-generic
> 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 charscript case-table epa-hook
> jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice
> loaddefs button faces cus-face macroexp files text-properties overlay
> sha1 md5 base64 format env code-pages mule custom widget
> hashtable-print-readable backquote kqueue cocoa ns multi-tty
> make-network-process emacs)
> 
> Memory information:
> ((conses 16 206717 18560)
> (symbols 48 20249 0)
> (miscs 40 75 177)
> (strings 32 18166 5363)
> (string-bytes 1 584409)
> (vectors 16 35204)
> (vector-slots 8 670777 6763)
> (floats 8 179 123)
> (intervals 56 206 0)
> (buffers 976 12))
> 
> 
> 
>