Subject: bug#70435: closed (Re: bug#70435: 30.0.50; cc-mode: <> are sometimes not recognized as parentheses)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 05 May 2024 11:57:02 +0000

Your bug report

#70435: 30.0.50; cc-mode: <> are sometimes not reconized as parentheses

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].

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

Subject: Re: bug#70435: 30.0.50; cc-mode: <> are sometimes not recognized as parentheses
From: Alan Mackenzie <[email-masked]>
To: Herman, Géza <[email-masked]>
Cc: [email-masked], Eli Zaretskii <[email-masked]>, [email-masked]
Date: Sun, 5 May 2024 11:55:52 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello, Géza.

On Thu, May 02, 2024 at 21:58:33 +0200, Herman, Géza wrote:

> Hi Alan,

> Alan Mackenzie <[email-masked]> writes:

> > Any testing you can do on real code would also be appreciated. 
> > Please
> > confirm, again, that the bug is truly fixed, or tell me what 
> > still needs
> > to be fixed.  Thanks!

> I checked the new patch, and just like the previous patch, this 
> one works correctly as well.  Also, I used cc-mode for an hour for 
> editing C++ code, I haven't noticed anything strange so far. I'll 
> to keep using it and let you know if I find any bugs.

Many thanks again!  I've now committed the patch to the Emacs master
branch (and a few other places), and am closing the bug with this post.

> Thanks,
> Géza

-- 
Alan Mackenzie (Nuremberg, Germany).

Subject: 30.0.50; cc-mode: <> are sometimes not reconized as parentheses
From: Herman, Géza <[email-masked]>
To: [email-masked]
Date: Wed, 17 Apr 2024 12:47:25 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

This is a subtle bug.  In some cases, <> template delimiters are
not recognized as delimiters, but punctuation characters.

Repro:
- put the yasnippet file (included below) into
<emacs-config-dir>/snippets/c++-mode/something
- install yasnippet
- start emacs
- M-x c++-mode
- M-x yas-minor-mode
- load snippets with "M-x yas-reload-all"
- write "ig", then press TAB to "yas-expand" the snippet
- move the cursor on the opening "<", and execute "M-x describe-char"
- notice that it will say "syntax: . which means: punctuation"
- if you edit the buffer (like add a space somewhere), and execute
describe-char again, Emacs will say "syntax: > which means: open,
matches >", so the syntax class becomes correct.

A possible explanation for this is that yasnippet edits the buffer in a
way that cc-mode doesn't notices the edit, so it has no chance to put
the correct syntax info on the inserted characters.

This is the snippet file (a simple template declaration):

--8<---------------cut here---------------start------------->8---
# -*- mode: snippet -*-
# name: something
# key: ig
# --
template <${1:typename AAA}> struct Foo;
--8<---------------cut here---------------end--------------->8---

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, cairo version
 1.18.0) of 2024-04-12 built on okoska
Repository revision: b83d0d07bb316cd851517897a9d688d639441f90
Repository branch: my-modifications
Windowing system distributor 'The X.Org Foundation', version 11.0.12101008
System Description: Debian GNU/Linux trixie/sid

Configured using:
 'configure --with-native-compilation --without-compress-install
 --without-gconf --without-gsettings --without-dbus --with-small-ja-dic
 --with-json --with-xinput2 --with-x-toolkit=no --with-tree-sitter
 --with-cairo --with-cairo-xcb --disable-silent-rules
 'CFLAGS=-mtune=native -march=native -g3 -O3''

Configured features:
ACL CAIRO FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG LCMS2 LIBOTF
LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY
INOTIFY OLDXMENU PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM ZLIB

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

Major mode: Fundamental

Minor modes in effect:
  vertico-multiform-mode: t
  recentf-mode: t
  which-key-mode: t
  global-auto-revert-mode: t
  savehist-mode: t
  ws-butler-global-mode: t
  ws-butler-mode: t
  diff-hl-flydiff-mode: t
  global-diff-hl-mode: t
  clean-aindent-mode: t
  global-whitespace-mode: t
  marginalia-mode: t
  vertico-mode: t
  global-anzu-mode: t
  anzu-mode: t
  global-evil-matchit-mode: t
  evil-matchit-mode: t
  evil-snipe-override-mode: t
  evil-snipe-mode: t
  evil-snipe-override-local-mode: t
  evil-snipe-local-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  global-evil-visualstar-mode: t
  evil-visualstar-mode: t
  better-jumper-mode: t
  better-jumper-local-mode: t
  evil-leader-mode: t
  global-evil-leader-mode: t
  global-hl-todo-mode: t
  winum-mode: t
  hes-mode: t
  gcmh-mode: t
  global-page-break-lines-mode: t
  evil-mode: t
  evil-local-mode: t
  save-place-mode: t
  override-global-mode: t
  minibuffer-depth-indicate-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-history-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Load-path shadows:
/home/geza/.emacs.d/elpa/transient-20240226.2332/transient hides /usr/local/share/emacs/30.0.50/lisp/transient
~/.emacs.d/lisp/emacs-gdb/gdb-mi hides /usr/local/share/emacs/30.0.50/lisp/progmodes/gdb-mi

Features:
(shadow sort project mail-extr emacsbug message mailcap yank-media puny
evil-collection-dired dired-git-info peep-dired dired-narrow delsel
dired-filter f s dired-aux dired-x dired-subtree dired-hacks-utils
evil-collection-wdired wdired ls-lisp dired dired-loaddefs rfc822 mml
mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util
time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils help-fns radix-tree mule-util cursor-sensor
evil-collection-consult consult-dir vertico-multiform consult-compile
compile evil-collection-comint comint ansi-osc ansi-color recentf
tree-widget wid-edit shut-up consult bookmark text-property-search pp
face-remap drag-stuff which-key autorevert filenotify savehist bm
evil-collection-info info ws-butler diff-hl-flydiff diff diff-hl
log-view pcvs-util vc-dir ewoc vc vc-dispatcher diff-mode
clean-aindent-mode column-enforce-mode whitespace orderless marginalia
vertico anzu evil-matchit evil-matchit-evil-setup evil-matchit-sdk
semantic/lex semantic/fw eieio eieio-core mode-local find-func
evil-exchange evil-args evil-indent-plus evil-textobj-line
evil-textobj-entire evil-textobj-column evil-textobj-anyblock evil-snipe
evil-surround evil-mc evil-mc-command-execute evil-mc-command-record
evil-mc-cursor-make evil-mc-region evil-mc-cursor-state evil-mc-undo
evil-mc-vars evil-mc-known-commands evil-mc-common avy evil-visualstar
evil-collection-simple evil-collection-replace evil-collection annalist
better-jumper pcase cl-macs evil-leader hl-todo compat hl-line
transpose-frame winum dash ov highlight-escape-sequences gcmh
page-break-lines evil evil-integration evil-maps evil-commands reveal
evil-jumps evil-command-window evil-types evil-search evil-ex
evil-macros evil-repeat evil-states evil-core evil-common thingatpt rect
evil-vars ring edmacro kmacro byte-opt saveplace bind-key easy-mmode
advice mb-depth comp cl-seq comp-cstr cl-extra help-mode warnings icons
subr-x gv cl-loaddefs cl-lib comp-run bytecomp byte-compile comp-common
rx rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd touch-screen 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 nadvice seq simple cl-generic indonesian philippine
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 abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads inotify lcms2 dynamic-setting font-render-setting cairo xinput2
x multi-tty move-toolbar make-network-process native-compile emacs)

Memory information:
((conses 16 269016 316498) (symbols 48 23000 189) (strings 32 74049 29305) (string-bytes 1 3233199) (vectors 16 36374)
 (vector-slots 8 426217 134450) (floats 8 230 192) (intervals 56 2422 251) (buffers 992 12))