summaryrefslogtreecommitdiff
path: root/lisp/format.el
diff options
context:
space:
mode:
authorGerd Moellmann <gerd@gnu.org>2000-02-21 13:00:25 +0000
committerGerd Moellmann <gerd@gnu.org>2000-02-21 13:00:25 +0000
commitf0a6c717e27cda12ba60d5afcd01a09d2e8cba67 (patch)
tree3b90105adaac81e5fa68fbc2a308bf6025228f43 /lisp/format.el
parented58ed834c342bb2dc4fc7f4e70d34d0e782173a (diff)
downloademacs-f0a6c717e27cda12ba60d5afcd01a09d2e8cba67.tar.gz
(format-annotate-single-property-change): Handle
properties.with dotted-list values. (format-proper-list-p): New function.
Diffstat (limited to 'lisp/format.el')
-rw-r--r--lisp/format.el47
1 files changed, 29 insertions, 18 deletions
diff --git a/lisp/format.el b/lisp/format.el
index 77b46860c1f..4a0ee582809 100644
--- a/lisp/format.el
+++ b/lisp/format.el
@@ -483,6 +483,14 @@ returns nil."
b (cdr b)))
a)
+(defun format-proper-list-p (list)
+ "Return t if LIST is a proper list.
+A proper list is a list ending with a nil cdr, not with an atom "
+ (when (listp list)
+ (while (consp list)
+ (setq list (cdr list)))
+ (null list)))
+
(defun format-reorder (items order)
"Arrange ITEMS to following partial ORDER.
Elements of ITEMS equal to elements of ORDER will be rearranged to follow the
@@ -925,25 +933,28 @@ Annotations to open and to close are returned as a dotted pair."
(if (not prop-alist)
nil
;; If either old or new is a list, have to treat both that way.
- (if (and (or (consp old) (consp new))
+ (if (and (or (listp old) (listp new))
(not (get prop 'format-list-atomic-p)))
- (let* ((old (if (listp old) old (list old)))
- (new (if (listp new) new (list new)))
- (tail (format-common-tail old new))
- close open)
- (while old
- (setq close
- (append (car (format-annotate-atomic-property-change
- prop-alist (car old) nil))
- close)
- old (cdr old)))
- (while new
- (setq open
- (append (cdr (format-annotate-atomic-property-change
- prop-alist nil (car new)))
- open)
- new (cdr new)))
- (format-make-relatively-unique close open))
+ (if (or (not (format-proper-list-p old))
+ (not (format-proper-list-p new)))
+ (format-annotate-atomic-property-change prop-alist old new)
+ (let* ((old (if (listp old) old (list old)))
+ (new (if (listp new) new (list new)))
+ (tail (format-common-tail old new))
+ close open)
+ (while old
+ (setq close
+ (append (car (format-annotate-atomic-property-change
+ prop-alist (car old) nil))
+ close)
+ old (cdr old)))
+ (while new
+ (setq open
+ (append (cdr (format-annotate-atomic-property-change
+ prop-alist nil (car new)))
+ open)
+ new (cdr new)))
+ (format-make-relatively-unique close open)))
(format-annotate-atomic-property-change prop-alist old new)))))
(defun format-annotate-atomic-property-change (prop-alist old new)