Commit e60fc320 authored by Glenn Morris's avatar Glenn Morris

Merge from origin/emacs-26

5a7451c3 CC Mode: stop wrongly recognizing "func(a * 9)" as "pointer t...
b0ed9d14 * lisp/emacs-lisp/cursor-sensor.el: Add motivation
parents 63838449 5a7451c3
......@@ -38,6 +38,27 @@
;; called just before redisplay happens, according to the movement of
;; the cursor since the last redisplay.
;;;; Motivation
;; The old properties were very problematic in practice because they
;; operate at a much lower level and hence affect all motion
;; *functions* like goto-char, forward-char, ... hence breaking
;; invariants like:
;;
;; (forward-char N) == (progn (forward-char N1) (forward-char (- N N1)))
;; (point) == (progn (forward-char N) (forward-char -N) (point))
;; (+ N (point)) == (progn (forward-char N) (point))
;;
;; The problems would usually show up due to interaction between
;; unrelated code working in the same buffer, where one code used those
;; properties and the other (unknowingly) assumed those aren't used.
;; In practice a *lot* of code assumes there's no such funny business.
;;
;; Worse: all(?) packages using those properties don't actually want those
;; properties to affect motion at such a low-level, they only want to
;; affect the overall effect of commands, but not the effect of every
;; single point-motion that a given command happened to use internally.
;;; Code:
;;;###autoload
......
......@@ -8550,6 +8550,8 @@ comment at the start of cc-engine.el for more info."
got-parens
;; True if there is an identifier in the declarator.
got-identifier
;; True if we find a number where an identifier was expected.
got-number
;; True if there's a non-close-paren match of
;; `c-type-decl-suffix-key'.
got-suffix
......@@ -8627,7 +8629,9 @@ comment at the start of cc-engine.el for more info."
(and (looking-at c-identifier-start)
(setq pos (point))
(setq got-identifier (c-forward-name))
(setq name-start pos)))
(setq name-start pos))
(when (looking-at "[0-9]")
(setq got-number t))) ; We've probably got an arithmetic expression.
;; Skip over type decl suffix operators and trailing noise macros.
(while
......@@ -9101,7 +9105,7 @@ comment at the start of cc-engine.el for more info."
;; CASE 18
(when (and (not (memq context '(nil top)))
(or got-prefix
(or (and got-prefix (not got-number))
(and (eq context 'decl)
(not c-recognize-paren-inits)
(or got-parens got-suffix))))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment