summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/lucid.el
diff options
context:
space:
mode:
authorJim Blandy <jimb@redhat.com>1993-03-15 20:40:34 +0000
committerJim Blandy <jimb@redhat.com>1993-03-15 20:40:34 +0000
commit7d18d35c95c5829bb0a23d16546471014c9af392 (patch)
tree6225573147ccadc4697c56b5bce7d50ce7f5afe0 /lisp/emacs-lisp/lucid.el
parentc26406fef27bf84e38a2222f41cd464b33cdeee0 (diff)
downloademacs-7d18d35c95c5829bb0a23d16546471014c9af392.tar.gz
emacs-7d18d35c95c5829bb0a23d16546471014c9af392.tar.bz2
emacs-7d18d35c95c5829bb0a23d16546471014c9af392.zip
*** empty log message ***
Diffstat (limited to 'lisp/emacs-lisp/lucid.el')
-rw-r--r--lisp/emacs-lisp/lucid.el109
1 files changed, 98 insertions, 11 deletions
diff --git a/lisp/emacs-lisp/lucid.el b/lisp/emacs-lisp/lucid.el
index 6412b0bc8f4..bd34ffa822d 100644
--- a/lisp/emacs-lisp/lucid.el
+++ b/lisp/emacs-lisp/lucid.el
@@ -45,19 +45,106 @@
(setcdr (cdr plist) (nthcdr 4 plist)))
(setq plist (cdr (cdr plist))))))
-(defun map-keymap (function keymap)
+(defun map-keymap (function keymap &optional sort-first)
"Call FUNCTION for every binding in KEYMAP.
This includes bindings inherited from a parent keymap.
FUNCTION receives two arguments each time it is called:
the character (more generally, the event type) that is bound,
and the binding it has."
- (while (consp keymap)
- (if (consp (car keymap))
- (funcall function (car (car keymap)) (cdr (car keymap)))
- (if (vectorp (car keymap))
- (let ((i (length (car keymap)))
- (vector (car keymap)))
- (while (>= i 0)
- (funcall function i (aref vector i))
- (setq i (1- i))))))
- (setq keymap (cdr keymap))))
+ (if sort-first
+ (let (list)
+ (map-keymap (function (lambda (a b)
+ (setq list (cons (cons a b) list))))
+ keymap)
+ (setq list (sort list
+ (function (lambda (a b)
+ (setq a (car a) b (car b))
+ (if (integerp a)
+ (if (integerp b) (< a b)
+ t)
+ (if (integerp b) t
+ (string< a b)))))))
+ (while list
+ (funcall function (car (car list)) (cdr (car list)))
+ (setq list (cdr list))))
+ (while (consp keymap)
+ (if (consp (car keymap))
+ (funcall function (car (car keymap)) (cdr (car keymap)))
+ (if (vectorp (car keymap))
+ (let ((i (1- (length (car keymap))))
+ (vector (car keymap)))
+ (while (>= i 0)
+ (funcall function i (aref vector i))
+ (setq i (1- i))))))
+ (setq keymap (cdr keymap)))))
+
+(defun real-path-name (name &optional default)
+ (file-truename (expand-file-name name default)))
+
+;; It's not clear what to return if the mouse is not in FRAME.
+(defun read-mouse-position (frame)
+ (let ((pos (mouse-position)))
+ (if (eq (car pos) frame)
+ (cdr pos))))
+
+(defun switch-to-other-buffer (arg)
+ "Switch to the previous buffer.
+With a numeric arg N, switch to the Nth most recent buffer.
+With an arg of 0, buries the current buffer at the
+bottom of the buffer stack."
+ (interactive "p")
+ (if (eq arg 0)
+ (bury-buffer (current-buffer)))
+ (switch-to-buffer
+ (if (<= arg 1) (other-buffer (current-buffer))
+ (nth (1+ arg) (buffer-list)))))
+
+;; Support the Lucid names with `screen' instead of `frame'.
+
+(fset 'current-screen-configuration 'current-frame-configuration)
+(fset 'delete-screen 'delete-frame)
+(fset 'find-file-new-screen 'find-file-other-frame)
+(fset 'find-file-read-only-new-screen 'find-file-read-only-other-frame)
+(fset 'find-tag-new-screen 'find-tag-other-frame)
+;;(fset 'focus-screen 'focus-frame)
+(fset 'iconify-screen 'iconify-frame)
+(fset 'mail-new-screen 'mail-other-frame)
+(fset 'make-screen-invisible 'make-frame-invisible)
+(fset 'make-screen-visible 'make-frame-visible)
+;; (fset 'minibuffer-screen-list 'minibuffer-frame-list)
+(fset 'modify-screen-parameters 'modify-frame-parameters)
+(fset 'next-screen 'next-frame)
+;; (fset 'next-multiscreen-window 'next-multiframe-window)
+;; (fset 'previous-multiscreen-window 'previous-multiframe-window)
+;; (fset 'redirect-screen-focus 'redirect-frame-focus)
+(fset 'redraw-screen 'redraw-frame)
+;; (fset 'screen-char-height 'frame-char-height)
+;; (fset 'screen-char-width 'frame-char-width)
+;; (fset 'screen-configuration-to-register 'frame-configuration-to-register)
+;; (fset 'screen-focus 'frame-focus)
+(fset 'screen-height 'frame-height)
+(fset 'screen-list 'frame-list)
+;; (fset 'screen-live-p 'frame-live-p)
+(fset 'screen-parameters 'frame-parameters)
+(fset 'screen-pixel-height 'frame-pixel-height)
+(fset 'screen-pixel-width 'frame-pixel-width)
+(fset 'screen-root-window 'frame-root-window)
+(fset 'screen-selected-window 'frame-selected-window)
+(fset 'lower-screen 'frame-to-back)
+(fset 'raise-screen 'frame-to-front)
+(fset 'screen-visible-p 'frame-visible-p)
+(fset 'screen-width 'frame-width)
+(fset 'screenp 'framep)
+(fset 'select-screen 'select-frame)
+(fset 'selected-screen 'selected-frame)
+;; (fset 'set-screen-configuration 'set-frame-configuration)
+;; (fset 'set-screen-height 'set-frame-height)
+(fset 'set-screen-position 'set-frame-position)
+(fset 'set-screen-size 'set-frame-size)
+ll (fset 'set-screen-width 'set-frame-width)
+(fset 'switch-to-buffer-new-screen 'switch-to-buffer-other-frame)
+;; (fset 'unfocus-screen 'unfocus-frame)
+(fset 'visible-screen-list 'visible-frame-list)
+(fset 'window-screen 'window-frame)
+(fset 'x-create-screen 'x-create-frame)
+(fset 'x-new-screen 'new-frame)