From: Colin Walters Date: Sat, 8 Jun 2002 22:12:14 +0000 (+0000) Subject: (describe-text-properties): Sort the output by the size of the values. X-Git-Tag: ttn-vms-21-2-B4~14718 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e2fa2f6e91def6fa16bfc7abe424eed650722d12;p=emacs.git (describe-text-properties): Sort the output by the size of the values. Put `font-lock-face' property on property names. --- diff --git a/lisp/descr-text.el b/lisp/descr-text.el index 72a3009ebd3..d9e5d6f4282 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el @@ -98,10 +98,28 @@ if that value is non-nil." PROPERTIES should be a list of overlay or text properties. The `category' property is made into a widget button that call `describe-text-category' when pushed." - (while properties - (widget-insert (format " %-20s " (car properties))) - (let ((key (nth 0 properties)) - (value (nth 1 properties))) + ;; Sort the properties by the size of their value. + (dolist (elt (sort (let ((ret nil) + (key nil) + (val nil) + (len nil)) + (while properties + (setq key (pop properties) + val (pop properties) + len 0) + (unless (or (eq key 'category) + (widgetp val)) + (setq val (pp-to-string val) + len (length val))) + (push (list key val len) ret)) + ret) + (lambda (a b) + (< (nth 2 a) + (nth 2 b))))) + (let ((key (nth 0 elt)) + (value (nth 1 elt))) + (widget-insert (propertize (format " %-20s" key) + 'font-lock-face 'italic)) (cond ((eq key 'category) (widget-create 'link :notify `(lambda (&rest ignore) @@ -110,9 +128,8 @@ The `category' property is made into a widget button that call ((widgetp value) (describe-text-widget value)) (t - (describe-text-sexp value)))) - (widget-insert "\n") - (setq properties (cdr (cdr properties))))) + (widget-insert value)))) + (widget-insert "\n"))) ;;; Describe-Text Commands.