(subr-fboundp): New function.
authormorioka <morioka>
Tue, 27 Oct 1998 13:20:14 +0000 (13:20 +0000)
committermorioka <morioka>
Tue, 27 Oct 1998 13:20:14 +0000 (13:20 +0000)
(next-command-event): New function.
(character-to-event): New function.
(event-to-character): New function.

poe.el

diff --git a/poe.el b/poe.el
index 67d2c58..90a0571 100644 (file)
--- a/poe.el
+++ b/poe.el
               ))
         )))
 
+(defsubst subr-fboundp (symbol)
+  "Return t if SYMBOL's function definition is a built-in function."
+  (and (fboundp symbol)
+       (subrp (symbol-function symbol))))
+
 (defconst-maybe emacs-major-version (string-to-int emacs-version))
 (defconst-maybe emacs-minor-version
   (string-to-int
        )
       ((> emacs-major-version 20))
       ((= emacs-major-version 20)
-       (cond ((fboundp 'string)
+       (cond ((subr-fboundp 'string)
              ;; Emacs 20.3 or later
              )
-            ((fboundp 'concat-chars)
+            ((subr-fboundp 'concat-chars)
              ;; Emacs 20.1 or later
              (defalias 'string 'concat-chars)
              ))
@@ -470,6 +475,58 @@ as obsolete. [XEmacs emulating function]"
   (make-obsolete oldfun newfun)
   )
 
+(when (subr-fboundp 'read-event)
+  ;; for Emacs 19 or later
+  (cond
+   ((subr-fboundp 'string)
+    ;; for Emacs 20.3 or later
+    (defun-maybe next-command-event (&optional event prompt)
+      "Read an event object from the input stream.
+If EVENT is non-nil, it should be an event object and will be filled
+in and returned; otherwise a new event object will be created and
+returned.
+If PROMPT is non-nil, it should be a string and will be displayed in
+the echo area while this function is waiting for an event.
+\[XEmacs emulating function]"
+      (read-event prompt t)
+      )
+    )
+   (t
+    (defun-maybe next-command-event (&optional event prompt)
+      "Read an event object from the input stream.
+If EVENT is non-nil, it should be an event object and will be filled
+in and returned; otherwise a new event object will be created and
+returned.
+If PROMPT is non-nil, it should be a string and will be displayed in
+the echo area while this function is waiting for an event.
+\[XEmacs emulating function]"
+      (message prompt)
+      (read-event)
+      )
+    ))
+
+  (defsubst-maybe character-to-event (ch)
+    "Convert keystroke CH into an event structure, replete with bucky bits.
+Note that CH (the keystroke specifier) can be an integer, a character
+or a symbol such as 'clear. [XEmacs emulating function]"
+    ch)
+
+  (defun-maybe event-to-character (event)
+    "Return the character approximation to the given event object.
+If the event isn't a keypress, this returns nil.
+\[XEmacs emulating function]"
+    (cond ((symbolp event)
+          ;; mask is (BASE-TYPE MODIFIER-BITS) or nil.
+          (let ((mask (get event 'event-symbol-element-mask)))
+            (if mask
+                (let ((base (get (car mask) 'ascii-character)))
+                  (if base
+                      (logior base (car (cdr mask)))
+                    )))))
+         ((integerp event) event)
+         ))
+  )
+
 
 ;;; @ MULE 2 emulation
 ;;;