changeset 39916:5827976776b9

*** empty log message ***
author Miles Bader <miles@gnu.org>
date Sun, 14 Oct 2001 14:34:44 +0000
parents 206186afb551
children eb6a85173992
files lisp/ChangeLog lisp/button.el
diffstat 2 files changed, 24 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Oct 14 10:36:32 2001 +0000
+++ b/lisp/ChangeLog	Sun Oct 14 14:34:44 2001 +0000
@@ -1,3 +1,12 @@
+2001-10-14  Miles Bader  <miles@gnu.org>
+
+	* button.el (define-button-type): Allow supertype property to be
+	specified with a keyword `:supertype' too.
+	(button-put, make-text-button): Allow button type property to be
+	specified using the keyword `:type' too.
+	(button-type): New function.
+	(button): Add `button-category-symbol' property.
+
 2001-10-13  Stefan Monnier  <monnier@cs.yale.edu>
 
 	* textmodes/refill.el (refill-mode):
--- a/lisp/button.el	Sun Oct 14 10:36:32 2001 +0000
+++ b/lisp/button.el	Sun Oct 14 14:34:44 2001 +0000
@@ -86,6 +86,9 @@
 ;; they inherit this.
 (put 'default-button 'button t)
 
+;; A `category-symbol' property for the default button type
+(put 'button 'button-category-symbol 'default-button)
+
 
 ;; Button types (which can be used to hold default properties for buttons)
 
@@ -117,7 +120,9 @@
 happens only when NAME is defined; subsequent changes to a supertype are
 not reflected in its subtypes)."
   (let* ((catsym (make-symbol (concat (symbol-name name) "-button")))
-	 (supertype (plist-get properties 'supertype))
+	 (supertype
+	  (or (plist-get properties 'supertype)
+	      (plist-get properties :supertype)))
 	 (super-catsym
 	  (if supertype (button-category-symbol supertype) 'default-button)))
     ;; Provide a link so that it's easy to find the real symbol.
@@ -131,7 +136,10 @@
     (put catsym 'type name)
     ;; Add the properties in PROPERTIES to the real symbol.
     (while properties
-      (put catsym (pop properties) (pop properties)))
+      (let ((prop (pop properties)))
+	(when (eq prop :supertype)
+	  (setq prop 'supertype))
+	(put catsym prop (pop properties))))
     name))
 
 (defun button-type-put (type prop val)
@@ -178,7 +186,7 @@
 (defun button-put (button prop val)
   "Set BUTTON's PROP property to VAL."
   ;; Treat some properties specially.
-  (cond ((eq prop 'type)
+  (cond ((memq prop '(type :type))
 	 ;; We translate a `type' property a `category' property, since
 	 ;; that's what's actually used by overlays/text-properties for
 	 ;; inheriting properties.
@@ -211,6 +219,9 @@
   "Return BUTTON's text label."
   (buffer-substring-no-properties (button-start button) (button-end button)))
 
+(defsubst button-type (button)
+  (button-get button 'type))
+
 (defun button-has-type-p (button type)
   "Return t if BUTTON has button-type TYPE, or one of TYPE's subtypes."
   (button-type-subtype-p (button-get button 'type) type))
@@ -277,7 +288,7 @@
       ;; 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 ((eq prop 'type)
+      (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.