Subject: bug#61210: closed (Re: bug#61210: 28.2; Request to modify code which can accidentally overwrite AUCTeX function)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 06 Sep 2023 08:03:02 +0000

Your bug report

#61210: 28.2; Request to modify code which can accidentally overwrite AUCTeX function

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 [email-masked].

-- 
61210: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=61210
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#61210: 28.2; Request to modify code which can accidentally overwrite AUCTeX function
From: Stefan Kangas <[email-masked]>
To: Ikumi Keita <[email-masked]>
Cc: [email-masked], Stefan Monnier <[email-masked]>
Date: Wed, 6 Sep 2023 01:02:23 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Ikumi Keita <[email-masked]> writes:

> Hi Stefan,
>
>>>>>> Stefan Kangas <[email-masked]> writes:
>> From skimming this bug report, it seems like all the issues were
>> resolved here?  Or is there anything left to do?
>
> As a longer term goal, it would be ideal to remove the current autoloads
> in my opinion. However, if it is considered difficult to do so for some
> reason (e.g. keeping backward compatibility), I don't mind much.

I think it will be a breaking change unfortunately.  To do it safely,
we'd have to obsolete the relevant functions, and introduce new ones
that are not autoloaded.  Which I guess is not ideal here.

I'm closing this bug for now.  If you can think of anything else, please
reopen this bug or file a new one.

Thanks.

Subject: 28.2; Request to modify code which can accidentally overwrite AUCTeX function
From: Ikumi Keita <[email-masked]>
To: [email-masked]
Date: Wed, 01 Feb 2023 21:13:16 +0900
List-Id: <debbugs-submit.debbugs.gnu.org>

I'm working on arranging AUCTeX to reconcile built-in tex modes better.
One of the primary aim is to avoid clash of major mode name; for
example, to change `latex-mode' to `LaTeX-mode'. In the course of
reviewing the code, I realized the following problem.

If we do that in natural ways like
(define-derived-mode LaTeX-mode text-mode "LaTeX" ...)
or
(defun LaTeX-mode () ...)
, it could wreak havoc because tex-mode.el has these lines:
----------------------------------------------------------------------
;;;###autoload
(defalias 'TeX-mode #'tex-mode)
;;;###autoload
(defalias 'plain-TeX-mode #'plain-tex-mode)
;;;###autoload
(defalias 'LaTeX-mode #'latex-mode)
----------------------------------------------------------------------
These defalias'es overwrite the AUCTeX definition unconditionally if
tex-mode.el are loaded after AUCTeX. So AUCTeX has to do workarounds
like
----------------------------------------------------------------------
(define-derived-mode TeX-latex-mode text-mode "LaTeX"
  ...
  (setq major-mode 'LaTeX-mode)
  ...)
(defalias 'LaTeX-mode #'TeX-latex-mode)
----------------------------------------------------------------------
and advertise `LaTeX-mode' as its official name. (Additionally, we need
some gotchas so that directory local variable entry like
((LaTeX-mode
  (...)))
should work.)

Hence I'd like to request to modify the built-in tex-modes.el to delete
those lines, or at least to do fboundp test like
(unless (fboundp 'LaTeX-mode)
  (defalias 'LaTeX-mode #'latex-mode))
in, say, emacs-30.

If that is accepted, we can clean up the above workarounds in the
future, when the least emacs version supported by AUCTeX becomes 30.

Regards,
Ikumi Keita
#StandWithUkraine #StopWarInUkraine

In GNU Emacs 28.2 (build 1, x86_64-unknown-freebsd13.1, GTK+ Version 3.24.33, cairo version 1.17.4)
 of 2022-09-15 built on freebsd.vmware
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: 13.1-RELEASE-p5

Configured using:
 'configure --with-canna --with-canna-includes=/usr/local/canna/include
--with-canna-libraries=/usr/local/canna/lib --without-xim
--disable-largefile --without-modules --with-sound=yes
--with-file-notification=yes CFLAGS=-O3'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBXML2 NOTIFY KQUEUE PDUMPER PNG RSVG SOUND THREADS TIFF
TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM GTK3 ZLIB

Important settings:
  value of $EMACSLOADPATH: /home/keita/elisp:
  value of $LANG: ja_JP.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  shell-dirtrack-mode: t
  TeX-PDF-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-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
  indent-tabs-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/keita/.emacs.d/elpa/transient-20230124.2013/transient hides /usr/local/share/emacs/28.2/lisp/transient
~/elisp/reftex-parse hides /usr/local/share/emacs/28.2/lisp/textmodes/reftex-parse
/home/keita/.emacs.d/elpa/soap-client-3.2.1/soap-inspect hides /usr/local/share/emacs/28.2/lisp/net/soap-inspect
/home/keita/.emacs.d/elpa/soap-client-3.2.1/soap-client hides /usr/local/share/emacs/28.2/lisp/net/soap-client

Features:
(shadow emacsbug mh-thread supercite regi mh-identity mh-letter mh-comp
sendmail reftex-sel reftex-ref reftex-parse preview reftex-dcr
reftex-auc reftex reftex-loaddefs reftex-vars tex-bar toolbar-x noutline
outline tex-mode shell pcomplete font-latex tex-jp latex easy-mmode
latex-flymake flymake-proc flymake project compile comint ansi-color
ring warnings tex-ispell tex-style tex texmathp latexenc mh-search qp
mm-archive smiley mail-extr mh-mime mh-gnus mh-alias multi-prompt crm
mh-show goto-addr thingatpt gnus-cite gnus-art mm-uu mml2015 mm-view
mml-smime smime dig gnus-sum shr svg dom gnus-group gnus-undo gnus-start
gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo
gnus-spec gnus-int message dired dired-loaddefs rfc822 mml mml-sec
mm-decode mm-bodies mm-encode gmm-utils mailheader gnus-win gnus-range
gnus nnheader wid-edit mh-seq mh-inc hl-line mh-tool-bar mh-xface
mh-utils mh-folder which-func imenu gnus-util rmail rmail-loaddefs
mail-utils text-property-search mh-scan mh-e mh-compat mailabbrev
mh-buffers mh-loaddefs skeleton misearch multi-isearch conf-mode
mule-util kinsoku cl-extra help-mode parse-time iso8601 time-date
ucs-normalize epa derived epg rfc6068 epg-config url-http url-auth
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw
nsm rmc puny jka-compr twittering-mode advice xml edmacro kmacro
preview-latex tex-site canna-im 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
japan-util iso-transl tooltip eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode 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 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 emoji-zwj 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 kqueue lcms2
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 823574 92247)
 (symbols 48 23600 10)
 (strings 32 129178 21854)
 (string-bytes 1 5678353)
 (vectors 16 74334)
 (vector-slots 8 1690475 62672)
 (floats 8 431 886)
 (intervals 56 20117 6833)
 (buffers 992 34))