From: morioka Date: Mon, 4 May 1998 12:09:19 +0000 (+0000) Subject: (mime-condition-type-alist): New variable. X-Git-Tag: semi-1_4_0~24 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9932390bd9c6ca4a24318ed0e4e22f9acfb9fd23;p=elisp%2Fsemi.git (mime-condition-type-alist): New variable. (mime-condition-mode-alist): New variable. (mime-add-condition): New function. --- diff --git a/semi-def.el b/semi-def.el index 3a8a034..1a35d33 100644 --- a/semi-def.el +++ b/semi-def.el @@ -295,6 +295,40 @@ it is used as hook to set." )) +(defvar mime-condition-type-alist + '((preview . mime-preview-condition) + (action . mime-acting-condition))) + +(defvar mime-condition-mode-alist + '((with-default . ctree-set-calist-with-default) + (t . ctree-set-calist-strictly))) + +(defun mime-add-condition (target-type condition &optional mode file) + "Add CONDITION to database specified by TARGET-TYPE. +TARGET-TYPE must be 'preview or 'action. +If optional argument MODE is 'strict or nil (omitted), CONDITION is +added strictly. +If optional argument MODE is 'with-default, CONDITION is added with +default rule. +If optional argument FILE is specified, it is loaded when CONDITION is +activate." + (let ((sym (cdr (assq target-type mime-condition-type-alist)))) + (if sym + (let ((func (cdr (assq mode mime-condition-mode-alist)))) + (if (fboundp func) + (progn + (funcall func sym condition) + (if file + (let ((method (cdr (assq 'method condition)))) + (autoload method file) + )) + ) + (error "Function for mode `%s' is not found." mode) + )) + (error "Variable for target-type `%s' is not found." target-type) + ))) + + ;;; @ end ;;;