-
Notifications
You must be signed in to change notification settings - Fork 0
/
itimer.elc
229 lines (224 loc) · 24 KB
/
itimer.elc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
;ELC
;;; Compiled by [email protected] on Thu Feb 15 11:21:50 2001
;;; from file /user/reto/emacs/vhdl-mode/src/itimer.el
;;; in Emacs version 20.4.1
;;; with bytecomp version 2.56
;;; with all optimizations.
;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
(< (aref emacs-version (1- (length emacs-version))) ?A)
(or (and (boundp 'epoch::version) epoch::version)
(string-lessp emacs-version "19.29")))
(error "`itimer.el' was compiled for Emacs 19.29 or later"))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'lisp-float-type)
#@39 Version number of the itimer package.
(defconst itimer-version "1.09" (#$ . 642))
#@29 List of all active itimers.
(defvar itimer-list nil (#$ . 730))
#@65 Process that drives all itimers, if a subprocess is being used.
(defvar itimer-process nil (#$ . 800))
#@108 Emacs internal timer that drives the itimer system, if a subprocess
is not being used to drive the system.
(defvar itimer-timer nil (#$ . 910))
#@46 The time the timer driver function last ran.
(defvar itimer-timer-last-wakeup nil (#$ . 1060))
#@142 Interval used for scheduling an event a very short time in the future.
Used internally to make the scheduler wake up early.
Unit is seconds.
(defvar itimer-short-interval 0.001 (#$ . 1162))
#@81 Itimer process will wakeup to service running itimers within this
many seconds.
(defvar itimer-next-wakeup itimer-short-interval (#$ . 1358))
#@39 Keymap used when in Itimer Edit mode.
(defvar itimer-edit-map nil (#$ . 1506))
(byte-code "\204C \304 \305\306\307#\210\305\310\311#\210\305\312\313#\210\305\314\315#\210\305\316\317#\210\305\320\317#\210\305\321\322#\210\305\323\324#\210\305\325\326#\210\305\327\330#\210\331\301!\204K \332\301\nB\331\303!\204W \332\303\nB\332\207" [itimer-edit-map itimer-inside-driver current-load-list itimer-edit-start-marker make-sparse-keymap define-key "s" itimer-edit-set-field "d" itimer-edit-delete-itimer "q" itimer-edit-quit " " itimer-edit-next-field " " next-line "n" "p" previous-line "" itimer-edit-previous-field "x" start-itimer "?" itimer-edit-help boundp nil] 4)
(defalias 'itimer-decrement '(macro . #[(variable) "\301\302DE\207" [variable setq 1-] 4]))
(defalias 'itimer-increment '(macro . #[(variable) "\301\302DE\207" [variable setq 1+] 4]))
(defalias 'itimer-signum '(macro . #[(n) "\301\302\303E\304\301\305D\303\306FF\207" [n if > 0 1 zerop -1] 7]))
#@80 If VAR is not bound to an itimer, signal wrong-type-argument.
This is a macro.
(defalias 'check-itimer '(macro . #[(var) "\301\302\303D\304\305\306\307EEFE\207" [var setq if itimerp signal 'wrong-type-argument list 'itimerp] 10 (#$ . 2498)]))
#@179 If VAR is not bound to a string, look up the itimer that it names and
bind VAR to it. Otherwise, if VAR is not bound to an itimer, signal
wrong-type-argument. This is a macro.
(defalias 'check-itimer-coerce-string '(macro . #[(var) "\301\302\303DD\304D\305DD\306\307\310\311\312EEDFE\207" [var setq cond itimerp stringp get-itimer t signal 'wrong-type-argument list 'string-or-itimer-p] 11 (#$ . 2752)]))
#@147 If VAR is not bound to a number, signal wrong-type-argument.
If VAR is not bound to a positive number, signal args-out-of-range.
This is a macro.
(defalias 'check-nonnegative-number '(macro . #[(var) "\301\302\303\304DD\305\306\307\310EE\302\311\312E\305\313\307DEFFE\207" [var setq if not numberp signal 'wrong-type-argument list 'natnump < 0 'args-out-of-range] 11 (#$ . 3172)]))
#@79 If VAR is not bound to a string, signal wrong-type-argument.
This is a macro.
(defalias 'check-string '(macro . #[(var) "\301\302\303D\304\305\306\307EEFE\207" [var setq if stringp signal 'wrong-type-argument list 'stringp] 10 (#$ . 3566)]))
#@31 Return t if OBJ is an itimer.
(defalias 'itimerp #[(obj) ":\205 G\301=\207" [obj 8] 2 (#$ . 3818)])
#@229 Return non-nil if OBJ is an itimer and is active.
``Active'' means Emacs will run it when it expires.
`activate-timer' must be called on an itimer to make it active.
Itimers started with `start-itimer' are automatically active.
(defalias 'itimer-live-p #[(obj) "\302!\205 >\207" [obj itimer-list itimerp] 2 (#$ . 3928)])
#@28 Return the name of ITIMER.
(defalias 'itimer-name #[(itimer) "\301!\203\n \202 \302\303\301D\"\211@\207" [itimer itimerp signal wrong-type-argument] 5 (#$ . 4259)])
#@52 Return the number of seconds until ITIMER expires.
(defalias 'itimer-value #[(itimer) "\301!\203\n \202 \302\303\301D\"\211A@\207" [itimer itimerp signal wrong-type-argument] 5 (#$ . 4435)])
#@101 Return the value to which ITIMER will be set at restart.
Return nil if this itimer doesn't restart.
(defalias 'itimer-restart #[(itimer) "\301!\203\n \202 \302\303\301D\"\3048\207" [itimer itimerp signal wrong-type-argument 2] 4 (#$ . 4638)])
#@82 Return the function of ITIMER.
This function is called each time ITIMER expires.
(defalias 'itimer-function #[(itimer) "\301!\203\n \202 \302\303\301D\"\3048\207" [itimer itimerp signal wrong-type-argument 3] 4 (#$ . 4893)])
#@223 Return non-nil if ITIMER is an idle timer.
Normal timers expire after a set interval. Idle timers expire
only after Emacs has been idle for a specific interval.
``Idle'' means no command events occur within the interval.
(defalias 'itimer-is-idle #[(itimer) "\301!\203\n \202 \302\303\301D\"\3048\207" [itimer itimerp signal wrong-type-argument 4] 4 (#$ . 5131)])
#@221 Return non-nil if the function of ITIMER will be called with arguments.
ITIMER's function is called with the arguments each time ITIMER expires.
The arguments themselves are retrievable with `itimer-function-arguments'.
(defalias 'itimer-uses-arguments #[(itimer) "\301!\203\n \202 \302\303\301D\"\3048\207" [itimer itimerp signal wrong-type-argument 5] 4 (#$ . 5509)])
#@126 Return the function arguments of ITIMER as a list.
ITIMER's function is called with these argument each time ITIMER expires.
(defalias 'itimer-function-arguments #[(itimer) "\301!\203\n \202 \302\303\301D\"\3048\207" [itimer itimerp signal wrong-type-argument 6] 4 (#$ . 5892)])
(defalias 'itimer-recorded-run-time #[(itimer) "\301!\203\n \202 \302\303\301D\"\3048\207" [itimer itimerp signal wrong-type-argument 7] 4])
#@236 Set the timeout value of ITIMER to be VALUE.
Itimer will expire in this many seconds.
If your version of Emacs supports floating point numbers then
VALUE can be a floating point number. Otherwise it
must be an integer.
Returns VALUE.
(defalias 'set-itimer-value #[(itimer value) "\304!\203\n \202 \305\306\304D\" \247\204 \305\306\307 D\"\202. \310W\203- \305\311 C\"\202. \312 W\203S \313!\203S \314\313!!\203S \315 \210A \240\210\315 \210\202X A \240\210 )\207" [itimer value inhibit-quit itimer-next-wakeup itimerp signal wrong-type-argument natnump 0 args-out-of-range t itimer-name get-itimer itimer-driver-wakeup] 4 (#$ . 6331)])
(defalias 'set-itimer-value-internal #[(itimer value) "\302!\203\n \202 \303\304\302D\" \247\204 \303\304\305 D\"\202. \306W\203- \303\307 C\"\202. A \240\207" [itimer value itimerp signal wrong-type-argument natnump 0 args-out-of-range] 4])
#@261 Set the restart value of ITIMER to be RESTART.
If RESTART is nil, ITIMER will not restart when it expires.
If your version of Emacs supports floating point numbers then
RESTART can be a floating point number. Otherwise it
must be an integer.
Returns RESTART.
(defalias 'set-itimer-restart #[(itimer restart) "\302!\203\n \202 \303\304\302D\" \2033 \247\204# \303\304\305 D\"\2022 \306W\2031 \303\307 C\"\2022 AA \240\207" [itimer restart itimerp signal wrong-type-argument natnump 0 args-out-of-range] 4 (#$ . 7242)])
#@107 Set the function of ITIMER to be FUNCTION.
FUNCTION will be called when itimer expires.
Returns FUNCTION.
(defalias 'set-itimer-function #[(itimer function) "\302!\203\n \202 \303\304\302D\"\305\233 \240\207" [itimer function itimerp signal wrong-type-argument 3] 4 (#$ . 7778)])
#@133 Set flag that says whether ITIMER is an idle timer.
If FLAG is non-nil, then ITIMER will be considered an idle timer.
Returns FLAG.
(defalias 'set-itimer-is-idle #[(itimer flag) "\302!\203\n \202 \303\304\302D\"\305\233 \240\207" [itimer flag itimerp signal wrong-type-argument 4] 4 (#$ . 8071)])
#@220 Set flag that says whether the function of ITIMER is called with arguments.
If FLAG is non-nil, then the function will be called with one argument,
otherwise the function will be called with no arguments.
Returns FLAG.
(defalias 'set-itimer-uses-arguments #[(itimer flag) "\302!\203\n \202 \303\304\302D\"\305\233 \240\207" [itimer flag itimerp signal wrong-type-argument 5] 4 (#$ . 8381)])
#@148 Set the function arguments of ITIMER to be ARGUMENTS.
The function of ITIMER will be called with ARGUMENTS when itimer expires.
Returns ARGUMENTS.
(defalias 'set-itimer-function-arguments #[(itimer &optional arguments) "\302!\203\n \202 \303\304\302D\"\305\233 \240\207" [itimer arguments itimerp signal wrong-type-argument 6] 4 (#$ . 8785)])
(defalias 'set-itimer-recorded-run-time #[(itimer time) "\302!\203\n \202 \303\304\302D\"\305\233 \240\207" [itimer time itimerp signal wrong-type-argument 7] 4])
#@52 Return itimer named NAME, or nil if there is none.
(defalias 'get-itimer #[(name) ";\203 \202 \302\303\304D\"\305 \"\207" [name itimer-list signal wrong-type-argument stringp assoc] 4 (#$ . 9309)])
#@229 Read the name of an itimer from the minibuffer and return the itimer
associated with that name. The user is prompted with PROMPT.
Optional second arg INITIAL-INPUT non-nil is inserted into the
minibuffer as initial user input.
(defalias 'read-itimer #[(prompt &optional initial-input) "\303\304 \305\306\n%!\207" [prompt itimer-list initial-input get-itimer completing-read nil confirm] 7 (#$ . 9521)])
#@61 Delete ITIMER. ITIMER may be an itimer or the name of one.
(defalias 'delete-itimer #[(itimer) "\302!\203\n \202 ;\203 \303!\202 \304\305\306D\"\307 \"\211\207" [itimer itimer-list itimerp get-itimer signal wrong-type-argument string-or-itimer-p delq] 4 (#$ . 9932)])
#@1511 Start an itimer.
Arguments are
NAME, FUNCTION, VALUE &optional RESTART, IS-IDLE, WITH-ARGS, &rest FUNCTION-ARGUMENTS.
NAME is an identifier for the itimer. It must be a string. If an itimer
already exists with this name, NAME will be modified slightly to make
it unique.
FUNCTION should be a function (or symbol naming one). It
will be called each time the itimer expires with arguments of
FUNCTION-ARGUMENTS. The function can access the itimer that
invoked it through the variable `current-itimer'. If WITH-ARGS
is nil then FUNCTION is called with no arguments. This is for
backward compatibility with older versions of the itimer
package which always called FUNCTION with no arguments.
VALUE is the number of seconds until this itimer expires.
If your version of Emacs supports floating point numbers then
VALUE can be a floating point number. Otherwise it
must be an integer.
Optional fourth arg RESTART non-nil means that this itimer should be
restarted automatically after its function is called. Normally an itimer
is deleted at expiration after its function has returned.
If non-nil, RESTART should be a number indicating the value at which
the itimer should be set at restart time.
Optional fifth arg IS-IDLE specifies if this is an idle timer.
Normal timers expire after a set interval. Idle timers expire
only after Emacs has been idle for specific interval.
``Idle'' means no command events occur within the interval.
Returns the newly created itimer.
(defalias 'start-itimer #[(name function value &optional restart is-idle with-args &rest function-arguments) ";\203 \202 \306\307\310D\" \247\204 \306\307\311 D\"\202- \312W\203, \306\313 C\"\202- \n\203P \n\247\204@ \306\307\311\nD\"\202O \n\312W\203N \306\313\nC\"\202O \n\314\315!\203f \316\317\f#T\202T *\320 \n\312\211\211E\257!\210@\207" [name value restart num oname function signal wrong-type-argument stringp natnump 0 args-out-of-range 2 get-itimer format "%s<%d>" activate-itimer is-idle with-args function-arguments itimer-list] 11 (#$ . 10220) (list (completing-read "Start itimer: " itimer-list) (read (completing-read "Itimer function: " obarray 'fboundp)) (let (value) (while (or (not (numberp value)) (< value 0)) (setq value (read-from-minibuffer "Itimer value: " nil nil t))) value) (let ((restart t)) (while (and restart (or (not (numberp restart)) (< restart 0))) (setq restart (read-from-minibuffer "Itimer restart: " nil nil t))) restart) nil nil)])
#@273 Create an unactivated itimer.
The itimer will not begin running until activated with `activate-itimer'.
Set the itimer's expire interval with `set-itimer-value'.
Set the itimer's function interval with `set-itimer-function'.
Once this is done, the timer can be activated.
(defalias 'make-itimer #[nil "\300\301\300\302\300\211\211\301\211\211E\257\207" [nil 0 ignore] 10 (#$ . 12740)])
#@183 Activate ITIMER, which was previously created with `make-itimer'.
ITIMER will be added to the global list of running itimers,
its FUNCTION will be called when it expires, and so on.
(defalias 'activate-itimer #[(itimer) "\306!\203\n \202 \307\310\306D\"\211 >\203 \311\312!\210\313!\247\204) \311\314\313!\"\210\313!\315X\2038 \311\316\313!\"\210\n\204@ \203F \317 \210\202I \320 \210@;\204s \321\322\323\324!\203j \325\326\f#\fT\202V \240\210+\202\202 \324\327!!\203\202 \311\330\327!\"\210\331 B\313!W\205\224 \317 )\207" [itimer itimer-list itimer-process itimer-timer num oname itimerp signal wrong-type-argument error "itimer already activated" itimer-value "itimer timeout value not a number: %s" 0 "itimer timeout value not positive: %s" itimer-driver-wakeup itimer-driver-start "itimer-0" "itimer-" 1 get-itimer format "%s<%d>" itimer-name "itimer named \"%s\" already existing and activated" t name inhibit-quit itimer-next-wakeup] 5 (#$ . 13134)])
#@226 Pop up a buffer containing a list of all itimers.
The major mode of the buffer is Itimer Edit mode. This major mode provides
commands to manipulate itimers; see the documentation for
`itimer-edit-mode' for more information.
(defalias 'list-itimers #[nil "\306\307!`\310!q\210\311 \210\312\313 \210\314\315\316\261\210%\204% `%\f\203\223 \317\320!\210\321\322\f@!!\210\323 \210\324\325\326\327\f@!\"\330\"c\210\323 \210\324\325\326\331\f@!\"\330\"c\210\323 \210\324\325\332\333\f@!\"\334\"c\210\323 \210\335\f@!\203q \336c\210\202t \337c\210\323 \210\340\f@!\203\210 \321\341\f@!!\210\202\214 \321\342!\210\fA\211\204) b\210`%W\203\241 %b\210\343\344!,\207" [buf opoint standard-output itimer-list itimers buffer-read-only get-buffer-create "*Itimer List*" reverse itimer-edit-mode nil erase-buffer "Name Value Restart Function Idle Arguments" "\n" "---- ----- ------- -------- ---- --------" newline 1 prin1 itimer-name tab-to-tab-stop itimer-truncate-string format "%5.5s" itimer-value 5 itimer-restart "%.19s" itimer-function 19 itimer-is-idle "yes" "no" itimer-uses-arguments itimer-function-arguments NONE t display-buffer itimer-edit-start-marker] 6 (#$ . 14133) nil])
#@255 Display a list of all itimers and select it for editing.
The major mode of the buffer containing the listing is Itimer Edit mode.
This major mode provides commands to manipulate itimers; see the documentation
for `itimer-edit-mode' for more information.
(defalias 'edit-itimers #[nil "\204 \203 \304 \210\305 \210\306\307\310!!\210\nb\210\203\"