[BACK]Return to pariemacs.txt CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / pari-2.2 / emacs

Annotation of OpenXM_contrib/pari-2.2/emacs/pariemacs.txt, Revision 1.1

1.1     ! noro        1: This file refers to pari.el version 2.38
        !             2:
        !             3: Users that are used to previous versions should read the part concerning hooks.
        !             4: Also, one key-binging has been changed: M-RET (meta-return) does not copy
        !             5: the input at the end of the buffer but splits the line. The same effect can be
        !             6: obtained via C-j. The command 'gp-copy-input is available via M-c (meta-c).
        !             7: If your version of emacs is at least 20, then customization of most of the
        !             8: variables is now possible through the menu-bar.
        !             9: !! The variables 'gp-stack-size and 'gp-prime-limit are now *integers*.
        !            10:
        !            11:                Some Notes on pari-mode
        !            12:                =======================
        !            13:
        !            14: pari-mode runs pari-gp as a sub process of (gnu-)emacs. Note that pari-mode
        !            15: is *not* a mode in itself but the collection of two modes, namely
        !            16: gp-mode and gp-script-mode described below.
        !            17:
        !            18: INSTALLATION.
        !            19: =============
        !            20:
        !            21: pari-mode consists of four files: pariemacs.txt (this file, for information
        !            22: only), pari.el and two files aimed at writing extensions of pari.el:
        !            23: gp-translator.el and with-syntax.el which is an example of how to write
        !            24: such an extension. When GP is installed, those four files are
        !            25: placed in a convenient directory (/usr/local/lib/pari by default) and pari.el
        !            26: is byte-compiled, producing a file pari.elc. (If this directory is not in
        !            27: your EMACSLOADPATH, read a full path and not only "pari" in the line below.)
        !            28:
        !            29: To use pari-mode, users should add the following line to their .emacs:
        !            30:
        !            31: (autoload 'gp-mode "pari" nil t)
        !            32: (autoload 'gp-script-mode "pari" nil t)
        !            33: (autoload 'gp "pari" nil t)
        !            34: (autoload 'gpman "pari" nil t)
        !            35:
        !            36: Some specific highlighting is then enabled when editing *.gp files
        !            37: (gp-scripts) and three main new commands are made available:
        !            38:
        !            39: M-x gp      starts up the pari-gp process in a new buffer,  *PARI*.
        !            40: C-u M-x gp  same as M-x gp, but prompts for the command line arguments.
        !            41: M-x gpman   starts up a dvi previewer with the PARI-GP manual.
        !            42:
        !            43: To use gpman, you must copy (or link) the file doc/users.dvi (from the
        !            44: standard distribution) to the directory pari.el was installed in.
        !            45:
        !            46: We recommend the use of emacs 20.3 or higher since the installation of
        !            47: the menu-bar item may be quite slow with earlier versions.
        !            48: ===========================================================================
        !            49:
        !            50: GP-MODE/GP-SCRIPT-MODE:
        !            51: =======================
        !            52:
        !            53: The file pari.el introduces two modes. The first one, called gp-mode, is
        !            54: patterned for executing commands under gp. You can then use gp as if you
        !            55: had typed "gp" on your terminal, except that some more features are available,
        !            56: in particular a full page editor (namely emacs !). The second mode is
        !            57: gp-script-mode which helps the user to write gp-scripts (programs). Some
        !            58: further commands are available and described below. Most of these commands
        !            59: are available through the menu-bar item GP. Starting a gp process
        !            60: under emacs will automatically trigger gp-mode. To use gp-script-mode, you
        !            61: have two possibilities: either to add the following lines to your .emacs:
        !            62:
        !            63: (setq auto-mode-alist (cons '("\\.gp$" . gp-script-mode)
        !            64:                               auto-mode-alist))
        !            65:
        !            66: so that any file with the suffix ".gp" will be understood as a gp-script
        !            67: and its edition will trigger gp-script-mode, either to simply make the first
        !            68: line of your program be
        !            69:
        !            70: \\  -*-gp-script-*-
        !            71:
        !            72: (In fact you can put anything on this first line, provided you include
        !            73: the string "-*-gp-script-*-").
        !            74:
        !            75: Common commands (short description):
        !            76:
        !            77: KEY      LISP-NAME             DESCRIPTION
        !            78: ===      =========             ===========
        !            79: TAB      gp-complete           Complete the partly typed gp input line.
        !            80:                                If your .gprc has been built with readline,
        !            81:                                then the lisp-name is gp-complete2.
        !            82: M-?      gp-get-man-entry      Display the manual entry for a gp command.
        !            83: M-H      gp-get-apropos        Find all entries in the manual which contain
        !            84:                                the string you give.
        !            85: M-\ c    gp-help-menu          Some general help.
        !            86: M-\ v    gp-meta-v             Display the version number of the gp file.
        !            87: M-o      gp-restore-wind-conf  Strives to restore the previous window
        !            88:                                configuration and to remove help windows.
        !            89:          run-gp                Make gp read a file. Start a gp process
        !            90:                                if required.
        !            91:          gp-get-TeX-man-entry  Display a description of a given function
        !            92:                                in TeX. This function will start
        !            93:                                a gp process if none is running.
        !            94:          gp-cpl-file           Add a file to the completion list.
        !            95:                                (See gp-make-cpl-file below)
        !            96:          gp-edit-cpl-file      Edit a completion file.
        !            97:                                (See gp-make-cpl-file below)
        !            98:          gp-cpl-file-info      Some informations on completion files.
        !            99: C-l                            Update hilighting locally.
        !           100: C-u C-l                        Rehilight the whole buffer, however long.
        !           101:          gp-set-simple-prompt  Set the prompt to "? "
        !           102:          gp-set-time-prompt    Set a prompt giving the time.
        !           103:          gp-set-date-prompt    Set a prompt that gives the date.
        !           104:          gp-set-separator-prompt
        !           105:                                Set a prompt with a separator
        !           106: M-s      gp-skip-to-error      Strives to locate the latest error detected
        !           107:                                while executing a program.
        !           108:          gp-browser            Start a browser for gp commands. Only
        !           109:                                available with an x window system. See
        !           110:                                Help section.
        !           111:
        !           112:
        !           113: Functions that are not linked with a key can be accessed through the menu-bar
        !           114: or through M-x lisp-name.
        !           115:
        !           116: Commands common to gp-mode and to gp-script-mode may behave differently
        !           117: whether a gp process is being run or not. More information is available
        !           118: if a gp process is being run.
        !           119:
        !           120: The buffer *PARI* is set in gp-mode and the following extra commands are
        !           121: available:
        !           122:
        !           123: KEY      LISP-NAME             DESCRIPTION
        !           124: ===      =========             ===========
        !           125: RET      gp-send-input         Copy current expression to the end,
        !           126:                                   and send to gp.
        !           127: M-c      gp-copy-input         Copy current expression to the end.
        !           128: M-RET    gp-C-j                Split the line.
        !           129: C-j      gp-C-j                Split the line.
        !           130: M-\ p    gp-set-prompt         Set the gp prompt.
        !           131: M-\ t    gp-meta-t       \
        !           132: M-\ d    gp-meta-d        |
        !           133: M-\ r    gp-meta-r        |
        !           134: M-\ w    gp-meta-w        |
        !           135: M-\ x    gp-meta-x         \  Versions of the gp meta-commands, which
        !           136: M-\ s    gp-meta-s         /  prompt for arguments in the mini-buffer
        !           137: M-\ a    gp-meta-a        |   and display output in the help buffer.
        !           138: M-\ b    gp-meta-b        |
        !           139: M-\ m    gp-meta-m        |
        !           140: M-\ k    gp-meta-k        |
        !           141: M-\ q    gp-meta-q       /
        !           142: M-\ \    gp-break-long-line    Break a long line at col. 100, inserting \.
        !           143: M-p      gp-next-cmd           Step to the next command.
        !           144: M-n      gp-previous-cmd       Step to the previous command.
        !           145: C-n      next-line             Step to the next line.
        !           146: C-p      previous-line         Step to the previous line.
        !           147:          gp-toggle             Exchange behaviour of C-p/M-p and C-n/M-n.
        !           148: C-kp-subtract (that's the Ctrl+"-" from the numerical keypad)
        !           149:          gp-remove-last-output Erases last output.
        !           150: M-kp-subtract (that's the Meta+"-" from the numerical keypad)
        !           151:          gp-remove-last-action Erases last input and its output.
        !           152:
        !           153:
        !           154: Within a gp-script set in gp-script-mode, the following extra commands
        !           155: are available:
        !           156:
        !           157: KEY      LISP-NAME             DESCRIPTION
        !           158: ===      =========             ===========
        !           159: M-\ z    gp-run-in-region      Send the marked region to the gp process,
        !           160:                                starting such a process if required.
        !           161:          gp-make-cpl-file      Allow use of the names of the functions
        !           162:                                and of the global variables of this
        !           163:                                program for completion.
        !           164: M-x gp   gp-start-usual        Start a gp session with default parameters.
        !           165: C-u M-x gp gp-start-with-parameters
        !           166:                                Ask for parameters before starting a gp
        !           167:                                session.
        !           168: C-u M-o                        Quit editing a completion file.
        !           169:
        !           170: Note that most of these commands use the emacs meta key.
        !           171: This one may be marked `left' `right' `extended character'  `<>'
        !           172: or various other markings. If your keyboard has not got a meta key. You
        !           173: can use the escape key as a prefix.
        !           174:
        !           175: Thus M-\ corresponds to pressing meta and \ together, or pressing
        !           176: ESC followed by \ .
        !           177: ===========================================================================
        !           178:
        !           179: RET
        !           180: ===
        !           181: If point is after the last gp prompt,  pressing RET sends current gp
        !           182: expression to the gp process. If point is at some previous expression, this
        !           183: expression (which may be several lines long) is copied to the end of the
        !           184: buffer and then executed. If the expression is incomplete, it is *not* sent
        !           185: to gp, and a `virtual' newline is inserted like via C-j. Since emacs does
        !           186: not produce a syntactical analysis of your input, the definition of a
        !           187: complete expression is fairly simple-minded : parenthesis `(' `{' and `['
        !           188: should be properly closed, the last character should not be "\" and not be
        !           189: within a string. If none of these criteria applies, the input is declared
        !           190: complete, whether you were in the middle of a comment or not...
        !           191:
        !           192: M-RET / C-j
        !           193: ===========
        !           194: Introduce a `virtual' newline, so that you can have a input of gp taking
        !           195: several lines. The same behaviour is obtained if you type \ followed by RET.
        !           196:
        !           197: M-c
        !           198: ===
        !           199: M-c, acts like RET, except that the expression is not sent to the gp
        !           200: process. It is just copied to the end, so that it may be edited, and then
        !           201: RET pressed, to send the new expression to gp.
        !           202:
        !           203: TAB
        !           204: ===
        !           205: TAB Tries to complete the partly typed gp command in the *PARI* buffer.
        !           206: Note that you can use C-i instead of TAB. If GP was compiled with the
        !           207: readline library, it knows about all symbols meaningful tp GP, plus some
        !           208: extra keywords (bnf, nf, ell, etc.)
        !           209:
        !           210: Otherwise, it originally `knows' about all the standart commands of GP.
        !           211: User-defined commands will be known to the completion system if they are
        !           212: given as arguments to M-?. Commands to teach the system large numbers of new
        !           213: command names will be described in the part COMPLETION FILES below and later
        !           214: on.
        !           215:
        !           216: M-?
        !           217: ===
        !           218: M-? prompts for the name of a gp command (which may include symbolic names
        !           219: like +). It then finds the appropriate paragraphs of section 3 of the
        !           220: manual, strips off some of the TeX commands, and displays the result in a
        !           221: new window. If the command is not found in the manual, sends ?command to
        !           222: gp, and displays the output in the help window. Thus M-? also works with
        !           223: user-defined commands. You may use space and tab to complete the
        !           224: command name, in the mini-buffer. M-? tries to guess which command you
        !           225: may want help for. If this is incorrect, simply delete that command,
        !           226: and type in the command required.
        !           227:
        !           228: M-\ p
        !           229: =====
        !           230: M-\ p prompts for a new string in the mini-buffer. The command
        !           231:
        !           232: default(prompt,"<new string>")
        !           233:
        !           234: is then sent to gp, so that gp will now prompt for input with <new string>.
        !           235: The variable gp-prompt-pattern is also reset so that RET and M-RET know
        !           236: that gp expressions now start with <new string>. Expressions typed to the
        !           237: old prompt are still recognised.
        !           238:
        !           239:   Note that with this version, you can use a dynamic prompt (using %
        !           240: constructs, which then go through strftime). See note number 5 below.
        !           241:
        !           242: M-\ c
        !           243: =====
        !           244: This shows a menu of subject headings taken from the manual, plus some
        !           245: keywords that may lead to some interesting information. Pressing RET displays
        !           246: the beginning of the chapter, or the list of the functions whose description
        !           247: contains the keyword, as if the M-H command had been typed.
        !           248:
        !           249: M-\ \
        !           250: =====
        !           251: If the line is longer than 100, a \<newline> is inserted every 100
        !           252: characters. This is necessary if the line is longer than 256 characters as gp
        !           253: does not accept line longer than this. M-\ \ moves point to the end of the
        !           254: current line.
        !           255:
        !           256: M-\
        !           257: ===
        !           258: The other commands on the M-\ prefix send the appropriate meta command to
        !           259: gp. However they use the mini-buffer to read arguments (eg so that you can
        !           260: use filename completion) and display any output in the *gp-help* buffer.
        !           261:
        !           262: C-kp-subtract/M-kp-subtract
        !           263: ===========================
        !           264: These commands are available only if you have a separate numerical keypad.
        !           265: You should then press the Control key (respectively the Alt key) and the -
        !           266: from this keypad.
        !           267:
        !           268: ===========================================================================
        !           269:
        !           270: HILIGHTING:
        !           271: ===========
        !           272:
        !           273: If you're using X Windows on a color monitor, Emacs will use different
        !           274: colors to display various parts when in gp-mode (when GP is running)
        !           275: or in gp-script-mode (while editing a file with suffix .gp or after typing
        !           276: M-x gp-script-mode). The colors chosen for hilighting can be modified and
        !           277: customised through the menu-bar; They are then stored in a "pari-colors"
        !           278: file. By default, this file is stored as "pari-colors.el" in the directory
        !           279: where the help files are located (gp-gphelp-dir, chosen at Configure time).
        !           280: If this directory is not writable (in most cases, it shouldn't be), the
        !           281: filename defaults to ~/pari-colors.el. In the other direction, when pari.el
        !           282: is loaded, emacs will look for "gp-gphelp-dir/pari-colors.el" if this
        !           283: directory is writable and otherwise for "~/pari-colors.el".
        !           284:
        !           285: It is possible to override these default by setting the variable
        !           286: 'pari-colors which can be set in 'pari-mode-hook (see below). Colors
        !           287: will then be read from and written to this file.
        !           288:
        !           289: Troubles may occur with "}". A "}" followed by a newline indicates the
        !           290: end of a function definition (starting with a "}"). Spaces ot tab-characters
        !           291: are *not* allowed there. So if you use "}" in a string, simply don't
        !           292: have it followed by a newline --- and pari.el won't get confused.
        !           293:
        !           294: If you usually use font-lock and not hilit19, some troubles may arise.
        !           295: In order to (most probably) prevent them, add the following lines
        !           296: to your .emacs file:
        !           297:
        !           298:   (setq hilit-mode-enable-list '(gp-mode gp-script-mode))
        !           299:
        !           300: NOTE: in order to set the colours, emacs has to be in charge from the
        !           301: moment you send a command until GP outputs an answer. Thus it will appear
        !           302: to hang if you input a command which takes a long time for GP to process.
        !           303: You can hit C-g at any time, which will not affect GP (like C-c would),
        !           304: but will let you back in control of emacs. The output of this specific
        !           305: command will then not be highlighted, but you can rehilight the buffer
        !           306: by C-l.
        !           307:
        !           308:   You can customize the setting through the menu-bar (easiest way) or by
        !           309: modifying your .emacs, AFTER "pari"  has been loaded (if you use autoload
        !           310: then set these variables in a pari-mode-hook):
        !           311:
        !           312:    to disable all highlighting.
        !           313:      (setq gp-no-hilit t)
        !           314:
        !           315:    if you run emacs with a dark background (e.g. in reverse video mode)
        !           316:      (setq hilit-background-mode 'dark)
        !           317:
        !           318:    The default colors can be quite painful to look at. In any case they
        !           319:    are easily configurable using the function hilit-translate. Emacs knows
        !           320:    about the following symbolic hilight groups:
        !           321:
        !           322:     in gp-mode (corresponding to what default(colors,...) would do):
        !           323:       gp-error   gp-history   gp-prompt   gp-output
        !           324:       gp-input   gp-timer     gp-help
        !           325:
        !           326:     in gp-script-mode:
        !           327:       gp-control-statement   gp-default-keywords   gp-default-set
        !           328:       gp-input-cmd           gp-string             gp-function-proto
        !           329:       gp-function-args       gp-comment            gp-global-var
        !           330:
        !           331:     An actual face (font shape + color) is associated to all patterns belonging
        !           332:     to a group using hilit-translate. For instance
        !           333:
        !           334:       (hilit-translate
        !           335:          gp-string   'magenta3    ; all strings will be set in magenta3
        !           336:          gp-comment  'italic-red  ; all comments in italic + red
        !           337:          gp-timer    'hex-ffff60  ; timer output set in RGB color (ff ff 60)
        !           338:          gp-prompt   'default     ; don't highlight the prompt
        !           339:       )
        !           340:     See the documentation of hilit-lookup-face-create for valid face names.
        !           341:
        !           342:     In practice, you could include the following code in your .emacs:
        !           343:
        !           344:       (setq pari-mode-hook
        !           345:         (function (lambda ()
        !           346:            ... ; as above for instance
        !           347:           (if gp-can-hilit
        !           348:             (progn
        !           349:               (hilit-translate gp-prompt 'tomato4)
        !           350:               (hilit-translate gp-timer  'default)
        !           351:               (hilit-translate gp-string  'tomato4)
        !           352:               (hilit-translate gp-comment 'default))))))
        !           353:
        !           354:   There is no need to separate gp-mode from gp-script-mode.
        !           355:
        !           356:
        !           357: ===========================================================================
        !           358:
        !           359: COMPLETION / COMPLETION FILES:
        !           360: ==============================
        !           361:
        !           362: See also the description of the TAB key above.
        !           363:
        !           364: Initially, emacs "knows" all the symbols can are listed by the command
        !           365: gphelp -k "", i.e. essentially all the standard function/variable names.
        !           366: If gp has been built with readline, it knows also some extra symbols.
        !           367: In this case and while editing gp-scripts, emacs will try to start
        !           368: a gp-session in the background and ask readline. Note that it is
        !           369: compulsory for gphelp to be available and that the behaviour will
        !           370: be better if a gp-process can be started.
        !           371:
        !           372: A "completion file", also denoted by "a file in gp-menu format", is a file
        !           373: which contains the string "###" at the beginning of a line. Anything
        !           374: before the first occurence of this string is ignored. Lines starting by
        !           375: this string are considered as commented. Then each non commented line below
        !           376: the first "###" contains a string which will be fed to the completion
        !           377: system. For instance if a file containing:
        !           378:
        !           379: ### Function names:
        !           380: my_function
        !           381: facilitate
        !           382:
        !           383: is send to the completion system through the menu-bar item
        !           384: [GP/Complete/Use Also File...], then the two strings "my_function" and
        !           385: "facilitate" will be known for completion and the completions of "fa"
        !           386: will be "factor" or "facilitate".
        !           387:
        !           388: Completion files relative to a gp-script "program-name" will be called
        !           389: "program-name.cpl" and automatically loaded when editting "program-name".
        !           390:
        !           391: You can tell emacs to also use the function/global-variable names of your
        !           392: script (program) through the menu-bar item [Gp Completion-File Make/Update].
        !           393: To avoid the writing of too many files, it is *not* stored in a file
        !           394: unless you ask to edit it.
        !           395:
        !           396: A file stored in the variable gp-additional-cpl-file is loaded while
        !           397: starting as an additional completion file. It can be set in a hook. Default
        !           398: value is the empty string.
        !           399: ===========================================================================
        !           400:
        !           401: HELP:
        !           402: =====
        !           403:
        !           404: Help is available through two distinct forms, in text or in TeX, and
        !           405: essentially through the menu-bar. In TeX form you can see a TeX version
        !           406: of the manual (via xdvi or something similar), while in text form, a
        !           407: browser is available which starts on an independant frame. In TeX, you
        !           408: can see the tutorial file, and in text, you have access to a survey of
        !           409: the chapter headings of the manual.
        !           410:
        !           411: Furthermore, you can ask for specific help on a given function in both
        !           412: forms, and in text, you can ask for the list of all commands that contain
        !           413: a given string in their description. All these menu-bar items have fairly
        !           414: self-descriptive name, except maybe the last one which is called via
        !           415: [GP/Info on Subject...].
        !           416:
        !           417: ===========================================================================
        !           418:
        !           419: CUSTOMIZATION:
        !           420: ==============
        !           421:
        !           422: From version 2.31 onwards, some environment variables can be set via
        !           423: the menu-bar provided you use a version of emacs which is at least 20.
        !           424: Otherwise, you can use the classical way through a hook as explained
        !           425: in the note number 3 below. Assuming you do have custom.el,
        !           426: the item to be used is [Help/Customize/Specific-Group],
        !           427: and the group to choose is gp. You can then modify the shown variables,
        !           428: and save them for future sessions: they will be stored in your .emacs
        !           429: file under the shape:
        !           430:
        !           431:   (custom-set-variables
        !           432:     ; To select where the colors are stored:
        !           433:     '(pari-colors "~/pari-colors.el")
        !           434:     ; To select a file containing possible completions:
        !           435:     '(gp-additional-cpl-file "")
        !           436:     ; To set parameters of gp:
        !           437:     '(gp-stack-size 10000000)
        !           438:     '(gp-prime-limit 500000)
        !           439:     ; To ask gp to not/always ask for arguments:
        !           440:     '(gp-prompt-for-args nil)
        !           441:     ; To ask/remove tutorial help:
        !           442:     '(gp-tutorial-requiredp t)
        !           443:     ; To set/remove hilighting:
        !           444:     '(gp-no-hilit nil)
        !           445:     ; To set/remove the menu-bar item [GP/Colors]:
        !           446:     '(gp-no-color-item nil)
        !           447:     ; To set/remove both menu-bars:
        !           448:     '(gp-no-menu-bar nil)
        !           449:     ; To keep the PARI buffer when quitting:
        !           450:     '(gp-keep-PARI-buffer-when-quitting t)
        !           451:     ; To have mistakes displayed on a separate window:
        !           452:     '(gp-no-separate-window-for-mistakes nil)
        !           453:     ; To define GP-browser style (1, 2 or 3):
        !           454:     '(gp-browser-style 3)
        !           455:     ; To set locked mode:
        !           456:     '(gp-locked-modep t))
        !           457:   (custom-set-faces)
        !           458:
        !           459: Within  the customization-window, you should save these values for them
        !           460: to become valid. Note that the variables having something to do with the
        !           461: menu-bar will affect only the next session since this menu-bar is
        !           462: computed at the beginning of each session. The same applies to 'gp-no-hilit
        !           463: since it is only used at the beginning of the session to set 'gp-can-hilit
        !           464: which is in fact the relevant variable.
        !           465:
        !           466: ===========================================================================
        !           467:
        !           468: LISP EXPRESSIONS IN GP-SCRIPTS:
        !           469: ===============================
        !           470:
        !           471: A new functionnality of version 2.21 is the possibility to introduce
        !           472: emacs-lisp-commands inside a gp-script. Emacs lisp commands can be inserted
        !           473: anywhere and will be executed prior to sending the file to gp. The file
        !           474: should be edited for emacs to take care of these commands. They are to be
        !           475: surrounded by "/*@" and "*/", like in
        !           476:
        !           477: /*@
        !           478: (setq gp-prompt-pattern (gp-make-gp-prompt-pattern "^NewOne: "))
        !           479: */
        !           480:
        !           481: An additional cookie is the string "\\@" which, when located in a program at
        !           482: the beginning of a line and followed by a newline is understood as
        !           483: emacs-should-not-wait-for-output-of-the-program, which is convenient
        !           484: while working with lengthy programs that give partial answers.
        !           485: In fact, the effect of "\\@" can be obtained by writing
        !           486:
        !           487: /*@ (setq gp-should-wait-for-outpup nil) */
        !           488:
        !           489: This variable is automatically reset to t after the output.
        !           490: Concerning this functionnality, a hook gp-input-filter-hook is run whenever
        !           491: an input is sent to gp. It can be set in the .emacs and can be modified in
        !           492: the file itself. For instance, if the file "with-syntax.el" contains the
        !           493: function 'translate, we can use
        !           494:
        !           495: /*@
        !           496: (load-file "with-syntax.el")
        !           497: (setq gp-input-filter-hook (list 'translate))
        !           498: */
        !           499:
        !           500: By "translation" we mean applying some transformations to a gp-script before
        !           501: sending it to gp. There is a general file "pari-translator.el" which contains
        !           502: functions handy for writing such a translator. An exemple is provided by the
        !           503: file "with-syntax.el" which enables one to use the syntax "with(foo,to_do)"
        !           504: in a gp-program. Details can be found in this file. It is possible to write
        !           505: a file translating gp-syntax-old-version into gp-syntax-new-version. More
        !           506: complicated and a project is to write a file translating simple MuPAD-syntax
        !           507: into gp-syntax.
        !           508:
        !           509: ===========================================================================
        !           510:
        !           511: HANDLING OF MISTAKES:
        !           512: =====================
        !           513:
        !           514: If you edit a program, execute it (or part of it) via the menu-bar,
        !           515: and an error is found, then emacs will try to locate the typo in your
        !           516: script. Note that this script should be in a visible window. Sometimes,
        !           517: the place shown will not be the proper one and you can ask for the next
        !           518: matching occurence by selecting the menu-item "Skip-to-error". Incidentally,
        !           519: this function will also start the search even if the buffer is not visible,
        !           520: in which case the search will start from the begining of the buffer and not
        !           521: from point-location.
        !           522:
        !           523: In the *PARI* buffer, mistake will be displayed on a separate window,
        !           524: so as not to crowd your session. However you can disable this behaviour
        !           525: by setting the variable 'gp-no-separate-window-for-mistakes to t.
        !           526: Exception to this is a \r command whose output will never go to a
        !           527: separate window.
        !           528:
        !           529: Alternatively, you can delete last output through the key C-kp-subtract
        !           530: (Control and the - from the numerical keypad), and all of last input and
        !           531: out via M-kp-subtract.
        !           532:
        !           533: ===========================================================================
        !           534:
        !           535: LOCKED MODE:
        !           536: ============
        !           537:
        !           538: While working with gp, it is often convenient to pick up a previous input
        !           539: and modify it. The trouble with this method is that the first input is
        !           540: destroyed and your file becomes less readable. You can use M-c to copy the
        !           541: input arounf the cursor to the end and then modify it, but you may be
        !           542: lazier than that... With the locked mode, any tentative modification of an
        !           543: earlier input will result in the copying of this input to the end of your
        !           544: file and the modification is carried out there. That's the meaning of the
        !           545: variable 'gp-locked-mode which is t (true) by default. You can set it to
        !           546: nil (false) if this behaviour is not what you expect.
        !           547:
        !           548: ===========================================================================
        !           549: Notes
        !           550: =====
        !           551:
        !           552: 1) You may edit previous expressions, and then type RET to send them to gp.
        !           553:    However if you want the *PARI* buffer to contain a script of a valid gp
        !           554:    session, you may prefer to use M-RET to copy the expression to the end
        !           555:    of the buffer, before editing it.
        !           556:
        !           557: 2) M-\ c is supposed to be a version of the gp meta command \c, although
        !           558:    it does not send \c to gp.
        !           559:    M-\ p does not correspond to the gp meta command \p but rather to the
        !           560:    command default(prompt,...). If this disturbs you it is easy enough to bind
        !           561:    M-\ p to a command that inserts \p into the *PARI* buffer. The command
        !           562:    gp-set-prompt can then be bound to any key sequence that you wish.
        !           563:    All the other commands on the M-\ prefix do work by sending a gp meta
        !           564:    command to the *PARI* buffer.
        !           565:
        !           566: 3) pari-mode-hook/gp-mode-hook/gp-script-mode-hook:
        !           567:    Individual users can customise gp-mode without having to make copies of
        !           568:    the file pari.el and most of this customization is automatically done
        !           569:    (see the CUSTOMIZATION section above).
        !           570:    For more specific purposes there are *three* hooks, namely gp-mode-hook,
        !           571:    gp-script-mode-hook and an additional hook 'pari-mode-hook common to both
        !           572:    modes. You should mostly use pari-mode-hook but can use also the two more
        !           573:    specialised gp-mode-hook which will be run by the gp command and
        !           574:    gp-script-mode-hook which will be run while starting a gp-script, both
        !           575:    in addition to pari-mode-hook. Essentially the only example where
        !           576:    gp-mode-hook *has to* be used rather than pari-mode-hook is when
        !           577:    setting the prompt via gp-set-prompt (see end of this note and next one).
        !           578:    The format is:
        !           579:
        !           580:        (setq pari-mode-hook
        !           581:          (function (lambda ()
        !           582:           ... commands to run when starting up gp ...
        !           583:         )))
        !           584:
        !           585:    An example is:
        !           586:
        !           587:        (setq pari-mode-hook
        !           588:          (function (lambda ()
        !           589:            (define-key gp-map "\M-\\p" 'gp-meta-p)
        !           590:            (define-key gp-map "\M-p" 'gp-set-prompt)
        !           591:            (setq gp-stack-size 1000000)
        !           592:            (setq gp-prime-limit 2000)
        !           593:            (gp-cpl-file my-file)
        !           594:        )))
        !           595:
        !           596:   This:
        !           597:         Binds a function which sends \p to gp (which would need to be defined
        !           598:              somewhere else), to M-\ p.
        !           599:         Binds gp-set-prompt to M-p.
        !           600:         Defines the default stack size and prime limit as 10000 and 2000.
        !           601:
        !           602:         Let the completion system use all the commands listed in the
        !           603:         file my-file.
        !           604:
        !           605:    In case, customization is not possible through the menu-bar, (see
        !           606:    section CUSTOMIZATION), here is a generic way to set pari-mode-hook:
        !           607:       (setq pari-mode-hook
        !           608:        (function (lambda ()
        !           609:               ; To select where the colors are stored:
        !           610:               (setq pari-colors "~/")
        !           611:               ; To select a file containing possible completions:
        !           612:               (setq gp-additional-cpl-file "")
        !           613:               ; To ask/remove tutorial help:
        !           614:               (setq gp-tutorial-requiredp t)
        !           615:               ; To set/remove hilighting:
        !           616:               (setq gp-no-hilit nil)
        !           617:               ; To set/remove the menu-bar item [GP/Colors]:
        !           618:               (setq gp-no-color-item nil)
        !           619:               ; To set/remove both menu-bars:
        !           620:               (setq gp-no-menu-bar nil)
        !           621:               ; To set parameters of gp:
        !           622:               (setq gp-stack-size 10000000)
        !           623:               (setq gp-prime-limit 500000)
        !           624:               ; To ask gp to not/always ask for arguments:
        !           625:               (setq gp-prompt-for-args nil)
        !           626:               ; To ensure a proper default for completion:
        !           627:               (setq gp-complete-choice 'gp-complete)
        !           628:               ; To keep the PARI buffer when quitting:
        !           629:               (setq gp-keep-PARI-buffer-when-quitting t)
        !           630:               ; To have mistakes displayed on a separate window:
        !           631:               (setq gp-no-separate-window-for-mistakes nil)
        !           632:               ; To define GP-browser style (1, 2 or 3):
        !           633:               (setq gp-browser-style 3)
        !           634:               ; To set locked mode:
        !           635:               (setq gp-locked-modep t)
        !           636:               )))
        !           637:
        !           638:    A change in prompt, which has not gone to the .gprc (see below), *has to*
        !           639:    use the gp-mode-hook. It reads
        !           640:
        !           641:    (setq gp-mode-hook
        !           642:       (function (lambda ()
        !           643:          ; Select a new prompt:
        !           644:          ; (gp-set-prompt "...")
        !           645:        )))
        !           646:
        !           647:    And for instance '...(get-set-prompt "(%R) gp > "))))' will set the
        !           648:    prompt to "(%R) gp > " as soon as you enter gp.
        !           649:
        !           650: 4) Command line arguments.
        !           651:    The gp executable file is specified in the variable gp-file-name. This
        !           652:    is set in the file pari.el, but users can override this setting, either
        !           653:    in their pari-mode-hook, or by using the C-u prefix to gp. In either case,
        !           654:    the full path name need not be given if gp is in a directory specified
        !           655:    in your PATH variable (or the equivalent in csh).
        !           656:    The variables gp-stack-size and gp-prime-limit should be set to integers
        !           657:    specifying the arguments to gp. See the above example.
        !           658:
        !           659:    If these variables are  set to "", then the appropriate flags
        !           660:       "-s" or "-p" are *not* sent to gp.
        !           661:    If RET is typed in response to any of the prompts produced by C-u M-x gp
        !           662:       then the default value, ie., the value of gp-file-name, gp-stack-size,
        !           663:       or gp-prime-limit, is assumed.
        !           664:    If a space is sent to the prompt (ie SPC RET) then the appropriate argument
        !           665:        is not  sent to gp, even if the default is non-empty.
        !           666:
        !           667:    People who often use different settings for these arguments, may like
        !           668:    either to add the line
        !           669:
        !           670:    (setq gp-prompt-for-args t)
        !           671:    to their gp-mode-hook, or to use the command (outside the gp-mode-hook)
        !           672:    (custom-set-variables
        !           673:       '(gp-prompt-for-args t))
        !           674:    This makes M-x gp act like C-u M-x gp.
        !           675:
        !           676: 5) Prompt.
        !           677:    Emacs needs to know at all time what your prompt looks like: it's stored
        !           678:    at all times in gp-prompt-pattern. If you must change your prompt
        !           679:    (e.g. with default(prompt,...)) without telling emacs,  emacs
        !           680:    will try to understand what you mean, and else tell you it has not
        !           681:    succeeded. What you *cannot* use is the command "default(prompt,fn())"
        !           682:    where "fn" is a gp-function which evaluates to a string. Emacs
        !           683:    will accept it though, but won't modify the prompt-pattern, so it
        !           684:    may lead to errors.
        !           685:
        !           686:    If you intend to change your prompt in your .gprc and not in an
        !           687:    emacs session, you have to modify the gp-prompt-pattern regular
        !           688:    expression yourself (AFTER loading pari.el in your .emacs). For instance:
        !           689:
        !           690:    (setq gp-prompt-pattern
        !           691:      (concat "^> [\C-j\t ]*\\|" gp-prompt-pattern))
        !           692:
        !           693:    caters for a 'prompt = "> "' in .gprc. If you use autoload, put this
        !           694:    command in 'pari-mode-hook and *not* in 'gp-mode-hook (see the note 3
        !           695:    for the way to proceed). Don't forget to anchor your prompt
        !           696:    at the beginning of the line (the '^' at the beginning). And don't forget
        !           697:    to concatenate the old pattern as well. A more complicated one is to deal
        !           698:    with 'prompt = "(%R) gp > "':
        !           699:
        !           700:    (setq gp-prompt-pattern
        !           701:     (concat "^([0-9][0-9]:[0-9][0-9]) gp > [\C-j\t ]*\\|" gp-prompt-pattern))
        !           702:
        !           703: 6) Emacs Version.
        !           704:    pari.el till version 2.23 has been written for emacs 19.34. There is
        !           705:    a small problem with emacs 20.3 and pari.el 2.24 onward takes care of
        !           706:    that, while still being usable with emacs 19.34. However, if you use
        !           707:    a version of emacs below 20.3, the installation of the menu-bar item
        !           708:    may be quite slow (some 20s on fast machines), while it is instantaneous
        !           709:    with emacs 20.3 or higher. There may be troubles with XEmacs as far as
        !           710:    colors are concerned, but nothing that I know of.
        !           711: ===========================================================================
        !           712:
        !           713:   Modified: Olivier Ramare 1-July-2000 version 2.37
        !           714:   Modified: Olivier Ramare 29-October-1999 version 2.33
        !           715:   Modified: Olivier Ramare 4-September-1999 version 2.32.
        !           716:   Modified: Olivier Ramare 23-June-1999 version 2.31.
        !           717:   Modified: Olivier Ramare 15-Marsh-1999 version 2.28.
        !           718:   Modified: Olivier Ramare 28-January-1999 version 2.24.
        !           719:   Modified: Karim Belabas 13-January-1998 version 2.19.
        !           720:   Modified from the original file pari.txt written by David Carlisle
        !           721:
        !           722:   1-July-2000 version 2.38 (This file refers to pari.el version 2.38)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>