Annotation of OpenXM_contrib/pari-2.2/emacs/pari.el-changes, Revision 1.1.1.1
1.1 noro 1: CHANGE HISTORY of pari.el
2: ========================
3:
4: ==== Version 1 (90)
5: Modified Annete Hoffman's code, replacing her help routines by the
6: system searching the TeX source of the manual. Added support for
7: editing and re-entering previous expressions.
8:
9: ==== Version 2 (23/11/90)
10: gp-get-man-entry fixed to work with the 1.34 version of the manual
11: (the TeX format for entries such as + * etc had changed)
12: gp-send-input and gp-copy-input now do the right thing on previous
13: commands of the form ?command or \parameter=
14: (they just send one line)
15: Regexp for end of expression changed from "time =" to "time",
16: so that it also matches "timer on" and "timer off".
17:
18: ==== Version 2.1 (27/11/90)
19: Changed bin-dir to gp-file-name, mainly so that all global variables
20: start with gp-.
21: (let ((auto-load-alist nil))) in gp-get-man-entry to stop it loading
22: TeX-mode.
23: Various functions added bound to the M-\ key prefix. These shadow the
24: gp meta commands \c \d \t \w \r .
25: M-\ p this was on M-p, sets gp prompt.
26: M-\ c Starts up a menu-driven version of gp-get-man-entry.
27: M-\ t Like \t in gp, but the output is sent to another buffer.
28: M-\ d Like \d in gp, but the output is sent to another buffer.
29: M-\ w Like \w in gp, but allows use of file-name completion
30: in the mini-buffer.
31: M-\ r Like \r in gp, but allows use of file-name completion
32: in the mini-buffer.
33: The menu feature requires a file (pari.menu) the pathname for this is set
34: in the new global variable gp-menu.
35: I made pari.menu by editing users.toc, the TeX source for the table of
36: contents of the manual. This file may be edited by hand, so as to
37: group the gp commands under any desired headings. (The first word of
38: each heading must be unique)
39:
40: ==== Version 2.2 (2/12/90)
41: Renamed gp-meta-dt to gp-meta-command.
42: Replaced (sit-for 1) in gp-meta-command by gp-wait-for-output.
43: (sit-for 1) was too long for short output like \v, but not long enough
44: for commands like \x if the last object was large.
45: Replaced the two kill-line's in gp-meta-command by delete-regions, so as
46: not to mess up the kill-ring. Also replaced a (forward-line -1) by
47: (beginning-of-line) so that only the last line deleted.
48: Simplified the process sentinels. gp-sentinel now kills all related
49: buffers such as *gp-help* if they are present when gp quits.
50: Added a few more of gp's meta commands.
51: M-\ v Like \v in gp, but the output is sent to another buffer.
52: M-\ x Like \x in gp, but the output is sent to another buffer.
53: M-\ s Like \s in gp, but the output is sent to another buffer.
54: (prompts for an argument, just hit RET to send \s)
55: M-\ b Like \b in gp, but the output is sent to another buffer.
56: (prompts for an argument, just hit RET to send \b)
57: M-\ k Like \k in gp, but asks for confimation.
58: M-\ q Like \q in gp, but asks for confimation.
59: Added (ding) to gp-help-menu, when point wraps arround buffer.
60: Took out the (if gp-map nil) stuff. The gp-map is now set up at
61: the `outer level'.
62: Added ! <-> fact to the special cases of gp-get-man-entry
63: Added gp-interupt, bound to C-c
64: Replaced the nested (if )'s in gp-get-man-entry by a (cond )
65: Modified gp-help-menu, so that the whole line of the section
66: is significant, previous version only used the first word.
67:
68:
69: ==== Version 2.3 (5/12/90)
70: Let (gp) take a prefix argument. Any non-nil argument causes gp to prompt
71: for the stack size and prime limit.
72: NOTE
73: With pari 1.35 the syntax will change. The following four lines in
74: the definition of gp will be have to be changed.
75: Delete the second two lines, and take the comment
76: ;; pari 1.35
77: out of the first two lines.
78:
79: ;; pari 1.35 " -s " (read-input "stack size ? ")
80: ;; pari 1.35 " -p " (read-input "prime limit ? ")))
81: " " (read-input "stack size ? ")
82: " " (read-input "prime limit ? ")))
83:
84: The file will then need to be (re-) byte-compiled.
85: Changed the name of the variable gp-arguments to gp-default-arguments.
86:
87:
88: ==== Version 2.4 (6/12/90)
89: Added (run-hooks 'gp-mode-hook) to (gp). Individual users can now set up
90: their preferences in gp-mode-hook in their .emacs.
91: Added (run-hooksÿÿÿÿÿÿ x>u P”Óè P”ΰP”ɸhook specifies a
92: different version of the manual, and (gpman) is called before (gp).
93:
94:
95: ==== Version 2.5 (20/12/90)
96: Added det2 <-> det to the special cases of (gp-get-man-entry). Also
97: added det2 to the file pari.menu.
98: Modified (gp-get-man-entry).
99: ==========================
100: So that if no entry is found, it calls (gp-meta-command "?fn").
101: To make this work, took the (concat "\\" ) out of
102: (gp-meta-command) and replaced eg (gp-meta-command "s") by
103: (gp-meta-command "\\s"). So (gp-get-man-entry) now works with
104: user-defined functions.
105: Re-did (gp-send-input) and (gp-copy-input).
106: =========================================
107: (gp-send-input) now calls (gp-copy-input) to save on duplication of
108: most of the code. Method for determining the extent of the
109: current expression changed. Previous versions searched back to a
110: prompt, then if the first non space character was \ or ? sent one
111: line, otherwise searched forward to the next prompt or error
112: message. This failed spectacularly if the expression involved
113: commands such as print or texprint. Also they did not treat the
114: last expression very well, hence the need to use LFD when
115: entering the last expression. Now, search back to a prompt, then
116: if the first non space is {, search forward to the next } (or
117: prompt/error message in case of bad expressions) otherwise search
118: forward for the first line which does not end with a \ character.
119: The markers last-input-end last-input-start is no longer needed.
120: So removed from various points. These new versions also let you
121: edit ALL lines of the last expression. So the section of
122: pari.txt suggesting the use of LFD is deleted. However can not
123: now send eg, {print("}")}, but do you want to? In any case
124: expressions involving "}" still work if used with the \
125: convention.
126: (gp-set-prompt) modified so that the new gp-prompt-string matches the
127: new prompt AND all the old prompts. The section of pari.txt suggesting
128: that this is only used once is deleted.
129: (while) loop moved inside (gp-wait-for-output), so that the waiting *is*
130: actually done by this function.
131: (gp-meta-command) now sends string directly to pari-process, rather than
132: inserting in *PARI* and calling (gp-send-input).
133:
134:
135: ==== Version 2.6 (14/2/91)
136: (gp-send-input) modified to send three \n's. This flushes out the output
137: of \c. The old version of (gp-send-input) became confused when RET
138: was pressed in response to the prompt:
139: ---- (type return to continue) ----
140: (gp-meta-r) renamed to (gp-meta-R) and bound to M-\ R. A new (gp-meta-r)
141: brings the file into emacs, and then sends the file to pari via
142: (process-send-region). This causes function definitions, multi-line
143: expressions and white space to be read correctly.
144: These next changes were made in response to H. Cohen's mail (29/1/91).
145: gp-prompt-pattern now does not start with "^", so it matches prompts that
146: are not at the beginning of a line. This can happen with, eg:
147: for(k=1,5,print1(k," "))
148: (gp-set-prompt) modified so as not to add a "^" to the user supplied string.
149: (gp-copy-input) would have worked unchanged with the new prompt regexp,
150: except that help commands are not understood. ?cos would have been
151: interpreted as "cos" typed to the prompt "?". So I modified the
152: algorithm for finding the start of the expression to the following:
153: Search back to the prompt. Then move to the beginning of that line and
154: search forward to a prompt. Thus if two `prompts' appear on one line,
155: then the expression is taken to start after the FIRST. So:
156: ? ?cos
157: Is taken as the expression "?cos" typed to the first "?" prompt.
158: (gp-process-sentinel) modified so as NOT to kill the *PARI* buffer. It
159: deletes the window, but leaves the buffer in emacs. It also inserts
160: any message from the exiting process at the end of the buffer.
161: Other buffers eg pari.menu are still killed.
162: (gp-meta-q) no longer asks for confirmation before killing the pari
163: buffers, as *PARI* is not now killed by (gp-process-sentinel).
164: (gp t) now asks for the gp file name and buffer size as well as the stack
165: size and prime limit. The variable gp-default-argument replaced by the
166: three variables: gp-stack-size, gp-buffer-size and gp-prime-limit.
167: Just pressing RET in response to a prompt causes the argument to be
168: set to the default. gp-stack-size should be a string representing the
169: stack size, or "" in which case the "-s" argument is not sent to gp.
170: As a special case if a space is sent to the prompt, the stack-size
171: argument is not sent to gp. This allows (gp t) to a override non-empty
172: default setting of gp-stack-size.
173: Similarly for gp-buffer-size and gp-prime-limit.
174: This has been simplified by the introduction of the `internal' function
175: (gp-read-input) which deals with the handling of default argument strings.
176: The command sent to the shell to start gp is now inserted in *PARI* buffer
177: for the user's information.
178: Back to me ...
179: (gp-sentinel) modified to work correctly with alternative menu and TeX
180: files. It now uses the variables gp-menu and gp-chap3.
181: gp-prompt-pattern initialsed with defvar rather than defconst.
182: Added new variable, gp-prompt-for-args. If users set this to a non-nil
183: value in their gp-mode-hook, M-x gp acts like C-u M-x gp.
184: Replaced instances of (delete-region (point-min) (point-max)) by
185: (erase-buffer) at various points.
186: (gp-meta-k) rewritten. (No change to its functionality.)
187: (gpman) now uses (set-buffer) rather than (switch-to-buffer).
188:
189:
190: ==== Version 2.7 (20/2/91)
191: Undid the change to (gp-send-input) made in V2.6. Sending three
192: consecutive new-lines does not work with pari 1.34.95 (aka 1.35)
193: --- it causes three prompts to be printed.
194: Instead of the above, add "---- (type return to continue) ----" to the regexp
195: gp-prompt-pattern. Actually this causes two new-lines to be sent to this prompt
196: (but who cares).
197: Changed pari-process to gp-process, so that now all global variables have names
198: starting with gp-
199: Initialise gp-stack-size etc to "4000000" rather than "". This means
200: that the default is for gp to have the argument "-s 4000000" rather
201: than no argument. These are equivalent, but it makes the use of C-u M-x gp
202: easier to describe.
203: Moved (gp-meta-R) back to (gp-meta-r) (\r seems to work better in pari 1.34.95).
204:
205: ==== Version 2.7 (10/3/91)
206: Take the version of 2.7 from the official release of pari-1.35.
207: This is the same as my version except for the initial values of
208: gp-man-dvi etc.
209:
210: ==== Version 2.8 (22/4/91)
211: Added (message) commands to (gpman) and (gp-man-sentinel).
212: Changed regexp for end of expression in (gp-copy-input) from
213: "}" to "}$"
214: This is more in line with what gp accepts and also allows
215: expressions of the form:
216: {print("}")}
217: Redo the help menu. This is now a major mode rather than a lisp-loop.
218: This has the advantage that the user can move around the menu
219: using standard emacs commands, or the mouse as well as using SPC
220: and DEL. Also can switch to/from the pari.menu buffer using
221: standard commands. This involves the new keymap gp-menu-map,
222: The help command is now (gp-menu), bound to M-\ c in *PARI* buffer.
223: The commands (gp-menu-quit) (gp-menu-select) (gp-menu-previous)
224: (gp-menu-next) are more or less taken straight from the main loop of 2.7
225: (gp-menu-main) is 2.7's (gp-main-menu) except that it is (interactive).
226: (gp-menu-scroll) is a new command, bound to s, which scrolls the
227: help window.
228: (gp-menu-info) is just (message <the instructions>).
229: Replaced the (other-window 1) commands in (gp-meta-command) and
230: (gp-get-man-entry) by
231: (let ((wind (selected-window)) ... (select-window wind))
232: so that you return
233: to the correct window when more than two windows are visible.
234: Introduced (gp-replace a b) this replaces a by b everywhere in the
235: current buffer.
236: Removed each of the (goto-char (point-min)) (perform-replace ...)
237: in (gp-get-man-entry) by (gp-replace ...). This saves the
238: overheads of messing about with the mark, and (message) that the
239: standard emacs replace functions do.
240: Added the command (gp-break-long-line) after mail from H. Cohen. gp will not
241: accept lines longer than 256 chars. gp-break-long-line (bound to
242: M-\ \) breaks the current line at column 100, inserting \ as necessary.
243:
244:
245: ==== Version 2.8+ (24/4/91) (Modification sent to H. Cohen)
246: (gp-send-input) now uses a temporary file, gp-temp-file, which is read
247: using \r if the expression contains more than 255 chars. This
248: gets around the following two problems.
249: 1) gp can not accept more than 255 chars in one line.
250: 2) emacs can not send any string of more than 1500 or so
251: characters using process-send-region.
252: (gp-sentinel) modified to remove the file gp-temp-file if it exists.
253:
254:
255: ==== Version 2.9 (13/12/91)
256: Made (gp-break-long-line) base line-length on (screen width).
257: The following changes were in response to Henri Cohen's mail of
258: 13/12/91.
259: Changed the regexp for "last expresion" in (gp-copy-input)
260: so that:
261: %[number] =
262: Must come at the beginning of a line, and be followed by a space
263: to be considered to be the result of gp returning a value.
264: ***
265: Must be the first thing on the line except for spaces to be
266: considered an error message.
267: So now you can enter the expressions %1 == %2 and print("***").
268: Added (let (shell-file-name "/bin/sh" ... to (gp-sentinel), hopefully
269: this will avoid problems with people who alias rm to rm -i in
270: their .\(k\|c\|ba\)shrc files.
271: Added gp-meta-a and gp-meta-m identical to gp-meta-b except they
272: send \a and \b. Bound them to M-\ a and M-\ m.
273:
274: ==== Version 2.9+ (16/12/91)
275: Moved the call to (delete-windows-on "*PARI*") further down
276: (gp-sentinel) so that the *PARI* buffer is never displayed
277: after quiting gp. With the previous version, the current buffer
278: could get set to the menu buffer, which was then immediately
279: killed, causing the *PARI* buffer to be redisplayed.
280: Modified the regexp in (gp-copy-input) for "time" and "unused
281: characters" to match "***". Thus you can now enter
282: print("time")
283:
284: ==== Version 2.10 (3/6/92)
285: New version prompted by the release of pari-1.37!
286: Replaced the shell-file-name stuff introduced in 2.9 by a call to
287: (delete-file)
288: Set process-mark in (gp-meta-command), and added (save-excursion)
289: so that it works if not at the end of the buffer.
290: Added completion functions.
291: In the *PARI* buffer M-TAB calls (gp-complete) which will attempt
292: to complete a fuction name. Repeating this causes a list of
293: possible completions to be displayed.
294: (gp-get-man-entry) if called interactively (M-?) now defaults
295: to the word before point, and uses completion (with SPACE or
296: TAB) in the minbuffer to enter the function name.
297: Initially completion will only work on the functions listed in
298: pari.menu. If M-? is used on a user-defined function, then the
299: completion functions will `know' this new function.
300: (gp-add-symbol) has been added to (gp-get-man-entry).
301: Two new functions may be used in a gp-mode-hook (or interactively)
302: to teach the completion system about more user-defined
303: commands.
304: (gp-completion-list "fooa" "foob" "fooc")
305: Will let completion work for these three commands.
306: (gp-completion-file my-command-file)
307: Will add all the commands listed in the file, my-command-file.
308: This should have the same format as pari.menu.
309: one command per line, comments start with #, ALL TEXT BEFORE THE
310: FIRST COMMENT IS IGNORED.
311: The completion symbols are stored in the obarray gp-c-array, this
312: has size gp-max-completions, which should be set large enough
313: to store all possible command names.
314:
315:
316: ==== Version 2.10+ (4/6/92)
317: Replaced (gp-last-word) and [^ \t] by (forward-word +/- 1) in by
318: gp-get-man-entry and gp-complete. gp-last-word deleted. It was
319: originally like this, I changed it, but it is better this way
320: now that save-excursion is used in gp-get-man-entry.
321: Removed gp-max-completions which was incorrectly documented as
322: "Maximum number of command names that may be used in completion"
323: Actually any number of symbols can go in each `bucket' of the
324: hash table, so this is not a hard limit. Array size now set
325: directly (to 509).
326:
327: ==== Version 2.10++ (5/6/92)
328: After mail from Henri Cohen:
329: Added the : back to the prompt in (gp-get-man-entry.)
330: Re-did (gp-complete). Now the help window does appear if there are
331: possible further completions, even if some progress has been
332: made. The window is deleted if a unique completion has been
333: found.
334: (Back to me.)
335: Modified (gp-get-man-entry) so that if no definition is found the
336: help window is not displayed.
337: Modified (gp-get-man-entry) so that \vers is replaced by
338: gp-version, a new variable set at the top of the file.
339:
340: ==== Version 2.11 (9/6/92)
341: Got back a version of 2.10+ from H. Cohen, incorporating the new
342: (gp-complete)
343: Merged in the new (gp-get-man-entry) from 2.10++, and renamed to
344: 2.11, so we should now be back in step.
345: Modified (gp) to get gp-version from the start-up banner printed
346: by gp. gp-version now not defined at top of file.
347: Modified (gp) to check that gp is actually running, not just that
348: gp-process is non-nil. This helps me when debugging,
349: gp-sentinel is supposed to clear gp-process, but if there are
350: errors in the elisp, it may not be called at the right time.
351: Modified (gp-get-man-entry) to only offer a default function name
352: If the word before point is already in the completion array.
353: (H.C. complained that the initial default of 30000 was not very
354: helpful!)
355:
356: ==== Version 2.11+ (10/6/92)
357: Allow (gp-complete) to complete words beginning with "\"
358: Added (gp-completion-list
359: "\\precision" "\\serieslength" "\\format")
360: So that these standard parameters may be completed. (Not \prompt,
361: as if you change the prompt other than by M-\ p, pari.el will
362: become very confused.
363: Add (if (get-buffer "*gp-help*" .... to (gp-complete) to check the
364: help buffer exists before deleting its window.
365:
366: ==== Version 2.12 (11/8/92)
367: Modify (gp-complete) so completing on the single character `\`
368: works as expected.
369: Fixed typo in (gp-complete) `(' in wrong place in case (1) of
370: possible completions.
371: Modify (gp-get-man-entry) so that it does not put the default
372: into the minibuffer, only into the prompt string. This is
373: better, as if you know what function you want, you can M-? and
374: then type ahead with the function name, without having to check
375: that a default entry needs to be deleted first.
376:
377: ==== Version 2.12+ (4/9/92)
378: Modify (gp-wait-for-output) so that it does not wait if gp is not
379: running. Previous version went into an infinite loop looking
380: for the version number if gp could not start for some reason.
381: Like someone moving all the X-window libs!
382: Slightly modified the prompt offered by (gp-get-man-entry).
383: (downcase) the string returned by (buffer-substring) in
384: (gp-complete) and (gp-get-man-entry). This enables completion
385: to work on Mma style ForPrime etc. This required modifying
386: (gp-complete) only to insert the NEW part of the completion,
387: leaving the original, possibly uppercase, string in the *PARI*
388: buffer.
389: This showed up a `feature' of gp. ?COS does not work, so add
390: (downcase) before (gp-get-man-entry) passes ?fn to gp.
391: Add (downcase) to (gp-add-symbol).
392:
393:
394: === Version 2.14 (28/10/96) (K.B.)
395: Fixed gp-set-prompt for gp2 (use default())
396: Added the switch -emacs on command line so that gp knows who is in
397: charge.
398: Defined gp-complete2 to use gp built-in readline completion instead of
399: ours
400: Bound <TAB> to gp-complete2. \M-<TAB> to gp-complete (should be
401: suppressed)
402: Look for system messages (between *******) at beginning
403:
404: === Version 2.15 (01/01/97) (K.B.)
405: Wrote pari.el.in
406: added backward-kill-word-if-far-enough
407:
408: === Version 2.16 (30/03/97) (K.B.)
409: fixed completion with respect to special characters (removed
410: backward-kill-word-if-far-enough)
411:
412: === Version 2.17 (14/04/97) (K.B.)
413: wrote compile: creation of pari.elc by Configure.
414:
415: === Version 2.18 (28/11/97) (K.B.)
416: now that prompt is guaranteed to be in first column, change algorithm in
417: gp-copy-input and anchor prompt (add ^ at beginning of regexp)
418:
419: === Version 2.19 (06/01/98) (K.B.)
420: add color support for PARI buffer and gp scripts (hilit19)
421: new major mode gp-script-mode enabled for *.gp files.
422: remove system messages support (introduced 2.14)
423: gp-version now set by Configure.
424: fixed pari.menu, added special cases to gp-get-man-entry
425: removed all the (downcase ...)
426: send readline commands to GP only in gp-complete2 now.
427: removed gp-completion-list
428:
429: === Version 2.20 (18/01/98) (K.B.)
430: fixed gp-timer regexp.
431: put back @completionfun@ removed inadvertently in 2.19.
432: fixed gp-wait-for-output so that it flushes regularly its buffer
433: (tnx again Gerhard!)
434:
435: === Version 2.21 (18/02/98) (K.B.)
436: increased the priority of gp-string for highlighting.
437:
438: === Version 2.22 (17/03/98) (K.B.)
439: added [+++] (from default(lines,...)) to the error patterns.
440: removed gp-temp-file send all text to gp directly (the 1k limit has
441: been removed)
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>