From unknown Sun Jun 22 11:43:17 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23387: 25.0.93; Unicode quote inserted in Python mode outside of strings Resent-From: Philipp Stephani Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 27 Apr 2016 14:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 23387 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 23387@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.146176651712958 (code B ref -1); Wed, 27 Apr 2016 14:16:01 +0000 Received: (at submit) by debbugs.gnu.org; 27 Apr 2016 14:15:17 +0000 Received: from localhost ([127.0.0.1]:50154 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avQFI-0003Mw-KL for submit@debbugs.gnu.org; Wed, 27 Apr 2016 10:15:17 -0400 Received: from eggs.gnu.org ([208.118.235.92]:41146) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avQFH-0003Mh-0e for submit@debbugs.gnu.org; Wed, 27 Apr 2016 10:15:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1avQF5-0000X9-PN for submit@debbugs.gnu.org; Wed, 27 Apr 2016 10:15:09 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:38115) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1avQF5-0000X5-MF for submit@debbugs.gnu.org; Wed, 27 Apr 2016 10:15:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60345) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1avQF4-0005U5-9l for bug-gnu-emacs@gnu.org; Wed, 27 Apr 2016 10:15:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1avQF2-0000WI-T1 for bug-gnu-emacs@gnu.org; Wed, 27 Apr 2016 10:15:02 -0400 Received: from mail-wm0-x22b.google.com ([2a00:1450:400c:c09::22b]:38723) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1avQF2-0000Vg-GX for bug-gnu-emacs@gnu.org; Wed, 27 Apr 2016 10:15:00 -0400 Received: by mail-wm0-x22b.google.com with SMTP id u206so51624594wme.1 for ; Wed, 27 Apr 2016 07:15:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ViiOkfYEC+kKAPdJZiNHJ9tA4OMLZj/VS5ls4xkgkN8=; b=fjczUDJ7vTGaYeBTZxtpiUTXWOuDVTWwfRG2n/b+EOmn77NccqtsS5WZAJ9FX5UDOk jUzSZ17DXQqaMSGuSoWG3x/Cvm1b5cDNr/CAFtbqrLbwrtJl3UtS1M/k0XhRw/Wkj0T1 0PuINf4u1/DhwXOtKlY3yWM8Ui2U4FonXTUlxrvt6JeE0TJW4K2e1upbB52qdJ3zMF+e uHQVuC87m6J/Nng0A1IuuFulYtxliQ84vdYsPnBk6FFKt9JsAKhHo9BohKjgx0wqsRd8 572o7NYZPLL2n2UzIZZqQzut2yq4IcSR5mczyYV1gcmcRW/+W7dQABBLC4exUYUpliz1 aymw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ViiOkfYEC+kKAPdJZiNHJ9tA4OMLZj/VS5ls4xkgkN8=; b=KVpa+iJNHwHrYBTgnpSbRVFukJny3ipT8HiZ8sBV8I7bplslCK3elmCVbJAKs67Rtg Cfiald/y/7YMQIf4K/ko3TYUdLNscmqKadDGCyhxDIHMGA2HulfkGdQjYLQe4c3Owo1o kk9mOZWW1KJur4wB7XcgH15pBZXWHg1jR2rk638mi/fs2Fqg0p1ztBME7JA7p90x1ZNk vOxvmdWaeRIcK7Ccd1XegwMqJDMYc4gwR8TxtLCRtDcQ6fYvQr64qmz7GR7TWSxGlcfp 7dt1ZrTyMeZ/77Wo/cEF0mxl4sCJAlP+YhEUjCiCLh9xoifV8UaxYgWOAzzR+Odbr7aF Xsdw== X-Gm-Message-State: AOPr4FW/0LjglRyo160pkbz5y3FL64qmnVGr1rU4viq8Aco3/3JOKISP54TlpZRYIQ3ppw== X-Received: by 10.28.31.73 with SMTP id f70mr10835974wmf.77.1461766499530; Wed, 27 Apr 2016 07:14:59 -0700 (PDT) Received: from a.muc.corp.google.com ([2a00:79e0:15:4:453b:c3b3:e6f3:4183]) by smtp.gmail.com with ESMTPSA id w79sm29631036wme.19.2016.04.27.07.14.58 for (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 27 Apr 2016 07:14:58 -0700 (PDT) From: Philipp Stephani Date: Wed, 27 Apr 2016 16:14:57 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.8 (---) 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: -3.8 (---) emacs -Q M-x electric-quote-mode M-x customize-variable RET electric-quote-string, set it to t, save M-x python-mode Hit ' Expected: ' (ASCII apostrophe) is inserted because point is outside a string Actual: =E2=80=99 (Unicode quote) is inserted This seems to happen only in Python mode, not in e.g. emacs-lisp-mode. In GNU Emacs 25.0.93.5 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8) of 2016-04-24 built on localhost Repository revision: 0cd2e923dba8d8c7128b0c084ce6af22069e8db5 Windowing system distributor 'The X.Org Foundation', version 11.0.11501000 System Description: Ubuntu 14.04 LTS Configured using: 'configure --with-modules LDFLAGS=3D-Wl,-fuse-ld=3Dgold,--export-dynamic-symbol=3D__google_auxv' Configured features: XPM JPEG TIFF GIF PNG SOUND GSETTINGS NOTIFY FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Python Minor modes in effect: shell-dirtrack-mode: t tooltip-mode: t global-eldoc-mode: t electric-quote-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 font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent messages: Electric-Quote mode enabled Quit Creating customization items... Creating customization items ...done Resetting customization items...done Creating customization setup...done To install your edits, invoke [State] and choose the Set operation Source file =E2=80=98/usr/local/google/home/phst/ThirdParty/Emacs/lisp/prog= modes/python.el=E2=80=99 newer than byte-compiled file Can=E2=80=99t guess python-indent-offset, using defaults: 4 Source file =E2=80=98/usr/local/google/home/phst/ThirdParty/Emacs/lisp/dire= d.el=E2=80=99 newer than byte-compiled file Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message dired rfc822 mml mml-sec epg epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mail-utils python tramp-sh tramp tramp-compat auth-source cl-seq eieio eieio-core cl-macs gnus-util mm-util mail-prsvr password-cache tramp-loaddefs trampver ucs-normalize shell pcomplete format-spec advice json map seq byte-opt gv bytecomp byte-compile cl-extra cconv comint ring ansi-color cus-edit wid-edit thingatpt help-fns help-mode easymenu cl-loaddefs pcase cl-lib cus-start cus-load time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win term/common-win x-dnd 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 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 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 inotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 239874 9745) (symbols 48 24466 0) (miscs 40 400 230) (strings 32 29068 7264) (string-bytes 1 922223) (vectors 16 39237) (vector-slots 8 730263 4252) (floats 8 240 60) (intervals 56 261 0) (buffers 976 14) (heap 1024 32672 1237)) --=20 Google Germany GmbH Erika-Mann-Stra=C3=9Fe 33 80636 M=C3=BCnchen Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Gesch=C3=A4ftsf=C3=BChrer: Matthew Scott Sucherman, Paul Terence Manicle Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind, leiten Sie diese bitte nicht weiter, informieren Sie den Absender und l=C3= =B6schen Sie die E-Mail und alle Anh=C3=A4nge. Vielen Dank. This e-mail is confidential. If you are not the right addressee please do = not forward it, please inform the sender, and please erase this e-mail including any attachments. Thanks. From unknown Sun Jun 22 11:43:17 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23387: 25.0.93; Unicode quote inserted in Python mode outside of strings Resent-From: Philipp Stephani Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 28 Apr 2016 17:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23387 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 23387@debbugs.gnu.org Received: via spool by 23387-submit@debbugs.gnu.org id=B23387.146186353130722 (code B ref 23387); Thu, 28 Apr 2016 17:13:01 +0000 Received: (at 23387) by debbugs.gnu.org; 28 Apr 2016 17:12:11 +0000 Received: from localhost ([127.0.0.1]:53458 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avpU2-0007zS-Qo for submit@debbugs.gnu.org; Thu, 28 Apr 2016 13:12:10 -0400 Received: from mail-lf0-f44.google.com ([209.85.215.44]:34129) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avpU1-0007zD-8q for 23387@debbugs.gnu.org; Thu, 28 Apr 2016 13:12:09 -0400 Received: by mail-lf0-f44.google.com with SMTP id j11so103533185lfb.1 for <23387@debbugs.gnu.org>; Thu, 28 Apr 2016 10:12:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=ROMHT64RG5ITotXwIrRmGakI3/XgyhuXqnobZO4vgPU=; b=OkmAKhtH9RWG11GCCfM6hDo8zoIKBLbA0xf5RxQKLAeTC3Xi5AYuBjatoiSXS8ddDT H4EEcFv+kg8imH0YKT9vQ/IKo9GUNjTzsvT4OwNufuuZkXQWYIsgWDvkevz/pOcMPRtT +oMKwFrRwvOSxQCn31LcSUGy5JBykhpIGFyLSI//MvmLTeiBFk+t7FBQcKmwKV8bj2Iv l3jklz3rrm/rlTz0vAaT9qjCaasyF6fN40G8HBXDmnmaxNgz1rrWH7hZEdb4C4TBwfXg ju2VA6BDiIWhfJsMHF0ZQr/e7TJyzkctwRe15+dIQnjhQfloJt4eCOFFK9oYJGWRQZq+ 9J1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ROMHT64RG5ITotXwIrRmGakI3/XgyhuXqnobZO4vgPU=; b=Yb0IPmJluNEn5XSYBSgF7UOCfOTweZ3rLvHQgPIwbmwUjf7Jrh2SPuahOkPIj0WP8L r1PgSHsJNQiQXBlnTLEOPFME2vOE5xdK+BNN8TgtQ6CyuzwzAaa80vwWGed00CE6RZDC 8I/OM9RmWHlAabwnlptv77RXucWgJkv3bsDdfrkIJnfYoVyaxUGpngzMYW7tycUwVasv CsNXHdzsBwD5iCLlwByRKoo1zVjA0N2K5R0uFGA1uKWxh0O2LmoLPF+fsjqqLd5Xlf/o Jl4/BTpBo1RqUw1e9qpevAFdQINbOglZjgApkKD1Q57N4SdHFUkz7ZOF47wG9GmoddkX 37sA== X-Gm-Message-State: AOPr4FWMaoZJJbjrTJ/5wavqzRIC4xiWylRhpx+cFOUFO9VrlIo3lOouOhJaKWTQC7TeZXIgTj0pkvqNikSoGw== X-Received: by 10.25.18.102 with SMTP id h99mr6819837lfi.127.1461863523363; Thu, 28 Apr 2016 10:12:03 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Philipp Stephani Date: Thu, 28 Apr 2016 17:11:53 +0000 Message-ID: Content-Type: multipart/alternative; boundary=001a113fb2ec05335305318ea0ff X-Spam-Score: -0.5 (/) 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: -0.5 (/) --001a113fb2ec05335305318ea0ff Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Philipp Stephani schrieb am Mi., 27. Apr. 2016 um 16:16 Uhr: > > emacs -Q > M-x electric-quote-mode > M-x customize-variable RET electric-quote-string, set it to t, save > M-x python-mode > Hit ' > > Expected: ' (ASCII apostrophe) is inserted because point is outside a > string > Actual: =E2=80=99 (Unicode quote) is inserted > > This seems to happen only in Python mode, not in e.g. emacs-lisp-mode. > > Also happens in C++ mode, and probably others. --001a113fb2ec05335305318ea0ff Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


Philip= p Stephani <p.stephani2@gmail.c= om> schrieb am Mi., 27. Apr. 2016 um 16:16=C2=A0Uhr:

emacs -Q
M-x electric-quote-mode
M-x customize-variable RET electric-quote-string, set it to t, save
M-x python-mode
Hit '

Expected: ' (ASCII apostrophe) is inserted because point is outside a s= tring
Actual: =E2=80=99 (Unicode quote) is inserted

This seems to happen only in Python mode, not in e.g. emacs-lisp-mode.

Also happens in C++ mode, and probably others.=C2=A0
--001a113fb2ec05335305318ea0ff-- From unknown Sun Jun 22 11:43:17 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23387: 25.0.93; Unicode quote inserted in Python mode outside of strings Resent-From: Philipp Stephani Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 28 Apr 2016 17:23:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23387 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 23387@debbugs.gnu.org Received: via spool by 23387-submit@debbugs.gnu.org id=B23387.146186414431709 (code B ref 23387); Thu, 28 Apr 2016 17:23:01 +0000 Received: (at 23387) by debbugs.gnu.org; 28 Apr 2016 17:22:24 +0000 Received: from localhost ([127.0.0.1]:53475 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avpdv-0008FN-Vt for submit@debbugs.gnu.org; Thu, 28 Apr 2016 13:22:24 -0400 Received: from mail-lf0-f54.google.com ([209.85.215.54]:33409) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avpdt-0008F8-QC for 23387@debbugs.gnu.org; Thu, 28 Apr 2016 13:22:22 -0400 Received: by mail-lf0-f54.google.com with SMTP id y84so91777855lfc.0 for <23387@debbugs.gnu.org>; Thu, 28 Apr 2016 10:22:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=bXDds70Giq8452mn3QTuxPvgc7VQGYWtlvRKIqy4ACI=; b=Yfk7HbcTDN1/TUpEXM+nelT3fQbfnXJLhwnwH/mtAGtRMYIRscGcEzfwB66LGpMTg+ 7hxECvR29zqGDErR2EQIlo4cl3FtjNa/v8tqGYVQboaXh3QQybpU6U5LcRjTpuAPak40 s1sCZL2KLmwur7qKFE7xqAST3FIec9+ZJetoUFSqiixfOLa/zjAotIyPTSIhCo5R5hIX jDI9Opo7z61X6lxRxP7DEQPwGgEcCAp4567ROsSYbxdbUCC6QL3HfmXw89jkud2LE2I7 DFF8wkyMhpfhRU1npVQwvWw6gYEW+5Ww8H487ZQ4UlLuY4Ffu9JUh5IPn3HYZ5yjuJCN 434Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=bXDds70Giq8452mn3QTuxPvgc7VQGYWtlvRKIqy4ACI=; b=hpRz32Tw3pGUyikXzvhJccH7X8YK3fjVeFnPst/11sLM6roEhev3/XqTEvf8oc4Grc 6UkTN9WEZrgGIxcilhqG8i3olmH2l4273VAA6PC0a+fgZyIjvdx3DjO+htVBUsmiK/jl 71MA74jL4Sjwuiglk9bHiIvrq2dW+PqLwyadbQ43o+n506v7DoaLTER/ewFuvsXpnUcD OOrWCiNXq2MupxTpi60E478MR8jtrOaIvFHjdZA81SbcA9DRotxSnMRHdVmIO5ElkKqd UXaCItRKsW9CEEtzgcpnQBTrsr8AJak3MuZnMgI58P20bqcjPPMqj3m2uIA1YB+Z7IK9 x+rQ== X-Gm-Message-State: AOPr4FVBs1t5HreRdsoiOsYl5FvvgkjTYXyYn6hCHUq1xR9lfLLc8bupFmdJXwpwUva0IqgNVey84foOH9CCzA== X-Received: by 10.112.198.132 with SMTP id jc4mr7041373lbc.120.1461864135989; Thu, 28 Apr 2016 10:22:15 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Philipp Stephani Date: Thu, 28 Apr 2016 17:22:06 +0000 Message-ID: Content-Type: multipart/alternative; boundary=001a11c32940891f5a05318ec473 X-Spam-Score: -0.5 (/) 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: -0.5 (/) --001a11c32940891f5a05318ec473 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Philipp Stephani schrieb am Do., 28. Apr. 2016 um 19:11 Uhr: > Philipp Stephani schrieb am Mi., 27. Apr. 2016 um > 16:16 Uhr: > >> >> emacs -Q >> M-x electric-quote-mode >> M-x customize-variable RET electric-quote-string, set it to t, save >> M-x python-mode >> Hit ' >> >> Expected: ' (ASCII apostrophe) is inserted because point is outside a >> string >> Actual: =E2=80=99 (Unicode quote) is inserted >> >> This seems to happen only in Python mode, not in e.g. emacs-lisp-mode. >> >> Also happens in C++ mode, and probably others. > The root cause is that electric-quote-post-self-insert-function uses syntax-ppss to check whether point is in a string or comment. Before it makes any replacement, the ASCII apostrophe is still in the buffer, so syntax-ppss considers point to be inside a string. It looks like calling syntax-ppss with (forward-point -1) as argument instead of (point) should fix it, but I'm not sure whether that's the right way. --001a11c32940891f5a05318ec473 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


Philip= p Stephani <p.stephani2@gmail.c= om> schrieb am Do., 28. Apr. 2016 um 19:11=C2=A0Uhr:
Philipp Stephani <p.stephani2@gmail.com> schrieb am Mi., 27. Apr. 2016= um 16:16=C2=A0Uhr:

emacs -Q
M-x electric-quote-mode
M-x customize-variable RET electric-quote-string, set it to t, save
M-x python-mode
Hit '

Expected: ' (ASCII apostrophe) is inserted because point is outside a s= tring
Actual: =E2=80=99 (Unicode quote) is inserted

This seems to happen only in Python mode, not in e.g. emacs-lisp-mode.

A= lso happens in C++ mode, and probably others.=C2=A0

The root cause is that electric-quote-post-self-= insert-function uses syntax-ppss to check whether point is in a string or c= omment. Before it makes any replacement, the ASCII apostrophe is still in t= he buffer, so syntax-ppss considers point to be inside a string. It looks l= ike calling syntax-ppss with (forward-point -1) as argument instead of (poi= nt) should fix it, but I'm not sure whether that's the right way.
--001a11c32940891f5a05318ec473-- From unknown Sun Jun 22 11:43:17 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23387: 25.0.93; Unicode quote inserted in Python mode outside of strings Resent-From: Philipp Stephani Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Apr 2016 12:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23387 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 23387@debbugs.gnu.org Received: via spool by 23387-submit@debbugs.gnu.org id=B23387.146201757412614 (code B ref 23387); Sat, 30 Apr 2016 12:00:02 +0000 Received: (at 23387) by debbugs.gnu.org; 30 Apr 2016 11:59:34 +0000 Received: from localhost ([127.0.0.1]:56421 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1awTYb-0003HO-Ov for submit@debbugs.gnu.org; Sat, 30 Apr 2016 07:59:33 -0400 Received: from mail-lf0-f41.google.com ([209.85.215.41]:33341) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1awTYa-0003HA-6w for 23387@debbugs.gnu.org; Sat, 30 Apr 2016 07:59:32 -0400 Received: by mail-lf0-f41.google.com with SMTP id y84so144243460lfc.0 for <23387@debbugs.gnu.org>; Sat, 30 Apr 2016 04:59:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=s9dVuALTFlauBmGZ4NynOYU7n0mjXgChvaMKV7x2SIE=; b=fyFD8xeKxLNyOlN0/KH+ojnN6HfuJYn1GFqywSPvgdAcHsHb1aLsjt4+5CFWIt7Ib+ VS0N2npPGqjmIFY3ljhtLaCx3l7ViqWGmh2y0hPzTaZbFhF3pMgvtnM+f7aj3vVZZg1y PPYFzHE1QTmhfrWuWwaPkWTvFeW/+uRkF9oNXNAJ2twMwfTSCeLM6OI2hdd3uqGJte5J K2HSc6H4n5xIAc8qpv3UA8PFb1o0eLGJca68C6Ql3S7P/a7AjcwrzrBdsRsPptNaB+xx HjWpTwNSM2yEVaoGiEJ/IxsyFgef7jUcDZpbZkmBJcGohqtADP8oEkYIp7MSNrCU/Fgw yzOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=s9dVuALTFlauBmGZ4NynOYU7n0mjXgChvaMKV7x2SIE=; b=h0zrI7teXsWmaftanBPGrm4/gTeM6WWXXn0Qcp6H1BDkgvUV7PpR0d3drKIq5dwWCC aj+F4RRU3nA8wBYJvKzHxElMdSTcH3verGletbJJYoHGmPgOkfdQ7Q0GqMNvrzfSyXhG 8zLcjYHnhlXME5oVyT6ZIV56EyN13TmKIEfm5AKN04o7rPbfK+MyBRqbMwkoa34oVtY2 DflBnnQmdyv8f904vQm3dnk1b3gdq/UT0q5MTGJiYplPBIiNbKuY6AgcfNJivPABhn8f QzfKdBjwcvdbIY+OKKHGicjUNTHcHgKgxRBbclICjO4VftcrNPhLkb9igCZj6M2WSM+l iUeQ== X-Gm-Message-State: AOPr4FUdU3Fzz0JZDE9es+5A9ThTtnOpxoiRNZvZGjC2hZyg5xlYMXF8PFoNPx7UOeZvzOeWTbT/HW51uJOilg== X-Received: by 10.25.18.102 with SMTP id h99mr11134065lfi.127.1462017566160; Sat, 30 Apr 2016 04:59:26 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Philipp Stephani Date: Sat, 30 Apr 2016 11:59:16 +0000 Message-ID: Content-Type: multipart/mixed; boundary=001a113fb2ecb1e15e0531b27d94 X-Spam-Score: -0.5 (/) 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: -0.5 (/) --001a113fb2ecb1e15e0531b27d94 Content-Type: multipart/alternative; boundary=001a113fb2ecb1e15a0531b27d92 --001a113fb2ecb1e15a0531b27d92 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Philipp Stephani schrieb am Do., 28. Apr. 2016 um 19:22 Uhr: > Philipp Stephani schrieb am Do., 28. Apr. 2016 um > 19:11 Uhr: > >> Philipp Stephani schrieb am Mi., 27. Apr. 2016 >> um 16:16 Uhr: >> >>> >>> emacs -Q >>> M-x electric-quote-mode >>> M-x customize-variable RET electric-quote-string, set it to t, save >>> M-x python-mode >>> Hit ' >>> >>> Expected: ' (ASCII apostrophe) is inserted because point is outside a >>> string >>> Actual: =E2=80=99 (Unicode quote) is inserted >>> >>> This seems to happen only in Python mode, not in e.g. emacs-lisp-mode. >>> >>> Also happens in C++ mode, and probably others. >> > > The root cause is that electric-quote-post-self-insert-function uses > syntax-ppss to check whether point is in a string or comment. Before it > makes any replacement, the ASCII apostrophe is still in the buffer, so > syntax-ppss considers point to be inside a string. It looks like calling > syntax-ppss with (forward-point -1) as argument instead of (point) should > fix it, but I'm not sure whether that's the right way. > I've attached a patch. --001a113fb2ecb1e15a0531b27d92 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

<= /div> --001a113fb2ecb1e15a0531b27d92-- --001a113fb2ecb1e15e0531b27d94 Content-Type: application/octet-stream; name="0001-Fix-insertion-of-Unicode-quotes-in-strings.patch" Content-Disposition: attachment; filename="0001-Fix-insertion-of-Unicode-quotes-in-strings.patch" Content-Transfer-Encoding: base64 Content-ID: <154670925515f3a48c61> X-Attachment-Id: 154670925515f3a48c61 RnJvbSBjZDdjMTcwNzljN2VmZGQwMGZhZGMwMWM2NjIyZGIzYmFhYjlkNDhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh dGU6IFNhdCwgMzAgQXByIDIwMTYgMTI6NDU6MjIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBGaXgg aW5zZXJ0aW9uIG9mIFVuaWNvZGUgcXVvdGVzIGluIHN0cmluZ3MuCgoqIGxpc3AvZWxlY3RyaWMu ZWwgKGVsZWN0cmljLXF1b3RlLXBvc3Qtc2VsZi1pbnNlcnQtZnVuY3Rpb24pOiBQYXJzZQp1bnRp bCBiZWZvcmUgcG9pbnQgdG8gZml4IEJ1ZyMyMzM4Ny4KKiB0ZXN0L2F1dG9tYXRlZC9lbGVjdHJp Yy10ZXN0cy5lbCAoZWxlY3RyaWMtcXVvdGUtc3RyaW5nKTogQWRkIHVuaXQKdGVzdCBmb3IgZWxl Y3RyaWMtcXVvdGUtc3RyaW5nLgotLS0KIGxpc3AvZWxlY3RyaWMuZWwgICAgICAgICAgICAgICAg IHwgNSArKysrLQogdGVzdC9hdXRvbWF0ZWQvZWxlY3RyaWMtdGVzdHMuZWwgfCA4ICsrKysrKysr CiAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9saXNwL2VsZWN0cmljLmVsIGIvbGlzcC9lbGVjdHJpYy5lbAppbmRleCBhYjc5OTQz Li43NGI0ZTkxIDEwMDY0NAotLS0gYS9saXNwL2VsZWN0cmljLmVsCisrKyBiL2xpc3AvZWxlY3Ry aWMuZWwKQEAgLTQ0NCw3ICs0NDQsMTAgQEAgZWxlY3RyaWMtcXVvdGUtcG9zdC1zZWxmLWluc2Vy dC1mdW5jdGlvbgogICAgIChsZXQgKChzdGFydAogICAgICAgICAgICAoaWYgKGFuZCBjb21tZW50 LXN0YXJ0IGNvbW1lbnQtdXNlLXN5bnRheCkKICAgICAgICAgICAgICAgICh3aGVuIChvciBlbGVj dHJpYy1xdW90ZS1jb21tZW50IGVsZWN0cmljLXF1b3RlLXN0cmluZykKLSAgICAgICAgICAgICAg ICAgKGxldCAoKHN5bnRheCAoc3ludGF4LXBwc3MpKSkKKyAgICAgICAgICAgICAgICAgOzsgSGVy ZSB0aGUgcXVvdGUgaGFzIGFscmVhZHkgYmVlbiBpbnNlcnRlZCwgc28gd2UKKyAgICAgICAgICAg ICAgICAgOzsgbWlnaHQgYmUgaW5zaWRlIGEgc3RyaW5nLiAgVGhlcmVmb3JlIHVzZSB0aGUKKyAg ICAgICAgICAgICAgICAgOzsgcG9zaXRpb24gYmVmb3JlIHBvaW50IGZvciBzeW50YWN0aWMgcGFy c2luZy4KKyAgICAgICAgICAgICAgICAgKGxldCAoKHN5bnRheCAoc2F2ZS1leGN1cnNpb24gKHN5 bnRheC1wcHNzICgxLSAocG9pbnQpKSkpKSkKICAgICAgICAgICAgICAgICAgICAoYW5kIChvciAo YW5kIGVsZWN0cmljLXF1b3RlLWNvbW1lbnQgKG50aCA0IHN5bnRheCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGFuZCBlbGVjdHJpYy1xdW90ZS1zdHJpbmcgKG50aCAzIHN5bnRheCkp KQogICAgICAgICAgICAgICAgICAgICAgICAgKG50aCA4IHN5bnRheCkpKSkKZGlmZiAtLWdpdCBh L3Rlc3QvYXV0b21hdGVkL2VsZWN0cmljLXRlc3RzLmVsIGIvdGVzdC9hdXRvbWF0ZWQvZWxlY3Ry aWMtdGVzdHMuZWwKaW5kZXggMTA3YjJlNy4uYWZkNzA3NiAxMDA2NDQKLS0tIGEvdGVzdC9hdXRv bWF0ZWQvZWxlY3RyaWMtdGVzdHMuZWwKKysrIGIvdGVzdC9hdXRvbWF0ZWQvZWxlY3RyaWMtdGVz dHMuZWwKQEAgLTU4NCw1ICs1ODQsMTMgQEAgYXV0b3dyYXBwaW5nLTcKICAgICAgICAgICAgICAg ICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICJcIiIpCiAgICAgICAgICAgICAgICAgICAobWFyay1z ZXhwIC0xKSkpCiAKKwwKKzs7OyBFbGVjdHJpYyBxdW90ZXMKKyhkZWZpbmUtZWxlY3RyaWMtcGFp ci10ZXN0IGVsZWN0cmljLXF1b3RlLXN0cmluZworICAiIiAiJyIgOmV4cGVjdGVkLXN0cmluZyAi JyIgOmV4cGVjdGVkLXBvaW50IDIKKyAgOmZpeHR1cmUtZm4gIydlbGVjdHJpYy1xdW90ZS1sb2Nh bC1tb2RlCisgIDpiaW5kaW5ncyAnKChlbGVjdHJpYy1xdW90ZS1zdHJpbmcgLiB0KSkKKyAgOnRl c3QtaW4tY29tbWVudHMgbmlsIDp0ZXN0LWluLXN0cmluZ3MgbmlsKQorCiAocHJvdmlkZSAnZWxl Y3RyaWMtdGVzdHMpCiA7OzsgZWxlY3RyaWMtdGVzdHMuZWwgZW5kcyBoZXJlCi0tIAoyLjguMQoK --001a113fb2ecb1e15e0531b27d94-- From unknown Sun Jun 22 11:43:17 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Philipp Stephani Subject: bug#23387: closed (Re: 25.0.93; Unicode quote inserted in Python mode outside of strings) Message-ID: References: X-Gnu-PR-Message: they-closed 23387 X-Gnu-PR-Package: emacs Reply-To: 23387@debbugs.gnu.org Date: Mon, 02 May 2016 16:05:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1462205102-23198-1" This is a multi-part message in MIME format... ------------=_1462205102-23198-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #23387: 25.0.93; Unicode quote inserted in Python mode outside of strings which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 23387@debbugs.gnu.org. --=20 23387: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D23387 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1462205102-23198-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 23387-done) by debbugs.gnu.org; 2 May 2016 16:04:27 +0000 Received: from localhost ([127.0.0.1]:34043 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1axGKg-00061O-PB for submit@debbugs.gnu.org; Mon, 02 May 2016 12:04:26 -0400 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:33968) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1axGKf-000619-8T for 23387-done@debbugs.gnu.org; Mon, 02 May 2016 12:04:25 -0400 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 573D31601AA; Mon, 2 May 2016 09:04:19 -0700 (PDT) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id jYqOuNj2TbGj; Mon, 2 May 2016 09:04:18 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id A54D116125B; Mon, 2 May 2016 09:04:18 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id wHW8MMD1xrwx; Mon, 2 May 2016 09:04:18 -0700 (PDT) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 84B411601AA; Mon, 2 May 2016 09:04:18 -0700 (PDT) To: Philipp Stephani From: Paul Eggert Subject: Re: 25.0.93; Unicode quote inserted in Python mode outside of strings Organization: UCLA Computer Science Department Message-ID: Date: Mon, 2 May 2016 09:04:18 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------C2A27BCC3D8E44BCD0F36A65" X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 23387-done Cc: 23387-done@debbugs.gnu.org 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.0 (-) This is a multi-part message in MIME format. --------------C2A27BCC3D8E44BCD0F36A65 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Thanks for the bug report and patch, but I ran into a problem with the=20 patch. Suppose I do this: emacs -Q M-x electric-quote-mode M-x customize-variable RET electric-quote-string, set it to t, save M-x python-mode 'abc' That is, I type apostrophe-a-b-c-apostrophe in Python mode. With the=20 patch, the buffer will contain: 'abc=E2=80=99 The opening apostrophe is OK, but the closing apostrophe is considered=20 to be inside a string so it is transmogrified into a right single=20 quotation mark. A Python programmer would want both to be apostrophes. I installed the attached patches into emacs-25 instead, as they should=20 address this problem too. Please give it a try. --------------C2A27BCC3D8E44BCD0F36A65 Content-Type: application/x-patch; name="0001-Don-t-electrically-quote-in-Python.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Don-t-electrically-quote-in-Python.patch" RnJvbSA2NjVmOGQyMjBjNWI2MWExMmVlNDM3N2YzOGY4N2NlMzMxNjliNjE4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBNb24sIDIgTWF5IDIwMTYgMDg6NTY6MDIgLTA3MDAKU3ViamVjdDogW1BBVENI IDEvMl0gPT9VVEYtOD9xP0Rvbj1FMj04MD05OXQ9MjBlbGVjdHJpY2FsbHk9MjBxdW90ZT0y MD89CiA9P1VURi04P3E/PUUyPTgwPTk4Jz1FMj04MD05OT0yMGluPTIwUHl0aG9uPz0KTUlN RS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClByb2JsZW0gcmVwb3J0ZWQgYnkg UGhpbGlwcCBTdGVwaGFuaSAoQnVnIzIzMzg3KS4KKiBsaXNwL2VsZWN0cmljLmVsIChlbGVj dHJpYy1xdW90ZS1wb3N0LXNlbGYtaW5zZXJ0LWZ1bmN0aW9uKToKRG8gbm90IHJlcXVvdGUg YSBzdHJpbmcgc3RhcnRlciBvciBlbmRlci4KLS0tCiBsaXNwL2VsZWN0cmljLmVsIHwgMTEg KysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9lbGVjdHJpYy5lbCBiL2xpc3AvZWxlY3RyaWMu ZWwKaW5kZXggYWI3OTk0My4uZTI4OTYwMSAxMDA2NDQKLS0tIGEvbGlzcC9lbGVjdHJpYy5l bAorKysgYi9saXNwL2VsZWN0cmljLmVsCkBAIC00NDQsMTAgKzQ0NCwxNSBAQCBlbGVjdHJp Yy1xdW90ZS1wb3N0LXNlbGYtaW5zZXJ0LWZ1bmN0aW9uCiAgICAgKGxldCAoKHN0YXJ0CiAg ICAgICAgICAgIChpZiAoYW5kIGNvbW1lbnQtc3RhcnQgY29tbWVudC11c2Utc3ludGF4KQog ICAgICAgICAgICAgICAgKHdoZW4gKG9yIGVsZWN0cmljLXF1b3RlLWNvbW1lbnQgZWxlY3Ry aWMtcXVvdGUtc3RyaW5nKQotICAgICAgICAgICAgICAgICAobGV0ICgoc3ludGF4IChzeW50 YXgtcHBzcykpKQotICAgICAgICAgICAgICAgICAgIChhbmQgKG9yIChhbmQgZWxlY3RyaWMt cXVvdGUtY29tbWVudCAobnRoIDQgc3ludGF4KSkKKyAgICAgICAgICAgICAgICAgKGxldCog KChzeW50YXggKHN5bnRheC1wcHNzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChiZWcg KG50aCA4IHN5bnRheCkpKQorICAgICAgICAgICAgICAgICAgIChhbmQgYmVnCisgICAgICAg ICAgICAgICAgICAgICAgICAob3IgKGFuZCBlbGVjdHJpYy1xdW90ZS1jb21tZW50IChudGgg NCBzeW50YXgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgZWxlY3RyaWMt cXVvdGUtc3RyaW5nIChudGggMyBzeW50YXgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAg IChudGggOCBzeW50YXgpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBEbyBub3Qg cmVxdW90ZSBhIHF1b3RlIHRoYXQgc3RhcnRzIG9yIGVuZHMKKyAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGEgY29tbWVudCBvciBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAg ICAoZXEgYmVnIChudGggOCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHN5bnRheC1wcHNzICgxLSAocG9pbnQpKSkpKSkpKSkK ICAgICAgICAgICAgICAoYW5kIGVsZWN0cmljLXF1b3RlLXBhcmFncmFwaAogICAgICAgICAg ICAgICAgICAgKGRlcml2ZWQtbW9kZS1wICd0ZXh0LW1vZGUpCiAgICAgICAgICAgICAgICAg ICAob3IgKGVxIGxhc3QtY29tbWFuZC1ldmVudCA/XGApCi0tIAoyLjUuNQoK --------------C2A27BCC3D8E44BCD0F36A65 Content-Type: application/x-patch; name="0002-Add-electric-quote-string-unit-test.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Add-electric-quote-string-unit-test.patch" RnJvbSAxMzRhYzkxMDUyYzE0MTkxMDE1MDcwMWU4NDc4MTBhNjlhODU1MThiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5j b20+CkRhdGU6IE1vbiwgMiBNYXkgMjAxNiAwODo1NzozMCAtMDcwMApTdWJqZWN0OiBbUEFU Q0ggMi8yXSBBZGQgZWxlY3RyaWMtcXVvdGUtc3RyaW5nIHVuaXQgdGVzdAoKKiB0ZXN0L2F1 dG9tYXRlZC9lbGVjdHJpYy10ZXN0cy5lbCAoZWxlY3RyaWMtcXVvdGUtc3RyaW5nKTogTmV3 IHRlc3QuCi0tLQogdGVzdC9hdXRvbWF0ZWQvZWxlY3RyaWMtdGVzdHMuZWwgfCA4ICsrKysr KysrCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvdGVz dC9hdXRvbWF0ZWQvZWxlY3RyaWMtdGVzdHMuZWwgYi90ZXN0L2F1dG9tYXRlZC9lbGVjdHJp Yy10ZXN0cy5lbAppbmRleCAxMDdiMmU3Li5hZmQ3MDc2IDEwMDY0NAotLS0gYS90ZXN0L2F1 dG9tYXRlZC9lbGVjdHJpYy10ZXN0cy5lbAorKysgYi90ZXN0L2F1dG9tYXRlZC9lbGVjdHJp Yy10ZXN0cy5lbApAQCAtNTg0LDUgKzU4NCwxMyBAQCBhdXRvd3JhcHBpbmctNwogICAgICAg ICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIlwiIikKICAgICAgICAgICAgICAg ICAgIChtYXJrLXNleHAgLTEpKSkKIAorDAorOzs7IEVsZWN0cmljIHF1b3RlcworKGRlZmlu ZS1lbGVjdHJpYy1wYWlyLXRlc3QgZWxlY3RyaWMtcXVvdGUtc3RyaW5nCisgICIiICInIiA6 ZXhwZWN0ZWQtc3RyaW5nICInIiA6ZXhwZWN0ZWQtcG9pbnQgMgorICA6Zml4dHVyZS1mbiAj J2VsZWN0cmljLXF1b3RlLWxvY2FsLW1vZGUKKyAgOmJpbmRpbmdzICcoKGVsZWN0cmljLXF1 b3RlLXN0cmluZyAuIHQpKQorICA6dGVzdC1pbi1jb21tZW50cyBuaWwgOnRlc3QtaW4tc3Ry aW5ncyBuaWwpCisKIChwcm92aWRlICdlbGVjdHJpYy10ZXN0cykKIDs7OyBlbGVjdHJpYy10 ZXN0cy5lbCBlbmRzIGhlcmUKLS0gCjIuNS41Cgo= --------------C2A27BCC3D8E44BCD0F36A65-- ------------=_1462205102-23198-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 27 Apr 2016 14:15:17 +0000 Received: from localhost ([127.0.0.1]:50154 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avQFI-0003Mw-KL for submit@debbugs.gnu.org; Wed, 27 Apr 2016 10:15:17 -0400 Received: from eggs.gnu.org ([208.118.235.92]:41146) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avQFH-0003Mh-0e for submit@debbugs.gnu.org; Wed, 27 Apr 2016 10:15:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1avQF5-0000X9-PN for submit@debbugs.gnu.org; Wed, 27 Apr 2016 10:15:09 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:38115) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1avQF5-0000X5-MF for submit@debbugs.gnu.org; Wed, 27 Apr 2016 10:15:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60345) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1avQF4-0005U5-9l for bug-gnu-emacs@gnu.org; Wed, 27 Apr 2016 10:15:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1avQF2-0000WI-T1 for bug-gnu-emacs@gnu.org; Wed, 27 Apr 2016 10:15:02 -0400 Received: from mail-wm0-x22b.google.com ([2a00:1450:400c:c09::22b]:38723) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1avQF2-0000Vg-GX for bug-gnu-emacs@gnu.org; Wed, 27 Apr 2016 10:15:00 -0400 Received: by mail-wm0-x22b.google.com with SMTP id u206so51624594wme.1 for ; Wed, 27 Apr 2016 07:15:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ViiOkfYEC+kKAPdJZiNHJ9tA4OMLZj/VS5ls4xkgkN8=; b=fjczUDJ7vTGaYeBTZxtpiUTXWOuDVTWwfRG2n/b+EOmn77NccqtsS5WZAJ9FX5UDOk jUzSZ17DXQqaMSGuSoWG3x/Cvm1b5cDNr/CAFtbqrLbwrtJl3UtS1M/k0XhRw/Wkj0T1 0PuINf4u1/DhwXOtKlY3yWM8Ui2U4FonXTUlxrvt6JeE0TJW4K2e1upbB52qdJ3zMF+e uHQVuC87m6J/Nng0A1IuuFulYtxliQ84vdYsPnBk6FFKt9JsAKhHo9BohKjgx0wqsRd8 572o7NYZPLL2n2UzIZZqQzut2yq4IcSR5mczyYV1gcmcRW/+W7dQABBLC4exUYUpliz1 aymw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ViiOkfYEC+kKAPdJZiNHJ9tA4OMLZj/VS5ls4xkgkN8=; b=KVpa+iJNHwHrYBTgnpSbRVFukJny3ipT8HiZ8sBV8I7bplslCK3elmCVbJAKs67Rtg Cfiald/y/7YMQIf4K/ko3TYUdLNscmqKadDGCyhxDIHMGA2HulfkGdQjYLQe4c3Owo1o kk9mOZWW1KJur4wB7XcgH15pBZXWHg1jR2rk638mi/fs2Fqg0p1ztBME7JA7p90x1ZNk vOxvmdWaeRIcK7Ccd1XegwMqJDMYc4gwR8TxtLCRtDcQ6fYvQr64qmz7GR7TWSxGlcfp 7dt1ZrTyMeZ/77Wo/cEF0mxl4sCJAlP+YhEUjCiCLh9xoifV8UaxYgWOAzzR+Odbr7aF Xsdw== X-Gm-Message-State: AOPr4FW/0LjglRyo160pkbz5y3FL64qmnVGr1rU4viq8Aco3/3JOKISP54TlpZRYIQ3ppw== X-Received: by 10.28.31.73 with SMTP id f70mr10835974wmf.77.1461766499530; Wed, 27 Apr 2016 07:14:59 -0700 (PDT) Received: from a.muc.corp.google.com ([2a00:79e0:15:4:453b:c3b3:e6f3:4183]) by smtp.gmail.com with ESMTPSA id w79sm29631036wme.19.2016.04.27.07.14.58 for (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 27 Apr 2016 07:14:58 -0700 (PDT) From: Philipp Stephani To: bug-gnu-emacs@gnu.org Subject: 25.0.93; Unicode quote inserted in Python mode outside of strings Date: Wed, 27 Apr 2016 16:14:57 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.8 (---) 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: -3.8 (---) emacs -Q M-x electric-quote-mode M-x customize-variable RET electric-quote-string, set it to t, save M-x python-mode Hit ' Expected: ' (ASCII apostrophe) is inserted because point is outside a string Actual: =E2=80=99 (Unicode quote) is inserted This seems to happen only in Python mode, not in e.g. emacs-lisp-mode. In GNU Emacs 25.0.93.5 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8) of 2016-04-24 built on localhost Repository revision: 0cd2e923dba8d8c7128b0c084ce6af22069e8db5 Windowing system distributor 'The X.Org Foundation', version 11.0.11501000 System Description: Ubuntu 14.04 LTS Configured using: 'configure --with-modules LDFLAGS=3D-Wl,-fuse-ld=3Dgold,--export-dynamic-symbol=3D__google_auxv' Configured features: XPM JPEG TIFF GIF PNG SOUND GSETTINGS NOTIFY FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Python Minor modes in effect: shell-dirtrack-mode: t tooltip-mode: t global-eldoc-mode: t electric-quote-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 font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent messages: Electric-Quote mode enabled Quit Creating customization items... Creating customization items ...done Resetting customization items...done Creating customization setup...done To install your edits, invoke [State] and choose the Set operation Source file =E2=80=98/usr/local/google/home/phst/ThirdParty/Emacs/lisp/prog= modes/python.el=E2=80=99 newer than byte-compiled file Can=E2=80=99t guess python-indent-offset, using defaults: 4 Source file =E2=80=98/usr/local/google/home/phst/ThirdParty/Emacs/lisp/dire= d.el=E2=80=99 newer than byte-compiled file Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message dired rfc822 mml mml-sec epg epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mail-utils python tramp-sh tramp tramp-compat auth-source cl-seq eieio eieio-core cl-macs gnus-util mm-util mail-prsvr password-cache tramp-loaddefs trampver ucs-normalize shell pcomplete format-spec advice json map seq byte-opt gv bytecomp byte-compile cl-extra cconv comint ring ansi-color cus-edit wid-edit thingatpt help-fns help-mode easymenu cl-loaddefs pcase cl-lib cus-start cus-load time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win term/common-win x-dnd 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 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 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 inotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 239874 9745) (symbols 48 24466 0) (miscs 40 400 230) (strings 32 29068 7264) (string-bytes 1 922223) (vectors 16 39237) (vector-slots 8 730263 4252) (floats 8 240 60) (intervals 56 261 0) (buffers 976 14) (heap 1024 32672 1237)) --=20 Google Germany GmbH Erika-Mann-Stra=C3=9Fe 33 80636 M=C3=BCnchen Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Gesch=C3=A4ftsf=C3=BChrer: Matthew Scott Sucherman, Paul Terence Manicle Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind, leiten Sie diese bitte nicht weiter, informieren Sie den Absender und l=C3= =B6schen Sie die E-Mail und alle Anh=C3=A4nge. Vielen Dank. This e-mail is confidential. If you are not the right addressee please do = not forward it, please inform the sender, and please erase this e-mail including any attachments. Thanks. ------------=_1462205102-23198-1-- From unknown Sun Jun 22 11:43:17 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23387: 25.0.93; Unicode quote inserted in Python mode outside of strings Resent-From: Philipp Stephani Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 03 May 2016 20:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23387 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 23387@debbugs.gnu.org, eggert@cs.ucla.edu Cc: 23387-done@debbugs.gnu.org Received: via spool by 23387-submit@debbugs.gnu.org id=B23387.146230828512085 (code B ref 23387); Tue, 03 May 2016 20:45:02 +0000 Received: (at 23387) by debbugs.gnu.org; 3 May 2016 20:44:45 +0000 Received: from localhost ([127.0.0.1]:35832 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1axhBV-00038n-4X for submit@debbugs.gnu.org; Tue, 03 May 2016 16:44:45 -0400 Received: from mail-lf0-f47.google.com ([209.85.215.47]:34968) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1axhBT-00038U-8f; Tue, 03 May 2016 16:44:43 -0400 Received: by mail-lf0-f47.google.com with SMTP id j8so36517687lfd.2; Tue, 03 May 2016 13:44:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=dOJtGPhXZGXG8i9zgKzFjTrrvknXARY7n0v600in8B0=; b=M7aXDUi2QfzjugHiGVjEcz47w369UqRyupXl1bAM7NJ2HeDfM5A8HRm4/+By2K8AL4 jKetpWqLf3etARilEAupbx7GBMngP6KGwiFmO3uQXt+JLc8ng0gJU7RBGO+lmYx4Hbyi M6gFFMK2L3knxpJUPL5eWSVpp1NBRyHqHdHkQAV4aE6PPk/NRAJHMpdN4hlNMCZ8TI+d yN2Y+Nms866nZ4Es8VTIu2g5BkTffM1cSMmg6jJgBL9BJVsIFKtEg4UlL/jfcCcl3JuI ouw6BgEyr8Y0ARrldsoFRf66Jpz0nZZgGO6c8q4Zbib6IGJMQwiuqZgnECo2nNx55mlu 4MyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=dOJtGPhXZGXG8i9zgKzFjTrrvknXARY7n0v600in8B0=; b=CkYQWL8iAtPo+umeKYep3x3ZCtsNcavuzuDK9DyQOPO66CvMBWfHY8ZqJRhYkKlv3J cgMn3rnAsTF+jKcnAQTki1BeH/Nh5L6l3ZpfvGMjeXHSkF4ogv0fXPdcpL1icQPUEc/g IQfIHy+O8j4f17N+2oV1q6uKfswppm4WMZV7fyg8Kq1gsV+v31imUsJEpfG2USzqJpzd Jxlhxg2HMSBX+6km4h3mkCTaQogPQwzw9oL3IXU4hUV2MqE/5jhAazp5YK/XJb5B9yjt tTSXfezrTAa2FHnN+lKod63tRG9LCN7ObdcOkAy/wBtPQL7j/BwTNbyHZpYFoOmSPojd lh1Q== X-Gm-Message-State: AOPr4FVCam+7BkQsGvvn2F5BidAT5TvyTAEI+Q76SQ+qgbkT5oyU/qLYn4HXJSBZlosuwAirTku/xg7mcOfGeg== X-Received: by 10.25.18.102 with SMTP id h99mr2223081lfi.127.1462308277409; Tue, 03 May 2016 13:44:37 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Philipp Stephani Date: Tue, 03 May 2016 20:44:27 +0000 Message-ID: Content-Type: multipart/alternative; boundary=001a113fb2ec6d5ccc0531f62dcb X-Spam-Score: -0.5 (/) 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: -0.5 (/) --001a113fb2ec6d5ccc0531f62dcb Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Paul Eggert schrieb am Mo., 2. Mai 2016 um 18:05 Uhr: > Thanks for the bug report and patch, but I ran into a problem with the > patch. Suppose I do this: > > emacs -Q > M-x electric-quote-mode > M-x customize-variable RET electric-quote-string, set it to t, save > M-x python-mode > 'abc' > > That is, I type apostrophe-a-b-c-apostrophe in Python mode. With the > patch, the buffer will contain: > > 'abc=E2=80=99 > > The opening apostrophe is OK, but the closing apostrophe is considered > to be inside a string so it is transmogrified into a right single > quotation mark. A Python programmer would want both to be apostrophes. > I'm not sure, I think if a user has electric-quote-string enabled, that's the behavior they want, because it's inside a string. However, I can see that both approaches are valid. There is probably no good way that would work in all circumstances. --001a113fb2ec6d5ccc0531f62dcb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


Paul E= ggert <eggert@cs.ucla.edu> = schrieb am Mo., 2. Mai 2016 um 18:05=C2=A0Uhr:
Thanks for the bug report and patch, but I ran into a problem= with the
patch. Suppose I do this:

emacs -Q
M-x electric-quote-mode
M-x customize-variable RET electric-quote-string, set it to t, save
M-x python-mode
'abc'

That is, I type apostrophe-a-b-c-apostrophe in Python mode. With the
patch, the buffer will contain:

'abc=E2=80=99

The opening apostrophe is OK, but the closing apostrophe is considered
to be inside a string so it is transmogrified into a right single
quotation mark. A Python programmer would want both to be apostrophes.
<= /blockquote>

I'm not sure, I think if a user has ele= ctric-quote-string enabled, that's the behavior they want, because it&#= 39;s inside a string. However, I can see that both approaches are valid. Th= ere is probably no good way that would work in all circumstances.
--001a113fb2ec6d5ccc0531f62dcb--