From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 16 06:56:05 2021 Received: (at submit) by debbugs.gnu.org; 16 Jun 2021 10:56:05 +0000 Received: from localhost ([127.0.0.1]:51628 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ltTDI-0003fR-NV for submit@debbugs.gnu.org; Wed, 16 Jun 2021 06:56:05 -0400 Received: from lists.gnu.org ([209.51.188.17]:42972) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ltTDH-0003fK-Je for submit@debbugs.gnu.org; Wed, 16 Jun 2021 06:56:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35870) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ltTDH-0000rD-7N for bug-gnu-emacs@gnu.org; Wed, 16 Jun 2021 06:56:03 -0400 Received: from forward102p.mail.yandex.net ([2a02:6b8:0:1472:2741:0:8b7:102]:49164) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ltTDC-0001CI-26 for bug-gnu-emacs@gnu.org; Wed, 16 Jun 2021 06:56:02 -0400 Received: from myt5-1ce284ea94ec.qloud-c.yandex.net (myt5-1ce284ea94ec.qloud-c.yandex.net [IPv6:2a02:6b8:c12:4d97:0:640:1ce2:84ea]) by forward102p.mail.yandex.net (Yandex) with ESMTP id 6A14E54C2947 for ; Wed, 16 Jun 2021 13:55:52 +0300 (MSK) Received: from myt5-89cdf5c4a3a5.qloud-c.yandex.net (myt5-89cdf5c4a3a5.qloud-c.yandex.net [2a02:6b8:c12:289b:0:640:89cd:f5c4]) by myt5-1ce284ea94ec.qloud-c.yandex.net (mxback/Yandex) with ESMTP id 38JrHVrdCN-tqHejGQ6; Wed, 16 Jun 2021 13:55:52 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1623840952; bh=s86NMewiY5LDjUhL+8Uw0nJq35oUszgs3BITT7rGQtM=; h=To:From:Subject:Message-ID:Date; b=NvGbdE7retorvKuOmQ6O5N2DHBI8lwP0fgBSs9OeXbFT+EjPKgsGXjzz6NaRGhS7p YyjT1lHLDCc1zooVWqoF3/Jp1axSutIs7cww8n9jFZAPuCSrfFUbkwYX+N6HbYDkup B34BRyKyKr+e+OWw9giNSUCQU5tKFvverNZ5ydXk= Authentication-Results: myt5-1ce284ea94ec.qloud-c.yandex.net; dkim=pass header.i=@yandex.ru Received: by myt5-89cdf5c4a3a5.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id rHAfEmmSr6-tpx4LfXd; Wed, 16 Jun 2021 13:55:51 +0300 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client certificate not present) Message-ID: <863437bbdd703aa4847b887fb5e5b16b27fc03f5.camel@yandex.ru> Subject: Python-mode sporadically stops recognising single quote '-strings From: Konstantin Kharlamov To: bug-gnu-emacs@gnu.org Date: Wed, 16 Jun 2021 13:55:51 +0300 Content-Type: multipart/mixed; boundary="=-DSNiDulbyzR5CsOl+Glx" User-Agent: Evolution 3.40.1 MIME-Version: 1.0 Received-SPF: pass client-ip=2a02:6b8:0:1472:2741:0:8b7:102; envelope-from=hi-angel@yandex.ru; helo=forward102p.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --=-DSNiDulbyzR5CsOl+Glx Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Given a python code like `foo = 'text'`, python-mode sometimes starts thinking the content inside single quotes is a code, and rather than apply font-lock-string-face to it, it starts applying various code fontifications. It's an old bug, I think I've seen it for an year or more. Unfortunately, I never found steps to reproduce it, which is ultimately why I never reported it. It just spontaneously happens inside some python buffer, sometimes following days of using it, with no visible trigger. The only way to fix it AFAIK is to close the buffer, and reopen the file anew. I'm hoping someone might give hints for debugging that. Perhaps, is there anything useful I can look into, once that problem appears? I attached a screenshot of the bug, and it can also be viewed online at https://i.imgur.com/6H105Ob.png In the screenshot, on the left is a normal buffer, and on the right is one where the bug got triggered, both buffers has same content (ignore identifiers highlight, that's color-identifiers-mode). As you can see, double-quote strings are unaffected. I tried finding the difference between processing single and double quote strings in python.el, but found none. At this point I have no idea what could be causing it. Emacs version: master built from `f572735c51: Fix the etags test suite` with one malloc_trim() commit on top. Below is an information from M-x report-emacs-bug -------------- In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.29, cairo version 1.17.4) of 2021-05-18 built on constantine-N61Ja Repository revision: 222269b33e841a1909bfadc7e21da084e50ed4ff Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12011000 System Description: Arch Linux Configured using: 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games --with-sound=alsa --with-modules --without-gconf --without-gsettings --enable-link-time-optimization --with-x-toolkit=gtk3 --without-xaw3d --without-compress-install '--program-transform-name=s/\([ec]tags\)/\1.emacs/' 'CFLAGS=-flto=2 -march=native -O3 -pipe -fno-stack-protector -fweb -fmerge-all-constants -fno-plt -fcommon -flto -fuse-linker-plugin -flto -fuse-linker-plugin' 'LDFLAGS=-flto=2 -O3 -march=native -fweb -fmerge-all-constants -floop-nest-optimize -Wl,--sort-common,-z,relro -fno-plt -fcommon'' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM GTK3 ZLIB Important settings: value of $LC_TIME: ru_RU.UTF-8 value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Python Minor modes in effect: flycheck-mode: t lsp-modeline-workspace-status-mode: t magit-auto-revert-mode: t global-git-commit-mode: t async-bytecomp-package-mode: t auto-revert-mode: t yas-global-mode: t yas-minor-mode: t global-color-identifiers-mode: t color-identifiers-mode: t delete-selection-mode: t winum-mode: t symbol-overlay-mode: t global-symbol-overlay-mode: t global-highlight-parentheses-mode: t highlight-parentheses-mode: t show-smartparens-global-mode: t show-smartparens-mode: t smartparens-global-mode: t smartparens-mode: t highlight-numbers-mode: t evil-goggles-mode: t global-evil-surround-mode: t evil-surround-mode: t shell-dirtrack-mode: t evil-mode: t evil-local-mode: t global-company-mode: t company-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /home/constantine/.emacs.d/lisp/idomenu hides /home/constantine/.emacs.d/elpa/idomenu-20141123.1320/idomenu /home/constantine/.emacs.d/lisp/popup hides /home/constantine/.emacs.d/elpa/popup-20160709.729/popup /home/constantine/.emacs.d/elpa/cmake-mode-20180104.1137/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode /home/constantine/.emacs.d/elpa/transient-20201114.1825/transient hides /usr/share/emacs/28.0.50/lisp/transient Features: (shadow mail-extr emacsbug sendmail cl-print debug backtrace eieio-opt speedbar ezimage dframe shortdoc descr-text sort pp vc-mtn vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc hideif goto-chg help-fns radix-tree find-dired ffap grep tabify cua-base undo-fu misearch multi-isearch flycheck find-func lsp-diagnostics lsp-modeline view lsp-steep lsp-svelte lsp-sqls lsp-yaml lsp-xml lsp-vimscript lsp-vhdl lsp-vetur lsp-html lsp-verilog lsp-vala lsp-terraform lsp-tex lsp-sorbet lsp-solargraph lsp-rust lsp-rf lsp-r lsp-purescript lsp-pyls lsp-pwsh lsp-php lsp-perl lsp-ocaml lsp-nix lsp-nim lsp-lua lsp-kotlin lsp-json lsp-javascript lsp-haxe lsp-groovy lsp-hack lsp-go lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint lsp-erlang lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-css lsp-csharp gnutls lsp-crystal lsp-cmake lsp-clojure lsp-clangd dom lsp-bash lsp-angular lsp-ada lsp-mode lsp-protocol tree-widget wid-edit spinner network-stream nsm smartparens-markdown markdown-mode noutline outline lv inline ht f s ewoc dash-functional compile bindat dabbrev smartparens-c cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs quail evil-magit magit-submodule magit-obsolete magit-popup magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode magit-core magit-autorevert magit-margin magit-transient magit-process magit-mode git-commit transient magit-git magit-section magit-utils crm log-edit message rmc puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail rmail-loaddefs text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log with-editor async-bytecomp async server make-mode sh-script smie executable conf-mode autorevert filenotify vc-git diff-mode vc-dispatcher yaml-mode desktop frameset smex yasnippet-snippets yasnippet face-remap color-identifiers-mode smartparens-python python tramp-sh tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat parse-time iso8601 time-date ls-lisp format-spec delsel winum symbol-overlay highlight-parentheses sp-sublimetext-like smartparens-config smartparens-text smartparens dash highlight-numbers parent-mode ido evil-goggles pulse color evil-surround emvil evil evil-integration undo-tree diff evil-maps evil-commands flyspell ispell evil-jumps evil-command-window evil-types evil-search evil-ex shell pcomplete comint ansi-color evil-macros evil-repeat evil-states evil-core advice evil-common windmove thingatpt rect evil-digraphs evil-vars avy company-oddmuse company-keywords company-etags etags fileloop generator xref project ring company-gtags company-dabbrev-code company-dabbrev company-files company-capf company-cmake company-xcode company-clang company-semantic company-eclim company-template company-bbdb company pcase cl-extra help-mode use-package-bind-key use-package-core edmacro kmacro bind-key easy-mmode rx info package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer 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 composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting font-render-setting cairo move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 833973 402991) (symbols 48 50378 1) (strings 32 235267 26373) (string-bytes 1 6628245) (vectors 16 104698) (vector-slots 8 2468565 767967) (floats 8 351 1239) (intervals 56 50806 1258) (buffers 992 80)) --=-DSNiDulbyzR5CsOl+Glx Content-Type: image/png; name="6H105Ob.png" Content-Disposition: attachment; filename="6H105Ob.png" Content-Transfer-Encoding: base64 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 GxOpEfk/G4Qym3QMuNoAAAAASUVORK5CYII= --=-DSNiDulbyzR5CsOl+Glx-- From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 05 10:35:54 2021 Received: (at 49060) by debbugs.gnu.org; 5 Aug 2021 14:35:55 +0000 Received: from localhost ([127.0.0.1]:48024 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBeTS-0007jE-Jr for submit@debbugs.gnu.org; Thu, 05 Aug 2021 10:35:54 -0400 Received: from forward102o.mail.yandex.net ([37.140.190.182]:49057) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBeTP-0007iy-PD for 49060@debbugs.gnu.org; Thu, 05 Aug 2021 10:35:53 -0400 Received: from forward102q.mail.yandex.net (forward102q.mail.yandex.net [IPv6:2a02:6b8:c0e:1ba:0:640:516:4e7d]) by forward102o.mail.yandex.net (Yandex) with ESMTP id D2C606681D42 for <49060@debbugs.gnu.org>; Thu, 5 Aug 2021 17:35:44 +0300 (MSK) Received: from vla5-7026d7bc498f.qloud-c.yandex.net (vla5-7026d7bc498f.qloud-c.yandex.net [IPv6:2a02:6b8:c18:351e:0:640:7026:d7bc]) by forward102q.mail.yandex.net (Yandex) with ESMTP id CEA133A20002 for <49060@debbugs.gnu.org>; Thu, 5 Aug 2021 17:35:44 +0300 (MSK) Received: from vla1-ef285479e348.qloud-c.yandex.net (vla1-ef285479e348.qloud-c.yandex.net [2a02:6b8:c0d:35a1:0:640:ef28:5479]) by vla5-7026d7bc498f.qloud-c.yandex.net (mxback/Yandex) with ESMTP id cmxqw7hVBE-ZiH0lRYg; Thu, 05 Aug 2021 17:35:44 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1628174144; bh=rp/IRDxfrH3B12J8lrgUBIW+8iTZ6KMzm8qubz4pHUs=; h=References:Date:To:From:Subject:Message-ID:In-Reply-To; b=KIMCZMBnGCM3epR8yXg/OY5ArvaWVvgyETjPzNB0sFt5DLJVcuFk3K+ztSqkw2+xl 9fTVCT0NmNVnBbUIO4exyOFO1sxtES29D25yRkHHDBMP2yG8V29Zg/8gfCfkDDPAXM u0Yxk/THLYTLQwkrHnoouTTYeANcYZOjogVlnerk= Authentication-Results: vla5-7026d7bc498f.qloud-c.yandex.net; dkim=pass header.i=@yandex.ru Received: by vla1-ef285479e348.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id QZZvjaDBru-Zh8e9dLS; Thu, 05 Aug 2021 17:35:44 +0300 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client certificate not present) Message-ID: <5e29e7cd40b5dc707f7243648789139edceb158a.camel@yandex.ru> Subject: Re: bug#49060: Acknowledgement (Python-mode sporadically stops recognising single quote '-strings) From: Konstantin Kharlamov To: 49060@debbugs.gnu.org Date: Thu, 05 Aug 2021 17:35:43 +0300 In-Reply-To: References: <863437bbdd703aa4847b887fb5e5b16b27fc03f5.camel@yandex.ru> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.40.3 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 49060 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) I allocated some time to this problem today. To no avail, but commenting here just not to repeat this work next time: 1. python-mode is derived from prog-mode, but the latter has no code for working with single quotes nor has any mention of string-face. So the problem is unlikely to be there. 2. I did lots of editing in attempts to trigger the bug. Specifically, I was creating single-quoted strings and f-strings; first manually, then with a keyboard macro. Again, I couldn't trigger it. That makes me thinking, the problem may be some race condition of python fontification with another mode. Although, even if that been true, I don't get why would that influence the whole file. It would likely have been local damage, which could've been fixed by adding another singular quote, thus forcing refontification. So, I'm not sure that theory really holds up. > Perhaps, is there anything useful I can look into, once that problem appears? Next time it happens, gotta add debug prints to `python--font-lock-f-strings` function, and see the difference between its execution in the file when the problem is triggered compared to when it's not.