Package: cc-mode;
To reply to this bug, email your comments to 59755 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-cc-mode <at> gnu.org
:bug#59755
; Package cc-mode
.
(Fri, 02 Dec 2022 03:21:02 GMT) Full text and rfc822 format available.Po Lu <luangruo <at> yahoo.com>
:bug-cc-mode <at> gnu.org
.
(Fri, 02 Dec 2022 03:21:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Po Lu <luangruo <at> yahoo.com> To: bug-gnu-emacs <at> gnu.org Subject: CC Mode 5.35.2 (C/*l); Incorrect fontification of `xid' as type Date: Fri, 02 Dec 2022 11:20:01 +0800
Package: cc-mode Insert the following file in a C mode buffer: /* idalloc.c - client resource management. */ #include <config.h> #include "idalloc.h" /* Array of all resource tables. */ struct resource_table *resource_tables[MAX_TABLE_ID]; /* Find a single unused resource table ID. Return (card16) -1 upon failure. */ static card16 get_free_id (void) { card16 i; for (i = 0; i <= MAX_TABLE_ID; ++i) { if (!resource_tables[i]) return i; } return (card16) -1; } /* Create a resource table for the server or for a new client. Return NULL if the table could not be allocated. */ struct resource_table * get_resource_table (void) { struct resource_table *table; card16 id; id = find_free_id (); if (id == (card16) -1) return NULL; table = server_malloc (sizeof *table); if (!table) return; table->id = id; table->resource_map = gl_map_nx_create_empty (GL_HASH_MAP, NULL, NULL, NULL, NULL); if (!table->resource_map) { server_free (table); return NULL; } resource_tables[table->id] = table; return table; } /* Look up a resource given the specified XID and type, and return it in RESOURCE. If CLIENT is specified, the lookup is being done on behalf of the specified client. Return the result of the lookup: L_SUCCESS - the lookup was successful. L_WRONGTYPE - the resource was found, but it is the wrong type. L_ACCESS - the resource was found, but cannot be accessed. L_ERROR - the resource was not found. The upper 10 bits of the XID provide the index into the resource table, and the lower 19 bits are used as the key to the hash table. Any resource found is returned in RESOURCE, which is otherwise set to NULL. */ enum lookup_result id_lookup (xid xid, enum resource_type type, struct client *client, struct resource **resource) { card16 table_id; struct resource_table *table; *resource = NULL; table_id = (xid >> (29 - TABLE_ID_BITS) & MAX_TABLE_ID); table = resource_tables[table_id]; if (!table) return L_ERROR; return id_lookup_1 (xid, type, client, resource); } enum lookup_result id_lookup_1 (xid xid, struct resource_table *resource_table, enum resource_type type, struct client *client, struct resource **resource) { void *value; *resource = NULL; if (!gl_map_search (resource_table->map, (intptr_t) (xid & TABLE_RESOURCE_MASK), &value)) return; } and scroll to the very end. In "id_lookup_1", every occurrence of "xid" will be fontified as a type!. Emacs : GNU Emacs 39.0.60 (build 7, x86_64-pc-linux-gnu) of 2022-12-02 Package: CC Mode 5.35.2 (C/*l) Buffer Style: gnu c-emacs-features: (pps-extended-state col-0-paren posix-char-classes gen-string-delim gen-comment-delim syntax-properties category-properties 1-bit) current state: ============== (setq c-basic-offset 2 c-comment-only-line-offset '(0 . 0) c-indent-comment-alist '((anchored-comment column . 0) (end-block space . 1) (cpp-end-block space . 2)) c-indent-comments-syntactically-p nil c-block-comment-prefix "" c-comment-prefix-regexp '((pike-mode . "//+!?\\|\\**") (awk-mode . "#+") (other . "//+\\|\\**")) c-doc-comment-style '((java-mode . javadoc) (pike-mode . autodoc) (c-mode . gtkdoc) (c++-mode . gtkdoc)) c-cleanup-list '(scope-operator) c-hanging-braces-alist '((substatement-open before after) (arglist-cont-nonempty)) c-hanging-colons-alist nil c-hanging-semi&comma-criteria '(c-semi&comma-inside-parenlist) c-backslash-column 48 c-backslash-max-column 72 c-special-indent-hook '(t c-gnu-impose-minimum) c-label-minimum-indentation 1 c-offsets-alist '((inexpr-class . +) (inexpr-statement . +) (lambda-intro-cont . +) (inlambda . 0) (template-args-cont c-lineup-template-args +) (incomposition . +) (inmodule . +) (innamespace . +) (inextern-lang . +) (composition-close . 0) (module-close . 0) (namespace-close . 0) (extern-lang-close . 0) (composition-open . 0) (module-open . 0) (namespace-open . 0) (extern-lang-open . 0) (objc-method-call-cont c-lineup-ObjC-method-call-colons c-lineup-ObjC-method-call +) (objc-method-args-cont . c-lineup-ObjC-method-args) (objc-method-intro . [0]) (friend . 0) (cpp-define-intro c-lineup-cpp-define +) (cpp-macro-cont . +) (cpp-macro . [0]) (inclass . +) (stream-op . c-lineup-streamop) (arglist-cont-nonempty c-lineup-gcc-asm-reg c-lineup-arglist) (arglist-cont c-lineup-gcc-asm-reg 0) (comment-intro c-lineup-knr-region-comment c-lineup-comment) (catch-clause . 0) (else-clause . 0) (do-while-closure . 0) (access-label . -) (case-label . 0) (substatement . +) (statement-case-intro . +) (statement . 0) (brace-entry-open . 0) (brace-list-entry . 0) (brace-list-close . 0) (block-close . 0) (block-open . 0) (inher-cont . c-lineup-multi-inher) (inher-intro . +) (member-init-cont . c-lineup-multi-inher) (member-init-intro . +) (annotation-var-cont . +) (annotation-top-cont . 0) (topmost-intro . 0) (knr-argdecl . 0) (func-decl-cont . +) (inline-close . 0) (class-close . 0) (class-open . 0) (defun-block-intro . +) (defun-close . 0) (defun-open . 0) (c . c-lineup-C-comments) (string . c-lineup-dont-change) (topmost-intro-cont first c-lineup-topmost-intro-cont c-lineup-gnu-DEFUN-intro-cont) (brace-list-intro first c-lineup-2nd-brace-entry-in-arglist c-lineup-class-decl-init-+ +) (brace-list-open . +) (inline-open . 0) (arglist-close . c-lineup-arglist) (arglist-intro . c-lineup-arglist-intro-after-paren) (statement-cont . +) (statement-case-open . +) (label . 0) (substatement-label . 0) (substatement-open . +) (knr-argdecl-intro . 5) (statement-block-intro . +) ) c-buffer-is-cc-mode 'c-mode c-tab-always-indent t c-syntactic-indentation t c-syntactic-indentation-in-macros t c-ignore-auto-fill '(string cpp code) c-auto-align-backslashes t c-backspace-function 'backward-delete-char-untabify c-delete-function 'delete-char c-electric-pound-behavior nil c-default-style '((java-mode . "java") (awk-mode . "awk") (other . "gnu")) c-enable-xemacs-performance-kludge-p nil c-old-style-variable-behavior nil defun-prompt-regexp nil tab-width 8 comment-column 32 parse-sexp-ignore-comments t parse-sexp-lookup-properties t auto-fill-function nil comment-multi-line t comment-start-skip "\\(?://+\\|/\\*+\\)\\s *" fill-prefix nil fill-column 70 paragraph-start "[ ]*\\(//+\\|\\**\\)[ ]*$\\|^\f" adaptive-fill-mode t adaptive-fill-regexp "[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*\\([-–!|#%;>*·•‣⁃◦]+[ ]*\\)*\\)" )
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.