From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 10 17:31:31 2022 Received: (at submit) by debbugs.gnu.org; 10 Dec 2022 22:31:31 +0000 Received: from localhost ([127.0.0.1]:45500 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p48NW-0000wB-LM for submit@debbugs.gnu.org; Sat, 10 Dec 2022 17:31:31 -0500 Received: from lists.gnu.org ([209.51.188.17]:46678) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p48NT-0000w4-QJ for submit@debbugs.gnu.org; Sat, 10 Dec 2022 17:31:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p48NT-0001yj-C1 for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2022 17:31:27 -0500 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p48NP-00075D-W1 for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2022 17:31:26 -0500 Received: by mail-pf1-x431.google.com with SMTP id c7so6111769pfc.12 for ; Sat, 10 Dec 2022 14:31:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=d6-com.20210112.gappssmtp.com; s=20210112; h=mime-version:user-agent:reply-to:message-id:date:subject:to:from :from:to:cc:subject:date:message-id:reply-to; bh=NU5IvE+GjU/kaT7LJKk/1hTETTs2KLWb2QtvQ2FRjrs=; b=frIIJYzMmKhXt3M9cr6T9SckygWeDp1qR9aYimECqnoo3zIAeAuyuFX3me2R5RgRqa dYxkkZ3ZA47IBNdiscNQb6/5/gODK0oC8oknzFJZlK5+ZzAGvqGljGPnj+e5uW+MwP+T TXpxSmNeCVsmzgDV2amR4tAQzOjpUu21zxgZvW2c+Y61rY981scpb5GmuC2Gjau7IBTr zgJJskeAu5HxX/EZA+EAsDyfq05yPB3f0L3UhnvgM2MDp2u0qjRPxsv4pSNTU5BgHy0k wkLzwHwJVsyXp00huxIy3K0kBVotj1cSED7HzmHBWaPReWyobQZMkD4Qd7NjNmLlPM5c UT8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:reply-to:message-id:date:subject:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=NU5IvE+GjU/kaT7LJKk/1hTETTs2KLWb2QtvQ2FRjrs=; b=an0do9MYWSG8uUhEtgli5p5C/YKC2I0XH3wz55H/xSXziQxXYAXBO+UYGWOC6OEK/p bNOHC0fXLn9+qyZrXlWSRPa3gYRqK+jjg7mgP5zumzA7o1HLxu5YAPAcSK260rVQTm6X I6d+nPUMwuoSZfz89J9Oy00ELF1+2ZM8b2g2wmoai15kff28tZZDt7CdFm/BGHLUI1MH GlJxIxvuq8rxncHf3zVnnxZXJUGoATm2DluO/2KQlOGIn4tnqRr3dWDb2gwzLxbtOqZW tqn3zh6QlpsjDpN+r+um7ubpItUR1Gm7ncAtC76Edpr6HVegbuoNL+3Clh+kkv4jHX6B aBtQ== X-Gm-Message-State: ANoB5pkWQnGKbc2c/AjEm3OZsGxefBvp6PrxYn3L2Yj0ApIuwaTFnUSy Zdxt4vuZ65bbLKnlKKaJV4g5kMkDDmB+bOK7 X-Google-Smtp-Source: AA0mqf46wgCUTCoaE0V4t0wfrmgK0Hsgdvhe47WE5EbzTG2PrB2ozL9nWLaBvnYVsTXgC4JTHH4V/w== X-Received: by 2002:a62:1bd6:0:b0:578:e56:f57b with SMTP id b205-20020a621bd6000000b005780e56f57bmr5917619pfb.28.1670711481280; Sat, 10 Dec 2022 14:31:21 -0800 (PST) Received: from [192.168.1.123] (157-131-207-86.fiber.dynamic.sonic.net. [157.131.207.86]) by smtp.gmail.com with ESMTPSA id q15-20020aa7842f000000b005672daedc8fsm3176398pfn.81.2022.12.10.14.31.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 10 Dec 2022 14:31:20 -0800 (PST) From: "Chris Hecker" To: "bug-gnu-emacs@gnu.org" Subject: 28.2; c type modifiers only work as prefixes for font-lock, cc-mode Date: Sat, 10 Dec 2022 22:31:18 +0000 Message-Id: User-Agent: eM_Client/8.2.1721.0 Mime-Version: 1.0 Content-Type: multipart/related; boundary="------=_MB383200FA-81C3-47CB-B47F-E6CF3417DA83" Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=checker@d6.com; helo=mail-pf1-x431.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Chris Hecker Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --------=_MB383200FA-81C3-47CB-B47F-E6CF3417DA83 Content-Type: multipart/alternative; boundary="------=_MB861B325E-BF45-4A56-9107-30A3E1630EE9" --------=_MB861B325E-BF45-4A56-9107-30A3E1630EE9 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable cc-mode doesn't seem to recognize that c type specifiers can come in any=20 order (and I prefer them after so they're modifying the base type), so=20 the highlighting doesn't work right for the variable name. Here's an=20 example in a struct, works the same way in a function: struct foo { unsigned int One; int unsigned Two; }; emacs -Q results: I couldn't see an easy way of fixing this (besides just adding all the=20 combos to *-font-lock-extra-types). Seems like there needs to be a=20 c-primitive-type-postfix-kwds variable to do this right? Thanks, Chris In GNU Emacs 28.2 (build 2, x86_64-w64-mingw32) of 2022-09-13 built on AVALON Windowing system distributor 'Microsoft Corp.', version 10.0.19044 System Description: Microsoft Windows 10 Home (v10.0.2009.19044.2251) Configured using: 'configure --with-modules --without-dbus --with-native-compilation --without-compress-install CFLAGS=3D-O2' Configured features: ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND THREADS TIFF TOOLKIT_SCROLL_BARS XPM ZLIB Important settings: value of $LANG: ENU locale-coding-system: cp1252 Major mode: ELisp/l Minor modes in effect: hexl-follow-ascii: t minibuffer-depth-indicate-mode: t icicle-mode: t which-function-mode: t shell-dirtrack-mode: t winner-mode: t global-eldoc-mode: t 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 auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t indent-tabs-mode: t Load-path shadows: ~/emacs/lisp/json hides=20 c:/apps/emacs/emacs-28.2/share/emacs/28.2/lisp/json ~/emacs/lisp/css-mode hides=20 c:/apps/emacs/emacs-28.2/share/emacs/28.2/lisp/textmodes/css-mode Features: (shadow sort emacsbug make-mode js align goto-addr nroff-mode lpr realgud-gdb realgud:gdb-track-mode realgud:gdb-init realgud-track-mode realgud-backtrace-mode realgud:gdb-core realgud:run realgud-track realgud-shortkey realgud-menu realgud-eval realgud-init realgud-file esh-mode realgud-cmds realgud-core realgud-reset realgud-bp realgud-bp-image-data realgud-lang realgud-send realgud-window realgud-buffer-helper realgud-buffer-breakpoint realgud-buffer-backtrace realgud-locals realgud-buffer-locals realgud-buffer-command realgud-buffer-info realgud-regexp realgud-lochist realgud-loc realgud-buffer-source realgud-key realgud-custom key realgud-follow loc-changes org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex ol org-keys oc org-compat org-macs org-loaddefs cal-menu calendar cal-loaddefs realgud-fringe realgud-helper realgud-utils eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util load-relative cl-print eieio-opt speedbar ezimage dframe shortdoc help-fns nhexl-mode noutline outline pcase find-func autoload radix-tree lisp-mnt mm-archive gnutls network-stream url-http url-gw nsm url-cache url-auth ruler-mode hl-line mule-util hexl bat-mode mail-extr meson-mode smie conf-mode find-file dabbrev calc-arith calccomp calc-bin calc-alg calc-menu misearch multi-isearch add-log vc-bzr cap-words superword subword face-remap etags-select etags fileloop generator xref project mb-depth two-column bookmark icicles icicles-mode comp comp-cstr cl-extra icicles-cmd2 icicles-cmd1 warnings icicles-mcmd doremi icicles-fn icicles-var icicles-opt edmacro ffap kmacro cus-theme thingatpt icicles-face hexrgb calc-vec calc-forms calc-misc calc-aent calc-prog calc-ext calc calc-loaddefs rect calc-macs vcl-mode cc-langs mel-mode prop-mode pfx-mode message rmc puny help-mode easy-mmode dired+ image-dired image-mode exif image-file image-converter dired-aux dired-x dired dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader smtpmail sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils ibuffer ibuffer-loaddefs caml-font 7z-arc-mode cperl-mode rx facemenu fakecygpty matlab derived tempo which-func cus-edit pp wid-edit grep cus-load cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs compile text-property-search vc vc-dispatcher imenu browse-kill-ring view ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util checker-allout checker-outline hex-util hmac-sha1 tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat shell pcomplete comint ansi-color parse-time iso8601 time-date format-spec web-mode advice tex-site server info winner ring yaml-mode ispell finder-inf realgud-recursive-autoloads 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 iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars term/common-win 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 w32notify w32 lcms2 multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 2583460 283035) (symbols 48 48033 35) (strings 32 332543 29010) (string-bytes 1 11657043) (vectors 16 124331) (vector-slots 8 2675678 261302) (floats 8 559 942) (intervals 56 280393 2040) (buffers 992 101)) --------=_MB861B325E-BF45-4A56-9107-30A3E1630EE9 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable

cc-mode doesn't seem to recognize that c type specifi= ers can come in any order (and I prefer them after so they're modifying the = base type), so the highlighting doesn't work right for the variable name.= =C2=A0 Here's an example in a struct, works the same way in a function:

struct foo {
=C2=A0 unsigned int One;
=C2=A0 int unsigned Two;
};

emacs -Q results:
<= div>
I couldn't see an easy way of fixing this (besides jus= t adding all the combos to *-font-lock-extra-types).=C2=A0 Seems like there = needs to be a c-primitive-type-postfix-kwds variable to do this right?

Thanks,
Chris

=



In GNU= Emacs 28.2 (build 2, x86_64-w64-mingw32)
=C2=A0of 2022-09-13 built on AVALON
Windowing system distributor 'Microsoft Corp.', version 10.0.190= 44
System Description: Microsoft Windows 10 Home (v10.0.2009.19044.= 2251)

Configured using:
=C2=A0'configure --with-modules --without-dbus --with-native-com= pilation
=C2=A0--without-compress-install CFLAGS=3D-O2'

Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATI= VE_COMP
NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND THREADS TIFF TOOLKIT_SCR= OLL_BARS
XPM ZLIB

Important settings:
=C2=A0 value of $LANG: ENU
=C2=A0 locale-coding-system: cp1252

Major mode: ELisp/l

Minor modes in effect:
=C2=A0 hexl-follow-ascii: t
=C2=A0 minibuffer-depth-indicate-mode: t
=C2=A0 icicle-mode: t
=C2=A0 which-function-mode: t
=C2=A0 shell-dirtrack-mode: t
=C2=A0 winner-mode: t
=C2=A0 global-eldoc-mode: t
=C2=A0 eldoc-mode: t
=C2=A0 show-paren-mode: t
=C2=A0 electric-indent-mode: t
=C2=A0 mouse-wheel-mode: t
=C2=A0 file-name-shadow-mode: t
=C2=A0 global-font-lock-mode: t
=C2=A0 font-lock-mode: t
=C2=A0 blink-cursor-mode: t
=C2=A0 auto-composition-mode: t
=C2=A0 auto-encryption-mode: t
=C2=A0 auto-compression-mode: t
=C2=A0 buffer-read-only: t
=C2=A0 column-number-mode: t
=C2=A0 line-number-mode: t
=C2=A0 indent-tabs-mode: t

Load-path shadows:
~/emacs/lisp/json hides c:/apps/emacs/emacs-28.2/share/emacs/28.= 2/lisp/json
~/emacs/lisp/css-mode hides c:/apps/emacs/emacs-28.2/share/emacs= /28.2/lisp/textmodes/css-mode

Features:
(shadow sort emacsbug make-mode js align goto-addr nroff-mode lp= r
realgud-gdb realgud:gdb-track-mode realgud:gdb-init realgud-trac= k-mode
realgud-backtrace-mode realgud:gdb-core realgud:run realgud-trac= k
realgud-shortkey realgud-menu realgud-eval realgud-init realgud-= file
esh-mode realgud-cmds realgud-core realgud-reset realgud-bp
realgud-bp-image-data realgud-lang realgud-send realgud-window
realgud-buffer-helper realgud-buffer-breakpoint realgud-buffer-b= acktrace
realgud-locals realgud-buffer-locals realgud-buffer-command
realgud-buffer-info realgud-regexp realgud-lochist realgud-loc
realgud-buffer-source realgud-key realgud-custom key realgud-fol= low
loc-changes org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-m= acro
org-footnote org-src ob-comint org-pcomplete org-list org-faces
org-entities org-version ob-emacs-lisp ob-core ob-eval org-table
oc-basic bibtex ol org-keys oc org-compat org-macs org-loaddefs= cal-menu
calendar cal-loaddefs realgud-fringe realgud-helper realgud-util= s eshell
esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-g= roups
esh-util load-relative cl-print eieio-opt speedbar ezimage dfram= e
shortdoc help-fns nhexl-mode noutline outline pcase find-func au= toload
radix-tree lisp-mnt mm-archive gnutls network-stream url-http ur= l-gw nsm
url-cache url-auth ruler-mode hl-line mule-util hexl bat-mode ma= il-extr
meson-mode smie conf-mode find-file dabbrev calc-arith calccomp= calc-bin
calc-alg calc-menu misearch multi-isearch add-log vc-bzr cap-wor= ds
superword subword face-remap etags-select etags fileloop generat= or xref
project mb-depth two-column bookmark icicles icicles-mode comp c= omp-cstr
cl-extra icicles-cmd2 icicles-cmd1 warnings icicles-mcmd doremi
icicles-fn icicles-var icicles-opt edmacro ffap kmacro cus-theme
thingatpt icicles-face hexrgb calc-vec calc-forms calc-misc calc= -aent
calc-prog calc-ext calc calc-loaddefs rect calc-macs vcl-mode cc= -langs
mel-mode prop-mode pfx-mode message rmc puny help-mode easy-mmod= e dired+
image-dired image-mode exif image-file image-converter dired-aux = dired-x
dired dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-conf= ig
gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mai= l-parse
rfc2231 mailabbrev gmm-utils mailheader smtpmail sendmail rfc204= 7
rfc2045 ietf-drums mm-util mail-prsvr mail-utils ibuffer
ibuffer-loaddefs caml-font 7z-arc-mode cperl-mode rx facemenu fa= kecygpty
matlab derived tempo which-func cus-edit pp wid-edit grep cus-lo= ad
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc= -engine
cc-vars cc-defs compile text-property-search vc vc-dispatcher im= enu
browse-kill-ring view ediff ediff-merg ediff-mult ediff-wind edi= ff-diff
ediff-help ediff-init ediff-util checker-allout checker-outline= hex-util
hmac-sha1 tramp tramp-loaddefs trampver tramp-integration files-= x
tramp-compat shell pcomplete comint ansi-color parse-time iso860= 1
time-date format-spec web-mode advice tex-site server info winne= r ring
yaml-mode ispell finder-inf realgud-recursive-autoloads 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 iso-transl tooltip eldoc p= aren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode = mwheel
dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars term/co= mmon-win
tool-bar dnd fontset image regexp-opt fringe tabulated-list repl= ace
newcomment text-mode lisp-mode prog-mode register page tab-bar m= enu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-l= ock
font-lock syntax font-core term/tty-colors frame minibuffer cl-g= eneric
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-v= iet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak cz= ech
european ethiopic indian cyrillic chinese composite emoji-zwj ch= arscript
charprop case-table epa-hook jka-cmpr-hook help simple abbrev ob= array
cl-preloaded nadvice button loaddefs faces cus-face macroexp fil= es
window text-properties overlay sha1 md5 base64 format env code-p= ages
mule custom widget hashtable-print-readable backquote threads w3= 2notify
w32 lcms2 multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 2583460 283035)
=C2=A0(symbols 48 48033 35)
=C2=A0(strings 32 332543 29010)
=C2=A0(string-bytes 1 11657043)
=C2=A0(vectors 16 124331)
=C2=A0(vector-slots 8 2675678 261302)
=C2=A0(floats 8 559 942)
=C2=A0(intervals 56 280393 2040)
=C2=A0(buffers 992 101))

--------=_MB861B325E-BF45-4A56-9107-30A3E1630EE9-- --------=_MB383200FA-81C3-47CB-B47F-E6CF3417DA83 Content-Type: image/png; name=lg3yhp5z.png Content-Transfer-Encoding: base64 Content-Disposition: inline Content-Id: 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 gxD9P/+rerMPz+SvAAAAAElFTkSuQmCC --------=_MB383200FA-81C3-47CB-B47F-E6CF3417DA83-- From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 14 11:53:17 2023 Received: (at 59953) by debbugs.gnu.org; 14 Oct 2023 15:53:17 +0000 Received: from localhost ([127.0.0.1]:50248 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qrgx2-0000Fz-Qt for submit@debbugs.gnu.org; Sat, 14 Oct 2023 11:53:17 -0400 Received: from mail.muc.de ([193.149.48.3]:43305) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qrgwy-0000Fi-4C for 59953@debbugs.gnu.org; Sat, 14 Oct 2023 11:53:15 -0400 Received: (qmail 47300 invoked by uid 3782); 14 Oct 2023 17:52:41 +0200 Received: from acm.muc.de (pd953a921.dip0.t-ipconnect.de [217.83.169.33]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Sat, 14 Oct 2023 17:52:40 +0200 Received: (qmail 8785 invoked by uid 1000); 14 Oct 2023 15:52:34 -0000 Date: Sat, 14 Oct 2023 15:52:34 +0000 To: Chris Hecker Subject: Re: bug#59953: 28.2; c type modifiers only work as prefixes for font-lock, cc-mode Message-ID: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0GqiNvNDYqJhOHbW" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Submission-Agent: TMDA/1.3.x (Ph3nix) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59953 Cc: 59953@debbugs.gnu.org, acm@muc.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --0GqiNvNDYqJhOHbW Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit Hello, Chris. Thanks for taking the trouble to file this bug, but sorry it's been such a long time without a response. I've now looked at the bug and it wasn't that difficult to patch. If you don't mind too much, I'll put your test file into the CC Mode test suite, having added one line ("long int unsigned Three;") to it. Would you please now apply the attached patch to your current Emacs (the file cc-engine.el is in lisp/progmodes), byte compile cc-engine.el (or just the whole of CC Mode), load the result into your Emacs and try it out on your real source code. Then please confirm to me that the bug is fixed, or tell me what's still not right. Thanks! (If you want any help in the patching of byte compilation, feel free to send me private email.) On Sat, Dec 10, 2022 at 22:31:18 +0000, Chris Hecker wrote: > cc-mode doesn't seem to recognize that c type specifiers can come in > any order (and I prefer them after so they're modifying the base type), > so the highlighting doesn't work right for the variable name. Here's > an example in a struct, works the same way in a function: > struct foo { > unsigned int One; > int unsigned Two; > }; > emacs -Q results: > [cid:emf20eaa32-35e0-4df0-a1fb-4e6ad9397939@checker-blade15] > I couldn't see an easy way of fixing this (besides just adding all the > combos to *-font-lock-extra-types). Seems like there needs to be a > c-primitive-type-postfix-kwds variable to do this right? > Thanks, > Chris > In GNU Emacs 28.2 (build 2, x86_64-w64-mingw32) >  of 2022-09-13 built on AVALON > Windowing system distributor 'Microsoft Corp.', version 10.0.19044 > System Description: Microsoft Windows 10 Home (v10.0.2009.19044.2251) > Configured using: >  'configure --with-modules --without-dbus --with-native-compilation >  --without-compress-install CFLAGS=-O2' > Configured features: [ .... ] -- Alan Mackenzie (Nuremberg, Germany). --0GqiNvNDYqJhOHbW Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="diff.20231014.diff" diff -r 97876aef276f cc-engine.el --- a/cc-engine.el Fri Oct 13 14:13:43 2023 +0000 +++ b/cc-engine.el Sat Oct 14 15:51:43 2023 +0000 @@ -9461,37 +9461,47 @@ (or c-promote-possible-types (eq res t))) (c-record-type-id (cons (match-beginning 1) (match-end 1)))) - (if (and c-opt-type-component-key + (cond + ((and c-opt-type-component-key (save-match-data (looking-at c-opt-type-component-key))) ;; There might be more keywords for the type. - (let (safe-pos) - (c-forward-keyword-clause 1 t) - (while (progn - (setq safe-pos (point)) - (c-forward-syntactic-ws) - (looking-at c-opt-type-component-key)) - (when (and c-record-type-identifiers - (looking-at c-primitive-type-key)) - (c-record-type-id (cons (match-beginning 1) - (match-end 1)))) - (c-forward-keyword-clause 1 t)) - (if (looking-at c-primitive-type-key) - (progn - (when c-record-type-identifiers - (c-record-type-id (cons (match-beginning 1) - (match-end 1)))) - (c-forward-keyword-clause 1 t) - (setq res t)) - (goto-char safe-pos) - (setq res 'prefix)) - (setq pos (point))) - (if (save-match-data (c-forward-keyword-clause 1 t)) - (setq pos (point)) - (if pos - (goto-char pos) - (goto-char (match-end 1)) - (setq pos (point))))) + (let (safe-pos) + (c-forward-keyword-clause 1 t) + (while (progn + (setq safe-pos (point)) + (c-forward-syntactic-ws) + (looking-at c-opt-type-component-key)) + (when (and c-record-type-identifiers + (looking-at c-primitive-type-key)) + (c-record-type-id (cons (match-beginning 1) + (match-end 1)))) + (c-forward-keyword-clause 1 t)) + (if (looking-at c-primitive-type-key) + (progn + (when c-record-type-identifiers + (c-record-type-id (cons (match-beginning 1) + (match-end 1)))) + (c-forward-keyword-clause 1 t) + (setq res t) + (while (progn + (setq safe-pos (point)) + (c-forward-syntactic-ws) + (looking-at c-opt-type-component-key)) + (c-forward-keyword-clause 1 t))) + (goto-char safe-pos) + (setq res 'prefix)) + (setq pos (point)))) + ((save-match-data (c-forward-keyword-clause 1 t)) + (while (progn + (setq pos (point)) + (c-forward-syntactic-ws) + (and c-opt-type-component-key + (looking-at c-opt-type-component-key))) + (c-forward-keyword-clause 1 t))) + (pos (goto-char pos)) + (t (goto-char (match-end 1)) + (setq pos (point)))) (c-forward-syntactic-ws)) ((and (eq name-res t) --0GqiNvNDYqJhOHbW-- From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 24 07:30:03 2023 Received: (at 59953-done) by debbugs.gnu.org; 24 Nov 2023 12:30:03 +0000 Received: from localhost ([127.0.0.1]:35816 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r6VJq-0000Hl-Dc for submit@debbugs.gnu.org; Fri, 24 Nov 2023 07:30:03 -0500 Received: from mail.muc.de ([193.149.48.3]:56183) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r6VJm-0000H5-FQ for 59953-done@debbugs.gnu.org; Fri, 24 Nov 2023 07:30:01 -0500 Received: (qmail 85590 invoked by uid 3782); 24 Nov 2023 13:29:47 +0100 Received: from acm.muc.de (pd953a757.dip0.t-ipconnect.de [217.83.167.87]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Fri, 24 Nov 2023 13:29:47 +0100 Received: (qmail 7002 invoked by uid 1000); 24 Nov 2023 12:29:46 -0000 Date: Fri, 24 Nov 2023 12:29:46 +0000 To: Chris Hecker Subject: Re: bug#59953: 28.2; c type modifiers only work as prefixes for font-lock, cc-mode Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Submission-Agent: TMDA/1.3.x (Ph3nix) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59953-done Cc: 59953-done@debbugs.gnu.org, acm@muc.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello, Chris. I've committed the patch, and I'm closing the bug with this post. On Sat, Oct 14, 2023 at 15:52:34 +0000, Alan Mackenzie wrote: > Thanks for taking the trouble to file this bug, but sorry it's been such > a long time without a response. > I've now looked at the bug and it wasn't that difficult to patch. If you > don't mind too much, I'll put your test file into the CC Mode test suite, > having added one line ("long int unsigned Three;") to it. > Would you please now apply the attached patch to your current Emacs (the > file cc-engine.el is in lisp/progmodes), byte compile cc-engine.el (or > just the whole of CC Mode), load the result into your Emacs and try it > out on your real source code. Then please confirm to me that the bug is > fixed, or tell me what's still not right. Thanks! (If you want any help > in the patching of byte compilation, feel free to send me private email.) > On Sat, Dec 10, 2022 at 22:31:18 +0000, Chris Hecker wrote: > > cc-mode doesn't seem to recognize that c type specifiers can come in > > any order (and I prefer them after so they're modifying the base type), > > so the highlighting doesn't work right for the variable name. Here's > > an example in a struct, works the same way in a function: > > struct foo { > > unsigned int One; > > int unsigned Two; > > }; > > emacs -Q results: > > [cid:emf20eaa32-35e0-4df0-a1fb-4e6ad9397939@checker-blade15] > > I couldn't see an easy way of fixing this (besides just adding all the > > combos to *-font-lock-extra-types). Seems like there needs to be a > > c-primitive-type-postfix-kwds variable to do this right? > > Thanks, > > Chris > > In GNU Emacs 28.2 (build 2, x86_64-w64-mingw32) > >  of 2022-09-13 built on AVALON > > Windowing system distributor 'Microsoft Corp.', version 10.0.19044 > > System Description: Microsoft Windows 10 Home (v10.0.2009.19044.2251) > > Configured using: > >  'configure --with-modules --without-dbus --with-native-compilation > >  --without-compress-install CFLAGS=-O2' > > Configured features: [ .... ] -- Alan Mackenzie (Nuremberg, Germany). From unknown Tue Jun 17 22:00:32 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 23 Dec 2023 12:24:11 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator