;; Copyright (C) 1999 Mikio Nakajima <minakaji@osaka.email.ne.jp>
-;; Author: Mikio Nakajima <minakaji@osaka.email.ne.jp>
-;; Maintainer: Mikio Nakajima <minakaji@osaka.email.ne.jp>
+;; Author: Mikio Nakajima <minakaji@osaka.email.ne.jp>
+;; Katsumi Yamaoka <yamaoka@jpl.org>
;; Keywords: emulating, custom
;; This file is part of APEL (A Portable Emacs Library).
;; (custom.el bundled with v19 is old; does not have following macros.)
;;
;; DEFCUSTOM below has the same effect as the original DEFVAR has.
-;; DEFFACE only makes a face.
+;; DEFFACE below interprets almost of all arguments.
;; DEFGROUP and DEFINE-WIDGET below are just nop macro.
;;; Code:
This is a nop defgroup only for emulating purpose."
nil)
-
-(defmacro-maybe defcustom (symbol value doc &rest args)
+
+(defmacro-maybe defcustom (symbol value doc &rest args)
"Declare SYMBOL as a customizable variable that defaults to VALUE.
DOC is the variable documentation.
This is a defcustom only for emulating purpose.
Its effect is just as same as that of defvar."
(` (defvar (, symbol) (, value) (, doc))))
-
+
(defvar-maybe frame-background-mode nil
"*The brightness of the background.
Set this to the symbol dark if your background color is dark, light if
(defmacro-maybe-cond defface (face spec doc &rest args)
"Declare FACE as a customizable face that defaults to SPEC.
-FACE does not need to be quoted. [custom emulating macro]"
+FACE does not need to be quoted.
+
+Third argument DOC is the face documentation, it is ignored.
+
+It does nothing if FACE has been bound, otherwise set the face
+attributes according to SPEC.
+
+The remaining arguments should have the form
+
+ [KEYWORD VALUE]...
+
+The following KEYWORDs are defined:
+
+:group VALUE should be a customization group, but it is ignored.
+
+SPEC should be an alist of the form ((DISPLAY ATTS)...).
+
+ATTS is of the form (KEY VALUE) where KEY is a symbol of `:foreground',
+`:background', `:bold', `:italic' or `:underline'. The other KEYs are
+ignored.
+
+The ATTS of the first entry in SPEC where the DISPLAY matches the
+frame should take effect in that frame. DISPLAY can either be the
+symbol t, which will match all frames, or an alist of the form
+\((REQ ITEM...)...)
+
+For the DISPLAY to match a FRAME, the REQ property of the frame must
+match one of the ITEM. The following REQ are defined:
+
+`type' (the value of `window-system')
+ Should be one of `x' or `tty'.
+
+`class' (the frame's color support)
+ Should be one of `color', `grayscale', or `mono'.
+
+`background' (the value of `frame-background-mode', what color is used
+for the background text)
+ Should be one of `light' or `dark'."
((fboundp 'make-face)
(` (let ((name (quote (, face))))
(or
item (car (cdr (car display)))
display (cdr display))
(cond
+ ((eq 'type req)
+ (setq match (or (eq window-system item)
+ (and (not window-system)
+ (eq 'tty item)))))
((eq 'class req)
(setq match (or (and colorp (eq 'color item))
(and (not colorp)
(setq atts (cdr (cdr atts))))))
face)))))
(t
- ;; do nothing.
+ nil ;; do nothing.
))
(defmacro-maybe define-widget (name class doc &rest args)
This is a nop define-widget only for emulating purpose."
nil)
-(provide 'tinycustom)
(provide 'custom)
-;;; tinycustom.el ends here.
+(require 'product)
+(product-provide (provide 'tinycustom) (require 'apel-ver))
+
+;;; tinycustom.el ends here