GNU bug report logs - #60351
29.0.60; bad syntanx table in c++-ts-mode

Previous Next

Package: emacs;

Reported by: yingchao.yang <at> seaboxdata.com

Date: Tue, 27 Dec 2022 08:49:02 UTC

Severity: normal

Found in version 29.0.60

Done: Yuan Fu <casouri <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 60351 in the body.
You can then email your comments to 60351 AT debbugs.gnu.org in the normal way.

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#60351; Package emacs. (Tue, 27 Dec 2022 08:49:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to yingchao.yang <at> seaboxdata.com:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 27 Dec 2022 08:49:02 GMT) Full text and rfc822 format available.

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

From: Yang Yingchao <yang.yingchao <at> qq.com>
To: bug-gnu-emacs <at> gnu.org
Cc: yingchao.yang <at> seaboxdata.com
Subject: 29.0.60; bad syntanx table in c++-ts-mode
Date: Tue, 27 Dec 2022 13:48:21 +0800
[Message part 1 (text/plain, inline)]
1. start emacs with emacs -Q

2. open a buffer, M-x c++-ts-mode, theninsert following codes:
int main(int argc, char *argv[])
{
    if (0) {
        a->func();
    }
    return 0;
}

3. move cursor to line 3, before the bracket
4. C-M-n (forward-list), and cursor will be placed at line 4, right after "->"

I think this might be an regression after commit 480f41c7deb4d3a45a862a5308950b35085f835d

Regargds


In GNU Emacs 29.0.60 (build 30, x86_64-pc-linux-gnu, GTK+ Version 3.24.35,
 cairo version 1.17.6) of 2022-12-27 built on tbook
Repository revision: 03d8fe28bc9ec4262fd0e7e763a6eae73838deb1
Repository branch: yc-hacking
System Description: Gentoo Linux

Configured using:
 'configure 'CFLAGS=-O2 -g -pipe -march=native -ggdb3' 'LDFLAGS=-Wl,-O2
 -Wl,--as-needed' --prefix=/usr --build=x86_64-pc-linux-gnu
 --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info
 --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib
 --datarootdir=/usr/share --disable-silent-rules
 --docdir=/usr/share/doc/emacs-29.0.9999-r1
 --htmldir=/usr/share/doc/emacs-29.0.9999-r1/html --libdir=/usr/lib64
 --program-suffix=-emacs-29-vcs --includedir=/usr/include/emacs-29-vcs
 --infodir=/usr/share/info/emacs-29-vcs --localstatedir=/var
 --enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp
 --without-compress-install --without-hesiod --without-pop
 --with-file-notification=inotify --with-pdumper --enable-acl --with-dbus
 --with-modules --without-gameuser --with-libgmp --without-gpm
 --with-native-compilation --with-json --without-kerberos --without-kerberos5
 --with-lcms2 --with-xml2 --without-mailutils --without-selinux --with-sqlite3
 --with-gnutls --with-libsystemd --with-threads --with-wide-int --with-zlib
 --with-sound=alsa --with-pgtk --without-x --without-ns
 --with-toolkit-scroll-bars --without-gconf --without-gsettings
 --with-harfbuzz --without-libotf --without-m17n-flt --without-xwidgets
 --with-gif --with-jpeg --with-png --with-rsvg --with-tiff --with-webp
 --with-imagemagick --with-dumping=pdumper build_alias=x86_64-pc-linux-gnu
 host_alias=x86_64-pc-linux-gnu
 PKG_CONFIG_PATH=/home/yyc/.local/lib/pkgconfig'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ IMAGEMAGICK JPEG JSON
LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK PNG
RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP
XIM GTK3 ZLIB

Important settings:
  value of $LANG: zh_CN.utf8
  value of $XMODIFIERS: @im=fcitx
  locale-coding-system: utf-8

Major mode: Helpful

Minor modes in effect:
  org-msg-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  shell-dirtrack-mode: t
  recentf-mode: t
  marginalia-mode: t
  projectile-mode: t
  super-save-mode: t
  ws-butler-global-mode: t
  ws-butler-mode: t
  dtrt-indent-global-mode: t
  which-key-mode: t
  global-so-long-mode: t
  gcmh-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  global-company-mode: t
  company-mode: t
  which-function-mode: t
  auto-image-file-mode: t
  global-atomic-chrome-edit-mode: t
  smartparens-global-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  server-mode: t
  savehist-mode: t
  vertico-mode: t
  override-global-mode: t
  straight-use-package-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-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
  buffer-read-only: t
  line-number-mode: t
  auto-fill-function: yas--auto-fill
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/yyc/.emacs.d/straight/build/cmake-mode/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/home/yyc/.emacs.d/straight/build/transient/transient hides /home/yyc/Work/emacs/lisp/transient
/home/yyc/.emacs.d/straight/build/eldoc/eldoc hides /home/yyc/Work/emacs/lisp/emacs-lisp/eldoc
/home/yyc/.emacs.d/straight/build/let-alist/let-alist hides /home/yyc/Work/emacs/lisp/emacs-lisp/let-alist

Features:
(shadow org-msg htmlize gnus-msg gnus-icalendar org-protocol org-capture
icalendar diary-lib diary-loaddefs gnus-dired gnus-cite mu4e mu4e-org
mu4e-main mu4e-view mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail
mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill
mu4e-contacts mu4e-update mu4e-folders mu4e-server mu4e-context mu4e-vars
mu4e-helpers mu4e-config ido cl-print consult-eww embark-org embark-consult
embark ygit consult-tramp-docker tramp-container request git-rebase
magit-extras vc vc-dispatcher goto-addr conf-mode emacsbug timezone helpful
cc-langs trace edebug debug backtrace info-look elisp-refs bug-reference
help-fns radix-tree ffap consult-utils tabify url-http url-gw url-cache
url-auth tdict vterm tramp tramp-loaddefs trampver tramp-integration cus-edit
cus-start cus-load files-x tramp-compat ls-lisp face-remap term ehelp
term/xterm xterm vterm-module pulse consult-xref smart-hungry-delete
consult-woman woman man lsp-headerline lsp-icons company-shell sh-script smie
misearch multi-isearch ace-window mule-util flycheck-popup-tip flycheck
lsp-diagnostics view lsp-zig lsp-steep lsp-svelte lsp-sqls
lsp-ruby-syntax-tree lsp-yaml lsp-xml lsp-vimscript lsp-vhdl lsp-volar
lsp-vetur lsp-html lsp-verilog lsp-vala lsp-v lsp-typeprof lsp-ttcn3 lsp-toml
lsp-terraform lsp-tex lsp-sorbet lsp-solargraph lsp-rust lsp-rf lsp-remark
lsp-racket lsp-r lsp-purescript lsp-pylsp lsp-pyls lsp-pwsh lsp-php lsp-pls
lsp-perlnavigator lsp-perl lsp-openscad lsp-ocaml lsp-magik lsp-nix lsp-nim
lsp-nginx lsp-mint lsp-marksman lsp-markdown lsp-lua lsp-kotlin lsp-json
lsp-javascript lsp-idris lsp-haxe lsp-groovy lsp-hack lsp-graphql lsp-gleam
lsp-go lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint
lsp-erlang lsp-emmet lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-d lsp-css
lsp-csharp lsp-crystal lsp-cmake lsp-clojure lsp-semantic-tokens lsp-beancount
lsp-bash lsp-astro lsp-ansible lsp-angular lsp-ada lsp-actionscript prog-utils
consult-imenu ycv gxref yc-filter-lines-mode semantic/util-modes semantic/util
semantic semantic/tag semantic/lex semantic/fw cedet srecode mode-local lsp
lsp-clangd highlight-parentheses emr-c c-utils lsp-mode lsp-protocol xref
spinner network-stream nsm smartparens-markdown markdown-mode edit-indirect
color lv inline ht ewoc smartparens-c cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs c-ts-mode treesit
magit-bookmark magit-submodule magit-obsolete 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
package url-handlers magit-repos magit-apply magit-wip magit-log magit-diff
smerge-mode diff-mode git-commit log-edit pcvs-util add-log magit-core
magit-autorevert autorevert magit-margin magit-transient magit-process
with-editor magit-mode transient magit-git magit-base magit-section crm
compat-27 compat-26 dired-aux orderless vertico-directory vertico-repeat
cursor-sensor consult-projectile hl-line flyspell ispell oc-basic ol-eww eww
mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015
mm-view mml-smime smime gnutls dig gnus-sum gnus-group gnus-undo gnus-start
gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time
gnus-spec gnus-int gnus-range gnus-win gnus nnheader range ol-docview doc-view
filenotify jka-compr image-mode exif ol-bibtex bibtex iso8601 ol-bbdb ol-w3m
ol-doi org-link-doi yc-utils executable rect async consult-vertico consult
compat-28 compat compat-macs f f-shortdoc shortdoc elfeed-org elfeed-show
elfeed-search autoinsert bookmark message sendmail yank-media dired
dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader shrface
org-superstar smartparens-org ob-sql ob-shell shell ob-gnuplot ob-plantuml
ob-dot ob-ditaa org-indent ox-plus ox-gfm ox-md ox-odt rng-loc rng-uri
rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc
xmltok nxml-util ox-latex ox-icalendar org-agenda ox-html table ox-ascii
ox-publish ox org-element org-persist xdg org-id org-refile org ob ob-tangle
ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
pcomplete org-list org-footnote org-faces org-entities noutline outline
ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core
org-keys oc org-loaddefs find-func cal-menu calendar cal-loaddefs org-version
org-compat org-macs format-spec shr pixel-fill kinsoku puny svg dom elfeed-csv
elfeed elfeed-curl elfeed-log elfeed-db elfeed-lib avl-tree generator
url-queue url-file browse-url url url-proxy url-privacy url-expand url-methods
url-history mailcap xml-query xml tb-dark-theme pp recentf tree-widget
wid-edit marginalia comp comp-cstr warnings icons projectile project lisp-mnt
grep compile text-property-search comint ansi-osc ansi-color ibuf-ext ibuffer
ibuffer-loaddefs super-save ws-butler dtrt-indent which-key so-long ace-link
avy ring gcmh yasnippet company-files company-capf company-yasnippet company
emr-others emr-iedit iedit iedit-lib emr-lsp time-date which-func imenu emr
popup image-file image-converter atomic-chrome websocket url-cookie
generate-lisp-file url-domsuf url-util url-parse auth-source eieio eieio-core
password-cache url-vars bindat let-alist json map s smartparens-config
smartparens-text smartparens byte-opt thingatpt undo-tree diff queue server
pinentry 99-priv 071-miscs-vcs gitlab-ci-mode-flycheck-autoloads
gitlab-ci-mode-autoloads magit-autoloads git-commit-autoloads 07-other-modes
po-mode-autoloads baidu-translate-autoloads names-autoloads advice
with-editor-autoloads pinentry-autoloads org-msg-autoloads docker-autoloads
transient-autoloads aio-autoloads rime-autoloads posframe-autoloads
elfeed-org-autoloads elfeed-autoloads htmlize-autoloads
atomic-chrome-autoloads websocket-autoloads ztree-autoloads xclip-autoloads
vimrc-mode-autoloads request-autoloads parse-csv-autoloads httpcode-autoloads
edit-indirect-autoloads dired-du-autoloads vterm-autoloads pdf-tools-autoloads
tablist-autoloads nov-autoloads esxml-autoloads kv-autoloads w3m-load
w3m-autoloads shrface-autoloads language-detection-autoloads
rfc-mode-autoloads highlight-symbol-autoloads highlight-parentheses-autoloads
06-org-mode org-roam-autoloads magit-section-autoloads
emacsql-sqlite-autoloads emacsql-autoloads org-superstar-autoloads
ox-reveal-autoloads org-download-autoloads flycheck-plantuml-autoloads
plantuml-mode-autoloads ox-gfm-autoloads 056-prog-others meson-mode-autoloads
groovy-mode-autoloads go-mode-autoloads lua-mode-autoloads rust-mode-autoloads
sql-indent-autoloads sqlup-mode-autoloads bison-mode-autoloads
yaml-mode-autoloads 055-prog-make cmake-mode-autoloads 054-prog-debug
realgud-autoloads realgud-recursive-autoloads test-simple-autoloads
loc-changes-autoloads load-relative-autoloads 053-prog-scripts
company-shell-autoloads py-autopep8-autoloads 052-prog-elisp 051-prog-c
clang-format-autoloads 05-prog-common consult-dash-autoloads
dash-docs-autoloads async-autoloads lsp-mode-autoloads eldoc-autoloads
lv-autoloads markdown-mode-autoloads spinner-autoloads ht-autoloads
gxref-autoloads iedit-autoloads flycheck-popup-tip-autoloads popup-autoloads
flycheck-autoloads let-alist-autoloads pkg-info-autoloads epl-autoloads
04-completion company-autoloads yasnippet-autoloads 03-fundamental-mode
gcmh-autoloads ace-link-autoloads ace-window-autoloads avy-autoloads
wgrep-autoloads which-key-autoloads undo-tree-autoloads queue-autoloads
dtrt-indent-autoloads ws-butler-autoloads super-save-autoloads ibuf-macs
helpful-autoloads elisp-refs-autoloads f-autoloads s-autoloads vlf-autoloads
smart-hungry-delete-autoloads smartparens-autoloads finder-inf
consult-projectile-autoloads projectile-autoloads embark-consult-autoloads
embark-autoloads marginalia-autoloads consult-autoloads compat-autoloads
savehist edmacro kmacro vertico vertico-autoloads orderless-autoloads
02-functions rx dash pcase 01-general disp-table dash-autoloads info cl-seq
use-package use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core straight-autoloads
cl-extra help-mode straight subr-x cl-macs gv cl-loaddefs cl-lib bytecomp
byte-compile site-gentoo early-init china-util rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode
mwheel term/pgtk-win pgtk-win term/common-win pgtk-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 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 dbusbind inotify dynamic-setting
font-render-setting cairo gtk pgtk lcms2 multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 1125016 337556)
 (symbols 48 64967 60)
 (strings 32 357037 105018)
 (string-bytes 1 12423127)
 (vectors 16 164456)
 (vector-slots 8 3605987 411457)
 (floats 8 6320 5703)
 (intervals 56 15656 7202)
 (buffers 984 53))
[Message part 2 (text/plain, inline)]
Hi **,


--
Yang Yingchao
Yang Yingchao
[Message part 3 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60351; Package emacs. (Wed, 28 Dec 2022 22:00:02 GMT) Full text and rfc822 format available.

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

From: Yuan Fu <casouri <at> gmail.com>
To: yang.yingchao <at> qq.com
Cc: 60351 <at> debbugs.gnu.org, yingchao.yang <at> seaboxdata.com
Subject: Re: bug#60351: 29.0.60; bad syntanx table in c++-ts-mode
Date: Wed, 28 Dec 2022 13:59:35 -0800
Yang Yingchao <yang.yingchao <at> qq.com> writes:

> 1. start emacs with emacs -Q
>
> 2. open a buffer, M-x c++-ts-mode, theninsert following codes:
> int main(int argc, char *argv[])
> {
>     if (0) {
>         a->func();
>     }
>     return 0;
> }
>
> 3. move cursor to line 3, before the bracket
> 4. C-M-n (forward-list), and cursor will be placed at line 4, right after "->"
>
> I think this might be an regression after commit 480f41c7deb4d3a45a862a5308950b35085f835d

Thanks for the report! < and > serves double duty in C++, so assigning
them paren syntax are indeed incorrect. c++-mode uses text properties to
assign different syntax based on context. I’ll copy that into
c++-ts-mode.

Yuan




Reply sent to Yuan Fu <casouri <at> gmail.com>:
You have taken responsibility. (Wed, 28 Dec 2022 23:59:02 GMT) Full text and rfc822 format available.

Notification sent to yingchao.yang <at> seaboxdata.com:
bug acknowledged by developer. (Wed, 28 Dec 2022 23:59:02 GMT) Full text and rfc822 format available.

Message #13 received at 60351-done <at> debbugs.gnu.org (full text, mbox):

From: Yuan Fu <casouri <at> gmail.com>
To: yang.yingchao <at> qq.com
Cc: 60351-done <at> debbugs.gnu.org, yingchao.yang <at> seaboxdata.com
Subject: Re: bug#60351: 29.0.60; bad syntanx table in c++-ts-mode
Date: Wed, 28 Dec 2022 15:57:51 -0800
Yuan Fu <casouri <at> gmail.com> writes:

> Yang Yingchao <yang.yingchao <at> qq.com> writes:
>
>> 1. start emacs with emacs -Q
>>
>> 2. open a buffer, M-x c++-ts-mode, theninsert following codes:
>> int main(int argc, char *argv[])
>> {
>>     if (0) {
>>         a->func();
>>     }
>>     return 0;
>> }
>>
>> 3. move cursor to line 3, before the bracket
>> 4. C-M-n (forward-list), and cursor will be placed at line 4, right after "->"
>>
>> I think this might be an regression after commit 480f41c7deb4d3a45a862a5308950b35085f835d
>
> Thanks for the report! < and > serves double duty in C++, so assigning
> them paren syntax are indeed incorrect. c++-mode uses text properties to
> assign different syntax based on context. I’ll copy that into
> c++-ts-mode.

Done :-)

Yuan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60351; Package emacs. (Thu, 29 Dec 2022 10:05:03 GMT) Full text and rfc822 format available.

Message #16 received at 60351-done <at> debbugs.gnu.org (full text, mbox):

From: Yang Yingchao <yang.yingchao <at> qq.com>
To: Yuan Fu <casouri <at> gmail.com>
Cc: 60351-done <at> debbugs.gnu.org
Subject: Re: bug#60351: 29.0.60; bad syntanx table in c++-ts-mode
Date: Thu, 29 Dec 2022 08:46:03 +0800
[Message part 1 (text/plain, inline)]
Verified, thank you!

:)

On Wed, Dec 28 2022, Yuan Fu <casouri <at> gmail.com> wrote:

> Yuan Fu <casouri <at> gmail.com> writes:
>
>> Yang Yingchao <yang.yingchao <at> qq.com> writes:
>>
>>> 1. start emacs with emacs -Q
>>>
>>> 2. open a buffer, M-x c++-ts-mode, theninsert following codes:
>>> int main(int argc, char *argv[])
>>> {
>>>     if (0) {
>>>         a->func();
>>>     }
>>>     return 0;
>>> }
>>>
>>> 3. move cursor to line 3, before the bracket
>>> 4. C-M-n (forward-list), and cursor will be placed at line 4, right after "->"
>>>
>>> I think this might be an regression after commit 480f41c7deb4d3a45a862a5308950b35085f835d
>>
>> Thanks for the report! < and > serves double duty in C++, so assigning
>> them paren syntax are indeed incorrect. c++-mode uses text properties to
>> assign different syntax based on context. I’ll copy that into
>> c++-ts-mode.
>
> Done :-)
>
> Yuan


-- 
Yang Yingchao
Yang Yingchao

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 26 Jan 2023 12:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 202 days ago.

Previous Next


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