diff options
| author | Alan Mackenzie | 2015-08-20 10:37:24 +0000 |
|---|---|---|
| committer | Alan Mackenzie | 2015-08-20 10:37:24 +0000 |
| commit | d13dc271e52c7d977aee6f32c3d40b8b15b04c6c (patch) | |
| tree | cec8b7085744d09724d41dce18af0f113930d3da | |
| parent | d0079c9324e575107b8a90944c9012dd3842946c (diff) | |
| download | emacs-d13dc271e52c7d977aee6f32c3d40b8b15b04c6c.tar.gz emacs-d13dc271e52c7d977aee6f32c3d40b8b15b04c6c.zip | |
Handling of `c-parse-state'. Fix low level bug.
progmodes/cc-engine.el (c-remove-stale-state-cache-backwards): Add
"CASE 3.5" to handle `cache-pos' being only slightly before `here'.
| -rw-r--r-- | lisp/progmodes/cc-engine.el | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index f5285a6bcfe..520b7e573bf 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el | |||
| @@ -3135,16 +3135,20 @@ comment at the start of cc-engine.el for more info." | |||
| 3135 | nil)) ; for the cond | 3135 | nil)) ; for the cond |
| 3136 | 3136 | ||
| 3137 | ((save-restriction | 3137 | ((save-restriction |
| 3138 | (narrow-to-region too-far-back (point-max)) | 3138 | (narrow-to-region too-far-back (point-max)) |
| 3139 | (setq ren (c-safe (c-sc-scan-lists pos -1 -1)))) | 3139 | (setq ren (c-safe (c-sc-scan-lists pos -1 -1)))) |
| 3140 | |||
| 3141 | ;; CASE 3: After a }/)/] before `here''s BOL. | 3140 | ;; CASE 3: After a }/)/] before `here''s BOL. |
| 3142 | (list (1+ ren) (and dropped-cons pos) nil)) ; Return value | 3141 | (list (1+ ren) (and dropped-cons pos) nil)) ; Return value |
| 3143 | 3142 | ||
| 3143 | ((progn (setq good-pos (c-state-lit-beg (c-point 'bopl here-bol))) | ||
| 3144 | (>= cache-pos good-pos)) | ||
| 3145 | ;; CASE 3.5: Just after an existing entry in `c-state-cache' on `here''s | ||
| 3146 | ;; line or the previous line. | ||
| 3147 | (list cache-pos nil nil)) | ||
| 3148 | |||
| 3144 | (t | 3149 | (t |
| 3145 | ;; CASE 4; Best of a bad job: BOL before `here-bol', or beginning of | 3150 | ;; CASE 4; Best of a bad job: BOL before `here-bol', or beginning of |
| 3146 | ;; literal containing it. | 3151 | ;; literal containing it. |
| 3147 | (setq good-pos (c-state-lit-beg (c-point 'bopl here-bol))) | ||
| 3148 | (list good-pos (and dropped-cons good-pos) nil))))) | 3152 | (list good-pos (and dropped-cons good-pos) nil))))) |
| 3149 | 3153 | ||
| 3150 | 3154 | ||