annotate lisp/emacs-lisp/lucid.el @ 2216:8dfca05a5852

* bytecomp.el (byte-compile-from-buffer): Put buffer containing compiled code in binary overwrite mode.
author Jim Blandy <jimb@redhat.com>
date Tue, 16 Mar 1993 18:35:04 +0000
parents c3bec907580c
children d4cc427a53dd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2088
aa90bb7c515b Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 (defun add-timeout (secs function object &optional resignal)
aa90bb7c515b Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2 (run-at-time secs resignal function object))
aa90bb7c515b Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
aa90bb7c515b Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 (defun disable-timeout (timeout)
aa90bb7c515b Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5 (cancel-timer timeout))
2089
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
6
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
7 (defun copy-tree (tree)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
8 (if (consp tree)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
9 (cons (copy-tree (car tree))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
10 (copy-tree (cdr tree)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
11 (if (vectorp tree)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
12 (let ((new (copy-sequence tree))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
13 (i (1- (length new))))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
14 (while (>= i 0)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
15 (aset new i (copy-tree (aref new i)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
16 (setq i (1- i)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
17 new)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
18 tree)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
19
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
20 (fset 'current-time-seconds 'current-time)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
21
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
22 (defun keymap-parent (keymap)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
23 (let ((tail (cdr keymap)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
24 (while (and tail (not (eq (car tail) 'keymap)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
25 (setq tail (cdr tail)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
26 tail))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
27
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
28 (defun set-keymap-parent (keymap new-parent)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
29 (let ((tail (cdr keymap)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
30 (while (and tail (cdr tail) (not (eq (car (cdr tail)) 'keymap)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
31 (setq tail (cdr tail)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
32 (if tail
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
33 (setcdr tail new-parent))))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
34
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
35 (defun remove-hook (hook-var function)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
36 (if (boundp 'hook-var)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
37 (set hook-var (delq function (symbol-value hook-var)))))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
38
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
39 (defun remprop (symbol prop)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
40 (let ((plist (symbol-plist symbol)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
41 (while (eq (car plist) prop)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
42 (setplist symbol (setq plist (cdr (cdr plist)))))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
43 (while plist
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
44 (if (eq (nth 2 plist) prop)
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
45 (setcdr (cdr plist) (nthcdr 4 plist)))
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
46 (setq plist (cdr (cdr plist))))))
2168
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
47
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
48 (defun map-keymap (function keymap &optional sort-first)
2168
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
49 "Call FUNCTION for every binding in KEYMAP.
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
50 This includes bindings inherited from a parent keymap.
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
51 FUNCTION receives two arguments each time it is called:
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
52 the character (more generally, the event type) that is bound,
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
53 and the binding it has."
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
54 (if sort-first
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
55 (let (list)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
56 (map-keymap (function (lambda (a b)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
57 (setq list (cons (cons a b) list))))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
58 keymap)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
59 (setq list (sort list
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
60 (function (lambda (a b)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
61 (setq a (car a) b (car b))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
62 (if (integerp a)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
63 (if (integerp b) (< a b)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
64 t)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
65 (if (integerp b) t
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
66 (string< a b)))))))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
67 (while list
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
68 (funcall function (car (car list)) (cdr (car list)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
69 (setq list (cdr list))))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
70 (while (consp keymap)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
71 (if (consp (car keymap))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
72 (funcall function (car (car keymap)) (cdr (car keymap)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
73 (if (vectorp (car keymap))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
74 (let ((i (1- (length (car keymap))))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
75 (vector (car keymap)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
76 (while (>= i 0)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
77 (funcall function i (aref vector i))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
78 (setq i (1- i))))))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
79 (setq keymap (cdr keymap)))))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
80
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
81 (defun real-path-name (name &optional default)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
82 (file-truename (expand-file-name name default)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
83
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
84 ;; It's not clear what to return if the mouse is not in FRAME.
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
85 (defun read-mouse-position (frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
86 (let ((pos (mouse-position)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
87 (if (eq (car pos) frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
88 (cdr pos))))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
89
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
90 (defun switch-to-other-buffer (arg)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
91 "Switch to the previous buffer.
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
92 With a numeric arg N, switch to the Nth most recent buffer.
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
93 With an arg of 0, buries the current buffer at the
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
94 bottom of the buffer stack."
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
95 (interactive "p")
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
96 (if (eq arg 0)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
97 (bury-buffer (current-buffer)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
98 (switch-to-buffer
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
99 (if (<= arg 1) (other-buffer (current-buffer))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
100 (nth (1+ arg) (buffer-list)))))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
101
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
102 ;; Support the Lucid names with `screen' instead of `frame'.
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
103
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
104 (fset 'current-screen-configuration 'current-frame-configuration)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
105 (fset 'delete-screen 'delete-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
106 (fset 'find-file-new-screen 'find-file-other-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
107 (fset 'find-file-read-only-new-screen 'find-file-read-only-other-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
108 (fset 'find-tag-new-screen 'find-tag-other-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
109 ;;(fset 'focus-screen 'focus-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
110 (fset 'iconify-screen 'iconify-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
111 (fset 'mail-new-screen 'mail-other-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
112 (fset 'make-screen-invisible 'make-frame-invisible)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
113 (fset 'make-screen-visible 'make-frame-visible)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
114 ;; (fset 'minibuffer-screen-list 'minibuffer-frame-list)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
115 (fset 'modify-screen-parameters 'modify-frame-parameters)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
116 (fset 'next-screen 'next-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
117 ;; (fset 'next-multiscreen-window 'next-multiframe-window)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
118 ;; (fset 'previous-multiscreen-window 'previous-multiframe-window)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
119 ;; (fset 'redirect-screen-focus 'redirect-frame-focus)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
120 (fset 'redraw-screen 'redraw-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
121 ;; (fset 'screen-char-height 'frame-char-height)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
122 ;; (fset 'screen-char-width 'frame-char-width)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
123 ;; (fset 'screen-configuration-to-register 'frame-configuration-to-register)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
124 ;; (fset 'screen-focus 'frame-focus)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
125 (fset 'screen-height 'frame-height)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
126 (fset 'screen-list 'frame-list)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
127 ;; (fset 'screen-live-p 'frame-live-p)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
128 (fset 'screen-parameters 'frame-parameters)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
129 (fset 'screen-pixel-height 'frame-pixel-height)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
130 (fset 'screen-pixel-width 'frame-pixel-width)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
131 (fset 'screen-root-window 'frame-root-window)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
132 (fset 'screen-selected-window 'frame-selected-window)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
133 (fset 'lower-screen 'frame-to-back)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
134 (fset 'raise-screen 'frame-to-front)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
135 (fset 'screen-visible-p 'frame-visible-p)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
136 (fset 'screen-width 'frame-width)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
137 (fset 'screenp 'framep)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
138 (fset 'select-screen 'select-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
139 (fset 'selected-screen 'selected-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
140 ;; (fset 'set-screen-configuration 'set-frame-configuration)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
141 ;; (fset 'set-screen-height 'set-frame-height)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
142 (fset 'set-screen-position 'set-frame-position)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
143 (fset 'set-screen-size 'set-frame-size)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
144 ll (fset 'set-screen-width 'set-frame-width)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
145 (fset 'switch-to-buffer-new-screen 'switch-to-buffer-other-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
146 ;; (fset 'unfocus-screen 'unfocus-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
147 (fset 'visible-screen-list 'visible-frame-list)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
148 (fset 'window-screen 'window-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
149 (fset 'x-create-screen 'x-create-frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
150 (fset 'x-new-screen 'new-frame)