GNU bug report logs - #32076
24.5; Electric behavior of dollar sign using AUCTeX

Previous Next

Package: emacs;

Reported by: Patrick <patrick <at> math.utah.edu>

Date: Sat, 7 Jul 2018 00:09:02 UTC

Severity: normal

Merged with 40865

Found in versions 24.5, 26.3

To reply to this bug, email your comments to 32076 AT debbugs.gnu.org.

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

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


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#32076; Package emacs. (Sat, 07 Jul 2018 00:09:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Patrick <patrick <at> math.utah.edu>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 07 Jul 2018 00:09:02 GMT) Full text and rfc822 format available.

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

From: Patrick <patrick <at> math.utah.edu>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.5; Electric behavior of dollar sign using AUCTeX
Date: Fri, 06 Jul 2018 16:56:07 -0600
See the following StackExchange question:
<a href="https://emacs.stackexchange.com/questions/42278/electric-behavior-of-dollar-sign-using-auctex">https://emacs.stackexchange.com/questions/42278/electric-behavior-of-dollar-sign-using-auctex</a>
Reporting as suggested by Joao Tavora.



In GNU Emacs 24.5.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.22)
 of 2015-09-18 on grousecreek.math.utah.edu
Windowing system distributor `The X.Org Foundation', version 11.0.11905000
System Description:	CentOS Linux release 7.5.1804 (Core) 

Configured using:
 `configure --with-x-toolkit=gtk2 --with-xaw3d --without-gif
 'CFLAGS=-m64 -I${prefix}/include' 'CPPFLAGS=-m64 -I${prefix}/include'
 'LDFLAGS=-L${libdir} -Wl,-rpath,${libdir}''

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=none
  locale-coding-system: utf-8-unix

Major mode: LaTeX/MP

Minor modes in effect:
  text-scale-mode: t
  LaTeX-math-mode: t
  TeX-PDF-mode: t
  electric-pair-mode: t
  shell-dirtrack-mode: t
  tooltip-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:
Loading sendmail...done
Loading /usr/uumath/share/emacs/site-lisp/clsc.el (source)...done
Loading /usr/uumath/share/emacs/site-lisp/mono.el (source)...done
Loading isearch...done
For information about GNU Emacs and the GNU system, type C-h C-a.
test.tex has auto save data; consider M-x recover-this-file
Source file `/u/ma/patrick/.emacs.d/elpa/auctex-12.1.1/tex.el' newer than byte-compiled file
Applying style hooks...done
Sorting environment...done
Removing duplicates...done

Load-path shadows:
/u/ma/patrick/.emacs.d/elpa/auctex-12.1.1/latex hides /usr/uumath/share/emacs/site-lisp/latex
/u/ma/patrick/.emacs.d/elpa/auctex-12.1.1/tex-site hides /usr/uumath/share/emacs/site-lisp/tex-site
/u/ma/patrick/.emacs.d/elpa/auctex-12.1.1/lpath hides /usr/uumath/share/emacs/site-lisp/lpath
/u/ma/patrick/.emacs.d/elpa/auctex-12.1.1/tex-info hides /usr/uumath/share/emacs/site-lisp/auctex/tex-info
/u/ma/patrick/.emacs.d/elpa/auctex-12.1.1/latex hides /usr/uumath/share/emacs/site-lisp/auctex/latex
/u/ma/patrick/.emacs.d/elpa/auctex-12.1.1/multi-prompt hides /usr/uumath/share/emacs/site-lisp/auctex/multi-prompt
/u/ma/patrick/.emacs.d/elpa/auctex-12.1.1/tex hides /usr/uumath/share/emacs/site-lisp/auctex/tex
/u/ma/patrick/.emacs.d/elpa/auctex-12.1.1/tex-buf hides /usr/uumath/share/emacs/site-lisp/auctex/tex-buf
/usr/uumath/share/emacs/site-lisp/latexinfo hides /usr/uumath/share/emacs/site-lisp/auctex/style/latexinfo
/usr/uumath/share/emacs/site-lisp/make-regexp hides /usr/uumath/share/emacs/site-lisp/ess/lisp/make-regexp
/usr/uumath/share/emacs/site-lisp/tempo hides /usr/uumath/share/emacs/24.5/lisp/tempo
/usr/uumath/share/emacs/site-lisp/t-mouse hides /usr/uumath/share/emacs/24.5/lisp/t-mouse
/usr/uumath/share/emacs/site-lisp/format-spec hides /usr/uumath/share/emacs/24.5/lisp/format-spec
/usr/uumath/share/emacs/site-lisp/ruler-mode hides /usr/uumath/share/emacs/24.5/lisp/ruler-mode
/usr/uumath/share/emacs/site-lisp/reftex-ref hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex-ref
/usr/uumath/share/emacs/site-lisp/reftex-vars hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex-vars
/usr/uumath/share/emacs/site-lisp/reftex-index hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex-index
/usr/uumath/share/emacs/site-lisp/reftex-cite hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex-cite
/usr/uumath/share/emacs/site-lisp/reftex-parse hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex-parse
/usr/uumath/share/emacs/site-lisp/reftex hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex
/usr/uumath/share/emacs/site-lisp/reftex-sel hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex-sel
/usr/uumath/share/emacs/site-lisp/reftex-global hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex-global
/usr/uumath/share/emacs/site-lisp/reftex-auc hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex-auc
/usr/uumath/share/emacs/site-lisp/bibtex hides /usr/uumath/share/emacs/24.5/lisp/textmodes/bibtex
/usr/uumath/share/emacs/site-lisp/reftex-dcr hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex-dcr
/usr/uumath/share/emacs/site-lisp/reftex-toc hides /usr/uumath/share/emacs/24.5/lisp/textmodes/reftex-toc
/usr/uumath/share/emacs/site-lisp/cperl-mode hides /usr/uumath/share/emacs/24.5/lisp/progmodes/cperl-mode
/usr/uumath/share/emacs/site-lisp/xscheme hides /usr/uumath/share/emacs/24.5/lisp/progmodes/xscheme
/usr/uumath/share/emacs/site-lisp/tramp hides /usr/uumath/share/emacs/24.5/lisp/net/tramp
/usr/uumath/share/emacs/site-lisp/auctex/style/slovak hides /usr/uumath/share/emacs/24.5/lisp/language/slovak
/usr/uumath/share/emacs/site-lisp/auctex/style/czech hides /usr/uumath/share/emacs/24.5/lisp/language/czech
/usr/uumath/share/emacs/site-lisp/calc-units hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-units
/usr/uumath/share/emacs/site-lisp/calc-trail hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-trail
/usr/uumath/share/emacs/site-lisp/calc-frac hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-frac
/usr/uumath/share/emacs/site-lisp/calc-incom hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-incom
/usr/uumath/share/emacs/site-lisp/calc-undo hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-undo
/usr/uumath/share/emacs/site-lisp/calc-embed hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-embed
/usr/uumath/share/emacs/site-lisp/calc-forms hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-forms
/usr/uumath/share/emacs/site-lisp/calc-math hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-math
/usr/uumath/share/emacs/site-lisp/calc-vec hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-vec
/usr/uumath/share/emacs/site-lisp/calc-alg hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-alg
/usr/uumath/share/emacs/site-lisp/calc-help hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-help
/usr/uumath/share/emacs/site-lisp/calc-ext hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-ext
/usr/uumath/share/emacs/site-lisp/calc-prog hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-prog
/usr/uumath/share/emacs/site-lisp/calc-cplx hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-cplx
/usr/uumath/share/emacs/site-lisp/calc-macs hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-macs
/usr/uumath/share/emacs/site-lisp/calc-lang hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-lang
/usr/uumath/share/emacs/site-lisp/calc-keypd hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-keypd
/usr/uumath/share/emacs/site-lisp/calc-graph hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-graph
/usr/uumath/share/emacs/site-lisp/calc-arith hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-arith
/usr/uumath/share/emacs/site-lisp/calc-rules hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-rules
/usr/uumath/share/emacs/site-lisp/calc-yank hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-yank
/usr/uumath/share/emacs/site-lisp/calc-bin hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-bin
/usr/uumath/share/emacs/site-lisp/calc-store hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-store
/usr/uumath/share/emacs/site-lisp/calc-misc hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-misc
/usr/uumath/share/emacs/site-lisp/calc-sel hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-sel
/usr/uumath/share/emacs/site-lisp/calc-comb hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-comb
/usr/uumath/share/emacs/site-lisp/calc-map hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-map
/usr/uumath/share/emacs/site-lisp/calc-poly hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-poly
/usr/uumath/share/emacs/site-lisp/calc hides /usr/uumath/share/emacs/24.5/lisp/calc/calc
/usr/uumath/share/emacs/site-lisp/calc-mode hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-mode
/usr/uumath/share/emacs/site-lisp/calc-stat hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-stat
/usr/uumath/share/emacs/site-lisp/calc-fin hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-fin
/usr/uumath/share/emacs/site-lisp/calc-funcs hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-funcs
/usr/uumath/share/emacs/site-lisp/calc-aent hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-aent
/usr/uumath/share/emacs/site-lisp/calc-rewr hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-rewr
/usr/uumath/share/emacs/site-lisp/calc-stuff hides /usr/uumath/share/emacs/24.5/lisp/calc/calc-stuff
/usr/uumath/share/emacs/site-lisp/auctex/style/swedish hides /usr/uumath/share/emacs/24.5/lisp/obsolete/swedish

Features:
(shadow sort gnus-util mail-extr emacsbug message idna cl-macs
format-spec cl rfc822 mml mml-sec mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader face-remap preview
prv-emacs tex-bar tex-buf toolbar-x noutline outline font-latex byte-opt
bytecomp byte-compile cl-extra cconv latex easy-mmode tex-ispell
tex-style tex dbus xml crm advice tex-mode compile latexenc info
easymenu tex-site package epg-config pcase gv edmacro kmacro cl-loaddefs
cl-lib elec-pair clsc sendmail dabbrev shell pcomplete comint ansi-color
ring rmail rfc2047 rfc2045 ietf-drums mm-util help-fns mail-prsvr
mail-utils time-date tooltip electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt
fringe tabulated-list newcomment lisp-mode prog-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core frame cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer 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 make-network-process dbusbind
gfilenotify dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 16 169984 6039)
 (symbols 48 25836 0)
 (miscs 40 41 131)
 (strings 32 35829 4905)
 (string-bytes 1 1000492)
 (vectors 16 18029)
 (vector-slots 8 484696 4968)
 (floats 8 119 346)
 (intervals 56 459 4)
 (buffers 960 12)
 (heap 1024 41117 1332))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32076; Package emacs. (Sun, 08 Jul 2018 14:38:04 GMT) Full text and rfc822 format available.

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

From: João Távora <joaotavora <at> gmail.com>
To: Patrick <patrick <at> math.utah.edu>
Cc: 32076 <at> debbugs.gnu.org
Subject: Re: bug#32076: 24.5; Electric behavior of dollar sign using AUCTeX
Date: Sun, 08 Jul 2018 15:37:01 +0100
Patrick <patrick <at> math.utah.edu> writes:

> See the following StackExchange question: <a
> href="https://emacs.stackexchange.com/questions/42278/electric-behavior-of-dollar-sign-using-auctex">https://emacs.stackexchange.com/questions/42278/electric-behavior-of-dollar-sign-using-auctex</a>
> Reporting as suggested by Joao Tavora.

Thanks Patrick,

In general we want the bug descriptions Emacs bug tracker to be as
self-contained as possible.  So here's the simple way to reproduce this:

    emacs -Q
    M-x tex-mode
    M-x electric-pair-mode
    type $, two dollars correctly appear and point is in the middle
    type something
    type $, again.  Two dollars appear again instead of skipping over
    the dollar.

The reason for this is that `electric-pair-skip-if-helps-balance'
doesn't recognize the $ (paired-delimiter) syntax.  It's easy to open a
door for this in elec-pair.el (see attached partial patch), but Emacs'
built-in tex-mode doesn't have anything to plug into the new
electric-pair-between-paired-delimiters-function var (or does it?)

AUCTeX, on the other hand, has `texmathp' which seems to do nicely.
Should we lift this function into Emacs, or use some other, perhaps more
generic, technique of discovering wether point is between two $$?

João

diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el
index 7df7098295..3040a5be6d 100644
--- a/lisp/elec-pair.el
+++ b/lisp/elec-pair.el
@@ -428,6 +428,9 @@ electric-pair-inhibit-if-helps-balance
                   (electric-pair--unbalanced-strings-p char))))
        (insert-char char)))))
 
+(defvar electric-pair-between-paired-delimiters-function #'ignore
+  "Function returning non-nil if point between paired delimiters.")
+
 (defun electric-pair-skip-if-helps-balance (char)
   "Return non-nil if skipping CHAR would benefit parentheses' balance.
 
@@ -451,7 +454,9 @@ electric-pair-skip-if-helps-balance
                            ((car innermost)
                             (not (eq (cdr outermost) pair)))))))
                  ((eq syntax ?\")
-                  (electric-pair--inside-string-p char))))
+                  (electric-pair--inside-string-p char))
+                 ((eq syntax ?\$)
+                  (funcall electric-pair-between-paired-delimiters-function))))
        (insert-char char)))))
 
 (defun electric-pair-default-skip-self (char)





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32076; Package emacs. (Tue, 10 Jul 2018 05:47:01 GMT) Full text and rfc822 format available.

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

From: Patrick Graf <pgraf39 <at> gmail.com>
To: João Távora <joaotavora <at> gmail.com>, 
 32076 <at> debbugs.gnu.org
Subject: Re: bug#32076: 24.5; Electric behavior of dollar sign using AUCTeX
Date: Tue, 10 Jul 2018 07:32:34 +0200
[Message part 1 (text/plain, inline)]
Hi João,
sorry for not being self-contained. This was my first GNU bug report ;-)
Concerning the fix, I tried texmathp today and indeed it works fine. I have
in mind something like the following snippet (to be run whenever $ is hit):

  (interactive)
  (if (texmathp)
    (if (looking-at-p "[$]")
      (forward-char 1)
      (insert "$"))
    (insert "$$")
    (backward-char 1)))

This also takes care of the issue that when I delete the closing $ by
hitting backspace and then type $ again, a new pair used to be inserted.
A minor drawback is that this only works for $...$ specifically and it
requires AUCTeX, which not everybody may be using. But $...$ is good enough
for me and if I understand you correctly, one could include texmathp.el in
the Emacs source.
Cheers,
Patrick
[Message part 2 (text/html, inline)]

Forcibly Merged 32076 40865. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Thu, 24 Jun 2021 16:35:02 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 353 days ago.

Previous Next


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