mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 18:40:39 -08:00
Correct c-parse-state-get-strategy for moving HERE backward into a macro.
* list/progmodes/c-engine.el (c-parse-state-get-strategy): When HERE is below its previous value, we chose strategy 'forward, and the new HERE is in a (different) macro, ensure the returned START-POINT is not above the start of the macro.
This commit is contained in:
parent
877c525f4b
commit
a23974d6e6
1 changed files with 20 additions and 6 deletions
|
|
@ -2931,11 +2931,23 @@ comment at the start of cc-engine.el for more info."
|
|||
;; o - ('BOD START-POINT) - scan forwards from START-POINT, which is at the
|
||||
;; top level.
|
||||
;; o - ('IN-LIT nil) - point is inside the literal containing point-min.
|
||||
(let ((cache-pos (c-get-cache-scan-pos here)) ; highest position below HERE in cache (or 1)
|
||||
BOD-pos ; position of 2nd BOD before HERE.
|
||||
strategy ; 'forward, 'backward, 'BOD, or 'IN-LIT.
|
||||
start-point
|
||||
how-far) ; putative scanning distance.
|
||||
(let* ((in-macro-start ; start of macro containing HERE or nil.
|
||||
(save-excursion
|
||||
(goto-char here)
|
||||
(and (c-beginning-of-macro)
|
||||
(point))))
|
||||
(changed-macro-start
|
||||
(and in-macro-start
|
||||
(not (and c-state-old-cpp-beg
|
||||
(= in-macro-start c-state-old-cpp-beg)))
|
||||
in-macro-start))
|
||||
(cache-pos (c-get-cache-scan-pos (if changed-macro-start
|
||||
(min changed-macro-start here)
|
||||
here))) ; highest suitable position in cache (or 1)
|
||||
BOD-pos ; position of 2nd BOD before HERE.
|
||||
strategy ; 'forward, 'backward, 'BOD, or 'IN-LIT.
|
||||
start-point
|
||||
how-far) ; putative scanning distance.
|
||||
(setq good-pos (or good-pos (c-state-get-min-scan-pos)))
|
||||
(cond
|
||||
((< here (c-state-get-min-scan-pos))
|
||||
|
|
@ -2945,7 +2957,9 @@ comment at the start of cc-engine.el for more info."
|
|||
how-far 0))
|
||||
((<= good-pos here)
|
||||
(setq strategy 'forward
|
||||
start-point (max good-pos cache-pos)
|
||||
start-point (if changed-macro-start
|
||||
cache-pos
|
||||
(max good-pos cache-pos))
|
||||
how-far (- here start-point)))
|
||||
((< (- good-pos here) (- here cache-pos)) ; FIXME!!! ; apply some sort of weighting.
|
||||
(setq strategy 'backward
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue