unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#69293: 30.0.50; cc-mode doesn't support "if consteval"
@ 2024-02-20 20:21 Herman, Géza
  2024-02-22 13:18 ` Eli Zaretskii
  2024-03-22 13:34 ` Alan Mackenzie
  0 siblings, 2 replies; 6+ messages in thread
From: Herman, Géza @ 2024-02-20 20:21 UTC (permalink / raw)
  To: 69293


C++ has a new feature, "if consteval". So one can write code like

if consteval {
    // do something
} else {
    // do something else
}

The problem is that cc-mode doesn't recognize this construct, lines
are not indented correctly: the "// do something" and the "} else {"
receive an additional level of indentation.


In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, cairo version
 1.18.0) of 2023-11-29 built on okoska
Repository revision: 47837b3863deba274f16960f1ee9fde4acb9d5a1
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 JSON 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:
  magit-todos-mode: t
  git-identity-magit-mode: t
  global-git-commit-mode: t
  vertico-multiform-mode: t
  recentf-mode: t
  which-key-mode: t
  global-auto-revert-mode: t
  global-undo-tree-mode: t
  undo-tree-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
  projectile-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
  indent-tabs-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-20240201.1100/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 mail-extr evil-collection-magit evil-collection-forge
forge-list forge-commands forge-semi forge-bitbucket buck forge-gogs
gogs forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy
gsexp ghub url-http url-gw nsm url-auth let-alist gnutls forge-notify
forge-revnote forge-pullreq forge-issue forge-topic yaml parse-time
iso8601 bug-reference forge-post markdown-mode edit-indirect color
noutline outline forge-repo forge forge-core forge-db closql
emacsql-sqlite-common emacsql emacsql-compiler eieio-base magit-todos
pcre2el rxt re-builder async magit-tbdiff git-identity vdiff-magit
magit-ediff ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help
ediff-init ediff-util vdiff magit-bookmark magit-autoloads
magit-submodule 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 browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie generate-lisp-file url-domsuf url-util
url-handlers url-parse auth-source json map url-vars magit-repos
magit-apply magit-wip magit-log which-func imenu magit-diff hydra lv
smerge-mode git-commit log-edit add-log magit-core magit-autorevert
magit-margin magit-transient magit-process with-editor shell pcomplete
server magit-mode transient magit-git magit-base magit-section
format-spec crm 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 mule-util cursor-sensor evil-collection-consult
consult-dir vertico-multiform consult-compile recentf tree-widget
wid-edit shut-up consult bookmark pp face-remap drag-stuff which-key
autorevert filenotify undo-tree queue 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 projectile project lisp-mnt evil-collection-wgrep wgrep
evil-collection-grep grep compile text-property-search
evil-collection-comint comint ansi-osc ansi-color ibuf-ext ibuffer
ibuffer-loaddefs 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 bytecomp byte-compile comp-run comp-common
rx jka-compr 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 618221 566082) (symbols 48 34440 269)
 (strings 32 284048 52426) (string-bytes 1 13838690)
 (vectors 16 75118) (vector-slots 8 1319006 1056891)
 (floats 8 400 2175) (intervals 56 912 295) (buffers 992 12))





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#69293: 30.0.50; cc-mode doesn't support "if consteval"
  2024-02-20 20:21 bug#69293: 30.0.50; cc-mode doesn't support "if consteval" Herman, Géza
@ 2024-02-22 13:18 ` Eli Zaretskii
  2024-02-25 16:52   ` Alan Mackenzie
  2024-03-22 13:34 ` Alan Mackenzie
  1 sibling, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2024-02-22 13:18 UTC (permalink / raw)
  To: Herman, Géza, Alan Mackenzie; +Cc: 69293

> From: Herman@debbugs.gnu.org, Géza <geza.herman@gmail.com>
> Date: Tue, 20 Feb 2024 21:21:27 +0100
> 
> 
> C++ has a new feature, "if consteval". So one can write code like
> 
> if consteval {
>     // do something
> } else {
>     // do something else
> }
> 
> The problem is that cc-mode doesn't recognize this construct, lines
> are not indented correctly: the "// do something" and the "} else {"
> receive an additional level of indentation.

Alan, could you please look into this?





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#69293: 30.0.50; cc-mode doesn't support "if consteval"
  2024-02-22 13:18 ` Eli Zaretskii
@ 2024-02-25 16:52   ` Alan Mackenzie
  0 siblings, 0 replies; 6+ messages in thread
From: Alan Mackenzie @ 2024-02-25 16:52 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 69293, Géza, Herman

Hello, Eli.

On Thu, Feb 22, 2024 at 15:18:28 +0200, Eli Zaretskii wrote:
> > From: Herman@debbugs.gnu.org, Géza <geza.herman@gmail.com>
> > Date: Tue, 20 Feb 2024 21:21:27 +0100


> > C++ has a new feature, "if consteval". So one can write code like

> > if consteval {
> >     // do something
> > } else {
> >     // do something else
> > }

> > The problem is that cc-mode doesn't recognize this construct, lines
> > are not indented correctly: the "// do something" and the "} else {"
> > receive an additional level of indentation.

> Alan, could you please look into this?

Yes, I will.  Thanks for the forwarding!

-- 
Alan Mackenzie (Nuremberg, Germany).





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#69293: 30.0.50; cc-mode doesn't support "if consteval"
  2024-02-20 20:21 bug#69293: 30.0.50; cc-mode doesn't support "if consteval" Herman, Géza
  2024-02-22 13:18 ` Eli Zaretskii
@ 2024-03-22 13:34 ` Alan Mackenzie
  2024-03-25  9:37   ` Herman, Géza
  1 sibling, 1 reply; 6+ messages in thread
From: Alan Mackenzie @ 2024-03-22 13:34 UTC (permalink / raw)
  To: Herman, Géza; +Cc: acm, 69293

Hello, Géza.

Sorry it's taken a long time to respond.  I've been unwell.

On Tue, Feb 20, 2024 at 21:21:27 +0100, Herman wrote:

> C++ has a new feature, "if consteval". So one can write code like

> if consteval {
>     // do something
> } else {
>     // do something else
> }

Yes, indeed.  Maybe I'm the only person to think so, but I think it's a
horrible distortion of C syntax.  Anyway ...

> The problem is that cc-mode doesn't recognize this construct, lines
> are not indented correctly: the "// do something" and the "} else {"
> receive an additional level of indentation.

Would you please try out the patch below on your Emacs, then byte
compile CC Mode in its entirety (there are new macros) then load it into
a running Emacs (or restart Emacs).  cc-mode is in .../lisp/progmodes.

Then please let me know how well it fixes the bug.  Thanks!

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

[ .... ]



diff -r 779141971296 cc-engine.el
--- a/cc-engine.el	Sun Dec 31 10:45:58 2023 +0000
+++ b/cc-engine.el	Fri Mar 22 12:54:39 2024 +0000
@@ -12365,13 +12365,21 @@
 	     (zerop (c-backward-token-2 1 t lim))
 	   t)
 	 (or (looking-at c-block-stmt-1-key)
-	     (and (eq (char-after) ?\()
-		  (zerop (c-backward-token-2 1 t lim))
-		  (if (looking-at c-block-stmt-hangon-key)
-		      (zerop (c-backward-token-2 1 t lim))
-		    t)
-		  (or (looking-at c-block-stmt-2-key)
-		      (looking-at c-block-stmt-1-2-key))))
+	     (or
+	      (and
+	       (eq (char-after) ?\()
+	       (zerop (c-backward-token-2 1 t lim))
+	       (if (looking-at c-block-stmt-hangon-key)
+		   (zerop (c-backward-token-2 1 t lim))
+		 t)
+	       (or (looking-at c-block-stmt-2-key)
+		   (looking-at c-block-stmt-1-2-key)))
+	      (and (looking-at c-paren-clause-key)
+		   (zerop (c-backward-token-2 1 t lim))
+		   (if (looking-at c-negation-op-re)
+		       (zerop (c-backward-token-2 1 t lim))
+		     t)
+		   (looking-at c-block-stmt-with-key))))
 	 (point))))
 
 (defun c-after-special-operator-id (&optional lim)
diff -r 779141971296 cc-langs.el
--- a/cc-langs.el	Sun Dec 31 10:45:58 2023 +0000
+++ b/cc-langs.el	Fri Mar 22 12:54:39 2024 +0000
@@ -1583,6 +1583,12 @@
 (c-lang-defvar c-assignment-op-regexp
   (c-lang-const c-assignment-op-regexp))
 
+(c-lang-defconst c-negation-op-re
+  ;; Regexp matching the negation operator.
+  t "!\\([^=]\\|$\\)")
+
+(c-lang-defvar c-negation-op-re (c-lang-const c-negation-op-re))
+
 (c-lang-defconst c-arithmetic-operators
   "List of all arithmetic operators, including \"+=\", etc."
   ;; Note: in the following, there are too many operators for AWK and IDL.
@@ -3149,6 +3155,30 @@
 		  (c-lang-const c-block-stmt-2-kwds)))))
 (c-lang-defvar c-opt-block-stmt-key (c-lang-const c-opt-block-stmt-key))
 
+(c-lang-defconst c-paren-clause-kwds
+  "Keywords which can stand in the place of paren sexps in conditionals.
+This applies only to conditionals in `c-block-stmt-with-kwds'."
+  t nil
+  c++ '("consteval"))
+
+(c-lang-defconst c-paren-clause-key
+  ;; Regexp matching a keyword in `c-paren-clause-kwds'.
+  t (c-make-keywords-re t
+      (c-lang-const c-paren-clause-kwds)))
+(c-lang-defvar c-paren-clause-key (c-lang-const c-paren-clause-key))
+
+(c-lang-defconst c-block-stmt-with-kwds
+  "Statement keywords which can be followed by a keyword instead of a parens.
+Such a keyword is a member of `c-paren-clause-kwds."
+  t nil
+  c++ '("if"))
+
+(c-lang-defconst c-block-stmt-with-key
+  ;; Regexp matching a keyword in `c-block-stmt-with-kwds'.
+  t (c-make-keywords-re t
+      (c-lang-const c-block-stmt-with-kwds)))
+(c-lang-defvar c-block-stmt-with-key (c-lang-const c-block-stmt-with-key))
+
 (c-lang-defconst c-simple-stmt-kwds
   "Statement keywords followed by an expression or nothing."
   t    '("break" "continue" "goto" "return")


-- 
Alan Mackenzie (Nuremberg, Germany).





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#69293: 30.0.50; cc-mode doesn't support "if consteval"
  2024-03-22 13:34 ` Alan Mackenzie
@ 2024-03-25  9:37   ` Herman, Géza
  2024-03-26 21:12     ` Alan Mackenzie
  0 siblings, 1 reply; 6+ messages in thread
From: Herman, Géza @ 2024-03-25  9:37 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: 69293

Hi Alan,

I agree, "if consteval" looks weird indeed.

With your patch, "if consteval" indents correctly.  I used cc-mode 
with your patch for a day, haven't noticed any newly introduced 
bugs.

Thank you, and get better!
Géza


Alan Mackenzie <acm@muc.de> writes:

> Hello, Géza.
>
> Sorry it's taken a long time to respond.  I've been unwell.
>
> On Tue, Feb 20, 2024 at 21:21:27 +0100, Herman wrote:
>
>> C++ has a new feature, "if consteval". So one can write code 
>> like
>
>> if consteval {
>>     // do something
>> } else {
>>     // do something else
>> }
>
> Yes, indeed.  Maybe I'm the only person to think so, but I think 
> it's a
> horrible distortion of C syntax.  Anyway ...
>
>> The problem is that cc-mode doesn't recognize this construct, 
>> lines
>> are not indented correctly: the "// do something" and the "} 
>> else {"
>> receive an additional level of indentation.
>
> Would you please try out the patch below on your Emacs, then 
> byte
> compile CC Mode in its entirety (there are new macros) then load 
> it into
> a running Emacs (or restart Emacs).  cc-mode is in 
> .../lisp/progmodes.
>
> Then please let me know how well it fixes the bug.  Thanks!
>
>> In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, cairo 
>> version
>>  1.18.0) of 2023-11-29 built on okoska
>> Repository revision: 47837b3863deba274f16960f1ee9fde4acb9d5a1
>> Repository branch: my-modifications
>> Windowing system distributor 'The X.Org Foundation', version 
>> 11.0.12101008
>> System Description: Debian GNU/Linux trixie/sid
>
> [ .... ]
>
>
>
> diff -r 779141971296 cc-engine.el
> --- a/cc-engine.el	Sun Dec 31 10:45:58 2023 +0000
> +++ b/cc-engine.el	Fri Mar 22 12:54:39 2024 +0000
> @@ -12365,13 +12365,21 @@
>  	     (zerop (c-backward-token-2 1 t lim))
>  	   t)
>  	 (or (looking-at c-block-stmt-1-key)
> -	     (and (eq (char-after) ?\()
> -		  (zerop (c-backward-token-2 1 t lim))
> -		  (if (looking-at c-block-stmt-hangon-key)
> -		      (zerop (c-backward-token-2 1 t lim))
> -		    t)
> -		  (or (looking-at c-block-stmt-2-key)
> -		      (looking-at c-block-stmt-1-2-key))))
> +	     (or
> +	      (and
> +	       (eq (char-after) ?\()
> +	       (zerop (c-backward-token-2 1 t lim))
> +	       (if (looking-at c-block-stmt-hangon-key)
> +		   (zerop (c-backward-token-2 1 t lim))
> +		 t)
> +	       (or (looking-at c-block-stmt-2-key)
> +		   (looking-at c-block-stmt-1-2-key)))
> +	      (and (looking-at c-paren-clause-key)
> +		   (zerop (c-backward-token-2 1 t lim))
> +		   (if (looking-at c-negation-op-re)
> +		       (zerop (c-backward-token-2 1 t lim))
> +		     t)
> +		   (looking-at c-block-stmt-with-key))))
>  	 (point))))
>
>  (defun c-after-special-operator-id (&optional lim)
> diff -r 779141971296 cc-langs.el
> --- a/cc-langs.el	Sun Dec 31 10:45:58 2023 +0000
> +++ b/cc-langs.el	Fri Mar 22 12:54:39 2024 +0000
> @@ -1583,6 +1583,12 @@
>  (c-lang-defvar c-assignment-op-regexp
>    (c-lang-const c-assignment-op-regexp))
>
> +(c-lang-defconst c-negation-op-re
> +  ;; Regexp matching the negation operator.
> +  t "!\\([^=]\\|$\\)")
> +
> +(c-lang-defvar c-negation-op-re (c-lang-const 
> c-negation-op-re))
> +
>  (c-lang-defconst c-arithmetic-operators
>    "List of all arithmetic operators, including \"+=\", etc."
>    ;; Note: in the following, there are too many operators for 
>    AWK and IDL.
> @@ -3149,6 +3155,30 @@
>  		  (c-lang-const c-block-stmt-2-kwds)))))
>  (c-lang-defvar c-opt-block-stmt-key (c-lang-const 
>  c-opt-block-stmt-key))
>
> +(c-lang-defconst c-paren-clause-kwds
> +  "Keywords which can stand in the place of paren sexps in 
> conditionals.
> +This applies only to conditionals in `c-block-stmt-with-kwds'."
> +  t nil
> +  c++ '("consteval"))
> +
> +(c-lang-defconst c-paren-clause-key
> +  ;; Regexp matching a keyword in `c-paren-clause-kwds'.
> +  t (c-make-keywords-re t
> +      (c-lang-const c-paren-clause-kwds)))
> +(c-lang-defvar c-paren-clause-key (c-lang-const 
> c-paren-clause-key))
> +
> +(c-lang-defconst c-block-stmt-with-kwds
> +  "Statement keywords which can be followed by a keyword 
> instead of a parens.
> +Such a keyword is a member of `c-paren-clause-kwds."
> +  t nil
> +  c++ '("if"))
> +
> +(c-lang-defconst c-block-stmt-with-key
> +  ;; Regexp matching a keyword in `c-block-stmt-with-kwds'.
> +  t (c-make-keywords-re t
> +      (c-lang-const c-block-stmt-with-kwds)))
> +(c-lang-defvar c-block-stmt-with-key (c-lang-const 
> c-block-stmt-with-key))
> +
>  (c-lang-defconst c-simple-stmt-kwds
>    "Statement keywords followed by an expression or nothing."
>    t    '("break" "continue" "goto" "return")






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#69293: 30.0.50; cc-mode doesn't support "if consteval"
  2024-03-25  9:37   ` Herman, Géza
@ 2024-03-26 21:12     ` Alan Mackenzie
  0 siblings, 0 replies; 6+ messages in thread
From: Alan Mackenzie @ 2024-03-26 21:12 UTC (permalink / raw)
  To: Herman, Géza; +Cc: 69293-done

Hello, Géza.

On Mon, Mar 25, 2024 at 10:37:14 +0100, Herman, Géza wrote:
> Hi Alan,

> I agree, "if consteval" looks weird indeed.

> With your patch, "if consteval" indents correctly.  I used cc-mode 
> with your patch for a day, haven't noticed any newly introduced 
> bugs.

Thanks for doing the testing.  I've now committed the patch and I'm
closing the bug with this post.

> Thank you, and get better!
> Géza


> Alan Mackenzie <acm@muc.de> writes:

[ .... ]

-- 
Alan Mackenzie (Nuremberg, Germany).





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-03-26 21:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-20 20:21 bug#69293: 30.0.50; cc-mode doesn't support "if consteval" Herman, Géza
2024-02-22 13:18 ` Eli Zaretskii
2024-02-25 16:52   ` Alan Mackenzie
2024-03-22 13:34 ` Alan Mackenzie
2024-03-25  9:37   ` Herman, Géza
2024-03-26 21:12     ` Alan Mackenzie

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).