* mcs-om.el (TopLevel): Don't refer to `running-emacs-19_29-or-later', use
[elisp/apel.git] / poe.el
diff --git a/poe.el b/poe.el
index cc4876f..0e77846 100644 (file)
--- a/poe.el
+++ b/poe.el
               ))
         )))
 
-(defmacro defsubst-maybe (name &rest everything-else)
+(defmacro defmacro-maybe (name &rest everything-else)
   (or (and (fboundp name)
-          (not (get name 'defsubst-maybe)))
+          (not (get name 'defmacro-maybe)))
       (` (or (fboundp (quote (, name)))
             (progn
-              (defsubst (, name) (,@ everything-else))
-              (put (quote (, name)) 'defsubst-maybe t)
+              (defmacro (, name) (,@ everything-else))
+              (put (quote (, name)) 'defmacro-maybe t)
               ))
         )))
 
-(defmacro defmacro-maybe (name &rest everything-else)
+(defmacro-maybe defsubst (name arglist &rest body)
+  "Define an inline function.  The syntax is just like that of `defun'."
+  (cons 'defun (cons name (cons arglist body)))
+  )
+
+(defmacro defsubst-maybe (name &rest everything-else)
   (or (and (fboundp name)
-          (not (get name 'defmacro-maybe)))
+          (not (get name 'defsubst-maybe)))
       (` (or (fboundp (quote (, name)))
             (progn
-              (defmacro (, name) (,@ everything-else))
-              (put (quote (, name)) 'defmacro-maybe t)
+              (defsubst (, name) (,@ everything-else))
+              (put (quote (, name)) 'defsubst-maybe t)
               ))
         )))
 
   (or (and (fboundp name)
           (not (get name 'defun-maybe)))
       (` (unless (fboundp (quote (, name)))
-          (cond (,@ (mapcar (lambda (case)
-                              (list (car case)
-                                    (if doc
-                                        (` (defun (, name) (, args)
-                                             (, doc)
-                                             (,@ (cdr case))))
-                                      (` (defun (, name) (, args)
-                                           (,@ (cdr case))))
-                                      )))
+          (cond (,@ (mapcar (function
+                             (lambda (case)
+                               (list (car case)
+                                     (if doc
+                                         (` (defun (, name) (, args)
+                                              (, doc)
+                                              (,@ (cdr case))))
+                                       (` (defun (, name) (, args)
+                                            (,@ (cdr case))))
+                                       ))))
                             everything-else)))
           (put (quote (, name)) 'defun-maybe t)
           ))))
        ))
 
 
-;;; @ Emacs 19 emulation
+;;; @ Emacs 19.23 emulation
 ;;;
 
-(defmacro-maybe eval-and-compile (&rest body)
-  "Like `progn', but evaluates the body at compile time and at load time."
-  ;; Remember, it's magic.
-  (cons 'progn body))
-
 (defun-maybe minibuffer-prompt-width ()
   "Return the display width of the minibuffer prompt."
   (save-excursion