mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Make C++ digit separators work. Amend the handling of single quotes generally
Single quotes, even in strings and comments, are now marked with the "punctuation" syntax-table property, except where they are validly bounding a character literal. They are font locked with font-lock-warning-face except where they are valid. This is done in C, C++, ObjC, and Java Modes. * lisp/progmodes/cc-defs.el (c-clear-char-property-with-value-on-char-function) (c-clear-char-property-with-value-on-char, c-put-char-properties-on-char): New functions/macros. * lisp/progmodes/cc-fonts.el (c-font-lock-invalid-single-quotes): New function. (c-basic-matchers-before): invoke c-font-lock-invalid-single-quotes. * lisp/progmodes/cc-langs.el (c-get-state-before-change-functions): Remove c-before-after-change-digit-quote from wherever it occurs. Insert c-parse-quotes-before-change into the entries for the languages where it is needed. (c-before-font-lock-functions): Remove c-before-after-change-digit-quote from wherever it occurs. Insert c-parse-quotes-after-change into the entries for the languages which need it. (c-has-quoted-numbers): New lang-defconst/-defvar. * lisp/progmodes/cc-mode.el (c-before-after-change-digit-quote): Remove. (c-maybe-quoted-number-head, c-maybe-quoted-number-tail) (c-maybe-quoted-number): New defconsts. (c-quoted-number-head-before-point, c-quoted-number-tail-after-point) (c-quoted-number-straddling-point, c-parse-quotes-before-change) (c-parse-quotes-after-change): New functions.
This commit is contained in:
parent
e620bbe38e
commit
59d07875df
4 changed files with 311 additions and 97 deletions
|
|
@ -474,18 +474,19 @@ so that all identifiers are recognized as words.")
|
|||
;; The value here may be a list of functions or a single function.
|
||||
t nil
|
||||
c++ '(c-extend-region-for-CPP
|
||||
; c-before-after-change-extend-region-for-lambda-capture ; doesn't seem needed.
|
||||
c-before-change-check-raw-strings
|
||||
c-before-change-check-<>-operators
|
||||
c-depropertize-CPP
|
||||
c-before-after-change-digit-quote
|
||||
c-invalidate-macro-cache
|
||||
c-truncate-bs-cache)
|
||||
c-truncate-bs-cache
|
||||
c-parse-quotes-before-change)
|
||||
(c objc) '(c-extend-region-for-CPP
|
||||
c-depropertize-CPP
|
||||
c-invalidate-macro-cache
|
||||
c-truncate-bs-cache)
|
||||
;; java 'c-before-change-check-<>-operators
|
||||
c-truncate-bs-cache
|
||||
c-parse-quotes-before-change)
|
||||
java 'c-parse-quotes-before-change
|
||||
;; 'c-before-change-check-<>-operators
|
||||
awk 'c-awk-record-region-clear-NL)
|
||||
(c-lang-defvar c-get-state-before-change-functions
|
||||
(let ((fs (c-lang-const c-get-state-before-change-functions)))
|
||||
|
|
@ -515,18 +516,19 @@ parameters \(point-min) and \(point-max).")
|
|||
t '(c-depropertize-new-text
|
||||
c-change-expand-fl-region)
|
||||
(c objc) '(c-depropertize-new-text
|
||||
c-parse-quotes-after-change
|
||||
c-extend-font-lock-region-for-macros
|
||||
c-neutralize-syntax-in-and-mark-CPP
|
||||
c-change-expand-fl-region)
|
||||
c++ '(c-depropertize-new-text
|
||||
c-parse-quotes-after-change
|
||||
c-extend-font-lock-region-for-macros
|
||||
; c-before-after-change-extend-region-for-lambda-capture ; doesn't seem needed.
|
||||
c-before-after-change-digit-quote
|
||||
c-after-change-re-mark-raw-strings
|
||||
c-neutralize-syntax-in-and-mark-CPP
|
||||
c-restore-<>-properties
|
||||
c-change-expand-fl-region)
|
||||
java '(c-depropertize-new-text
|
||||
c-parse-quotes-after-change
|
||||
c-restore-<>-properties
|
||||
c-change-expand-fl-region)
|
||||
awk '(c-depropertize-new-text
|
||||
|
|
@ -609,6 +611,12 @@ EOL terminated statements."
|
|||
(c c++ objc) t)
|
||||
(c-lang-defvar c-has-bitfields (c-lang-const c-has-bitfields))
|
||||
|
||||
(c-lang-defconst c-has-quoted-numbers
|
||||
"Whether the language has numbers quoted like 4'294'967'295."
|
||||
t nil
|
||||
c++ t)
|
||||
(c-lang-defvar c-has-quoted-numbers (c-lang-const c-has-quoted-numbers))
|
||||
|
||||
(c-lang-defconst c-modified-constant
|
||||
"Regexp that matches a “modified” constant literal such as \"L\\='a\\='\",
|
||||
a “long character”. In particular, this recognizes forms of constant
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue