]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge from origin/emacs-27
authorGlenn Morris <rgm@gnu.org>
Mon, 31 Aug 2020 17:45:54 +0000 (10:45 -0700)
committerGlenn Morris <rgm@gnu.org>
Mon, 31 Aug 2020 17:45:54 +0000 (10:45 -0700)
f20169399d (origin/emacs-27) Fix typo in Introduction to Emacs Lisp
7605060d51 Update Elisp Manual reference to which-function-mode
29708cbde7 Some precisions to bug handling
dddc971f0e CC Mode: Fix processing for when c-multiline-string-start-...
4a73fb9668 Fix description of %-constructs in 'mode-line-format'

1  2 
doc/lispintro/emacs-lisp-intro.texi
doc/lispref/modes.texi
lisp/progmodes/cc-mode.el

Simple merge
Simple merge
index 81bcd101fe428bb4b76c03a0b8e1876b8fd5665d,74afeecf8f7ad3e00b0b3ae080706d2f5902347e..2ffbde99aa465a5c268f7d9280cb5edff65959ef
@@@ -1245,68 -1204,30 +1245,68 @@@ Note that the style variables are alway
        (cond
         ((bobp))
         ((eq pos-lt 'string)
-       (c-put-char-property (1- (point)) 'syntax-table '(15)))
+       (c-put-syn-tab (1- (point)) '(15)))
         (t nil)))))
  
 -(defvar c-fl-syn-tab-region nil)
 -  ;; Non-nil when a `c-restore-string-fences' is "in force".  It's value is a
 -  ;; cons of the BEG and END of the region currently "mirroring" the
 -  ;; c-fl-syn-tab properties as syntax-table properties.
 +(defun c-put-syn-tab (pos value)
 +  ;; Set both the syntax-table and the c-fl-syn-tab text properties at POS to
 +  ;; VALUE (which should not be nil).
 +  ;; `(let ((-pos- ,pos)
 +  ;;   (-value- ,value))
 +  (c-put-char-property pos 'syntax-table value)
 +  (c-put-char-property pos 'c-fl-syn-tab value)
 +  (cond
 +   ((null c-min-syn-tab-mkr)
 +    (setq c-min-syn-tab-mkr (copy-marker pos t)))
 +   ((< pos c-min-syn-tab-mkr)
 +    (move-marker c-min-syn-tab-mkr pos)))
 +  (cond
 +   ((null c-max-syn-tab-mkr)
 +    (setq c-max-syn-tab-mkr (copy-marker (1+ pos) nil)))
 +   ((>= pos c-max-syn-tab-mkr)
 +    (move-marker c-max-syn-tab-mkr (1+ pos))))
 +  (c-truncate-lit-pos-cache pos))
 +
 +(defun c-clear-syn-tab (pos)
 +  ;; Remove both the 'syntax-table and `c-fl-syn-tab properties at POS.
 +     (c-clear-char-property pos 'syntax-table)
 +     (c-clear-char-property pos 'c-fl-syn-tab)
 +     (when c-min-syn-tab-mkr
 +       (if (and (eq pos (marker-position c-min-syn-tab-mkr))
 +              (eq (1+ pos) (marker-position c-max-syn-tab-mkr)))
 +         (progn
 +           (move-marker c-min-syn-tab-mkr nil)
 +           (move-marker c-max-syn-tab-mkr nil)
 +           (setq c-min-syn-tab-mkr nil  c-max-syn-tab-mkr nil))
 +       (when (eq pos (marker-position c-min-syn-tab-mkr))
 +         (move-marker c-min-syn-tab-mkr
 +                      (if (c-get-char-property (1+ pos) 'c-fl-syn-tab)
 +                          (1+ pos)
 +                        (c-next-single-property-change
 +                         (1+ pos) 'c-fl-syn-tab nil c-max-syn-tab-mkr))))
 +       (when (eq (1+ pos) (marker-position c-max-syn-tab-mkr))
 +         (move-marker c-max-syn-tab-mkr
 +                      (if (c-get-char-property (1- pos) 'c-fl-syn-tab)
 +                          pos
 +                        (c-previous-single-property-change
 +                         pos 'c-fl-syn-tab nil (1+ c-min-syn-tab-mkr)))))))
 +     (c-truncate-lit-pos-cache pos))
  
  (defun c-clear-string-fences ()
 -  ;; Clear syntax-table text properties in the region defined by
 -  ;; `c-cl-syn-tab-region' which are "mirrored" by c-fl-syn-tab text
 -  ;; properties.  However, any such " character which ends up not being
 +  ;; Clear syntax-table text properties which are "mirrored" by c-fl-syn-tab
 +  ;; text properties.  However, any such " character which ends up not being
    ;; balanced by another " is left with a '(1) syntax-table property.
 -  (when c-fl-syn-tab-region
 -    (let ((beg (car c-fl-syn-tab-region))
 -        (end (cdr c-fl-syn-tab-region))
 -        s pos)
 -      (setq pos beg)
 +  (when
 +      (and c-min-syn-tab-mkr c-max-syn-tab-mkr)
 +    (let (s pos)
 +      (setq pos c-min-syn-tab-mkr)
        (while
          (and
 -         (< pos end)
 -         (setq pos
 -               (c-min-property-position pos end 'c-fl-syn-tab))
 -         (< pos end))
 +         (< pos c-max-syn-tab-mkr)
 +         (setq pos (c-min-property-position pos
 +                                            c-max-syn-tab-mkr
 +                                            'c-fl-syn-tab))
 +         (< pos c-max-syn-tab-mkr))
        (c-clear-char-property pos 'syntax-table)
        (setq pos (1+ pos)))
        ;; Check we haven't left any unbalanced "s.