# HG changeset patch # User Miles Bader # Date 1109754774 0 # Node ID 3cd3e3cf352930c439e1a5b0cecd06da2e6daf19 # Parent e040c58e568a95ca075c715e263b4b031dff8595 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-145 (make-text-button): Default button type if not specified 2005-03-02 Miles Bader * lisp/button.el (make-text-button): If the user doesn't specify a type, use the default. Rewrite to use `add-text-properties' and plist functions. diff -r e040c58e568a -r 3cd3e3cf3529 lisp/ChangeLog --- a/lisp/ChangeLog Tue Mar 01 23:21:52 2005 +0000 +++ b/lisp/ChangeLog Wed Mar 02 09:12:54 2005 +0000 @@ -1,3 +1,9 @@ +2005-03-02 Miles Bader + + * button.el (make-text-button): If the user doesn't specify a + type, use the default. Rewrite to use `add-text-properties' and + plist functions. + 2005-03-01 Robert J. Chassell * textmodes/texinfmt.el: (texinfo-no-refill-regexp): Comment out diff -r e040c58e568a -r 3cd3e3cf3529 lisp/button.el --- a/lisp/button.el Tue Mar 01 23:21:52 2005 +0000 +++ b/lisp/button.el Wed Mar 02 09:12:54 2005 +0000 @@ -1,6 +1,6 @@ ;;; button.el --- clickable buttons ;; -;; Copyright (C) 2001 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2005 Free Software Foundation, Inc. ;; ;; Author: Miles Bader ;; Keywords: extensions @@ -298,24 +298,23 @@ `make-text-button'. Also see `insert-text-button'." - (let (prop val) - (while properties - (setq prop (pop properties)) - (setq val (pop properties)) - ;; Note that all the following code is basically equivalent to - ;; `button-put', but we can do it much more efficiently since we - ;; already have BEG and END. - (cond ((memq prop '(type :type)) - ;; We translate a `type' property into a `category' - ;; property, since that's what's actually used by - ;; text-properties for inheritance. - (setq prop 'category) - (setq val (button-category-symbol val))) - ((eq prop 'category) - ;; Disallow setting the `category' property directly. - (error "Button `category' property may not be set directly"))) - ;; Add the property. - (put-text-property beg end prop val))) + (let ((type-entry + (or (plist-member properties 'type) + (plist-member properties :type)))) + ;; Disallow setting the `category' property directly. + (when (plist-get properties 'category) + (error "Button `category' property may not be set directly")) + (if (null type-entry) + ;; The user didn't specify a `type' property, use the default. + (setq properties (cons 'category (cons 'default-button properties))) + ;; The user did specify a `type' property. Translate it into a + ;; `category' property, which is what's actually used by + ;; text-properties for inheritance. + (setcar type-entry 'category) + (setcar (cdr type-entry) + (button-category-symbol (car (cdr type-entry)))))) + ;; Now add all the text properties at once + (add-text-properties beg end properties) ;; Return something that can be used to get at the button. beg)