diff options
author | Karoly Lorentey <lorentey@elte.hu> | 2005-07-05 22:12:55 +0000 |
---|---|---|
committer | Karoly Lorentey <lorentey@elte.hu> | 2005-07-05 22:12:55 +0000 |
commit | 41be4f66fd33b17eba3e3ed4b8f8828c77f18517 (patch) | |
tree | 23558632ba5eac56317f1df9fac514f439e7f82d /lisp | |
parent | 2f98e6e37b5870a644a178d4d6998c6c7f1f68dd (diff) | |
parent | 41700b79db6e52aee51d9d57c453b5f6fbd61e6e (diff) | |
download | emacs-41be4f66fd33b17eba3e3ed4b8f8828c77f18517.tar.gz |
Merged from miles@gnu.org--gnu-2005 (patch 83-87, 449-468)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-449
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-450
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-451
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-452
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-453
Update from CVS: lisp/subr.el (add-to-ordered-list): Doc fix.
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-454
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-455
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-456
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-457
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-458
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-459
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-460
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-461
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-462
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-463
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-464
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-465
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-466
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-467
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-468
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-83
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-84
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-85
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-86
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-87
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-371
Diffstat (limited to 'lisp')
148 files changed, 4092 insertions, 2276 deletions
diff --git a/lisp/COPYING b/lisp/COPYING index d60c31a97a5..3912109b5cd 100644 --- a/lisp/COPYING +++ b/lisp/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. @@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) year name of author + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4efa62aa2c3..2c566f3fb1f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,641 @@ +2005-07-04 Carsten Dominik <dominik@science.uva.nl> + + * textmodes/org.el: Leading space replaced by TABS. + (org-recalc-marks, org-table-rotate-recalc-marks) + (org-table-get-specials): Treat "^" and "_" marks. + (org-table-justify-field-maybe): Optional argument NEW. + (org-table-eval-formula): Parsing of the format simplified. New + modes C,I. Honor the %= parameter in the current table. Avoid + unnecessary re-align by using the NEW argument to + `org-table-justify-field-maybe'. + (org-calc-default-modes): Default for date-format mimicks + org-mode. + (org-agenda, org-timeline): Quote argument in + `org-agenda-redo-command'. + +2005-07-03 Luc Teirlinck <teirllm@auburn.edu> + + * cus-face.el (custom-theme-set-faces): Make it handle face + aliases whose alias declarations are pre- or autoloaded. + +2005-07-04 Juri Linkov <juri@jurta.org> + + * faces.el (read-face-name): Put the code for getting a face name + from the buffer before adding the faces from the `face' property. + Use `completing-read-multiple' instead of `completing-read'. + Require `crm'. Add default value and post-process the returned + list of faces. + + * emacs-lisp/crm.el (crm-find-current-element) + (crm-minibuffer-complete-and-exit): Handle minibuffer prompt. + + * emacs-lisp/lisp-mode.el (eval-defun-1): + * emacs-lisp/edebug.el (edebug-eval-defun): + Remove unnecessary quotes. + +2005-07-04 Juanma Barranquero <lekktu@gmail.com> + + * add-log.el (add-change-log-entry): + * comint.el (comint-dynamic-list-input-ring) + (comint-dynamic-list-completions): + * dabbrev.el (dabbrev-expand): + * delim-col.el (delimit-columns-rectangle-line): + * diff-mode.el (diff-context->unified, diff-reverse-direction) + (diff-unified->context): + * ediff-init.el (ediff-abbrev-jobname): + * ediff-mult.el (ediff-replace-session-status-in-meta-buffer) + (ediff-replace-session-activity-marker-in-meta-buffer): + * info.el (Info-summary): + * lpr.el (printify-region): + * printing.el (pr-create-interface): + * ps-print.el (ps-print-quote): + * ses.el (ses-column-widths, ses-print-cell) + (ses-adjust-print-width, ses-center): + * shell.el (shell-file-name-quote-list): + * strokes.el (strokes-read-stroke, strokes-read-complex-stroke) + (strokes-fill-current-buffer-with-whitespace) + (strokes-xpm-for-stroke, strokes-list-strokes) + (strokes-xpm-char-bit-p, strokes-xpm-for-compressed-string): + * term.el (term-dynamic-list-input-ring) + (term-dynamic-list-completions): + * calc/calc.el (math-format-stack-value): + * emacs-lisp/edebug.el (edebug-display-freq-count): + * progmodes/delphi.el (delphi-indent-line, delphi-fill-comment) + (delphi-new-comment-line): + * progmodes/ebnf2ps.el (ebnf-eps-filename, ebnf-trim-right): + * progmodes/executable.el (executable-set-magic): + * progmodes/python.el (inferior-python-mode): + * progmodes/scheme.el (scheme-mode-syntax-table): + * progmodes/sh-script.el (sh-maybe-here-document): + * progmodes/sql.el (sql-copy-column): + * progmodes/tcl.el (tcl-comment-indent, tcl-quote): + * textmodes/bibtex.el (bibtex-mode): + * textmodes/sgml-mode.el (html-imenu-index, sgml-attributes) + (sgml-auto-attributes): + * textmodes/table.el (table-insert, table-shorten-cell) + (table--generate-source-scan-lines, table-delete-row) + (*table--cell-delete-char, table--spacify-frame) + (table--horizontally-shift-above-and-below) + (table--cell-insert-char, table--cell-blank-str) + (table--fill-region-strictly): + * textmodes/tex-mode.el (tex-insert-quote, latex-find-indent): + * textmodes/texinfo.el (texinfo-insert-quote): "?\ " -> "?\s". + + * add-log.el (change-log): + * apropos.el (apropos): + * comint.el (comint-completion, comint-source): + * dabbrev.el (dabbrev): + * delim-col.el (columns): + * diff-mode.el (diff-mode): + * ediff.el (ediff): + * ediff-diff.el (ediff-diff): + * ediff-init.el (ediff-highlighting, ediff-merge, ediff-hook): + * ediff-mult.el (ediff-mult): + * ediff-ptch.el (ediff-ptch): + * ediff-wind.el (ediff-window): + * facemenu.el (facemenu): + * indent.el (indent): + * info.el (info): + * jka-cmpr-hook.el (compression, jka-compr): + * lpr.el (lpr): + * outline.el (outlines): + * pcmpl-cvs.el (pcmpl-cvs): + * pcmpl-rpm.el (pcmpl-rpm): + * printing.el (printing): + * ps-print.el (postscript, ps-print, ps-print-horizontal) + (ps-print-vertical, ps-print-headers, ps-print-font) + (ps-print-color, ps-print-face, ps-print-n-up, ps-print-zebra) + (ps-print-background, ps-print-printer, ps-print-page) + (ps-print-miscellany): + * ses.el (ses): + * shell.el (shell, shell-directories, shell-faces): + * startup.el (initialization): + * strokes.el (strokes): + * term.el (term): + * uniquify.el (uniquify): + * w32-vars.el (w32): + * calc/calc.el (calc): + * emacs-lisp/bytecomp.el (bytecomp): + * emacs-lisp/cl-indent.el (lisp-indent): + * emacs-lisp/edebug.el (edebug): + * emacs-lisp/elp.el (elp): + * emacs-lisp/testcover.el (testcover): + * emacs-lisp/trace.el (trace): + * emulation/viper-ex.el (viper-ex): + * emulation/viper-mous.el (viper-mouse): + * mail/mailalias.el (mailalias): + * mail/supercite.el (supercite, supercite-frames) + (supercite-attr, supercite-cite, supercite-hooks): + * net/rcompile.el (remote-compile): + * net/rlogin.el (rlogin): + * obsolete/ooutline.el (outlines): + * progmodes/delphi.el (delphi): + * progmodes/ebnf2ps.el (postscript, ebnf2ps, ebnf-special) + (ebnf-except, ebnf-repeat, ebnf-terminal, ebnf-non-terminal) + (ebnf-production, ebnf-shape, ebnf-displacement, ebnf-syntactic) + (ebnf-optimization): + * progmodes/etags.el (etags): + * progmodes/executable.el (executable): + * progmodes/idlwave.el (idlwave): + * progmodes/pascal.el (pascal): + * progmodes/prolog.el (prolog): + * progmodes/python.el (python): + * progmodes/scheme.el (scheme): + * progmodes/sh-script.el (sh, sh-script): + * progmodes/sql.el (SQL): + * progmodes/tcl.el (tcl): + * textmodes/bibtex.el (bibtex, bibtex-autokey): + * textmodes/enriched.el (enriched): + * textmodes/makeinfo.el (makeinfo): + * textmodes/sgml-mode.el (sgml): + * textmodes/table.el (table-hooks): + * textmodes/tex-mode.el (tex-file, tex-run, tex-view): + * textmodes/texinfo.el (texinfo): + * textmodes/two-column.el (two-column): + Finish `defgroup' description with period. + + * emacs-lisp/cl-indent.el (lisp-indent-maximum-backtracking): + * eshell/esh-var.el (eshell-var): + * progmodes/vhdl-mode.el (vhdl-testbench): + * textmodes/org.el (org): Fix typos in docstrings. + + * emacs-lisp/timer.el (with-timeout): Improve argument/docstring + consistency. + + * progmodes/flymake.el (flymake-find-file): Remove. + (flymake-float-time): Use `with-no-warnings'. + (flymake-check-start-time, flymake-check-was-interrupted) + (flymake-err-info, flymake-is-running, flymake-last-change-time) + (flymake-new-err-info): `defvar' at compile time. + +2005-07-03 Juanma Barranquero <lekktu@gmail.com> + + * replace.el (occur-hook): Doc fix. + (occur-1): Don't call `occur-hook' if there are no matches. + +2005-07-03 Richard M. Stallman <rms@gnu.org> + + * emulation/tpu-edt.el (tpu-original-global-map): Don't copy + global-map, save the same map. + (global-map): Don't alter it at top level. + (tpu-edt-on): Save global map in tpu-original-global-map, then copy. + Then alter it here instead. + (tpu-edt-off): Set global-map to the saved one. + + * emulation/tpu-edt.el (tpu-emacs19-p): Var deleted. + All references simplified. + (tpu-lucid-emacs-p): Renamed from tpu-lucid-emacs19-p. Uses changed. + (zmacs-regions): Add defvar. + (repeat-complex-command-map): Everything about that deleted. + + * textmodes/artist.el (artist-key-is-drawing) + (artist-key-endpoint1, artist-key-poly-point-list) + (artist-key-shape, artist-key-draw-how, artist-popup-menu-table) + (artist-key-compl-table, artist-rb-save-data) + (artist-arrow-point-1, artist-arrow-point-2): Move defvars up. + Don't put them in eval-when-compile. + (artist-set-arrow-points-for-poly): Use `last', not `artist-last'. + + * progmodes/ebrowse.el (ebrowse-revert-tree-buffer-from-file): + Use with-no-warnings. + + * net/browse-url.el (dos-windows-version): Add defvar. + + * mail/supercite.el (filladapt-prefix-table): Add defvar. + + * mail/rmailsum.el (rmail-summary-redo): Add defvar. + (rmail-summary-mode-map, rmail-summary-overlay): Defvars moved up. + (rmail-new-summary-line-count): Renamed from new-summary-line-count. + Add defvar. + (rmail-summary-beginning-of-message): Use with-no-warnings. + (rmail-summary-first-message, rmail-summary-last-message): Likewise. + + * emulation/vip.el (vip-replace-string, ex-map, ex-read): + Use with-no-warnings. + + * emulation/vi.el (vi-mark-region): Use c-mark-function. + (c-mark-function): Add point-moving-unit property. + (vi-goto-line): Use with-no-warnings. + + * emulation/edt.el (edt-last-copied-word): Add defvar. + (zmacs-region-stays): Likewise. + (edt-mark-section-wisely): Use c-mark-function for C. + Use makr-defun for Fortran. + (time-string): defvar deleted. + (edt-display-the-time): Don't set time-string. + + * emacs-lisp/macroexp.el (macroexp-accumulate): Rename arg to var+list. + + * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn): + Don't warn when name is not constant + or for defining the group `emacs'. + + * tooltip.el (gud-tooltip-mode): Add defvar. + + * startup.el (default-frame-background-mode): Add defvar. + + * smerge-mode.el (smerge-mode): Add duplicate defvar near top. + + * info.el (tool-bar-map): Add defvar. + + * dired.el (dnd-protocol-alist): Add defvar. + + * dired-aux.el (dired-query): Display question with answer, when + the user answers. + + * custom.el (custom-add-option): Doc fix. + + * bookmark.el (Info-current-node, Info-suffix-list): Add defvars. + +2005-07-03 Eli Zaretskii <eliz@gnu.org> + + * font-lock.el (font-lock-regexp-grouping-construct): Fix the + bogus name from the last change. + +2005-07-02 Luc Teirlinck <teirllm@auburn.edu> + + * custom.el (custom-declare-variable): Fix typos in comment. + (custom-known-themes): Doc fix. + (custom-theme-directory): New defcustom. + (require-theme): Make it check `custom-theme-directory'. + + * cus-theme.el (custom-new-theme-mode): New function. + (custom-theme-name, custom-theme-variables, custom-theme-faces) + (custom-theme-description): Add compiler defvars. + (customize-create-theme): Add doc to the "*New Custom Theme*" + buffer. Use `custom-new-theme-mode'. + (custom-theme-write): Put the created buffer in emacs-lisp-mode + and save it to the `custom-theme-directory'. Make this the + default directory of the buffer. + +2005-07-02 David Hunter <hunterd_42@comcast.net> (tiny change) + + * progmodes/flymake.el (flymake-mode, flymake-mode-off): + Fix unbalanced parentheses. + +2005-07-02 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/flymake.el (flymake-mode-on, flymake-mode-off): Move body + into flymake-mode and delegate to flymake-mode. + + * find-file.el (ff-which-function-are-we-in): Clean up. + +2005-07-02 Juanma Barranquero <lekktu@gmail.com> + + * replace.el (occur-rename-buffer): Fix docstring. + + * emulation/edt.el (*EDT-keys*, edt-default-global-map) + (edt-last-copied-word, edt-learn-macro-count) + (edt-orig-page-delimiter, edt-orig-transient-mark-mode) + (edt-rect-start-point, edt-user-global-map, rect-start-point) + (time-string, zmacs-region-stays): + * emulation/edt-mapper.el (edt-save-function-key-map) + (EDT-key-name): `defvar' to silence the byte-compiler. + +2005-07-02 Martin Rudalics <rudalics@gmx.at> (tiny change) + + * font-lock.el (font-lock-regexp-grouping-backslash): Rename from + font-lock-regexp-backslash. Doc fix. + (font-lock-regexp-backslash-grouping-construct): Rename from + font-lock-regexp-backslash-construct. Doc fix. + (lisp-font-lock-keywords-2): Fix highlighting of ELisp regexp + grouping constructs. + +2005-07-02 Eli Zaretskii <eliz@gnu.org> + + * makefile.w32-in (bootstrap): Remove the $(EMACS) binary after + updating all the prerequisites. + +2005-07-01 Juanma Barranquero <lekktu@gmail.com> + + * textmodes/org.el (org-agenda-start-on-weekday) + (org-calendar-to-agenda-key, org-agenda-sorting-strategy) + (org-agenda-use-time-grid, org-archive-location) + (org-allow-space-in-links, org-usenet-links-prefer-google) + (org-enable-table-editor, org-export-default-language) + (org-export-html-show-new-buffer, org-fill-paragraph) + (org-cycle, org-goto-ret, org-goto-left, org-goto-right) + (org-goto-quit, org-occur, org-eval-in-calendar) + (org-agenda-cleanup-fancy-diary, org-agenda-no-heading-message) + (org-agenda-diary-entry, org-remember-help) + (org-table-convert-region, org-at-table-p) + (org-table-move-row-down, org-table-move-row-up) + (org-table-copy-region, org-table-toggle-vline-visibility) + (org-table-get-stored-formulas, org-table-get-specials) + (org-recalc-commands, org-table-eval-formula) + (org-table-formula-substitute-names, orgtbl-make-binding) + (org-format-org-table-html, org-format-table-table-html) + (org-format-table-table-html-using-table-generate-source) + (org-customize): Fix typos in docstrings. + (org-level-2, org-at-timestamp-p, org-agenda-day-view) + (org-agenda-toggle-diary, org-agenda-toggle-time-grid) + (org-back-to-heading): Doc fixes. + (org-agenda-toggle-time-grid, org-cmp-category, org-cmp-time) + (org-agenda-change-all-lines, org-get-header): + Improve argument/docstring consistency. + (orgtbl-error): Fix error message. + + * progmodes/flymake.el (flymake-find-possible-master-files) + (flymake-master-file-compare, flymake-get-line-err-count) + (flymake-highlight-line, flymake-gui-warnings-enabled): + Fix typos in docstrings. + (flymake-parse-line, flymake-get-project-include-dirs-function) + (flymake-get-prev-err-line-no, flymake-goto-prev-error): + Doc fixes. + (flymake-get-project-include-dirs-function) + (flymake-make-err-menu-data): + Improve argument/docstring consistency. + +2005-07-01 Lute Kamstra <lute@gnu.org> + + * battery.el (battery-linux-proc-apm): Fix typo in docstring. + Catch errors with ignore-errors. Use temporary buffer. + (battery-linux-proc-acpi): Fix typo in docstring. Document `%r'. + + * facemenu.el (facemenu-unlisted-faces): Delete foreground and + background color faces. + (facemenu-set-foreground, facemenu-set-background): + Use facemenu-set-face-from-menu. + (facemenu-set-face-from-menu): Treat face names that start with + "fg:" or "bg:" as special. + (facemenu-add-new-color): Don't create faces. Simplify. + +2005-06-30 Richard M. Stallman <rms@gnu.org> + + * emacs-lisp/crm.el (crm-do-completion): Handle minibuffer prompt. + (crm-find-current-element): Likewise. + +2005-06-30 Johan Bockg,Ae(Brd <bojohan@users.sourceforge.net> + + * help-fns.el (help-do-arg-highlight): Regexp-quote argument names. + +2005-06-30 Stefan Monnier <monnier@iro.umontreal.ca> + + * arc-mode.el (archive-extract): Make it work as a mouse binding. + (archive-mouse-extract): Make it an obsolete alias. + (archive-mode-map): Don't use archive-mouse-extract any more. + (archive-mode, archive-extract): write-contents-hooks -> + write-contents-functions. + (archive-arc-rename-entry, archive-lzh-rename-entry): Remove unused + first arg. + (archive-rename-entry): Update the call. + (archive-zip-summarize): Remove unused var `method'. + (archive-lzh-summarize): Remove unused var `creator'. + + * emacs-lisp/debug.el (debug): Quieten Drew Adams by killing the + dedicated frame upon exit. + + * arc-mode.el: Bind inhibit-read-only rather than buffer-read-only. + (archive-zip-extract, archive-zip-expunge) + (archive-zip-update, archive-zip-update-case): Use executable-find. + (archive-resummarize, archive-flag-deleted, archive-unmark-all-files): + Use restore-buffer-modified-p. + (archive-extract, archive-add-new-member, archive-write-file-member): + Use with-current-buffer. + (archive-lzh-ogm, archive-zip-chmod-entry): Use dolist. + +2005-06-30 Andreas Schwab <schwab@suse.de> + + * progmodes/gud.el (gud-filter): Remove unneeded progn. + +2005-06-30 Glenn Morris <gmorris@ast.cam.ac.uk> + + * progmodes/sh-script.el (sh-get-kw): `&' also separates words. + +2005-06-30 Juri Linkov <juri@jurta.org> + + * faces.el (vertical-border): Inherit from mode-line-inactive + only on tty. + +2005-06-30 Juanma Barranquero <lekktu@gmail.com> + + * help-fns.el (help-do-arg-highlight): Highlight also -ARG (for + example, -NLINES in the `occur' docstring). + + * replace.el (occur-1): When no matches are found, do not set the + `buffer-read-only' and modified flags for the occur buffer, + because it is deleted. + + * emulation/cua-base.el (cua-check-pending-input) + (cua-repeat-replace-region, cua-mode, cua-debug) + (cua-auto-tabify-rectangles, cua-inhibit-cua-keys): + Fix typos in docstrings. + + * emulation/cua-gmrk.el (cua-toggle-global-mark) + (cua-cut-region-to-global-mark) + (cua--cut-rectangle-to-global-mark): + Remove period from end of messages. + + * emulation/cua-rect.el (cua-do-rectangle-padding): + Remove period from end of messages. + (cua--rectangle-seq-format): Fix typo in docstring. + (cua-sequence-rectangle, cua-fill-char-rectangle): + Improve argument/docstring consistency. + +2005-06-29 Juri Linkov <juri@jurta.org> + + * faces.el (default-frame-background-mode): New internal variable. + (frame-set-background-mode): Use it. + + * startup.el (normal-top-level): Set default-frame-background-mode + instead of frame-background-mode. Before setting it, test for its + nil value. Remove tests for frame-background-mode and frame + parameter `reverse'. Add test for "unspecified-fg". + + * term/xterm.el (xterm-rxvt-set-background-mode): + * term/rxvt.el (rxvt-set-background-mode): + Set default-frame-background-mode instead of frame-background-mode. + +2005-06-29 Juanma Barranquero <lekktu@gmail.com> + + * simple.el (set-variable): Warn about obsolete user variables. + + * imenu.el (imenu--completion-buffer): + * mouse.el (mouse-buffer-menu-alist): + * msb.el (msb-invisible-buffer-p): + * calendar/diary-lib.el (diary-header-line-format): + * emacs-lisp/pp.el (pp-buffer): + * progmodes/cperl-mode.el (cperl-do-auto-fill): + * textmodes/picture.el (picture-replace-match): + Change space constants followed by a sexp to "?\s ". + + * play/decipher.el (decipher-loop-with-breaks): + * textmodes/texinfo.el (texinfo-insert-@item): Change space + constants "protected" from end of line by a comment to "?\s". + +2005-06-29 Stefan Monnier <monnier@iro.umontreal.ca> + + * font-lock.el (save-buffer-state): Use `declare'. + + * progmodes/cperl-mode.el (cperl-find-pods-heres): Don't gratuitously + reset the syntax-table to cperl-mode-syntax-table. + (cperl-mode): Make _ into word-syntax during font-locking so "print" in + "foo_print_bar" is not matched as a reserved keyword. + +2005-06-29 Carsten Dominik <dominik@science.uva.nl> + + * textmodes/org.el (orgtbl-setup): New function, for delayed + setup for the orgtbl commands. + (org-calc-default-modes): New option. + (orgtbl-make-binding): Use `defun' to get better help display. + (org-diary): Call `org-compile-prefix-format'. + (org-table-formula-substitute-names): New function. + (org-agenda-day-view, org-agenda-week-view): New commands. + (org-agenda-toggle-week-view): Command removed. + (org-tbl-menu): Split off from org-org-menu. + (org-mode): Move removal of outline-mode menus to here. + (org-table-formula-debug): New option. + (org-table-insert-row): Keep first field if just "#" or "*". + (org-mode): Paragraph regexps fixed. + (org-table-recalculate-regexp): New constant. + (org-table-justify-field-maybe): Avoid replace if not necessary. + (org-copy-special, org-cut-special): Use `call-interactively'. + (org-table-copy-region): Take region from `interactive' call. + (org-trim): Return string even if no match. + (org-formula): New face. + (org-set-font-lock-defaults): No longer highlight "FIXME". + But highlight formula-related fields in table. + (org-table-p): Use regexp, not fontification. + (org-table-align): Handle white space at end of line. + (org-table-formula-evaluate-inline): New option. + (org-mode): Auto-wrapping in comment lines turned off. + (org-table-copy-down): Evaluate only in copied field, not in + destination. + (org-table-current-formula): Variable removed. + (org-table-store-formulas, org-table-get-stored-formulas) + (org-table-modify-formulas, org-table-replace-in-formulas) + (org-table-maybe-eval-formula): New functions. + (org-table-get-formula): Modify to use stored formulas. + (org-table-insert-column, org-table-delete-column) + (org-table-move-column): Call `org-table-modify-formulas'. + (org-complete): Add completion for keyword formulas. + (orgtbl-mode): Pull orgtbl-mode-map to start of + minor-mode-map-alist. + +2005-06-29 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/python.el (python-check): Require `compile' before + modifying its variables. + + * newcomment.el (comment-indent-default): Don't get fooled by an early + end of buffer. + +2005-06-28 Vinicius Jose Latorre <viniciusjl@ig.com.br> + + * ps-print.el (ps-print-version): Fix version number. + +2005-06-28 Luc Teirlinck <teirllm@auburn.edu> + + * textmodes/ispell.el (ispell-word): Remove stray parenthesis. + +2005-06-28 Richard M. Stallman <rms@gnu.org> + + * textmodes/flyspell.el (flyspell-use-local-map): Variable deleted. + (flyspell-local-mouse-map): Declaration deleted. + (flyspell-mouse-map): Bind only mouse-2. + (flyspell-mode-map): Don't test flyspell-use-local-map. + (flyspell-overlay-keymap-property-name): Var deleted. + (flyspell-mode-on): Don't make local bindings for + flyspell-mouse-map and flyspell-mode-map. + (make-flyspell-overlay): Unconditionally put on `keymap' text prop. + + * textmodes/ispell.el (ispell-word): Do not ignore short words. + + * progmodes/compile.el (compilation-next-error-function): + Don't switch buffers; operate on the current buffer. + + * facemenu.el (facemenu-add-face): Warn when font-lock is active. + + * comint.el (comint-password-prompt-regexp): Accept ", try again". + + * bindings.el (global-map): Bind insertchar and its variants. + +2005-06-27 Richard M. Stallman <rms@gnu.org> + + * textmodes/artist.el (artist-text-overwrite) + (artist-figlet-get-extra-args, artist-text-see-thru): Use read-string. + +2005-06-27 Vinicius Jose Latorre <viniciusjl@ig.com.br> + + * ps-print.el: It was not working the page selection for printing. + Reported by Sebastian Tennant <sebyte@smolny.plus.com>. + (ps-print-version): New version 6.6.7. + (ps-end-sheet): New fun. + (ps-header-sheet, ps-end-job): Call it. + +2005-06-27 Luc Teirlinck <teirllm@auburn.edu> + + * subr.el (add-to-list, add-to-ordered-list): Doc fixes. + +2005-06-27 Lute Kamstra <lute@gnu.org> + + * facemenu.el (facemenu-unlisted-faces): Add foreground and + background color faces. + (facemenu-get-face): Delete function. + (facemenu-set-face-from-menu): Don't call facemenu-get-face. + (facemenu-add-new-color): Make second argument mandatory. + Create the approprate face and return it. Simplify. + (facemenu-set-foreground, facemenu-set-background): Don't check if + color is defined. Use return value of facemenu-add-new-color. + +2005-06-26 Nick Roberts <nickrob@snap.net.nz> + + * progmodes/gud.el (gud-filter): Add missing argument to + with-selected-window. + +2005-06-26 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/easy-mmode.el (define-minor-mode): Don't automatically add + a :require to the defcustom. + + * emacs-lisp/autoload.el (make-autoload): Add the :setter for + defcustoms corresponding to minor modes. + +2005-06-26 David Ponce <david@dponce.com> + + * recentf.el: Require tree-widget instead of wid-edit. + (recentf-filename-handler): Fix widget :type. + (recentf-cancel-dialog, recentf-open-more-files) + (recentf-open-files-action): Doc fix. + (recentf-dialog-goto-first): New function. + (recentf-dialog-mode-map): Set parent keymap first. + (recentf-dialog-mode): Define with define-derived-mode. + Don't display continuation lines in dialogs. + (recentf-edit-list): Rename from recentf-edit-selected-items. + (recentf-edit-list-select): Rename from recentf-edit-list-action. + Simplify. + (recentf-edit-list-validate): New function. + (recentf-edit-list): Update accordingly. + (recentf-open-files-item-shift): Remove. + (recentf-open-files-item): Convert menu elements into tree and + link widgets. Don't create the widgets. + (recentf-open-files): Update accordingly. + (recentf-save-list): Untabify. + 2005-06-25 Luc Teirlinck <teirllm@auburn.edu> + * replace.el (keep-lines-read-args): Add INTERACTIVE arg. + (keep-lines): Add INTERACTIVE arg. Never delete lines only + partially contained in the active region. Do not take active + region into account when called from Lisp, unless INTERACTIVE arg + is non-nil. Use `forward-line' instead of `beginning-of-line' to + avoid trouble with fields. Make marker point nowhere when no + longer used. Always return nil. Doc fix. + (flush-lines): Add INTERACTIVE arg. Do not take active region + into account when called from Lisp, unless INTERACTIVE arg is + non-nil. Use `forward-line' instead of `beginning-of-line' to + avoid trouble with fields. Make marker point nowhere when no + longer used. Always return nil. Doc fix. + (how-many): Add INTERACTIVE arg. Make RSTART and REND args + interchangeable. Do not take active region into account when + called from Lisp, unless INTERACTIVE arg is non-nil. Do not print + message in echo area when called from Lisp, unless INTERACTIVE arg + is non-nil. Avoid saying "1 occurrences". Do not use markers. + Return the number of matches. Doc fix. + (occur): Doc fix. + (perform-replace): Make comment follow double space convention for + the sake of `outline-minor-mode'. + * faces.el (facep): Doc fix. 2005-06-25 Richard M. Stallman <rms@gnu.org> @@ -54,7 +690,7 @@ (line-move-1): When there are overlays around, use vertical-motion. * faces.el (escape-glyph): Use brown against light background. - (nobreak-space): Renamed from no-break-space. + (nobreak-space): Rename from no-break-space. Fix previous change. * dired-aux.el (dired-do-copy): Fix arg prompt. @@ -108,7 +744,7 @@ * bindings.el (propertized-buffer-identification): Use renamed `Buffer-menu-buffer' face. - * faces.el (vertical-border): Renamed from `vertical-divider'. + * faces.el (vertical-border): Rename from `vertical-divider'. (escape-glyph): Change dark-background color back to `cyan'. 2005-06-21 Juri Linkov <juri@jurta.org> @@ -194,8 +830,7 @@ 2005-06-18 Peter Kleiweg <p.c.j.kleiweg@rug.nl> - * progmodes/ps-mode.el: Update version and maintainer's email - address. + * progmodes/ps-mode.el: Update version and maintainer's email address. 2005-06-18 Steve Youngs <steve@xemacs.org> @@ -283,8 +918,8 @@ New backward-compatibility aliases for renamed faces. (eshell-ls-decorated-name): Use renamed eshell-ls faces. - * progmodes/cc-fonts.el (c-nonbreakable-space-face): Remove - "-face" suffix from face name. + * progmodes/cc-fonts.el (c-nonbreakable-space-face): + Remove "-face" suffix from face name. (c-cpp-matchers): Use the variable `c-nonbreakable-space-face' instead of literal face. @@ -412,8 +1047,8 @@ ido-incomplete-regexp. (ido-incomplete-regexp): New face. (ido-completions): Use it. - (ido-complete, ido-exit-minibuffer, ido-completions): Handle - incomplete regexps. + (ido-complete, ido-exit-minibuffer, ido-completions): + Handle incomplete regexps. (ido-completions): Add check for complete match when entering a regexp. 2005-06-15 Stefan Monnier <monnier@iro.umontreal.ca> @@ -442,6 +1077,11 @@ * progmodes/cperl-mode.el (cperl-init-faces): Use literal cperl faces instead of (non-existent) variables. +2005-06-14 Stefan Monnier <monnier@iro.umontreal.ca> + + * iswitchb.el (iswitchb-to-end): Replace mapcar with dolist. + (iswitchb-get-matched-buffers): Likewise. Simplify. + 2005-06-14 Miles Bader <miles@gnu.org> * progmodes/ld-script.el (ld-script-location-counter): diff --git a/lisp/add-log.el b/lisp/add-log.el index 03f44976760..72eda86f131 100644 --- a/lisp/add-log.el +++ b/lisp/add-log.el @@ -33,7 +33,7 @@ (require 'timezone)) (defgroup change-log nil - "Change log maintenance" + "Change log maintenance." :group 'tools :link '(custom-manual "(emacs)Change Log") :prefix "change-log-" @@ -607,13 +607,13 @@ non-nil, otherwise in local time." (beginning-of-line 1) (looking-at "\\s *\\(\\*\\s *\\)?$")) (insert ": ") - (if version (insert version ?\ ))) + (if version (insert version ?\s))) ;; Make it easy to get rid of the function name. (undo-boundary) (unless (save-excursion (beginning-of-line 1) (looking-at "\\s *$")) - (insert ?\ )) + (insert ?\s)) ;; See if the prev function name has a message yet or not. ;; If not, merge the two items. (let ((pos (point-marker))) @@ -633,7 +633,7 @@ non-nil, otherwise in local time." (insert "(")) (set-marker pos nil)) (insert defun "): ") - (if version (insert version ?\ ))))) + (if version (insert version ?\s))))) ;;;###autoload (defun add-change-log-entry-other-window (&optional whoami file-name) diff --git a/lisp/apropos.el b/lisp/apropos.el index b9d7e3ff41d..9ac6d32300d 100644 --- a/lisp/apropos.el +++ b/lisp/apropos.el @@ -61,7 +61,7 @@ (eval-when-compile (require 'cl)) (defgroup apropos nil - "Apropos commands for users and programmers" + "Apropos commands for users and programmers." :group 'help :prefix "apropos") diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el index 13f4559cfaf..ce2100c4f08 100644 --- a/lisp/arc-mode.el +++ b/lisp/arc-mode.el @@ -131,7 +131,7 @@ (make-temp-name (expand-file-name (if (eq system-type 'ms-dos) "ar" "archive.tmp") temporary-file-directory)) - "*Directory for temporary files made by arc-mode.el" + "Directory for temporary files made by arc-mode.el." :type 'directory :group 'archive) @@ -218,11 +218,10 @@ Archive and member name will be added." ;; Zip archive configuration (defcustom archive-zip-extract - (if (locate-file "unzip" nil 'file-executable-p) - '("unzip" "-qq" "-c") - (if (locate-file "pkunzip" nil 'file-executable-p) - '("pkunzip" "-e" "-o-") - '("unzip" "-qq" "-c"))) + (if (and (not (executable-find "unzip")) + (executable-find "pkunzip")) + '("pkunzip" "-e" "-o-") + '("unzip" "-qq" "-c")) "*Program and its options to run in order to extract a zip file member. Extraction should happen to standard output. Archive and member name will be added. If `archive-zip-use-pkzip' is non-nil then this program is @@ -239,11 +238,10 @@ expected to extract to a file junking the directory part of the name." ;; names. (defcustom archive-zip-expunge - (if (locate-file "zip" nil 'file-executable-p) - '("zip" "-d" "-q") - (if (locate-file "pkzip" nil 'file-executable-p) - '("pkzip" "-d") - '("zip" "-d" "-q"))) + (if (and (not (executable-find "zip")) + (executable-find "pkzip")) + '("pkzip" "-d") + '("zip" "-d" "-q")) "*Program and its options to run in order to delete zip file members. Archive and member names will be added." :type '(list (string :tag "Program") @@ -253,11 +251,10 @@ Archive and member names will be added." :group 'archive-zip) (defcustom archive-zip-update - (if (locate-file "zip" nil 'file-executable-p) - '("zip" "-q") - (if (locate-file "pkzip" nil 'file-executable-p) - '("pkzip" "-u" "-P") - '("zip" "-q"))) + (if (and (not (executable-find "zip")) + (executable-find "pkzip")) + '("pkzip" "-u" "-P") + '("zip" "-q")) "*Program and its options to run in order to update a zip file member. Options should ensure that specified directory will be put into the zip file. Archive and member name will be added." @@ -268,11 +265,10 @@ file. Archive and member name will be added." :group 'archive-zip) (defcustom archive-zip-update-case - (if (locate-file "zip" nil 'file-executable-p) - '("zip" "-q" "-k") - (if (locate-file "pkzip" nil 'file-executable-p) - '("pkzip" "-u" "-P") - '("zip" "-q" "-k"))) + (if (and (not (executable-find "zip")) + (executable-find "pkzip")) + '("pkzip" "-u" "-P") + '("zip" "-q" "-k")) "*Program and its options to run in order to update a case fiddled zip member. Options should ensure that specified directory will be put into the zip file. Archive and member name will be added." @@ -371,7 +367,7 @@ Archive and member name will be added." (substitute-key-definition 'undo 'archive-undo map global-map)) (define-key map - (if (featurep 'xemacs) 'button2 [mouse-2]) 'archive-mouse-extract) + (if (featurep 'xemacs) 'button2 [mouse-2]) 'archive-extract) (if (featurep 'xemacs) () ; out of luck @@ -637,8 +633,7 @@ archive. ;; Remote archives are not written by a hook. (if archive-remote nil - (make-local-variable 'write-contents-hooks) - (add-hook 'write-contents-hooks 'archive-write-file)) + (add-hook 'write-contents-functions 'archive-write-file nil t)) (make-local-variable 'require-final-newline) (setq require-final-newline nil) @@ -715,7 +710,7 @@ Optional argument SHUT-UP, if non-nil, means don't print messages when parsing the archive." (widen) (set-buffer-multibyte nil) - (let (buffer-read-only) + (let ((inhibit-read-only t)) (or shut-up (message "Parsing archive file...")) (buffer-disable-undo (current-buffer)) @@ -733,11 +728,11 @@ when parsing the archive." "Recreate the contents listing of an archive." (let ((modified (buffer-modified-p)) (no (archive-get-lineno)) - buffer-read-only) + (inhibit-read-only t)) (widen) (delete-region (point-min) archive-proper-file-start) (archive-summarize t) - (set-buffer-modified-p modified) + (restore-buffer-modified-p modified) (goto-char archive-file-list-start) (archive-next-line no))) @@ -751,19 +746,18 @@ when parsing the archive." (apply (function concat) (mapcar - (function - (lambda (fil) - ;; Using `concat' here copies the text also, so we can add - ;; properties without problems. - (let ((text (concat (aref fil 0) "\n"))) - (if (featurep 'xemacs) - () ; out of luck - (add-text-properties - (aref fil 1) (aref fil 2) - '(mouse-face highlight - help-echo "mouse-2: extract this file into a buffer") - text)) - text))) + (lambda (fil) + ;; Using `concat' here copies the text also, so we can add + ;; properties without problems. + (let ((text (concat (aref fil 0) "\n"))) + (if (featurep 'xemacs) + () ; out of luck + (add-text-properties + (aref fil 1) (aref fil 2) + '(mouse-face highlight + help-echo "mouse-2: extract this file into a buffer") + text)) + text)) files))) (setq archive-file-list-end (point-marker))) @@ -832,7 +826,7 @@ using `make-temp-file', and the generated name is returned." (modified (buffer-modified-p)) (coding-system-for-read 'no-conversion) (lno (archive-get-lineno)) - buffer-read-only) + (inhibit-read-only t)) (if unchanged nil (setq archive-files nil) (erase-buffer) @@ -898,18 +892,12 @@ using `make-temp-file', and the generated name is returned." (kill-local-variable 'buffer-file-coding-system) (after-insert-file-set-coding (- (point-max) (point-min)))))) -(defun archive-mouse-extract (event) - "Extract a file whose name you click on." - (interactive "e") - (mouse-set-point event) - (switch-to-buffer - (save-excursion - (archive-extract) - (current-buffer)))) +(define-obsolete-function-alias 'archive-mouse-extract 'archive-extract "22.1") -(defun archive-extract (&optional other-window-p) +(defun archive-extract (&optional other-window-p event) "In archive mode, extract this entry of the archive into its own buffer." - (interactive) + (interactive (list nil last-input-event)) + (if event (mouse-set-point event)) (let* ((view-p (eq other-window-p 'view)) (descr (archive-get-descr)) (ename (aref descr 0)) @@ -932,8 +920,7 @@ using `make-temp-file', and the generated name is returned." (setq archive (archive-maybe-copy archive)) (setq buffer (get-buffer-create bufname)) (setq just-created t) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (setq buffer-file-name (expand-file-name (concat arcname ":" iname))) (setq buffer-file-truename @@ -942,8 +929,7 @@ using `make-temp-file', and the generated name is returned." (setq default-directory arcdir) (make-local-variable 'archive-superior-buffer) (setq archive-superior-buffer archive-buffer) - (make-local-variable 'local-write-file-hooks) - (add-hook 'local-write-file-hooks 'archive-write-file-member) + (add-hook 'write-file-functions 'archive-write-file-member nil t) (setq archive-subfile-mode descr) (if (and (null @@ -977,26 +963,22 @@ using `make-temp-file', and the generated name is returned." (setq buffer-saved-size (buffer-size)) (normal-mode) ;; Just in case an archive occurs inside another archive. - (if (eq major-mode 'archive-mode) - (progn - (setq archive-remote t) - (if read-only-p (setq archive-read-only t)) - ;; We will write out the archive ourselves if it is - ;; part of another archive. - (remove-hook 'write-contents-hooks 'archive-write-file t))) - (run-hooks 'archive-extract-hooks) + (when (derived-mode-p 'archive-mode) + (setq archive-remote t) + (if read-only-p (setq archive-read-only t)) + ;; We will write out the archive ourselves if it is + ;; part of another archive. + (remove-hook 'write-contents-functions 'archive-write-file t)) + (run-hooks 'archive-extract-hooks) (if archive-read-only (message "Note: altering this archive is not implemented.")))) (archive-maybe-update t)) (or (not (buffer-name buffer)) - (progn - (if view-p - (view-buffer buffer (and just-created 'kill-buffer)) - (if (eq other-window-p 'display) - (display-buffer buffer) - (if other-window-p - (switch-to-buffer-other-window buffer) - (switch-to-buffer buffer)))))))) + (cond + (view-p (view-buffer buffer (and just-created 'kill-buffer))) + ((eq other-window-p 'display) (display-buffer buffer)) + (other-window-p (switch-to-buffer-other-window buffer)) + (t (switch-to-buffer buffer)))))) (defun archive-*-extract (archive name command) (let* ((default-directory (file-name-as-directory archive-tmpdir)) @@ -1056,11 +1038,10 @@ using `make-temp-file', and the generated name is returned." (read-buffer "Buffer containing archive: " ;; Find first archive buffer and suggest that (let ((bufs (buffer-list))) - (while (and bufs (not (eq (save-excursion - (set-buffer (car bufs)) - major-mode) - 'archive-mode))) - (setq bufs (cdr bufs))) + (while (and bufs + (not (with-current-buffer (car bufs) + (derived-mode-p 'archive-mode)))) + (setq bufs (cdr bufs))) (if bufs (car bufs) (error "There are no archive buffers"))) @@ -1069,8 +1050,7 @@ using `make-temp-file', and the generated name is returned." (if buffer-file-name (file-name-nondirectory buffer-file-name) "")))) - (save-excursion - (set-buffer arcbuf) + (with-current-buffer arcbuf (or (eq major-mode 'archive-mode) (error "Buffer is not an archive buffer")) (if archive-read-only @@ -1079,12 +1059,11 @@ using `make-temp-file', and the generated name is returned." (error "An archive buffer cannot be added to itself")) (if (string= name "") (error "Archive members may not be given empty names")) - (let ((func (save-excursion (set-buffer arcbuf) - (archive-name "add-new-member"))) + (let ((func (with-current-buffer arcbuf + (archive-name "add-new-member"))) (membuf (current-buffer))) (if (fboundp func) - (save-excursion - (set-buffer arcbuf) + (with-current-buffer arcbuf (funcall func buffer-file-name membuf name)) (error "Adding a new member is not supported for this archive type")))) ;; ------------------------------------------------------------------------- @@ -1095,10 +1074,10 @@ using `make-temp-file', and the generated name is returned." (save-restriction (message "Updating archive...") (widen) - (let ((writer (save-excursion (set-buffer archive-superior-buffer) - (archive-name "write-file-member"))) - (archive (save-excursion (set-buffer archive-superior-buffer) - (archive-maybe-copy (buffer-file-name))))) + (let ((writer (with-current-buffer archive-superior-buffer + (archive-name "write-file-member"))) + (archive (with-current-buffer archive-superior-buffer + (archive-maybe-copy (buffer-file-name))))) (if (fboundp writer) (funcall writer archive archive-subfile-mode) (archive-*-write-file-member archive @@ -1167,7 +1146,7 @@ With a prefix argument, mark that many files." (beginning-of-line) (let ((sign (if (>= p 0) +1 -1)) (modified (buffer-modified-p)) - buffer-read-only) + (inhibit-read-only t)) (while (not (zerop p)) (if (archive-get-descr t) (progn @@ -1175,7 +1154,7 @@ With a prefix argument, mark that many files." (insert type))) (forward-line sign) (setq p (- p sign))) - (set-buffer-modified-p modified)) + (restore-buffer-modified-p modified)) (archive-next-line 0)) (defun archive-unflag (p) @@ -1194,14 +1173,14 @@ With a prefix argument, un-mark that many members backward." "Remove all marks." (interactive) (let ((modified (buffer-modified-p)) - buffer-read-only) + (inhibit-read-only t)) (save-excursion (goto-char archive-file-list-start) (while (< (point) archive-file-list-end) (or (= (following-char) ? ) (progn (delete-char 1) (insert ? ))) (forward-line 1))) - (set-buffer-modified-p modified))) + (restore-buffer-modified-p modified))) (defun archive-mark (p) "In archive mode, mark this member for group operations. @@ -1306,7 +1285,7 @@ as a relative change like \"g+rw\" as for chmod(2)" (append (cdr command) (cons archive files)))) (defun archive-rename-entry (newname) - "Change the name associated with this entry in the tar file." + "Change the name associated with this entry in the archive file." (interactive "sNew name: ") (if archive-read-only (error "Archive is read-only")) (if (string= newname "") @@ -1315,7 +1294,7 @@ as a relative change like \"g+rw\" as for chmod(2)" (descr (archive-get-descr))) (if (fboundp func) (progn - (funcall func (buffer-file-name) + (funcall func (if enable-multibyte-characters (encode-coding-string newname file-name-coding-system) newname) @@ -1339,7 +1318,7 @@ as a relative change like \"g+rw\" as for chmod(2)" "Undo in an archive buffer. This doesn't recover lost files, it just undoes changes in the buffer itself." (interactive) - (let (buffer-read-only) + (let ((inhibit-read-only t)) (undo))) ;; ------------------------------------------------------------------------- ;; Section: Arc Archives @@ -1391,14 +1370,14 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." "\n")) (apply 'vector (nreverse files)))) -(defun archive-arc-rename-entry (archive newname descr) +(defun archive-arc-rename-entry (newname descr) (if (string-match "[:\\\\/]" newname) (error "File names in arc files must not contain a directory component")) (if (> (length newname) 12) (error "File names in arc files are limited to 12 characters")) (let ((name (concat newname (substring "\0\0\0\0\0\0\0\0\0\0\0\0\0" (length newname)))) - buffer-read-only) + (inhibit-read-only t)) (save-restriction (save-excursion (widen) @@ -1425,7 +1404,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (time2 (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 header.) (hdrlvl (char-after (+ p 20))) ;header level thsize ;total header size (base + extensions) - fnlen efnname fiddle ifnname width p2 creator + fnlen efnname fiddle ifnname width p2 neh ;beginning of next extension header (level 1 and 2) mode modestr uid gid text dir prname gname uname modtime moddate) @@ -1438,13 +1417,9 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (string-as-multibyte str)))) (setq p2 (+ p 22 fnlen))) ; (if (= hdrlvl 1) - (progn ;specific to level 1 header - (setq creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 0)) - (setq neh (+ p2 3))) + (setq neh (+ p2 3)) ;specific to level 1 header (if (= hdrlvl 2) - (progn ;specific to level 2 header - (setq creator (char-after (+ p 23)) ) - (setq neh (+ p 24))))) + (setq neh (+ p 24)))) ;specific to level 2 header (if neh ;if level 1 or 2 we expect extension headers to follow (let* ((ehsize (archive-l-e neh 2)) ;size of the extension header (etype (char-after (+ neh 2)))) ;extension type @@ -1560,7 +1535,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." p (1+ p))) (logand sum 255))) -(defun archive-lzh-rename-entry (archive newname descr) +(defun archive-lzh-rename-entry (newname descr) (save-restriction (save-excursion (widen) @@ -1570,7 +1545,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (oldfnlen (char-after (+ p 21))) (newfnlen (length newname)) (newhsize (+ oldhsize newfnlen (- oldfnlen))) - buffer-read-only) + (inhibit-read-only t)) (if (> newhsize 255) (error "The file name is too long")) (goto-char (+ p 21)) @@ -1585,14 +1560,13 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (save-excursion (widen) (set-buffer-multibyte nil) - (while files - (let* ((fil (car files)) - (p (+ archive-proper-file-start (aref fil 4))) + (dolist (fil files) + (let* ((p (+ archive-proper-file-start (aref fil 4))) (hsize (char-after p)) (fnlen (char-after (+ p 21))) (p2 (+ p 22 fnlen)) (creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 0)) - buffer-read-only) + (inhibit-read-only t)) (if (= creator ?U) (progn (or (numberp newval) @@ -1604,8 +1578,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (delete-char 1) (insert (archive-lzh-resum (1+ p) hsize))) (message "Member %s does not have %s field" - (aref fil 1) errtxt))) - (setq files (cdr files)))))) + (aref fil 1) errtxt))))))) (defun archive-lzh-chown-entry (newuid files) (archive-lzh-ogm newuid files "an uid" 10)) @@ -1616,7 +1589,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (defun archive-lzh-chmod-entry (newmode files) (archive-lzh-ogm ;; This should work even though newmode will be dynamically accessed. - (function (lambda (old) (archive-calc-mode old newmode t))) + (lambda (old) (archive-calc-mode old newmode t)) files "a unix-style mode" 8)) ;; ------------------------------------------------------------------------- ;; Section: Zip Archives @@ -1631,7 +1604,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." visual) (while (string= "PK\001\002" (buffer-substring p (+ p 4))) (let* ((creator (char-after (+ p 5))) - (method (archive-l-e (+ p 10) 2)) + ;; (method (archive-l-e (+ p 10) 2)) (modtime (archive-l-e (+ p 12) 2)) (moddate (archive-l-e (+ p 14) 2)) (ucsize (archive-l-e (+ p 24) 4)) @@ -1709,13 +1682,12 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (save-excursion (widen) (set-buffer-multibyte nil) - (while files - (let* ((fil (car files)) - (p (+ archive-proper-file-start (car (aref fil 4)))) + (dolist (fil files) + (let* ((p (+ archive-proper-file-start (car (aref fil 4)))) (creator (char-after (+ p 5))) (oldmode (aref fil 3)) (newval (archive-calc-mode oldmode newmode t)) - buffer-read-only) + (inhibit-read-only t)) (cond ((memq creator '(2 3)) ; Unix + VMS (goto-char (+ p 40)) (delete-char 2) @@ -1726,7 +1698,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (logand (logxor 1 (lsh newval -7)) 1))) (delete-char 1)) (t (message "Don't know how to change mode for this member")))) - (setq files (cdr files)))))) + )))) ;; ------------------------------------------------------------------------- ;; Section: Zoo Archives diff --git a/lisp/battery.el b/lisp/battery.el index 42ceec0c90c..6e94c176513 100644 --- a/lisp/battery.el +++ b/lisp/battery.el @@ -171,53 +171,49 @@ The following %-sequences are provided: %B Battery status (verbose) %b Battery status, empty means high, `-' means low, `!' means critical, and `+' means charging -%p battery load percentage +%p Battery load percentage %s Remaining time in seconds %m Remaining time in minutes %h Remaining time in hours %t Remaining time in the form `h:min'" (let (driver-version bios-version bios-interface line-status battery-status battery-status-symbol load-percentage - seconds minutes hours remaining-time buffer tem) - (unwind-protect - (save-excursion - (setq buffer (get-buffer-create " *battery*")) - (set-buffer buffer) - (erase-buffer) - (insert-file-contents "/proc/apm") - (re-search-forward battery-linux-proc-apm-regexp) - (setq driver-version (match-string 1)) - (setq bios-version (match-string 2)) - (setq tem (string-to-number (match-string 3) 16)) - (if (not (logand tem 2)) - (setq bios-interface "not supported") - (setq bios-interface "enabled") - (cond ((logand tem 16) (setq bios-interface "disabled")) - ((logand tem 32) (setq bios-interface "disengaged"))) - (setq tem (string-to-number (match-string 4) 16)) - (cond ((= tem 0) (setq line-status "off-line")) - ((= tem 1) (setq line-status "on-line")) - ((= tem 2) (setq line-status "on backup"))) - (setq tem (string-to-number (match-string 6) 16)) - (if (= tem 255) - (setq battery-status "N/A") - (setq tem (string-to-number (match-string 5) 16)) - (cond ((= tem 0) (setq battery-status "high" - battery-status-symbol "")) - ((= tem 1) (setq battery-status "low" - battery-status-symbol "-")) - ((= tem 2) (setq battery-status "critical" - battery-status-symbol "!")) - ((= tem 3) (setq battery-status "charging" - battery-status-symbol "+"))) - (setq load-percentage (match-string 7)) - (setq seconds (string-to-number (match-string 8))) - (and (string-equal (match-string 9) "min") - (setq seconds (* 60 seconds))) - (setq minutes (/ seconds 60) - hours (/ seconds 3600)) - (setq remaining-time - (format "%d:%02d" hours (- minutes (* 60 hours)))))))) + seconds minutes hours remaining-time tem) + (with-temp-buffer + (ignore-errors (insert-file-contents "/proc/apm")) + (when (re-search-forward battery-linux-proc-apm-regexp) + (setq driver-version (match-string 1)) + (setq bios-version (match-string 2)) + (setq tem (string-to-number (match-string 3) 16)) + (if (not (logand tem 2)) + (setq bios-interface "not supported") + (setq bios-interface "enabled") + (cond ((logand tem 16) (setq bios-interface "disabled")) + ((logand tem 32) (setq bios-interface "disengaged"))) + (setq tem (string-to-number (match-string 4) 16)) + (cond ((= tem 0) (setq line-status "off-line")) + ((= tem 1) (setq line-status "on-line")) + ((= tem 2) (setq line-status "on backup"))) + (setq tem (string-to-number (match-string 6) 16)) + (if (= tem 255) + (setq battery-status "N/A") + (setq tem (string-to-number (match-string 5) 16)) + (cond ((= tem 0) (setq battery-status "high" + battery-status-symbol "")) + ((= tem 1) (setq battery-status "low" + battery-status-symbol "-")) + ((= tem 2) (setq battery-status "critical" + battery-status-symbol "!")) + ((= tem 3) (setq battery-status "charging" + battery-status-symbol "+"))) + (setq load-percentage (match-string 7)) + (setq seconds (string-to-number (match-string 8))) + (and (string-equal (match-string 9) "min") + (setq seconds (* 60 seconds))) + (setq minutes (/ seconds 60) + hours (/ seconds 3600)) + (setq remaining-time + (format "%d:%02d" hours (- minutes (* 60 hours)))))))) (list (cons ?v (or driver-version "N/A")) (cons ?V (or bios-version "N/A")) (cons ?I (or bios-interface "N/A")) @@ -240,12 +236,13 @@ in Linux version 2.4.20 and 2.6.0. The following %-sequences are provided: %c Current capacity (mAh) +%r Current rate %B Battery status (verbose) %b Battery status, empty means high, `-' means low, `!' means critical, and `+' means charging %d Temperature (in degrees Celsius) %L AC line status (verbose) -%p battery load percentage +%p Battery load percentage %m Remaining time in minutes %h Remaining time in hours %t Remaining time in the form `h:min'" diff --git a/lisp/bindings.el b/lisp/bindings.el index 89c2cca9045..d077fcb479f 100644 --- a/lisp/bindings.el +++ b/lisp/bindings.el @@ -781,6 +781,11 @@ language you are using." (define-key global-map [insert] 'overwrite-mode) (define-key global-map [C-insert] 'kill-ring-save) (define-key global-map [S-insert] 'yank) +;; `insertchar' is what term.c produces. Should we change term.c +;; to produce `insert' instead? +(define-key global-map [insertchar] 'overwrite-mode) +(define-key global-map [C-insertchar] 'kill-ring-save) +(define-key global-map [S-insertchar] 'yank) (define-key global-map [undo] 'undo) (define-key global-map [redo] 'repeat-complex-command) (define-key global-map [again] 'repeat-complex-command) ; Sun keyboard @@ -791,7 +796,6 @@ language you are using." ;; (define-key global-map [clearline] 'function-key-error) (define-key global-map [insertline] 'open-line) (define-key global-map [deleteline] 'kill-line) -;; (define-key global-map [insertchar] 'function-key-error) (define-key global-map [deletechar] 'delete-char) ;; (define-key global-map [backtab] 'function-key-error) ;; (define-key global-map [f1] 'function-key-error) diff --git a/lisp/bookmark.el b/lisp/bookmark.el index bbf9b3bcce4..b89773d12c7 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -309,7 +309,8 @@ through a file easier.") (defvar bookmark-yank-point 0) (defvar bookmark-current-buffer nil) - +(defvar Info-current-node) +(defvar Info-suffix-list) ;; Helper functions. diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el index 3a99291fdef..7317c2a7b9a 100644 --- a/lisp/calc/calc.el +++ b/lisp/calc/calc.el @@ -207,7 +207,7 @@ (require 'calc-macs) (defgroup calc nil - "GNU Calc" + "GNU Calc." :prefix "calc-" :tag "Calc" :group 'applications) @@ -3026,10 +3026,10 @@ See calc-keypad for details." (setq w (cdr off) off (car off)) (when (> off 0) - (setq c (math-comp-concat (make-string off ? ) c))) + (setq c (math-comp-concat (make-string off ?\s) c))) (or (equal calc-left-label "") (setq c (math-comp-concat (if (eq a 'top-of-stack) - (make-string (length calc-left-label) ? ) + (make-string (length calc-left-label) ?\s) calc-left-label) c))) (when calc-line-numbering @@ -3044,7 +3044,7 @@ See calc-keypad for details." (require 'calc-ext) (setq c (list 'horiz c (make-string (max (- w (math-comp-width c) - (length calc-right-label)) 0) ? ) + (length calc-right-label)) 0) ?\s) '(break -1) calc-right-label))) (setq s (if (stringp c) diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index a0e9d1f90b7..851459fe574 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -290,7 +290,7 @@ The format of the header is specified by `diary-header-line-format'." "Selective display active - press \"s\" in calendar \ before edit/copy" "Diary")) - ?\ (frame-width))) + ?\s (frame-width))) "*Format of the header line displayed by `simple-diary-display'. Only used if `diary-header-line-flag' is non-nil." :group 'diary diff --git a/lisp/comint.el b/lisp/comint.el index 29208d6379c..e751926912f 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -146,11 +146,11 @@ :group 'processes) (defgroup comint-completion nil - "Completion facilities in comint" + "Completion facilities in comint." :group 'comint) (defgroup comint-source nil - "Source finding facilities in comint" + "Source finding facilities in comint." :prefix "comint-" :group 'comint) @@ -338,8 +338,8 @@ This variable is buffer-local." "\\(\\([Oo]ld \\|[Nn]ew \\|'s \\|login \\|\ Kerberos \\|CVS \\|UNIX \\| SMB \\|^\\)\ \[Pp]assword\\( (again)\\)?\\|\ -pass phrase\\|\\(Enter\\|Repeat\\) passphrase\\)\ -\\( for [^:]+\\)?:\\s *\\'" +pass phrase\\|\\(Enter\\|Repeat\\|Bad\\) passphrase\\)\ +\\(?:, try again\\)?\\(?: for [^:]+\\)?:\\s *\\'" "*Regexp matching prompts for passwords in the inferior process. This is used by `comint-watch-for-password-prompt'." :type 'regexp @@ -986,7 +986,7 @@ See also `comint-read-input-ring'." (message "Hit space to flush") (setq comint-dynamic-list-input-ring-window-conf conf) (let ((ch (read-event))) - (if (eq ch ?\ ) + (if (eq ch ?\s) (set-window-configuration conf) (setq unread-command-events (list ch))))))) @@ -2930,7 +2930,7 @@ Typing SPC flushes the help buffer." (progn (mouse-choose-completion first) (set-window-configuration comint-dynamic-list-completions-config)) - (unless (eq first ?\ ) + (unless (eq first ?\s) (setq unread-command-events (listify-key-sequence key))) (unless (eq first ?\t) (set-window-configuration comint-dynamic-list-completions-config)))))) diff --git a/lisp/cus-face.el b/lisp/cus-face.el index 3a3631cdd7e..ac56892e8a0 100644 --- a/lisp/cus-face.el +++ b/lisp/cus-face.el @@ -323,6 +323,10 @@ FACE's list property `theme-face' \(using `custom-push-theme')." (spec (nth 1 entry)) (now (nth 2 entry)) (comment (nth 3 entry))) + ;; If FACE is actually an alias, customize the face it + ;; is aliased to. + (if (get face 'face-alias) + (setq face (get face 'face-alias))) (put face 'saved-face spec) (put face 'saved-face-comment comment) (custom-push-theme 'theme-face face theme 'set spec) @@ -337,6 +341,8 @@ FACE's list property `theme-face' \(using `custom-push-theme')." ;; Old format, a plist of FACE SPEC pairs. (let ((face (nth 0 args)) (spec (nth 1 args))) + (if (get face 'face-alias) + (setq face (get face 'face-alias))) (put face 'saved-face spec) (custom-push-theme 'theme-face face theme 'set spec)) (setq args (cdr (cdr args)))))))) diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el index 41240303037..480743e70f2 100644 --- a/lisp/cus-theme.el +++ b/lisp/cus-theme.el @@ -1,6 +1,6 @@ ;;; cus-theme.el -- custom theme creation user interface ;; -;; Copyright (C) 2001 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2005 Free Software Foundation, Inc. ;; ;; Author: Alex Schroeder <alex@gnu.org> ;; Maintainer: FSF @@ -31,6 +31,18 @@ (eval-when-compile (require 'wid-edit)) +(define-derived-mode custom-new-theme-mode nil "New-Theme" + "Major mode for the buffer created by `customize-create-theme'. +Do not call this mode function yourself. It is only meant for internal +use by `customize-create-theme'." + (set-keymap-parent custom-new-theme-mode-map widget-keymap)) +(put 'custom-new-theme-mode 'mode-class 'special) + +(defvar custom-theme-name) +(defvar custom-theme-variables) +(defvar custom-theme-faces) +(defvar custom-theme-description) + ;;;###autoload (defun customize-create-theme () "Create a custom theme." @@ -38,15 +50,23 @@ (if (get-buffer "*New Custom Theme*") (kill-buffer "*New Custom Theme*")) (switch-to-buffer "*New Custom Theme*") - (kill-all-local-variables) + (let ((inhibit-read-only t)) + (erase-buffer)) + (custom-new-theme-mode) (make-local-variable 'custom-theme-name) (make-local-variable 'custom-theme-variables) (make-local-variable 'custom-theme-faces) (make-local-variable 'custom-theme-description) - (let ((inhibit-read-only t)) - (erase-buffer)) (widget-insert "This buffer helps you write a custom theme elisp file. -This will help you share your customizations with other people.\n\n") +This will help you share your customizations with other people. + +Just insert the names of all variables and faces you want the theme +to include. Then clicking mouse-2 or pressing RET on the [Done] button +will write a theme file that sets all these variables and faces to their +current global values. It will write that file into the directory given +by the variable `custom-theme-directory', usually \"~/.emacs.d/\". + +To undo all your edits to the buffer, use the [Reset] button.\n\n") (widget-insert "Theme name: ") (setq custom-theme-name (widget-create 'editable-field @@ -81,7 +101,6 @@ This will help you share your customizations with other people.\n\n") (bury-buffer)) "Bury Buffer") (widget-insert "\n") - (use-local-map widget-keymap) (widget-setup)) (defun custom-theme-write (&rest ignore) @@ -90,6 +109,10 @@ This will help you share your customizations with other people.\n\n") (variables (widget-value custom-theme-variables)) (faces (widget-value custom-theme-faces))) (switch-to-buffer (concat name "-theme.el")) + (emacs-lisp-mode) + (unless (file-exists-p custom-theme-directory) + (make-directory (file-name-as-directory custom-theme-directory) t)) + (setq default-directory custom-theme-directory) (setq buffer-file-name (expand-file-name (concat name "-theme.el"))) (let ((inhibit-read-only t)) (erase-buffer)) @@ -100,7 +123,8 @@ This will help you share your customizations with other people.\n\n") (insert ")\n") (custom-theme-write-variables name variables) (custom-theme-write-faces name faces) - (insert "\n(provide-theme '" name ")\n"))) + (insert "\n(provide-theme '" name ")\n") + (save-buffer))) (defun custom-theme-write-variables (theme vars) "Write a `custom-theme-set-variables' command for THEME. diff --git a/lisp/custom.el b/lisp/custom.el index f3cbd1404e9..cb4e76dd65a 100644 --- a/lisp/custom.el +++ b/lisp/custom.el @@ -121,7 +121,7 @@ compatibility, DEFAULT is also stored in SYMBOL's property `standard-value'. At the same time, SYMBOL's property `force-value' is set to nil, as the value is no longer rogue." ;; Remember the standard setting. The value should be in the standard - ;; theme, not in this property. However, his would require changeing + ;; theme, not in this property. However, this would require changing ;; the C source of defvar and others as well... (put symbol 'standard-value (list default)) ;; Maybe this option was rogue in an earlier version. It no longer is. @@ -486,8 +486,10 @@ both appear in constructs like `custom-set-variables'." (defun custom-add-option (symbol option) "To the variable SYMBOL add OPTION. -If SYMBOL is a hook variable, OPTION should be a hook member. -For other types variables, the effect is undefined." +If SYMBOL's custom type is a hook, OPTION should be a hook member. +If SYMBOL's custom type is an alist, OPTION specifies a symbol +to offer to the user as a possible key in the alist. +For other custom types, this has no effect." (let ((options (get symbol 'custom-options))) (unless (member option options) (put symbol 'custom-options (cons option options))))) @@ -560,7 +562,7 @@ LOAD should be either a library file name, or a feature name." (t (condition-case nil (load load) (error nil)))))))) (defvar custom-known-themes '(user standard) - "Themes that have been define with `deftheme'. + "Themes that have been defined with `deftheme'. The default value is the list (user standard). The theme `standard' contains the Emacs standard settings from the original Lisp files. The theme `user' contains all the the settings the user customized and saved. @@ -926,6 +928,19 @@ Return non-nil iff the `customized-value' property actually changed." (defvar custom-loaded-themes nil "Themes in the order they are loaded.") +(defcustom custom-theme-directory + (if (eq system-type 'ms-dos) + ;; MS-DOS cannot have initial dot. + "~/_emacs.d/" + "~/.emacs.d/") + "Directory in which Custom theme files should be written. +`require-theme' searches this directory in addition to load-path. +The command `customize-create-theme' writes the files it produces +into this directory." + :type 'string + :group 'customize + :version "22.1") + (defun custom-theme-loaded-p (theme) "Return non-nil when THEME has been loaded." (memq theme custom-loaded-themes)) @@ -949,8 +964,11 @@ Usually the `theme-feature' property contains a symbol created by `custom-make-theme-feature'." ;; Note we do no check for validity of the theme here. ;; This allows to pull in themes by a file-name convention - (require (or (get theme 'theme-feature) - (custom-make-theme-feature theme)))) + (let ((load-path (if (file-directory-p custom-theme-directory) + (cons custom-theme-directory load-path) + load-path))) + (require (or (get theme 'theme-feature) + (custom-make-theme-feature theme))))) (defun custom-remove-theme (spec-alist theme) "Delete all elements from SPEC-ALIST whose car is THEME." diff --git a/lisp/dabbrev.el b/lisp/dabbrev.el index 5dea9892115..cbb2526c852 100644 --- a/lisp/dabbrev.el +++ b/lisp/dabbrev.el @@ -100,7 +100,7 @@ ;;---------------------------------------------------------------- (defgroup dabbrev nil - "Dynamic Abbreviations" + "Dynamic Abbreviations." :tag "Dynamic Abbreviations" :group 'abbrev :group 'convenience) @@ -509,7 +509,7 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion]." (setq direction dabbrev--last-direction)) ;; If the user inserts a space after expanding ;; and then asks to expand again, always fetch the next word. - (if (and (eq (preceding-char) ?\ ) + (if (and (eq (preceding-char) ?\s) (markerp dabbrev--last-abbrev-location) (marker-position dabbrev--last-abbrev-location) (= (point) (1+ dabbrev--last-abbrev-location))) diff --git a/lisp/delim-col.el b/lisp/delim-col.el index b5be7ff4ebc..04cd90961a1 100644 --- a/lisp/delim-col.el +++ b/lisp/delim-col.el @@ -125,7 +125,7 @@ ;; User Options: (defgroup columns nil - "Prettify columns" + "Prettify columns." :link '(emacs-library-link :tag "Source Lisp File" "delim-col.el") :prefix "delimit-columns-" :group 'internal) @@ -424,13 +424,13 @@ START and END delimits the corners of text rectangle." (and delimit-columns-format (make-string (- (aref delimit-columns-max ncol) (- (current-column) origin)) - ?\ ))) + ?\s))) (setq ncol (1+ ncol))) ;; Prepare last column spaces (let ((spaces (and delimit-columns-format (make-string (- (aref delimit-columns-max ncol) (- (current-column) origin)) - ?\ )))) + ?\s)))) ;; Adjust extra columns, if needed (and delimit-columns-extra (while (and (< (setq ncol (1+ ncol)) len) @@ -438,7 +438,7 @@ START and END delimits the corners of text rectangle." (delimit-columns-format spaces) (setq spaces (and delimit-columns-format (make-string (aref delimit-columns-max ncol) - ?\ ))))) + ?\s))))) ;; insert last formating (cond ((null delimit-columns-format) (insert delimit-columns-after delimit-columns-str-after)) diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el index 1cb5111dcfb..b9c9e338388 100644 --- a/lisp/diff-mode.el +++ b/lisp/diff-mode.el @@ -57,7 +57,7 @@ (defgroup diff-mode () - "Major mode for viewing/editing diffs" + "Major mode for viewing/editing diffs." :version "21.1" :group 'tools :group 'diff) @@ -640,7 +640,7 @@ else cover the whole bufer." (while (progn (setq last-pt (point)) (= (forward-line -1) 0)) (case (char-after) - (? (insert " ") (setq modif nil) (backward-char 1)) + (?\s (insert " ") (setq modif nil) (backward-char 1)) (?+ (delete-region (point) last-pt) (setq modif t)) (?- (if (not modif) (progn (forward-char 1) @@ -665,7 +665,7 @@ else cover the whole bufer." (let ((modif nil) (delete nil)) (while (not (eobp)) (case (char-after) - (? (insert " ") (setq modif nil) (backward-char 1)) + (?\s (insert " ") (setq modif nil) (backward-char 1)) (?- (setq delete t) (setq modif t)) (?+ (if (not modif) (progn (forward-char 1) @@ -723,7 +723,7 @@ else cover the whole bufer." (while (< (point) pt2) (case (char-after) ((?! ?-) (delete-char 2) (insert "-") (forward-line 1)) - (?\ ;merge with the other half of the chunk + (?\s ;merge with the other half of the chunk (let* ((endline2 (save-excursion (goto-char pt2) (forward-line 1) (point))) @@ -733,7 +733,7 @@ else cover the whole bufer." (insert "+" (prog1 (buffer-substring (+ pt2 2) endline2) (delete-region pt2 endline2)))) - (?\ ;FIXME: check consistency + (?\s ;FIXME: check consistency (delete-region pt2 endline2) (delete-char 1) (forward-line 1)) @@ -814,7 +814,7 @@ else cover the whole bufer." (t (when (and first last (< first last)) (insert (delete-and-extract-region first last))) (setq first nil last nil) - (equal ?\ c))) + (equal ?\s c))) (forward-line 1)))))))))) (defun diff-fixup-modifs (start end) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 963866b3554..b517dffe9f7 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -839,6 +839,9 @@ Otherwise, the rule is a compression rule, and compression is done with gzip.") (sit-for 1) (apply 'message qprompt qs-args) (setq char (set qs-var (read-char)))) + ;; Display the question with the answer. + (message (concat (apply 'format qprompt qs-args) + (char-to-string char))) (memq (cdr elt) '(t y yes))))))) ;;;###autoload diff --git a/lisp/dired.el b/lisp/dired.el index 61aca72db5b..a13a9e54ebe 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -437,6 +437,8 @@ Subexpression 2 must end right before the \\n or \\r.") nil (0 dired-ignored-face)))) ) "Additional expressions to highlight in Dired mode.") + +(defvar dnd-protocol-alist) ;;; Macros must be defined before they are used, for the byte compiler. diff --git a/lisp/ediff-diff.el b/lisp/ediff-diff.el index ec496301405..4e495d6d32b 100644 --- a/lisp/ediff-diff.el +++ b/lisp/ediff-diff.el @@ -43,7 +43,7 @@ (require 'ediff-init) (defgroup ediff-diff nil - "Diff related utilities" + "Diff related utilities." :prefix "ediff-" :group 'ediff) diff --git a/lisp/ediff-init.el b/lisp/ediff-init.el index 3933fd760d2..4863c255830 100644 --- a/lisp/ediff-init.el +++ b/lisp/ediff-init.el @@ -393,17 +393,17 @@ It needs to be killed when we quit the session.") this-command))) (defgroup ediff-highlighting nil - "Hilighting of difference regions in Ediff" + "Hilighting of difference regions in Ediff." :prefix "ediff-" :group 'ediff) (defgroup ediff-merge nil - "Merging utilities" + "Merging utilities." :prefix "ediff-" :group 'ediff) (defgroup ediff-hook nil - "Hooks run by Ediff" + "Hooks run by Ediff." :prefix "ediff-" :group 'ediff) @@ -1840,7 +1840,7 @@ Unless optional argument INPLACE is non-nil, return a new string." "Merge dir versions via ancestors") (t (capitalize - (subst-char-in-string ?- ?\ (substring (symbol-name jobname) 6)))) + (subst-char-in-string ?- ?\s (substring (symbol-name jobname) 6)))) )) diff --git a/lisp/ediff-mult.el b/lisp/ediff-mult.el index d3710258d24..3616bb267ce 100644 --- a/lisp/ediff-mult.el +++ b/lisp/ediff-mult.el @@ -106,7 +106,7 @@ (provide 'ediff-mult) (defgroup ediff-mult nil - "Multi-file and multi-buffer processing in Ediff" + "Multi-file and multi-buffer processing in Ediff." :prefix "ediff-" :group 'ediff) @@ -857,7 +857,7 @@ behavior." (session-info (ediff-overlay-get overl 'ediff-meta-info)) (activity-marker (ediff-get-session-activity-marker session-info)) buffer-read-only) - (or new-marker activity-marker (setq new-marker ?\ )) + (or new-marker activity-marker (setq new-marker ?\s)) (goto-char (ediff-overlay-start overl)) (if (eq (char-after (point)) new-marker) () ; if marker shown in buffer is the same as new-marker, do nothing @@ -872,7 +872,7 @@ behavior." (session-info (ediff-overlay-get overl 'ediff-meta-info)) (status (ediff-get-session-status session-info)) buffer-read-only) - (setq new-status (or new-status status ?\ )) + (setq new-status (or new-status status ?\s)) (goto-char (ediff-overlay-start overl)) (forward-char 1) ; status is the second char in session record (if (eq (char-after (point)) new-status) diff --git a/lisp/ediff-ptch.el b/lisp/ediff-ptch.el index 342f75fd1e0..4040985d1c8 100644 --- a/lisp/ediff-ptch.el +++ b/lisp/ediff-ptch.el @@ -28,7 +28,7 @@ (provide 'ediff-ptch) (defgroup ediff-ptch nil - "Ediff patch support" + "Ediff patch support." :tag "Patch" :prefix "ediff-" :group 'ediff) diff --git a/lisp/ediff-wind.el b/lisp/ediff-wind.el index dde306a3857..c43307938fc 100644 --- a/lisp/ediff-wind.el +++ b/lisp/ediff-wind.el @@ -66,7 +66,7 @@ (defun ediff-compute-toolbar-width () 0)) (defgroup ediff-window nil - "Ediff window manipulation" + "Ediff window manipulation." :prefix "ediff-" :group 'ediff :group 'frames) diff --git a/lisp/ediff.el b/lisp/ediff.el index 00a7e2f512a..3a40aafda55 100644 --- a/lisp/ediff.el +++ b/lisp/ediff.el @@ -7,7 +7,7 @@ ;; Keywords: comparing, merging, patching, tools, unix (defconst ediff-version "2.80" "The current version of Ediff") -(defconst ediff-date "June 3, 2005" "Date of last update") +(defconst ediff-date "June 3, 2005" "Date of last update") ;; This file is part of GNU Emacs. @@ -135,7 +135,7 @@ (require 'ediff-mult) ; required because of the registry stuff (defgroup ediff nil - "A comprehensive visual interface to diff & patch" + "A comprehensive visual interface to diff & patch." :tag "Ediff" :group 'tools) diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 68d1287d98c..7dbf61c5bf3 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el @@ -1,7 +1,7 @@ ;; autoload.el --- maintain autoloads in loaddefs.el -;; Copyright (C) 1991,92,93,94,95,96,97, 2001,02,03,04 -;; Free Software Foundation, Inc. +;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. ;; Author: Roland McGrath <roland@gnu.org> ;; Keywords: maint @@ -123,7 +123,17 @@ or macro definition or a defcustom)." ) `(progn (defvar ,varname ,init ,doc) - (custom-autoload ',varname ,file)))) + (custom-autoload ',varname ,file) + ;; The use of :require in a defcustom can be annoying, especially + ;; when defcustoms are moved from one file to another between + ;; releases because the :require arg gets placed in the user's + ;; .emacs. In order for autoloaded minor modes not to need the + ;; use of :require, we arrange to store their :setter. + ,(let ((setter (condition-case nil + (cadr (memq :set form)) + (error nil)))) + (if (equal setter ''custom-set-minor-mode) + `(put ',varname 'custom-set 'custom-set-minor-mode)))))) ;; nil here indicates that this is not a special autoload form. (t nil)))) @@ -566,5 +576,5 @@ Calls `update-directory-autoloads' on the command line arguments." (provide 'autoload) -;;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6 +;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6 ;;; autoload.el ends here diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 3948dae610b..cc472a00a30 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -193,7 +193,7 @@ (defgroup bytecomp nil - "Emacs Lisp byte-compiler" + "Emacs Lisp byte-compiler." :group 'lisp) (defcustom emacs-lisp-file-regexp (if (eq system-type 'vax-vms) @@ -1248,7 +1248,10 @@ extra args." (defun byte-compile-nogroup-warn (form) (let ((keyword-args (cdr (cdr (cdr (cdr form))))) (name (cadr form))) - (or (plist-get keyword-args :group) + (or (not (eq (car-safe name) 'quote)) + (and (eq (car form) 'custom-declare-group) + (equal name ''emacs)) + (plist-get keyword-args :group) (not (and (consp name) (eq (car name) 'quote))) (byte-compile-warn "%s for `%s' fails to specify containing group" diff --git a/lisp/emacs-lisp/cl-indent.el b/lisp/emacs-lisp/cl-indent.el index a203155673c..22c2460c16f 100644 --- a/lisp/emacs-lisp/cl-indent.el +++ b/lisp/emacs-lisp/cl-indent.el @@ -49,13 +49,13 @@ ;;; Code: (defgroup lisp-indent nil - "Indentation in Lisp" + "Indentation in Lisp." :group 'lisp) (defcustom lisp-indent-maximum-backtracking 3 "*Maximum depth to backtrack out from a sublist for structured indentation. -If this variable is 0, no backtracking will occur and forms such as flet +If this variable is 0, no backtracking will occur and forms such as `flet' may not be correctly indented." :type 'integer :group 'lisp-indent) diff --git a/lisp/emacs-lisp/crm.el b/lisp/emacs-lisp/crm.el index 572c658d0fc..d5d385c2c7b 100644 --- a/lisp/emacs-lisp/crm.el +++ b/lisp/emacs-lisp/crm.el @@ -197,9 +197,10 @@ If an element is found, bind: respectively, and return t." - (let* ((minibuffer-string (buffer-string)) - (end-index (or (string-match "," minibuffer-string (1- (point))) - (1- (point-max)))) + (let* ((prompt-end (minibuffer-prompt-end)) + (minibuffer-string (buffer-substring prompt-end (point-max))) + (end-index (or (string-match "," minibuffer-string (- (point) prompt-end)) + (- (point-max) prompt-end))) (target-string (substring minibuffer-string 0 end-index)) (index (or (string-match (concat crm-separator "\\([^" crm-separator "]*\\)$") @@ -213,9 +214,10 @@ and return t." (progn ;; (setq crm-beginning-of-element (match-beginning 1)) - (setq crm-end-of-element end-index) + (setq crm-end-of-element (+ end-index prompt-end)) ;; string to the left of the current element - (setq crm-left-of-element (substring target-string 0 (match-beginning 1))) + (setq crm-left-of-element + (substring target-string 0 (match-beginning 1))) ;; the current element (setq crm-current-element (match-string 1 target-string)) ;; string to the right of the current element @@ -287,7 +289,7 @@ The meanings of the return values are: (if completedp (progn - (erase-buffer) + (delete-region (minibuffer-prompt-end) (point-max)) (insert crm-left-of-element completion) ;; (if crm-complete-up-to-point ;; (insert crm-separator)) @@ -480,7 +482,7 @@ This function is modeled after `minibuffer_complete_and_exit' in src/minibuf.c" (setq result (catch 'crm-exit - (if (eq (point-min) (point-max)) + (if (eq (minibuffer-prompt-end) (point-max)) (throw 'crm-exit t)) ;; TODO: this test is suspect? @@ -506,7 +508,8 @@ This function is modeled after `minibuffer_complete_and_exit' in src/minibuf.c" nil (if (equal result "check") (let ((check-strings - (crm-strings-completed-p (buffer-string)))) + (crm-strings-completed-p + (buffer-substring (minibuffer-prompt-end) (point-max))))) ;; check all of minibuffer (if (eq check-strings t) (throw 'exit nil) diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index e543932d8b4..45b6e810ca1 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -231,7 +231,9 @@ first will be printed into the backtrace buffer." ;; would need to be de-iconified anyway immediately ;; after when we re-enter the debugger, so iconifying it ;; here would cause flashing. - (bury-buffer)))) + ;; Use quit-window rather than bury-buffer to quieten + ;; Drew Adams. --Stef + (quit-window)))) (kill-buffer debugger-buffer)) (set-match-data debugger-outer-match-data))) ;; Put into effect the modified values of these variables diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index a342f8a5530..6ee87919d38 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -201,10 +201,7 @@ See the command `%s' for a description of this minor-mode.")) :type 'boolean ,@(cond ((not (and curfile require)) nil) - ((not (eq require t)) `(:require ,require)) - (t `(:require - ',(intern (file-name-nondirectory - (file-name-sans-extension curfile)))))) + ((not (eq require t)) `(:require ,require))) ,@(nreverse extra-keywords)))) ;; The actual function. diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index ebe375088a3..55fa93775db 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -61,7 +61,7 @@ ;;; Options (defgroup edebug nil - "A source-level debugger for Emacs Lisp" + "A source-level debugger for Emacs Lisp." :group 'lisp) @@ -519,7 +519,7 @@ the minibuffer." (put ',(nth 1 form) 'saved-face ',(get (nth 1 form) 'saved-face)) (put ',(nth 1 form) 'customized-face - ',(nth 2 form))) + ,(nth 2 form))) (put (nth 1 form) 'saved-face nil))))) (setq edebug-result (eval form)) (if (not edebugging) @@ -4224,7 +4224,7 @@ reinstrument it." (- (current-column) (if (= ?\( (following-char)) 0 1))))) (insert (make-string - (max 0 (- col (- (point) start-of-count-line))) ?\ ) + (max 0 (- col (- (point) start-of-count-line))) ?\s) (if (and (< 0 count) (not (memq coverage '(unknown ok-coverage)))) diff --git a/lisp/emacs-lisp/elp.el b/lisp/emacs-lisp/elp.el index 82ce6f404f7..feaeb2898ce 100644 --- a/lisp/emacs-lisp/elp.el +++ b/lisp/emacs-lisp/elp.el @@ -130,7 +130,7 @@ ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv (defgroup elp nil - "Emacs Lisp Profiler" + "Emacs Lisp Profiler." :group 'lisp) (defcustom elp-function-list nil diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 972fe6bafc8..1ee4665005a 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -631,10 +631,10 @@ Reinitialize the face according to the `defface' specification." ;; Resetting `saved-face' temporarily to nil is needed to let ;; `defface' change the spec, regardless of a saved spec. (prog1 `(prog1 ,form - (put ',(eval (nth 1 form)) 'saved-face + (put ,(nth 1 form) 'saved-face ',(get (eval (nth 1 form)) 'saved-face)) - (put ',(eval (nth 1 form)) 'customized-face - ',(eval (nth 2 form)))) + (put ,(nth 1 form) 'customized-face + ,(nth 2 form))) (put (eval (nth 1 form)) 'saved-face nil))) ((eq (car form) 'progn) (cons 'progn (mapcar 'eval-defun-1 (cdr form)))) diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el index b5a279bbbf4..b3573d0f3b5 100644 --- a/lisp/emacs-lisp/macroexp.el +++ b/lisp/emacs-lisp/macroexp.el @@ -45,15 +45,17 @@ ;; structure of the result with the input. Doing so recursively using ;; `maybe-cons' results in excessively deep recursion for very long ;; input forms. -(defmacro macroexp-accumulate (#1=#:\(var\ list\) &rest body) +(defmacro macroexp-accumulate (var+list &rest body) "Return a list of the results of evaluating BODY for each element of LIST. Evaluate BODY with VAR bound to each `car' from LIST, in turn. Return a list of the values of the final form in BODY. The list structure of the result will share as much with LIST as possible (for instance, when BODY just returns VAR unchanged, the -result will be eq to LIST)." - (let ((var (car #1#)) - (list (cadr #1#)) +result will be eq to LIST). + +\(fn (VAR LIST) BODY...)" + (let ((var (car var+list)) + (list (cadr var+list)) (shared (make-symbol "shared")) (unshared (make-symbol "unshared")) (tail (make-symbol "tail")) diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el index 93e30fb0f55..d9f3df99bae 100644 --- a/lisp/emacs-lisp/pp.el +++ b/lisp/emacs-lisp/pp.el @@ -67,7 +67,7 @@ to make output that `read' can handle, whenever this is possible." (save-excursion (backward-char 1) (skip-chars-backward "'`#^") - (when (and (not (bobp)) (memq (char-before) '(?\ ?\t ?\n))) + (when (and (not (bobp)) (memq (char-before) '(?\s ?\t ?\n))) (delete-region (point) (progn (skip-chars-backward " \t\n") (point))) diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el index 6b87d06cb0e..950c9e251be 100644 --- a/lisp/emacs-lisp/testcover.el +++ b/lisp/emacs-lisp/testcover.el @@ -73,7 +73,7 @@ ;;;========================================================================== (defgroup testcover nil - "Code-coverage tester" + "Code-coverage tester." :group 'lisp :prefix "testcover-" :version "21.1") diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el index 79aad8bd121..d9662f91c7f 100644 --- a/lisp/emacs-lisp/timer.el +++ b/lisp/emacs-lisp/timer.el @@ -408,12 +408,11 @@ This function returns a timer object which you can use in `cancel-timer'." (defmacro with-timeout (list &rest body) "Run BODY, but if it doesn't finish in SECONDS seconds, give up. If we give up, we run the TIMEOUT-FORMS and return the value of the last one. -The call should look like: - (with-timeout (SECONDS TIMEOUT-FORMS...) BODY...) The timeout is checked whenever Emacs waits for some kind of external -event \(such as keyboard input, input from subprocesses, or a certain time); +event (such as keyboard input, input from subprocesses, or a certain time); if the program loops without waiting in any way, the timeout will not -be detected." +be detected. +\n(fn (SECONDS TIMEOUT-FORMS...) BODY)" (let ((seconds (car list)) (timeout-forms (cdr list))) `(let ((with-timeout-tag (cons nil nil)) diff --git a/lisp/emacs-lisp/trace.el b/lisp/emacs-lisp/trace.el index e3d3e9e645e..31ff8b993c3 100644 --- a/lisp/emacs-lisp/trace.el +++ b/lisp/emacs-lisp/trace.el @@ -156,7 +156,7 @@ (require 'advice) (defgroup trace nil - "Tracing facility for Emacs Lisp functions" + "Tracing facility for Emacs Lisp functions." :prefix "trace-" :group 'lisp) diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el index c6d479b173f..9aa6650810c 100644 --- a/lisp/emulation/cua-base.el +++ b/lisp/emulation/cua-base.el @@ -350,7 +350,7 @@ Must be set prior to enabling CUA." (defcustom cua-check-pending-input t "*If non-nil, don't override prefix key if input pending. -It is rumoured that input-pending-p is unreliable under some window +It is rumoured that `input-pending-p' is unreliable under some window managers, so try setting this to nil, if prefix override doesn't work." :type 'boolean :group 'cua) @@ -370,7 +370,7 @@ buffer is NOT modified, until you execute a command that actually modifies it. "*If non-nil, automatically tabify after rectangle commands. This basically means that `tabify' is applied to all lines that are modified by inserting or deleting a rectangle. If value is -an integer, cua will look for existing tabs in a region around +an integer, CUA will look for existing tabs in a region around the rectangle, and only do the conversion if any tabs are already present. The number specifies then number of characters before and after the region marked by the rectangle to search." @@ -568,7 +568,7 @@ a cons (TYPE . COLOR), then both properties are affected." ;;; Low-level Interface (defvar cua-inhibit-cua-keys nil - "Buffer-local variable that may disable the cua keymappings.") + "Buffer-local variable that may disable the CUA keymappings.") (make-variable-buffer-local 'cua-inhibit-cua-keys) ;;; Aux. variables @@ -902,8 +902,8 @@ Activates the mark if a prefix argument is given." (defun cua-repeat-replace-region (arg) "Repeat replacing text of highlighted region with typed text. -Searches for the next streach of text identical to the region last -replaced by typing text over it and replaces it with the same streach +Searches for the next stretch of text identical to the region last +replaced by typing text over it and replaces it with the same stretch of text." (interactive "P") (when cua--last-deleted-region-pos @@ -1331,7 +1331,7 @@ If ARG is the atom `-', scroll upward by nearly full screen." When enabled, using shifted movement keys will activate the region (and highlight the region using `transient-mark-mode'), and typed text replaces the active selection. C-z, C-x, C-c, and C-v will undo, cut, copy, and -paste (in addition to the normal emacs bindings)." +paste (in addition to the normal Emacs bindings)." :global t :group 'cua :set-after '(cua-enable-modeline-indications cua-use-hyper-key) @@ -1394,7 +1394,7 @@ paste (in addition to the normal emacs bindings)." (setq cua--saved-state nil)))) (defun cua-debug () - "Toggle cua debugging." + "Toggle CUA debugging." (interactive) (setq cua--debug (not cua--debug))) diff --git a/lisp/emulation/cua-gmrk.el b/lisp/emulation/cua-gmrk.el index b8874df0f34..68a28e1637a 100644 --- a/lisp/emulation/cua-gmrk.el +++ b/lisp/emulation/cua-gmrk.el @@ -96,7 +96,7 @@ When the global marker is set, CUA cut and copy commands will automatically insert the deleted or copied text before the global marker, even when the global marker is in another buffer. If the global marker isn't set, set the global marker at point in the current -buffer. Otherwise jump to the global marker position and cancel it. +buffer. Otherwise jump to the global marker position and cancel it. With prefix argument, don't jump to global mark when cancelling it." (interactive "P") (unless cua--global-mark-initialized @@ -105,7 +105,7 @@ With prefix argument, don't jump to global mark when cancelling it." (if (not buffer-read-only) (cua--activate-global-mark t) (ding) - (message "Cannot set global mark in read-only buffer.")) + (message "Cannot set global mark in read-only buffer")) (when (not stay) (pop-to-buffer (marker-buffer cua--global-mark-marker)) (goto-char cua--global-mark-marker)) @@ -165,7 +165,7 @@ With prefix argument, don't jump to global mark when cancelling it." (if (equal (marker-buffer cua--global-mark-marker) src-buf) (if (and (< start (marker-position cua--global-mark-marker)) (< (marker-position cua--global-mark-marker) end)) - (message "Can't move region into itself.") + (message "Can't move region into itself") (let ((text (buffer-substring-no-properties start end)) (p1 (copy-marker start)) (p2 (copy-marker end))) @@ -222,7 +222,7 @@ With prefix argument, don't jump to global mark when cancelling it." (setq in-rect t olist nil) (setq olist (cdr olist)))) (if in-rect - (message "Can't move rectangle into itself.") + (message "Can't move rectangle into itself") (let ((text (cua--extract-rectangle))) (cua--delete-rectangle) (goto-char (marker-position cua--global-mark-marker)) diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el index 72fd9195850..19360ac6845 100644 --- a/lisp/emulation/cua-rect.el +++ b/lisp/emulation/cua-rect.el @@ -992,7 +992,7 @@ With prefix argument, the toggle restriction." (defun cua-do-rectangle-padding () (interactive) (if buffer-read-only - (message "Cannot do padding in read-only buffer.") + (message "Cannot do padding in read-only buffer") (cua--rectangle-operation nil nil t t t) (cua--rectangle-set-corners)) (cua--keep-active)) @@ -1098,14 +1098,14 @@ The length of STRING need not be the same as the rectangle width." '(lambda (l r) (cua--rectangle-right (max l (+ l (length string) -1))))))) -(defun cua-fill-char-rectangle (ch) +(defun cua-fill-char-rectangle (character) "Replace CUA rectangle contents with CHARACTER." (interactive "cFill rectangle with character: ") (cua--rectangle-operation 'clear nil t 1 nil '(lambda (s e l r) (delete-region s e) (move-to-column l t) - (insert-char ch (- r l))))) + (insert-char character (- r l))))) (defun cua-replace-in-rectangle (regexp newtext) "Replace REGEXP with NEWTEXT in each line of CUA rectangle." @@ -1137,9 +1137,9 @@ The length of STRING need not be the same as the rectangle width." (t nil))))) (defvar cua--rectangle-seq-format "%d" - "Last format used by cua-sequence-rectangle.") + "Last format used by `cua-sequence-rectangle'.") -(defun cua-sequence-rectangle (first incr fmt) +(defun cua-sequence-rectangle (first incr format) "Resequence each line of CUA rectangle starting from FIRST. The numbers are formatted according to the FORMAT string." (interactive @@ -1150,13 +1150,13 @@ The numbers are formatted according to the FORMAT string." (string-to-number (read-string "Increment: (1) " nil nil "1")) (read-string (concat "Format: (" cua--rectangle-seq-format ") ")))) - (if (= (length fmt) 0) - (setq fmt cua--rectangle-seq-format) - (setq cua--rectangle-seq-format fmt)) + (if (= (length format) 0) + (setq format cua--rectangle-seq-format) + (setq cua--rectangle-seq-format format)) (cua--rectangle-operation 'clear nil t 1 nil '(lambda (s e l r) (delete-region s e) - (insert (format fmt first)) + (insert (format format first)) (setq first (+ first incr))))) (defmacro cua--convert-rectangle-as (command tabify) diff --git a/lisp/emulation/edt-mapper.el b/lisp/emulation/edt-mapper.el index e4943ff4a0a..5f824162676 100644 --- a/lisp/emulation/edt-mapper.el +++ b/lisp/emulation/edt-mapper.el @@ -113,7 +113,6 @@ (sit-for 600) (kill-emacs t))) - ;;; ;;; Decide Emacs Variant, GNU Emacs or XEmacs (aka Lucid Emacs). ;;; Determine Window System, and X Server Vendor (if appropriate). @@ -146,6 +145,11 @@ (defvar edt-return-seq nil) (defvar edt-term nil) +;; To silence the byte-compiler +(eval-when-compile + (defvar EDT-key-name) + (defvar edt-save-function-key-map)) + ;;; ;;; Determine Terminal Type (if appropriate). ;;; diff --git a/lisp/emulation/edt.el b/lisp/emulation/edt.el index 01f0af6f307..2b9a1118603 100644 --- a/lisp/emulation/edt.el +++ b/lisp/emulation/edt.el @@ -175,6 +175,20 @@ :prefix "edt-" :group 'emulations) +;; To silence the byte-compiler +(eval-when-compile + (defvar *EDT-keys*) + (defvar edt-default-global-map) + (defvar edt-last-copied-word) + (defvar edt-learn-macro-count) + (defvar edt-orig-page-delimiter) + (defvar edt-orig-transient-mark-mode) + (defvar edt-rect-start-point) + (defvar edt-user-global-map) + (defvar rect-start-point) + (defvar time-string) + (defvar zmacs-region-stays)) + ;;; ;;; Version Information ;;; @@ -332,6 +346,11 @@ This means that an edt-user.el file was found in the user's `load-path'.") (defvar edt-keys-file nil "User's custom keypad and function keys mappings to emulate LK-201 keyboard.") + +(defvar edt-last-copied-word nil + "Last word that the user copied.") + +(defvar zmacs-region-stays) ;;;; ;;;; EDT Emulation Commands @@ -1621,9 +1640,8 @@ Argument NUM is the percentage into the buffer to move." (defun edt-mark-section-wisely () "Mark the section in a manner consistent with the `major-mode'. -Uses `mark-defun' for emacs-lisp and Lisp, -mark-c-function for C, -mark-fortran-subsystem for fortran, +Uses `mark-defun' for Emacs-Lisp and Lisp, and for Fortran, +`c-mark-function' for C, and `mark-paragraph' for other modes." (interactive) (if edt-select-mode @@ -1631,15 +1649,13 @@ and `mark-paragraph' for other modes." (edt-reset)) (progn (cond ((or (eq major-mode 'emacs-lisp-mode) + (eq major-mode 'fortran-mode) (eq major-mode 'lisp-mode)) (mark-defun) (message "Lisp defun selected")) ((eq major-mode 'c-mode) - (mark-c-function) + (c-mark-function) (message "C function selected")) - ((eq major-mode 'fortran-mode) - (mark-fortran-subprogram) - (message "Fortran subprogram selected")) (t (mark-paragraph) (message "Paragraph selected")))))) @@ -1766,8 +1782,7 @@ Argument NUM is the number of times to duplicate the line." "Display the current time." (interactive) (if edt-x-emacs19-p (setq zmacs-region-stays t)) - (set 'time-string (current-time-string)) - (message "%s" time-string)) + (message "%s" (current-time-string))) ;;; ;;; LEARN diff --git a/lisp/emulation/tpu-edt.el b/lisp/emulation/tpu-edt.el index ec0eef05321..d685bec1e65 100644 --- a/lisp/emulation/tpu-edt.el +++ b/lisp/emulation/tpu-edt.el @@ -307,17 +307,11 @@ ;;; Emacs version identifiers - currently referenced by ;;; ;;; o tpu-mark o tpu-set-mark -;;; o tpu-string-prompt o tpu-regexp-prompt -;;; o tpu-edt-on o tpu-load-xkeys -;;; o tpu-update-mode-line o mode line section +;;; o mode line section o tpu-load-xkeys ;;; -(defconst tpu-emacs19-p (not (string-lessp emacs-version "19")) - "Non-nil if we are running Lucid Emacs or version 19.") - -(defconst tpu-lucid-emacs19-p - (and tpu-emacs19-p (string-match "Lucid" emacs-version)) - "Non-nil if we are running Lucid Emacs version 19.") - +(defconst tpu-lucid-emacs-p + (string-match "Lucid" emacs-version) + "Non-nil if we are running Lucid Emacs.") ;;; ;;; Global Keymaps @@ -341,10 +335,10 @@ GOLD is the ASCII 7-bit escape sequence <ESC>OP.") "Maps the function keys on the VT100 keyboard preceded by GOLD-SS3.") (defvar tpu-global-map nil "TPU-edt global keymap.") -(defvar tpu-original-global-map (copy-keymap global-map) +(defvar tpu-original-global-map global-map "Original global keymap.") -(and tpu-lucid-emacs19-p +(and tpu-lucid-emacs-p (defvar minibuffer-local-ns-map (make-sparse-keymap) "Hack to give Lucid Emacs the same maps as ordinary Emacs.")) @@ -463,13 +457,12 @@ GOLD is the ASCII 7-bit escape sequence <ESC>OP.") (defun tpu-update-mode-line nil "Make sure mode-line in the current buffer reflects all changes." (setq tpu-mark-flag (if transient-mark-mode "" (if (tpu-mark) " @" " "))) - (cond (tpu-emacs19-p (force-mode-line-update)) - (t (set-buffer-modified-p (buffer-modified-p)) (sit-for 0)))) + (force-mode-line-update)) -(cond (tpu-lucid-emacs19-p +(cond (tpu-lucid-emacs-p (add-hook 'zmacs-deactivate-region-hook 'tpu-update-mode-line) (add-hook 'zmacs-activate-region-hook 'tpu-update-mode-line)) - (tpu-emacs19-p + (t (add-hook 'activate-mark-hook 'tpu-update-mode-line) (add-hook 'deactivate-mark-hook 'tpu-update-mode-line))) @@ -542,26 +535,25 @@ Otherwise sets the tpu-match markers to nil and returns nil." (defun tpu-caar (thingy) (car (car thingy))) (defun tpu-cadr (thingy) (car (cdr thingy))) +(defvar zmacs-regions) + (defun tpu-mark nil "TPU-edt version of the mark function. Return the appropriate value of the mark for the current version of Emacs." - (cond (tpu-lucid-emacs19-p (mark (not zmacs-regions))) - (tpu-emacs19-p (and mark-active (mark (not transient-mark-mode)))) - (t (mark)))) + (cond (tpu-lucid-emacs-p (mark (not zmacs-regions))) + (t (and mark-active (mark (not transient-mark-mode)))))) (defun tpu-set-mark (pos) "TPU-edt version of the `set-mark' function. Sets the mark at POS and activates the region according to the current version of Emacs." (set-mark pos) - (and tpu-lucid-emacs19-p pos (zmacs-activate-region))) + (and tpu-lucid-emacs-p pos (zmacs-activate-region))) (defun tpu-string-prompt (prompt history-symbol) "Read a string with PROMPT." - (if tpu-emacs19-p - (read-from-minibuffer prompt nil nil nil history-symbol) - (read-string prompt))) + (read-from-minibuffer prompt nil nil nil history-symbol)) (defvar tpu-last-answer nil "Most recent response to tpu-y-or-n-p.") @@ -1118,9 +1110,7 @@ kills modified buffers without asking." (defun tpu-regexp-prompt (prompt) "Read a string, adding 'RE' to the prompt if tpu-regexp-p is set." (let ((re-prompt (concat (if tpu-regexp-p "RE ") prompt))) - (if tpu-emacs19-p - (read-from-minibuffer re-prompt nil nil nil 'tpu-regexp-prompt-hist) - (read-string re-prompt)))) + (read-from-minibuffer re-prompt nil nil nil 'tpu-regexp-prompt-hist))) (defun tpu-search-highlight nil (if (tpu-check-match) @@ -2017,8 +2007,6 @@ Accepts a prefix argument for the number of tpu-pan-columns to scroll." ;;; ;;; Define keymaps ;;; -(define-key global-map "\e[" CSI-map) ; CSI map -(define-key global-map "\eO" SS3-map) ; SS3 map (define-key SS3-map "P" GOLD-map) ; GOLD map (define-key GOLD-map "\e[" GOLD-CSI-map) ; GOLD-CSI map (define-key GOLD-map "\eO" GOLD-SS3-map) ; GOLD-SS3 map @@ -2276,24 +2264,12 @@ Accepts a prefix argument for the number of tpu-pan-columns to scroll." ;;; -;;; Repeat complex command map additions to make arrows work -;;; -(cond ((boundp 'repeat-complex-command-map) - (define-key repeat-complex-command-map "\e[A" 'previous-complex-command) - (define-key repeat-complex-command-map "\e[B" 'next-complex-command) - (define-key repeat-complex-command-map "\eOA" 'previous-complex-command) - (define-key repeat-complex-command-map "\eOB" 'next-complex-command))) - - -;;; ;;; Minibuffer map additions to make KP_enter = RET ;;; (define-key minibuffer-local-map "\eOM" 'exit-minibuffer) (define-key minibuffer-local-ns-map "\eOM" 'exit-minibuffer) (define-key minibuffer-local-completion-map "\eOM" 'exit-minibuffer) (define-key minibuffer-local-must-match-map "\eOM" 'minibuffer-complete-and-exit) -(and (boundp 'repeat-complex-command-map) - (define-key repeat-complex-command-map "\eOM" 'exit-minibuffer)) ;;; @@ -2407,10 +2383,10 @@ If FILE is nil, try to load a default file. The default file names are (setq file (expand-file-name file))) (tpu-xkeys-file (setq file (expand-file-name tpu-xkeys-file))) - (tpu-lucid-emacs19-p + (tpu-lucid-emacs-p (setq file (convert-standard-filename (expand-file-name "~/.tpu-lucid-keys")))) - (tpu-emacs19-p + (t (setq file (convert-standard-filename (expand-file-name "~/.tpu-keys"))) (and (not (file-exists-p file)) @@ -2503,6 +2479,10 @@ If FILE is nil, try to load a default file. The default file names are (setq-default page-delimiter "\f") (setq-default truncate-lines t) (setq scroll-step 1) + (setq tpu-original-global-map global-map) + (setq global-map (copy-keymap global-map)) + (define-key global-map "\e[" CSI-map) + (define-key global-map "\eO" SS3-map) (setq tpu-edt-mode t)))) (defun tpu-edt-off nil @@ -2516,7 +2496,7 @@ If FILE is nil, try to load a default file. The default file names are (setq-default page-delimiter "^\f") (setq-default truncate-lines nil) (setq scroll-step 0) - (setq global-map (copy-keymap tpu-original-global-map)) + (setq global-map tpu-original-global-map) (use-global-map global-map) (setq tpu-edt-mode nil)))) diff --git a/lisp/emulation/vi.el b/lisp/emulation/vi.el index d6b7c2728b2..559d1677347 100644 --- a/lisp/emulation/vi.el +++ b/lisp/emulation/vi.el @@ -314,7 +314,7 @@ command extensions.") (put 'mark-defun 'point-moving-unit 'region) (put 'mark-whole-buffer 'point-moving-unit 'region) (put 'mark-end-of-sentence 'point-moving-unit 'region) -(put 'mark-c-function 'point-moving-unit 'region) +(put 'c-mark-function 'point-moving-unit 'region) ;;; (defvar vi-mark-alist nil @@ -637,7 +637,8 @@ insert state." "Go to ARGth line." (interactive "P") (if (null (vi-raw-numeric-prefix arg)) - (end-of-buffer) + (with-no-warnings + (end-of-buffer)) (goto-line (vi-prefix-numeric-value arg)))) (defun vi-beginning-of-buffer () @@ -1384,7 +1385,7 @@ l(ines)." ((char-equal region ?b) (mark-whole-buffer)) ((char-equal region ?p) (mark-paragraph)) ((char-equal region ?P) (mark-page arg)) - ((char-equal region ?f) (mark-c-function)) + ((char-equal region ?f) (c-mark-function)) ((char-equal region ?w) (mark-word arg)) ((char-equal region ?e) (mark-end-of-sentence arg)) ((char-equal region ?l) (vi-mark-lines arg)) diff --git a/lisp/emulation/vip.el b/lisp/emulation/vip.el index 7584436e20a..6caa12179c0 100644 --- a/lisp/emulation/vip.el +++ b/lisp/emulation/vip.el @@ -1112,9 +1112,10 @@ the query replace mode will toggle between string replace and regexp replace." (replace-match (vip-read-string (format "Replace regexp \"%s\" with: " str)) nil nil)) - (replace-string - str - (vip-read-string (format "Replace \"%s\" with: " str))))))) + (with-no-warnings + (replace-string + str + (vip-read-string (format "Replace \"%s\" with: " str)))))))) ;; basic cursor movement. j, k, l, m commands. @@ -2830,7 +2831,8 @@ a token has type \(command, address, end-mark\) and value." (skip-chars-forward " \t") (if (looking-at "[\n|]") (error "Missing rhs")) (set-mark (point)) - (end-of-buffer) + (with-no-warnings + (end-of-buffer)) (backward-char 1) (setq string (buffer-substring (mark) (point)))) (if (not (lookup-key ex-map char)) @@ -2900,7 +2902,8 @@ a token has type \(command, address, end-mark\) and value." (setq file (buffer-substring (point) (mark))))) (if variant (shell-command command t) - (insert-file file)))) + (with-no-warnings + (insert-file file))))) (defun ex-set () (eval (list 'setq diff --git a/lisp/emulation/viper-ex.el b/lisp/emulation/viper-ex.el index c29e0e26ba5..4b1f06f1e9a 100644 --- a/lisp/emulation/viper-ex.el +++ b/lisp/emulation/viper-ex.el @@ -58,7 +58,7 @@ (require 'viper-util) (defgroup viper-ex nil - "Viper support for Ex commands" + "Viper support for Ex commands." :prefix "ex-" :group 'viper) diff --git a/lisp/emulation/viper-mous.el b/lisp/emulation/viper-mous.el index 250f7cf5a53..ec3f3ee8225 100644 --- a/lisp/emulation/viper-mous.el +++ b/lisp/emulation/viper-mous.el @@ -52,7 +52,7 @@ (defgroup viper-mouse nil - "Support for Viper special mouse-bound commands" + "Support for Viper special mouse-bound commands." :prefix "viper-" :group 'viper) diff --git a/lisp/eshell/esh-var.el b/lisp/eshell/esh-var.el index f1bd94baabf..10d2100fd00 100644 --- a/lisp/eshell/esh-var.el +++ b/lisp/eshell/esh-var.el @@ -28,7 +28,7 @@ (defgroup eshell-var nil "Variable interpolation is introduced whenever the '$' character appears unquoted in any argument (except when that argument is -surrounded by single quotes) . It may be used to interpolate a +surrounded by single quotes). It may be used to interpolate a variable value, a subcommand, or even the result of a Lisp form." :tag "Variable handling" :group 'eshell) diff --git a/lisp/facemenu.el b/lisp/facemenu.el index 57dea40266a..6dc6124af5d 100644 --- a/lisp/facemenu.el +++ b/lisp/facemenu.el @@ -1,6 +1,6 @@ ;;; facemenu.el --- create a face menu for interactively adding fonts to text -;; Copyright (c) 1994, 1995, 1996, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (c) 1994, 1995, 1996, 2001, 2002, 2005 Free Software Foundation, Inc. ;; Author: Boris Goldowsky <boris@gnu.org> ;; Keywords: faces @@ -99,7 +99,7 @@ (define-key global-map "\M-o" 'facemenu-keymap) (defgroup facemenu nil - "Create a face menu for interactively adding fonts to text" + "Create a face menu for interactively adding fonts to text." :group 'faces :prefix "facemenu-") @@ -365,10 +365,9 @@ typing a character to insert cancels the specification." (region-beginning)) (if (and mark-active (not current-prefix-arg)) (region-end)))) - (unless (color-defined-p color) - (message "Color `%s' undefined" color)) - (facemenu-add-new-color color 'facemenu-foreground-menu) - (facemenu-add-face (list (list :foreground color)) start end)) + (facemenu-set-face-from-menu + (facemenu-add-new-color color 'facemenu-foreground-menu) + start end)) ;;;###autoload (defun facemenu-set-background (color &optional start end) @@ -389,34 +388,41 @@ typing a character to insert cancels the specification." (region-beginning)) (if (and mark-active (not current-prefix-arg)) (region-end)))) - (unless (color-defined-p color) - (message "Color `%s' undefined" color)) - (facemenu-add-new-color color 'facemenu-background-menu) - (facemenu-add-face (list (list :background color)) start end)) + (facemenu-set-face-from-menu + (facemenu-add-new-color color 'facemenu-background-menu) + start end)) ;;;###autoload (defun facemenu-set-face-from-menu (face start end) "Set the FACE of the region or next character typed. -This function is designed to be called from a menu; the face to use -is the menu item's name. +This function is designed to be called from a menu; FACE is determined +using the event type of the menu entry. If FACE is a symbol whose +name starts with \"fg:\" or \"bg:\", then this functions sets the +foreground or background to the color specified by the rest of the +symbol's name. Any other symbol is considered the name of a face. If the region is active (normally true except in Transient Mark mode) and there is no prefix argument, this command sets the region to the requested face. Otherwise, this command specifies the face for the next character -inserted. Moving point or switching buffers before -typing a character to insert cancels the specification." +inserted. Moving point or switching buffers before typing a character +to insert cancels the specification." (interactive (list last-command-event (if (and mark-active (not current-prefix-arg)) (region-beginning)) (if (and mark-active (not current-prefix-arg)) (region-end)))) (barf-if-buffer-read-only) - (facemenu-get-face face) - (if start - (facemenu-add-face face start end) - (facemenu-add-face face))) + (facemenu-add-face + (let ((fn (symbol-name face))) + (if (string-match "\\`\\([fb]\\)g:\\(.+\\)" fn) + (list (list (if (string= (match-string 1 fn) "f") + :foreground + :background) + (match-string 2 fn))) + face)) + start end)) ;;;###autoload (defun facemenu-set-invisible (start end) @@ -615,7 +621,9 @@ effect. See `facemenu-remove-face-function'." self-insert-face (list self-insert-face))) face) - self-insert-face-command this-command))))) + self-insert-face-command this-command)))) + (unless (facemenu-enable-faces-p) + (message "Font-lock mode will override any faces you set in this buffer"))) (defun facemenu-active-faces (face-list &optional frame) "Return from FACE-LIST those faces that would be used for display. @@ -648,14 +656,6 @@ use the selected frame. If t, then the global, non-frame faces are used." (setq face-list (cdr face-list))) (nreverse active-list))) -(defun facemenu-get-face (symbol) - "Make sure FACE exists. -If not, create it and add it to the appropriate menu. Return the SYMBOL." - (let ((name (symbol-name symbol))) - (cond ((facep symbol)) - (t (make-face symbol)))) - symbol) - (defun facemenu-add-new-face (face) "Add FACE (a face) to the Face menu. @@ -715,47 +715,40 @@ This is called whenever you create a new face." (define-key menu key (cons name function)))))) nil) ; Return nil for facemenu-iterate -(defun facemenu-add-new-color (color &optional menu) +(defun facemenu-add-new-color (color menu) "Add COLOR (a color name string) to the appropriate Face menu. -MENU should be `facemenu-foreground-menu' or -`facemenu-background-menu'. +MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'. +Return the event type (a symbol) of the added menu entry. This is called whenever you use a new color." - (let* (name - symbol - docstring - function menu-val key - (color-p (memq menu '(facemenu-foreground-menu - facemenu-background-menu)))) - (unless (stringp color) - (error "%s is not a color" color)) - (setq name color - symbol (intern name)) - + (let (symbol docstring) + (unless (color-defined-p color) + (error "Color `%s' undefined" color)) (cond ((eq menu 'facemenu-foreground-menu) (setq docstring (format "Select foreground color %s for subsequent insertion." - name))) + color) + symbol (intern (concat "fg:" color)))) ((eq menu 'facemenu-background-menu) (setq docstring (format "Select background color %s for subsequent insertion." - name)))) - (cond ((facemenu-iterate ; check if equivalent face is already in the menu - (lambda (m) (and (listp m) - (symbolp (car m)) - (stringp (cadr m)) - (string-equal (cadr m) color))) - (cdr (symbol-function menu)))) - (t ; No keyboard equivalent. Figure out where to put it: - (setq key (vector symbol) - function 'facemenu-set-face-from-menu - menu-val (symbol-function menu)) - (if (and facemenu-new-faces-at-end - (> (length menu-val) 3)) - (define-key-after menu-val key (cons name function) - (car (nth (- (length menu-val) 3) menu-val))) - (define-key menu key (cons name function)))))) - nil) ; Return nil for facemenu-iterate + color) + symbol (intern (concat "bg:" color)))) + (t (error "MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'"))) + (unless (facemenu-iterate ; Check if color is already in the menu. + (lambda (m) (and (listp m) + (eq (car m) symbol))) + (cdr (symbol-function menu))) + ;; Color is not in the menu. Figure out where to put it. + (let ((key (vector symbol)) + (function 'facemenu-set-face-from-menu) + (menu-val (symbol-function menu))) + (if (and facemenu-new-faces-at-end + (> (length menu-val) 3)) + (define-key-after menu-val key (cons color function) + (car (nth (- (length menu-val) 3) menu-val))) + (define-key menu key (cons color function))))) + symbol)) (defun facemenu-complete-face-list (&optional oldlist) "Return list of all faces that look different. diff --git a/lisp/faces.el b/lisp/faces.el index 4f577d7ff2e..8211b0ff8e4 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -869,7 +869,10 @@ Otherwise, return a single face." (aliasfaces nil) (nonaliasfaces nil) faces) - ;; Make a list of the named faces that the `face' property uses. + ;; Try to get a face name from the buffer. + (if (memq (intern-soft (thing-at-point 'symbol)) (face-list)) + (setq faces (list (intern-soft (thing-at-point 'symbol))))) + ;; Add the named faces that the `face' property uses. (if (and (listp faceprop) ;; Don't treat an attribute spec as a list of faces. (not (keywordp (car faceprop))) @@ -879,10 +882,6 @@ Otherwise, return a single face." (push f faces))) (if (symbolp faceprop) (push faceprop faces))) - ;; If there are none, try to get a face name from the buffer. - (if (and (null faces) - (memq (intern-soft (thing-at-point 'symbol)) (face-list))) - (setq faces (list (intern-soft (thing-at-point 'symbol))))) ;; Build up the completion tables. (mapatoms (lambda (s) @@ -896,22 +895,27 @@ Otherwise, return a single face." (unless multiple (if faces (setq faces (list (car faces))))) + (require 'crm) (let* ((input ;; Read the input. - (completing-read + (completing-read-multiple (if (or faces string-describing-default) (format "%s (default %s): " prompt - (if faces (mapconcat 'symbol-name faces ", ") + (if faces (mapconcat 'symbol-name faces ",") string-describing-default)) (format "%s: " prompt)) - (complete-in-turn nonaliasfaces aliasfaces) nil t)) + (complete-in-turn nonaliasfaces aliasfaces) + nil t nil nil + (if faces (mapconcat 'symbol-name faces ",")))) ;; Canonicalize the output. (output - (if (equal input "") - faces - (if (stringp input) - (list (intern input)) - input)))) + (cond ((or (equal input "") (equal input '(""))) + faces) + ((stringp input) + (mapcar 'intern (split-string input ", *" t))) + ((listp input) + (mapcar 'intern input)) + (input)))) ;; Return either a list of faces or just one face. (if multiple output @@ -1915,7 +1919,7 @@ created." :group 'basic-faces) (defface vertical-border - '((default :inherit mode-line-inactive)) + '((((type tty)) :inherit mode-line-inactive)) "Face used for vertical window dividers on ttys." :version "22.1" :group 'modeline diff --git a/lisp/find-file.el b/lisp/find-file.el index 26c5cccf8e5..69cafbc75b1 100644 --- a/lisp/find-file.el +++ b/lisp/find-file.el @@ -946,18 +946,11 @@ and the name of the file passed in." (defun ff-which-function-are-we-in () "Return the name of the function whose definition/declaration point is in. Also remember that name in `ff-function-name'." - - (setq ff-function-name nil) - - (save-excursion - (if (re-search-backward ada-procedure-start-regexp nil t) - (setq ff-function-name (buffer-substring (match-beginning 0) - (match-end 0))) - ; we didn't find a procedure start, perhaps there is a package - (if (re-search-backward ada-package-start-regexp nil t) - (setq ff-function-name (buffer-substring (match-beginning 0) - (match-end 0))) - )))) + (setq ff-function-name + (save-excursion + (if (or (re-search-backward ada-procedure-start-regexp nil t) + (re-search-backward ada-package-start-regexp nil t)) + (match-string 0))))) ;; bind with (setq ff-post-load-hook 'ff-set-point-accordingly) ;; @@ -971,5 +964,5 @@ That name was previously determined by `ff-which-function-are-we-in'." (provide 'find-file) -;;; arch-tag: 5a2fc49e-3b0a-4708-9acf-fb14e471a97a +;; arch-tag: 5a2fc49e-3b0a-4708-9acf-fb14e471a97a ;;; find-file.el ends here diff --git a/lisp/font-lock.el b/lisp/font-lock.el index cf15a7d8f87..b70e345e983 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -620,6 +620,7 @@ Major/minor modes can set this variable if they know which option applies.") ;; We use this to preserve or protect things when modifying text properties. (defmacro save-buffer-state (varlist &rest body) "Bind variables according to VARLIST and eval BODY restoring buffer state." + (declare (indent 1) (debug let)) (let ((modified (make-symbol "modified"))) `(let* ,(append varlist `((,modified (buffer-modified-p)) @@ -634,8 +635,6 @@ Major/minor modes can set this variable if they know which option applies.") ,@body) (unless ,modified (restore-buffer-modified-p nil))))) - (put 'save-buffer-state 'lisp-indent-function 1) - (def-edebug-spec save-buffer-state let) ;; ;; Shut up the byte compiler. (defvar font-lock-face-attributes)) ; Obsolete but respected if set. @@ -1826,15 +1825,15 @@ Sets various variables using `font-lock-defaults' (or, if nil, using "Font Lock mode face used to highlight preprocessor directives." :group 'font-lock-highlighting-faces) -(defface font-lock-regexp-backslash +(defface font-lock-regexp-grouping-backslash '((((class color) (min-colors 16)) :inherit escape-glyph) (t :inherit bold)) - "Font Lock mode face used to highlight a backslash in Lisp regexps." + "Font Lock mode face for backslashes in Lisp regexp grouping constructs." :group 'font-lock-highlighting-faces) -(defface font-lock-regexp-backslash-construct +(defface font-lock-regexp-grouping-construct '((t :inherit bold)) - "Font Lock mode face used to highlight `\' constructs in Lisp regexps." + "Font Lock mode face used to highlight grouping constructs in Lisp regexps." :group 'font-lock-highlighting-faces) ;;; End of Colour etc. support. @@ -2083,22 +2082,22 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item." ("\\<:\\sw+\\>" 0 font-lock-builtin-face) ;; ELisp and CLisp `&' keywords as types. ("\\&\\sw+\\>" . font-lock-type-face) - ;; Make regexp grouping constructs bold, so they stand out, but only - ;; in strings. + ;; ELisp regexp grouping constructs ((lambda (bound) - (if (re-search-forward "\\(\\\\\\\\\\)\\((\\(?:?:\\)?\\|[|)]\\)" bound t) - (let ((face (get-text-property (1- (point)) 'face))) - (if (listp face) - (memq 'font-lock-string-face face) - (eq 'font-lock-string-face face))))) - (1 'font-lock-regexp-backslash prepend) - (2 'font-lock-regexp-backslash-construct prepend)) - - ;; Underline innermost grouping, so that you can more easily see what - ;; belongs together. 2005-05-12: Font-lock can go into an - ;; unbreakable endless loop on this -- something's broken. - ;;("[\\][\\][(]\\(?:\\?:\\)?\\(\\(?:[^\\\"]+\\|[\\]\\(?:[^\\]\\|[\\][^(]\\)\\)+?\\)[\\][\\][)]" - ;;1 'underline prepend) + (catch 'found + ;; The following loop is needed to continue searching after matches + ;; that do not occur in strings. The associated regexp matches one + ;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'. `\\\\' has been included to + ;; avoid highlighting, for example, `\\(' in `\\\\('. + (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?:\\)?\\|[|)]\\)\\)" bound t) + (unless (match-beginning 2) + (let ((face (get-text-property (1- (point)) 'face))) + (when (or (and (listp face) + (memq 'font-lock-string-face face)) + (eq 'font-lock-string-face face)) + (throw 'found t))))))) + (1 'font-lock-regexp-grouping-backslash prepend) + (3 'font-lock-regexp-grouping-construct prepend)) ;;; This is too general -- rms. ;;; A user complained that he has functions whose names start with `do' ;;; and that they get the wrong color. diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index b7698350efb..5ffcbb0810b 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,44 @@ +2005-07-04 Juanma Barranquero <lekktu@gmail.com> + + * gnus.el (gnus-exit): + * gnus-group.el (gnus-group-icons): + * nnmail.el (nnmail-prepare): Fix typos in docstrings. + + * gnus-nocem.el (gnus-nocem): + * message.el (message-various, message-buffers, message-sending) + (message-interface, message-forwarding, message-insertion) + (message-headers, message-news, message-mail): + * pgg-gpg.el (pgg-gpg): + * pgg-parse.el (pgg-parse): + * pgg-pgp.el (pgg-pgp): + * pgg-pgp5.el (pgg-pgp5): + * pop3.el (pop3): Finish `defgroup' description with period. + +2005-07-01 Katsumi Yamaoka <yamaoka@jpl.org> + + * gnus-art.el (article-display-face): Improve the efficiency. + (article-display-x-face): Ditto; remove grey x-face stuff. + +2005-06-30 Katsumi Yamaoka <yamaoka@jpl.org> + + * gnus-art.el (article-display-face): Correct the position in + which Faces are inserted; use dolist. + +2005-06-29 Didier Verna <didier@xemacs.org> + + * gnus-art.el (article-display-face): Display faces in correct + order. + +2005-06-29 Katsumi Yamaoka <yamaoka@jpl.org> + + * gnus-nocem.el (gnus-nocem-verifyer): Default to pgg-verify. + (gnus-nocem-check-article): Fetch the Type header. + (gnus-nocem-message-wanted-p): Fix the way to examine types. + (gnus-nocem-verify-issuer): Use functionp instead of fboundp. + (gnus-nocem-enter-article): Make sure gnus-nocem-hashtb is initialized. + + * pgg.el (pgg-verify): Return the verification result. + 2005-06-24 Juanma Barranquero <lekktu@gmail.com> * gnus-art.el (gnus-article-mode): Set `nobreak-char-display', not diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index b92ce8616d5..ba2c3ff9618 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -2123,31 +2123,31 @@ unfolded." ;; read-only. (if (and wash-face-p (memq 'face gnus-article-wash-types)) (gnus-delete-images 'face) - (let (face faces) - (save-excursion + (let (face faces from) + (save-current-buffer (when (and wash-face-p - (progn - (goto-char (point-min)) - (not (re-search-forward "^Face:[\t ]*" nil t))) - (gnus-buffer-live-p gnus-original-article-buffer)) + (gnus-buffer-live-p gnus-original-article-buffer) + (not (re-search-forward "^Face:[\t ]*" nil t))) (set-buffer gnus-original-article-buffer)) (save-restriction (mail-narrow-to-head) (while (gnus-article-goto-header "Face") (push (mail-header-field-value) faces)))) - (while (setq face (pop faces)) - (let ((png (gnus-convert-face-to-png face)) - image) - (when png - (setq image (gnus-create-image png 'png t)) - (gnus-article-goto-header "from") - (when (bobp) - (insert "From: [no `from' set]\n") - (forward-char -17)) - (gnus-add-wash-type 'face) - (gnus-add-image 'face image) - (gnus-put-image image nil 'face)))))) - ))) + (when faces + (goto-char (point-min)) + (let ((from (gnus-article-goto-header "from")) + png image) + (unless from + (insert "From:") + (setq from (point)) + (insert "[no `from' set]\n")) + (while faces + (when (setq png (gnus-convert-face-to-png (pop faces))) + (setq image (gnus-create-image png 'png t)) + (goto-char from) + (gnus-add-wash-type 'face) + (gnus-add-image 'face image) + (gnus-put-image image nil 'face)))))))))) (defun article-display-x-face (&optional force) "Look for an X-Face header and display it if present." @@ -2164,13 +2164,10 @@ unfolded." (gnus-delete-images 'xface) ;; Display X-Faces. (let (x-faces from face) - (save-excursion + (save-current-buffer (when (and wash-face-p - (progn - (goto-char (point-min)) - (not (re-search-forward - "^X-Face\\(-[0-9]+\\)?:[\t ]*" nil t))) - (gnus-buffer-live-p gnus-original-article-buffer)) + (gnus-buffer-live-p gnus-original-article-buffer) + (not (re-search-forward "^X-Face:[\t ]*" nil t))) ;; If type `W f', use gnus-original-article-buffer, ;; otherwise use the current buffer because displaying ;; RFC822 parts calls this function too. @@ -2184,35 +2181,36 @@ unfolded." ;; single external face. (when (stringp gnus-article-x-face-command) (setq x-faces (list (car x-faces)))) - (while (and (setq face (pop x-faces)) - gnus-article-x-face-command - (or force - ;; Check whether this face is censored. - (not gnus-article-x-face-too-ugly) - (and gnus-article-x-face-too-ugly from - (not (string-match gnus-article-x-face-too-ugly - from))))) - ;; We display the face. - (cond ((stringp gnus-article-x-face-command) - ;; The command is a string, so we interpret the command - ;; as a, well, command, and fork it off. - (let ((process-connection-type nil)) - (gnus-set-process-query-on-exit-flag - (start-process - "article-x-face" nil shell-file-name - shell-command-switch gnus-article-x-face-command) - nil) - (with-temp-buffer - (insert face) - (process-send-region "article-x-face" - (point-min) (point-max))) - (process-send-eof "article-x-face"))) - ((functionp gnus-article-x-face-command) - ;; The command is a lisp function, so we call it. - (funcall gnus-article-x-face-command face)) - (t - (error "%s is not a function" - gnus-article-x-face-command))))))))) + (when (and x-faces + gnus-article-x-face-command + (or force + ;; Check whether this face is censored. + (not gnus-article-x-face-too-ugly) + (and from + (not (string-match gnus-article-x-face-too-ugly + from))))) + (while (setq face (pop x-faces)) + ;; We display the face. + (cond ((stringp gnus-article-x-face-command) + ;; The command is a string, so we interpret the command + ;; as a, well, command, and fork it off. + (let ((process-connection-type nil)) + (gnus-set-process-query-on-exit-flag + (start-process + "article-x-face" nil shell-file-name + shell-command-switch gnus-article-x-face-command) + nil) + (with-temp-buffer + (insert face) + (process-send-region "article-x-face" + (point-min) (point-max))) + (process-send-eof "article-x-face"))) + ((functionp gnus-article-x-face-command) + ;; The command is a lisp function, so we call it. + (funcall gnus-article-x-face-command face)) + (t + (error "%s is not a function" + gnus-article-x-face-command)))))))))) (defun article-decode-mime-words () "Decode all MIME-encoded words in the article." diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 45597b60e88..db45e86ad2c 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el @@ -382,7 +382,7 @@ ticked: The number of ticked articles." :type 'character) (defgroup gnus-group-icons nil - "Add Icons to your group buffer. " + "Add Icons to your group buffer." :group 'gnus-group-visual) (defcustom gnus-group-icon-list diff --git a/lisp/gnus/gnus-nocem.el b/lisp/gnus/gnus-nocem.el index 5a5f779b732..0b9d90d8036 100644 --- a/lisp/gnus/gnus-nocem.el +++ b/lisp/gnus/gnus-nocem.el @@ -1,6 +1,6 @@ ;;; gnus-nocem.el --- NoCeM pseudo-cancellation treatment -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004, 2005 ;; Free Software Foundation, Inc. @@ -37,7 +37,7 @@ (require 'gnus-range) (defgroup gnus-nocem nil - "NoCeM pseudo-cancellation treatment" + "NoCeM pseudo-cancellation treatment." :group 'gnus-score) (defcustom gnus-nocem-groups @@ -74,12 +74,13 @@ issuer registry." :group 'gnus-nocem :type 'integer) -(defcustom gnus-nocem-verifyer 'mc-verify +(defcustom gnus-nocem-verifyer 'pgg-verify "*Function called to verify that the NoCeM message is valid. -One likely value is `mc-verify'. If the function in this variable +One likely value is `pgg-verify'. If the function in this variable isn't bound, the message will be used unconditionally." :group 'gnus-nocem - :type '(radio (function-item mc-verify) + :type '(radio (function-item pgg-verify) + (function-item mc-verify) (function :tag "other"))) (defcustom gnus-nocem-liberal-fetch nil @@ -246,7 +247,7 @@ valid issuer, which is much faster if you are selective about the issuers." ;; We get the name of the issuer. (narrow-to-region b e) (setq issuer (mail-fetch-field "issuer") - type (mail-fetch-field "issuer")) + type (mail-fetch-field "type")) (widen) (if (not (gnus-nocem-message-wanted-p issuer type)) (message "invalid NoCeM issuer: %s" issuer) @@ -267,18 +268,20 @@ valid issuer, which is much faster if you are selective about the issuers." (while (setq condition (pop conditions)) (cond ((stringp condition) - (setq wanted (string-match condition type))) + (when (string-match condition type) + (setq wanted t))) ((and (consp condition) (eq (car condition) 'not) (stringp (cadr condition))) - (setq wanted (not (string-match (cadr condition) type)))) + (when (string-match (cadr condition) type) + (setq wanted nil))) (t (error "Invalid NoCeM condition: %S" condition)))) wanted)))) (defun gnus-nocem-verify-issuer (person) "Verify using PGP that the canceler is who she says she is." - (if (fboundp gnus-nocem-verifyer) + (if (functionp gnus-nocem-verifyer) (ignore-errors (funcall gnus-nocem-verifyer)) ;; If we don't have Mailcrypt, then we use the message anyway. @@ -315,7 +318,10 @@ valid issuer, which is much faster if you are selective about the issuers." (while (eq (char-after) ?\t) (forward-line -1)) (setq id (buffer-substring (point) (1- (search-forward "\t")))) - (unless (gnus-gethash id gnus-nocem-hashtb) + (unless (if gnus-nocem-hashtb + (gnus-gethash id gnus-nocem-hashtb) + (setq gnus-nocem-hashtb (gnus-make-hashtable)) + nil) ;; only store if not already present (gnus-sethash id t gnus-nocem-hashtb) (push id ncm)) diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el index afba1ea427e..629240b9e90 100644 --- a/lisp/gnus/gnus.el +++ b/lisp/gnus/gnus.el @@ -273,7 +273,7 @@ is restarted, and sometimes reloaded." :group 'gnus) (defgroup gnus-exit nil - "Exiting gnus." + "Exiting Gnus." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 7b8a289a4e4..a38c3d1f1c2 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -62,46 +62,46 @@ (put 'user-full-name 'custom-type 'string) (defgroup message-various nil - "Various Message Variables" + "Various Message Variables." :link '(custom-manual "(message)Various Message Variables") :group 'message) (defgroup message-buffers nil - "Message Buffers" + "Message Buffers." :link '(custom-manual "(message)Message Buffers") :group 'message) (defgroup message-sending nil - "Message Sending" + "Message Sending." :link '(custom-manual "(message)Sending Variables") :group 'message) (defgroup message-interface nil - "Message Interface" + "Message Interface." :link '(custom-manual "(message)Interface") :group 'message) (defgroup message-forwarding nil - "Message Forwarding" + "Message Forwarding." :link '(custom-manual "(message)Forwarding") :group 'message-interface) (defgroup message-insertion nil - "Message Insertion" + "Message Insertion." :link '(custom-manual "(message)Insertion") :group 'message) (defgroup message-headers nil - "Message Headers" + "Message Headers." :link '(custom-manual "(message)Message Headers") :group 'message) (defgroup message-news nil - "Composing News Messages" + "Composing News Messages." :group 'message) (defgroup message-mail nil - "Composing Mail Messages" + "Composing Mail Messages." :group 'message) (defgroup message-faces nil diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el index affe72c75c8..da8c148373c 100644 --- a/lisp/gnus/nnmail.el +++ b/lisp/gnus/nnmail.el @@ -49,7 +49,7 @@ :group 'nnmail) (defgroup nnmail-prepare nil - "Preparing (or mangling) new mail after retrival." + "Preparing (or mangling) new mail after retrieval." :group 'nnmail) (defgroup nnmail-duplicate nil diff --git a/lisp/gnus/pgg-gpg.el b/lisp/gnus/pgg-gpg.el index 463020838c9..d419a4b9310 100644 --- a/lisp/gnus/pgg-gpg.el +++ b/lisp/gnus/pgg-gpg.el @@ -30,7 +30,7 @@ (require 'pgg)) (defgroup pgg-gpg () - "GnuPG interface" + "GnuPG interface." :group 'pgg) (defcustom pgg-gpg-program "gpg" diff --git a/lisp/gnus/pgg-parse.el b/lisp/gnus/pgg-parse.el index 7929b54010d..bd62510e838 100644 --- a/lisp/gnus/pgg-parse.el +++ b/lisp/gnus/pgg-parse.el @@ -40,7 +40,7 @@ (require 'custom) (defgroup pgg-parse () - "OpenPGP packet parsing" + "OpenPGP packet parsing." :group 'pgg) (defcustom pgg-parse-public-key-algorithm-alist diff --git a/lisp/gnus/pgg-pgp.el b/lisp/gnus/pgg-pgp.el index ca686e9f1a6..2f552401215 100644 --- a/lisp/gnus/pgg-pgp.el +++ b/lisp/gnus/pgg-pgp.el @@ -30,7 +30,7 @@ (require 'pgg)) (defgroup pgg-pgp () - "PGP 2.* and 6.* interface" + "PGP 2.* and 6.* interface." :group 'pgg) (defcustom pgg-pgp-program "pgp" diff --git a/lisp/gnus/pgg-pgp5.el b/lisp/gnus/pgg-pgp5.el index 372cf48c473..2cd6bf08815 100644 --- a/lisp/gnus/pgg-pgp5.el +++ b/lisp/gnus/pgg-pgp5.el @@ -30,7 +30,7 @@ (require 'pgg)) (defgroup pgg-pgp5 () - "PGP 5.* interface" + "PGP 5.* interface." :group 'pgg) (defcustom pgg-pgp5-pgpe-program "pgpe" diff --git a/lisp/gnus/pgg.el b/lisp/gnus/pgg.el index eff02a1c32a..ca351c90cd2 100644 --- a/lisp/gnus/pgg.el +++ b/lisp/gnus/pgg.el @@ -380,7 +380,8 @@ within the region." (with-output-to-temp-buffer pgg-echo-buffer (set-buffer standard-output) (insert-buffer-substring (if status pgg-output-buffer - pgg-errors-buffer))))))) + pgg-errors-buffer))))) + status)) ;;;###autoload (defun pgg-insert-key () diff --git a/lisp/gnus/pop3.el b/lisp/gnus/pop3.el index b8d827e7d9a..94a6cf8c0ab 100644 --- a/lisp/gnus/pop3.el +++ b/lisp/gnus/pop3.el @@ -39,7 +39,7 @@ (require 'mail-utils) (defgroup pop3 nil - "Post Office Protocol" + "Post Office Protocol." :group 'mail :group 'mail-source) diff --git a/lisp/help-fns.el b/lisp/help-fns.el index d36695faa74..c62447316b9 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -275,9 +275,9 @@ face (according to `face-differs-from-default-p')." ;; This is heuristic, but covers all common cases ;; except ARG1-ARG2 (concat "\\<" ; beginning of word - "\\(?:[a-z-]+-\\)?" ; for xxx-ARG + "\\(?:[a-z-]*-\\)?" ; for xxx-ARG "\\(" - arg + (regexp-quote arg) "\\)" "\\(?:es\\|s\\|th\\)?" ; for ARGth, ARGs "\\(?:-[a-z-]+\\)?" ; for ARG-xxx diff --git a/lisp/imenu.el b/lisp/imenu.el index 0ebdbc4b5f3..2248ece3dbd 100644 --- a/lisp/imenu.el +++ b/lisp/imenu.el @@ -877,7 +877,7 @@ Return one of the entries in index-alist or nil." (if (not imenu-space-replacement) index-alist (mapcar (lambda (item) - (cons (subst-char-in-string ?\ (aref imenu-space-replacement 0) + (cons (subst-char-in-string ?\s (aref imenu-space-replacement 0) (car item)) (cdr item))) index-alist)))) diff --git a/lisp/indent.el b/lisp/indent.el index 9713268f03b..11f01068397 100644 --- a/lisp/indent.el +++ b/lisp/indent.el @@ -29,7 +29,7 @@ ;;; Code: (defgroup indent nil - "Indentation commands" + "Indentation commands." :group 'editing) (defcustom standard-indent 4 diff --git a/lisp/info.el b/lisp/info.el index 20e031c1347..2f9ec3c4f0f 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -38,7 +38,7 @@ (eval-when-compile (require 'jka-compr)) (defgroup info nil - "Info subsystem" + "Info subsystem." :group 'help :group 'docs) @@ -2868,7 +2868,7 @@ Build a menu of the possible matches." (while (progn (setq flag (not (pos-visible-in-window-p (point-max)))) (message (if flag "Type Space to see more" "Type Space to return to Info")) - (if (not (eq ?\ (setq ch (read-event)))) + (if (not (eq ?\s (setq ch (read-event)))) (progn (setq unread-command-events (list ch)) nil) flag)) (scroll-up))) @@ -3196,6 +3196,8 @@ With a zero prefix arg, put the name inside a function call to `info'." (put 'Info-mode 'mode-class 'special) (put 'Info-mode 'no-clone-indirect t) +(defvar tool-bar-map) + (defun Info-mode () "Info mode provides commands for browsing through the Info documentation tree. Documentation in Info is divided into \"nodes\", each of which discusses diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el index 79b47130baf..62d83f9e93e 100644 --- a/lisp/jka-cmpr-hook.el +++ b/lisp/jka-cmpr-hook.el @@ -32,11 +32,11 @@ ;;; Code: (defgroup compression nil - "Data compression utilities" + "Data compression utilities." :group 'data) (defgroup jka-compr nil - "jka-compr customization" + "jka-compr customization." :group 'compression) ;;; I have this defined so that .Z files are assumed to be in unix diff --git a/lisp/lpr.el b/lisp/lpr.el index 0eac7b7ba31..445c793fcdd 100644 --- a/lisp/lpr.el +++ b/lisp/lpr.el @@ -41,7 +41,7 @@ (defgroup lpr nil - "Print Emacs buffer on line printer" + "Print Emacs buffer on line printer." :group 'wp) @@ -291,7 +291,7 @@ The characters tab, linefeed, space, return and formfeed are not affected." (while (re-search-forward "[\^@-\^h\^k\^n-\^_\177-\377]" nil t) (setq c (preceding-char)) (delete-backward-char 1) - (insert (if (< c ?\ ) + (insert (if (< c ?\s) (format "\\^%c" (+ c ?@)) (format "\\%02x" c)))))))) diff --git a/lisp/mail/mailalias.el b/lisp/mail/mailalias.el index d4c5c2c3261..db904277ab5 100644 --- a/lisp/mail/mailalias.el +++ b/lisp/mail/mailalias.el @@ -33,7 +33,7 @@ (require 'sendmail) (defgroup mailalias nil - "Expanding mail aliases" + "Expanding mail aliases." :group 'mail) (defcustom mail-passwd-files '("/etc/passwd") diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el index 9c647126d5c..5bf6af743b3 100644 --- a/lisp/mail/rmailsum.el +++ b/lisp/mail/rmailsum.el @@ -54,6 +54,14 @@ ("{ \\([^\n}]+\\) }" 1 font-lock-comment-face)) ; Labels. "Additional expressions to highlight in Rmail Summary mode.") +(defvar rmail-summary-redo + "(FUNCTION . ARGS) to regenerate this Rmail summary buffer.") + +(defvar rmail-summary-overlay nil) +(put 'rmail-summary-overlay 'permanent-local t) + +(defvar rmail-summary-mode-map nil) + ;; Entry points for making a summary buffer. ;; Regenerate the contents of the summary @@ -165,6 +173,8 @@ SENDERS is a string of names separated by commas." (defvar rmail-summary-symbol-number 0) +(defvar rmail-new-summary-line-count) + (defun rmail-new-summary (description redo-form function &rest args) "Create a summary of selected messages. DESCRIPTION makes part of the mode line of the summary buffer. @@ -187,7 +197,7 @@ nil for FUNCTION means all messages." (setq mesg rmail-current-message) ;; Filter the messages; make or get their summary lines. (let ((summary-msgs ()) - (new-summary-line-count 0)) + (rmail-new-summary-line-count 0)) (let ((msgnum 1) (buffer-read-only nil) (old-min (point-min-marker)) @@ -263,11 +273,11 @@ nil for FUNCTION means all messages." (defun rmail-make-summary-line (msg) (let ((line (or (aref rmail-summary-vector (1- msg)) (progn - (setq new-summary-line-count - (1+ new-summary-line-count)) - (if (zerop (% new-summary-line-count 10)) + (setq rmail-new-summary-line-count + (1+ rmail-new-summary-line-count)) + (if (zerop (% rmail-new-summary-line-count 10)) (message "Computing summary lines...%d" - new-summary-line-count)) + rmail-new-summary-line-count)) (rmail-make-summary-line-1 msg))))) ;; Fix up the part of the summary that says "deleted" or "unseen". (aset line 5 @@ -842,8 +852,6 @@ Search, the `unseen' attribute is restored.") (rmail-show-message msg-num t)))))) (rmail-summary-update-highlight nil))))) -(defvar rmail-summary-mode-map nil) - (if rmail-summary-mode-map nil (setq rmail-summary-mode-map (make-keymap)) @@ -1037,9 +1045,6 @@ Search, the `unseen' attribute is restored.") (define-key rmail-summary-mode-map [menu-bar move next] '("Next" . rmail-summary-next-all)) -(defvar rmail-summary-overlay nil) -(put 'rmail-summary-overlay 'permanent-local t) - (defun rmail-summary-mouse-goto-message (event) "Select the message whose summary line you click on." (interactive "@e") @@ -1191,7 +1196,8 @@ move to the previous message." (or (eq buffer (window-buffer (next-window (frame-first-window)))) (delete-other-windows))) (pop-to-buffer rmail-view-buffer)) - (beginning-of-buffer) + (with-no-warnings + (beginning-of-buffer)) (pop-to-buffer rmail-summary-buffer)) (defun rmail-summary-bury () @@ -1275,12 +1281,14 @@ argument says to read a file name and use that file as the inbox." (defun rmail-summary-first-message () "Show first message in Rmail file from summary buffer." (interactive) - (beginning-of-buffer)) + (with-no-warnings + (beginning-of-buffer))) (defun rmail-summary-last-message () "Show last message in Rmail file from summary buffer." (interactive) - (end-of-buffer) + (with-no-warnings + (end-of-buffer)) (forward-line -1)) (defvar rmail-summary-edit-map nil) diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el index 593f46cad40..137d7d51b53 100644 --- a/lisp/mail/supercite.el +++ b/lisp/mail/supercite.el @@ -44,28 +44,28 @@ ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv (defgroup supercite nil - "Supercite package" + "Supercite package." :prefix "sc-" :group 'mail :group 'news) (defgroup supercite-frames nil - "Supercite (regi) frames" + "Supercite (regi) frames." :prefix "sc-" :group 'supercite) (defgroup supercite-attr nil - "Supercite attributions" + "Supercite attributions." :prefix "sc-" :group 'supercite) (defgroup supercite-cite nil - "Supercite citings" + "Supercite citings." :prefix "sc-" :group 'supercite) (defgroup supercite-hooks nil - "Hooking into supercite" + "Hooking into supercite." :prefix "sc-" :group 'supercite) @@ -1317,6 +1317,8 @@ use it instead of `sc-citation-root-regexp'." sc-citation-delimiter sc-citation-separator)) +(defvar filladapt-prefix-table) + (defun sc-setup-filladapt () "Setup `filladapt-prefix-table' to handle Supercited paragraphs." (let* ((fa-sc-elt 'filladapt-supercite-included-text) diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in index b4569c26140..ce451560bc4 100644 --- a/lisp/makefile.w32-in +++ b/lisp/makefile.w32-in @@ -312,8 +312,11 @@ bootstrap-clean-SH: -for dir in . $(WINS); do rm -f $$dir/*.elc; done # Generate/update files for the bootstrap process. +# When done, remove bootstrap-emacs from ../bin, so that +# it will not be mistaken for an installed binary. bootstrap: update-subdirs autoloads compile finder-data custom-deps + - $(DEL) $(EMACS) # # Assuming INSTALL_DIR is defined, copy the elisp files to it diff --git a/lisp/mouse.el b/lisp/mouse.el index 07e593a70c1..03740e780d5 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -1857,7 +1857,7 @@ and selects that window." (string< (buffer-name elt1) (buffer-name elt2)))))) (setq tail buffers) (while tail - (or (eq ?\ (aref (buffer-name (car tail)) 0)) + (or (eq ?\s (aref (buffer-name (car tail)) 0)) (setq maxlen (max maxlen (length (buffer-name (car tail)))))) diff --git a/lisp/msb.el b/lisp/msb.el index 0bcdad314a6..02ab487bc69 100644 --- a/lisp/msb.el +++ b/lisp/msb.el @@ -489,7 +489,7 @@ See the function `mouse-select-buffer' and the variable "Return t if optional BUFFER is an \"invisible\" buffer. If the argument is left out or nil, then the current buffer is considered." (and (> (length (buffer-name buffer)) 0) - (eq ?\ (aref (buffer-name buffer) 0)))) + (eq ?\s (aref (buffer-name buffer) 0)))) (defun msb--strip-dir (dir) "Strip one hierarchy level from the end of DIR." diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index cd5c2d41f98..87e3dcab5a3 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -799,6 +799,8 @@ to use." ;; --- Default MS-Windows browser --- +(defvar dos-windows-version) + (defun browse-url-default-windows-browser (url &optional new-window) (interactive (browse-url-interactive-arg "URL: ")) (if (eq system-type 'ms-dos) diff --git a/lisp/net/rcompile.el b/lisp/net/rcompile.el index 6928b2f4943..aab6430a839 100644 --- a/lisp/net/rcompile.el +++ b/lisp/net/rcompile.el @@ -70,7 +70,7 @@ ;;;; user defined variables (defgroup remote-compile nil - "Run a compilation on a remote machine" + "Run a compilation on a remote machine." :group 'processes :group 'tools) diff --git a/lisp/net/rlogin.el b/lisp/net/rlogin.el index 3ad66166ece..c0f7b619142 100644 --- a/lisp/net/rlogin.el +++ b/lisp/net/rlogin.el @@ -41,7 +41,7 @@ (require 'shell) (defgroup rlogin nil - "Remote login interface" + "Remote login interface." :group 'processes :group 'unix) diff --git a/lisp/newcomment.el b/lisp/newcomment.el index 59044da6ef9..590e6ce37ba 100644 --- a/lisp/newcomment.el +++ b/lisp/newcomment.el @@ -502,7 +502,7 @@ Point is assumed to be just at the end of a comment." (or (match-end 1) (/= (current-column) (current-indentation)))) 0 (when (or (/= (current-column) (current-indentation)) - (and (> comment-add 0) (looking-at "\\s<\\S<"))) + (and (> comment-add 0) (looking-at "\\s<\\(\\S<\\|\\'\\)"))) comment-column))) ;;;###autoload diff --git a/lisp/obsolete/ooutline.el b/lisp/obsolete/ooutline.el index 0218d097b64..588770f7e75 100644 --- a/lisp/obsolete/ooutline.el +++ b/lisp/obsolete/ooutline.el @@ -33,7 +33,7 @@ ;; Jan '86, Some new features added by Peter Desnoyers and rewritten by RMS. (defgroup outlines nil - "Support for hierarchical outlining" + "Support for hierarchical outlining." :prefix "outline-" :group 'editing) diff --git a/lisp/outline.el b/lisp/outline.el index b807365f733..62d2e57933f 100644 --- a/lisp/outline.el +++ b/lisp/outline.el @@ -38,7 +38,7 @@ ;;; Code: (defgroup outlines nil - "Support for hierarchical outlining" + "Support for hierarchical outlining." :prefix "outline-" :group 'editing) diff --git a/lisp/pcmpl-cvs.el b/lisp/pcmpl-cvs.el index d5003d5de08..805f42ea41a 100644 --- a/lisp/pcmpl-cvs.el +++ b/lisp/pcmpl-cvs.el @@ -33,7 +33,7 @@ (require 'executable) (defgroup pcmpl-cvs nil - "Functions for dealing with CVS completions" + "Functions for dealing with CVS completions." :group 'pcomplete) ;; User Variables: diff --git a/lisp/pcmpl-rpm.el b/lisp/pcmpl-rpm.el index 683819b54ff..e4d6ebc1a80 100644 --- a/lisp/pcmpl-rpm.el +++ b/lisp/pcmpl-rpm.el @@ -30,7 +30,7 @@ (require 'pcomplete) (defgroup pcmpl-rpm nil - "Functions for dealing with CVS completions" + "Functions for dealing with CVS completions." :group 'pcomplete) ;; Functions: diff --git a/lisp/play/decipher.el b/lisp/play/decipher.el index 9ef8d0fd01f..86e6a35b646 100644 --- a/lisp/play/decipher.el +++ b/lisp/play/decipher.el @@ -772,7 +772,7 @@ See `decipher-loop-no-breaks' if you do not care about word divisions." (forward-char)) (or (equal decipher-char ?\ ) (progn - (setq decipher-char ?\ ; + (setq decipher-char ?\s decipher--loop-prev-char ?\ ) (funcall func))))))) diff --git a/lisp/printing.el b/lisp/printing.el index 868ea3fddf3..2dbe460c0cc 100644 --- a/lisp/printing.el +++ b/lisp/printing.el @@ -1179,7 +1179,7 @@ If SUFFIX is non-nil, add that at the end of the file name." (defgroup printing nil - "Printing Utilities group" + "Printing Utilities group." :tag "Printing Utilities" :link '(emacs-library-link :tag "Source Lisp File" "printing.el") :prefix "pr-" @@ -6058,7 +6058,7 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order." ;; header (let ((versions (concat "printing v" pr-version " ps-print v" ps-print-version))) - (widget-insert (make-string (- 79 (length versions)) ?\ ) versions)) + (widget-insert (make-string (- 79 (length versions)) ?\s) versions)) (pr-insert-italic "\nCurrent Directory : " 1) (pr-insert-italic default-directory) diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 3f3b385c5ed..f8da248535b 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -493,25 +493,60 @@ starting the compilation process.") ;; backward-compatibility alias (put 'compilation-info-face 'face-alias 'compilation-info) +(defface compilation-error-file-name + '((default :inherit font-lock-warning-face) + (((supports :underline t)) :underline t)) + "Face for displaying file names in compilation errors." + :group 'font-lock-highlighting-faces + :version "22.1") + +(defface compilation-warning-file-name + '((default :inherit font-lock-warning-face) + (((supports :underline t)) :underline t)) + "Face for displaying file names in compilation errors." + :group 'font-lock-highlighting-faces + :version "22.1") + +(defface compilation-info-file-name + '((default :inherit compilation-info) + (((supports :underline t)) :underline t)) + "Face for displaying file names in compilation errors." + :group 'font-lock-highlighting-faces + :version "22.1") + +(defface compilation-line-number + '((default :inherit font-lock-variable-name-face) + (((supports :underline t)) :underline t)) + "Face for displaying file names in compilation errors." + :group 'font-lock-highlighting-faces + :version "22.1") + +(defface compilation-column-number + '((default :inherit font-lock-type-face) + (((supports :underline t)) :underline t)) + "Face for displaying file names in compilation errors." + :group 'font-lock-highlighting-faces + :version "22.1") + (defvar compilation-message-face nil "Face name to use for whole messages. Faces `compilation-error-face', `compilation-warning-face', `compilation-info-face', `compilation-line-face' and `compilation-column-face' get prepended to this, when applicable.") -(defvar compilation-error-face 'font-lock-warning-face +(defvar compilation-error-face 'compilation-error-file-name "Face name to use for file name in error messages.") -(defvar compilation-warning-face 'compilation-warning +(defvar compilation-warning-face 'compilation-warning-file-name "Face name to use for file name in warning messages.") -(defvar compilation-info-face 'compilation-info +(defvar compilation-info-face 'compilation-info-file-name "Face name to use for file name in informational messages.") -(defvar compilation-line-face 'font-lock-variable-name-face +(defvar compilation-line-face 'compilation-line-number "Face name to use for line number in message.") -(defvar compilation-column-face 'font-lock-type-face +(defvar compilation-column-face 'compilation-column-number "Face name to use for column number in message.") ;; same faces as dired uses @@ -1342,8 +1377,9 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'." (force-mode-line-update) (if (and opoint (< opoint omax)) (goto-char opoint)) - (if compilation-finish-function - (funcall compilation-finish-function (current-buffer) msg)) + (with-no-warnings + (if compilation-finish-function + (funcall compilation-finish-function (current-buffer) msg))) (let ((functions compilation-finish-functions)) (while functions (funcall (car functions) (current-buffer) msg) @@ -1501,8 +1537,9 @@ Use this command in a compilation log buffer. Sets the mark at point there." ;;;###autoload (defun compilation-next-error-function (n &optional reset) + "Advance to the next error message and visit the file where the error was. +This is the value of `next-error-function' in Compilation buffers." (interactive "p") - (set-buffer (compilation-find-buffer)) (when reset (setq compilation-current-error nil)) (let* ((columns compilation-error-screen-columns) ; buffer's local value diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index d95c0294c4d..052df4eedda 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -1516,7 +1516,8 @@ or as help on variables `cperl-tips', `cperl-problems', (t '((cperl-load-font-lock-keywords cperl-load-font-lock-keywords-1 - cperl-load-font-lock-keywords-2))))) + cperl-load-font-lock-keywords-2) + nil nil ((?_ . "w")))))) (make-local-variable 'cperl-syntax-state) (if cperl-use-syntax-table-text-property (progn @@ -3840,7 +3841,11 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', (and (buffer-modified-p) (not modified) (set-buffer-modified-p nil)) - (set-syntax-table cperl-mode-syntax-table)) + ;; I do not understand what this is doing here. It breaks font-locking + ;; because it resets the syntax-table from font-lock-syntax-table to + ;; cperl-mode-syntax-table. + ;; (set-syntax-table cperl-mode-syntax-table) + ) (car err-l))) (defun cperl-backward-to-noncomment (lim) @@ -4350,7 +4355,7 @@ indentation and initial hashes. Behaves usually outside of comment." fill-column) (let ((c (save-excursion (beginning-of-line) (cperl-to-comment-or-eol) (point))) - (s (memq (following-char) '(?\ ?\t))) marker) + (s (memq (following-char) '(?\s ?\t))) marker) (if (>= c (point)) ;; Don't break line inside code: only inside comment. nil @@ -4361,11 +4366,11 @@ indentation and initial hashes. Behaves usually outside of comment." (if (bolp) (progn (re-search-forward "#+[ \t]*") (goto-char (match-end 0)))) ;; Following space could have gone: - (if (or (not s) (memq (following-char) '(?\ ?\t))) nil + (if (or (not s) (memq (following-char) '(?\s ?\t))) nil (insert " ") (backward-char 1)) ;; Previous space could have gone: - (or (memq (preceding-char) '(?\ ?\t)) (insert " ")))))) + (or (memq (preceding-char) '(?\s ?\t)) (insert " ")))))) (defun cperl-imenu-addback (lst &optional isback name) ;; We suppose that the lst is a DAG, unless the first element only diff --git a/lisp/progmodes/delphi.el b/lisp/progmodes/delphi.el index 166e5b8984e..00ed882c852 100644 --- a/lisp/progmodes/delphi.el +++ b/lisp/progmodes/delphi.el @@ -88,7 +88,7 @@ ) (defgroup delphi nil - "Major mode for editing Delphi source in Emacs" + "Major mode for editing Delphi source in Emacs." :version "21.1" :group 'languages) @@ -1510,7 +1510,7 @@ before the indent, the point is moved to the indent." (set-marker-insertion-type marked-point t) (when (/= old-indent new-indent) (delete-region line-start (point)) - (insert (make-string new-indent ?\ ))) + (insert (make-string new-indent ?\s))) (goto-char marked-point) (set-marker marked-point nil)))) @@ -1775,7 +1775,7 @@ An error is raised if not in a comment." (comment-end (delphi-token-end end-comment)) (content-start (delphi-comment-content-start start-comment)) (content-indent (delphi-column-of content-start)) - (content-prefix (make-string content-indent ?\ )) + (content-prefix (make-string content-indent ?\s)) (content-prefix-re delphi-leading-spaces-re) (p nil) (marked-point (point-marker))) ; Maintain our position reliably. @@ -1783,9 +1783,9 @@ An error is raised if not in a comment." ;; // style comments need more work. (setq content-prefix (let ((comment-indent (delphi-column-of comment-start))) - (concat (make-string comment-indent ?\ ) "//" + (concat (make-string comment-indent ?\s) "//" (make-string (- content-indent comment-indent 2) - ?\ ))) + ?\s))) content-prefix-re (concat delphi-leading-spaces-re "//" delphi-spaces-re) @@ -1857,8 +1857,8 @@ comment block. If not in a // comment, just does a normal newline." (comment-start (delphi-token-start start-comment)) (content-start (delphi-comment-content-start start-comment)) (prefix - (concat (make-string (delphi-column-of comment-start) ?\ ) "//" - (make-string (- content-start comment-start 2) ?\ )))) + (concat (make-string (delphi-column-of comment-start) ?\s) "//" + (make-string (- content-start comment-start 2) ?\s)))) (delete-horizontal-space) (newline) (insert prefix))))) diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el index 1a680ffa077..22240a3a205 100644 --- a/lisp/progmodes/ebnf2ps.el +++ b/lisp/progmodes/ebnf2ps.el @@ -1135,14 +1135,14 @@ Elements of ALIST that are not conses are ignored." ;;; Interface to the command system (defgroup postscript nil - "PostScript Group" + "PostScript Group." :tag "PostScript" :version "20" :group 'emacs) (defgroup ebnf2ps nil - "Translate an EBNF to a syntactic chart on PostScript" + "Translate an EBNF to a syntactic chart on PostScript." :prefix "ebnf-" :version "20" :group 'wp @@ -1150,7 +1150,7 @@ Elements of ALIST that are not conses are ignored." (defgroup ebnf-special nil - "Special customization" + "Special customization." :prefix "ebnf-" :tag "Special" :version "20" @@ -1158,7 +1158,7 @@ Elements of ALIST that are not conses are ignored." (defgroup ebnf-except nil - "Except customization" + "Except customization." :prefix "ebnf-" :tag "Except" :version "20" @@ -1166,7 +1166,7 @@ Elements of ALIST that are not conses are ignored." (defgroup ebnf-repeat nil - "Repeat customization" + "Repeat customization." :prefix "ebnf-" :tag "Repeat" :version "20" @@ -1174,7 +1174,7 @@ Elements of ALIST that are not conses are ignored." (defgroup ebnf-terminal nil - "Terminal customization" + "Terminal customization." :prefix "ebnf-" :tag "Terminal" :version "20" @@ -1182,7 +1182,7 @@ Elements of ALIST that are not conses are ignored." (defgroup ebnf-non-terminal nil - "Non-Terminal customization" + "Non-Terminal customization." :prefix "ebnf-" :tag "Non-Terminal" :version "20" @@ -1190,7 +1190,7 @@ Elements of ALIST that are not conses are ignored." (defgroup ebnf-production nil - "Production customization" + "Production customization." :prefix "ebnf-" :tag "Production" :version "20" @@ -1198,7 +1198,7 @@ Elements of ALIST that are not conses are ignored." (defgroup ebnf-shape nil - "Shapes customization" + "Shapes customization." :prefix "ebnf-" :tag "Shape" :version "20" @@ -1206,7 +1206,7 @@ Elements of ALIST that are not conses are ignored." (defgroup ebnf-displacement nil - "Displacement customization" + "Displacement customization." :prefix "ebnf-" :tag "Displacement" :version "20" @@ -1214,7 +1214,7 @@ Elements of ALIST that are not conses are ignored." (defgroup ebnf-syntactic nil - "Syntactic customization" + "Syntactic customization." :prefix "ebnf-" :tag "Syntactic" :version "20" @@ -1222,7 +1222,7 @@ Elements of ALIST that are not conses are ignored." (defgroup ebnf-optimization nil - "Optimization customization" + "Optimization customization." :prefix "ebnf-" :tag "Optimization" :version "20" @@ -4623,7 +4623,7 @@ killed after process termination." (defun ebnf-eps-filename (str) (let* ((len (length str)) (stri 0) - (new (make-string len ?\ ))) + (new (make-string len ?\s))) (while (< stri len) (aset new stri (aref ebnf-map-name (aref str stri))) (setq stri (1+ stri))) @@ -5523,7 +5523,7 @@ killed after process termination." (defun ebnf-trim-right (str) (let* ((len (1- (length str))) (index len)) - (while (and (> index 0) (= (aref str index) ?\ )) + (while (and (> index 0) (= (aref str index) ?\s)) (setq index (1- index))) (if (= index len) str diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el index 5f8ea5ae70a..04e8b2fc52a 100644 --- a/lisp/progmodes/ebrowse.el +++ b/lisp/progmodes/ebrowse.el @@ -938,7 +938,8 @@ NOCONFIRM." (loop for member-buffer in (ebrowse-same-tree-member-buffer-list) do (kill-buffer member-buffer)) (erase-buffer) - (insert-file (or buffer-file-name ebrowse--tags-file-name)) + (with-no-warnings + (insert-file (or buffer-file-name ebrowse--tags-file-name))) (ebrowse-tree-mode) (current-buffer))) diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index b119b03f0bf..590fe4991f5 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -40,7 +40,7 @@ Use the `etags' program to make a tags table file.") ;; Make M-x set-variable tags-file-name like M-x visit-tags-table. ;;;###autoload (put 'tags-file-name 'variable-interactive "fVisit tags table: ") -(defgroup etags nil "Tags tables" +(defgroup etags nil "Tags tables." :group 'tools) ;;;###autoload diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el index d278b10ba0c..3fff4c04038 100644 --- a/lisp/progmodes/executable.el +++ b/lisp/progmodes/executable.el @@ -53,7 +53,7 @@ ;;; Code: (defgroup executable nil - "Base functionality for executable interpreter scripts" + "Base functionality for executable interpreter scripts." :group 'processes) ;; This used to default to `other', but that doesn't seem to have any @@ -230,7 +230,7 @@ executable." (and (goto-char (match-beginning 1)) ;; If the line ends in a space, ;; don't offer to change it. - (not (= (char-after (1- (match-end 1))) ?\ )) + (not (= (char-after (1- (match-end 1))) ?\s)) (not (string= argument (buffer-substring (point) (match-end 1)))) (if (or (not executable-query) no-query-flag diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index c47f2e34cd2..96bff481e30 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -32,6 +32,18 @@ ;;; Code: +;;;; [[ Silence the byte-compiler + +(eval-when-compile + (defvar flymake-check-start-time) + (defvar flymake-check-was-interrupted) + (defvar flymake-err-info) + (defvar flymake-is-running) + (defvar flymake-last-change-time) + (defvar flymake-new-err-info)) + +;;;; ]] + ;;;; [[ Xemacs overlay compatibility (if (featurep 'xemacs) (progn (autoload 'make-overlay "overlay" "Overlay compatibility kit." t) @@ -53,9 +65,10 @@ (defalias 'flymake-float-time (if (fboundp 'float-time) 'float-time - (lambda () - (multiple-value-bind (s0 s1 s2) (current-time) - (+ (* (float (ash 1 16)) s0) (float s1) (* 0.0000001 s2)))))) + (with-no-warnings + (lambda () + (multiple-value-bind (s0 s1 s2) (current-time) + (+ (* (float (ash 1 16)) s0) (float s1) (* 0.0000001 s2))))))) (defsubst flymake-replace-regexp-in-string (regexp rep str) (if (fboundp 'replace-regexp-in-string) @@ -390,7 +403,7 @@ Return t if so, nil if not." (defun flymake-find-possible-master-files (file-name master-file-dirs masks) "Find (by name and location) all possible master files. -Master files are .cpp and .c for and .h. Files are searched for +Master files are .cpp and .c for and .h. Files are searched for starting from the .h directory and max max-level parent dirs. File contents are not checked." (let* ((dirs master-file-dirs) @@ -423,9 +436,9 @@ File contents are not checked." files)) (defun flymake-master-file-compare (file-one file-two) - "Compare two files speccified by FILE-ONE and FILE-TWO. + "Compare two files specified by FILE-ONE and FILE-TWO. This function is used in sort to move most possible file names -to the beginning of the list (File.h -> File.cpp moved to top." +to the beginning of the list (File.h -> File.cpp moved to top)." (and (equal (file-name-sans-extension flymake-included-file-name) (file-name-sans-extension (file-name-nondirectory file-one))) (not (equal file-one file-two)))) @@ -750,7 +763,7 @@ It's flymake process filter." (defun flymake-get-line-err-count (line-err-info-list type) "Return number of errors of specified TYPE. -Value of TYPE is eigher e or w." +Value of TYPE is either \"e\" or \"w\"." (let* ((idx 0) (count (length line-err-info-list)) (err-count 0)) @@ -859,7 +872,7 @@ Return t if it has at least one flymake overlay, nil if no overlay." (defun flymake-highlight-line (line-no line-err-info-list) "Highlight line LINE-NO in current buffer. -Perhaps use text from LINE-ERR-INFO-ILST to enhance highlighting." +Perhaps use text from LINE-ERR-INFO-LIST to enhance highlighting." (goto-line line-no) (let* ((line-beg (flymake-line-beginning-position)) (line-end (flymake-line-end-position)) @@ -995,8 +1008,8 @@ from compile.el") ;;) (defun flymake-parse-line (line) - "Parse LINE to see if it is an error of warning. -Return its components if so, nil if no." + "Parse LINE to see if it is an error or warning. +Return its components if so, nil otherwise." (let ((raw-file-name nil) (line-no 0) (err-type "e") @@ -1110,7 +1123,7 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'." inc-dirs))) (defcustom flymake-get-project-include-dirs-function 'flymake-get-project-include-dirs-imp - "Function used to get project inc dirs, one paramater: basedir name." + "Function used to get project include dirs, one parameter: basedir name." :group 'flymake :type 'function) @@ -1138,24 +1151,6 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'." (let* ((include-dirs (append '(".") (flymake-get-project-include-dirs base-dir) (flymake-get-system-include-dirs)))) include-dirs)) -(defun flymake-find-file (rel-file-name include-dirs) - "Iterate through include-dirs to find file REL-FILE-NAME. -Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if not." - (let* ((count (length include-dirs)) - (idx 0) - (found nil) - (full-file-name rel-file-name)) - - (while (and (not found) (< idx count)) - (let* ((dir (nth idx include-dirs))) - (setq full-file-name (concat dir "/" rel-file-name)) - (when (file-exists-p full-file-name) - (setq found t))) - (setq idx (1+ idx))) - (if found - full-file-name - rel-file-name))) - (defun flymake-restore-formatting (source-buffer) "Remove any formatting made by flymake." ) @@ -1366,7 +1361,7 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if (flymake-log 1 "no errors for line %d" line-no)))) (defun flymake-make-err-menu-data (line-no line-err-info-list) - "Make a (menu-title (item-title item-action)*) list with errors/warnings from line-err-info." + "Make a (menu-title (item-title item-action)*) list with errors/warnings from LINE-ERR-INFO-LIST." (let* ((menu-items nil)) (when line-err-info-list (let* ((count (length line-err-info-list)) @@ -1431,7 +1426,7 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if (message-box warning)) (defcustom flymake-gui-warnings-enabled t - "Enables/disables gui warnings." + "Enables/disables GUI warnings." :group 'flymake :type 'boolean) @@ -1445,61 +1440,62 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if (flymake-log 0 "switched OFF Flymake mode for buffer %s due to fatal status %s, warning %s" (buffer-name buffer) status warning))) +(defcustom flymake-start-syntax-check-on-find-file t + "Start syntax check on find file." + :group 'flymake + :type 'boolean) + ;;;###autoload (define-minor-mode flymake-mode "Minor mode to do on-the-fly syntax checking. When called interactively, toggles the minor mode. With arg, turn Flymake mode on if and only if arg is positive." :group 'flymake :lighter flymake-mode-line - (if flymake-mode - (if (flymake-can-syntax-check-file (buffer-file-name)) - (flymake-mode-on) - (flymake-log 2 "flymake cannot check syntax in buffer %s" (buffer-name))) - (flymake-mode-off))) + (cond + + ;; Turning the mode ON. + (flymake-mode + (if (not (flymake-can-syntax-check-file buffer-file-name)) + (flymake-log 2 "flymake cannot check syntax in buffer %s" (buffer-name)) + (add-hook 'after-change-functions 'flymake-after-change-function nil t) + (add-hook 'after-save-hook 'flymake-after-save-hook nil t) + (add-hook 'kill-buffer-hook 'flymake-kill-buffer-hook nil t) + ;;+(add-hook 'find-file-hook 'flymake-find-file-hook) + + (flymake-report-status (current-buffer) "" "") + + (setq flymake-timer + (run-at-time nil 1 'flymake-on-timer-event (current-buffer))) + + (when flymake-start-syntax-check-on-find-file + (flymake-start-syntax-check-for-current-buffer)))) + + ;; Turning the mode OFF. + (t + (remove-hook 'after-change-functions 'flymake-after-change-function t) + (remove-hook 'after-save-hook 'flymake-after-save-hook t) + (remove-hook 'kill-buffer-hook 'flymake-kill-buffer-hook t) + ;;+(remove-hook 'find-file-hook (function flymake-find-file-hook) t) -(defcustom flymake-start-syntax-check-on-find-file t - "Start syntax check on find file." - :group 'flymake - :type 'boolean) + (flymake-delete-own-overlays (current-buffer)) + + (when flymake-timer + (cancel-timer flymake-timer) + (setq flymake-timer nil)) + + (setq flymake-is-running nil)))) ;;;###autoload (defun flymake-mode-on () "Turn flymake mode on." - (when (not flymake-mode) - (make-local-variable 'after-change-functions) - (setq after-change-functions (cons 'flymake-after-change-function after-change-functions)) - (add-hook 'after-save-hook 'flymake-after-save-hook) - (add-hook 'kill-buffer-hook 'flymake-kill-buffer-hook) - ;;+(add-hook 'find-file-hook 'flymake-find-file-hook) - - (flymake-report-status (current-buffer) "" "") - - (setq flymake-timer - (run-at-time nil 1 'flymake-on-timer-event (current-buffer))) - - (setq flymake-mode t) - (flymake-log 1 "flymake mode turned ON for buffer %s" (buffer-name (current-buffer))) - (when flymake-start-syntax-check-on-find-file - (flymake-start-syntax-check-for-current-buffer)))) ; will be started by on-load hook + (flymake-mode 1) + (flymake-log 1 "flymake mode turned ON for buffer %s" (buffer-name))) ;;;###autoload (defun flymake-mode-off () "Turn flymake mode off." - (when flymake-mode - (setq after-change-functions (delq 'flymake-after-change-function after-change-functions)) - (remove-hook 'after-save-hook (function flymake-after-save-hook) t) - (remove-hook 'kill-buffer-hook (function flymake-kill-buffer-hook) t) - ;;+(remove-hook 'find-file-hook (function flymake-find-file-hook) t) - - (flymake-delete-own-overlays (current-buffer)) - - (when flymake-timer - (cancel-timer flymake-timer) - (setq flymake-timer nil)) - - (setq flymake-is-running nil) - (setq flymake-mode nil) - (flymake-log 1 "flymake mode turned OFF for buffer %s" (buffer-name (current-buffer))))) + (flymake-mode 0) + (flymake-log 1 "flymake mode turned OFF for buffer %s" (buffer-name))) (defcustom flymake-start-syntax-check-on-newline t "Start syntax check if newline char was added/removed from the buffer." @@ -1532,7 +1528,7 @@ With arg, turn Flymake mode on if and only if arg is positive." ;;+ (flymake-start-syntax-check-for-current-buffer) ;;+) (when (and (not (local-variable-p 'flymake-mode (current-buffer))) - (flymake-can-syntax-check-file (buffer-file-name (current-buffer)))) + (flymake-can-syntax-check-file buffer-file-name)) (flymake-mode) (flymake-log 3 "automatically turned ON flymake mode"))) @@ -1557,7 +1553,7 @@ With arg, turn Flymake mode on if and only if arg is positive." (flymake-er-get-line (nth idx err-info-list)))))) (defun flymake-get-prev-err-line-no (err-info-list line-no) - "Return prev line with error." + "Return previous line with error." (when err-info-list (let* ((count (length err-info-list))) (while (and (> count 0) (<= line-no (flymake-er-get-line (nth (1- count) err-info-list)))) @@ -1587,7 +1583,7 @@ With arg, turn Flymake mode on if and only if arg is positive." (flymake-log 1 "no errors in current buffer")))) (defun flymake-goto-prev-error () - "Go to prev error in err ring." + "Go to previous error in err ring." (interactive) (let ((line-no (flymake-get-prev-err-line-no flymake-err-info (flymake-current-line-no)))) (when (not line-no) diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index 471d3b308ec..fd8bfeb5d72 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -4,7 +4,7 @@ ;; Maintainer: FSF ;; Keywords: unix, tools -;; Copyright (C) 1992,93,94,95,96,1998,2000,02,03,04 Free Software Foundation, Inc. +;; Copyright (C) 1992,93,94,95,96,1998,2000,02,03,04,05 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -2534,7 +2534,7 @@ It is saved for when this flag is not set.") ;; This must be outside of the save-excursion ;; in case the source file is our current buffer. (if process-window - (with-selected-window + (with-selected-window process-window (gud-display-frame)) ;; We have to be in the proper buffer, (process-buffer proc), ;; but not in a save-excursion, because that would restore point. diff --git a/lisp/progmodes/idlw-complete-structtag.el b/lisp/progmodes/idlw-complete-structtag.el new file mode 100644 index 00000000000..39f40d887f6 --- /dev/null +++ b/lisp/progmodes/idlw-complete-structtag.el @@ -0,0 +1,243 @@ +;;; idlw-complete-structtag.el --- Completion of structure tags. +;; Copyright (c) 2001,2002 Free Software Foundation + +;; Author: Carsten Dominik <dominik@science.uva.nl> +;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> +;; Version: 1.2 +;; Keywords: languages + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; Completion of structure tags can be done automatically in the +;; shell, since the list of tags can be determined dynamically through +;; interaction with IDL. + +;; Completion of structure tags in a source buffer is highly ambiguous +;; since you never know what kind of structure a variable will hold at +;; runtime. To make this feature useful in source buffers, we need a +;; special assumption/convention. We will assume that the structure is +;; defined in the same buffer and directly assigned to the correct +;; variable. This is mainly useful for applications in which there is one +;; main structure which contains a large amount of information (and many +;; tags). For example, many widget applications define a "state" structure +;; that contains all important data about the application. The different +;; routines called by the event handler then use this structure. If you +;; use the same variable name for this structure throughout your +;; application (a good idea for many reasons), IDLWAVE can support +;; completion for its tags. +;; +;; This file is a completion plugin which implements this kind of +;; completion. It is also an example which shows how completion plugins +;; should be programmed. +;; +;; New versions of IDLWAVE, documentation, and more information available +;; from: +;; http://idlwave.org +;; +;; INSTALLATION +;; ============ +;; Put this file on the emacs load path and load it with the following +;; line in your .emacs file: +;; +;; (add-hook 'idlwave-load-hook +;; (lambda () (require 'idlw-complete-structtag))) +;; +;; DESCRIPTION +;; =========== +;; Suppose your IDL program contains something like +;; +;; myvar = state.a* +;; +;; where the star marks the cursor position. If you now press the +;; completion key M-TAB, IDLWAVE searches the current file for a +;; structure definition +;; +;; state = {tag1:val1, tag2:val2, ...} +;; +;; and offers the tags for completion. +;; +;; In the idlwave shell, idlwave sends a "print,tag_names()" for the +;; variable to idl and determines the current tag list dynamically. +;; +;; Notes +;; ----- +;; - The structure definition assignment "state = {...}" must use the +;; same variable name as the the completion location "state.*". +;; - The structure definition must be in the same file. +;; - The structure definition is searched backwards and then forward +;; from the current position, until a definition with tags is found. +;; - The file is parsed again for each new completion variable and location. +;; - You can force an update of the tag list with the usual command +;; to update routine info in IDLWAVE: C-c C-i + + +;; Some variables to identify the previously used structure +(defvar idlwave-current-tags-var nil) +(defvar idlwave-current-tags-buffer nil) +(defvar idlwave-current-tags-completion-pos nil) + +;; The tag list used for completion will be stored in the following vars +(defvar idlwave-current-struct-tags nil) +(defvar idlwave-sint-structtags nil) + +;; Create the sintern type for structure talks +(idlwave-new-sintern-type 'structtag) + +;; Hook the plugin into idlwave +(add-to-list 'idlwave-complete-special 'idlwave-complete-structure-tag) +(add-hook 'idlwave-update-rinfo-hook 'idlwave-structtag-reset) + +;;; The main code follows below + +(defun idlwave-complete-structure-tag () + "Complete a structure tag. +This works by looking in the current file for a structure assignment to a +variable with the same name and takes the tags from there. Quite useful +for big structures like the state variables of a widget application. + +In the idlwave shell, the current content of the variable is used to get +an up-to-date completion list." + (interactive) + (let ((pos (point)) + start + (case-fold-search t)) + (if (save-excursion + ;; Check if the context is right. + ;; In the shell, this could be extended to expressions like + ;; x[i+4].name.g*. But it is complicated because we would have + ;; to really parse this expression. For now, we allow only + ;; substructures, like "aaa.bbb.ccc.ddd" + (skip-chars-backward "[a-zA-Z0-9._$]") + (setq start (point)) ;; remember the start of the completion pos. + (and (< (point) pos) + (not (equal (char-before) ?!)) ; no sysvars + (looking-at "\\([a-zA-Z][.a-zA-Z0-9_]*\\)\\.") + (>= pos (match-end 0)) + (not (string= (downcase (match-string 1)) "self")))) + (let* ((var (downcase (match-string 1)))) + ;; Check if we need to update the "current" structure. Basically we + ;; do it always, except for subsequent completions at the same + ;; spot, to save a bit of time. Implementation: We require + ;; an update if + ;; - the variable is different or + ;; - the buffer is different or + ;; - we are completing at a different position + (if (or (not (string= var (or idlwave-current-tags-var "@"))) + (not (eq (current-buffer) idlwave-current-tags-buffer)) + (not (equal start idlwave-current-tags-completion-pos))) + (idlwave-prepare-structure-tag-completion var)) + (setq idlwave-current-tags-completion-pos start) + (setq idlwave-completion-help-info + (list 'idlwave-complete-structure-tag-help)) + (idlwave-complete-in-buffer 'structtag 'structtag + idlwave-current-struct-tags nil + "Select a structure tag" "structure tag") + t) ; we did the completion: return t to skip other completions + nil))) ; return nil to allow looking for other ways to complete + +(defun idlwave-structtag-reset () + "Force an update of the current structure tag list upon next use." + (setq idlwave-current-tags-buffer nil)) + +(defvar idlwave-structtag-struct-location nil + "The location of the structure definition, for help display.") + +(defun idlwave-prepare-structure-tag-completion (var) + "Find and parse the tag list for structure tag completion." + ;; This works differently in source buffers and in the shell + (if (eq major-mode 'idlwave-shell-mode) + ;; OK, we are in the shell, do it dynamically + (progn + (message "preparing shell tags") + ;; The following call puts the tags into `idlwave-current-struct-tags' + (idlwave-complete-structure-tag-query-shell var) + ;; initialize + (setq idlwave-sint-structtags nil + idlwave-current-tags-buffer (current-buffer) + idlwave-current-tags-var var + idlwave-structtag-struct-location (point) + idlwave-current-struct-tags + (mapcar (lambda (x) + (list (idlwave-sintern-structtag x 'set))) + idlwave-current-struct-tags)) + (if (not idlwave-current-struct-tags) + (error "Cannot complete structure tags of variable %s" var))) + ;; Not the shell, so probably a source buffer. + (unless + (catch 'exit + (save-excursion + (goto-char (point-max)) + ;; Find possible definitions of the structure. + (while (idlwave-find-structure-definition var nil 'all) + (let ((tags (idlwave-struct-tags))) + (when tags + ;; initialize + (setq idlwave-sint-structtags nil + idlwave-current-tags-buffer (current-buffer) + idlwave-current-tags-var var + idlwave-structtag-struct-location (point) + idlwave-current-struct-tags + (mapcar (lambda (x) + (list (idlwave-sintern-structtag x 'set))) + tags)) + (throw 'exit t)))))) + (error "Cannot complete structure tags of variable %s" var)))) + +(defun idlwave-complete-structure-tag-query-shell (var) + "Ask the shell for the tags of the structure in variable or expression VAR." + (idlwave-shell-send-command + (format "if size(%s,/TYPE) eq 8 then print,tag_names(%s)" var var) + 'idlwave-complete-structure-tag-get-tags-from-help + 'hide 'wait)) + +(defvar idlwave-shell-prompt-pattern) +(defvar idlwave-shell-command-output) +(defun idlwave-complete-structure-tag-get-tags-from-help () + "Filter structure tag name output, result to `idlwave-current-struct-tags'." + (setq idlwave-current-struct-tags + (if (string-match (concat "tag_names(.*) *\n" + "\\(\\(.*[\r\n]?\\)*\\)" + "\\(" idlwave-shell-prompt-pattern "\\)") + idlwave-shell-command-output) + (split-string (match-string 1 idlwave-shell-command-output))))) + + +;; Fake help in the source buffer for structure tags. +;; kwd and name are global-variables here. +(defvar name) +(defvar kwd) +(defvar idlwave-help-do-struct-tag) +(defun idlwave-complete-structure-tag-help (mode word) + (cond + ((eq mode 'test) + ;; fontify only in source buffers, not in the shell. + (not (equal idlwave-current-tags-buffer + (get-buffer (idlwave-shell-buffer))))) + ((eq mode 'set) + (setq kwd word + idlwave-help-do-struct-tag idlwave-structtag-struct-location)) + (t (error "This should not happen")))) + +(provide 'idlw-complete-structtag) + +;;; idlw-complete-structtag.el ends here + + +;; arch-tag: d1f9e55c-e504-4187-9c31-3c3651fa4bfa diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el index ba31e6e0ef8..5ed4c23d592 100644 --- a/lisp/progmodes/idlw-help.el +++ b/lisp/progmodes/idlw-help.el @@ -4,9 +4,9 @@ ;; Copyright (c) 2003,2004,2005 Free Software Foundation ;; ;; Authors: J.D. Smith <jdsmith@as.arizona.edu> -;; Carsten Dominik <dominik@astro.uva.nl> +;; Carsten Dominik <dominik@science.uva.nl> ;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> -;; Version: 5.5 +;; Version: 5.7_22 ;; This file is part of GNU Emacs. @@ -36,12 +36,18 @@ ;; information, at: ;; ;; http://idlwave.org -;; +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Code: -(require 'browse-url) +(defvar idlwave-help-browse-url-available nil + "Whether browse-url is available") + +(setq idlwave-help-browse-url-available + (condition-case nil + (require 'browse-url) + (error nil))) (defgroup idlwave-online-help nil "Online Help options for IDLWAVE mode." @@ -52,10 +58,10 @@ :group 'idlwave-online-help :type 'boolean) -(defvar idlwave-html-link-sep +(defvar idlwave-html-link-sep (if idlwave-html-help-pre-v6 "#" "#wp")) -(defcustom idlwave-html-help-location +(defcustom idlwave-html-help-location (if (memq system-type '(ms-dos windows-nt)) nil "/usr/local/etc/") @@ -83,7 +89,7 @@ Defaults to `browse-url-browser-function', which see." :group 'idlwave-online-help :type 'string) -(defcustom idlwave-help-browser-generic-args +(defcustom idlwave-help-browser-generic-args (if (boundp 'browse-url-generic-args) browse-url-generic-args "") "Program args to use if using browse-url-generic-program." @@ -183,8 +189,7 @@ support." :type 'string) (defface idlwave-help-link - '((((min-colors 88) (class color)) (:foreground "Blue1")) - (((class color)) (:foreground "Blue")) + '((((class color)) (:foreground "Blue")) (t (:weight bold))) "Face for highlighting links into IDLWAVE online help." :group 'idlwave-online-help) @@ -193,7 +198,7 @@ support." (defvar idlwave-help-activate-links-aggressively nil "Obsolete variable.") - + (defvar idlwave-completion-help-info) (defvar idlwave-help-frame nil @@ -242,6 +247,10 @@ support." "--" ["Quit" idlwave-help-quit t])) +(defvar idlwave-help-def-pos) +(defvar idlwave-help-args) +(defvar idlwave-help-in-header) + (defun idlwave-help-mode () "Major mode for displaying IDL Help. @@ -282,6 +291,7 @@ Here are all keybindings. (set (make-local-variable 'idlwave-help-in-header) nil) (run-mode-hooks 'idlwave-help-mode-hook)) +(defvar idlwave-system-directory) (defun idlwave-html-help-location () "Return the help directory where HTML files are, or nil if that is unknown." (or (and (stringp idlwave-html-help-location) @@ -316,16 +326,20 @@ It collects and prints the diagnostics messages." (setq idlwave-last-context-help-pos marker) (idlwave-do-context-help1 arg) (if idlwave-help-diagnostics - (message "%s" (mapconcat 'identity + (message "%s" (mapconcat 'identity (nreverse idlwave-help-diagnostics) "; ")))))) (defvar idlwave-help-do-class-struct-tag nil) +(defvar idlwave-structtag-struct-location) (defvar idlwave-help-do-struct-tag nil) +(defvar idlwave-system-variables-alist) +(defvar idlwave-executive-commands-alist) +(defvar idlwave-system-class-info) (defun idlwave-do-context-help1 (&optional arg) "The work-horse version of `idlwave-context-help', which see." (save-excursion - (if (equal (char-after) ?/) + (if (equal (char-after) ?/) (forward-char 1) (if (equal (char-before) ?=) (backward-char 1))) @@ -335,7 +349,7 @@ It collects and prints the diagnostics messages." (beg (save-excursion (skip-chars-backward chars) (point))) (end (save-excursion (skip-chars-forward chars) (point))) (this-word (buffer-substring-no-properties beg end)) - (st-ass (assoc (downcase this-word) + (st-ass (assoc (downcase this-word) idlwave-help-special-topic-words)) (classtag (and (string-match "self\\." this-word) (< beg (- end 4)))) @@ -343,7 +357,7 @@ It collects and prints the diagnostics messages." (string-match "\\`\\([^.]+\\)\\." this-word) (< beg (- end 4)))) module keyword cw mod1 mod2 mod3) - (if (or arg + (if (or arg (and (not st-ass) (not classtag) (not structtag) @@ -362,15 +376,15 @@ It collects and prints the diagnostics messages." (setq module (list "init" 'fun (match-string 1 str)) idlwave-current-obj_new-class (match-string 1 str)) ))))) - (cond + (cond (arg (setq mod1 module)) - + ;; A special topic -- only system help (st-ass (setq mod1 (list (cdr st-ass)))) - + ;; A system variable -- only system help - ((string-match - "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?" + ((string-match + "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?" this-word) (let* ((word (match-string-no-properties 1 this-word)) (entry (assq (idlwave-sintern-sysvar word) @@ -382,19 +396,18 @@ It collects and prints the diagnostics messages." (cdr (assq 'tags entry)))))) (link (nth 1 (assq 'link entry)))) (if tag-target - (setq link (idlwave-substitute-link-target link + (setq link (idlwave-substitute-link-target link tag-target))) (setq mod1 (list link)))) - + ;; An executive command -- only system help ((string-match "^\\.\\([A-Z_]+\\)" this-word) (let* ((word (match-string 1 this-word)) (link (cdr (assoc-string word - idlwave-executive-commands-alist - t)))) + idlwave-executive-commands-alist t)))) (setq mod1 (list link)))) - + ;; A class -- system OR in-text help (via class__define). ((and (eq cw 'class) (or (idlwave-in-quote) ; e.g. obj_new @@ -408,28 +421,28 @@ It collects and prints the diagnostics messages." (name (concat (downcase this-word) "__define")) (link (nth 1 (assq 'link entry)))) (setq mod1 (list link name 'pro)))) - + ;; A class structure tag (self.BLAH) -- only in-text help available (classtag (let ((tag (substring this-word (match-end 0))) class-with found-in) - (when (setq class-with + (when (setq class-with (idlwave-class-or-superclass-with-tag (nth 2 (idlwave-current-routine)) tag)) (setq found-in (idlwave-class-found-in class-with)) - (if (assq (idlwave-sintern-class class-with) + (if (assq (idlwave-sintern-class class-with) idlwave-system-class-info) (error "No help available for system class tags")) (setq idlwave-help-do-class-struct-tag t) - (setq mod1 (list nil + (setq mod1 (list nil (if found-in (cons (concat found-in "__define") class-with) (concat class-with "__define")) 'pro nil ; no class.... it's a procedure! tag))))) - + ;; A regular structure tag -- only in text, and if ;; optional `complete-structtag' loaded. (structtag @@ -440,7 +453,7 @@ It collects and prints the diagnostics messages." (setq idlwave-help-do-struct-tag idlwave-structtag-struct-location mod1 (list nil nil nil nil tag)))) - + ;; A routine keyword -- in text or system help ((and (memq cw '(function-keyword procedure-keyword)) (stringp this-word) @@ -482,7 +495,7 @@ It collects and prints the diagnostics messages." (setq mod1 (append (list t) module (list keyword)) mod2 (list t this-word 'fun nil) mod3 (append (list t) module))))) - + ;; Everything else (t (setq mod1 (append (list t) module)))) @@ -515,14 +528,14 @@ Needs additional info stored in global `idlwave-completion-help-info'." word link) (mouse-set-point ev) - + ;; See if we can also find help somewhere, e.g. for multiple classes (setq word (idlwave-this-word)) (if (string= word "") (error "No help item selected")) (setq link (get-text-property 0 'link word)) (select-window cw) - (cond + (cond ;; Routine name ((memq what '(procedure function routine)) (setq name word) @@ -533,9 +546,9 @@ Needs additional info stored in global `idlwave-completion-help-info'." type))) (setq link t) ; No specific link valid yet (if sclasses - (setq classes (idlwave-members-only + (setq classes (idlwave-members-only classes (cons class sclasses)))) - (setq class (idlwave-popup-select ev classes + (setq class (idlwave-popup-select ev classes "Select Class" 'sort)))) ;; XXX is this necessary, given all-method-classes? @@ -555,7 +568,7 @@ Needs additional info stored in global `idlwave-completion-help-info'." type))) (setq link t) ; Link can't be correct yet (if sclasses - (setq classes (idlwave-members-only + (setq classes (idlwave-members-only classes (cons class sclasses)))) (setq class (idlwave-popup-select ev classes "Select Class" 'sort)) @@ -567,14 +580,14 @@ Needs additional info stored in global `idlwave-completion-help-info'." (if (string= (downcase name) "obj_new") (setq class idlwave-current-obj_new-class name "Init")))) - + ;; Class name ((eq what 'class) (setq class word word nil)) - + ;; A special named function to call which sets some of our variables - ((and (symbolp what) + ((and (symbolp what) (fboundp what)) (funcall what 'set word)) @@ -589,7 +602,7 @@ Needs additional info stored in global `idlwave-completion-help-info'." "Highlight all completions for which help is available and attach link. Those words in `idlwave-completion-help-links' have links. The `idlwave-help-link' face is used for this." - (if idlwave-highlight-help-links-in-completion + (if idlwave-highlight-help-links-in-completion (with-current-buffer (get-buffer "*Completions*") (save-excursion (let* ((case-fold-search t) @@ -605,7 +618,7 @@ Those words in `idlwave-completion-help-links' have links. The (setq beg (match-beginning 1) end (match-end 1) word (match-string 1) doit nil) ;; Call special completion function test - (if (and (symbolp what) + (if (and (symbolp what) (fboundp what)) (setq doit (funcall what 'test word)) ;; Look for special link property passed in help-links @@ -636,13 +649,13 @@ Those words in `idlwave-completion-help-links' have links. The ;; Try to select the return frame. ;; This can crash on slow network connections, obviously when ;; we kill the help frame before the return-frame is selected. - ;; To protect the workings, we wait for up to one second + ;; To protect the workings, we wait for up to one second ;; and check if the return-frame *is* now selected. ;; This is marked "eperimental" since we are not sure when its OK. (let ((maxtime 1.0) (time 0.) (step 0.1)) (select-frame idlwave-help-return-frame) (while (and (sit-for step) - (not (eq (selected-frame) + (not (eq (selected-frame) idlwave-help-return-frame)) (< (setq time (+ time step)) maxtime))))) (delete-frame idlwave-help-frame)) @@ -655,7 +668,7 @@ Those words in `idlwave-completion-help-links' have links. The (defvar default-toolbar-visible-p) (defun idlwave-help-display-help-window (&optional pos-or-func) - "Display the help window. + "Display the help window. Move window start to POS-OR-FUNC, if passed as a position, or call it if passed as a function. See `idlwave-help-use-dedicated-frame'." (let ((cw (selected-window)) @@ -666,13 +679,13 @@ if passed as a function. See `idlwave-help-use-dedicated-frame'." (switch-to-buffer buf)) ;; Do it in this frame and save the window configuration (if (not (get-buffer-window buf nil)) - (setq idlwave-help-window-configuration + (setq idlwave-help-window-configuration (current-window-configuration))) (display-buffer buf nil (selected-frame)) (select-window (get-buffer-window buf))) (raise-frame) - (if pos-or-func - (if (functionp pos-or-func) + (if pos-or-func + (if (functionp pos-or-func) (funcall pos-or-func) (goto-char pos-or-func) (recenter 0))) @@ -694,31 +707,31 @@ if passed as a function. See `idlwave-help-use-dedicated-frame'." (select-frame idlwave-help-return-frame))) (defun idlwave-online-help (link &optional name type class keyword) - "Display HTML or other special help on a certain topic. + "Display HTML or other special help on a certain topic. Either loads an HTML link, if LINK is non-nil, or gets special-help on the optional arguments, if any special help is defined. If LINK is `t', first look up the optional arguments in the routine info list to see if a link is set for it. Try extra help functions if necessary." ;; Lookup link - (if (eq link t) - (let ((entry (idlwave-best-rinfo-assoc name type class + (if (eq link t) + (let ((entry (idlwave-best-rinfo-assoc name type class (idlwave-routines) nil t))) (cond ;; Try keyword link - ((and keyword + ((and keyword (setq link (cdr (idlwave-entry-find-keyword entry keyword))))) ;; Default, regular entry link (t (setq link (idlwave-entry-has-help entry)))))) (cond ;; An explicit link - ((stringp link) + ((stringp link) (idlwave-help-html-link link)) - + ;; Any extra help (idlwave-extra-help-function (idlwave-help-get-special-help name type class keyword)) - + ;; Nothing worked (t (idlwave-help-error name type class keyword)))) @@ -729,7 +742,7 @@ see if a link is set for it. Try extra help functions if necessary." (help-pos (save-excursion (set-buffer (idlwave-help-get-help-buffer)) (let ((buffer-read-only nil)) - (funcall idlwave-extra-help-function + (funcall idlwave-extra-help-function name type class keyword))))) (if help-pos (idlwave-help-display-help-window help-pos) @@ -743,6 +756,9 @@ see if a link is set for it. Try extra help functions if necessary." (browse-url-generic-program idlwave-help-browser-generic-program) ;(browse-url-generic-args idlwave-help-browser-generic-args) full-link) + + (unless idlwave-help-browse-url-available + (error "browse-url is not available -- install it to use HTML help.")) (if (and (memq system-type '(ms-dos windows-nt)) idlwave-help-use-hh) @@ -758,12 +774,12 @@ see if a link is set for it. Try extra help functions if necessary." ;; Just a regular file name (+ anchor name) (unless (and (stringp help-loc) (file-directory-p help-loc)) - (error + (error "Invalid help location; customize `idlwave-html-help-location'.")) - (setq full-link (concat + (setq full-link (concat "file://" - (expand-file-name - link + (expand-file-name + link (expand-file-name "idl_html_help" help-loc))))) ;; Check for a local browser @@ -773,11 +789,10 @@ see if a link is set for it. Try extra help functions if necessary." (browse-url full-link)))) ;; A special help routine for source-level syntax help in files. -(defvar idlwave-help-def-pos) -(defvar idlwave-help-args) -(defvar idlwave-help-in-header) (defvar idlwave-help-fontify-source-code) (defvar idlwave-help-source-try-header) +(defvar idlwave-current-tags-buffer) +(defvar idlwave-current-tags-class) (defun idlwave-help-with-source (name type class keyword) "Provide help for routines not documented in the IDL manuals. Works by loading the routine source file into the help buffer. Depending on @@ -799,7 +814,7 @@ This function can be used as `idlwave-extra-help-function'." (if class-only ;Help with class? Using "Init" as source. (setq name "Init" type 'fun)) - (if (not struct-tag) + (if (not struct-tag) (setq file (idlwave-routine-source-file (nth 3 (idlwave-best-rinfo-assoc @@ -812,7 +827,7 @@ This function can be used as `idlwave-extra-help-function'." (if (or struct-tag (stringp file)) (progn (setq in-buf ; structure-tag completion is always in current buffer - (if struct-tag + (if struct-tag idlwave-current-tags-buffer (idlwave-get-buffer-visiting file))) ;; see if file is in a visited buffer, insert those contents @@ -834,19 +849,19 @@ This function can be used as `idlwave-extra-help-function'." ;; Try to find a good place to display (setq def-pos ;; Find the class structure tag if that's what we're after - (cond + (cond ;; Class structure tags: find the class or named structure ;; definition (class-struct-tag - (save-excursion + (save-excursion (setq class - (if (string-match "[a-zA-Z0-9]\\(__\\)" name) + (if (string-match "[a-zA-Z0-9]\\(__\\)" name) (substring name 0 (match-beginning 1)) idlwave-current-tags-class)) (and (idlwave-find-class-definition class nil real-class) (idlwave-find-struct-tag keyword)))) - + ;; Generic structure tags: the structure definition ;; location within the file has been recorded in ;; `struct-tag' @@ -856,14 +871,14 @@ This function can be used as `idlwave-extra-help-function'." (integerp struct-tag) (goto-char struct-tag) (idlwave-find-struct-tag keyword)))) - + ;; Just find the routine definition (t (if class-only (point-min) (idlwave-help-find-routine-definition name type class keyword)))) idlwave-help-def-pos def-pos) - (if (and idlwave-help-source-try-header + (if (and idlwave-help-source-try-header (not (or struct-tag class-struct-tag))) ;; Check if we can find the header (save-excursion @@ -873,7 +888,7 @@ This function can be used as `idlwave-extra-help-function'." idlwave-help-in-header header-pos))) (if (or header-pos def-pos) - (progn + (progn (if (boundp 'idlwave-help-min-frame-width) (setq idlwave-help-min-frame-width 80)) (goto-char (or header-pos def-pos))) @@ -887,7 +902,7 @@ This function can be used as `idlwave-extra-help-function'." KEYWORD is ignored. Returns the point of match if successful, nil otherwise." (save-excursion (goto-char (point-max)) - (if (re-search-backward + (if (re-search-backward (concat "^[ \t]*" (if (eq type 'pro) "pro" (if (eq type 'fun) "function" @@ -933,22 +948,22 @@ with spaces allowed between the keyword and the following dash or equal sign. If there is a match, we assume it is the keyword description." (let* ((case-fold-search t) (rname (if (stringp class) - (concat + (concat "\\(" ;; Traditional name or class::name "\\(" "\\(" (regexp-quote (downcase class)) "::\\)?" (regexp-quote (downcase name)) "\\>\\)" - (concat + (concat "\\|" ;; class__define or just class (regexp-quote (downcase class)) "\\(__define\\)?") "\\)") (regexp-quote (downcase name)))) - + ;; NAME tag plus the routine name. The new version is from JD. - (name-re (concat + (name-re (concat "\\(^;+\\*?[ \t]*" idlwave-help-doclib-name "\\([ \t]*:\\|[ \t]*$\\)[ \t]*\\(\n;+[ \t]*\\)*" @@ -983,7 +998,7 @@ If there is a match, we assume it is the keyword description." (regexp-quote (upcase keyword)) "\\>"))) dstart dend name-pos kwds-pos kwd-pos) - (catch 'exit + (catch 'exit (save-excursion (goto-char (point-min)) (while (and (setq dstart (re-search-forward idlwave-doclib-start nil t)) @@ -991,7 +1006,7 @@ If there is a match, we assume it is the keyword description." ;; found a routine header (goto-char dstart) (if (setq name-pos (re-search-forward name-re dend t)) - (progn + (progn (if keyword ;; We do need a keyword (progn @@ -1073,7 +1088,7 @@ When DING is non-nil, ring the bell as well." (idlwave-help-find-first-header nil) (setq idlwave-help-in-header nil) (idlwave-help-toggle-header-match-and-def arg 'top))) - + (defun idlwave-help-toggle-header-match-and-def (arg &optional top) (interactive "P") (let ((args idlwave-help-args) @@ -1085,7 +1100,7 @@ When DING is non-nil, ring the bell as well." (setq pos idlwave-help-def-pos)) ;; Try to display header (setq pos (apply 'idlwave-help-find-in-doc-header - (if top + (if top (list (car args) (nth 1 args) (nth 2 args) nil) args))) (if pos @@ -1119,7 +1134,7 @@ Useful when source code is displayed as help. See the option (font-lock-fontify-buffer)) (set-syntax-table syntax-table))))) - + (defun idlwave-help-error (name type class keyword) (error "Can't find help on %s%s %s" (or (and (or class name) (idlwave-make-full-name class name)) diff --git a/lisp/progmodes/idlw-rinfo.el b/lisp/progmodes/idlw-rinfo.el index 9f95f8e6a5b..01888922cfe 100644 --- a/lisp/progmodes/idlw-rinfo.el +++ b/lisp/progmodes/idlw-rinfo.el @@ -1,9 +1,9 @@ ;;; idlw-rinfo.el --- Routine Information for IDLWAVE ;; Copyright (c) 1999 Carsten Dominik -;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation +;; Copyright (c) 1999, 2000, 2001,2002,2003,2004,2005 Free Software Foundation ;; Author: J.D. Smith <jdsmith@as.arizona.edu> -;; Version: 5.5 +;; Version: 5.7_22 ;; Keywords: languages ;; This file is part of GNU Emacs. @@ -30,7 +30,7 @@ ;; information is extracted automatically from the IDL documentation ;; and by talking to IDL. ;; -;; Created by get_html_rinfo on Sun Oct 10 16:06:07 2004 +;; Created by get_html_rinfo on Wed May 11 14:52:40 2005 ;; IDL version: 6.1 ;; Number of files scanned: 3393 ;; Number of routines found: 1850 @@ -1242,7 +1242,7 @@ ("Init" fun "IDLanROI" (system) "Result = Obj->[%s::]%s([, X [, Y [, Z]]])" ("objects_an11.html" ) ("objects_an4.html" ("BLOCK_SIZE" . 1011320) ("DATA" . 1011322) ("DOUBLE" . 1011324) ("INTERIOR" . 1011326) ("TYPE" . 1011328))) ("Add" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_an20.html")) ("Cleanup" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an21.html")) - ("GetProperty" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an25.html" ) ("objects_an19.html" ("ALL" . 1011995) ("ROIGROUP_XRANGE " . 1011998) ("ROIGROUP_YRANGE " . 1012000) ("ROIGROUP_ZRANGE " . 1012002))) + ("GetProperty" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an25.html" ) ("objects_an19.html" ("ALL" . 1011995) ("ROIGROUP_XRANGE" . 1011998) ("ROIGROUP_YRANGE" . 1012000) ("ROIGROUP_ZRANGE" . 1012002))) ("Rotate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_an27.html" ("CENTER" . 1004731))) ("Scale" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Sx[, Sy[, Sz]]" ("objects_an28.html")) ("Translate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Tx[, Ty[, Tz]]" ("objects_an29.html")) @@ -1433,120 +1433,120 @@ ("Draw" pro "IDLgrBuffer" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr13.html" ("CREATE_INSTANCE" . 1007844) ("DRAW_INSTANCE" . 1007846))) ("Erase" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr14.html" ("COLOR" . 1007879))) ("GetDeviceInfo" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr16.html" ("ALL" . 1007957) ("MAX_NUM_CLIP_PLANES" . 1007959) ("MAX_TEXTURE_DIMENSIONS" . 1007961) ("MAX_VIEWPORT_DIMENSIONS" . 1007963) ("NAME" . 1007965) ("NUM_CPUS" . 1007967) ("VENDOR" . 1007970) ("VERSION" . 1007972))) - ("GetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr18.html" ) ("objects_gr11.html" ("ALL" . 1050118) ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("IMAGE_DATA" . 1050202) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION " . 1093499) ("SCREEN_DIMENSIONS" . 1050191) ("UNITS " . 1050189) ("ZBUFFER_DATA" . 1050181))) - ("SetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr24.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION " . 1093499) ("UNITS " . 1050189))) + ("GetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr18.html" ) ("objects_gr11.html" ("ALL" . 1050118) ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("IMAGE_DATA" . 1050202) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION" . 1093499) ("SCREEN_DIMENSIONS" . 1050191) ("UNITS" . 1050189) ("ZBUFFER_DATA" . 1050181))) + ("SetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr24.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION" . 1093499) ("UNITS" . 1050189))) ("GetContiguousPixels" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr15.html")) ("GetFontnames" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr17.html" ("IDL_FONTS" . 1008013) ("STYLES" . 1008015))) ("GetTextDimensions" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr19.html" ("DESCENT" . 1008088) ("PATH" . 1008090))) - ("Init" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr20.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("REGISTER_PROPERTIES" . 1050154) ("RESOLUTION " . 1093499) ("UNITS " . 1050189))) + ("Init" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr20.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("REGISTER_PROPERTIES" . 1050154) ("RESOLUTION" . 1093499) ("UNITS" . 1050189))) ("PickData" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr21.html" ("DIMENSIONS" . 1008204) ("PATH" . 1008208) ("PICK_STATUS" . 1008214))) ("Read" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr22.html")) ("Select" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s(Picture, XY)" ("objects_gr23.html" ("DIMENSIONS" . 1008316) ("ORDER" . 1008320) ("SUB_SELECTION" . 1343723) ("UNITS" . 1008323))) ("Cleanup" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr27.html")) ("Draw" pro "IDLgrClipboard" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr28.html" ("CMYK" . 1345463) ("FILENAME" . 1008514) ("POSTSCRIPT" . 1008516) ("VECT_SHADING" . 1340124) ("VECT_SORTING" . 1340189) ("VECT_TEXT_RENDER_METHOD" . 1340235) ("VECTOR" . 1008518))) ("GetDeviceInfo" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr30.html" ("ALL" . 1008688) ("MAX_NUM_CLIP_PLANES" . 1008690) ("MAX_TEXTURE_DIMENSIONS" . 1008692) ("MAX_VIEWPORT_DIMENSIONS" . 1008694) ("NAME" . 1008696) ("NUM_CPUS" . 1008698) ("VENDOR" . 1008701) ("VERSION" . 1008703))) - ("GetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr32.html" ) ("objects_gr26.html" ("ALL" . 1050377) ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION " . 1093541) ("SCREEN_DIMENSIONS" . 1050442) ("UNITS" . 1050439))) - ("SetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr35.html" ) ("objects_gr26.html" ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION " . 1093541) ("UNITS" . 1050439))) + ("GetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr32.html" ) ("objects_gr26.html" ("ALL" . 1050377) ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION" . 1093541) ("SCREEN_DIMENSIONS" . 1050442) ("UNITS" . 1050439))) + ("SetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr35.html" ) ("objects_gr26.html" ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION" . 1093541) ("UNITS" . 1050439))) ("GetContiguousPixels" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr29.html")) ("GetFontnames" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr31.html" ("IDL_FONTS" . 1008744) ("STYLES" . 1008746))) ("GetTextDimensions" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr33.html" ("DESCENT" . 1008820) ("PATH" . 1008822))) - ("Init" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr34.html" ) ("objects_gr26.html" ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("REGISTER_PROPERTIES" . 1050408) ("RESOLUTION " . 1093541) ("UNITS" . 1050439))) + ("Init" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr34.html" ) ("objects_gr26.html" ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("REGISTER_PROPERTIES" . 1050408) ("RESOLUTION" . 1093541) ("UNITS" . 1050439))) ("Cleanup" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr38.html")) - ("GetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr40.html" ) ("objects_gr37.html" ("ALL" . 1050584) ("BLUE_VALUES " . 1050601) ("COLOR " . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("PARENT" . 1050728) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED " . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE " . 1050651) ("XCOORD_CONV" . 1050655) ("XRANGE" . 1050718) ("YCOORD_CONV" . 1050716) ("YRANGE" . 1050708) ("ZCOORD_CONV " . 1050706) ("ZRANGE" . 1050697))) - ("SetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr42.html" ) ("objects_gr37.html" ("BLUE_VALUES " . 1050601) ("COLOR " . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED " . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE " . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV " . 1050706))) + ("GetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr40.html" ) ("objects_gr37.html" ("ALL" . 1050584) ("BLUE_VALUES" . 1050601) ("COLOR" . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("PARENT" . 1050728) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED" . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE" . 1050651) ("XCOORD_CONV" . 1050655) ("XRANGE" . 1050718) ("YCOORD_CONV" . 1050716) ("YRANGE" . 1050708) ("ZCOORD_CONV" . 1050706) ("ZRANGE" . 1050697))) + ("SetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr42.html" ) ("objects_gr37.html" ("BLUE_VALUES" . 1050601) ("COLOR" . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED" . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE" . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV" . 1050706))) ("ComputeDimensions" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s( DestinationObj)" ("objects_gr39.html" ("PATH" . 1009084))) - ("Init" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s([, aRed, aGreen, aBlue])" ("objects_gr41.html" ) ("objects_gr37.html" ("BLUE_VALUES " . 1050601) ("COLOR " . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED " . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE " . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV " . 1050706))) + ("Init" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s([, aRed, aGreen, aBlue])" ("objects_gr41.html" ) ("objects_gr37.html" ("BLUE_VALUES" . 1050601) ("COLOR" . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED" . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE" . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV" . 1050706))) ("AdjustLabelOffsets" pro "IDLgrContour" (system) "Obj->[%s::]%s, LevelIndex, LabelOffsets" ("objects_gr45.html")) ("Cleanup" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr46.html")) ("GetLabelInfo" pro "IDLgrContour" (system) "Obj->[%s::]%s, Destination, LevelIndex" ("objects_gr48.html" ("LABEL_OBJECTS" . 1009508) ("LABEL_OFFSETS" . 1009503) ("LABEL_POLYLINES" . 1009505))) - ("GetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr49.html" ) ("objects_gr44.html" ("ALL" . 1050990) ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET " . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL " . 1051085) ("FILL" . 1051087) ("GEOM" . 1051284) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS " . 1051132) ("N_LEVELS" . 1051138) ("PARENT" . 1051274) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE " . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL " . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("XRANGE" . 1051264) ("YCOORD_CONV" . 1051168) ("YRANGE " . 1051250) ("ZCOORD_CONV " . 1051174) ("ZRANGE" . 1051240))) - ("SetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr51.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET " . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL " . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS " . 1051132) ("N_LEVELS" . 1051138) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE " . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL " . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV " . 1051174))) + ("GetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr49.html" ) ("objects_gr44.html" ("ALL" . 1050990) ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET" . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL" . 1051085) ("FILL" . 1051087) ("GEOM" . 1051284) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS" . 1051132) ("N_LEVELS" . 1051138) ("PARENT" . 1051274) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE" . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL" . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("XRANGE" . 1051264) ("YCOORD_CONV" . 1051168) ("YRANGE" . 1051250) ("ZCOORD_CONV" . 1051174) ("ZRANGE" . 1051240))) + ("SetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr51.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET" . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL" . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS" . 1051132) ("N_LEVELS" . 1051138) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE" . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL" . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV" . 1051174))) ("GetCTM" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s()" ("objects_gr47.html" ("DESTINATION" . 1009456) ("PATH" . 1009458) ("TOP" . 1009464))) - ("Init" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s([, Values])" ("objects_gr50.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET " . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL " . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_FRMTDATA " . 1051113) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS " . 1051132) ("N_LEVELS" . 1051138) ("PALETTE " . 1051140) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("REGISTER_PROPERTIES" . 1051147) ("SHADE_RANGE " . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL " . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV " . 1051174))) + ("Init" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s([, Values])" ("objects_gr50.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET" . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL" . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_FRMTDATA" . 1051113) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS" . 1051132) ("N_LEVELS" . 1051138) ("PALETTE" . 1051140) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("REGISTER_PROPERTIES" . 1051147) ("SHADE_RANGE" . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL" . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV" . 1051174))) ("Cleanup" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr54.html")) ("GetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr55.html" ) ("objects_gr53.html" ("ALL" . 1051913) ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940))) ("SetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr57.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940))) ("Init" fun "IDLgrFont" (system) "Result = Obj->[%s::]%s([, Fontname])" ("objects_gr56.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940))) ("Cleanup" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr60.html")) - ("GetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr62.html" ) ("objects_gr59.html" ("ALL " . 1052050) ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE " . 1052160) ("PARENT" . 1052253) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("XRANGE" . 1052243) ("YCOORD_CONV" . 1052181) ("YRANGE" . 1052233) ("ZCOORD_CONV" . 1052187) ("ZRANGE" . 1052223))) - ("SetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr64.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE " . 1052160) ("RESET_DATA " . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187))) + ("GetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr62.html" ) ("objects_gr59.html" ("ALL" . 1052050) ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE" . 1052160) ("PARENT" . 1052253) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("XRANGE" . 1052243) ("YCOORD_CONV" . 1052181) ("YRANGE" . 1052233) ("ZCOORD_CONV" . 1052187) ("ZRANGE" . 1052223))) + ("SetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr64.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE" . 1052160) ("RESET_DATA" . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187))) ("GetCTM" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s()" ("objects_gr61.html" ("DESTINATION" . 1010164) ("PATH" . 1010166) ("TOP" . 1010172))) - ("Init" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s([, ImageData])" ("objects_gr63.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE " . 1052160) ("REGISTER_PROPERTIES" . 1052251) ("RESET_DATA " . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187))) + ("Init" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s([, ImageData])" ("objects_gr63.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE" . 1052160) ("REGISTER_PROPERTIES" . 1052251) ("RESET_DATA" . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187))) ("Cleanup" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr67.html")) - ("GetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr69.html" ) ("objects_gr66.html" ("ALL " . 1053896) ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE " . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT " . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR " . 1053948) ("OUTLINE_THICK" . 1053950) ("PARENT" . 1055362) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE " . 1053956) ("TEXT_COLOR " . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV " . 1053966) ("XRANGE " . 1055399) ("YCOORD_CONV " . 1053972) ("YRANGE " . 1055389) ("ZCOORD_CONV" . 1053978) ("ZRANGE" . 1070059))) - ("SetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr71.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE " . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT " . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR " . 1053948) ("OUTLINE_THICK" . 1053950) ("RECOMPUTE " . 1055360) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE " . 1053956) ("TEXT_COLOR " . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV " . 1053966) ("YCOORD_CONV " . 1053972) ("ZCOORD_CONV" . 1053978))) + ("GetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr69.html" ) ("objects_gr66.html" ("ALL" . 1053896) ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE" . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT" . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR" . 1053948) ("OUTLINE_THICK" . 1053950) ("PARENT" . 1055362) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE" . 1053956) ("TEXT_COLOR" . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV" . 1053966) ("XRANGE" . 1055399) ("YCOORD_CONV" . 1053972) ("YRANGE" . 1055389) ("ZCOORD_CONV" . 1053978) ("ZRANGE" . 1070059))) + ("SetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr71.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE" . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT" . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR" . 1053948) ("OUTLINE_THICK" . 1053950) ("RECOMPUTE" . 1055360) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE" . 1053956) ("TEXT_COLOR" . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV" . 1053966) ("YCOORD_CONV" . 1053972) ("ZCOORD_CONV" . 1053978))) ("ComputeDimensions" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s( DestinationObject)" ("objects_gr68.html" ("PATH" . 1010563))) - ("Init" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s([, aItemNames])" ("objects_gr70.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE " . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT " . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR " . 1053948) ("OUTLINE_THICK" . 1053950) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE " . 1053956) ("TEXT_COLOR " . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV " . 1053966) ("YCOORD_CONV " . 1053972) ("ZCOORD_CONV" . 1053978))) + ("Init" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s([, aItemNames])" ("objects_gr70.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE" . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT" . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR" . 1053948) ("OUTLINE_THICK" . 1053950) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE" . 1053956) ("TEXT_COLOR" . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV" . 1053966) ("YCOORD_CONV" . 1053972) ("ZCOORD_CONV" . 1053978))) ("Cleanup" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr74.html")) - ("GetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr76.html" ) ("objects_gr73.html" ("ALL" . 1055555) ("ATTENUATION " . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("PARENT" . 1055635) ("TYPE" . 1093801) ("XCOORD_CONV " . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV " . 1055621))) - ("SetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr78.html" ) ("objects_gr73.html" ("ATTENUATION " . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("TYPE" . 1093801) ("XCOORD_CONV " . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV " . 1055621))) + ("GetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr76.html" ) ("objects_gr73.html" ("ALL" . 1055555) ("ATTENUATION" . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("PARENT" . 1055635) ("TYPE" . 1093801) ("XCOORD_CONV" . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV" . 1055621))) + ("SetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr78.html" ) ("objects_gr73.html" ("ATTENUATION" . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("TYPE" . 1093801) ("XCOORD_CONV" . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV" . 1055621))) ("GetCTM" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr75.html" ("DESTINATION" . 1010900) ("PATH" . 1010902) ("TOP" . 1010908))) - ("Init" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr77.html" ) ("objects_gr73.html" ("ATTENUATION " . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("REGISTER_PROPERTIES" . 1088158) ("TYPE" . 1093801) ("XCOORD_CONV " . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV " . 1055621))) + ("Init" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr77.html" ) ("objects_gr73.html" ("ATTENUATION" . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("REGISTER_PROPERTIES" . 1088158) ("TYPE" . 1093801) ("XCOORD_CONV" . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV" . 1055621))) ("Add" pro "IDLgrModel" (system) "Obj->[%s::]%s, Object" ("objects_gr81.html" ("ALIAS" . 1011206) ("POSITION" . 1011208))) ("Cleanup" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr82.html")) ("Draw" pro "IDLgrModel" (system) "Obj->[%s::]%s, Destination, Picture" ("objects_gr83.html")) - ("GetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr86.html" ) ("objects_gr80.html" ("ALL " . 1055726) ("CLIP_PLANES " . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE " . 1088312) ("LIGHTING" . 1055751) ("PARENT " . 1055781) ("SELECT_TARGET " . 1093831) ("TRANSFORM " . 1055764))) + ("GetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr86.html" ) ("objects_gr80.html" ("ALL" . 1055726) ("CLIP_PLANES" . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE" . 1088312) ("LIGHTING" . 1055751) ("PARENT" . 1055781) ("SELECT_TARGET" . 1093831) ("TRANSFORM" . 1055764))) ("Reset" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr88.html")) ("Rotate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_gr89.html" ("PREMULTIPLY" . 1011584))) ("Scale" pro "IDLgrModel" (system) "Obj->[%s::]%s, Sx, Sy, Sz" ("objects_gr90.html" ("PREMULTIPLY" . 1011618))) - ("SetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr91.html" ) ("objects_gr80.html" ("CLIP_PLANES " . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE " . 1088312) ("LIGHTING" . 1055751) ("SELECT_TARGET " . 1093831) ("TRANSFORM " . 1055764))) + ("SetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr91.html" ) ("objects_gr80.html" ("CLIP_PLANES" . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE" . 1088312) ("LIGHTING" . 1055751) ("SELECT_TARGET" . 1093831) ("TRANSFORM" . 1055764))) ("Translate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Tx, Ty, Tz" ("objects_gr92.html" ("PREMULTIPLY" . 1011687))) ("GetByName" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr84.html")) ("GetCTM" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr85.html" ("DESTINATION" . 1011369) ("PATH" . 1011371) ("TOP" . 1011377))) - ("Init" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr87.html" ) ("objects_gr80.html" ("CLIP_PLANES " . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE " . 1088312) ("LIGHTING" . 1055751) ("REGISTER_PROPERTIES" . 1055779) ("SELECT_TARGET " . 1093831) ("TRANSFORM " . 1055764))) + ("Init" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr87.html" ) ("objects_gr80.html" ("CLIP_PLANES" . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE" . 1088312) ("LIGHTING" . 1055751) ("REGISTER_PROPERTIES" . 1055779) ("SELECT_TARGET" . 1093831) ("TRANSFORM" . 1055764))) ("Cleanup" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr95.html")) - ("GetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr96.html" ) ("objects_gr94.html" ("ALL " . 1055838) ("BITRATE " . 1055845) ("FILENAME" . 1055875) ("FORMAT " . 1055877) ("FRAME_RATE " . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969))) + ("GetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr96.html" ) ("objects_gr94.html" ("ALL" . 1055838) ("BITRATE" . 1055845) ("FILENAME" . 1055875) ("FORMAT" . 1055877) ("FRAME_RATE" . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969))) ("Put" pro "IDLgrMPEG" (system) "Obj->[%s::]%s, Image[, Frame]" ("objects_gr98.html")) ("Save" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr99.html" ("FILENAME" . 1012062))) - ("SetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr100.html" ) ("objects_gr94.html" ("BITRATE " . 1055845) ("FILENAME" . 1055875) ("FORMAT " . 1055877) ("FRAME_RATE " . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969))) - ("Init" fun "IDLgrMPEG" (system) "Result = Obj->[%s::]%s()" ("objects_gr97.html" ) ("objects_gr94.html" ("BITRATE " . 1055845) ("FILENAME" . 1055875) ("FORMAT " . 1055877) ("FRAME_RATE " . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969) ("TEMP_DIRECTORY " . 1055971))) + ("SetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr100.html" ) ("objects_gr94.html" ("BITRATE" . 1055845) ("FILENAME" . 1055875) ("FORMAT" . 1055877) ("FRAME_RATE" . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969))) + ("Init" fun "IDLgrMPEG" (system) "Result = Obj->[%s::]%s()" ("objects_gr97.html" ) ("objects_gr94.html" ("BITRATE" . 1055845) ("FILENAME" . 1055875) ("FORMAT" . 1055877) ("FRAME_RATE" . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969) ("TEMP_DIRECTORY" . 1055971))) ("Cleanup" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr103.html")) - ("GetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr105.html" ) ("objects_gr102.html" ("ALL" . 1056048) ("BLUE_VALUES " . 1056069) ("BOTTOM_STRETCH " . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("N_COLORS" . 1056093) ("RED_VALUES" . 1056079) ("TOP_STRETCH " . 1056081))) + ("GetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr105.html" ) ("objects_gr102.html" ("ALL" . 1056048) ("BLUE_VALUES" . 1056069) ("BOTTOM_STRETCH" . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("N_COLORS" . 1056093) ("RED_VALUES" . 1056079) ("TOP_STRETCH" . 1056081))) ("LoadCT" pro "IDLgrPalette" (system) "Obj->[%s::]%s, TableNum" ("objects_gr107.html" ("FILE" . 1012379))) - ("SetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr110.html" ) ("objects_gr102.html" ("BLUE_VALUES " . 1056069) ("BOTTOM_STRETCH " . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH " . 1056081))) + ("SetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr110.html" ) ("objects_gr102.html" ("BLUE_VALUES" . 1056069) ("BOTTOM_STRETCH" . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH" . 1056081))) ("SetRGB" pro "IDLgrPalette" (system) "Obj->[%s::]%s, Index, Red, Green, Blue" ("objects_gr109.html")) ("GetRGB" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Index)" ("objects_gr104.html")) - ("Init" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(, aRed, aGreen, aBlue)" ("objects_gr106.html" ) ("objects_gr102.html" ("BLUE_VALUES " . 1056069) ("BOTTOM_STRETCH " . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH " . 1056081))) + ("Init" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(, aRed, aGreen, aBlue)" ("objects_gr106.html" ) ("objects_gr102.html" ("BLUE_VALUES" . 1056069) ("BOTTOM_STRETCH" . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH" . 1056081))) ("NearestColor" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Red, Green, Blue)" ("objects_gr108.html")) ("Cleanup" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr113.html")) - ("GetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr114.html" ) ("objects_gr112.html" ("ALL" . 1056154) ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173))) - ("SetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr116.html" ) ("objects_gr112.html" ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173))) - ("Init" fun "IDLgrPattern" (system) "Result = Obj->[%s::]%s([, Style])" ("objects_gr115.html" ) ("objects_gr112.html" ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173) ("THICK " . 1056179))) + ("GetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr114.html" ) ("objects_gr112.html" ("ALL" . 1056154) ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173))) + ("SetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr116.html" ) ("objects_gr112.html" ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173))) + ("Init" fun "IDLgrPattern" (system) "Result = Obj->[%s::]%s([, Style])" ("objects_gr115.html" ) ("objects_gr112.html" ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173) ("THICK" . 1056179))) ("Cleanup" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr119.html")) - ("GetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr121.html" ) ("objects_gr118.html" ("ALL" . 1056243) ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES " . 1314217) ("COLOR " . 1056263) ("DATA" . 1056381) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE " . 1056269) ("HIDE " . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE " . 1056290) ("MIN_VALUE " . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("PARENT " . 1056392) ("POLAR " . 1056389) ("SYMBOL " . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE " . 1056325) ("YCOORD_CONV " . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZRANGE" . 1074286) ("ZVALUE" . 1056400))) - ("SetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr123.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES " . 1314217) ("COLOR " . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE " . 1056269) ("HIDE " . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE " . 1056290) ("MIN_VALUE " . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR " . 1056389) ("RESET_DATA " . 1093845) ("SHARE_DATA " . 1056304) ("SYMBOL " . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE " . 1056325) ("YCOORD_CONV " . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400))) + ("GetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr121.html" ) ("objects_gr118.html" ("ALL" . 1056243) ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES" . 1314217) ("COLOR" . 1056263) ("DATA" . 1056381) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE" . 1056269) ("HIDE" . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE" . 1056290) ("MIN_VALUE" . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("PARENT" . 1056392) ("POLAR" . 1056389) ("SYMBOL" . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE" . 1056325) ("YCOORD_CONV" . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZRANGE" . 1074286) ("ZVALUE" . 1056400))) + ("SetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr123.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES" . 1314217) ("COLOR" . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE" . 1056269) ("HIDE" . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE" . 1056290) ("MIN_VALUE" . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR" . 1056389) ("RESET_DATA" . 1093845) ("SHARE_DATA" . 1056304) ("SYMBOL" . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE" . 1056325) ("YCOORD_CONV" . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400))) ("GetCTM" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s()" ("objects_gr120.html" ("DESTINATION" . 1012838) ("PATH" . 1012840) ("TOP" . 1012846))) - ("Init" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s([, [X,] Y])" ("objects_gr122.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES " . 1314217) ("COLOR " . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE " . 1056269) ("HIDE " . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE " . 1056290) ("MIN_VALUE " . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR " . 1056389) ("REGISTER_PROPERTIES" . 1056302) ("RESET_DATA " . 1093845) ("SHARE_DATA " . 1056304) ("SYMBOL " . 1056306) ("THICK" . 1056311) ("USE_ZVALUE" . 1056313) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE " . 1056325) ("YCOORD_CONV " . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400))) + ("Init" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s([, [X,] Y])" ("objects_gr122.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES" . 1314217) ("COLOR" . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE" . 1056269) ("HIDE" . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE" . 1056290) ("MIN_VALUE" . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR" . 1056389) ("REGISTER_PROPERTIES" . 1056302) ("RESET_DATA" . 1093845) ("SHARE_DATA" . 1056304) ("SYMBOL" . 1056306) ("THICK" . 1056311) ("USE_ZVALUE" . 1056313) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE" . 1056325) ("YCOORD_CONV" . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400))) ("Cleanup" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr126.html")) - ("GetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr128.html" ) ("objects_gr125.html" ("ALL" . 1056563) ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR " . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET " . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE " . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN " . 1056598) ("HIDE " . 1056602) ("LINESTYLE " . 1056606) ("NORMALS" . 1056621) ("PARENT " . 1056792) ("POLYGONS" . 1056790) ("REJECT " . 1093870) ("SHADE_RANGE " . 1056643) ("SHADING " . 1056645) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE " . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP " . 1056664) ("TEXTURE_MAP " . 1056666) ("THICK " . 1056674) ("VERT_COLORS " . 1056679) ("XCOORD_CONV " . 1088401) ("XRANGE" . 1056808) ("YCOORD_CONV " . 1075980) ("YRANGE" . 1056822) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP " . 1056700) ("ZRANGE" . 1056834))) - ("SetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr130.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR " . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET " . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE " . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN " . 1056598) ("HIDE " . 1056602) ("LINESTYLE " . 1056606) ("NORMALS" . 1056621) ("POLYGONS" . 1056790) ("REJECT " . 1093870) ("RESET_DATA " . 1056641) ("SHADE_RANGE " . 1056643) ("SHADING " . 1056645) ("SHARE_DATA " . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE " . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP " . 1056664) ("TEXTURE_MAP " . 1056666) ("THICK " . 1056674) ("VERT_COLORS " . 1056679) ("XCOORD_CONV " . 1088401) ("YCOORD_CONV " . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP " . 1056700))) + ("GetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr128.html" ) ("objects_gr125.html" ("ALL" . 1056563) ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR" . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET" . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE" . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN" . 1056598) ("HIDE" . 1056602) ("LINESTYLE" . 1056606) ("NORMALS" . 1056621) ("PARENT" . 1056792) ("POLYGONS" . 1056790) ("REJECT" . 1093870) ("SHADE_RANGE" . 1056643) ("SHADING" . 1056645) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE" . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP" . 1056664) ("TEXTURE_MAP" . 1056666) ("THICK" . 1056674) ("VERT_COLORS" . 1056679) ("XCOORD_CONV" . 1088401) ("XRANGE" . 1056808) ("YCOORD_CONV" . 1075980) ("YRANGE" . 1056822) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP" . 1056700) ("ZRANGE" . 1056834))) + ("SetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr130.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR" . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET" . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE" . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN" . 1056598) ("HIDE" . 1056602) ("LINESTYLE" . 1056606) ("NORMALS" . 1056621) ("POLYGONS" . 1056790) ("REJECT" . 1093870) ("RESET_DATA" . 1056641) ("SHADE_RANGE" . 1056643) ("SHADING" . 1056645) ("SHARE_DATA" . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE" . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP" . 1056664) ("TEXTURE_MAP" . 1056666) ("THICK" . 1056674) ("VERT_COLORS" . 1056679) ("XCOORD_CONV" . 1088401) ("YCOORD_CONV" . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP" . 1056700))) ("GetCTM" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s()" ("objects_gr127.html" ("DESTINATION" . 1013188) ("PATH" . 1013190) ("TOP" . 1013196))) - ("Init" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr129.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR " . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET " . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE " . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN " . 1056598) ("HIDDEN_LINES" . 1056600) ("HIDE " . 1056602) ("LINESTYLE " . 1056606) ("NORMALS" . 1056621) ("PALETTE" . 1056629) ("POLYGONS" . 1056790) ("REGISTER_PROPERTIES" . 1327262) ("REJECT " . 1093870) ("RESET_DATA " . 1056641) ("SHADE_RANGE " . 1056643) ("SHADING " . 1056645) ("SHARE_DATA " . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE " . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP " . 1056664) ("TEXTURE_MAP " . 1056666) ("THICK " . 1056674) ("VERT_COLORS " . 1056679) ("XCOORD_CONV " . 1088401) ("YCOORD_CONV " . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP " . 1056700))) + ("Init" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr129.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR" . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET" . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE" . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN" . 1056598) ("HIDDEN_LINES" . 1056600) ("HIDE" . 1056602) ("LINESTYLE" . 1056606) ("NORMALS" . 1056621) ("PALETTE" . 1056629) ("POLYGONS" . 1056790) ("REGISTER_PROPERTIES" . 1327262) ("REJECT" . 1093870) ("RESET_DATA" . 1056641) ("SHADE_RANGE" . 1056643) ("SHADING" . 1056645) ("SHARE_DATA" . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE" . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP" . 1056664) ("TEXTURE_MAP" . 1056666) ("THICK" . 1056674) ("VERT_COLORS" . 1056679) ("XCOORD_CONV" . 1088401) ("YCOORD_CONV" . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP" . 1056700))) ("Cleanup" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr133.html")) - ("GetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr135.html" ) ("objects_gr132.html" ("ALL" . 1056980) ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES " . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS " . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE " . 1057044) ("PARENT" . 1057101) ("POLYLINES" . 1057099) ("SHADING" . 1057051) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS " . 1057073) ("XCOORD_CONV " . 1057075) ("XRANGE" . 1057143) ("YCOORD_CONV" . 1057081) ("YRANGE " . 1057133) ("ZCOORD_CONV" . 1077892) ("ZRANGE" . 1057121))) - ("SetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr137.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES " . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS " . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE " . 1057044) ("POLYLINES" . 1057099) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA " . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS " . 1057073) ("XCOORD_CONV " . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892))) + ("GetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr135.html" ) ("objects_gr132.html" ("ALL" . 1056980) ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES" . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS" . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE" . 1057044) ("PARENT" . 1057101) ("POLYLINES" . 1057099) ("SHADING" . 1057051) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS" . 1057073) ("XCOORD_CONV" . 1057075) ("XRANGE" . 1057143) ("YCOORD_CONV" . 1057081) ("YRANGE" . 1057133) ("ZCOORD_CONV" . 1077892) ("ZRANGE" . 1057121))) + ("SetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr137.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES" . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS" . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE" . 1057044) ("POLYLINES" . 1057099) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA" . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS" . 1057073) ("XCOORD_CONV" . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892))) ("GetCTM" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s()" ("objects_gr134.html" ("DESTINATION" . 1013579) ("PATH" . 1013581) ("TOP" . 1013587))) - ("Init" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr136.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES " . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS " . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE " . 1057044) ("POLYLINES" . 1057099) ("REGISTER_PROPERTIES" . 1057049) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA " . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS " . 1057073) ("XCOORD_CONV " . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892))) + ("Init" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr136.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES" . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS" . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE" . 1057044) ("POLYLINES" . 1057099) ("REGISTER_PROPERTIES" . 1057049) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA" . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS" . 1057073) ("XCOORD_CONV" . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892))) ("Cleanup" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr140.html")) ("Draw" pro "IDLgrPrinter" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr141.html" ("VECT_SORTING" . 1340440) ("VECT_TEXT_RENDER_METHOD" . 1340452) ("VECTOR" . 1013979))) - ("GetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr144.html" ) ("objects_gr139.html" ("ALL " . 1057354) ("COLOR_MODEL" . 1057403) ("DIMENSIONS" . 1057476) ("GAMMA" . 1057474) ("GRAPHICS_TREE " . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS " . 1057418) ("N_COPIES" . 1057420) ("NAME " . 1344875) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("RESOLUTION " . 1093938) ("UNITS" . 1057441))) + ("GetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr144.html" ) ("objects_gr139.html" ("ALL" . 1057354) ("COLOR_MODEL" . 1057403) ("DIMENSIONS" . 1057476) ("GAMMA" . 1057474) ("GRAPHICS_TREE" . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS" . 1057418) ("N_COPIES" . 1057420) ("NAME" . 1344875) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("RESOLUTION" . 1093938) ("UNITS" . 1057441))) ("NewDocument" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr147.html")) ("NewPage" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr148.html")) - ("SetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr149.html" ) ("objects_gr139.html" ("GAMMA" . 1057474) ("GRAPHICS_TREE " . 1057413) ("LANDSCAPE" . 1057415) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("UNITS" . 1057441))) + ("SetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr149.html" ) ("objects_gr139.html" ("GAMMA" . 1057474) ("GRAPHICS_TREE" . 1057413) ("LANDSCAPE" . 1057415) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("UNITS" . 1057441))) ("GetContiguousPixels" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr142.html")) ("GetFontnames" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr143.html" ("IDL_FONTS" . 1014147) ("STYLES" . 1014149))) ("GetTextDimensions" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr145.html" ("DESCENT" . 1014231) ("PATH" . 1014233))) - ("Init" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr146.html" ) ("objects_gr139.html" ("COLOR_MODEL" . 1057403) ("GAMMA" . 1057474) ("GRAPHICS_TREE " . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS " . 1057418) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("REGISTER_PROPERTIES" . 1057456) ("UNITS" . 1057441))) + ("Init" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr146.html" ) ("objects_gr139.html" ("COLOR_MODEL" . 1057403) ("GAMMA" . 1057474) ("GRAPHICS_TREE" . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS" . 1057418) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("REGISTER_PROPERTIES" . 1057456) ("UNITS" . 1057441))) ("Cleanup" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr152.html")) - ("GetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr153.html" ) ("objects_gr151.html" ("ALL" . 1057567) ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR " . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE " . 1057600) ("PALETTE " . 1057611) ("PARENT " . 1345141) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("XRANGE" . 1057656) ("YCOORD_CONV" . 1057636) ("YRANGE" . 1057668) ("ZCOORD_CONV" . 1057666) ("ZRANGE" . 1057574))) - ("SetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr156.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR " . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE " . 1057600) ("PALETTE " . 1057611) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666))) - ("Init" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s([, X[, Y[, Z]]])" ("objects_gr154.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR " . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE " . 1057600) ("PALETTE " . 1057611) ("REGISTER_PROPERTIES" . 1057616) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666))) + ("GetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr153.html" ) ("objects_gr151.html" ("ALL" . 1057567) ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR" . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE" . 1057600) ("PALETTE" . 1057611) ("PARENT" . 1345141) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("XRANGE" . 1057656) ("YCOORD_CONV" . 1057636) ("YRANGE" . 1057668) ("ZCOORD_CONV" . 1057666) ("ZRANGE" . 1057574))) + ("SetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr156.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR" . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE" . 1057600) ("PALETTE" . 1057611) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666))) + ("Init" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s([, X[, Y[, Z]]])" ("objects_gr154.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR" . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE" . 1057600) ("PALETTE" . 1057611) ("REGISTER_PROPERTIES" . 1057616) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666))) ("PickVertex" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr155.html" ("PATH" . 1014753))) ("Add" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_gr159.html")) ("Cleanup" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr160.html")) - ("GetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr161.html" ) ("objects_gr158.html" ("ALL" . 1057772) ("CLIP_PLANES" . 1057798) ("COLOR " . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("PARENT " . 1057863) ("XCOORD_CONV" . 1057861) ("XRANGE " . 1057853) ("YCOORD_CONV" . 1057851) ("YRANGE" . 1080305) ("ZCOORD_CONV" . 1057839) ("ZRANGE" . 1057781))) - ("SetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr164.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR " . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839))) - ("Init" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr162.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR " . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839))) + ("GetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr161.html" ) ("objects_gr158.html" ("ALL" . 1057772) ("CLIP_PLANES" . 1057798) ("COLOR" . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("PARENT" . 1057863) ("XCOORD_CONV" . 1057861) ("XRANGE" . 1057853) ("YCOORD_CONV" . 1057851) ("YRANGE" . 1080305) ("ZCOORD_CONV" . 1057839) ("ZRANGE" . 1057781))) + ("SetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr164.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR" . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839))) + ("Init" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr162.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR" . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839))) ("PickRegion" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr163.html" ("PATH" . 1015096))) ("Add" pro "IDLgrScene" (system) "Obj->[%s::]%s, View" ("objects_gr167.html" ("POSITION" . 1015243))) ("Cleanup" pro "IDLgrScene" (system) "Obj->[%s::]%s" ("objects_gr168.html")) @@ -1555,10 +1555,10 @@ ("GetByName" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr169.html")) ("Init" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s()" ("objects_gr171.html" ) ("objects_gr166.html" ("COLOR" . 1080480) ("HIDE" . 1057961) ("REGISTER_PROPERTIES" . 1057969))) ("Cleanup" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr175.html")) - ("GetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr177.html" ) ("objects_gr174.html" ("ALL" . 1058014) ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATA" . 1339889) ("DEPTH_OFFSET " . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE " . 1058067) ("MAX_VALUE " . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE " . 1058086) ("PARENT " . 1058283) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK " . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("XRANGE " . 1058297) ("YCOORD_CONV" . 1058295) ("YRANGE" . 1058309) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163) ("ZRANGE" . 1082521))) - ("SetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr179.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET " . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE " . 1058067) ("MAX_VALUE " . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE " . 1058086) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK " . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163))) + ("GetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr177.html" ) ("objects_gr174.html" ("ALL" . 1058014) ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATA" . 1339889) ("DEPTH_OFFSET" . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE" . 1058067) ("MAX_VALUE" . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE" . 1058086) ("PARENT" . 1058283) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK" . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("XRANGE" . 1058297) ("YCOORD_CONV" . 1058295) ("YRANGE" . 1058309) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163) ("ZRANGE" . 1082521))) + ("SetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr179.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET" . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE" . 1058067) ("MAX_VALUE" . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE" . 1058086) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK" . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163))) ("GetCTM" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s()" ("objects_gr176.html" ("DESTINATION" . 1015591) ("PATH" . 1015593) ("TOP" . 1015599))) - ("Init" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s([, Z [, X, Y]])" ("objects_gr178.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET " . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE " . 1058067) ("MAX_VALUE " . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE " . 1058086) ("REGISTER_PROPERTIES" . 1094041) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK " . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163))) + ("Init" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s([, Z [, X, Y]])" ("objects_gr178.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET" . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE" . 1058067) ("MAX_VALUE" . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE" . 1058086) ("REGISTER_PROPERTIES" . 1094041) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK" . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163))) ("Cleanup" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr182.html")) ("GetProperty" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr183.html" ) ("objects_gr181.html" ("ALL" . 1058799) ("ALPHA_CHANNEL" . 1315142) ("COLOR" . 1058811) ("DATA" . 1058813) ("SIZE" . 1058817) ("THICK" . 1058823))) ("SetProperty" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr185.html" ) ("objects_gr181.html" ("ALPHA_CHANNEL" . 1315142) ("COLOR" . 1058811) ("DATA" . 1058813) ("SIZE" . 1058817) ("THICK" . 1058823))) @@ -1569,16 +1569,16 @@ ("Init" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s()" ("objects_gr190.html" )) ("Tessellate" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s( Vertices, Poly)" ("objects_gr192.html" ("AUXDATA" . 1016374) ("QUIET" . 1016376))) ("Cleanup" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr195.html")) - ("GetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr197.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALL" . 1058984) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES " . 1058910) ("COLOR " . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("PARENT" . 1058996) ("RECOMPUTE_DIMENSIONS " . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS " . 1096894) ("UPDIR " . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("XRANGE" . 1059010) ("YCOORD_CONV" . 1059008) ("YRANGE" . 1059022) ("ZCOORD_CONV" . 1058968) ("ZRANGE" . 1058890))) - ("SetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr199.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES " . 1058910) ("COLOR " . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS " . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS " . 1096894) ("UPDIR " . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968))) + ("GetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr197.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALL" . 1058984) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES" . 1058910) ("COLOR" . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("PARENT" . 1058996) ("RECOMPUTE_DIMENSIONS" . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS" . 1096894) ("UPDIR" . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("XRANGE" . 1059010) ("YCOORD_CONV" . 1059008) ("YRANGE" . 1059022) ("ZCOORD_CONV" . 1058968) ("ZRANGE" . 1058890))) + ("SetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr199.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES" . 1058910) ("COLOR" . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS" . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS" . 1096894) ("UPDIR" . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968))) ("GetCTM" fun "IDLgrText" (system) "Result = Obj->[%s::]%s()" ("objects_gr196.html" ("DESTINATION" . 1016508) ("PATH" . 1016510) ("TOP" . 1016516))) - ("Init" fun "IDLgrText" (system) "Result = Obj->[%s::]%s([, String or vector of strings])" ("objects_gr198.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES " . 1058910) ("COLOR " . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS " . 1058994) ("REGISTER_PROPERTIES" . 1058946) ("RENDER_METHOD" . 1096891) ("STRINGS " . 1096894) ("UPDIR " . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968))) + ("Init" fun "IDLgrText" (system) "Result = Obj->[%s::]%s([, String or vector of strings])" ("objects_gr198.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES" . 1058910) ("COLOR" . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS" . 1058994) ("REGISTER_PROPERTIES" . 1058946) ("RENDER_METHOD" . 1096891) ("STRINGS" . 1096894) ("UPDIR" . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968))) ("Add" pro "IDLgrView" (system) "Obj->[%s::]%s, Model" ("objects_gr202.html" ("POSITION" . 1016823))) ("Cleanup" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr203.html")) - ("GetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr205.html" ) ("objects_gr201.html" ("ALL " . 1059162) ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PARENT " . 1092817) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS " . 1059207) ("VIEWPLANE_RECT " . 1059216) ("ZCLIP " . 1059219))) - ("SetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr207.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS " . 1059207) ("VIEWPLANE_RECT " . 1059216) ("ZCLIP " . 1059219))) + ("GetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr205.html" ) ("objects_gr201.html" ("ALL" . 1059162) ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PARENT" . 1092817) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS" . 1059207) ("VIEWPLANE_RECT" . 1059216) ("ZCLIP" . 1059219))) + ("SetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr207.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS" . 1059207) ("VIEWPLANE_RECT" . 1059216) ("ZCLIP" . 1059219))) ("GetByName" fun "IDLgrView" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr204.html")) - ("Init" fun "IDLgrView" (system) "Result = Obj->[%s::]%s()" ("objects_gr206.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("REGISTER_PROPERTIES" . 1059205) ("TRANSPARENT" . 1094108) ("UNITS " . 1059207) ("VIEWPLANE_RECT " . 1059216) ("ZCLIP " . 1059219))) + ("Init" fun "IDLgrView" (system) "Result = Obj->[%s::]%s()" ("objects_gr206.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("REGISTER_PROPERTIES" . 1059205) ("TRANSPARENT" . 1094108) ("UNITS" . 1059207) ("VIEWPLANE_RECT" . 1059216) ("ZCLIP" . 1059219))) ("Add" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s, Object" ("objects_gr210.html" ("POSITION" . 1017170))) ("Cleanup" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr211.html")) ("GetProperty" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr213.html" ) ("objects_gr209.html" ("ALL" . 1077311) ("HIDE" . 1059327) ("PARENT" . 1084394))) @@ -1587,28 +1587,28 @@ ("Init" fun "IDLgrViewgroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr214.html" ) ("objects_gr209.html" ("HIDE" . 1059327) ("REGISTER_PROPERTIES" . 1059341))) ("Cleanup" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr218.html")) ("ComputeBounds" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr219.html" ("OPACITY" . 1017518) ("RESET" . 1017520) ("VOLUMES" . 1017522))) - ("GetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr221.html" ) ("objects_gr217.html" ("ALL" . 1059382) ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1 " . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("PARENT" . 1088485) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED " . 1059474) ("VALID_DATA" . 1059634) ("VOLUME_SELECT " . 1059632) ("XCOORD_CONV" . 1059489) ("XRANGE" . 1059648) ("YCOORD_CONV" . 1059495) ("YRANGE" . 1059660) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509) ("ZRANGE" . 1059393))) - ("SetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr224.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1 " . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED " . 1059474) ("VOLUME_SELECT " . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509))) + ("GetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr221.html" ) ("objects_gr217.html" ("ALL" . 1059382) ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1" . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("PARENT" . 1088485) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED" . 1059474) ("VALID_DATA" . 1059634) ("VOLUME_SELECT" . 1059632) ("XCOORD_CONV" . 1059489) ("XRANGE" . 1059648) ("YCOORD_CONV" . 1059495) ("YRANGE" . 1059660) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509) ("ZRANGE" . 1059393))) + ("SetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr224.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1" . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED" . 1059474) ("VOLUME_SELECT" . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509))) ("GetCTM" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s()" ("objects_gr220.html" ("DESTINATION" . 1017555) ("PATH" . 1017557) ("TOP" . 1017563))) - ("Init" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s([, vol0 [, vol1 [, vol2 [, vol3]]]])" ("objects_gr222.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1 " . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("REGISTER_PROPERTIES" . 1059616) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED " . 1059474) ("VOLUME_SELECT " . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509))) + ("Init" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s([, vol0 [, vol1 [, vol2 [, vol3]]]])" ("objects_gr222.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1" . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("REGISTER_PROPERTIES" . 1059616) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED" . 1059474) ("VOLUME_SELECT" . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509))) ("PickVoxel" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s ( Win, View, Point)" ("objects_gr223.html" ("PATH" . 1017818))) ("Cleanup" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr227.html")) ("Draw" pro "IDLgrVRML" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr228.html")) ("GetDeviceInfo" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr229.html" ("ALL" . 1018053) ("MAX_NUM_CLIP_PLANES" . 1018055) ("MAX_TEXTURE_DIMENSIONS" . 1018057) ("MAX_VIEWPORT_DIMENSIONS" . 1018059) ("NAME" . 1018061) ("NUM_CPUS" . 1018063) ("VENDOR" . 1018066) ("VERSION" . 1018068))) - ("GetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr231.html" ) ("objects_gr226.html" ("ALL" . 1059804) ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE " . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY " . 1059832) ("RESOLUTION" . 1094159) ("SCREEN_DIMENSIONS" . 1059862) ("UNITS" . 1059860))) - ("SetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr234.html" ) ("objects_gr226.html" ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE " . 1059826) ("PALETTE" . 1059830) ("QUALITY " . 1059832) ("RESOLUTION" . 1094159) ("UNITS" . 1059860))) + ("GetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr231.html" ) ("objects_gr226.html" ("ALL" . 1059804) ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE" . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY" . 1059832) ("RESOLUTION" . 1094159) ("SCREEN_DIMENSIONS" . 1059862) ("UNITS" . 1059860))) + ("SetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr234.html" ) ("objects_gr226.html" ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE" . 1059826) ("PALETTE" . 1059830) ("QUALITY" . 1059832) ("RESOLUTION" . 1094159) ("UNITS" . 1059860))) ("GetFontnames" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr230.html" ("IDL_FONTS" . 1018109) ("STYLES" . 1018111))) ("GetTextDimensions" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr232.html" ("DESCENT" . 1018185) ("PATH" . 1018187))) - ("Init" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s()" ("objects_gr233.html" ) ("objects_gr226.html" ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE " . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY " . 1059832) ("REGISTER_PROPERTIES" . 1059837) ("RESOLUTION" . 1094159) ("UNITS" . 1059860) ("WORLDINFO " . 1059848) ("WORLDTITLE" . 1059850))) + ("Init" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s()" ("objects_gr233.html" ) ("objects_gr226.html" ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE" . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY" . 1059832) ("REGISTER_PROPERTIES" . 1059837) ("RESOLUTION" . 1094159) ("UNITS" . 1059860) ("WORLDINFO" . 1059848) ("WORLDTITLE" . 1059850))) ("Cleanup" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr237.html")) ("Draw" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr238.html" ("CREATE_INSTANCE" . 1018509) ("DRAW_INSTANCE" . 1018511))) ("Erase" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr239.html" ("COLOR" . 1018544))) ("GetDeviceInfo" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr241.html" ("ALL" . 1018622) ("MAX_NUM_CLIP_PLANES" . 1018624) ("MAX_TEXTURE_DIMENSIONS" . 1018626) ("MAX_VIEWPORT_DIMENSIONS" . 1018628) ("NAME" . 1018630) ("NUM_CPUS" . 1018632) ("VENDOR" . 1018635) ("VERSION" . 1018637))) - ("GetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr244.html" ) ("objects_gr236.html" ("ALL" . 1059951) ("COLOR_MODEL" . 1059974) ("CURRENT_ZOOM" . 1249228) ("DIMENSIONS " . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("IMAGE_DATA " . 1060084) ("LOCATION " . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("RENDERER" . 1094184) ("RESOLUTION" . 1060060) ("RETAIN" . 1060058) ("SCREEN_DIMENSIONS " . 1060073) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZBUFFER_DATA" . 1091007) ("ZOOM_BASE" . 1342797) ("ZOOM_NSTEP" . 1342953))) + ("GetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr244.html" ) ("objects_gr236.html" ("ALL" . 1059951) ("COLOR_MODEL" . 1059974) ("CURRENT_ZOOM" . 1249228) ("DIMENSIONS" . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("IMAGE_DATA" . 1060084) ("LOCATION" . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("RENDERER" . 1094184) ("RESOLUTION" . 1060060) ("RETAIN" . 1060058) ("SCREEN_DIMENSIONS" . 1060073) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZBUFFER_DATA" . 1091007) ("ZOOM_BASE" . 1342797) ("ZOOM_NSTEP" . 1342953))) ("Iconify" pro "IDLgrWindow" (system) "Obj->[%s::]%s, IconFlag" ("objects_gr246.html")) ("SetCurrentCursor" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, CursorName]" ("objects_gr251.html" ("HOTSPOT" . 1019148) ("IMAGE" . 1019144) ("MASK" . 1019146) ("STANDARD" . 1019150))) ("SetCurrentZoom" pro "IDLgrWindow" (system) "Obj-> [%s::]%s, ZoomFactor" ("objects_gr252.html" ("RESET" . 1360383))) - ("SetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr253.html" ) ("objects_gr236.html" ("DIMENSIONS " . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("LOCATION " . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797))) + ("SetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr253.html" ) ("objects_gr236.html" ("DIMENSIONS" . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("LOCATION" . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797))) ("Show" pro "IDLgrWindow" (system) "Obj->[%s::]%s, Position" ("objects_gr254.html")) ("ZoomIn" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr255.html")) ("ZoomOut" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr256.html")) @@ -1616,7 +1616,7 @@ ("GetDimensions" fun "IDLgrWindow" (system) "Result = Obj -> [%s::]%s ()" ("objects_gr242.html" ("MINIMUM_VIRTUAL_DIMENSIONS" . 1360348) ("ORIGINAL_VIRTUAL_DIMENSIONS" . 1360355) ("VIRTUAL_DIMENSIONS" . 1360358) ("VISIBLE_LOCATION" . 1360361))) ("GetFontnames" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s(FamilyName)" ("objects_gr243.html" ("IDL_FONTS" . 1018678) ("STYLES" . 1018680))) ("GetTextDimensions" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr245.html" ("DESCENT" . 1018765) ("PATH" . 1018767))) - ("Init" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr247.html" ) ("objects_gr236.html" ("COLOR_MODEL" . 1059974) ("DIMENSIONS " . 1249231) ("GRAPHICS_TREE" . 1059987) ("LOCATION " . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("REGISTER_PROPERTIES" . 1060008) ("RENDERER" . 1094184) ("RETAIN" . 1060058) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797))) + ("Init" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr247.html" ) ("objects_gr236.html" ("COLOR_MODEL" . 1059974) ("DIMENSIONS" . 1249231) ("GRAPHICS_TREE" . 1059987) ("LOCATION" . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("REGISTER_PROPERTIES" . 1060008) ("RENDERER" . 1094184) ("RETAIN" . 1060058) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797))) ("PickData" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr248.html" ("DIMENSIONS" . 1018957) ("PATH" . 1018961) ("PICK_STATUS" . 1018967))) ("Read" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr249.html")) ("Select" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( Picture, XY)" ("objects_gr250.html" ("DIMENSIONS" . 1019069) ("ORDER" . 1019073) ("SUB_SELECTION" . 1343670) ("UNITS" . 1019076))) @@ -1691,7 +1691,7 @@ ("PromptUserText" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it86.html" ("TITLE" . 1080016))) ("PromptUserYesNo" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it87.html" ("TITLE" . 1080036))) ("Cleanup" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it93.html")) - ("GetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it96.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT " . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VISUAL_TYPE" . 1080735))) + ("GetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it96.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT" . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VISUAL_TYPE" . 1080735))) ("OnKeyboard" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, IsASCII, Character, KeyValue, X, Y, Press, Release, KeyMods" ("objects_it98.html")) ("OnLoseCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it99.html")) ("OnMouseDown" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton, KeyMods, NClicks" ("objects_it100.html")) @@ -1699,10 +1699,10 @@ ("OnMouseUp" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton" ("objects_it102.html")) ("RegisterCursor" pro "IDLitManipulator" (system) "Obj->[%s::]%s, ArrCursor, Name" ("objects_it104.html" ("DEFAULT" . 1281810))) ("SetCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s [, Item]" ("objects_it105.html")) - ("SetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it120.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT " . 1080617) ("TRANSIENT_MOTION" . 1080650) ("VISUAL_TYPE" . 1080735))) + ("SetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it120.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT" . 1080617) ("TRANSIENT_MOTION" . 1080650) ("VISUAL_TYPE" . 1080735))) ("CommitUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it94.html" ("UNCOMMIT" . 1080828))) ("GetCursorType" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s(TypeIn, KeyMods)" ("objects_it95.html")) - ("Init" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it97.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DEFAULT_CURSOR" . 1080389) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT " . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VIEWS_ONLY" . 1080706) ("VISUAL_TYPE" . 1080735))) + ("Init" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it97.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DEFAULT_CURSOR" . 1080389) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT" . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VIEWS_ONLY" . 1080706) ("VISUAL_TYPE" . 1080735))) ("RecordUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it103.html")) ("Add" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s, Manipulator" ("objects_it109.html")) ("GetProperty" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s" ("objects_it112.html" )) @@ -1816,7 +1816,7 @@ ("BeginManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it241.html")) ("Cleanup" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it242.html")) ("EndManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it243.html")) - ("GetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it251.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE " . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET " . 1086407) ("PROPERTY_INTERSECTION" . 1153078))) + ("GetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it251.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE" . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET" . 1086407) ("PROPERTY_INTERSECTION" . 1153078))) ("Move" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Source, Destination" ("objects_it261.html")) ("On2DRotate" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, IsRotated" ("objects_it262.html")) ("OnAxesRequestChange" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, AxesRequest" ("objects_it263.html")) @@ -1836,7 +1836,7 @@ ("SetAxesStyleRequest" pro "IDLitVisualization" (system) "Obj->[%s::]%s, StyleRequest" ("objects_it278.html" ("NO_NOTIFY" . 1264441))) ("SetCurrentSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it279.html")) ("SetDefaultSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, SelectionVisual" ("objects_it281.html" ("POSITION" . 1087891))) - ("SetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it283.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE " . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET " . 1086407) ("TYPE" . 1086465))) + ("SetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it283.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE" . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET" . 1086407) ("TYPE" . 1086465))) ("UpdateSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it284.html")) ("VisToWindow" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ" ("objects_it285.html" ("NO_TRANSFORM" . 1157092))) ("WindowToVis" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ or Obj->[%s::]%s, InX, InY, OutX, OutY or Obj->[%s::]%s, InVerts, OutVerts" ("objects_it286.html")) @@ -1851,7 +1851,7 @@ ("GetSelectionVisual" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(Manipulator)" ("objects_it253.html")) ("GetTypes" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it254.html")) ("GetXYZRange" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(XRange,YRange, ZRange)" ("objects_it255.html" ("DATA" . 1087296) ("NO_TRANSFORM" . 1087298))) - ("Init" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it256.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE " . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET " . 1086407) ("PROPERTY_INTERSECTION" . 1153078) ("TYPE" . 1086465))) + ("Init" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it256.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE" . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET" . 1086407) ("PROPERTY_INTERSECTION" . 1153078) ("TYPE" . 1086465))) ("Is3D" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it257.html")) ("IsIsotropic" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it258.html")) ("IsManipulatorTarget" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it259.html")) @@ -1942,11 +1942,11 @@ ("IDLgrLegend" (tags "OSCALENODE" "BORDER_GAP" "COLUMNS" "OOUTLINE" "OFILL" "OFONT" "GAP" "GLYPHWIDTH" "PITEM_COLOR" "PITEM_LINESTYLE" "PITEM_NAME" "PITEM_OBJECT" "PITEM_THICK" "PITEM_TYPE" "OTITLE" "PTEXT_COLOR" "BRECOMPUTE" "PGLYPHS" "PTEXTS" "HGLYPHWIDTH" "VGLYPHWIDTH" "COLORMODE" "CLEANLEAVE" "CLEANGLYPHS" "IDLGRLEGENDVERSION") (inherits "IDLgrModel") (link "objects_gr65.html")) ("IDLgrPolygon" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYGON_TOP" "IDLGRPOLYGONVERSION" "DATA" "PRECISION" "FILLPATTERN" "POLYGONS" "NORMALS" "POLYGONFLAGS" "SHADING" "SHADERANGE" "STYLE" "TXTRCOORD" "TXTRMAP" "VERTCOLORS" "BTMCOLOR" "AMBIENT" "DIFFUSE" "SPECULAR" "EMISSION" "SHININESS" "LINESTYLE" "THICK" "DEPTHOFFSET" "IDLGRPOLYGON_BOTTOM") (inherits "IDLitComponent") (link "objects_gr124.html")) ("IDLgrWindow" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRWINDOW_TOP" "IDLGRWINDOWVERSION" "WINDOWFLAGS" "CURRENT_ZOOM" "DIMENSIONS" "DISPLAYNAME" "INDEX" "LOCATION" "MINIMUM_VIRTUAL_DIMENSIONS" "ORIGINAL_VIRTUAL_DIMENSIONS" "RENDERER" "RETAIN" "SCREENDIMENSIONS" "SELF" "TITLE" "UNITS" "VIRTUAL_DIMENSIONS" "VISIBLE_LOCATION" "ZOOM_BASE" "ZOOM_NSTEP" "EXTERNAL_WINDOW" "NEXT" "WFILL1" "PARENT" "WFILL2" "IDLGRWINDOW_BOTTOM") (inherits "IDLitComponent") (link "objects_gr235.html")) - ("IDLgrROI" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROI_TOP" "IDLGRROIVERSION" "LINESTYLE" "STYLE" "SYMBOL" "THICK" "IDLGRROI_BOTTOM") (inherits "IDLanROI" "IDLitComponent") (link "objects_gr150.html")) ("IDLgrPolyline" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYLINE_TOP" "IDLGRPOLYLINEVERSION" "POLYLINEFLAGS" "DATA" "PRECISION" "LABEL_NOGAPS" "LABEL_OBJECTS" "LABEL_OFFSETS" "LABEL_POLYLINES" "LINESTYLE" "POLYLINES" "SYMBOL" "PSYMBOL" "THICK" "SHADING" "USE_LABEL_COLOR" "USE_LABEL_ORIENTATION" "VERTCOLORS" "LABEL_INFO" "FILL1" "IDLGRPOLYLINE_BOTTOM") (inherits "IDLitComponent") (link "objects_gr131.html")) + ("IDLgrROI" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROI_TOP" "IDLGRROIVERSION" "LINESTYLE" "STYLE" "SYMBOL" "THICK" "IDLGRROI_BOTTOM") (inherits "IDLanROI" "IDLitComponent") (link "objects_gr150.html")) ("IDLitManipulatorManager" (tags "_OOLDCURR" "_ODEFAULT" "_OWINCURR" "_CURROBS") (inherits "IDLitManipulatorContainer") (link "objects_it121.html")) - ("IDLgrPlot" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPLOT_TOP" "IDLGRPLOTVERSION" "DATA" "PLOTFLAGS" "LINESTYLE" "PRECISION" "MAXVAL" "MINVAL" "NSUM" "SYMBOL" "PSYMBOL" "THICK" "VERTCOLORS" "ZVALUE" "LINEDATA" "PFILL1" "IDLGRPLOT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr117.html")) ("IDLgrVolume" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRVOLUME_TOP" "IDLGRVOLUMEVERSION" "AMBIENT" "BOUNDS" "LIMITS" "DIMENSIONS" "COLORTABLE" "COMPOSITEFUNC" "CUTPLANES" "NUMCUTPLANES" "DEPTH_CUE" "OPACITYTABLE" "RENDERSTEP" "DATA" "EDM_VOLUME" "VOLUMEFLAGS" "IDLGRVOLUME_BOTTOM") (inherits "IDLitComponent") (link "objects_gr216.html")) + ("IDLgrPlot" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPLOT_TOP" "IDLGRPLOTVERSION" "DATA" "PLOTFLAGS" "LINESTYLE" "PRECISION" "MAXVAL" "MINVAL" "NSUM" "SYMBOL" "PSYMBOL" "THICK" "VERTCOLORS" "ZVALUE" "LINEDATA" "PFILL1" "IDLGRPLOT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr117.html")) ("IDLgrROIGroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROIGROUP_TOP" "IDLGRROIGROUPVERSION" "IDLGRROIGROUP_BOTTOM") (inherits "IDLanROIGroup" "IDLitComponent") (link "objects_gr157.html")) ("IDLgrText" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRTEXT_TOP" "IDLGRTEXTVERSION" "TEXTFLAGS" "ALIGNMENT" "BASELINE" "CHAR_DIMENSIONS" "RECOMP_CTM" "FONT" "LOCATIONS" "STRINGS" "SUBPARENT" "UPDIR" "VERTICAL_ALIGNMENT" "FILL_COLOR" "RENDER_MODE" "IDLGRTEXT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr193.html")) ("IDLitManipulatorContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN" "M_BAUTOSWITCH" "M_CURRMANIP") (inherits "IDLitManipulator" "IDL_Container") (link "objects_it107.html")) @@ -1955,33 +1955,33 @@ ("IDLgrImage" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRIMAGE_TOP" "IDLGRIMAGEVERSION" "CHANNEL" "DATA" "DIMENSIONS" "SUB_RECT" "IMAGEFLAGS" "LOCATION" "INTERLEAVE" "INTERPOLATE" "BLEND_FUNCTIONS" "IDLGRIMAGE_BOTTOM") (inherits "IDLitComponent") (link "objects_gr58.html")) ("IDLgrLight" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRLIGHT_TOP" "IDLGRLIGHTVERSION" "ATTENUATION" "CONEANGLE" "DIRECTION" "FOCUS" "INTENSITY" "LOCATION" "TYPE" "IDLGRLIGHT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr72.html")) ("IDLgrView" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEW_TOP" "IDLGRVIEWVERSION" "VIEWFLAGS" "COLOR" "DEPTH_CUE" "DIMENSIONS" "PRECISION" "EYE" "LOCATION" "OBLIQUE" "PROJECTION" "TRANSPARENT" "UNITS" "VIEW" "ZCLIP" "IDLGRVIEW_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr200.html")) - ("IDLgrClipboard" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRCLIPBOARD_TOP" "IDLGRCLIPBOARDVERSION" "UNITS" "DIMENSIONS" "FILENAME" "VECTOR" "POSTSCRIPT" "IDLGRCLIPBOARD_BOTTOM") (inherits "IDLitComponent") (link "objects_gr25.html")) ("IDLgrVRML" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRVRML_TOP" "IDLGRVRMLVERSION" "UNITS" "DIMENSIONS" "FILENAME" "WORLDINFO" "WORLDTITLE" "IDLGRVRML_BOTTOM") (inherits "IDLitComponent") (link "objects_gr225.html")) - ("IDLitManipulator" (tags "PSELECTIONLIST" "NSELECTIONLIST" "BUTTONPRESS" "_OCMDSET" "_TYPES" "_OHITVIS" "_OHITVIEWGROUP" "_PSUBHITLIST" "_STRVISUALTYPE" "_IDOPERATION" "_IDPARAMETER" "_DEFAULTCURSOR" "_SUBTYPE" "_STRTMPMSG" "_SKIPMACROHISTORY" "_TRANSMOTION" "_INTRANSMOTION" "_TRANSIENT" "_KEYTRANSIENT" "_DISABLE" "_VIEWMODE" "_UIEVENTMASK" "_OLDQUALITY" "_DRAQQUAL" "_NORMALIZEDZ") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it91.html")) + ("IDLgrClipboard" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRCLIPBOARD_TOP" "IDLGRCLIPBOARDVERSION" "UNITS" "DIMENSIONS" "FILENAME" "VECTOR" "POSTSCRIPT" "IDLGRCLIPBOARD_BOTTOM") (inherits "IDLitComponent") (link "objects_gr25.html")) ("IDLgrPrinter" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRPRINTER_TOP" "IDLGRPRINTERVERSION" "PRINTERFLAGS" "NCOPIES" "UNITS" "GAMMA" "IDLGRPRINTER_BOTTOM") (inherits "IDLitComponent") (link "objects_gr138.html")) + ("IDLitManipulator" (tags "PSELECTIONLIST" "NSELECTIONLIST" "BUTTONPRESS" "_OCMDSET" "_TYPES" "_OHITVIS" "_OHITVIEWGROUP" "_PSUBHITLIST" "_STRVISUALTYPE" "_IDOPERATION" "_IDPARAMETER" "_DEFAULTCURSOR" "_SUBTYPE" "_STRTMPMSG" "_SKIPMACROHISTORY" "_TRANSMOTION" "_INTRANSMOTION" "_TRANSIENT" "_KEYTRANSIENT" "_DISABLE" "_VIEWMODE" "_UIEVENTMASK" "_OLDQUALITY" "_DRAQQUAL" "_NORMALIZEDZ") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it91.html")) ("IDLgrModel" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRMODEL_TOP" "IDLGRMODELVERSION" "MODELFLAGS" "CLIP_PLANES" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "TRANSFORM" "IDLGRMODEL_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr79.html")) ("IDLgrBuffer" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRBUFFER_TOP" "IDLGRBUFFERVERSION" "UNITS" "DIMENSIONS" "IDLGRBUFFER_BOTTOM") (inherits "IDLitComponent") (link "objects_gr10.html")) ("IDLitParameterSet" (tags "_PNAMES") (inherits "IDLitDataContainer") (link "objects_it159.html")) - ("IDLitDataContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN" "_IDISABLE" "_IUPDATES" "_BINSEARCH") (inherits "IDLitData" "IDL_Container") (link "objects_it59.html")) + ("IDLitDataContainer" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY" "_IDISABLE" "_IUPDATES" "_BINSEARCH") (inherits "IDLitContainer") (link "objects_it59.html")) ("IDLgrScene" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRSCENE_TOP" "IDLGRSCENEVERSION" "COLOR" "TRANSPARENT" "IDLGRSCENE_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr165.html")) - ("IDLitUI" (tags "_MENUBARS" "_TOOLBARS" "_STATUSBAR" "_UISERVICES" "_PDISPATCHSUBJECT" "_PDISPATCHOBSERVER" "_OTOOL" "_IDISPATCH" "_WBASE") (inherits "IDLitContainer") (link "objects_it222.html")) ("IDLgrViewgroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEWGROUP_TOP" "IDLGRVIEWGROUPVERSION" "IDLGRVIEWGROUP_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr208.html")) + ("IDLitUI" (tags "_MENUBARS" "_TOOLBARS" "_STATUSBAR" "_UISERVICES" "_PDISPATCHSUBJECT" "_PDISPATCHOBSERVER" "_OTOOL" "_IDISPATCH" "_WBASE") (inherits "IDLitContainer") (link "objects_it222.html")) ("IDLitDataOperation" (tags "_NAN" "_WITHINUI" "_RECORDPROPERTIES") (inherits "IDLitOperation") (link "objects_it69.html")) ("IDLgrMPEG" (tags "IDLGRMPEG_TOP" "IDLGRMPEGVERSION" "DIMENSIONS" "FILENAME" "FORMAT" "FRAMERATE" "INTERLACED" "QUALITY" "SCALE" "STATISTICS" "DISPLAYDIMS" "FIRSTFRAME" "LASTFRAME" "MPEGID" "TEMPNODE" "TEMPNODEFILLER" "TEMP_DIRECTORY" "BITRATE" "IFRAME_GAP" "MOTION_LENGTH" "FLAGS" "IDLGRMPEG_BOTTOM") (link "objects_gr93.html")) ("IDLitCommandSet" (inherits "IDLitCommand" "IDL_Container") (link "objects_it12.html")) - ("IDLitData" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY") (inherits "IDLitComponent") (link "objects_it44.html")) - ("IDLitOperation" (tags "_BEXPENSIVE" "_REVERSIBLE" "_BSHOWEXECUTIONUI" "_BSKIPHISTORY" "_BSKIPMACRO" "_BMACROSHOWUIIFNULLCMD" "_BMACROSUPPRESSREFRESH" "_TYPES") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it134.html")) ("IDLitContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN") (inherits "IDLitComponent" "IDL_Container") (link "objects_it33.html")) + ("IDLitOperation" (tags "_BEXPENSIVE" "_REVERSIBLE" "_BSHOWEXECUTIONUI" "_BSKIPHISTORY" "_BSKIPMACRO" "_BMACROSHOWUIIFNULLCMD" "_BMACROSUPPRESSREFRESH" "_TYPES") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it134.html")) + ("IDLitData" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY") (inherits "IDLitComponent") (link "objects_it44.html")) ("IDLitWriter" (tags "_TYPES" "_BITDEPTH" "_GRAPHICSFORMAT" "_SCALEFACTOR") (inherits "IDLitReader") (link "objects_it311.html")) ("IDLdbRecordset" (tags "IDLDBRECORDSET_TOP" "IDLDBRECORDSETVERSION" "ISTABLE" "PDBOBJ" "ISREADONLY" "NFIELDS" "CURROW" "SOURCE" "CURSORTYPE" "PFIELDS" "PSDEF" "ROWSTATUS" "ROWSET" "ROWPOS" "HSTMT" "HDBC" "IDLDBRECORDSET_BOTTOM") (link "api14.html")) - ("IDLdbDatabase" (tags "IDLDBDATABASE_TOP" "IDLDBDATABASEVERSION" "READONLY" "ISCONNECTED" "FETCHDIR" "POSOPS" "POSSTATEMENTS" "SCROLLCONCUR" "SCROLLOPTIONS" "STATICSENSE" "GETDATAEXT" "USINGCURSOR" "NSTATEMENTS" "P_RECOBJS" "HDBC" "IDLDBDATABASE_BOTTOM") (link "api6.html")) - ("IDLitCommand" (tags "_PDATADICTIONARY" "_SIZEITEMS" "_STRIDTARGET" "_STRIDOPERATION") (inherits "IDLitComponent") (link "objects_it3.html")) ("IDLffLangCat" (tags "FILENAMES" "_AVAILABLE_FILES" "LANGUAGE" "DEFAULT_LANGUAGE" "APPLICATIONS" "APPLICATION_PATH" "KEYS" "N_KEYS" "STRINGS" "DEF_KEYS" "N_DEF_KEYS" "DEF_STRINGS" "AVAILABLE_LANGUAGES" "VERBOSE" "STRICT" "IDLFFLANGCATVERSION") (link "objects_ff44.html")) + ("IDLitCommand" (tags "_PDATADICTIONARY" "_SIZEITEMS" "_STRIDTARGET" "_STRIDOPERATION") (inherits "IDLitComponent") (link "objects_it3.html")) + ("IDLdbDatabase" (tags "IDLDBDATABASE_TOP" "IDLDBDATABASEVERSION" "READONLY" "ISCONNECTED" "FETCHDIR" "POSOPS" "POSSTATEMENTS" "SCROLLCONCUR" "SCROLLOPTIONS" "STATICSENSE" "GETDATAEXT" "USINGCURSOR" "NSTATEMENTS" "P_RECOBJS" "HDBC" "IDLDBDATABASE_BOTTOM") (link "api6.html")) ("IDLitReader" (tags "_STRFILENAME" "_PEXTENSIONS") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it169.html")) ("IDLanROI" (tags "IDLANROI_TOP" "IDLANROIVERSION" "IDLANROIFLAGS" "NALLOCVERTS" "NUSEDVERTS" "BLOCKSIZE" "DATA" "TYPE" "PRECISION" "PLANE" "ROI_XRANGE" "ROI_YRANGE" "ROI_ZRANGE" "IDLANROI_BOTTOM") (link "objects_an3.html")) - ("IDLgrPalette" (tags "IDLGRPALETTE_TOP" "IDLGRPALETTE_SERIALNUM" "IDLGRPALETTEVERSION" "GAMMA" "BOTTOMSTRETCH" "TOPSTRETCH" "NENTRIES" "ORIGLUT" "CURRLUT" "INVTABLE" "UVALUE" "NAME" "IDLGRPALETTE_BOTTOM") (link "objects_gr101.html")) ("IDLanROIGroup" (tags "IDLANROIGROUP_TOP" "IDLANROIGROUPVERSION" "IDLANROIGROUPFLAGS" "ROIGROUP_XRANGE" "ROIGROUP_YRANGE" "ROIGROUP_ZRANGE" "IDLANROIGROUP_BOTTOM") (inherits "IDL_Container") (link "objects_an18.html")) - ("IDLffXMLDOMDocument" (tags "IDLFFXMLDOMDOCUMENT_TOP" "_DOM_IMPLEMENTATION" "_DOM_PARSER" "_DOM_ERROR_REPORTER" "_DOM_MEMORY_MANAGER" "IDLFFXMLDOMDOCUMENT_BOTTOM") (inherits "IDLffXMLDOMNode") (link "objects_ff102.html")) + ("IDLffXMLDOMDocument" (tags "IDLFFXMLDOMDOCUMENT_TOP" "_DOM_IMPLEMENTATION" "_DOM_PARSER" "_DOM_ERROR_REPORTER" "_DOM_MEMORY_MANAGER" "IDLFFXMLDOMDOCUMENT_BOTTOM") (inherits "IDLffXMLDOMText") (link "objects_ff102.html")) + ("IDLgrPalette" (tags "IDLGRPALETTE_TOP" "IDLGRPALETTE_SERIALNUM" "IDLGRPALETTEVERSION" "GAMMA" "BOTTOMSTRETCH" "TOPSTRETCH" "NENTRIES" "ORIGLUT" "CURRLUT" "INVTABLE" "UVALUE" "NAME" "IDLGRPALETTE_BOTTOM") (link "objects_gr101.html")) ("IDLitComponent" (tags "IDLITCOMPONENT_TOP" "IDLITCOMPONENTVERSION" "DESCRIPTION" "NAME" "ICON" "IDENTIFIER" "HELP" "UVALUE" "_PARENT" "PROPERTYDESCRIPTORS" "_FLAGS" "IDLITCOMPONENT_BOTTOM") (link "objects_it17.html")) ("IDLgrSymbol" (tags "IDLGRSYMBOL_TOP" "IDLGRSYMBOLVERSION" "COLOR" "DATA" "SIZE" "THICK" "FLAGS" "UVALUE" "NAME" "ALPHA_CHANNEL" "IDLGRSYMBOL_BOTTOM") (link "objects_gr180.html")) ("IDLgrFont" (tags "IDLGRFONT_TOP" "IDLGRFONTVERSION" "FONTFLAGS" "HERSHEY" "NAME" "SIZE" "SUBSTITUTE" "THICK" "ID" "UVALUE" "IDLGRFONT_BOTTOM") (link "objects_gr52.html")) @@ -1989,45 +1989,45 @@ ("IDLffDXF" (tags "IDLFFDXF_TOP" "IDLFFDXFVERSION" "DXFREADVALID" "DXFHANDLEVALID" "DXFLUT" "SERIAL" "DXFHANDLE" "DXFHANDLEFILLER" "IDLFFDXF_BOTTOM") (link "objects_ff21.html")) ("IDLffShape" (tags "IDLFFSHAPE_TOP" "IDLFFSHAPEVERSION" "FILENAME" "ISOPEN" "SHPTYPE" "PATTRIBUTE" "SHAPEHANDLE" "DBFHANDLE" "IDLFFSHAPE_BOTTOM") (link "objects_ff59.html")) ("IDLffXMLSAX" (tags "IDLFFXMLSAX_TOP" "IDLFFXMLSAXVERSION" "VALIDATION_MODE" "HALT_PROCESSING" "FILENAME" "_XML_PARSER" "_XML_LOCATOR" "IDLFFXMLSAX_BOTTOM") (link "objects_ff209.html")) - ("IDLffDICOM" (tags "IDLFFDICOM_TOP" "IDLFFDICOMVERSION" "DICOMFLAGS" "DICOMELEMENTS" "DICOMPREAMBLE" "DICOMHANDLE" "DICOMHANDLEFILLER" "IDLFFDICOM_BOTTOM") (link "objects_ff3.html")) ("TrackBall" (tags "BTNDOWN" "AXIS" "CONSTRAIN" "MOUSE" "CENTER" "RADIUS" "PT0" "PT1") (link "objects_misc33.html")) ("IDLgrTessellator" (tags "IDLGRTESSELLATOR_TOP" "IDLGRTESSELLATORVERSION" "ITESSFLAGS" "IVERTS" "HVIDLIST" "IAUXSIZE" "IAUXTYPE" "IDLGRTESSELLATOR_BOTTOM") (link "objects_gr186.html")) - ("IDLffXMLDOMNode" (inherits "IDLffXMLDOMDocumentType") (link "objects_ff162.html")) - ("IDLffXMLDOMDocumentType" (inherits "IDLffXMLDOMElement") (link "objects_ff123.html")) + ("IDLffDICOM" (tags "IDLFFDICOM_TOP" "IDLFFDICOMVERSION" "DICOMFLAGS" "DICOMELEMENTS" "DICOMPREAMBLE" "DICOMHANDLE" "DICOMHANDLEFILLER" "IDLFFDICOM_BOTTOM") (link "objects_ff3.html")) + ("IDLffXMLDOMText" (inherits "IDLffXMLDOMProcessingInstruction") (link "objects_ff203.html")) + ("IDLffXMLDOMProcessingInstruction" (inherits "IDLffXMLDOMAttr") (link "objects_ff196.html")) + ("IDLffXMLDOMAttr" (inherits "IDLffXMLDOMElement") (link "objects_ff74.html")) + ("IDLffXMLDOMElement" (inherits "IDLffXMLDOMNode") (link "objects_ff130.html")) ("IDLffXMLDOMNamedNodeMap" (tags "IDLFFXMLDOMNAMEDNODEMAP_TOP" "IDLFFXMLDOMNAMEDNODEMAPVERSION" "_IDLFFXMLDOMNAMEDNODEMAPNODE" "_IDLFFXMLDOMNAMEDNODEMAPOWNEDNODES" "_IDLFFXMLDOMNAMEDNODEMAPOWNER" "_IDLFFXMLDOMNAMEDNODEMAPDOCUMENT" "IDLFFXMLDOMNAMEDNODEMAP_BOTTOM") (link "objects_ff153.html")) - ("IDLffXMLDOMElement" (inherits "IDLffXMLDOMNotation") (link "objects_ff130.html")) - ("IDLffXMLDOMNotation" (inherits "IDLffXMLDOMEntity") (link "objects_ff190.html")) - ("IDLffXMLDOMEntity" (inherits "IDLffXMLDOMCharacterData") (link "objects_ff142.html")) - ("IDLffXMLDOMCharacterData" (inherits "IDLffXMLDOMProcessingInstruction") (link "objects_ff86.html")) - ("IDLffXMLDOMProcessingInstruction" (inherits "IDLffXMLDOMText") (link "objects_ff196.html")) - ("IDLffXMLDOMText" (inherits "IDLffXMLDOMAttr") (link "objects_ff203.html")) - ("IDLffXMLDOMAttr" (tags "IDLFFXMLDOMNODE_TOP" "IDLFFXMLDOMNODEVERSION" "_IDLFFXMLDOMNODEDOMNODE" "_IDLFFXMLDOMNODEOWNEDNODES" "_IDLFFXMLDOMNODEOWNER" "_IDLFFXMLDOMNODEDOCUMENT" "IDLFFXMLDOMNODE_BOTTOM") (link "objects_ff74.html")) + ("IDLffXMLDOMNode" (inherits "IDLffXMLDOMNotation") (link "objects_ff162.html")) + ("IDLffXMLDOMNotation" (inherits "IDLffXMLDOMCharacterData") (link "objects_ff190.html")) ("IDLffXMLDOMNodeList" (tags "IDLFFXMLDOMNODELIST_TOP" "IDLFFXMLDOMNODELISTVERSION" "_IDLFFXMLDOMNODELISTNODE" "_IDLFFXMLDOMNODELISTOWNEDNODES" "_IDLFFXMLDOMNODELISTOWNER" "_IDLFFXMLDOMNODELISTDOCUMENT" "IDLFFXMLDOMNODELIST_BOTTOM") (link "objects_ff184.html")) + ("IDLffXMLDOMCharacterData" (inherits "IDLffXMLDOMEntity") (link "objects_ff86.html")) + ("IDLffXMLDOMEntity" (inherits "IDLffXMLDOMDocumentType") (link "objects_ff142.html")) + ("IDLffXMLDOMDocumentType" (tags "IDLFFXMLDOMNODE_TOP" "IDLFFXMLDOMNODEVERSION" "_IDLFFXMLDOMNODEDOMNODE" "_IDLFFXMLDOMNODEOWNEDNODES" "_IDLFFXMLDOMNODEOWNER" "_IDLFFXMLDOMNODEDOCUMENT" "IDLFFXMLDOMNODE_BOTTOM") (link "objects_ff123.html")) ("IDL_Container" (tags "IDL_CONTAINER_TOP" "IDLCONTAINERVERSION" "PHEAD" "PTAIL" "NLIST" "IDL_CONTAINER_BOTTOM") (link "objects_misc3.html")) ("IDLffJPEG2000" (tags "IDLFFJPEG2000_TOP" "CJPEG2000PTR" "IDLFFJPEG2000_BOTTOM") (link "objects_ff34.html")) ("IDLitParameter" (tags "_OPARAMETERDESCRIPTORS" "_OPARAMETERSET" "_PPARAMNAMES") (link "objects_it145.html")) ("IDL_Savefile" (tags "IDL_SAVEFILE_FILENAME" "IDL_SAVEFILE_RELAXED_STRUCTURE_ASSIGNMENT") (link "objects_misc13.html")) ("IDLitIMessaging" (tags "__OTOOL") (link "objects_it78.html")) - ("IDLjavaObject" (link "objects_misc28.html")) ("IDLcomIDispatch" (link "objects_misc23.html")) - ("IDLffMrSID" (link "objects_ff52.html")))) + ("IDLffMrSID" (link "objects_ff52.html")) + ("IDLjavaObject" (link "objects_misc28.html")))) (setq idlwave-executive-commands-alist '( - ("GO" . "symbols6.html") - ("OUT" . "symbols7.html") - ("RETURN" . "symbols9.html") + ("RESET_SESSION" . "symbols8.html") ("TRACE" . "symbols15.html") + ("RNEW" . "symbols10.html") + ("EDIT" . "symbols4.html") + ("STEPOVER" . "symbols14.html") + ("OUT" . "symbols7.html") ("RUN" . "symbols11.html") - ("SKIP" . "symbols12.html") - ("COMPILE" . "symbols2.html") ("CONTINUE" . "symbols3.html") - ("RESET_SESSION" . "symbols8.html") ("STEP" . "symbols13.html") - ("RNEW" . "symbols10.html") + ("RETURN" . "symbols9.html") + ("GO" . "symbols6.html") + ("SKIP" . "symbols12.html") ("FULL_RESET_SESSION" . "symbols5.html") - ("EDIT" . "symbols4.html") - ("STEPOVER" . "symbols14.html") + ("COMPILE" . "symbols2.html") )) ;; Special words with associated help topic files diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el index 04e6a28ee40..be49e613b6c 100644 --- a/lisp/progmodes/idlw-shell.el +++ b/lisp/progmodes/idlw-shell.el @@ -5,7 +5,7 @@ ;; Carsten Dominik <dominik@astro.uva.nl> ;; Chris Chase <chase@att.com> ;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> -;; Version: 5.5 +;; Version: 5.7_22 ;; Keywords: processes ;; This file is part of GNU Emacs. @@ -45,7 +45,7 @@ ;; ;; INSTALLATION: ;; ============= -;; +;; ;; Follow the instructions in the INSTALL file of the distribution. ;; In short, put this file on your load path and add the following ;; lines to your .emacs file: @@ -58,9 +58,9 @@ ;; ;; The newest version of this file can be found on the maintainers ;; web site. -;; +;; ;; http://idlwave.org -;; +;; ;; DOCUMENTATION ;; ============= ;; @@ -77,7 +77,7 @@ ;; it is a bug in XEmacs. ;; The Debug menu in source buffers *does* display the bindings correctly. ;; -;; +;; ;; CUSTOMIZATION VARIABLES ;; ======================= ;; @@ -101,12 +101,12 @@ (condition-case () (require 'custom) (error nil)) (if (and (featurep 'custom) (fboundp 'custom-declare-variable) - (fboundp 'defface)) + (fboundp 'defface)) ;; We've got what we needed (setq idlwave-shell-have-new-custom t) ;; We have the old or no custom-library, hack around it! (defmacro defgroup (&rest args) nil) - (defmacro defcustom (var value doc &rest args) + (defmacro defcustom (var value doc &rest args) `(defvar ,var ,value ,doc)))) ;;; Customizations: idlwave-shell group @@ -117,11 +117,12 @@ :prefix "idlwave-shell" :group 'idlwave) -(defcustom idlwave-shell-prompt-pattern "^ ?IDL> " - "*Regexp to match IDL prompt at beginning of a line. -For example, \"^IDL> \" or \"^WAVE> \". -The \"^\" means beginning of line, and is required. -This variable is used to initialize `comint-prompt-regexp' in the +(defcustom idlwave-shell-prompt-pattern "^\r? ?IDL> " + "*Regexp to match IDL prompt at beginning of a line. +For example, \"^\r?IDL> \" or \"^\r?WAVE> \". +The \"^\r?\" is needed, to indicate the beginning of the line, with +optional return character (which IDL seems to output randomly). +This variable is used to initialize `comint-prompt-regexp' in the process buffer. This is a fine thing to set in your `.emacs' file." @@ -210,7 +211,7 @@ So by default setting a breakpoint will be on C-c C-d C-b." :type 'boolean) (defcustom idlwave-shell-automatic-electric-debug 'breakpoint - "Enter the electric-debug minor mode automatically. + "Enter the electric-debug minor mode automatically. This occurs at a breakpoint or any other halt. The mode is exited upon return to the main level. Can be set to 'breakpoint to enter electric debug mode only when breakpoints are tripped." @@ -295,7 +296,7 @@ The history is only saved if the variable `idlwave-shell-save-command-history' is non-nil." :group 'idlwave-shell-command-setup :type 'file) - + (defcustom idlwave-shell-show-commands '(run misc breakpoint) "*A list of command types to show output from in the shell. @@ -306,12 +307,12 @@ the copious shell traffic to be displayed." :type '(choice (const everything) (set :tag "Checklist" :greedy t - (const :tag "All .run and .compile commands" run) + (const :tag "All .run and .compile commands" run) (const :tag "All breakpoint commands" breakpoint) (const :tag "All debug and stepping commands" debug) (const :tag "Close, window, retall, etc. commands" misc)))) -(defcustom idlwave-shell-examine-alist +(defcustom idlwave-shell-examine-alist '(("Print" . "print,___") ("Help" . "help,___") ("Structure Help" . "help,___,/STRUCTURE") @@ -322,14 +323,14 @@ the copious shell traffic to be displayed." ("Ptr Valid" . "print,ptr_valid(___)") ("Widget Valid" . "print,widget_info(___,/VALID)") ("Widget Geometry" . "help,widget_info(___,/GEOMETRY)")) - "Alist of special examine commands for popup selection. + "Alist of special examine commands for popup selection. The keys are used in the selection popup created by `idlwave-shell-examine-select', and the corresponding value is sent as a command to the shell, with special sequence `___' replaced by the expression being examined." :group 'idlwave-shell-command-setup :type '(repeat - (cons + (cons (string :tag "Label ") (string :tag "Command")))) @@ -340,11 +341,12 @@ expression being examined." "*Non-nil mean, put output of examine commands in their own buffer." :group 'idlwave-shell-command-setup :type 'boolean) - + (defcustom idlwave-shell-comint-settings '((comint-scroll-to-bottom-on-input . t) (comint-scroll-to-bottom-on-output . t) - (comint-scroll-show-maximum-output . nil)) + (comint-scroll-show-maximum-output . nil) + (comint-prompt-read-only . t)) "Alist of special settings for the comint variables in the IDLWAVE Shell. Each entry is a cons cell with the name of a variable and a value. @@ -403,7 +405,7 @@ strings. Here is some example code which makes use of the default spells. answer = GET_KBRD(1) Since the IDLWAVE shell defines the system variable `!IDLWAVE_VERSION', -you could actually check if you are running under Emacs before printing +you could actually check if you are running under Emacs before printing the magic strings. Here is a procedure which uses this. Usage: @@ -420,7 +422,7 @@ pro idlwave_char_input,on=on,off=off if keyword_set(on) then print,'<chars>' $ else if keyword_set(off) then print,'</chars>' $ else print,'<onechar>' - endif + endif end" :group 'idlwave-shell-command-setup :type '(list @@ -428,6 +430,11 @@ end" (regexp :tag "Char-mode regexp") (regexp :tag "Line-mode regexp"))) +(defcustom idlwave-shell-breakpoint-popup-menu t + "*If non-nil, provide a menu on mouse-3 on breakpoint lines, and +popup help text on the line." + :group 'idlwave-shell-command-setup + :type 'boolean) ;; Breakpoint Overlays etc (defgroup idlwave-shell-highlighting-and-faces nil @@ -478,10 +485,10 @@ line where IDL is stopped. See also `idlwave-shell-mark-stop-line'." :group 'idlwave-shell-highlighting-and-faces :type 'string) -(defcustom idlwave-shell-electric-stop-line-face +(defcustom idlwave-shell-electric-stop-line-face (prog1 (copy-face 'modeline 'idlwave-shell-electric-stop-line-face) - (set-face-background 'idlwave-shell-electric-stop-line-face + (set-face-background 'idlwave-shell-electric-stop-line-face idlwave-shell-electric-stop-color) (condition-case nil (set-face-foreground 'idlwave-shell-electric-stop-line-face nil) @@ -529,7 +536,7 @@ lines which have a breakpoint. See also `idlwave-shell-mark-breakpoints'." ;; backward-compatibility alias (put 'idlwave-shell-bp-face 'face-alias 'idlwave-shell-bp)) -(defcustom idlwave-shell-disabled-breakpoint-face +(defcustom idlwave-shell-disabled-breakpoint-face 'idlwave-shell-disabled-bp "*The face for disabled breakpoint lines in the source code. Allows you to choose the font, color and other properties for @@ -584,18 +591,18 @@ before use by the shell.") TYPE is either 'pro' or 'rinfo', and `idlwave-shell-temp-pro-file' or `idlwave-shell-temp-rinfo-save-file' is set (respectively)." - (cond + (cond ((eq type 'rinfo) - (or idlwave-shell-temp-rinfo-save-file - (setq idlwave-shell-temp-rinfo-save-file + (or idlwave-shell-temp-rinfo-save-file + (setq idlwave-shell-temp-rinfo-save-file (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix)))) ((eq type 'pro) (or idlwave-shell-temp-pro-file - (setq idlwave-shell-temp-pro-file + (setq idlwave-shell-temp-pro-file (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix)))) - (t (error "Wrong argument (idlwave-shell-temp-file): %s" + (t (error "Wrong argument (idlwave-shell-temp-file): %s" (symbol-name type))))) - + (defun idlwave-shell-make-temp-file (prefix) "Create a temporary file." @@ -623,7 +630,7 @@ TYPE is either 'pro' or 'rinfo', and `idlwave-shell-temp-pro-file' or (defvar idlwave-shell-dirstack-query "cd,current=___cur & print,___cur" - "Command used by `idlwave-shell-resync-dirs' to query IDL for + "Command used by `idlwave-shell-resync-dirs' to query IDL for the directory stack.") (defvar idlwave-shell-path-query "print,'PATH:<'+transpose(expand_path(!PATH,/ARRAY))+'>' & print,'SYSDIR:<'+!dir+'>'" @@ -631,7 +638,7 @@ the directory stack.") "The command which gets !PATH and !DIR info from the shell.") (defvar idlwave-shell-mode-line-info nil - "Additional info displayed in the mode line") + "Additional info displayed in the mode line") (defvar idlwave-shell-default-directory nil "The default directory in the idlwave-shell buffer, of outside use.") @@ -682,7 +689,7 @@ the directory stack.") window-system) ; Window systems always (progn (setq idlwave-shell-stop-line-overlay (make-overlay 1 1)) - (overlay-put idlwave-shell-stop-line-overlay + (overlay-put idlwave-shell-stop-line-overlay 'face idlwave-shell-stop-line-face)))) (t @@ -690,7 +697,7 @@ the directory stack.") (if window-system (progn (setq idlwave-shell-stop-line-overlay (make-overlay 1 1)) - (overlay-put idlwave-shell-stop-line-overlay + (overlay-put idlwave-shell-stop-line-overlay 'face idlwave-shell-stop-line-face))))) ;; Now the expression and output overlays @@ -746,12 +753,9 @@ with `*'s." (defvar idlwave-shell-ready nil "If non-nil can send next command to IDL process.") -(defvar idlwave-shell-wait-for-output nil - "Whether to wait for output to accumulate.") - ;;; The following are the types of messages we attempt to catch to ;;; resync our idea of where IDL execution currently is. -;;; +;;; (defvar idlwave-shell-halt-frame nil "The frame associated with halt/breakpoint messages.") @@ -795,7 +799,7 @@ IDL has currently stepped.") (defconst idlwave-shell-electric-debug-help " ==> IDLWAVE Electric Debug Mode Help <== - + Break Point Setting and Clearing: b Set breakpoint ([C-u b] for conditional, [C-n b] nth hit, etc.). d Clear nearby breakpoint. @@ -821,7 +825,7 @@ IDL has currently stepped.") Examining Expressions (with prefix for examining the region): p Print expression near point or in region ([C-u p]). ? Help on expression near point or in region ([C-u ?]). - x Examine expression near point or in region ([C-u x]) with + x Examine expression near point or in region ([C-u x]) with letter completion of the examine type. Miscellaneous: @@ -875,18 +879,18 @@ IDL has currently stepped.") `\\[idlwave-routine-info]' displays information about an IDL routine near point, just like in `idlwave-mode'. The module used is the one at point or the one whose argument list is being edited. - To update IDLWAVE's knowledge about compiled or edited modules, use + To update IDLWAVE's knowledge about compiled or edited modules, use \\[idlwave-update-routine-info]. \\[idlwave-find-module] find the source of a module. \\[idlwave-resolve] tells IDL to compile an unresolved module. \\[idlwave-context-help] shows the online help on the item at point, if online help has been installed. - + 4. Debugging --------- A complete set of commands for compiling and debugging IDL programs - is available from the menu. Also keybindings starting with a + is available from the menu. Also keybindings starting with a `C-c C-d' prefix are available for most commands in the *idl* buffer and also in source buffers. The best place to learn about the keybindings is again the menu. @@ -978,8 +982,8 @@ IDL has currently stepped.") (idlwave-shell-display-line nil) (setq idlwave-shell-calling-stack-index 0) (setq idlwave-shell-only-prompt-pattern - (concat "\\`[ \t\n]*" - (substring idlwave-shell-prompt-pattern 1) + (concat "\\`[ \t\n]*" + (substring idlwave-shell-prompt-pattern 1) "[ \t\n]*\\'")) (when idlwave-shell-query-for-class @@ -992,15 +996,12 @@ IDL has currently stepped.") (set-marker comint-last-input-end (point)) (setq idlwave-idlwave_routine_info-compiled nil) (setq idlwave-shell-ready nil) - (setq idlwave-shell-wait-for-output nil) (setq idlwave-shell-bp-alist nil) (idlwave-shell-update-bp-overlays) ; Throw away old overlays (setq idlwave-shell-sources-alist nil) (setq idlwave-shell-default-directory default-directory) (setq idlwave-shell-hide-output nil) - ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility - ;;(make-local-hook 'kill-buffer-hook) (add-hook 'kill-buffer-hook 'idlwave-shell-kill-shell-buffer-confirm nil 'local) (add-hook 'kill-buffer-hook 'idlwave-shell-delete-temp-files nil 'local) @@ -1014,14 +1015,14 @@ IDL has currently stepped.") (while (setq entry (pop list)) (set (make-local-variable (car entry)) (cdr entry))))) - - (unless (memq 'comint-carriage-motion + + (unless (memq 'comint-carriage-motion (default-value 'comint-output-filter-functions)) ;; Strip those pesky ctrl-m's. (add-hook 'comint-output-filter-functions (lambda (string) (when (string-match "\r" string) - (let ((pmark (process-mark (get-buffer-process + (let ((pmark (process-mark (get-buffer-process (current-buffer))))) (save-excursion ;; bare CR -> delete preceding line @@ -1043,8 +1044,6 @@ IDL has currently stepped.") (set (make-local-variable 'comment-start) ";") (setq abbrev-mode t) - ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility - ;;(make-local-hook 'post-command-hook) (add-hook 'post-command-hook 'idlwave-command-hook nil t) ;; Read the command history? @@ -1063,9 +1062,8 @@ IDL has currently stepped.") (idlwave-shell-send-command idlwave-shell-initial-commands nil 'hide) ;; Turn off IDL's ^d interpreting, and define a system ;; variable which knows the version of IDLWAVE - (idlwave-shell-send-command - (format "defsysv,'!idlwave_version','%s',1" - idlwave-mode-version) + (idlwave-shell-send-command + (format "defsysv,'!idlwave_version','%s',1" idlwave-mode-version) nil 'hide) ;; Get the paths if they weren't read in from file (if (and (not idlwave-path-alist) @@ -1085,7 +1083,7 @@ IDL has currently stepped.") (setq idlwave-system-directory sysdir) (put 'idlwave-system-directory 'from-shell t)) ;; Preserve any existing flags - (setq idlwave-path-alist + (setq idlwave-path-alist (mapcar (lambda (x) (let ((old-entry (assoc x old-path-alist))) (if old-entry @@ -1093,7 +1091,7 @@ IDL has currently stepped.") (list x)))) dirs)) (put 'idlwave-path-alist 'from-shell t) - (if idlwave-path-alist + (if idlwave-path-alist (if (and idlwave-auto-write-paths (not idlwave-library-path) (not no-write) ) @@ -1129,8 +1127,8 @@ IDL has currently stepped.") (frame (selected-frame))) (catch 'exit (while flist - (if (not (eq (car flist) - idlwave-shell-idl-wframe)) + (if (not (eq (car flist) + idlwave-shell-idl-wframe)) (throw 'exit (car flist)) (setq flist (cdr flist)))))) (make-frame)) @@ -1148,9 +1146,9 @@ IDL has currently stepped.") ;; We do not have a source frame, so we use this one. (setq idlwave-shell-display-wframe (selected-frame))) ;; Return a new frame - (setq idlwave-shell-idl-wframe + (setq idlwave-shell-idl-wframe (make-frame idlwave-shell-frame-parameters))))) - + ;;;###autoload (defun idlwave-shell (&optional arg quick) "Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'. @@ -1177,14 +1175,14 @@ See also the variable `idlwave-shell-prompt-pattern'. (delete-other-windows)) (and idlwave-shell-use-dedicated-frame (setq idlwave-shell-idl-wframe (selected-frame))) - (add-hook 'idlwave-shell-sentinel-hook + (add-hook 'idlwave-shell-sentinel-hook 'save-buffers-kill-emacs t)) ;; A non-nil arg means, we want a dedicated frame. This will last ;; for the current editing session. (if arg (setq idlwave-shell-use-dedicated-frame t)) (if (equal arg '(16)) (setq idlwave-shell-use-dedicated-frame nil)) - + ;; Check if the process still exists. If not, create it. (unless (comint-check-proc (idlwave-shell-buffer)) (let* ((prg (or idlwave-shell-explicit-file-name "idl")) @@ -1211,9 +1209,9 @@ See also the variable `idlwave-shell-prompt-pattern'. (if (eq (selected-frame) (window-frame window)) (select-window window)))) ;; Save the paths at the end - (add-hook 'idlwave-shell-sentinel-hook + (add-hook 'idlwave-shell-sentinel-hook (lambda () - (if (and + (if (and idlwave-auto-write-paths idlwave-path-alist (not idlwave-library-path) @@ -1244,7 +1242,7 @@ Return either nil or 'hide." (setq idlwave-shell-show-commands (list type)))) -(defun idlwave-shell-send-command (&optional cmd pcmd hide preempt +(defun idlwave-shell-send-command (&optional cmd pcmd hide preempt show-if-error) "Send a command to IDL process. @@ -1265,18 +1263,18 @@ If optional fourth argument PREEMPT is non-nil CMD is put at front of `idlwave-shell-pending-commands'. If PREEMPT is 'wait, wait for all output to complete and the next prompt to arrive before returning \(useful if you need an answer now\). IDL is considered ready if the -prompt is present and if `idlwave-shell-ready' is non-nil. +prompt is present and if `idlwave-shell-ready' is non-nil. If SHOW-IF-ERROR is non-nil, show the output it it contains an error message, independent of what HIDE is set to." ; (setq hide nil) ; FIXME: turn this on for debugging only -; (if (null cmd) +; (if (null cmd) ; (progn -; (message "SENDING Pending commands: %s" +; (message "SENDING Pending commands: %s" ; (prin1-to-string idlwave-shell-pending-commands))) -; (message "SENDING %s|||%s" cmd pcmd)) - (if (and (symbolp idlwave-shell-show-commands) +; (message "SENDING %s|||%s" cmd pcmd)) + (if (and (symbolp idlwave-shell-show-commands) (eq idlwave-shell-show-commands 'everything)) (setq hide nil)) (let ((save-buffer (current-buffer)) @@ -1304,7 +1302,7 @@ message, independent of what HIDE is set to." (append (list (list cmd pcmd hide show-if-error)) idlwave-shell-pending-commands) ;; Put at end. - (append idlwave-shell-pending-commands + (append idlwave-shell-pending-commands (list (list cmd pcmd hide show-if-error)))))) ;; Check if IDL ready (let ((save-point (point-marker))) @@ -1339,9 +1337,11 @@ message, independent of what HIDE is set to." (set-marker comint-last-input-end (point)) (comint-simple-send proc cmd) (setq idlwave-shell-ready nil) - (when (equal preempt 'wait) ; Get all the output at once - (setq idlwave-shell-wait-for-output t) - (accept-process-output proc)))) + (if (equal preempt 'wait) ; Get all the output at once + (while (not idlwave-shell-ready) + (when (not (accept-process-output proc 6)) ; long wait + (setq idlwave-shell-pending-commands nil) + (error "Process timed out")))))) (goto-char save-point)) (set-buffer save-buffer)))) @@ -1353,7 +1353,7 @@ message, independent of what HIDE is set to." (if (or (not (setq buf (get-buffer (idlwave-shell-buffer)))) (not (setq proc (get-buffer-process buf)))) (funcall errf "Shell is not running")) - (if (equal c ?\C-g) + (if (equal c ?\C-g) (funcall errf "Abort") (comint-send-string proc (char-to-string c))))) @@ -1394,7 +1394,7 @@ when the IDL prompt gets displayed again after the current IDL command." (if idlwave-shell-ready (funcall errf "No IDL program seems to be waiting for input")) - ;; OK, start the loop + ;; OK, start the loop (message "Character mode on: Sending single chars (`C-g' to exit)") (message (catch 'exit @@ -1474,133 +1474,123 @@ error messages, etc." (setq output (substring output (string-match "\n" output))) (while (string-match "\\(\n\\|\\`\\)%.*\\(\n .*\\)*" output) (setq output (replace-match "" nil t output))) - (unless + (unless (string-match idlwave-shell-only-prompt-pattern output) output)) (defvar idlwave-shell-hidden-output-buffer " *idlwave-shell-hidden-output*" "Buffer containing hidden output from IDL commands.") (defvar idlwave-shell-current-state nil) - + (defun idlwave-shell-filter (proc string) "Watch for IDL prompt and filter incoming text. When the IDL prompt is received executes `idlwave-shell-post-command-hook' and then calls `idlwave-shell-send-command' for any pending commands." ;; We no longer do the cleanup here - this is done by the process sentinel - (when (eq (process-status idlwave-shell-process-name) 'run) - ;; OK, process is still running, so we can use it. - (let ((data (match-data)) p full-output) - (unwind-protect - (progn - ;; Ring the bell if necessary - (while (setq p (string-match "\C-G" string)) - (ding) - (aset string p ?\C-j )) - (if idlwave-shell-hide-output - (save-excursion - (while (setq p (string-match "\C-M" string)) - (aset string p ?\ )) - (set-buffer - (get-buffer-create idlwave-shell-hidden-output-buffer)) - (goto-char (point-max)) - (insert string)) - (idlwave-shell-comint-filter proc string)) - ;; Watch for magic - need to accumulate the current line - ;; since it may not be sent all at once. - (if (string-match "\n" string) - (progn - (if idlwave-shell-use-input-mode-magic - (idlwave-shell-input-mode-magic - (concat idlwave-shell-accumulation string))) - (setq idlwave-shell-accumulation - (substring string - (progn (string-match "\\(.*[\n\r]+\\)*" - string) - (match-end 0))))) - (setq idlwave-shell-accumulation - (concat idlwave-shell-accumulation string))) - - + (if (eq (process-status idlwave-shell-process-name) 'run) + ;; OK, process is still running, so we can use it. + (let ((data (match-data)) p full-output) + (unwind-protect + (progn + ;; Ring the bell if necessary + (while (setq p (string-match "\C-G" string)) + (ding) + (aset string p ?\C-j )) + (if idlwave-shell-hide-output + (save-excursion + (while (setq p (string-match "\C-M" string)) + (aset string p ?\ )) + (set-buffer + (get-buffer-create idlwave-shell-hidden-output-buffer)) + (goto-char (point-max)) + (insert string)) + (idlwave-shell-comint-filter proc string)) + ;; Watch for magic - need to accumulate the current line + ;; since it may not be sent all at once. + (if (string-match "\n" string) + (progn + (if idlwave-shell-use-input-mode-magic + (idlwave-shell-input-mode-magic + (concat idlwave-shell-accumulation string))) + (setq idlwave-shell-accumulation + (substring string + (progn (string-match "\\(.*[\n\r]+\\)*" + string) + (match-end 0))))) + (setq idlwave-shell-accumulation + (concat idlwave-shell-accumulation string))) + + ;;; Test/Debug code ; (save-excursion (set-buffer ; (get-buffer-create "*idlwave-shell-output*")) ; (goto-char (point-max)) ; (insert "\nSTRING===>\n" string "\n<====\n")) - - ;; Check for prompt in current accumulating output - (if (setq idlwave-shell-ready - (string-match idlwave-shell-prompt-pattern - idlwave-shell-accumulation)) - (progn - ;; Gather the command output + + ;; Check for prompt in current accumulating output + (when (setq idlwave-shell-ready + (string-match idlwave-shell-prompt-pattern + idlwave-shell-accumulation)) + ;; Gather the command output + (if idlwave-shell-hide-output + (save-excursion + (set-buffer idlwave-shell-hidden-output-buffer) + (setq full-output (buffer-string)) + (goto-char (point-max)) + (re-search-backward idlwave-shell-prompt-pattern nil t) + (goto-char (match-end 0)) + (setq idlwave-shell-command-output + (buffer-substring (point-min) (point))) + (delete-region (point-min) (point))) + (setq idlwave-shell-command-output + (with-current-buffer (process-buffer proc) + (buffer-substring + (save-excursion + (goto-char (process-mark proc)) + (forward-line 0) + (point)) + comint-last-input-end)))) + + ;; Scan for state and do post commands - bracket + ;; them with idlwave-shell-ready=nil since they may + ;; call idlwave-shell-send-command themselves. + (let ((idlwave-shell-ready nil)) + (idlwave-shell-scan-for-state) + ;; Show the output in the shell if it contains an error (if idlwave-shell-hide-output - (save-excursion - (set-buffer idlwave-shell-hidden-output-buffer) - (setq full-output (buffer-string)) - (goto-char (point-max)) - (re-search-backward idlwave-shell-prompt-pattern nil t) - (goto-char (match-end 0)) - (setq idlwave-shell-command-output - (buffer-substring (point-min) (point))) - (delete-region (point-min) (point))) - (setq idlwave-shell-command-output - (with-current-buffer (process-buffer proc) - (buffer-substring - (save-excursion - (goto-char (process-mark proc)) - (beginning-of-line nil) - (point)) - comint-last-input-end)))) - - ;; Scan for state and do post commands - bracket - ;; them with idlwave-shell-ready=nil since they may - ;; call idlwave-shell-send-command themselves. - (let ((idlwave-shell-ready nil)) - (idlwave-shell-scan-for-state) - ;; Show the output in the shell if it contains an error - (if idlwave-shell-hide-output - (if (and idlwave-shell-show-if-error - (eq idlwave-shell-current-state 'error)) - (idlwave-shell-comint-filter proc full-output) - ;; If it's only *mostly* hidden, filter % lines, - ;; and show anything that remains - (if (eq idlwave-shell-hide-output 'mostly) - (let ((filtered - (idlwave-shell-filter-hidden-output - full-output))) - (if filtered - (idlwave-shell-comint-filter - proc filtered)))))) - - ;; Call the post-command hook - (if (listp idlwave-shell-post-command-hook) - (progn - ;(message "Calling list") - ;(prin1 idlwave-shell-post-command-hook) - (eval idlwave-shell-post-command-hook)) - ;(message "Calling command function") - (funcall idlwave-shell-post-command-hook)) - - ;; Reset to default state for next command. - ;; Also we do not want to find this prompt again. - (setq idlwave-shell-accumulation nil - idlwave-shell-command-output nil - idlwave-shell-post-command-hook nil - idlwave-shell-hide-output nil - idlwave-shell-show-if-error nil - idlwave-shell-wait-for-output nil)) - ;; Done with post command. Do pending command if - ;; any. - (idlwave-shell-send-command)) - ;; We didn't get the prompt yet... maybe accept more output - (when idlwave-shell-wait-for-output -;;; Test/Debug code -; (save-excursion (set-buffer -; (get-buffer-create "*idlwave-shell-output*")) -; (goto-char (point-max)) -; (insert "\n<=== WAITING ON OUTPUT ==>\n")) - (accept-process-output proc 1)))) - (store-match-data data))))) + (if (and idlwave-shell-show-if-error + (eq idlwave-shell-current-state 'error)) + (idlwave-shell-comint-filter proc full-output) + ;; If it's only *mostly* hidden, filter % lines, + ;; and show anything that remains + (if (eq idlwave-shell-hide-output 'mostly) + (let ((filtered + (idlwave-shell-filter-hidden-output + full-output))) + (if filtered + (idlwave-shell-comint-filter + proc filtered)))))) + + ;; Call the post-command hook + (if (listp idlwave-shell-post-command-hook) + (progn + ;(message "Calling list") + ;(prin1 idlwave-shell-post-command-hook) + (eval idlwave-shell-post-command-hook)) + ;(message "Calling command function") + (funcall idlwave-shell-post-command-hook)) + + ;; Reset to default state for next command. + ;; Also we do not want to find this prompt again. + (setq idlwave-shell-accumulation nil + idlwave-shell-command-output nil + idlwave-shell-post-command-hook nil + idlwave-shell-hide-output nil + idlwave-shell-show-if-error nil)) + ;; Done with post command. Do pending command if + ;; any. + (idlwave-shell-send-command))) + (store-match-data data))))) (defun idlwave-shell-sentinel (process event) "The sentinel function for the IDLWAVE shell process." @@ -1616,7 +1606,7 @@ and then calls `idlwave-shell-send-command' for any pending commands." (condition-case nil (comint-write-input-ring) (error nil))))) - + (when (and (> (length (frame-list)) 1) (frame-live-p idlwave-shell-idl-wframe)) (delete-frame idlwave-shell-idl-wframe) @@ -1640,8 +1630,8 @@ and then calls `idlwave-shell-send-command' for any pending commands." ;; in module and file names. I am not sure if it will be necessary to ;; change this. Currently it seems to work the way it is. (defvar idlwave-shell-syntax-error - "^% Syntax error.\\s-*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)" - "A regular expression to match an IDL syntax error. + "^% Syntax error.\\s-*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)" + "A regular expression to match an IDL syntax error. The 1st pair matches the file name, the second pair matches the line number.") @@ -1649,16 +1639,16 @@ number.") "^% .*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)" "A regular expression to match any IDL error.") -(defvar idlwave-shell-halting-error +(defvar idlwave-shell-halting-error "^% .*\n\\([^%].*\n\\)*% Execution halted at:\\(\\s-*\\S-+\\s-*[0-9]+\\s-*.*\\)\n" "A regular expression to match errors which halt execution.") -(defvar idlwave-shell-cant-continue-error +(defvar idlwave-shell-cant-continue-error "^% Can't continue from this point.\n" "A regular expression to match errors stepping errors.") (defvar idlwave-shell-file-line-message - (concat + (concat "\\(" ; program name group (1) "\\$MAIN\\$\\|" ; main level routine "\\<[a-zA-Z][a-zA-Z0-9_$:]*" ; start with a letter followed by [..] @@ -1676,7 +1666,7 @@ number.") "\\)" ; end line number group (5) ) "*A regular expression to parse out the file name and line number. -The 1st group should match the subroutine name. +The 1st group should match the subroutine name. The 3rd group is the line number. The 5th group is the file name. All parts may contain linebreaks surrounded by spaces. This is important @@ -1695,9 +1685,9 @@ the above." (cond ;; Make sure we have output ((not idlwave-shell-command-output)) - + ;; First Priority: Syntax and other errors - ((or + ((or (string-match idlwave-shell-syntax-error idlwave-shell-command-output) (string-match idlwave-shell-other-error @@ -1711,19 +1701,19 @@ the above." (setq idlwave-shell-error-last (point))) (setq idlwave-shell-current-state 'error) (idlwave-shell-goto-next-error)) - + ;; Second Priority: Halting errors ((string-match idlwave-shell-halting-error idlwave-shell-command-output) ;; Grab the file and line state info. (setq idlwave-shell-calling-stack-index 0) (setq idlwave-shell-halt-frame - (idlwave-shell-parse-line - (substring idlwave-shell-command-output + (idlwave-shell-parse-line + (substring idlwave-shell-command-output (match-beginning 2))) idlwave-shell-current-state 'error) (idlwave-shell-display-line (idlwave-shell-pc-frame))) - + ;; Third Priority: Various types of innocuous HALT and ;; TRACEBACK messages. ((or (setq trace (string-match idlwave-shell-trace-message-re @@ -1733,25 +1723,25 @@ the above." ;; Grab the file and line state info. (setq idlwave-shell-calling-stack-index 0) (setq idlwave-shell-halt-frame - (idlwave-shell-parse-line + (idlwave-shell-parse-line (substring idlwave-shell-command-output (match-end 0)))) (setq idlwave-shell-current-state 'halt) ;; Don't debug trace messages (idlwave-shell-display-line (idlwave-shell-pc-frame) nil (if trace 'no-debug))) - - ;; Fourth Priority: Breakpoints + + ;; Fourth Priority: Breakpoints ((string-match idlwave-shell-break-message idlwave-shell-command-output) (setq idlwave-shell-calling-stack-index 0) - (setq idlwave-shell-halt-frame - (idlwave-shell-parse-line + (setq idlwave-shell-halt-frame + (idlwave-shell-parse-line (substring idlwave-shell-command-output (match-end 0)))) ;; We used to count hits on breakpoints ;; this is no longer supported since IDL breakpoints ;; have learned counting. ;; Do breakpoint command processing - (let ((bp (assoc + (let ((bp (assoc (list (nth 0 idlwave-shell-halt-frame) (nth 1 idlwave-shell-halt-frame)) @@ -1764,9 +1754,9 @@ the above." ;; A breakpoint that we did not know about - perhaps it was ;; set by the user... Let's update our list. (idlwave-shell-bp-query))) - (setq idlwave-shell-current-state 'breakpoint) + (setq idlwave-shell-current-state 'breakpoint) (idlwave-shell-display-line (idlwave-shell-pc-frame))) - + ;; Last Priority: Can't Step errors ((string-match idlwave-shell-cant-continue-error idlwave-shell-command-output) @@ -1775,13 +1765,14 @@ the above." ;; Otherwise, no particular state (t (setq idlwave-shell-current-state nil))))) + (defun idlwave-shell-parse-line (string &optional skip-main) "Parse IDL message for the subroutine, file name and line number. We need to work hard here to remove the stupid line breaks inserted by IDL5. These line breaks can be right in the middle of procedure or file names. It is very difficult to come up with a robust solution. This one seems -to be pretty good though. +to be pretty good though. Here is in what ways it improves over the previous solution: @@ -1806,7 +1797,7 @@ statements." (setq procedure (match-string 1 string) number (match-string 3 string) file (match-string 5 string)) - + ;; Repair the strings (setq procedure (idlwave-shell-repair-string procedure)) (setq number (idlwave-shell-repair-string number)) @@ -1832,7 +1823,7 @@ The last line of STRING may be garbage - we check which one makes a valid file name." (let ((file1 "") (file2 "") (start 0)) ;; We scan no further than to the next "^%" line - (if (string-match "^%" file) + (if (string-match "^%" file) (setq file (substring file 0 (match-beginning 0)))) ;; Take out the line breaks (while (string-match "[ \t]*\n[ \t]*" file start) @@ -1887,7 +1878,7 @@ file name." The size is given by `idlwave-shell-graphics-window-size'." (interactive "P") (let ((n (if n (prefix-numeric-value n) 0))) - (idlwave-shell-send-command + (idlwave-shell-send-command (apply 'format "window,%d,xs=%d,ys=%d" n idlwave-shell-graphics-window-size) nil (idlwave-shell-hide-p 'misc) nil t))) @@ -1907,16 +1898,16 @@ directory." Also get rid of widget events in the queue." (interactive "P") (save-selected-window - ;;if (widget_info(/MANAGED))[0] gt 0 then for i=0,n_elements(widget_info(/MANAGED))-1 do widget_control,(widget_info(/MANAGED))[i],/clear_events & - (idlwave-shell-send-command "retall" nil - (if (idlwave-shell-hide-p 'misc) 'mostly) + ;;if (widget_info(/MANAGED))[0] gt 0 then for i=0,n_elements(widget_info(/MANAGED))-1 do widget_control,(widget_info(/MANAGED))[i],/clear_events & + (idlwave-shell-send-command "retall" nil + (if (idlwave-shell-hide-p 'misc) 'mostly) nil t) (idlwave-shell-display-line nil))) (defun idlwave-shell-closeall (&optional arg) "Close all open files." (interactive "P") - (idlwave-shell-send-command "close,/all" nil + (idlwave-shell-send-command "close,/all" nil (idlwave-shell-hide-p 'misc) nil t)) (defun idlwave-shell-quit (&optional arg) @@ -1932,7 +1923,7 @@ With prefix ARG, exit without confirmation." (defun idlwave-shell-reset (&optional hidden) "Reset IDL. Return to main level and destroy the leftover variables. -This issues the following commands: +This issues the following commands: RETALL WIDGET_CONTROL,/RESET CLOSE, /ALL @@ -1982,14 +1973,14 @@ HEAP_GC, /VERBOSE" ;; Set dummy values and kill the text (setq sep "@" sep-re "@ *" text "") (if idlwave-idlwave_routine_info-compiled - (message - "Routine Info warning: No match for BEGIN line in \n>>>\n%s\n<<<\n" + (message + "Routine Info warning: No match for BEGIN line in \n>>>\n%s\n<<<\n" idlwave-shell-command-output))) (if (string-match "^>>>END OF IDLWAVE ROUTINE INFO.*" text) (setq text (substring text 0 (match-beginning 0))) (if idlwave-idlwave_routine_info-compiled - (message - "Routine Info warning: No match for END line in \n>>>\n%s\n<<<\n" + (message + "Routine Info warning: No match for END line in \n>>>\n%s\n<<<\n" idlwave-shell-command-output))) (if (string-match "\\S-" text) ;; Obviously, the pro worked. Make a note that we have it now. @@ -2007,59 +1998,59 @@ HEAP_GC, /VERBOSE" key (nth 4 specs) keys (if (and (stringp key) (not (string-match "\\` *\\'" key))) - (mapcar 'list + (mapcar 'list (delete "" (idlwave-split-string key " +"))))) (setq name (idlwave-sintern-routine-or-method name class t) class (idlwave-sintern-class class t) file (if (equal file "") nil file) - keys (mapcar (lambda (x) + keys (mapcar (lambda (x) (list (idlwave-sintern-keyword (car x) t))) keys)) - + ;; In the following ignore routines already defined in buffers, ;; assuming that if the buffer stuff differs, it is a "new" ;; version, not yet compiled, and should take precedence. ;; We could do the same for the library to avoid duplicates - ;; but I think frequently a user might have several versions of - ;; the same function in different programs, and in this case the + ;; the same function in different programs, and in this case the ;; compiled one will be the best guess of all versions. ;; Therefore, we leave duplicates of library routines in. (cond ((string= name "$MAIN$")) ; ignore this one ((and (string= type "PRO") ;; FIXME: is it OK to make the buffer routines dominate? (or t (null file) - (not (idlwave-rinfo-assq name 'pro class + (not (idlwave-rinfo-assq name 'pro class idlwave-buffer-routines))) ;; FIXME: is it OK to make the library routines dominate? - ;;(not (idlwave-rinfo-assq name 'pro class + ;;(not (idlwave-rinfo-assq name 'pro class ;; idlwave-library-routines)) ) - (setq entry (list name 'pro class - (cons 'compiled + (setq entry (list name 'pro class + (cons 'compiled (if file (list (file-name-nondirectory file) - (idlwave-sintern-dir + (idlwave-sintern-dir (file-name-directory file))))) cs (cons nil keys))) - (if file + (if file (push entry idlwave-compiled-routines) (push entry idlwave-unresolved-routines))) - + ((and (string= type "FUN") ;; FIXME: is it OK to make the buffer routines dominate? (or t (not file) - (not (idlwave-rinfo-assq name 'fun class + (not (idlwave-rinfo-assq name 'fun class idlwave-buffer-routines))) ;; FIXME: is it OK to make the library routines dominate? - ;; (not (idlwave-rinfo-assq name 'fun class + ;; (not (idlwave-rinfo-assq name 'fun class ;; idlwave-library-routines)) ) - (setq entry (list name 'fun class + (setq entry (list name 'fun class (cons 'compiled (if file (list (file-name-nondirectory file) - (idlwave-sintern-dir + (idlwave-sintern-dir (file-name-directory file))))) cs (cons nil keys))) (if file @@ -2076,7 +2067,7 @@ Change the default directory for the process buffer to concur." (set-buffer (idlwave-shell-buffer)) (if (string-match ",___cur[\n\r]\\(\\S-*\\) *[\n\r]" idlwave-shell-command-output) - (let ((dir (substring idlwave-shell-command-output + (let ((dir (substring idlwave-shell-command-output (match-beginning 1) (match-end 1)))) ; (message "Setting Emacs working dir to %s" dir) (setq idlwave-shell-default-directory dir) @@ -2090,10 +2081,10 @@ Change the default directory for the process buffer to concur." expression) (save-excursion (goto-char apos) - (setq expression (buffer-substring + (setq expression (buffer-substring (catch 'exit (while t - (if (not (re-search-backward + (if (not (re-search-backward "[^][.A-Za-z0-9_() ]" bos t)) (throw 'exit bos)) ;ran into bos (if (not (idlwave-is-pointer-dereference bol)) @@ -2102,7 +2093,8 @@ Change the default directory for the process buffer to concur." (when (not (string= expression "")) (setq idlwave-shell-get-object-class nil) (idlwave-shell-send-command - (concat "print,obj_class(" expression ")") + (concat "if obj_valid(" expression ") then print,obj_class(" + expression ")") 'idlwave-shell-parse-object-class 'hide 'wait) ;; If we don't know anything about the class, update shell routines @@ -2114,14 +2106,11 @@ Change the default directory for the process buffer to concur." (defun idlwave-shell-parse-object-class () "Parse the output of the obj_class command." - (let ((match "print,obj_class([^\n\r]+[\n\r ]")) - (if (and - (not (string-match (concat match match "\\s-*^[\n\r]+" - "% Syntax error") - idlwave-shell-command-output)) - (string-match (concat match "\\([A-Za-z_0-9]+\\)") - idlwave-shell-command-output)) - (setq idlwave-shell-get-object-class + (let ((match "obj_class([^\n\r]+[\n\r ]")) + (if (string-match (concat match "\\([A-Za-z_0-9]+\\) *[\n\r]\\(" + idlwave-shell-prompt-pattern "\\)") + idlwave-shell-command-output) + (setq idlwave-shell-get-object-class (match-string 1 idlwave-shell-command-output))))) (defvar idlwave-sint-sysvars nil) @@ -2135,7 +2124,7 @@ keywords." (interactive "P") (let (exec-cmd) (cond - ((and + ((and (setq exec-cmd (idlwave-shell-executive-command)) (cdr exec-cmd) (member (upcase (cdr exec-cmd)) @@ -2145,7 +2134,7 @@ keywords." (idlwave-shell-complete-filename)) ((car-safe exec-cmd) - (setq idlwave-completion-help-info + (setq idlwave-completion-help-info '(idlwave-shell-complete-execcomm-help)) (idlwave-complete-in-buffer 'execcomm 'execcomm idlwave-executive-commands-alist nil @@ -2164,7 +2153,7 @@ keywords." (let ((case-fold-search t)) (not (looking-at ".*obj_new"))))) (idlwave-shell-complete-filename)) - + (t ;; Default completion of modules and keywords (idlwave-complete arg))))) @@ -2186,7 +2175,7 @@ keywords." We assume that we are after a file name when completing one of the args of an executive .run, .rnew or .compile." ;; CWD might have changed, resync, to set default directory - (idlwave-shell-resync-dirs) + (idlwave-shell-resync-dirs) (let ((comint-file-name-chars idlwave-shell-file-name-chars)) (comint-dynamic-complete-as-filename))) @@ -2227,7 +2216,7 @@ args of an executive .run, .rnew or .compile." (defun idlwave-shell-redisplay (&optional hide) "Tries to resync the display with where execution has stopped. -Issues a \"help,/trace\" command followed by a call to +Issues a \"help,/trace\" command followed by a call to `idlwave-shell-display-line'. Also updates the breakpoint overlays." (interactive) @@ -2240,7 +2229,7 @@ overlays." (idlwave-shell-bp-query)) (defun idlwave-shell-display-level-in-calling-stack (&optional hide) - (idlwave-shell-send-command + (idlwave-shell-send-command "help,/trace" `(progn ;; scanning for the state will reset the stack level - restore it @@ -2271,14 +2260,14 @@ overlays." (setq idlwave-shell-calling-stack-index nmin message (format "%d is the current calling stack level - can't go further down" (- nmin))))) - (setq idlwave-shell-calling-stack-routine + (setq idlwave-shell-calling-stack-routine (nth 2 (nth idlwave-shell-calling-stack-index stack))) ;; only edebug if in that mode already - (idlwave-shell-display-line + (idlwave-shell-display-line (nth idlwave-shell-calling-stack-index stack) nil - (unless idlwave-shell-electric-debug-mode 'no-debug)) - (message (or message + (unless idlwave-shell-electric-debug-mode 'no-debug)) + (message (or message (format "In routine %s (stack level %d)" idlwave-shell-calling-stack-routine (- idlwave-shell-calling-stack-index)))))) @@ -2309,7 +2298,7 @@ used. Does nothing if the resulting frame is nil." (defun idlwave-shell-pc-frame () "Returns the frame for IDL execution." (and idlwave-shell-halt-frame - (list (nth 0 idlwave-shell-halt-frame) + (list (nth 0 idlwave-shell-halt-frame) (nth 1 idlwave-shell-halt-frame) (nth 2 idlwave-shell-halt-frame)))) @@ -2327,7 +2316,7 @@ column in the line. If NO-DEBUG is non-nil, do *not* toggle the electric debug mode." (if (not frame) ;; Remove stop-line overlay from old position - (progn + (progn (setq overlay-arrow-string nil) (setq idlwave-shell-mode-line-info nil) (setq idlwave-shell-is-stopped nil) @@ -2344,10 +2333,10 @@ debug mode." ;;; ;;; buffer : the buffer to display a line in. ;;; select-shell: current buffer is the shell. -;;; +;;; (setq idlwave-shell-mode-line-info (if (nth 2 frame) - (format "[%d:%s]" + (format "[%d:%s]" (- idlwave-shell-calling-stack-index) (nth 2 frame)))) (let* ((buffer (idlwave-find-file-noselect (car frame) 'shell)) @@ -2371,7 +2360,7 @@ debug mode." (forward-line 0) (setq pos (point)) (setq idlwave-shell-is-stopped t) - + (if idlwave-shell-stop-line-overlay ;; Move overlay (move-overlay idlwave-shell-stop-line-overlay @@ -2393,12 +2382,12 @@ debug mode." ;; If we have the column of the error, move the cursor there. (if col (move-to-column col)) (setq pos (point)) - + ;; Enter electric debug mode, if not prohibited and not in ;; it already - (when (and (or + (when (and (or (eq idlwave-shell-automatic-electric-debug t) - (and + (and (eq idlwave-shell-automatic-electric-debug 'breakpoint) (not (eq idlwave-shell-current-state 'error)))) (not no-debug) @@ -2406,14 +2395,14 @@ debug mode." (not idlwave-shell-electric-debug-mode)) (idlwave-shell-electric-debug-mode) (setq electric t))) - + ;; Make sure pos is really displayed in the window. (set-window-point window pos) - - ;; If we came from the shell, go back there. Otherwise select + + ;; If we came from the shell, go back there. Otherwise select ;; the window where the error is displayed. (if (or (and idlwave-shell-electric-zap-to-file electric) - (and (equal (buffer-name) (idlwave-shell-buffer)) + (and (equal (buffer-name) (idlwave-shell-buffer)) (not select-shell))) (select-window window)))))) @@ -2423,23 +2412,24 @@ debug mode." (interactive "p") (or (not arg) (< arg 1) (setq arg 1)) - (idlwave-shell-send-command + (idlwave-shell-send-command (concat ".s " (if (integerp arg) (int-to-string arg) arg)) nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t)) (defun idlwave-shell-stepover (arg) "Stepover one source line. -If given prefix argument ARG, step ARG source lines. +If given prefix argument ARG, step ARG source lines. Uses IDL's stepover executive command which does not enter called functions." (interactive "p") (or (not arg) (< arg 1) (setq arg 1)) - (idlwave-shell-send-command + (idlwave-shell-send-command (concat ".so " (if (integerp arg) (int-to-string arg) arg)) nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t)) -(defun idlwave-shell-break-here (&optional count cmd condition no-show) - "Set breakpoint at current line. +(defun idlwave-shell-break-here (&optional count cmd condition disabled + no-show) + "Set breakpoint at current line. If Count is nil then an ordinary breakpoint is set. We treat a count of 1 as a temporary breakpoint using the ONCE keyword. Counts greater @@ -2447,17 +2437,17 @@ than 1 use the IDL AFTER=count keyword to break only after reaching the statement count times. Optional argument CMD is a list or function to evaluate upon reaching -the breakpoint." - +the breakpoint. CONDITION is a break condition, and DISABLED, if +non-nil disables the breakpoint" (interactive "P") (when (listp count) - (if (equal (car count) 4) + (if (equal (car count) 4) (setq condition (read-string "Break Condition: "))) (setq count nil)) (idlwave-shell-set-bp ;; Create breakpoint (idlwave-shell-bp (idlwave-shell-current-frame) - (list count cmd condition nil) + (list count cmd condition disabled) (idlwave-shell-current-module)) no-show)) @@ -2467,14 +2457,14 @@ This is run on `idlwave-shell-post-command-hook'. Offers to recompile the procedure if we failed. This usually fixes the problem with not being able to set the breakpoint." ;; Scan for message - (if (and idlwave-shell-command-output - (string-match "% BREAKPOINT: *Unable to find code" - idlwave-shell-command-output)) - ;; Offer to recompile - (progn + (if idlwave-shell-command-output + (cond + ((string-match "% BREAKPOINT: *Unable to find code" + idlwave-shell-command-output) + ;; Offer to recompile (if (progn (beep) - (y-or-n-p + (y-or-n-p (concat "Okay to recompile file " (idlwave-shell-bp-get bp 'file) " "))) ;; Recompile @@ -2482,17 +2472,21 @@ the problem with not being able to set the breakpoint." ;; Clean up before retrying (idlwave-shell-command-failure) (idlwave-shell-send-command - (concat ".run " (idlwave-shell-bp-get bp 'file)) nil + (concat ".run " (idlwave-shell-bp-get bp 'file)) nil (if (idlwave-shell-hide-p 'run) 'mostly) nil t) ;; Try setting breakpoint again (idlwave-shell-set-bp bp)) (beep) (message "Unable to set breakpoint.") - (idlwave-shell-command-failure) - ) - ;; return non-nil if no error found - nil) - 'okay)) + (idlwave-shell-command-failure)) + nil) + + ((string-match "% Syntax error" idlwave-shell-command-output) + (message "Syntax error in condition.") + (idlwave-shell-command-failure) + nil) + + (t 'okay)))) (defun idlwave-shell-command-failure () "Do any necessary clean up when an IDL command fails. @@ -2506,9 +2500,9 @@ breakpoint can not be set." (defun idlwave-shell-cont (&optional no-show) "Continue executing." (interactive) - (idlwave-shell-send-command ".c" (unless no-show + (idlwave-shell-send-command ".c" (unless no-show '(idlwave-shell-redisplay 'hide)) - (if (idlwave-shell-hide-p 'debug) 'mostly) + (if (idlwave-shell-hide-p 'debug) 'mostly) nil t)) (defun idlwave-shell-go () @@ -2589,7 +2583,7 @@ at a breakpoint." ((eq force 'enable) (setq disabled t))) (when bp (setf (nth 3 (cdr (cdr bp))) (not disabled)) - (idlwave-shell-send-command + (idlwave-shell-send-command (concat "breakpoint," (if disabled "/enable," "/disable,") (int-to-string (idlwave-shell-bp-get bp))) @@ -2603,18 +2597,18 @@ If ENABLE is non-nil, enable them instead." (while bpl (setq disabled (idlwave-shell-bp-get (car bpl) 'disabled)) (when (idlwave-xor (not disabled) (eq enable 'enable)) - (idlwave-shell-toggle-enable-current-bp + (idlwave-shell-toggle-enable-current-bp (car bpl) (if (eq enable 'enable) 'enable 'disable) no-update) (push (car bpl) modified)) (setq bpl (cdr bpl))) (unless no-update (idlwave-shell-bp-query)) modified)) - + (defun idlwave-shell-to-here () "Set a breakpoint with count 1 then continue." (interactive) (let ((disabled (idlwave-shell-enable-all-bp 'disable 'no-update))) - (idlwave-shell-break-here 1 nil nil 'no-show) + (idlwave-shell-break-here 1 nil nil nil 'no-show) (idlwave-shell-cont 'no-show) (idlwave-shell-enable-all-bp 'enable 'no-update disabled)) (idlwave-shell-redisplay)) ; sync up everything at the end @@ -2631,23 +2625,19 @@ The command looks for an identifier near point and sets a breakpoint for the first line of the corresponding module. If MODULE is `t', set in the current routine." (interactive) - (let (module) - (save-excursion - (skip-chars-backward "a-zA-Z0-9_$") - (if (looking-at idlwave-identifier) - (setq module (match-string 0)) - (error "No identifier at point"))) - (idlwave-shell-send-command - idlwave-shell-sources-query - `(progn - (idlwave-shell-sources-filter) - (idlwave-shell-set-bp-in-module ,module)) - 'hide))) + (let ((module (idlwave-fix-module-if-obj_new (idlwave-what-module)))) + (if module + (progn + (setq module (idlwave-make-full-name (nth 2 module) (car module))) + (idlwave-shell-module-source-query module) + (idlwave-shell-set-bp-in-module module)) + (error "No identifier at point")))) + (defun idlwave-shell-set-bp-in-module (module) "Set breakpoint in module. Assumes that `idlwave-shell-sources-alist' contains an entry for that module." - (let ((source-file (car-safe + (let ((source-file (car-safe (cdr-safe (assoc (upcase module) idlwave-shell-sources-alist)))) @@ -2666,7 +2656,7 @@ contains an entry for that module." (save-excursion (goto-char (point-min)) (let ((case-fold-search t)) - (if (re-search-forward + (if (re-search-forward (concat "^[ \t]*\\(pro\\|function\\)[ \t]+" (downcase module) "[ \t\n,]") nil t) @@ -2708,7 +2698,7 @@ Sets a breakpoint with count 1 at end of block, then continues." "Attempt to run until this procedure exits. Runs to the last statement and then steps 1 statement. Use the .out command." (interactive) - (idlwave-shell-send-command ".o" nil + (idlwave-shell-send-command ".o" nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t)) @@ -2755,7 +2745,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command." (interactive "e") (let ((transient-mark-mode t) (zmacs-regions t) - (tracker (if (featurep 'xemacs) + (tracker (if (featurep 'xemacs) (if (fboundp 'default-mouse-track-event-is-with-button) 'idlwave-xemacs-hack-mouse-track 'mouse-track) @@ -2773,7 +2763,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command." (let ((oldfunc (symbol-function 'default-mouse-track-event-is-with-button))) (unwind-protect (progn - (fset 'default-mouse-track-event-is-with-button + (fset 'default-mouse-track-event-is-with-button 'idlwave-default-mouse-track-event-is-with-button) (mouse-track event)) (fset 'default-mouse-track-event-is-with-button oldfunc)))) @@ -2805,7 +2795,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command." (defvar idlwave-shell-examine-completion-list nil) (defun idlwave-shell-print (arg &optional help ev complete-help-type) - "Print current expression. + "Print current expression. With HELP non-nil, show help on expression. If HELP is a string, the expression will be put in place of ___, e.g.: @@ -2838,11 +2828,11 @@ idlw-shell-examine-alist via mini-buffer shortcut key." (save-excursion (let* ((process (get-buffer-process (current-buffer))) (process-mark (if process (process-mark process))) - (stack-label + (stack-label (if (and (integerp idlwave-shell-calling-stack-index) (> idlwave-shell-calling-stack-index 0)) - (format " [-%d:%s]" - idlwave-shell-calling-stack-index + (format " [-%d:%s]" + idlwave-shell-calling-stack-index idlwave-shell-calling-stack-routine))) expr beg end cmd examine-hook) (cond @@ -2872,7 +2862,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key." ;; an array (forward-sexp)) (setq end (point))))) - + ;; Get expression, but first move the begin mark if a ;; process-mark is inside the region, to keep the overlay from ;; wandering in the Shell. @@ -2883,61 +2873,61 @@ idlw-shell-examine-alist via mini-buffer shortcut key." ;; Show the overlay(s) and attach any necessary hooks and filters (when (and beg end idlwave-shell-expression-overlay) - (move-overlay idlwave-shell-expression-overlay beg end + (move-overlay idlwave-shell-expression-overlay beg end (current-buffer)) - (add-hook 'pre-command-hook + (add-hook 'pre-command-hook 'idlwave-shell-delete-expression-overlay)) - (setq examine-hook + (setq examine-hook (if idlwave-shell-separate-examine-output 'idlwave-shell-examine-display 'idlwave-shell-examine-highlight)) (add-hook 'pre-command-hook 'idlwave-shell-delete-output-overlay) - + ;; Remove empty or comment-only lines (while (string-match "\n[ \t]*\\(;.*\\)?\r*\n" expr) (setq expr (replace-match "\n" t t expr))) ;; Concatenate continuation lines - (while (string-match "[ \t]*\\$.*\\(;.*\\)?\\(\n[ \t]*\\|$\\)" expr) + (while (string-match "[ \t]*\\$[ \t]*\\(;.*\\)?\\(\n[ \t]*\\|$\\)" expr) (setq expr (replace-match "" t t expr))) ;; Remove final newline (if (string-match "\n[ \t\r]*\\'" expr) (setq expr (replace-match "" t t expr))) - + (catch 'exit ;; Pop-up or complete on the examine selection list, if appropriate (if (or complete-help-type (and ev idlwave-shell-examine-alist) (consp help)) - (let ((help-cons + (let ((help-cons (if (consp help) help - (assoc + (assoc ;; A cons from either a pop-up or mini-buffer completion (if complete-help-type (idlwave-one-key-select 'idlwave-shell-examine-alist "Examine with: " 1.5) ;; (idlwave-completing-read -;; "Examine with: " +;; "Examine with: " ;; idlwave-shell-examine-alist nil nil nil ;; 'idlwave-shell-examine-completion-list ;; "Print") - (idlwave-popup-select - ev - (mapcar 'car idlwave-shell-examine-alist) + (idlwave-popup-select + ev + (mapcar 'car idlwave-shell-examine-alist) "Examine with")) idlwave-shell-examine-alist)))) (setq help (cdr help-cons)) (if (null help) (throw 'exit nil)) (if idlwave-shell-separate-examine-output - (setq idlwave-shell-examine-label - (concat + (setq idlwave-shell-examine-label + (concat (format "==>%s<==\n%s:" expr (car help-cons)) stack-label "\n")))) ;; The regular help label (no popups, cons cells, etc.) (setq idlwave-shell-examine-label (concat - (format "==>%s<==\n%s:" expr + (format "==>%s<==\n%s:" expr (cond ((null help) "print") ((stringp help) help) (t (symbol-name help)))) @@ -2950,9 +2940,9 @@ idlw-shell-examine-alist via mini-buffer shortcut key." idlwave-shell-calling-stack-index))) (setq cmd (idlwave-shell-help-statement help expr)) ;;(idlwave-shell-recenter-shell-window) - (idlwave-shell-send-command - cmd - examine-hook + (idlwave-shell-send-command + cmd + examine-hook (if idlwave-shell-separate-examine-output 'hide)))))) (defvar idlwave-shell-examine-window-alist nil @@ -2979,9 +2969,9 @@ idlw-shell-examine-alist via mini-buffer shortcut key." (let* ((end (or (re-search-backward idlwave-shell-prompt-pattern nil t) (point-max))) - (beg (progn + (beg (progn (goto-char - (or (progn (if (re-search-backward + (or (progn (if (re-search-backward idlwave-shell-prompt-pattern nil t) (match-end 0))) (point-min))) @@ -2998,21 +2988,21 @@ idlw-shell-examine-alist via mini-buffer shortcut key." (setq buffer-read-only t) (move-overlay idlwave-shell-output-overlay cur-beg cur-end (current-buffer)) - + ;; Look for the examine buffer in all windows. If one is ;; found in a frame all by itself, use that, otherwise, switch ;; to or create an examine window in this frame, and resize if ;; it's a newly created window (let* ((winlist (get-buffer-window-list "*Examine*" nil 'visible))) - (setq win (idlwave-display-buffer - "*Examine*" + (setq win (idlwave-display-buffer + "*Examine*" nil (let ((list winlist) thiswin) (catch 'exit (save-selected-window (while (setq thiswin (pop list)) (select-window thiswin) - (if (one-window-p) + (if (one-window-p) (throw 'exit (window-frame thiswin))))))))) (set-window-start win (point-min)) ; Ensure the point is visible. (save-selected-window @@ -3033,7 +3023,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key." ;; And add the new value. (if (setq elt (assoc win idlwave-shell-examine-window-alist)) (setcdr elt (window-height)) - (add-to-list 'idlwave-shell-examine-window-alist + (add-to-list 'idlwave-shell-examine-window-alist (cons win (window-height))))))))) ;; Recenter for maximum output, after widened (save-selected-window @@ -3051,7 +3041,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key." (defun idlwave-shell-examine-display-clear () (interactive) - (save-excursion + (save-excursion (let ((buf (get-buffer "*Examine*"))) (when (bufferp buf) (set-buffer buf) @@ -3072,36 +3062,58 @@ routine_names, there is no guarantee that this will work with future versions of IDL." (let ((fetch (- 0 level)) (start 0) - var rnvar pre post) + var fetch-start fetch-end pre post) ;; FIXME: In the following we try to find the variables in expression ;; This is quite empirical - I don't know in what situations this will ;; break. We will look for identifiers and exclude cases where we ;; know it is not a variable. To distinguish array references from ;; function calls, we require that arrays use [] instead of () - + (while (string-match "\\(\\`\\|[^a-zA-Z0-9$_][ \t]*\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)\\([ \t]*[^a-zA-Z0-9$_]\\|\\'\\)" expr start) (setq var (match-string 2 expr) - start (match-beginning 2) + start (match-end 2) pre (substring expr 0 (match-beginning 2)) post (substring expr (match-end 2))) - (cond - ;; Exclude identifiers which are not variables - ((string-match ",[ \t]*/\\'" pre)) ;; a `/' KEYWORD - ((and (string-match "[,(][ \t]*\\'" pre) - (string-match "\\`[ \t]*=" post))) ;; a `=' KEYWORD - ((string-match "\\`(" post)) ;; a function - ((string-match "->[ \t]*\\'" pre)) ;; a method - ((string-match "\\.\\'" pre)) ;; structure member + (cond + ((or + ;; Exclude identifiers which are not variables + (string-match ",[ \t$\n]*/\\'" pre) ;; a `/' KEYWORD + (and (string-match "[,(][ \t\n]*\\'" pre) + (string-match "\\`[ \t]*=" post)) ;; a `=' KEYWORD + (string-match "\\`(" post) ;; a function + (string-match "->[ \t]*\\'" pre) ;; a method + (string-match "\\.\\'" pre))) ;; structure member + + ;; Skip over strings ((and (string-match "\\([\"\']\\)[^\1]*$" pre) - (string-match (concat "^[^" (match-string 1 pre) "]*" - (match-string 1 pre)) post))) - (t ;; seems to be a variable - replace its name in the - ;; expression with the fetch. - (setq rnvar (format "(routine_names('%s',fetch=%d))" var fetch) - expr (concat pre rnvar post) - start (+ start (length rnvar)))))) + (string-match (concat "^[^" (match-string 1 pre) "]*" + (match-string 1 pre)) post)) + (setq start (+ start (match-end 0)))) + + + ;; seems to be a variable - delimit its name + (t + (put-text-property start (- start (length var)) 'fetch t expr)))) + + (setq start 0) + (while (setq fetch-start + (next-single-property-change start 'fetch expr)) + (if (get-text-property start 'fetch expr) ; it's on in range + (setq fetch-end fetch-start ;it's off in range + fetch-start start) + (setq fetch-end (next-single-property-change fetch-start 'fetch expr))) + (unless fetch-end (setq fetch-end (length expr))) + (remove-text-properties fetch-start fetch-end '(fetch) expr) + (setq expr (concat (substring expr 0 fetch-start) + (format "(routine_names('%s',fetch=%d))" + (substring expr fetch-start fetch-end) + fetch) + (substring expr fetch-end))) + (setq start fetch-end)) + (if (get-text-property 0 'fetch expr) ; Full expression, left over + (setq expr (format "(routine_names('%s',fetch=%d))" expr fetch))) expr)) @@ -3113,13 +3125,13 @@ to insert expression in place of the marker ___, e.g.: print, size(___,/DIMENSIONS)" (cond ((null help) (concat "print, " expr)) - ((stringp help) + ((stringp help) (if (string-match "\\(^\\|[^_]\\)\\(___\\)\\([^_]\\|$\\)" help) (concat (substring help 0 (match-beginning 2)) expr (substring help (match-end 2))))) (t (concat "help, " expr)))) - + (defun idlwave-shell-examine-highlight () "Highlight the most recent IDL output." @@ -3127,7 +3139,7 @@ size(___,/DIMENSIONS)" (process (get-buffer-process buffer)) (process-mark (if process (process-mark process))) output-begin output-end) - (save-excursion + (save-excursion (set-buffer buffer) (goto-char process-mark) (beginning-of-line) @@ -3135,12 +3147,12 @@ size(___,/DIMENSIONS)" (re-search-backward idlwave-shell-prompt-pattern nil t) (beginning-of-line 2) (setq output-begin (point))) - + ;; First make sure the shell window is visible (idlwave-display-buffer (idlwave-shell-buffer) nil (idlwave-shell-shell-frame)) (if (and idlwave-shell-output-overlay process-mark) - (move-overlay idlwave-shell-output-overlay + (move-overlay idlwave-shell-output-overlay output-begin output-end buffer)))) (defun idlwave-shell-delete-output-overlay () @@ -3151,7 +3163,7 @@ size(___,/DIMENSIONS)" (delete-overlay idlwave-shell-output-overlay)) (error nil)) (remove-hook 'pre-command-hook 'idlwave-shell-delete-output-overlay))) - + (defun idlwave-shell-delete-expression-overlay () (unless (or (eq this-command 'idlwave-shell-mouse-nop) (eq this-command 'handle-switch-frame)) @@ -3180,7 +3192,7 @@ contains four items: count - number of times to execute breakpoint. When count reaches 0 the breakpoint is cleared and removed from the alist. -command - command to execute when breakpoint is reached, either a +command - command to execute when breakpoint is reached, either a lisp function to be called with `funcall' with no arguments or a list to be evaluated with `eval'. @@ -3213,11 +3225,11 @@ If there is a prefix argument, display IDL process." (insert "\nend\n")) (save-buffer 0))) (idlwave-shell-send-command (concat ".run " idlwave-shell-temp-pro-file) - nil + nil (if (idlwave-shell-hide-p 'run) 'mostly) nil t) (if n - (idlwave-display-buffer (idlwave-shell-buffer) + (idlwave-display-buffer (idlwave-shell-buffer) nil (idlwave-shell-shell-frame)))) (defun idlwave-shell-evaluate-region (beg end &optional n) @@ -3228,7 +3240,7 @@ Does not work for a region with multiline blocks - use (interactive "r\nP") (idlwave-shell-send-command (buffer-substring beg end)) (if n - (idlwave-display-buffer (idlwave-shell-buffer) + (idlwave-display-buffer (idlwave-shell-buffer) nil (idlwave-shell-shell-frame)))) (defun idlwave-shell-delete-temp-files () @@ -3283,7 +3295,7 @@ Queries IDL using the string in `idlwave-shell-bp-query'." 'hide)) (defun idlwave-shell-bp-get (bp &optional item) - "Get a value for a breakpoint. + "Get a value for a breakpoint. BP has the form of elements in idlwave-shell-bp-alist. Optional second arg ITEM is the particular value to retrieve. ITEM can be 'file, 'line, 'index, 'module, 'count, 'cmd, 'condition, 'disabled or @@ -3318,8 +3330,8 @@ breakpoint overlays." ;; Searching the breakpoints ;; In IDL 5.5, the breakpoint reporting format changed. (bp-re54 "^[ \t]*\\([0-9]+\\)[ \t]+\\(\\S-+\\)?[ \t]+\\([0-9]+\\)[ \t]+\\(\\S-+\\)") - (bp-re55 - (concat + (bp-re55 + (concat "^\\s-*\\([0-9]+\\)" ; 1 index "\\s-+\\([0-9]+\\)" ; 2 line number "\\s-+\\(Uncompiled\\|" ; 3-6 either uncompiled or routine name @@ -3334,11 +3346,11 @@ breakpoint overlays." bp-re indmap) (setq idlwave-shell-bp-alist (list nil)) ;; Search for either header type, and set the correct regexp - (when (or + (when (or (if (re-search-forward "^\\s-*Index.*\n\\s-*-" nil t) - (setq bp-re bp-re54 ; versions <= 5.4 + (setq bp-re bp-re54 ; versions <= 5.4 indmap '(1 2 3 4))) ;index module line file - (if (re-search-forward + (if (re-search-forward "^\\s-*Index\\s-*Line\\s-*Attributes\\s-*File" nil t) (setq bp-re bp-re55 ; versions >= 5.5 indmap '(1 6 2 16)))) ; index module line file @@ -3349,12 +3361,12 @@ breakpoint overlays." line (string-to-number (match-string (nth 2 indmap))) file (idlwave-shell-file-name (match-string (nth 3 indmap)))) (if (eq bp-re bp-re55) - (setq count (if (match-string 10) 1 + (setq count (if (match-string 10) 1 (if (match-string 8) (string-to-number (match-string 8)))) condition (match-string 13) disabled (not (null (match-string 15))))) - + ;; Add the breakpoint info to the list (nconc idlwave-shell-bp-alist (list (cons (list file line) @@ -3364,7 +3376,7 @@ breakpoint overlays." count nil condition disabled)))))) (setq idlwave-shell-bp-alist (cdr idlwave-shell-bp-alist)) ;; Update breakpoint data - (if (eq bp-re bp-re54) + (if (eq bp-re bp-re54) (mapcar 'idlwave-shell-update-bp old-bp-alist) (mapcar 'idlwave-shell-update-bp-command-only old-bp-alist)))) ;; Update the breakpoint overlays @@ -3379,8 +3391,8 @@ breakpoint overlays." "Update BP data in breakpoint list. If BP frame is in `idlwave-shell-bp-alist' updates the breakpoint data." (let ((match (assoc (car bp) idlwave-shell-bp-alist))) - (if match - (if command-only + (if match + (if command-only (setf (nth 1 (cdr (cdr match))) (nth 1 (cdr (cdr match)))) (setcdr (cdr match) (cdr (cdr bp))))))) @@ -3405,42 +3417,31 @@ Otherwise return the filename in bp." (let* ((bp-file (idlwave-shell-bp-get bp 'file)) (bp-module (idlwave-shell-bp-get bp 'module)) - (internal-file-list - (cdr (assoc bp-module idlwave-shell-sources-alist)))) + (internal-file-list + (if bp-module + (cdr (assoc bp-module idlwave-shell-sources-alist))))) (if (and internal-file-list (equal bp-file (nth 0 internal-file-list))) (nth 1 internal-file-list) bp-file))) (defun idlwave-shell-set-bp (bp &optional no-show) - "Try to set a breakpoint BP. + "Try to set a breakpoint BP. The breakpoint will be placed at the beginning of the statement on the line specified by BP or at the next IDL statement if that line is not a statement. Determines IDL's internal representation for the breakpoint, which may have occurred at a different line than specified. If NO-SHOW is non-nil, don't do any updating." ;; Get and save the old breakpoints - (idlwave-shell-send-command + (idlwave-shell-send-command idlwave-shell-bp-query `(progn (idlwave-shell-filter-bp (quote ,no-show)) (setq idlwave-shell-old-bp idlwave-shell-bp-alist)) 'hide) - ;; Get sources for IDL compiled procedures followed by setting - ;; breakpoint. - (idlwave-shell-send-command - idlwave-shell-sources-query - `(progn - (idlwave-shell-sources-filter) - (idlwave-shell-set-bp2 (quote ,bp) (quote ,no-show))) - 'hide)) -(defun idlwave-shell-set-bp2 (bp &optional no-show) - "Use results of breakpoint and sources query to set bp. -Use the count argument with IDLs breakpoint command. -We treat a count of 1 as a temporary breakpoint. -Counts greater than 1 use the IDL AFTER=count keyword to break -only after reaching the statement count times." + ;; Get sources for this routine in the sources list + (idlwave-shell-module-source-query (idlwave-shell-bp-get bp 'module)) (let* ((arg (idlwave-shell-bp-get bp 'count)) (key (cond @@ -3450,32 +3451,35 @@ only after reaching the statement count times." ((> arg 1) (format ",after=%d" arg)))) (condition (idlwave-shell-bp-get bp 'condition)) - (key (concat key + (disabled (idlwave-shell-bp-get bp 'disabled)) + (key (concat key (if condition (concat ",CONDITION=\"" condition "\"")))) + (key (concat key (if disabled ",/DISABLE"))) (line (idlwave-shell-bp-get bp 'line))) (idlwave-shell-send-command - (concat "breakpoint,'" + (concat "breakpoint,'" (idlwave-shell-sources-bp bp) "'," (if (integerp line) (setq line (int-to-string line))) key) - ;; Check for failure and look for breakpoint in IDL's list + ;; Check for failure and adjust breakpoint to match IDL's list `(progn (if (idlwave-shell-set-bp-check (quote ,bp)) - (idlwave-shell-set-bp3 (quote ,bp) (quote ,no-show)))) + (idlwave-shell-set-bp-adjust (quote ,bp) (quote ,no-show)))) ;; hide output? (idlwave-shell-hide-p 'breakpoint) 'preempt t))) -(defun idlwave-shell-set-bp3 (bp &optional no-show) +(defun idlwave-shell-set-bp-adjust (bp &optional no-show) "Find the breakpoint in IDL's internal list of breakpoints." - (idlwave-shell-send-command idlwave-shell-bp-query - `(progn - (idlwave-shell-filter-bp (quote ,no-show)) - (idlwave-shell-new-bp (quote ,bp)) - (unless (quote ,no-show) - (idlwave-shell-update-bp-overlays))) - 'hide - 'preempt)) + (idlwave-shell-send-command + idlwave-shell-bp-query + `(progn + (idlwave-shell-filter-bp 'no-show) + (idlwave-shell-new-bp (quote ,bp)) + (unless (quote ,no-show) + (idlwave-shell-update-bp-overlays))) + 'hide + 'preempt)) (defun idlwave-shell-find-bp (frame) "Return breakpoint from `idlwave-shell-bp-alist' for frame. @@ -3526,10 +3530,14 @@ considered the new breakpoint if the file name of frame matches." "Alist of overlays marking breakpoints") (defvar idlwave-shell-bp-glyph) +(defvar idlwave-shell-debug-line-map (make-sparse-keymap)) +(define-key idlwave-shell-debug-line-map + (if (featurep 'xemacs) [button3] [mouse-3]) + 'idlwave-shell-mouse-active-bp) + (defun idlwave-shell-update-bp-overlays () "Update the overlays which mark breakpoints in the source code. Existing overlays are recycled, in order to minimize consumption." - ;(message "Updating Overlays") (when idlwave-shell-mark-breakpoints (let ((ov-alist (copy-alist idlwave-shell-bp-overlays)) (bp-list idlwave-shell-bp-alist) @@ -3538,14 +3546,14 @@ Existing overlays are recycled, in order to minimize consumption." ov ov-list bp buf old-buffers win) ;; Delete the old overlays from their buffers - (if ov-alist + (if ov-alist (while (setq ov-list (pop ov-alist)) (while (setq ov (pop (cdr ov-list))) (add-to-list 'old-buffers (overlay-buffer ov)) (delete-overlay ov)))) - + (setq ov-alist idlwave-shell-bp-overlays - idlwave-shell-bp-overlays + idlwave-shell-bp-overlays (if idlwave-shell-bp-glyph (mapcar 'list (mapcar 'car idlwave-shell-bp-glyph)) (list (list 'bp)))) @@ -3569,16 +3577,23 @@ Existing overlays are recycled, in order to minimize consumption." (t 'bp-n))) (t 'bp)) 'bp)) - (help-list + (help-list (delq nil (list (if count - (concat "n=" (int-to-string count))) + (concat "after:" (int-to-string count))) (if condition - (concat "condition: " condition)) + (concat "condition:" condition)) (if disabled "disabled")))) - (help-text (if help-list - (mapconcat 'identity help-list ","))) + (help-text (concat + "BP " + (int-to-string (idlwave-shell-bp-get bp)) + (if help-list + (concat + " - " + (mapconcat 'identity help-list ", "))) + (if (and (not count) (not condition)) + " (use mouse-3 for breakpoint actions)"))) (full-type (if disabled (intern (concat (symbol-name type) "-disabled")) @@ -3586,9 +3601,10 @@ Existing overlays are recycled, in order to minimize consumption." (ov-existing (assq full-type ov-alist)) (ov (or (and (cdr ov-existing) (pop (cdr ov-existing))) - (idlwave-shell-make-new-bp-overlay - type disabled help-text))) + (idlwave-shell-make-new-bp-overlay type disabled))) match) + (if idlwave-shell-breakpoint-popup-menu + (overlay-put ov 'help-echo help-text)) (move-overlay ov beg end) (if (setq match (assq full-type idlwave-shell-bp-overlays)) (push ov (cdr match)) @@ -3596,7 +3612,7 @@ Existing overlays are recycled, in order to minimize consumption." (list (list full-type ov))))) ;; Take care of margins if using a glyph (when use-glyph - (if old-buffers + (if old-buffers (setq old-buffers (delq (current-buffer) old-buffers))) (if (fboundp 'set-specifier) ;; XEmacs (set-specifier left-margin-width (cons (current-buffer) 2)) @@ -3612,29 +3628,31 @@ Existing overlays are recycled, in order to minimize consumption." (if (setq win (get-buffer-window buf t)) (set-window-buffer win buf)))))))) - -(defun idlwave-shell-make-new-bp-overlay (&optional type disabled help) - "Make a new overlay for highlighting breakpoints. +(defun idlwave-shell-make-new-bp-overlay (&optional type disabled) + "Make a new overlay for highlighting breakpoints. This stuff is strongly dependant upon the version of Emacs. If TYPE is passed, make an overlay of that type ('bp or 'bp-cond, currently -only for glyphs). If HELP is set, use it to make a tooltip with that -text popup." +only for glyphs)." (let ((ov (make-overlay 1 1)) (use-glyph (and (memq idlwave-shell-mark-breakpoints '(t glyph)) idlwave-shell-bp-glyph)) (type (or type 'bp)) - (face (if disabled + (face (if disabled idlwave-shell-disabled-breakpoint-face idlwave-shell-breakpoint-face))) (if (featurep 'xemacs) ;; This is XEmacs (progn - (cond + (when idlwave-shell-breakpoint-popup-menu + (set-extent-property ov 'mouse-face 'highlight) + (set-extent-property ov 'keymap idlwave-shell-debug-line-map)) + + (cond ;; tty's cannot display glyphs ((eq (console-type) 'tty) (set-extent-property ov 'face face)) - + ;; use the glyph (use-glyph (let ((glyph (cdr (assq type idlwave-shell-bp-glyph)))) @@ -3650,22 +3668,23 @@ text popup." (t nil)) (set-extent-priority ov -1)) ; make stop line face prevail ;; This is Emacs + (when idlwave-shell-breakpoint-popup-menu + (overlay-put ov 'mouse-face 'highlight) + (overlay-put ov 'keymap idlwave-shell-debug-line-map)) (cond (window-system (if use-glyph (let ((image-props (cdr (assq type idlwave-shell-bp-glyph))) string) - + (if disabled (setq image-props - (append image-props + (append image-props (list :conversion 'disabled)))) - (setq string - (propertize "@" - 'display + (setq string + (propertize "@" + 'display (list (list 'margin 'left-margin) - image-props) - 'mouse-face 'highlight - 'help-echo help)) + image-props))) (overlay-put ov 'before-string string)) ;; just the face (overlay-put ov 'face face))) @@ -3678,6 +3697,54 @@ text popup." (t nil))) ov)) +(defun idlwave-shell-mouse-active-bp (ev) + "Does right-click mouse action on breakpoint lines." + (interactive "e") + (if ev (mouse-set-point ev)) + (let ((bp (idlwave-shell-find-bp (idlwave-shell-current-frame))) + index condition count select cmd disabled) + (unless bp + (error "Breakpoint not found")) + (setq index (int-to-string (idlwave-shell-bp-get bp)) + condition (idlwave-shell-bp-get bp 'condition) + cmd (idlwave-shell-bp-get bp 'cmd) + count (idlwave-shell-bp-get bp 'count) + disabled (idlwave-shell-bp-get bp 'disabled)) + (setq select (idlwave-popup-select + ev + (delq nil + (list (if disabled "Enable" "Disable") + "Clear" + "Clear All" + (if condition "Remove Condition" "Add Condition") + (if condition "Change Condition") + (if count "Remove Repeat Count" + "Add Repeat Count") + (if count "Change Repeat Count"))) + (concat "BreakPoint " index))) + (if select + (cond + ((string-equal select "Clear All") + (idlwave-shell-clear-all-bp)) + ((string-equal select "Clear") + (idlwave-shell-clear-current-bp)) + ((string-match "Condition" select) + (idlwave-shell-break-here count cmd + (if (or (not condition) + (string-match "Change" select)) + (read-string "Break Condition: ")) + disabled)) + ((string-match "Count" select) + (idlwave-shell-break-here (if (or (not count) + (string-match "Change" select)) + (string-to-number + (read-string "Break After Count: "))) + cmd condition disabled)) + ((string-match "able$" select) + (idlwave-shell-toggle-enable-current-bp)) + (t + (message "Unimplemented: %s" select)))))) + (defun idlwave-shell-edit-default-command-line (arg) "Edit the current execute command." (interactive "P") @@ -3689,14 +3756,14 @@ text popup." Also with prefix arg, ask for the command. You can also use the command `idlwave-shell-edit-default-command-line' to edit the line." (interactive "P") - (cond + (cond ((equal arg '(16)) (setq idlwave-shell-command-line-to-execute nil)) ((equal arg '(4)) - (setq idlwave-shell-command-line-to-execute + (setq idlwave-shell-command-line-to-execute (read-string "IDL> " idlwave-shell-command-line-to-execute)))) (idlwave-shell-reset 'hidden) - (idlwave-shell-send-command + (idlwave-shell-send-command (or idlwave-shell-command-line-to-execute (with-current-buffer (idlwave-shell-buffer) (ring-ref comint-input-ring 0))) @@ -3706,7 +3773,7 @@ Also with prefix arg, ask for the command. You can also use the command "Save file and run it in IDL. Runs `save-buffer' and sends a '.RUN' command for the associated file to IDL. When called from the shell buffer, re-run the file which was last handled by -one of the save-and-.. commands." +one of the save-and-.. commands." (interactive) (idlwave-shell-save-and-action 'run)) @@ -3722,7 +3789,7 @@ one of the save-and-.. commands." "Save file and batch it in IDL. Runs `save-buffer' and sends a '@file' command for the associated file to IDL. When called from the shell buffer, re-batch the file which was last handled by -one of the save-and-.. commands." +one of the save-and-.. commands." (interactive) (idlwave-shell-save-and-action 'batch)) @@ -3762,7 +3829,7 @@ handled by this command." 'idlwave-shell-maybe-update-routine-info (if (idlwave-shell-hide-p 'run) 'mostly) nil t) (idlwave-shell-bp-query)) - (let ((msg (format "No such file %s" + (let ((msg (format "No such file %s" idlwave-shell-last-save-and-action-file))) (setq idlwave-shell-last-save-and-action-file nil) (error msg)))) @@ -3785,17 +3852,42 @@ Elements of the alist have the form: (module name . (source-file-truename idlwave-internal-filename)).") +(defun idlwave-shell-module-source-query (module) + "Determine the source file for a given module." + (if module + (idlwave-shell-send-command + (format "print,(routine_info('%s',/SOURCE)).PATH" module) + `(idlwave-shell-module-source-filter ,module) + 'hide))) + +(defun idlwave-shell-module-source-filter (module) + "Get module source, and update idlwave-shell-sources-alist." + (let ((old (assoc (upcase module) idlwave-shell-sources-alist)) + filename) + (if (string-match "\.PATH *[\n\r]\\([^\r\n]+\\)[\n\r]" + idlwave-shell-command-output) + (setq filename (substring idlwave-shell-command-output + (match-beginning 1) (match-end 1))) + (error "No file matching module found.")) + (if old + (setcdr old (list (idlwave-shell-file-name filename) filename)) + (setq idlwave-shell-sources-alist + (append idlwave-shell-sources-alist + (list (cons (upcase module) + (list (idlwave-shell-file-name filename) + filename)))))))) + (defun idlwave-shell-sources-query () - "Determine source files for IDL compiled procedures. + "Determine source files for all IDL compiled procedures. Queries IDL using the string in `idlwave-shell-sources-query'." -' (interactive) + (interactive) (idlwave-shell-send-command idlwave-shell-sources-query 'idlwave-shell-sources-filter 'hide)) (defun idlwave-shell-sources-filter () "Get source files from `idlwave-shell-sources-query' output. -Create `idlwave-shell-sources-alist' consisting of +Create `idlwave-shell-sources-alist' consisting of list elements of the form: (module name . (source-file-truename idlwave-internal-filename))." (save-excursion @@ -3880,7 +3972,7 @@ list elements of the form: (list (save-match-data (idlwave-shell-file-name - (buffer-substring (match-beginning 1 ) + (buffer-substring (match-beginning 1 ) (match-end 1)))) (string-to-number (buffer-substring (match-beginning 2) @@ -3947,13 +4039,13 @@ Otherwise, just expand the file name." ;; The mouse bindings for PRINT and HELP (idlwave-shell-define-key-both - (if (featurep 'xemacs) - [(shift button2)] + (if (featurep 'xemacs) + [(shift button2)] [(shift down-mouse-2)]) 'idlwave-shell-mouse-print) (idlwave-shell-define-key-both - (if (featurep 'xemacs) - [(control meta button2)] + (if (featurep 'xemacs) + [(control meta button2)] [(control meta down-mouse-2)]) 'idlwave-shell-mouse-help) (idlwave-shell-define-key-both @@ -3962,14 +4054,14 @@ Otherwise, just expand the file name." [(control shift down-mouse-2)]) 'idlwave-shell-examine-select) ;; Add this one from the idlwave-mode-map -(define-key idlwave-shell-mode-map +(define-key idlwave-shell-mode-map (if (featurep 'xemacs) [(shift button3)] [(shift mouse-3)]) 'idlwave-mouse-context-help) ;; For Emacs, we need to turn off the button release events. -(defun idlwave-shell-mouse-nop (event) +(defun idlwave-shell-mouse-nop (event) (interactive "e")) (unless (featurep 'xemacs) (idlwave-shell-define-key-both @@ -3979,7 +4071,7 @@ Otherwise, just expand the file name." (idlwave-shell-define-key-both [(control meta mouse-2)] 'idlwave-shell-mouse-nop)) - + ;; The following set of bindings is used to bind the debugging keys. ;; If `idlwave-shell-activate-prefix-keybindings' is non-nil, the ;; first key in the list gets bound the C-c C-d prefix map. If @@ -3988,10 +4080,10 @@ Otherwise, just expand the file name." ;; `idlwave-mode-map' and `idlwave-shell-mode-map'. The next list ;; item, if non-nil, means to bind this as a single key in the ;; electric-debug-mode-map. -;; +;; ;; [C-c C-d]-binding debug-modifier-key command bind-electric-debug buf-only -;; Used keys: abcdef hijklmnopqrstuvwxyz -;; Unused keys: g +;; Used keys: abcdef hijklmnopqrstuvwxyz +;; Unused keys: g (let* ((specs '(([(control ?b)] ?b idlwave-shell-break-here t t) ([(control ?i)] ?i idlwave-shell-break-in t t) @@ -4041,10 +4133,10 @@ Otherwise, just expand the file name." electric (nth 3 s) only-buffer (nth 4 s) cannotshift (and shift (char-valid-p c2) (eq c2 (upcase c2)))) - + ;; The regular prefix keymap. (when (and idlwave-shell-activate-prefix-keybindings k1) - (unless only-buffer + (unless only-buffer (define-key idlwave-shell-mode-prefix-map k1 cmd)) (define-key idlwave-mode-prefix-map k1 cmd)) ;; The debug modifier map @@ -4058,24 +4150,24 @@ Otherwise, just expand the file name." (unless only-buffer (define-key idlwave-shell-mode-map k2 cmd)))) ;; The electric debug single-keystroke map (if (and electric (char-or-string-p c2)) - (define-key idlwave-shell-electric-debug-mode-map (char-to-string c2) + (define-key idlwave-shell-electric-debug-mode-map (char-to-string c2) cmd)))) ;; A few extras in the electric debug map (define-key idlwave-shell-electric-debug-mode-map " " 'idlwave-shell-step) (define-key idlwave-shell-electric-debug-mode-map "+" 'idlwave-shell-stack-up) (define-key idlwave-shell-electric-debug-mode-map "=" 'idlwave-shell-stack-up) -(define-key idlwave-shell-electric-debug-mode-map "-" +(define-key idlwave-shell-electric-debug-mode-map "-" 'idlwave-shell-stack-down) -(define-key idlwave-shell-electric-debug-mode-map "_" +(define-key idlwave-shell-electric-debug-mode-map "_" 'idlwave-shell-stack-down) (define-key idlwave-shell-electric-debug-mode-map "q" 'idlwave-shell-retall) -(define-key idlwave-shell-electric-debug-mode-map "t" +(define-key idlwave-shell-electric-debug-mode-map "t" '(lambda () (interactive) (idlwave-shell-send-command "help,/TRACE"))) (define-key idlwave-shell-electric-debug-mode-map [(control ??)] 'idlwave-shell-electric-debug-help) -(define-key idlwave-shell-electric-debug-mode-map "x" - '(lambda (arg) (interactive "P") +(define-key idlwave-shell-electric-debug-mode-map "x" + '(lambda (arg) (interactive "P") (idlwave-shell-print arg nil nil t))) @@ -4096,12 +4188,12 @@ Otherwise, just expand the file name." (setq idlwave-shell-suppress-electric-debug nil)) (idlwave-shell-electric-debug-mode)) -(defvar idlwave-shell-electric-debug-read-only) +(defvar idlwave-shell-electric-debug-read-only) (defvar idlwave-shell-electric-debug-buffers nil) (easy-mmode-define-minor-mode idlwave-shell-electric-debug-mode "Toggle Electric Debug mode. -With no argument, this command toggles the mode. +With no argument, this command toggles the mode. Non-null prefix argument turns on the mode. Null prefix argument turns off the mode. @@ -4111,7 +4203,7 @@ nil " *Debugging*" idlwave-shell-electric-debug-mode-map) -(add-hook +(add-hook 'idlwave-shell-electric-debug-mode-on-hook (lambda () (set (make-local-variable 'idlwave-shell-electric-debug-read-only) @@ -4119,13 +4211,13 @@ idlwave-shell-electric-debug-mode-map) (setq buffer-read-only t) (add-to-list 'idlwave-shell-electric-debug-buffers (current-buffer)) (if idlwave-shell-stop-line-overlay - (overlay-put idlwave-shell-stop-line-overlay 'face + (overlay-put idlwave-shell-stop-line-overlay 'face idlwave-shell-electric-stop-line-face)) (if (facep 'fringe) (set-face-foreground 'fringe idlwave-shell-electric-stop-color (selected-frame))))) -(add-hook +(add-hook 'idlwave-shell-electric-debug-mode-off-hook (lambda () ;; Return to previous read-only state @@ -4134,7 +4226,7 @@ idlwave-shell-electric-debug-mode-map) (setq idlwave-shell-electric-debug-buffers (delq (current-buffer) idlwave-shell-electric-debug-buffers)) (if idlwave-shell-stop-line-overlay - (overlay-put idlwave-shell-stop-line-overlay 'face + (overlay-put idlwave-shell-stop-line-overlay 'face idlwave-shell-stop-line-face) (if (facep 'fringe) (set-face-foreground 'fringe (face-foreground 'default)))))) @@ -4148,6 +4240,7 @@ idlwave-shell-electric-debug-mode-map) (force-mode-line-update)) ;; Turn it off in all relevant buffers +(defvar idlwave-shell-electric-debug-buffers nil) (defun idlwave-shell-electric-debug-all-off () (setq idlwave-shell-suppress-electric-debug nil) (let ((buffers idlwave-shell-electric-debug-buffers) @@ -4165,7 +4258,7 @@ idlwave-shell-electric-debug-mode-map) ;; Show the help text (defun idlwave-shell-electric-debug-help () (interactive) - (with-output-to-temp-buffer "*IDLWAVE Electric Debug Help*" + (with-output-to-temp-buffer "*IDLWAVE Electric Debug Help*" (princ idlwave-shell-electric-debug-help)) (let* ((current-window (selected-window)) (window (get-buffer-window "*IDLWAVE Electric Debug Help*")) @@ -4180,7 +4273,7 @@ idlwave-shell-electric-debug-mode-map) `("Debug" ["Electric Debug Mode" idlwave-shell-electric-debug-mode - :style toggle :selected idlwave-shell-electric-debug-mode + :style toggle :selected idlwave-shell-electric-debug-mode :included (eq major-mode 'idlwave-mode) :keys "C-c C-d C-v"] "--" ("Compile & Run" @@ -4196,15 +4289,15 @@ idlwave-shell-electric-debug-mode-map) "--" ["Goto Next Error" idlwave-shell-goto-next-error t] "--" - ["Compile and Run Region" idlwave-shell-run-region + ["Compile and Run Region" idlwave-shell-run-region (eq major-mode 'idlwave-mode)] - ["Evaluate Region" idlwave-shell-evaluate-region + ["Evaluate Region" idlwave-shell-evaluate-region (eq major-mode 'idlwave-mode)] "--" ["Execute Default Cmd" idlwave-shell-execute-default-command-line t] ["Edit Default Cmd" idlwave-shell-edit-default-command-line t]) ("Breakpoints" - ["Set Breakpoint" idlwave-shell-break-here + ["Set Breakpoint" idlwave-shell-break-here :keys "C-c C-d C-c" :active (eq major-mode 'idlwave-mode)] ("Set Special Breakpoint" ["Set After Count Breakpoint" @@ -4215,16 +4308,16 @@ idlwave-shell-electric-debug-mode-map) ["Set Condition Breakpoint" (idlwave-shell-break-here '(4)) :active (eq major-mode 'idlwave-mode)]) - ["Break in Module" idlwave-shell-break-in + ["Break in Module" idlwave-shell-break-in :keys "C-c C-d C-i" :active (eq major-mode 'idlwave-mode)] ["Break in this Module" idlwave-shell-break-this-module :keys "C-c C-d C-j" :active (eq major-mode 'idlwave-mode)] ["Clear Breakpoint" idlwave-shell-clear-current-bp t] ["Clear All Breakpoints" idlwave-shell-clear-all-bp t] ["Disable/Enable Breakpoint" idlwave-shell-toggle-enable-current-bp t] - ["Goto Previous Breakpoint" idlwave-shell-goto-previous-bp + ["Goto Previous Breakpoint" idlwave-shell-goto-previous-bp :keys "C-c C-d [" :active (eq major-mode 'idlwave-mode)] - ["Goto Next Breakpoint" idlwave-shell-goto-next-bp + ["Goto Next Breakpoint" idlwave-shell-goto-next-bp :keys "C-c C-d ]" :active (eq major-mode 'idlwave-mode)] ["List All Breakpoints" idlwave-shell-list-all-bp t] ["Resync Breakpoints" idlwave-shell-bp-query t]) @@ -4256,38 +4349,38 @@ idlwave-shell-electric-debug-mode-map) ["Redisplay and Sync" idlwave-shell-redisplay t]) ("Show Commands" ["Everything" (if (eq idlwave-shell-show-commands 'everything) - (progn + (progn (setq idlwave-shell-show-commands (get 'idlwave-shell-show-commands 'last-val)) (put 'idlwave-shell-show-commands 'last-val nil)) - (put 'idlwave-shell-show-commands 'last-val + (put 'idlwave-shell-show-commands 'last-val idlwave-shell-show-commands) (setq idlwave-shell-show-commands 'everything)) :style toggle :selected (and (not (listp idlwave-shell-show-commands)) - (eq idlwave-shell-show-commands + (eq idlwave-shell-show-commands 'everything))] "--" ["Compiling Commands" (idlwave-shell-add-or-remove-show 'run) - :style toggle - :selected (not (idlwave-shell-hide-p + :style toggle + :selected (not (idlwave-shell-hide-p 'run (get 'idlwave-shell-show-commands 'last-val))) :active (not (eq idlwave-shell-show-commands 'everything))] ["Breakpoint Commands" (idlwave-shell-add-or-remove-show 'breakpoint) - :style toggle - :selected (not (idlwave-shell-hide-p + :style toggle + :selected (not (idlwave-shell-hide-p 'breakpoint (get 'idlwave-shell-show-commands 'last-val))) :active (not (eq idlwave-shell-show-commands 'everything))] ["Debug Commands" (idlwave-shell-add-or-remove-show 'debug) - :style toggle - :selected (not (idlwave-shell-hide-p + :style toggle + :selected (not (idlwave-shell-hide-p 'debug (get 'idlwave-shell-show-commands 'last-val))) :active (not (eq idlwave-shell-show-commands 'everything))] ["Miscellaneous Commands" (idlwave-shell-add-or-remove-show 'misc) - :style toggle - :selected (not (idlwave-shell-hide-p + :style toggle + :selected (not (idlwave-shell-hide-p 'misc (get 'idlwave-shell-show-commands 'last-val))) :active (not (eq idlwave-shell-show-commands 'everything))]) @@ -4301,7 +4394,7 @@ idlwave-shell-electric-debug-mode-map) :style toggle :selected idlwave-shell-use-input-mode-magic]) "--" ["Update Working Dir" idlwave-shell-resync-dirs t] - ["Save Path Info" + ["Save Path Info" (idlwave-shell-send-command idlwave-shell-path-query 'idlwave-shell-get-path-info 'hide) @@ -4313,7 +4406,7 @@ idlwave-shell-electric-debug-mode-map) (if (or (featurep 'easymenu) (load "easymenu" t)) (progn - (easy-menu-define + (easy-menu-define idlwave-mode-debug-menu idlwave-mode-map "IDL debugging menus" idlwave-shell-menu-def) (easy-menu-define @@ -4333,7 +4426,7 @@ idlwave-shell-electric-debug-mode-map) (defvar idlwave-shell-bp-glyph nil "The glyphs to mark breakpoint lines in the source code.") -(let ((image-alist +(let ((image-alist '((bp . "/* XPM */ static char * file[] = { \"14 12 3 1\", @@ -4466,7 +4559,7 @@ static char * file[] = { \" .XXXX. \", \" .... \", \" \"};"))) im-cons im) - + (while (setq im-cons (pop image-alist)) (setq im (cond ((and (featurep 'xemacs) (featurep 'xpm)) @@ -4479,7 +4572,7 @@ static char * file[] = { ((and (not (featurep 'xemacs)) (fboundp 'image-type-available-p) (image-type-available-p 'xpm)) - (list 'image :type 'xpm :data (cdr im-cons) + (list 'image :type 'xpm :data (cdr im-cons) :ascent 'center)) (t nil))) (if im (push (cons (car im-cons) im) idlwave-shell-bp-glyph)))) @@ -4489,7 +4582,7 @@ static char * file[] = { ;;; Load the toolbar when wanted by the user. -(autoload 'idlwave-toolbar-toggle "idlw-toolbar" +(autoload 'idlwave-toolbar-toggle "idlw-toolbar" "Toggle the IDLWAVE toolbar") (autoload 'idlwave-toolbar-add-everywhere "idlw-toolbar" "Add IDLWAVE toolbar") diff --git a/lisp/progmodes/idlw-toolbar.el b/lisp/progmodes/idlw-toolbar.el index 48d1a24a091..dfd8c50529f 100644 --- a/lisp/progmodes/idlw-toolbar.el +++ b/lisp/progmodes/idlw-toolbar.el @@ -1,9 +1,9 @@ ;;; idlw-toolbar.el --- a debugging toolbar for IDLWAVE -;; Copyright (c) 1999, 2000, 2001,2002 Free Software Foundation +;; Copyright (c) 1999, 2000, 2001,2002,2004 Free Software Foundation ;; Author: Carsten Dominik <dominik@astro.uva.nl> ;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> -;; Version: 5.5 +;; Version: 5.7_22 ;; Keywords: processes ;; This file is part of GNU Emacs. diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el index 273c3296180..a54174c0f5a 100644 --- a/lisp/progmodes/idlwave.el +++ b/lisp/progmodes/idlwave.el @@ -1,12 +1,12 @@ ;; idlwave.el --- IDL editing mode for GNU Emacs ;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005 -;; Free Software Foundation +;; Free Software Foundation ;; Authors: J.D. Smith <jdsmith@as.arizona.edu> ;; Carsten Dominik <dominik@science.uva.nl> ;; Chris Chase <chase@att.com> ;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> -;; Version: 5.5 +;; Version: 5.7_22 ;; Keywords: languages ;; This file is part of GNU Emacs. @@ -28,6 +28,8 @@ ;;; Commentary: +;; IDLWAVE enables feature-rich development and interaction with IDL. + ;; In the remotely distant past, based on pascal.el, though bears ;; little resemblance to it now. ;; @@ -111,7 +113,7 @@ ;; IDLWAVE support for the IDL-derived PV-WAVE CL language of Visual ;; Numerics, Inc. is growing less and less complete as the two ;; languages grow increasingly apart. The mode probably shouldn't -;; even have "WAVE" in it's title, but it's catchy, and was required +;; even have "WAVE" in its title, but it's catchy, and was required ;; to avoid conflict with the CORBA idl.el mode. Caveat WAVEor. ;; ;; Moving the point backwards in conjunction with abbrev expansion @@ -159,6 +161,11 @@ (unless (fboundp 'char-valid-p) (defalias 'char-valid-p 'characterp)) +(if (not (fboundp 'cancel-timer)) + (condition-case nil + (require 'timer) + (error nil))) + (eval-and-compile ;; Kludge to allow `defcustom' for Emacs 19. (condition-case () (require 'custom) (error nil)) @@ -170,7 +177,7 @@ `(defvar ,var ,value ,doc)))) (defgroup idlwave nil - "Major mode for editing IDL .pro files" + "Major mode for editing IDL .pro files." :tag "IDLWAVE" :link '(url-link :tag "Home Page" "http://idlwave.org") @@ -1377,7 +1384,7 @@ Normally a space.") "Character which is inserted as a last character on previous line by \\[idlwave-split-line] to begin a continuation line. Normally $.") -(defconst idlwave-mode-version "5.5") +(defconst idlwave-mode-version "5.7_22") (defmacro idlwave-keyword-abbrev (&rest args) "Creates a function for abbrev hooks to call `idlwave-check-abbrev' with args." @@ -1484,12 +1491,13 @@ Capitalize system variables - action only ;; Add action (let* ((table (if select 'idlwave-indent-action-table 'idlwave-indent-expand-table)) - (cell (assoc key (eval table)))) + (table-key (regexp-quote key)) + (cell (assoc table-key (eval table)))) (if cell ;; Replace action command (setcdr cell cmd) ;; New action - (set table (append (eval table) (list (cons key cmd))))))) + (set table (append (eval table) (list (cons table-key cmd))))))) ;; Make key binding for action (if (or (and (null select) (= (length key) 1)) (equal select 'noaction) @@ -1516,7 +1524,7 @@ Capitalize system variables - action only (define-key idlwave-mode-map "\C-c{" 'idlwave-beginning-of-block) (define-key idlwave-mode-map "\C-c}" 'idlwave-end-of-block) (define-key idlwave-mode-map "\C-c]" 'idlwave-close-block) -(define-key idlwave-mode-map "\M-\C-h" 'idlwave-mark-subprogram) +(define-key idlwave-mode-map [(meta control h)] 'idlwave-mark-subprogram) (define-key idlwave-mode-map "\M-\C-n" 'idlwave-forward-block) (define-key idlwave-mode-map "\M-\C-p" 'idlwave-backward-block) (define-key idlwave-mode-map "\M-\C-d" 'idlwave-down-block) @@ -1575,6 +1583,7 @@ Capitalize system variables - action only (autoload 'idlwave-shell-run-region "idlw-shell" "Compile and run the region." t) (define-key idlwave-mode-map "\C-c\C-v" 'idlwave-find-module) +(define-key idlwave-mode-map "\C-c\C-t" 'idlwave-find-module-this-file) (define-key idlwave-mode-map "\C-c?" 'idlwave-routine-info) (define-key idlwave-mode-map "\M-?" 'idlwave-context-help) (define-key idlwave-mode-map [(control meta ?\?)] 'idlwave-online-help) @@ -1702,6 +1711,8 @@ idlwave-mode-abbrev-table unless TABLE is non-nil." (idlwave-define-abbrev "s" "size()" (idlwave-keyword-abbrev 1)) (idlwave-define-abbrev "wi" "widget_info()" (idlwave-keyword-abbrev 1)) (idlwave-define-abbrev "wc" "widget_control," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "pv" "ptr_valid()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "ipv" "if ptr_valid() then" (idlwave-keyword-abbrev 6)) ;; This section is reserved words only. (From IDL user manual) ;; @@ -1756,7 +1767,7 @@ idlwave-mode-abbrev-table unless TABLE is non-nil." ;;;###autoload (defun idlwave-mode () - "Major mode for editing IDL source files (version 5.5). + "Major mode for editing IDL source files (version 5.7_22). The main features of this mode are @@ -1935,15 +1946,10 @@ The main features of this mode are 'idlwave-prev-index-position) ;; Make a local post-command-hook and add our hook to it - ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility - (make-local-hook 'post-command-hook) (add-hook 'post-command-hook 'idlwave-command-hook nil 'local) ;; Make local hooks for buffer updates - ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility - (make-local-hook 'kill-buffer-hook) (add-hook 'kill-buffer-hook 'idlwave-kill-buffer-update nil 'local) - (make-local-hook 'after-save-hook) (add-hook 'after-save-hook 'idlwave-save-buffer-update nil 'local) (add-hook 'after-save-hook 'idlwave-revoke-license-to-kill nil 'local) @@ -2696,7 +2702,7 @@ See `idlwave-surround'." (re-search-backward "\\(#\\)\\=" nil t)) (setq len (1+ (length (match-string 1)))) (when (re-search-backward an-ops nil t) - (setq begin nil) ; won't modify begin + ;(setq begin nil) ; won't modify begin (setq len (1+ (length (match-string 1)))))))) (if (eq t idlwave-pad-keyword) @@ -4267,7 +4273,9 @@ This defines the function `idlwave-sintern-TAG' and the variable (defvar idlwave-user-catalog-routines nil "Holds the procedure routine-info from the user scan.") (defvar idlwave-library-catalog-routines nil - "Holds the procedure routine-info from the library catalog files.") + "Holds the procedure routine-info from the .idlwave_catalog library files.") +(defvar idlwave-library-catalog-libname nil + "Name of library catalog loaded from .idlwave_catalog files.") (defvar idlwave-path-alist nil "Alist with !PATH directories and zero or more flags if the dir has been scanned in a user catalog ('user) or discovered in a library @@ -4384,6 +4392,8 @@ will re-read the catalog." (defvar idlwave-load-rinfo-idle-timer) +(defvar idlwave-shell-path-query) + (defun idlwave-update-routine-info (&optional arg no-concatenate) "Update the internal routine-info lists. These lists are used by `idlwave-routine-info' (\\[idlwave-routine-info]) @@ -4508,6 +4518,8 @@ information updated immediately, leave NO-CONCATENATE nil." nil 'idlwave-load-rinfo-next-step))) (error nil)))) +(defvar idlwave-library-routines nil "Obsolete variable.") + (defun idlwave-load-rinfo-next-step () (let ((inhibit-quit t) (arr idlwave-load-rinfo-steps-done)) @@ -4816,12 +4828,15 @@ information updated immediately, leave NO-CONCATENATE nil." (defun idlwave-sys-dir () "Return the syslib directory, or a dummy that never matches." - (if (string= idlwave-system-directory "") - "@@@@@@@@" - idlwave-system-directory)) + (cond + ((and idlwave-system-directory + (not (string= idlwave-system-directory ""))) + idlwave-system-directory) + ((getenv "IDL_DIR")) + (t "@@@@@@@@"))) + -(defvar idlwave-shell-path-query) (defun idlwave-create-user-catalog-file (&optional arg) "Scan all files on selected dirs of IDL search path for routine information. @@ -5140,6 +5155,9 @@ directories and save the routine info. ;;----- Scanning the library catalogs ------------------ + + + (defun idlwave-scan-library-catalogs (&optional message-base no-load) "Scan for library catalog files (.idlwave_catalog) and ingest. @@ -5488,13 +5506,15 @@ When we force a method or a method keyword, CLASS can specify the class." (isa (format "procedure%s-keyword" (if class "-method" ""))) (entry (idlwave-best-rinfo-assq name 'pro class (idlwave-routines))) + (system (if entry (eq (car (nth 3 entry)) 'system))) (list (idlwave-entry-keywords entry 'do-link))) (unless (or entry (eq class t)) (error "Nothing known about procedure %s" (idlwave-make-full-name class name))) - (setq list (idlwave-fix-keywords name 'pro class list super-classes)) + (setq list (idlwave-fix-keywords name 'pro class list + super-classes system)) (unless list (error "No keywords available for procedure %s" - (idlwave-make-full-name class name))) + (idlwave-make-full-name class name))) (setq idlwave-completion-help-info (list 'keyword name type-selector class-selector entry super-classes)) (idlwave-complete-in-buffer @@ -5519,12 +5539,14 @@ When we force a method or a method keyword, CLASS can specify the class." (isa (format "function%s-keyword" (if class "-method" ""))) (entry (idlwave-best-rinfo-assq name 'fun class (idlwave-routines))) + (system (if entry (eq (car (nth 3 entry)) 'system))) (list (idlwave-entry-keywords entry 'do-link)) msg-name) (unless (or entry (eq class t)) (error "Nothing known about function %s" (idlwave-make-full-name class name))) - (setq list (idlwave-fix-keywords name 'fun class list super-classes)) + (setq list (idlwave-fix-keywords name 'fun class list + super-classes system)) ;; OBJ_NEW: Messages mention the proper Init method (setq msg-name (if (and (null class) (string= (upcase name) "OBJ_NEW")) @@ -5532,7 +5554,7 @@ When we force a method or a method keyword, CLASS can specify the class." "::Init (via OBJ_NEW)") (idlwave-make-full-name class name))) (unless list (error "No keywords available for function %s" - msg-name)) + msg-name)) (setq idlwave-completion-help-info (list 'keyword name type-selector class-selector nil super-classes)) (idlwave-complete-in-buffer @@ -6155,7 +6177,7 @@ This function is not general, can only be used for completion stuff." ((memq (preceding-char) '(?\; ?\$)) (throw 'exit nil)) ((eq (preceding-char) ?\n) (beginning-of-line 0) - (if (looking-at "\\([^;\n]*\\)\\$[ \t]*\\(;[^\n]*\\)?\n") + (if (looking-at "\\([^\n]*\\)\\$[ \t]*\\(;[^\n]*\\)?\n") ;; continuation line (goto-char (match-end 1)) (throw 'exit nil))) @@ -7159,6 +7181,7 @@ Gets set in `idlw-rinfo.el'.") t)) ; return t to skip other completions (t nil)))) +(defvar link) ;dynamic (defun idlwave-complete-sysvar-help (mode word) (let ((word (or (nth 1 idlwave-completion-help-info) word)) (entry (assoc word idlwave-system-variables-alist))) @@ -7462,6 +7485,10 @@ With ARG, enforce query for the class of object methods." '(idlwave-update-routine-info) nil t)))))) +(defun idlwave-find-module-this-file () + (interactive) + (idlwave-find-module '(4))) + (defun idlwave-find-module (&optional arg) "Find the source code of an IDL module. Works for modules for which IDLWAVE has routine info available. The @@ -7662,10 +7689,12 @@ appropriate Init method." (idlwave-sintern-class class))))) module)) -(defun idlwave-fix-keywords (name type class keywords &optional super-classes) +(defun idlwave-fix-keywords (name type class keywords + &optional super-classes system) "Update a list of keywords. Translate OBJ_NEW, adding all super-class keywords, or all keywords -from all classes if class equals t." +from all classes if class equals t. If SYSTEM is non-nil, don't +demand _EXTRA in the keyword list." (let ((case-fold-search t)) ;; If this is the OBJ_NEW function, try to figure out the class and use @@ -7708,8 +7737,10 @@ from all classes if class equals t." super-classes idlwave-keyword-class-inheritance (stringp class) - (or (assq (idlwave-sintern-keyword "_extra") keywords) - (assq (idlwave-sintern-keyword "_ref_extra") keywords)) + (or + system + (assq (idlwave-sintern-keyword "_extra") keywords) + (assq (idlwave-sintern-keyword "_ref_extra") keywords)) ;; Check if one of the keyword-class regexps matches the name (let ((regexps idlwave-keyword-class-inheritance) re) (catch 'exit @@ -8048,7 +8079,8 @@ Optional args RIGHT and SHIFT indicate, if mouse-3 was used, and if SHIFT was pressed." (interactive "e") (if ev (mouse-set-point ev)) - (let (data id name type class buf bufwin source word initial-class) + (let (data id name type class buf bufwin source link keyword + word initial-class) (setq data (get-text-property (point) 'data) source (get-text-property (point) 'source) keyword (get-text-property (point) 'keyword) @@ -8333,7 +8365,6 @@ routines, and may have been scanned." (setcar entry 'builtin)) (sort alist 'idlwave-routine-twin-compare))) -(defvar name) (defvar type) (defvar class) (defvar idlwave-sort-prefer-buffer-info t diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el index e4d36244537..252dca5624b 100644 --- a/lisp/progmodes/pascal.el +++ b/lisp/progmodes/pascal.el @@ -61,7 +61,7 @@ ;;; Code: (defgroup pascal nil - "Major mode for editing Pascal source in Emacs" + "Major mode for editing Pascal source in Emacs." :group 'languages) (defvar pascal-mode-abbrev-table nil diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el index 73450dec61a..b6c4dd8c662 100644 --- a/lisp/progmodes/prolog.el +++ b/lisp/progmodes/prolog.el @@ -31,7 +31,7 @@ ;;; Code: (defgroup prolog nil - "Major mode for editing and running Prolog under Emacs" + "Major mode for editing and running Prolog under Emacs." :group 'languages) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 3f556bdb695..d31ac29c01f 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -70,7 +70,7 @@ (autoload 'compilation-start "compile") (defgroup python nil - "Silly walks in the Python language" + "Silly walks in the Python language." :group 'languages :version "22.1" :link '(emacs-commentary-link "python")) @@ -949,6 +949,7 @@ See `python-check-command' for the default." (if name (file-name-nondirectory name)))))))) (setq python-saved-check-command command) + (require 'compile) ;To define compilation-* variables. (save-some-buffers (not compilation-ask-about-save) nil) (let ((compilation-error-regexp-alist (cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2) @@ -1066,7 +1067,7 @@ For running multiple processes in multiple buffers, see `python-buffer'. ;; Still required by `comint-redirect-send-command', for instance ;; (and we need to match things like `>>> ... >>> '): (set (make-local-variable 'comint-prompt-regexp) - (rx (and line-start (1+ (and (repeat 3 (any ">.")) ?\ ))))) + (rx (and line-start (1+ (and (repeat 3 (any ">.")) ?\s))))) (set (make-local-variable 'compilation-error-regexp-alist) python-compilation-regexp-alist) (compilation-shell-minor-mode 1)) diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el index c792b59ad87..4df71e3a2a2 100644 --- a/lisp/progmodes/scheme.el +++ b/lisp/progmodes/scheme.el @@ -82,7 +82,7 @@ (modify-syntax-entry ?\n "> " st) (modify-syntax-entry ?\f " " st) (modify-syntax-entry ?\r " " st) - (modify-syntax-entry ? " " st) + (modify-syntax-entry ?\s " " st) ;; These characters are delimiters but otherwise undefined. ;; Brackets and braces balance for editing convenience. @@ -228,7 +228,7 @@ if that value is non-nil." (run-mode-hooks 'scheme-mode-hook)) (defgroup scheme nil - "Editing Scheme code" + "Editing Scheme code." :group 'lisp) (defcustom scheme-mit-dialect t diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index 23d8374818e..faf98f6292f 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -202,12 +202,12 @@ (defgroup sh nil - "Shell programming utilities" + "Shell programming utilities." :group 'unix :group 'languages) (defgroup sh-script nil - "Shell script mode" + "Shell script mode." :group 'sh :prefix "sh-") @@ -2370,7 +2370,7 @@ If AND-MOVE is non-nil then move to end of word." (goto-char where)) (prog1 (buffer-substring (point) - (progn (skip-chars-forward "^ \t\n;")(point))) + (progn (skip-chars-forward "^ \t\n;&")(point))) (unless and-move (goto-char start))))) @@ -3535,7 +3535,7 @@ The document is bounded by `sh-here-document-word'." (delim (replace-regexp-in-string "['\"]" "" sh-here-document-word))) (insert sh-here-document-word) - (or (eolp) (looking-at "[ \t]") (insert ? )) + (or (eolp) (looking-at "[ \t]") (insert ?\s)) (end-of-line 1) (while (sh-quoted-p) diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el index 9b819ceae00..1f2e7eb4863 100644 --- a/lisp/progmodes/sql.el +++ b/lisp/progmodes/sql.el @@ -221,7 +221,7 @@ ;;; Allow customization (defgroup SQL nil - "Running a SQL interpreter from within Emacs buffers" + "Running a SQL interpreter from within Emacs buffers." :version "20.4" :group 'processes) @@ -2077,7 +2077,7 @@ Inserts SELECT or commas if appropriate." (insert ", ")) ;; else insert a space (t - (if (eq (preceding-char) ? ) + (if (eq (preceding-char) ?\s) nil (insert " "))))) ;; in any case, insert the column diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el index a3447befa20..2669369645f 100644 --- a/lisp/progmodes/tcl.el +++ b/lisp/progmodes/tcl.el @@ -118,7 +118,7 @@ ;; (defgroup tcl nil - "Major mode for editing Tcl source in Emacs" + "Major mode for editing Tcl source in Emacs." :group 'languages) (defcustom tcl-indent-level 4 @@ -1489,7 +1489,7 @@ styles." (unless (or (bolp) (tcl-real-command-p)) (insert ";") ;; Try and erase a non-significant char to keep charpos identical. - (if (memq (char-after) '(?\t ?\ )) (delete-char 1)))) + (if (memq (char-after) '(?\t ?\s)) (delete-char 1)))) (funcall (default-value 'comment-indent-function))) ;; The following was inspired by the Tcl editing mode written by @@ -1533,7 +1533,7 @@ The first line is assumed to look like \"#!.../program ...\"." (defun tcl-quote (string) "Quote STRING according to Tcl rules." (mapconcat (lambda (char) - (if (memq char '(?[ ?] ?{ ?} ?\\ ?\" ?$ ? ?\;)) + (if (memq char '(?[ ?] ?{ ?} ?\\ ?\" ?$ ?\s ?\;)) (concat "\\" (char-to-string char)) (char-to-string char))) string "")) diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el index 54e7ab8a049..95d3d652d67 100644 --- a/lisp/progmodes/vhdl-mode.el +++ b/lisp/progmodes/vhdl-mode.el @@ -1133,7 +1133,7 @@ If TO STRING is empty, the instance name is queried." (defgroup vhdl-testbench nil - "Customizations for testbench generation ." + "Customizations for testbench generation." :group 'vhdl-port) (defcustom vhdl-testbench-entity-name '(".*" . "\\&_tb") diff --git a/lisp/ps-print.el b/lisp/ps-print.el index e62ab644a1c..79215f2a8ad 100644 --- a/lisp/ps-print.el +++ b/lisp/ps-print.el @@ -10,12 +10,12 @@ ;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters) ;; Vinicius Jose Latorre <viniciusjl@ig.com.br> ;; Keywords: wp, print, PostScript -;; Time-stamp: <2005/03/19 00:40:12 vinicius> -;; Version: 6.6.6 +;; Time-stamp: <2005/06/27 00:57:22 vinicius> +;; Version: 6.6.7 ;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ -(defconst ps-print-version "6.6.6" - "ps-print.el, v 6.6.6 <2005/03/19 vinicius> +(defconst ps-print-version "6.6.7" + "ps-print.el, v 6.6.7 <2005/06/27 vinicius> Vinicius's last change version -- this file may have been edited as part of Emacs without changes to the version number. When reporting bugs, please also @@ -1562,13 +1562,13 @@ Please send all bug fixes and enhancements to ;;; Interface to the command system (defgroup postscript nil - "PostScript Group" + "PostScript Group." :tag "PostScript" :version "20" :group 'emacs) (defgroup ps-print nil - "PostScript generator for Emacs" + "PostScript generator for Emacs." :link '(emacs-library-link :tag "Source Lisp File" "ps-print.el") :prefix "ps-" :version "20" @@ -1576,42 +1576,42 @@ Please send all bug fixes and enhancements to :group 'postscript) (defgroup ps-print-horizontal nil - "Horizontal page layout" + "Horizontal page layout." :prefix "ps-" :tag "Horizontal" :version "20" :group 'ps-print) (defgroup ps-print-vertical nil - "Vertical page layout" + "Vertical page layout." :prefix "ps-" :tag "Vertical" :version "20" :group 'ps-print) (defgroup ps-print-headers nil - "Headers & footers layout" + "Headers & footers layout." :prefix "ps-" :tag "Header & Footer" :version "20" :group 'ps-print) (defgroup ps-print-font nil - "Fonts customization" + "Fonts customization." :prefix "ps-" :tag "Font" :version "20" :group 'ps-print) (defgroup ps-print-color nil - "Color customization" + "Color customization." :prefix "ps-" :tag "Color" :version "20" :group 'ps-print) (defgroup ps-print-face nil - "Faces customization" + "Faces customization." :prefix "ps-" :tag "PS Faces" :version "20" @@ -1619,42 +1619,42 @@ Please send all bug fixes and enhancements to :group 'faces) (defgroup ps-print-n-up nil - "N-up customization" + "N-up customization." :prefix "ps-" :tag "N-Up" :version "20" :group 'ps-print) (defgroup ps-print-zebra nil - "Zebra customization" + "Zebra customization." :prefix "ps-" :tag "Zebra" :version "20" :group 'ps-print) (defgroup ps-print-background nil - "Background customization" + "Background customization." :prefix "ps-" :tag "Background" :version "20" :group 'ps-print) (defgroup ps-print-printer '((lpr custom-group)) - "Printer customization" + "Printer customization." :prefix "ps-" :tag "Printer" :version "20" :group 'ps-print) (defgroup ps-print-page nil - "Page customization" + "Page customization." :prefix "ps-" :tag "Page" :version "20" :group 'ps-print) (defgroup ps-print-miscellany nil - "Miscellany customization" + "Miscellany customization." :prefix "ps-" :tag "Miscellany" :version "20" @@ -3760,7 +3760,7 @@ If `ps-prefix-quote' is nil, it's set to t after generating string." "(setq ") key (if (> col len) - (make-string (- col len) ?\ ) + (make-string (- col len) ?\s) " ") (ps-value-string val)))) (t "") @@ -5961,10 +5961,14 @@ XSTART YSTART are the relative position for the first page in a sheet.") (ps-begin-page)) +(defun ps-end-sheet () + (and ps-print-page-p (> ps-page-sheet 0) + (ps-output "EndSheet\n"))) + + (defun ps-header-sheet () ;; Print only when a new sheet begins. - (and ps-print-page-p (> ps-page-sheet 0) - (ps-output "EndSheet\n")) + (ps-end-sheet) (setq ps-page-sheet (1+ ps-page-sheet)) (when (ps-print-sheet-p) (setq ps-page-order (1+ ps-page-order)) @@ -6689,8 +6693,7 @@ If FACE is not a valid face name, it is used default face." (defun ps-end-job (needs-begin-file) - (let ((previous-print ps-print-page-p) - (ps-print-page-p t)) + (let ((ps-print-page-p t)) (ps-flush-output) (save-excursion (let ((pages-per-sheet (mod ps-page-printed ps-n-up-printing)) @@ -6717,8 +6720,7 @@ If FACE is not a valid face name, it is used default face." (number-to-string ps-lines-printed) " BeginPage\n") (ps-end-page))) ;; Set end of PostScript file - (and previous-print - (ps-output "EndSheet\n")) + (ps-end-sheet) (ps-output "\n%%Trailer\n%%Pages: " (number-to-string (if (and needs-begin-file diff --git a/lisp/recentf.el b/lisp/recentf.el index 1ea3ae6ecb2..64af3b1da3f 100644 --- a/lisp/recentf.el +++ b/lisp/recentf.el @@ -28,18 +28,18 @@ ;;; Commentary: ;; This package maintains a menu for visiting files that were operated -;; on recently. When enabled a new "Open Recent" submenu is displayed -;; in the "Files" menu. The recent files list is automatically saved -;; across Emacs sessions. You can customize the number of recent -;; files displayed, the location of the menu and others options (see -;; the source code for details). +;; on recently. When enabled a new "Open Recent" sub menu is +;; displayed in the "Files" menu. The recent files list is +;; automatically saved across Emacs sessions. You can customize the +;; number of recent files displayed, the location of the menu and +;; others options (see the source code for details). ;;; History: ;; ;;; Code: (require 'easymenu) -(require 'wid-edit) +(require 'tree-widget) (require 'timer) ;;; Internal data @@ -259,7 +259,8 @@ If `file-name-history' is not empty, do nothing." It is passed a filename to give a chance to transform it. If it returns nil, the filename is left unchanged." :group 'recentf - :type 'function) + :type '(choice (const :tag "None" nil) + function)) ;;; Utilities ;; @@ -904,30 +905,54 @@ unchanged." ;; (defun recentf-cancel-dialog (&rest ignore) "Cancel the current dialog. -Used internally by recentf dialogs. IGNORE arguments." (interactive) (kill-buffer (current-buffer)) (message "Dialog canceled")) +(defun recentf-dialog-goto-first (widget-type) + "Move the cursor to the first WIDGET-TYPE in current dialog. +Go to the beginning of buffer if not found." + (goto-char (point-min)) + (condition-case nil + (let (done) + (widget-move 1) + (while (not done) + (if (eq widget-type (widget-type (widget-at (point)))) + (setq done t) + (widget-move 1)))) + (goto-char (point-min)))) + (defvar recentf-dialog-mode-map (let ((km (make-sparse-keymap))) + (set-keymap-parent km widget-keymap) (define-key km "q" 'recentf-cancel-dialog) (define-key km [down-mouse-1] 'widget-button-click) - (set-keymap-parent km widget-keymap) km) "Keymap used in recentf dialogs.") -(defun recentf-dialog-mode () +(define-derived-mode recentf-dialog-mode nil "recentf-dialog" "Major mode of recentf dialogs. \\{recentf-dialog-mode-map}" - (interactive) - (kill-all-local-variables) - (setq major-mode 'recentf-dialog-mode) - (setq mode-name "recentf-dialog") - (use-local-map recentf-dialog-mode-map) - (run-mode-hooks 'recentf-dialog-mode-hook)) + :syntax-table nil + :abbrev-table nil + (setq truncate-lines t)) + +(defmacro recentf-dialog (name &rest forms) + "Show a dialog buffer with NAME, setup with FORMS." + (declare (indent 1) (debug t)) + `(with-current-buffer (get-buffer-create ,name) + ;; Cleanup buffer + (let ((inhibit-read-only t) + (ol (overlay-lists))) + (mapc 'delete-overlay (car ol)) + (mapc 'delete-overlay (cdr ol)) + (erase-buffer)) + (recentf-dialog-mode) + ,@forms + (widget-setup) + (switch-to-buffer (current-buffer)))) ;;; Hooks ;; @@ -976,163 +1001,127 @@ That is, remove a non kept file from the recent list." ;;; Commands ;; -(defvar recentf-edit-selected-items nil - "List of files to be deleted from the recent list. -Used internally by `recentf-edit-list'.") -(defun recentf-edit-list-action (widget &rest ignore) - "Checkbox WIDGET action that toogles a file selection. -Used internally by `recentf-edit-list'. +;;; Edit list dialog +;; +(defvar recentf-edit-list nil) + +(defun recentf-edit-list-select (widget &rest ignore) + "Toggle a file selection based on the checkbox WIDGET state. IGNORE other arguments." - (let ((value (widget-get widget ':tag))) - ;; if value is already in the selected items - (if (memq value recentf-edit-selected-items) - ;; then remove it - (progn - (setq recentf-edit-selected-items - (delq value recentf-edit-selected-items)) - (message "%s removed from selection" value)) - ;; else add it - (push value recentf-edit-selected-items) - (message "%s added to selection" value)))) + (let ((value (widget-get widget :tag)) + (check (widget-value widget))) + (if check + (add-to-list 'recentf-edit-list value) + (setq recentf-edit-list (delq value recentf-edit-list))) + (message "%s %sselected" value (if check "" "un")))) + +(defun recentf-edit-list-validate (&rest ignore) + "Process the recent list when the edit list dialog is committed. +IGNORE arguments." + (if recentf-edit-list + (let ((i 0)) + (dolist (e recentf-edit-list) + (setq recentf-list (delq e recentf-list) + i (1+ i))) + (kill-buffer (current-buffer)) + (message "%S file(s) removed from the list" i) + (recentf-clear-data)) + (message "No file selected"))) (defun recentf-edit-list () - "Show a dialog buffer to edit the recent list. -That is to select files to be deleted from the recent list." + "Show a dialog to delete selected files from the recent list." (interactive) - (with-current-buffer - (get-buffer-create (format "*%s - Edit list*" recentf-menu-title)) - (switch-to-buffer (current-buffer)) - ;; Cleanup buffer - (let ((inhibit-read-only t) - (ol (overlay-lists))) - (erase-buffer) - ;; Delete all the overlays. - (mapc 'delete-overlay (car ol)) - (mapc 'delete-overlay (cdr ol))) - (recentf-dialog-mode) - (setq recentf-edit-selected-items nil) - ;; Insert the dialog header + (recentf-dialog (format "*%s - Edit list*" recentf-menu-title) + (set (make-local-variable 'recentf-edit-list) nil) (widget-insert - "\ -Select the files to be deleted from the recent list.\n\n\ -Click on Ok to update the list. \ -Click on Cancel or type \"q\" to quit.\n") + "Click on OK to delete selected files from the recent list. +Click on Cancel or type `q' to cancel.\n") ;; Insert the list of files as checkboxes (dolist (item recentf-list) - (widget-create - 'checkbox - :value nil ; unselected checkbox - :format "\n %[%v%] %t" - :tag item - :notify 'recentf-edit-list-action)) + (widget-create 'checkbox + :value nil ; unselected checkbox + :format "\n %[%v%] %t" + :tag item + :notify 'recentf-edit-list-select)) (widget-insert "\n\n") - ;; Insert the Ok button (widget-create 'push-button - :notify (lambda (&rest ignore) - (if recentf-edit-selected-items - (let ((i 0)) - (kill-buffer (current-buffer)) - (dolist (e recentf-edit-selected-items) - (setq recentf-list (delq e recentf-list) - i (1+ i))) - (message "%S file(s) removed from the list" i) - (recentf-clear-data)) - (message "No file selected"))) - "Ok") + :notify 'recentf-edit-list-validate + :help-echo "Delete selected files from the recent list" + "Ok") (widget-insert " ") - ;; Insert the Cancel button (widget-create 'push-button :notify 'recentf-cancel-dialog "Cancel") - (widget-setup) - (goto-char (point-min)))) + (recentf-dialog-goto-first 'checkbox))) +;;; Open file dialog +;; (defun recentf-open-files-action (widget &rest ignore) - "Button WIDGET action that open a file. -Used internally by `recentf-open-files'. + "Open the file stored in WIDGET's value when notified. IGNORE other arguments." (kill-buffer (current-buffer)) (funcall recentf-menu-action (widget-value widget))) -(defvar recentf-open-files-item-shift "" - "Amount of space to shift right sub-menu items. -Used internally by `recentf-open-files'.") - (defun recentf-open-files-item (menu-element) - "Insert an item widget for MENU-ELEMENT in the current dialog buffer. -Used internally by `recentf-open-files'." - (let ((item (car menu-element)) - (file (cdr menu-element))) - (if (consp file) ; This is a sub-menu - (let* ((shift recentf-open-files-item-shift) - (recentf-open-files-item-shift (concat shift " "))) - (widget-create - 'item - :tag item - :sample-face 'bold - :format (concat shift "%{%t%}:\n")) - (mapc 'recentf-open-files-item file) - (widget-insert "\n")) - (widget-create - 'push-button - :button-face 'default - :tag item - :help-echo (concat "Open " file) - :format (concat recentf-open-files-item-shift "%[%t%]") - :notify 'recentf-open-files-action - file) - (widget-insert "\n")))) + "Return a widget to display MENU-ELEMENT in a dialog buffer." + (if (consp (cdr menu-element)) + ;; Represent a sub-menu with a tree widget + `(tree-widget + :open t + :match ignore + :node (item :tag ,(car menu-element) + :sample-face bold + :format "%{%t%}:\n") + ,@(mapcar 'recentf-open-files-item + (cdr menu-element))) + ;; Represent a single file with a link widget + `(link :tag ,(car menu-element) + :button-prefix "" + :button-suffix "" + :button-face default + :format "%[%t%]\n" + :help-echo ,(concat "Open " (cdr menu-element)) + :action recentf-open-files-action + ,(cdr menu-element)))) (defun recentf-open-files (&optional files buffer-name) - "Show a dialog buffer to open a recent file. -If optional argument FILES is non-nil, it specifies the list of -recently-opened files to choose from. It is the whole recent list -otherwise. -If optional argument BUFFER-NAME is non-nil, it specifies which buffer -name to use for the interaction. It is \"*`recentf-menu-title'*\" by -default." + "Show a dialog to open a recent file. +If optional argument FILES is non-nil, it is a list of recently-opened +files to choose from. It defaults to the whole recent list. +If optional argument BUFFER-NAME is non-nil, it is a buffer name to +use for the dialog. It defaults to \"*`recentf-menu-title'*\"." (interactive) - (unless files - (setq files recentf-list)) - (unless buffer-name - (setq buffer-name (format "*%s*" recentf-menu-title))) - (with-current-buffer (get-buffer-create buffer-name) - (switch-to-buffer (current-buffer)) - ;; Cleanup buffer - (let ((inhibit-read-only t) - (ol (overlay-lists))) - (erase-buffer) - ;; Delete all the overlays. - (mapc 'delete-overlay (car ol)) - (mapc 'delete-overlay (cdr ol))) - (recentf-dialog-mode) - ;; Insert the dialog header - (widget-insert "Click on a file to open it. ") - (widget-insert "Click on Cancel or type \"q\" to quit.\n\n" ) - ;; Insert the list of files as buttons - (let ((recentf-open-files-item-shift "")) - (mapc 'recentf-open-files-item - (recentf-apply-menu-filter - recentf-menu-filter - (mapcar 'recentf-make-default-menu-element files)))) - (widget-insert "\n") - ;; Insert the Cancel button + (recentf-dialog (or buffer-name (format "*%s*" recentf-menu-title)) + (widget-insert "Click on a file to open it. +Click on Cancel or type `q' to cancel.\n" ) + ;; Use a L&F that looks like the recentf menu. + (tree-widget-set-theme "folder") + (apply 'widget-create + `(group + :indent 2 + :format "\n%v\n" + ,@(mapcar 'recentf-open-files-item + (recentf-apply-menu-filter + recentf-menu-filter + (mapcar 'recentf-make-default-menu-element + (or files recentf-list)))))) (widget-create 'push-button :notify 'recentf-cancel-dialog "Cancel") - (widget-setup) - (goto-char (point-min)))) + (recentf-dialog-goto-first 'link))) (defun recentf-open-more-files () - "Show a dialog buffer to open a recent file that is not in the menu." + "Show a dialog to open a recent file that is not in the menu." (interactive) (recentf-open-files (nthcdr recentf-max-menu-items recentf-list) (format "*%s - More*" recentf-menu-title))) +;;; Save/load/cleanup the recent list +;; (defconst recentf-save-file-header ";;; Automatically generated by `recentf' on %s.\n" "Header to be written into the `recentf-save-file'.") @@ -1149,16 +1138,16 @@ Write data into the file specified by `recentf-save-file'." (interactive) (condition-case error (with-temp-buffer - (erase-buffer) - (set-buffer-file-coding-system recentf-save-file-coding-system) - (insert (format recentf-save-file-header (current-time-string))) - (recentf-dump-variable 'recentf-list recentf-max-saved-items) - (recentf-dump-variable 'recentf-filter-changer-state) - (insert "\n\n;;; Local Variables:\n" - (format ";;; coding: %s\n" recentf-save-file-coding-system) - ";;; End:\n") - (write-file (expand-file-name recentf-save-file)) - nil) + (erase-buffer) + (set-buffer-file-coding-system recentf-save-file-coding-system) + (insert (format recentf-save-file-header (current-time-string))) + (recentf-dump-variable 'recentf-list recentf-max-saved-items) + (recentf-dump-variable 'recentf-filter-changer-state) + (insert "\n\n;;; Local Variables:\n" + (format ";;; coding: %s\n" recentf-save-file-coding-system) + ";;; End:\n") + (write-file (expand-file-name recentf-save-file)) + nil) (error (warn "recentf mode: %s" (error-message-string error))))) @@ -1218,5 +1207,5 @@ that were operated on recently." (run-hooks 'recentf-load-hook) -;;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a +;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a ;;; recentf.el ends here diff --git a/lisp/replace.el b/lisp/replace.el index 2896ce133de..3b93761a0cc 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -516,21 +516,32 @@ which will run faster and will not set the mark or print anything." Prompt for a regexp with PROMPT. Value is a list, (REGEXP)." (list (read-from-minibuffer prompt nil nil nil - 'regexp-history nil t))) + 'regexp-history nil t) + nil nil t)) -(defun keep-lines (regexp &optional rstart rend) +(defun keep-lines (regexp &optional rstart rend interactive) "Delete all lines except those containing matches for REGEXP. A match split across lines preserves all the lines it lies in. -Applies to all lines after point. +When called from Lisp (and usually interactively as well, see below) +applies to all lines starting after point. If REGEXP contains upper case characters (excluding those preceded by `\\'), the matching is case-sensitive. Second and third arg RSTART and REND specify the region to operate on. +This command operates on (the accessible part of) all lines whose +accessible part is entirely contained in the region determined by RSTART +and REND. (A newline ending a line counts as part of that line.) Interactively, in Transient Mark mode when the mark is active, operate -on the contents of the region. Otherwise, operate from point to the -end of the buffer." +on all lines whose accessible part is entirely contained in the region. +Otherwise, the command applies to all lines starting after point. +When calling this function from Lisp, you can pretend that it was +called interactively by passing a non-nil INTERACTIVE argument. + +This function starts looking for the next match from the end of +the previous match. Hence, it ignores matches that overlap +a previously found match." (interactive (progn @@ -539,10 +550,20 @@ end of the buffer." (if rstart (progn (goto-char (min rstart rend)) - (setq rend (copy-marker (max rstart rend)))) - (if (and transient-mark-mode mark-active) + (setq rend + (progn + (save-excursion + (goto-char (max rstart rend)) + (unless (or (bolp) (eobp)) + (forward-line 0)) + (point-marker))))) + (if (and interactive transient-mark-mode mark-active) (setq rstart (region-beginning) - rend (copy-marker (region-end))) + rend (progn + (goto-char (region-end)) + (unless (or (bolp) (eobp)) + (forward-line 0)) + (point-marker))) (setq rstart (point) rend (point-max-marker))) (goto-char rstart)) @@ -556,7 +577,7 @@ end of the buffer." (if (not (re-search-forward regexp rend 'move)) (delete-region start rend) (let ((end (save-excursion (goto-char (match-beginning 0)) - (beginning-of-line) + (forward-line 0) (point)))) ;; Now end is first char preserved by the new match. (if (< start end) @@ -566,22 +587,34 @@ end of the buffer." ;; If the match was empty, avoid matching again at same place. (and (< (point) rend) (= (match-beginning 0) (match-end 0)) - (forward-char 1)))))) + (forward-char 1))))) + (set-marker rend nil) + nil) -(defun flush-lines (regexp &optional rstart rend) - "Delete lines containing matches for REGEXP. -If a match is split across lines, all the lines it lies in are deleted. -Applies to lines after point. +(defun flush-lines (regexp &optional rstart rend interactive) + "Delete lines containing matches for REGEXP. +When called from Lisp (and usually when called interactively as +well, see below), applies to the part of the buffer after point. +The line point is in is deleted if and only if it contains a +match for regexp starting after point. If REGEXP contains upper case characters (excluding those preceded by `\\'), the matching is case-sensitive. Second and third arg RSTART and REND specify the region to operate on. +Lines partially contained in this region are deleted if and only if +they contain a match entirely contained in it. Interactively, in Transient Mark mode when the mark is active, operate on the contents of the region. Otherwise, operate from point to the -end of the buffer." +end of (the accessible portion of) the buffer. When calling this function +from Lisp, you can pretend that it was called interactively by passing +a non-nil INTERACTIVE argument. + +If a match is split across lines, all the lines it lies in are deleted. +They are deleted _before_ looking for the next match. Hence, a match +starting on the same line at which another match ended is ignored." (interactive (progn @@ -591,7 +624,7 @@ end of the buffer." (progn (goto-char (min rstart rend)) (setq rend (copy-marker (max rstart rend)))) - (if (and transient-mark-mode mark-active) + (if (and interactive transient-mark-mode mark-active) (setq rstart (region-beginning) rend (copy-marker (region-end))) (setq rstart (point) @@ -603,13 +636,18 @@ end of the buffer." (while (and (< (point) rend) (re-search-forward regexp rend t)) (delete-region (save-excursion (goto-char (match-beginning 0)) - (beginning-of-line) + (forward-line 0) (point)) - (progn (forward-line 1) (point))))))) + (progn (forward-line 1) (point)))))) + (set-marker rend nil) + nil) -(defun how-many (regexp &optional rstart rend) - "Print number of matches for REGEXP following point. +(defun how-many (regexp &optional rstart rend interactive) + "Print and return number of matches for REGEXP following point. +When called from Lisp and INTERACTIVE is omitted or nil, just return +the number, do not print it; if INTERACTIVE is t, the function behaves +in all respects has if it had been called interactively. If REGEXP contains upper case characters (excluding those preceded by `\\'), the matching is case-sensitive. @@ -618,18 +656,24 @@ Second and third arg RSTART and REND specify the region to operate on. Interactively, in Transient Mark mode when the mark is active, operate on the contents of the region. Otherwise, operate from point to the -end of the buffer." +end of (the accessible portion of) the buffer. + +This function starts looking for the next match from the end of +the previous match. Hence, it ignores matches that overlap +a previously found match." (interactive (keep-lines-read-args "How many matches for (regexp): ")) (save-excursion (if rstart - (goto-char (min rstart rend)) - (if (and transient-mark-mode mark-active) + (progn + (goto-char (min rstart rend)) + (setq rend (max rstart rend))) + (if (and interactive transient-mark-mode mark-active) (setq rstart (region-beginning) - rend (copy-marker (region-end))) + rend (region-end)) (setq rstart (point) - rend (point-max-marker))) + rend (point-max))) (goto-char rstart)) (let ((count 0) opoint @@ -641,7 +685,10 @@ end of the buffer." (if (= opoint (point)) (forward-char 1) (setq count (1+ count)))) - (message "%d occurrences" count)))) + (when interactive (message "%d occurrence%s" + count + (if (= count 1) "" "s"))) + count))) (defvar occur-mode-map @@ -672,7 +719,7 @@ See `occur-revert-function'.") :group 'matching) (defcustom occur-hook nil - "Hook run when `occur' is called." + "Hook run by Occur when there are any matches." :type 'hook :group 'matching) @@ -879,7 +926,7 @@ If the value is nil, don't highlight the buffer names specially." Here `original-buffer-name' is the buffer name were occur was originally run. When given the prefix argument, the renaming will not clobber the existing buffer(s) of that name, but use `generate-new-buffer-name' instead. -You can add this to `occur-hook' if you always want a separate *Occur* +You can add this to `occur-mode-hook' if you always want a separate *Occur* buffer for each buffer where you invoke `occur'." (interactive "P") (with-current-buffer @@ -892,8 +939,7 @@ buffer for each buffer where you invoke `occur'." (defun occur (regexp &optional nlines) "Show all lines in the current buffer containing a match for REGEXP. - -If a match spreads across multiple lines, all those lines are shown. +This function can not handle matches that span more than one line. Each line is displayed with NLINES lines before and after, or -NLINES before if NLINES is negative. @@ -996,14 +1042,13 @@ See also `multi-occur'." (if (= count 1) "" "es") regexp)) (setq occur-revert-arguments (list regexp nlines bufs)) - (if (> count 0) - (progn - (display-buffer occur-buf) - (setq next-error-last-buffer occur-buf)) - (kill-buffer occur-buf))) - (setq buffer-read-only t) - (set-buffer-modified-p nil) - (run-hooks 'occur-hook))))) + (if (= count 0) + (kill-buffer occur-buf) + (display-buffer occur-buf) + (setq next-error-last-buffer occur-buf) + (setq buffer-read-only t) + (set-buffer-modified-p nil) + (run-hooks 'occur-hook))))))) (defun occur-engine-add-prefix (lines) (mapcar @@ -1603,15 +1648,15 @@ make, or the user didn't cancel the call." ;; Change markers to numbers in the match data ;; since lots of markers slow down editing. (push (list (point) replaced -;;; If the replacement has already happened, all we need is the -;;; current match start and end. We could get this with a trivial -;;; match like -;;; (save-excursion (goto-char (match-beginning 0)) -;;; (search-forward (match-string 0)) -;;; (match-data t)) -;;; if we really wanted to avoid manually constructing match data. -;;; Adding current-buffer is necessary so that match-data calls can -;;; return markers which are appropriate for editing. +;;; If the replacement has already happened, all we need is the +;;; current match start and end. We could get this with a trivial +;;; match like +;;; (save-excursion (goto-char (match-beginning 0)) +;;; (search-forward (match-string 0)) +;;; (match-data t)) +;;; if we really wanted to avoid manually constructing match data. +;;; Adding current-buffer is necessary so that match-data calls can +;;; return markers which are appropriate for editing. (if replaced (list (match-beginning 0) diff --git a/lisp/ses.el b/lisp/ses.el index 09f7809752b..bad396bbe94 100644 --- a/lisp/ses.el +++ b/lisp/ses.el @@ -49,7 +49,7 @@ ;;---------------------------------------------------------------------------- (defgroup ses nil - "Simple Emacs Spreadsheet" + "Simple Emacs Spreadsheet." :group 'applications :prefix "ses-" :version "21.1") @@ -376,7 +376,7 @@ macro to prevent propagate-on-load viruses." ;;print area (excluding the terminating newline) (setq ses--col-widths widths ses--linewidth (apply '+ -1 (mapcar '1+ widths)) - ses--blank-line (concat (make-string ses--linewidth ? ) "\n")) + ses--blank-line (concat (make-string ses--linewidth ?\s) "\n")) t) (defmacro ses-column-printers (printers) @@ -798,7 +798,7 @@ preceding cell has spilled over." (cond ((< len width) ;;Fill field to length with spaces - (setq len (make-string (- width len) ? ) + (setq len (make-string (- width len) ?\s) text (if (eq ses-call-printer-return t) (concat text len) (concat len text)))) @@ -816,7 +816,7 @@ preceding cell has spilled over." maxcol (1+ maxcol))) (if (<= len maxwidth) ;;Fill to complete width of all the fields spanned - (setq text (concat text (make-string (- maxwidth len) ? ))) + (setq text (concat text (make-string (- maxwidth len) ?\s))) ;;Not enough room to end of line or next non-nil field. Truncate ;;if string or decimal; otherwise fill with error indicator (setq sig `(error "Too wide" ,text)) @@ -906,12 +906,12 @@ printer signaled one (and \"%s\" is used as the default printer), else nil." COL=NUMCOLS. Deletes characters if CHANGE < 0. Caller should bind inhibit-quit to t." (let ((inhibit-read-only t) - (blank (if (> change 0) (make-string change ? ))) + (blank (if (> change 0) (make-string change ?\s))) (at-end (= col ses--numcols))) (ses-set-with-undo 'ses--linewidth (+ ses--linewidth change)) ;;ses-set-with-undo always returns t for strings. (1value (ses-set-with-undo 'ses--blank-line - (concat (make-string ses--linewidth ? ) "\n"))) + (concat (make-string ses--linewidth ?\s) "\n"))) (dotimes (row ses--numrows) (ses-goto-print row col) (when at-end @@ -2901,7 +2901,7 @@ columns to include in width (default = 0)." (let ((printer (or (ses-col-printer col) ses--default-printer)) (width (ses-col-width col)) half) - (or fill (setq fill ? )) + (or fill (setq fill ?\s)) (or span (setq span 0)) (setq value (ses-call-printer printer value)) (dotimes (x span) diff --git a/lisp/shell.el b/lisp/shell.el index 7a9f261859d..a8f4790a054 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -108,16 +108,16 @@ ;;; Customization and Buffer Variables (defgroup shell nil - "Running shell from within Emacs buffers" + "Running shell from within Emacs buffers." :group 'processes :group 'unix) (defgroup shell-directories nil - "Directory support in shell mode" + "Directory support in shell mode." :group 'shell) (defgroup shell-faces nil - "Faces in shell buffers" + "Faces in shell buffers." :group 'shell) ;;;###autoload @@ -178,7 +178,7 @@ This is a fine thing to set in your `.emacs' file.") (defvar shell-file-name-quote-list (if (memq system-type '(ms-dos windows-nt)) nil - (append shell-delimiter-argument-list '(?\ ?\* ?\! ?\" ?\' ?\` ?\# ?\\))) + (append shell-delimiter-argument-list '(?\s ?\* ?\! ?\" ?\' ?\` ?\# ?\\))) "List of characters to quote when in a file name. This variable is used to initialize `comint-file-name-quote-list' in the shell buffer. The value may depend on the operating system or shell. diff --git a/lisp/simple.el b/lisp/simple.el index 1ee4580144b..3ee0a91c87d 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4542,22 +4542,29 @@ With a prefix argument, set VARIABLE to VALUE buffer-locally." (read-variable "Set variable: "))) (minibuffer-help-form '(describe-variable var)) (prop (get var 'variable-interactive)) - (prompt (format "Set %s%s to value: " var + (obsolete (car (get var 'byte-obsolete-variable))) + (prompt (format "Set %s %s to value: " var (cond ((local-variable-p var) - " (buffer-local)") + "(buffer-local)") ((or current-prefix-arg (local-variable-if-set-p var)) - " buffer-locally") - (t " globally")))) - (val (if prop - ;; Use VAR's `variable-interactive' property - ;; as an interactive spec for prompting. - (call-interactively `(lambda (arg) - (interactive ,prop) - arg)) - (read - (read-string prompt nil - 'set-variable-value-history))))) + "buffer-locally") + (t "globally")))) + (val (progn + (when obsolete + (message (concat "`%S' is obsolete; " + (if (symbolp obsolete) "use `%S' instead" "%s")) + var obsolete) + (sit-for 3)) + (if prop + ;; Use VAR's `variable-interactive' property + ;; as an interactive spec for prompting. + (call-interactively `(lambda (arg) + (interactive ,prop) + arg)) + (read + (read-string prompt nil + 'set-variable-value-history)))))) (list var val current-prefix-arg))) (and (custom-variable-p variable) diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el index 55000391777..9e129c3571d 100644 --- a/lisp/smerge-mode.el +++ b/lisp/smerge-mode.el @@ -48,6 +48,9 @@ (eval-when-compile (require 'cl)) +;;; The real definition comes later. +(defvar smerge-mode) + (defgroup smerge () "Minor mode to resolve diff3 conflicts." :group 'tools diff --git a/lisp/startup.el b/lisp/startup.el index f1cce0325f5..1f7076b535a 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -44,7 +44,7 @@ The value is nil if the selected frame is on a text-only-terminal.") (make-variable-frame-local 'window-system) (defgroup initialization nil - "Emacs start-up procedure" + "Emacs start-up procedure." :group 'internal) (defcustom inhibit-startup-message nil @@ -294,6 +294,8 @@ from being initialized." (defvar no-blinking-cursor nil) +(defvar default-frame-background-mode) + (defvar pure-space-overflow nil "Non-nil if building Emacs overflowed pure space.") diff --git a/lisp/strokes.el b/lisp/strokes.el index 644ec2c4f62..396a44cec24 100644 --- a/lisp/strokes.el +++ b/lisp/strokes.el @@ -208,7 +208,7 @@ static char * stroke_xpm[] = { ;;; user variables... (defgroup strokes nil - "Control Emacs through mouse strokes" + "Control Emacs through mouse strokes." :link '(emacs-commentary-link "strokes") :link '(url-link "http://www.mit.edu/people/cadet/strokes-help.html") :group 'mouse) @@ -753,7 +753,7 @@ Optional EVENT is acceptable as the starting event of the stroke" (progn (goto-char point) (subst-char-in-region point (1+ point) - ?\ strokes-character)) + ?\s strokes-character)) ;; otherwise, we can start drawing the next time... (setq safe-to-draw-p t)) (push (cdr (mouse-pixel-position)) @@ -763,7 +763,7 @@ Optional EVENT is acceptable as the starting event of the stroke" ;; clean up strokes buffer and then bury it. (when (equal (buffer-name) strokes-buffer-name) (subst-char-in-region (point-min) (point-max) - strokes-character ?\ ) + strokes-character ?\s) (goto-char (point-min)) (bury-buffer)))) ;; Otherwise, don't use strokes buffer and read stroke silently @@ -813,7 +813,7 @@ Optional EVENT is acceptable as the starting event of the stroke" (when point (goto-char point) (subst-char-in-region point (1+ point) - ?\ strokes-character)) + ?\s strokes-character)) (push (cdr (mouse-pixel-position)) pix-locs))) (setq event (read-event))) @@ -831,7 +831,7 @@ Optional EVENT is acceptable as the starting event of the stroke" ;; protected (when (equal (buffer-name) strokes-buffer-name) (subst-char-in-region (point-min) (point-max) - strokes-character ?\ ) + strokes-character ?\s) (goto-char (point-min)) (bury-buffer))))))) @@ -1035,7 +1035,7 @@ o Strokes are a bit computer-dependent in that they depend somewhat on "Erase the contents of the current buffer and fill it with whitespace." (erase-buffer) (loop repeat (frame-height) do - (insert-char ?\ (1- (frame-width))) + (insert-char ?\s (1- (frame-width))) (newline)) (goto-char (point-min))) @@ -1169,7 +1169,7 @@ the stroke as a character in some language." (insert strokes-xpm-header) (loop repeat 33 do (insert ?\") - (insert-char ?\ 33) + (insert-char ?\s 33) (insert "\",") (newline) finally @@ -1195,7 +1195,7 @@ the stroke as a character in some language." ;; Otherwise, just plot the point... (goto-line (+ 17 y)) (forward-char (+ 2 x)) - (subst-char-in-region (point) (1+ (point)) ?\ ?\*))) + (subst-char-in-region (point) (1+ (point)) ?\s ?\*))) ((strokes-lift-p point) ;; a lift--tell the loop to X out the next point... (setq lift-flag t)))) @@ -1286,7 +1286,7 @@ the stroke as a character in some language." ;; (command-name (symbol-name (cdr def)))) ;; (strokes-xpm-for-stroke stroke " *strokes-xpm*") ;; (newline 2) -;; (insert-char ?\ 45) +;; (insert-char ?\s 45) ;; (beginning-of-line) ;; (insert command-name) ;; (beginning-of-line) @@ -1342,7 +1342,7 @@ If STROKES-MAP is not given, `strokes-global-map' will be used instead." (prin1-to-string (cdr def))))) (strokes-xpm-for-stroke stroke " *strokes-xpm*") (newline 2) - (insert-char ?\ 45) + (insert-char ?\s 45) (beginning-of-line) (insert command-name) (beginning-of-line) @@ -1515,7 +1515,7 @@ Encode/decode your strokes with \\[strokes-encode-buffer], (defsubst strokes-xpm-char-bit-p (char) "Non-nil if CHAR represents an `on' or `off' bit in the XPM." - (or (eq char ?\ ) + (or (eq char ?\s) (eq char ?*))) ;;(defsubst strokes-xor (a b) ### Should I make this an inline function? ### @@ -1716,7 +1716,7 @@ Store XPM in buffer BUFNAME if supplied \(default is ` *strokes-xpm*'\)" (insert-char (if current-char-is-on-p ?* - ?\ ) + ?\s) (strokes-xpm-decode-char (char-after))) (delete-char 1) (setq current-char-is-on-p (not current-char-is-on-p))) diff --git a/lisp/subr.el b/lisp/subr.el index c7b565d48f5..846632d0832 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -937,7 +937,7 @@ the hook's buffer-local value rather than its default value." (set hook hook-value)))))) (defun add-to-list (list-var element &optional append) - "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet. + "Add ELEMENT to the value of LIST-VAR if it isn't there yet. The test for presence of ELEMENT is done with `equal'. If ELEMENT is added, it is added at the beginning of the list, unless the optional argument APPEND is non-nil, in which case @@ -959,15 +959,18 @@ other hooks, such as major mode hooks, can do the job." (defun add-to-ordered-list (list-var element &optional order) - "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet. + "Add ELEMENT to the value of LIST-VAR if it isn't there yet. The test for presence of ELEMENT is done with `eq'. The resulting list is reordered so that the elements are in the order given by each element's numeric list order. Elements without a numeric list order are placed at the end of the list. -If the third optional argument ORDER is non-nil, set the -element's list order to the given value. +If the third optional argument ORDER is a number (integer or +float), set the element's list order to the given value. If +ORDER is nil or omitted, do not change the numeric order of +ELEMENT. If ORDER has any other value, remove the numeric order +of ELEMENT if it has one. The list order for each element is stored in LIST-VAR's `list-order' property. diff --git a/lisp/term.el b/lisp/term.el index 3295c87da14..122953af124 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -405,7 +405,7 @@ (require 'ehelp) (defgroup term nil - "General command interpreter in a window" + "General command interpreter in a window." :group 'processes :group 'unix) @@ -1574,7 +1574,7 @@ See also `term-read-input-ring'." (sit-for 0) (message "Hit space to flush") (let ((ch (read-event))) - (if (eq ch ?\ ) + (if (eq ch ?\s) (set-window-configuration conf) (setq unread-command-events (list ch))))))) @@ -4045,7 +4045,7 @@ Typing SPC flushes the help buffer." (progn (mouse-choose-completion first) (set-window-configuration conf)) - (if (eq first ?\ ) + (if (eq first ?\s) (set-window-configuration conf) (setq unread-command-events (listify-key-sequence key))))))) diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el index f5937701d1d..6e45cced2d3 100644 --- a/lisp/term/rxvt.el +++ b/lisp/term/rxvt.el @@ -160,7 +160,7 @@ for the currently selected frame." "Set background mode as appropriate for the default rxvt colors." (let ((fgbg (server-getenv "COLORFGBG")) bg rgb) - (setq frame-background-mode 'light) ; default + (setq default-frame-background-mode 'light) (when (and fgbg (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg)) (setq bg (string-to-number (substring fgbg (match-beginning 1)))) @@ -173,7 +173,7 @@ for the currently selected frame." ;; The following line assumes that white is the 15th ;; color in rxvt-standard-colors. (* (apply '+ (car (cddr (nth 15 rxvt-standard-colors)))) 0.6)) - (setq frame-background-mode 'dark))) + (setq default-frame-background-mode 'dark))) (frame-set-background-mode (selected-frame)))) ;; Do it! diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el index af4e065779a..6465b08daf1 100644 --- a/lisp/term/xterm.el +++ b/lisp/term/xterm.el @@ -376,7 +376,7 @@ versions of xterm." "Set background mode as appropriate for the default rxvt colors." (let ((fgbg (server-getenv "COLORFGBG")) bg rgb) - (setq frame-background-mode 'light) ; default + (setq default-frame-background-mode 'light) (when (and fgbg (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg)) (setq bg (string-to-number (substring fgbg (match-beginning 1)))) @@ -389,7 +389,7 @@ versions of xterm." ;; The following line assumes that white is the 15th ;; color in xterm-standard-colors. (* (apply '+ (car (cddr (nth 15 xterm-standard-colors)))) 0.6)) - (setq frame-background-mode 'dark))) + (setq default-frame-background-mode 'dark))) (frame-set-background-mode (selected-frame)))) ;; Do it! diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el index 2d40d6da026..3729453b82f 100644 --- a/lisp/textmodes/artist.el +++ b/lisp/textmodes/artist.el @@ -502,7 +502,18 @@ This variable is initialized by the artist-make-prev-next-op-alist function.") (if artist-picture-compatibility (require 'picture)) - +;; Variables that are made local in artist-mode-init +(defvar artist-key-is-drawing nil) +(defvar artist-key-endpoint1 nil) +(defvar artist-key-poly-point-list nil) +(defvar artist-key-shape nil) +(defvar artist-key-draw-how nil) +(defvar artist-popup-menu-table nil) +(defvar artist-key-compl-table nil) +(defvar artist-rb-save-data nil) +(defvar artist-arrow-point-1 nil) +(defvar artist-arrow-point-2 nil) + (defvar artist-mode-map (let ((map (make-sparse-keymap))) (setq artist-mode-map (make-sparse-keymap)) @@ -1370,21 +1381,6 @@ Keymap summary minor-mode-map-alist))) - -(eval-when-compile - ;; Variables that are made local in artist-mode-init - (defvar artist-key-is-drawing nil) - (defvar artist-key-endpoint1 nil) - (defvar artist-key-poly-point-list nil) - (defvar artist-key-shape nil) - (defvar artist-key-draw-how nil) - (defvar artist-popup-menu-table nil) - (defvar artist-key-compl-table nil) - (defvar artist-rb-save-data nil) - (defvar artist-arrow-point-1 nil) - (defvar artist-arrow-point-2 nil)) - - ;; Init and exit (defun artist-mode-init () "Init Artist mode. This will call the hook `artist-mode-init-hook'." @@ -2875,7 +2871,7 @@ Returns a list of strings." (defun artist-figlet-get-extra-args () "Read any extra arguments for figlet." - (let ((extra-args (read-input "Extra args to figlet: "))) + (let ((extra-args (read-string "Extra args to figlet: "))) (if (string= extra-args "") nil extra-args))) @@ -2916,7 +2912,7 @@ This is done by calling the function specified by `artist-text-renderer', which must return a list of strings, to be inserted in the buffer. Text already in the buffer ``shines thru'' blanks in the rendered text." - (let* ((input-text (read-input "Type text to render: ")) + (let* ((input-text (read-string "Type text to render: ")) (rendered-text (artist-funcall artist-text-renderer input-text))) (artist-text-insert-see-thru x y rendered-text))) @@ -2927,7 +2923,7 @@ This is done by calling the function specified by `artist-text-renderer', which must return a list of strings, to be inserted in the buffer. Blanks in the rendered text overwrites any text in the buffer." - (let* ((input-text (read-input "Type text to render: ")) + (let* ((input-text (read-string "Type text to render: ")) (rendered-text (artist-funcall artist-text-renderer input-text))) (artist-text-insert-overwrite x y rendered-text))) @@ -3850,8 +3846,8 @@ Optional argument STATE can be used to set state (default is nil)." (x2 (artist-endpoint-get-x ep2)) (y2 (artist-endpoint-get-y ep2)) (dir1 (artist-find-direction x2 y2 x1 y1)) - (epn (artist-last point-list)) - (epn-1 (artist-last point-list 2)) + (epn (last point-list)) + (epn-1 (last point-list 2)) (xn (artist-endpoint-get-x epn)) (yn (artist-endpoint-get-y epn)) (xn-1 (artist-endpoint-get-x epn-1)) diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index 5f4a83b07eb..956d2947456 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el @@ -48,12 +48,12 @@ ;; User Options: (defgroup bibtex nil - "BibTeX mode" + "BibTeX mode." :group 'tex :prefix "bibtex-") (defgroup bibtex-autokey nil - "Generate automatically a key from the author/editor and the title field" + "Generate automatically a key from the author/editor and the title field." :group 'bibtex :prefix "bibtex-autokey-") @@ -2800,7 +2800,7 @@ if that value is non-nil. (set (make-local-variable 'fill-paragraph-function) 'bibtex-fill-field) (set (make-local-variable 'fill-prefix) (make-string (+ bibtex-entry-offset bibtex-contline-indentation) - ? )) + ?\s)) (set (make-local-variable 'font-lock-defaults) '(bibtex-font-lock-keywords nil t ((?$ . "\"") diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el index b1b5abc488f..b6bcb83e2a3 100644 --- a/lisp/textmodes/enriched.el +++ b/lisp/textmodes/enriched.el @@ -47,7 +47,7 @@ ;;; (defgroup enriched nil - "Read and save files in text/enriched format" + "Read and save files in text/enriched format." :group 'wp) (defcustom enriched-verbose t diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index 8c2d0937a5a..fc74fc67041 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -66,10 +66,6 @@ 'emacs)) "The type of Emacs we are currently running.") -(defvar flyspell-use-local-map - (or (eq flyspell-emacs 'xemacs) - (not (string< emacs-version "20")))) - ;*---------------------------------------------------------------------*/ ;* User configuration ... */ ;*---------------------------------------------------------------------*/ @@ -403,34 +399,22 @@ property of the major mode name.") ;*---------------------------------------------------------------------*/ ;* The minor mode declaration. */ ;*---------------------------------------------------------------------*/ -(eval-when-compile (defvar flyspell-local-mouse-map)) - (defvar flyspell-mouse-map (let ((map (make-sparse-keymap))) - (if flyspell-use-meta-tab - (define-key map "\M-\t" #'flyspell-auto-correct-word)) (define-key map (if (featurep 'xemacs) [button2] [down-mouse-2]) #'flyspell-correct-word) - (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word) - (define-key map [(control \,)] 'flyspell-goto-next-error) - (define-key map [(control \.)] 'flyspell-auto-correct-word) - map)) + map) + "Keymap for Flyspell to put on erroneous words.") (defvar flyspell-mode-map (let ((map (make-sparse-keymap))) - ;; mouse, keyboard bindings and misc definition (if flyspell-use-meta-tab (define-key map "\M-\t" 'flyspell-auto-correct-word)) - (cond - ;; I don't understand this test, so I left it as is. --Stef - ((or (featurep 'xemacs) flyspell-use-local-map) - (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word) - (define-key map [(control ?\,)] 'flyspell-goto-next-error) - (define-key map [(control ?\.)] 'flyspell-auto-correct-word))) - map)) - -;; the name of the overlay property that defines the keymap -(defvar flyspell-overlay-keymap-property-name 'keymap) + (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word) + (define-key map [(control ?\,)] 'flyspell-goto-next-error) + (define-key map [(control ?\.)] 'flyspell-auto-correct-word) + map) + "Minor mode keymap for Flyspell mode--for the whole buffer.") ;; dash character machinery (defvar flyspell-consider-dash-as-word-delimiter-flag nil @@ -569,22 +553,6 @@ in your .emacs file. (let ((mode-predicate (get major-mode 'flyspell-mode-predicate))) (if mode-predicate (setq flyspell-generic-check-word-p mode-predicate))) - ;; work around the fact that the `local-map' text-property replaces the - ;; buffer's local map rather than shadowing it. - (set (make-local-variable 'flyspell-mouse-map) - (let ((map (copy-keymap flyspell-mouse-map))) - (set-keymap-parent map (current-local-map)) - (if (and (eq flyspell-emacs 'emacs) - (not (string< emacs-version "20"))) - (define-key map '[tool-bar] nil)) - map)) - (set (make-local-variable 'flyspell-mode-map) - (let ((map (copy-keymap flyspell-mode-map))) - (set-keymap-parent map (current-local-map)) - (if (and (eq flyspell-emacs 'emacs) - (not (string< emacs-version "20"))) - (define-key map '[tool-bar] nil)) - map)) ;; the welcome message (if (and flyspell-issue-message-flag flyspell-issue-welcome-flag @@ -1570,10 +1538,7 @@ for the overlay." (overlay-put flyspell-overlay 'flyspell-overlay t) (overlay-put flyspell-overlay 'evaporate t) (overlay-put flyspell-overlay 'help-echo "mouse-2: correct word at point") - (if flyspell-use-local-map - (overlay-put flyspell-overlay - flyspell-overlay-keymap-property-name - flyspell-mouse-map)) + (overlay-put flyspell-overlay 'keymap flyspell-mouse-map) (when (eq face 'flyspell-incorrect) (and (stringp flyspell-before-incorrect-word-string) (overlay-put flyspell-overlay 'before-string diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index afdfc951b96..5d966c07abf 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -1468,80 +1468,79 @@ quit spell session exited." end (car (cdr (cdr word))) word (car word)) - ;; now check spelling of word if it has 3 or more characters. - (cond - ((> (length word) 2) - (or quietly - (message "Checking spelling of %s..." - (funcall ispell-format-word word))) - (ispell-send-string "%\n") ; put in verbose mode - (ispell-send-string (concat "^" word "\n")) - ;; wait until ispell has processed word - (while (progn - (ispell-accept-output) - (not (string= "" (car ispell-filter))))) - ;;(ispell-send-string "!\n") ;back to terse mode. - (setq ispell-filter (cdr ispell-filter)) ; remove extra \n - (if (and ispell-filter (listp ispell-filter)) - (if (> (length ispell-filter) 1) - (error "Ispell and its process have different character maps") - (setq poss (ispell-parse-output (car ispell-filter))))) - (cond ((eq poss t) - (or quietly - (message "%s is correct" - (funcall ispell-format-word word))) - (and (fboundp 'extent-at) - (extent-at start) - (delete-extent (extent-at start)))) - ((stringp poss) - (or quietly - (message "%s is correct because of root %s" - (funcall ispell-format-word word) - (funcall ispell-format-word poss))) - (and (fboundp 'extent-at) - (extent-at start) - (delete-extent (extent-at start)))) - ((null poss) (message "Error in ispell process")) - (ispell-check-only ; called from ispell minor mode. - (if (fboundp 'make-extent) - (let ((ext (make-extent start end))) - (set-extent-property ext 'face ispell-highlight-face) - (set-extent-property ext 'priority 2000)) - (beep) - (message "%s is incorrect"(funcall ispell-format-word word)))) - (t ; prompt for correct word. - (save-window-excursion - (setq replace (ispell-command-loop - (car (cdr (cdr poss))) - (car (cdr (cdr (cdr poss)))) - (car poss) start end))) - (cond ((equal 0 replace) - (ispell-add-per-file-word-list (car poss))) - (replace - (setq new-word (if (atom replace) replace (car replace)) - cursor-location (+ (- (length word) (- end start)) - cursor-location)) - (if (not (equal new-word (car poss))) - (progn - (delete-region start end) - (setq start (point)) - (ispell-insert-word new-word) - (setq end (point)))) - (if (not (atom replace)) ;recheck spelling of replacement - (progn - (if (car (cdr replace)) ; query replace requested - (save-window-excursion - (query-replace word new-word t))) - (goto-char start) - ;; single word could be split into multiple words - (setq ispell-quit (not (ispell-region start end))) - )))) - ;; keep if rechecking word and we keep choices win. - (if (get-buffer ispell-choices-buffer) - (kill-buffer ispell-choices-buffer)))) - (ispell-pdict-save ispell-silently-savep) - ;; NB: Cancels ispell-quit incorrectly if called from ispell-region - (if ispell-quit (setq ispell-quit nil replace 'quit)))) + ;; At this point it used to ignore 2-letter words. + ;; But that is silly; if the user asks for it, we should do it. - rms. + (or quietly + (message "Checking spelling of %s..." + (funcall ispell-format-word word))) + (ispell-send-string "%\n") ; put in verbose mode + (ispell-send-string (concat "^" word "\n")) + ;; wait until ispell has processed word + (while (progn + (ispell-accept-output) + (not (string= "" (car ispell-filter))))) + ;;(ispell-send-string "!\n") ;back to terse mode. + (setq ispell-filter (cdr ispell-filter)) ; remove extra \n + (if (and ispell-filter (listp ispell-filter)) + (if (> (length ispell-filter) 1) + (error "Ispell and its process have different character maps") + (setq poss (ispell-parse-output (car ispell-filter))))) + (cond ((eq poss t) + (or quietly + (message "%s is correct" + (funcall ispell-format-word word))) + (and (fboundp 'extent-at) + (extent-at start) + (delete-extent (extent-at start)))) + ((stringp poss) + (or quietly + (message "%s is correct because of root %s" + (funcall ispell-format-word word) + (funcall ispell-format-word poss))) + (and (fboundp 'extent-at) + (extent-at start) + (delete-extent (extent-at start)))) + ((null poss) (message "Error in ispell process")) + (ispell-check-only ; called from ispell minor mode. + (if (fboundp 'make-extent) + (let ((ext (make-extent start end))) + (set-extent-property ext 'face ispell-highlight-face) + (set-extent-property ext 'priority 2000)) + (beep) + (message "%s is incorrect"(funcall ispell-format-word word)))) + (t ; prompt for correct word. + (save-window-excursion + (setq replace (ispell-command-loop + (car (cdr (cdr poss))) + (car (cdr (cdr (cdr poss)))) + (car poss) start end))) + (cond ((equal 0 replace) + (ispell-add-per-file-word-list (car poss))) + (replace + (setq new-word (if (atom replace) replace (car replace)) + cursor-location (+ (- (length word) (- end start)) + cursor-location)) + (if (not (equal new-word (car poss))) + (progn + (delete-region start end) + (setq start (point)) + (ispell-insert-word new-word) + (setq end (point)))) + (if (not (atom replace)) ;recheck spelling of replacement + (progn + (if (car (cdr replace)) ; query replace requested + (save-window-excursion + (query-replace word new-word t))) + (goto-char start) + ;; single word could be split into multiple words + (setq ispell-quit (not (ispell-region start end))) + )))) + ;; keep if rechecking word and we keep choices win. + (if (get-buffer ispell-choices-buffer) + (kill-buffer ispell-choices-buffer)))) + (ispell-pdict-save ispell-silently-savep) + ;; NB: Cancels ispell-quit incorrectly if called from ispell-region + (if ispell-quit (setq ispell-quit nil replace 'quit)) (goto-char cursor-location) ; return to original location replace))) diff --git a/lisp/textmodes/makeinfo.el b/lisp/textmodes/makeinfo.el index 9136cb52202..7327cf9840a 100644 --- a/lisp/textmodes/makeinfo.el +++ b/lisp/textmodes/makeinfo.el @@ -50,7 +50,7 @@ (require 'info) (defgroup makeinfo nil - "Run makeinfo conveniently" + "Run makeinfo conveniently." :group 'docs) diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el index 635bb6b5a98..1551738050b 100644 --- a/lisp/textmodes/org.el +++ b/lisp/textmodes/org.el @@ -1,11 +1,11 @@ -;;; org.el --- Outline-based notes management and organizer +;; org.el --- Outline-based notes management and organizer ;; Carstens outline-mode for keeping track of everything. ;; Copyright (c) 2004, 2005 Free Software Foundation ;; ;; Author: Carsten Dominik <dominik at science dot uva dot nl> ;; Keywords: outlines, hypermedia, calendar ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ -;; Version: 3.11 +;; Version: 3.12 ;; ;; This file is part of GNU Emacs. ;; @@ -80,10 +80,20 @@ ;; ;; Changes: ;; ------- +;; Version 3.12 +;; - Tables can store formulas (one per column) and compute fields. +;; Not quite like a full spreadsheet, but very powerful. +;; - table.el keybinding is now `C-c ~'. +;; - Numeric argument to org-cycle does `show-subtree' above on level ARG. +;; - Small changes to keys in agenda buffer. Affected keys: +;; [w] weekly view; [d] daily view; [D] toggle diary inclusion. +;; - Bug fixes. +;; ;; Version 3.11 ;; - Links inserted with C-c C-l are now by default enclosed in angle ;; brackets. See the new variable `org-link-format'. ;; - ">" terminates a link, this is a way to have several links in a line. +;; Both "<" and ">" are no longer allowed as characters in a link. ;; - Archiving of finished tasks. ;; - C-<up>/<down> bindings removed, to allow access to paragraph commands. ;; - Compatibility with CUA-mode (see variable `org-CUA-compatible'). @@ -168,7 +178,7 @@ ;;; Customization variables -(defvar org-version "3.11" +(defvar org-version "3.12" "The version number of the file org.el.") (defun org-version () (interactive) @@ -183,7 +193,7 @@ "Are we using the new outline mode?") (defgroup org nil - "Outline-based notes management and organizer " + "Outline-based notes management and organizer." :tag "Org" :group 'outlines :group 'hypermedia @@ -584,7 +594,7 @@ When nil, only the days which actually have entries are shown." ;; require a variable ndays treatment. (defcustom org-agenda-start-on-weekday 1 "Non-nil means, start the overview always on the specified weekday. -0 Denotes Sunday, 1 denotes Monday etc. +0 denotes Sunday, 1 denotes Monday etc. When nil, always start on the current day." :group 'org-agenda :type '(choice (const :tag "Today" nil) @@ -613,8 +623,8 @@ the entries for specific days." (defcustom org-calendar-to-agenda-key [?c] "The key to be installed in `calendar-mode-map' for switching to the agenda. The command `org-calendar-goto-agenda' will be bound to this key. The -default is the character `c' because then`c' can be used to switch back and -force between agenda and calendar." +default is the character `c' because then `c' can be used to switch back and +forth between agenda and calendar." :group 'org-agenda :type 'sexp) @@ -622,7 +632,7 @@ force between agenda and calendar." "Sorting structure for the agenda items of a single day. This is a list of symbols which will be used in sequence to determine if an entry should be listed before another entry. The following -symbols are recognized. +symbols are recognized: time-up Put entries with time-of-day indications first, early first time-down Put entries with time-of-day indications first, late first @@ -715,9 +725,9 @@ of `org-agenda-prefix-format' or `org-timeline-prefix-format'.") (defcustom org-agenda-use-time-grid t "Non-nil means, show a time grid in the agenda schedule. A time grid is a set of lines for specific times (like every two hours between -8:00 and 20:00. The items scheduled for a day at specific times are +8:00 and 20:00). The items scheduled for a day at specific times are sorted in between these lines. -For deails about when the grid will be shown, and what it will look like, see +For details about when the grid will be shown, and what it will look like, see the variable `org-agenda-time-grid'." :group 'org-agenda :type 'boolean) @@ -838,7 +848,7 @@ unnecessary clutter." This string consists of two parts, separated by a double-colon. The first part is a file name - when omitted, archiving happens in the same -file. %s will be replaced by the current file name (without directory part). +file. `%s' will be replaced by the current file name (without directory part). Archiving to a different file is useful to keep archived entries from contributing to the Org-mode Agenda. @@ -905,7 +915,7 @@ recommend an additional URL: prefix, so the format would be \"<URL:%s>\"." When nil, it becomes possible to put several links into a line. Note that in tables, a link never extends accross fields, so in a table it is always possible to put several links into a line. -Changing this varable requires a re-launch of Emacs of become effective." +Changing this variable requires a re-launch of Emacs to become effective." :group 'org-link :type 'boolean) @@ -970,7 +980,7 @@ another window." (const find-file-other-frame))))) (defcustom org-usenet-links-prefer-google nil - "Non-nil means, `org-store-link' will create web links to google groups. + "Non-nil means, `org-store-link' will create web links to Google groups. When nil, Gnus will be used for such links. Using a prefix arg to the command \\[org-store-link] (`org-store-link') negates this setting for the duration of the command." @@ -1109,13 +1119,13 @@ When nil, new notes will be filed to the end of a file or entry." When nil, such lines will be treated like ordinary lines. When equal to the symbol `optimized', the table editor will be optimized to -do the following +do the following: - Use automatic overwrite mode in front of whitespace in table fields. - This make the structure of the table stay in tact as long as the edited + This makes the structure of the table stay intact as long as the edited field does not exceed the column width. - Minimize the number of realigns. Normally, the table is aligned each time TAB or RET are pressed to move to another field. With optimization this - happens only if changes to a field might have changed the column width. + happens only if changes to a field might have changed the column width. Optimization requires replacing the functions `self-insert-command', `delete-char', and `backward-delete-char' in Org-mode buffers, with a slight (in fact: unnoticeable) speed impact for normal typing. Org-mode is @@ -1201,9 +1211,70 @@ line will be formatted with <th> tags." :group 'org-table :type 'boolean) + +(defgroup org-table-calculation nil + "Options concerning tables in Org-mode." + :tag "Org Table Calculation" + :group 'org) + (defcustom org-table-copy-increment t "Non-nil means, increment when copying current field with \\[org-table-copy-down]." - :group 'org-table + :group 'org-table-calculation + :type 'boolean) + +(defcustom org-calc-default-modes + '(calc-internal-prec 12 + calc-float-format (float 5) + calc-angle-mode deg + calc-prefer-frac nil + calc-symbolic-mode nil) + "List with Calc mode settings for use in calc-eval for table formulas. +The list must contain alternating symbols (calc modes variables and values. +Don't remove any of the default settings, just change the values. Org-mode +relies on the variables to be present in the list." + :group 'org-table-calculation + :type 'plist) + +(defcustom org-table-formula-evaluate-inline t + "Non-nil means, TAB and RET evaluate a formula in current table field. +If the current field starts with an equal sign, it is assumed to be a formula +which should be evaluated as described in the manual and in the documentation +string of the command `org-table-eval-formula'. This feature requires the +Emacs calc package. +When this variable is nil, formula calculation is only available through +the command \\[org-table-eval-formula]." + :group 'org-table-calculation + :type 'boolean) + + +(defcustom org-table-formula-use-constants t + "Non-nil means, interpret constants in formulas in tables. +A constant looks like `$c' or `$Grav' and will be replaced before evaluation +by the value given in `org-table-formula-constants', or by a value obtained +from the `constants.el' package." + :group 'org-table-calculation + :type 'boolean) + +(defcustom org-table-formula-constants nil + "Alist with constant names and values, for use in table formulas. +The car of each element is a name of a constant, without the `$' before it. +The cdr is the value as a string. For example, if you'd like to use the +speed of light in a formula, you would configure + + (setq org-table-formula-constants '((\"c\" . \"299792458.\"))) + +and then use it in an equation like `$1*$c'." + :group 'org-table-calculation + :type '(repeat + (cons (string :tag "name") + (string :tag "value")))) + +(defcustom org-table-formula-numbers-only nil + "Non-nil means, calculate only with numbers in table formulas. +Then all input fields will be converted to a number, and the result +must also be a number. When nil, calc's full potential is available +in table calculations, including symbolics etc." + :group 'org-table-calculation :type 'boolean) (defcustom org-table-tab-recognizes-table.el t @@ -1259,7 +1330,7 @@ or use the +OPTION lines for a per-file setting." (defcustom org-export-default-language "en" "The default language of HTML export, as a string. -This should have an association in `org-export-language-setup'" +This should have an association in `org-export-language-setup'." :group 'org-export :type 'string) @@ -1427,12 +1498,11 @@ Otherwise the buffer will just be saved to a file and stay hidden." :type 'boolean) (defcustom org-export-html-show-new-buffer nil - "Non-nil means, popup buffer containing the exported html text. + "Non-nil means, popup buffer containing the exported HTML text. Otherwise, the buffer will just be saved to a file and stay hidden." :group 'org-export :type 'boolean) - (defgroup org-faces nil "Faces for highlighting in Org-mode." :tag "Org Faces" @@ -1556,6 +1626,15 @@ When this is non-nil, the headline after the keyword is set to the "Face for items scheduled previously, and not yet done." :group 'org-faces) +(defface org-formula + '((((type tty pc) (class color) (background light)) (:foreground "red")) + (((type tty pc) (class color) (background dark)) (:foreground "red1")) + (((class color) (background light)) (:foreground "Firebrick")) + (((class color) (background dark)) (:foreground "chocolate1")) + (t (:bold t :italic t))) + "Face for items scheduled previously, and not yet done." + :group 'org-faces) + (defface org-link '((((type tty) (class color)) (:foreground "cyan" :weight bold)) (((class color) (background light)) (:foreground "Purple")) @@ -1585,7 +1664,7 @@ When this is non-nil, the headline after the keyword is set to the (((class color) (background light)) (:foreground "DarkGoldenrod")) (((class color) (background dark)) (:foreground "LightGoldenrod")) (t (:bold t :italic t))) - "Face used for level 2 headlines." + "Face used for time grids." :group 'org-faces) (defvar org-level-faces @@ -1649,6 +1728,7 @@ When this is non-nil, the headline after the keyword is set to the (defvar org-struct-menu) (defvar org-org-menu) +(defvar org-tbl-menu) ;; We use a before-change function to check if a table might need ;; an update. @@ -1656,7 +1736,6 @@ When this is non-nil, the headline after the keyword is set to the "Indicates of a table might need an update. This variable is set by `org-before-change-function'. `org-table-align' sets it back to nil.") - (defvar org-mode-hook nil) (defvar org-inhibit-startup nil) ; Dynamically-scoped param. @@ -1681,6 +1760,7 @@ The following commands are available: \\{org-mode-map}" (easy-menu-add org-org-menu) + (easy-menu-add org-tbl-menu) (org-install-agenda-files-menu) (setq outline-regexp "\\*+") (if org-startup-truncated (setq truncate-lines t)) @@ -1693,11 +1773,11 @@ The following commands are available: (add-hook 'before-change-functions 'org-before-change-function nil 'local) ;; Paragraph regular expressions - (set (make-local-variable 'paragraph-separate) "\f\\|[ ]*$") + (set (make-local-variable 'paragraph-separate) "\f\\|[ ]*$\\|\\([*\f]+\\)") (set (make-local-variable 'paragraph-start) "\f\\|[ ]*$\\|\\([*\f]+\\)") ;; Inhibit auto-fill for headers, tables and fixed-width lines. (set (make-local-variable 'auto-fill-inhibit-regexp) - (concat "\\*" + (concat "\\*\\|#" (if (or org-enable-table-editor org-enable-fixed-width-editor) (concat "\\|[ \t]*[" @@ -1709,6 +1789,20 @@ The following commands are available: (interactive-p) (= (point-min) (point-max))) (insert " -*- mode: org -*-\n\n")) + + ;; Get rid of Outline menus, they are not needed + ;; Need to do this here because define-derived-mode sets up + ;; the keymap so late. + (if org-xemacs-p + (progn + (delete-menu-item '("Headings")) + (delete-menu-item '("Show")) + (delete-menu-item '("Hide")) + (set-menubar-dirty-flag)) + (define-key org-mode-map [menu-bar headings] 'undefined) + (define-key org-mode-map [menu-bar hide] 'undefined) + (define-key org-mode-map [menu-bar show] 'undefined)) + (unless org-inhibit-startup (if org-startup-with-deadline-check (call-interactively 'org-check-deadlines) @@ -1720,11 +1814,14 @@ The following commands are available: (org-cycle '(4)) (org-cycle '(4)))))))) (defun org-fill-paragraph (&optional justify) - "Re-align a table, pass through to fill-paragraph if no table." + "Re-align a table, pass through to `fill-paragraph' if no table." (save-excursion (beginning-of-line 1) (looking-at "\\s-*\\(|\\|\\+-+\\)"))) +(defsubst org-current-line (&optional pos) + (+ (if (bolp) 1 0) (count-lines (point-min) (or pos (point))))) + ;;; Font-Lock stuff (defvar org-mouse-map (make-sparse-keymap)) @@ -1808,7 +1905,6 @@ The following commands are available: ;; (3 'italic)) ;; '("\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)" ;; (3 'underline)) - '("\\<FIXME\\>" (0 'org-warning t)) (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>") '(1 'org-warning t)) '("^#.*" (0 'font-lock-comment-face t)) @@ -1819,7 +1915,10 @@ The following commands are available: '(1 'org-done t))) '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)" (1 'org-table t)) - '("^[ \t]*\\(:.*\\)" (1 'org-table t))))) + '("^[ \t]*\\(:.*\\)" (1 'org-table t)) + '("| *\\(=[^|\n]*\\)" (1 'org-formula t)) + '("^[ \t]*| *\\([#!$*]\\) *|" (1 'org-formula t)) + ))) (set (make-local-variable 'org-font-lock-keywords) (append (if org-noutline-p ; FIXME: I am not sure if eval will work @@ -1857,21 +1956,22 @@ The following commands are available: "Visibility cycling for Org-mode. - When this function is called with a prefix argument, rotate the entire - buffer through 3 states (global cycling) + buffer through 3 states (global cycling): 1. OVERVIEW: Show only top-level headlines. 2. CONTENTS: Show all headlines of all levels, but no body text. 3. SHOW ALL: Show everything. - When point is at the beginning of a headline, rotate the subtree started - by this line through 3 different states (local cycling) + by this line through 3 different states (local cycling): 1. FOLDED: Only the main headline is shown. 2. CHILDREN: The main headline and the direct children are shown. From this state, you can move to one of the children and zoom in further. 3. SUBTREE: Show the entire subtree, including body text. -- When there is a numeric prefix, go ARG levels up and do a `show-subtree', - keeping cursor position. +- When there is a numeric prefix, go up to a heading with level ARG, do + a `show-subtree' and return to the previous cursor position. If ARG + is negative, go up that many levels. - When point is not at the beginning of a headline, execute `indent-relative', like TAB normally does. See the option @@ -1937,7 +2037,8 @@ The following commands are available: ;; Show-subtree, ARG levels up from here. (save-excursion (org-back-to-heading) - (outline-up-heading arg) + (outline-up-heading (if (< arg 0) (- arg) + (- (outline-level) arg))) (org-show-subtree))) ((save-excursion (beginning-of-line 1) (looking-at outline-regexp)) @@ -2117,14 +2218,14 @@ or nil." ;; FIXME: It may not be a good idea to temper with the prefix argument... (defun org-goto-ret (&optional arg) - "Finish org-goto by going to the new location." + "Finish `org-goto' by going to the new location." (interactive "P") (setq org-selected-point (point) current-prefix-arg arg) (throw 'exit nil)) (defun org-goto-left () - "Finish org-goto by going to the new location." + "Finish `org-goto' by going to the new location." (interactive) (if (org-on-heading-p) (progn @@ -2135,7 +2236,7 @@ or nil." (error "Not on a heading"))) (defun org-goto-right () - "Finish org-goto by going to the new location." + "Finish `org-goto' by going to the new location." (interactive) (if (org-on-heading-p) (progn @@ -2147,7 +2248,7 @@ or nil." (error "Not on a heading"))) (defun org-goto-quit () - "Finish org-goto without cursor motion." + "Finish `org-goto' without cursor motion." (interactive) (setq org-selected-point nil) (throw 'exit nil)) @@ -2273,8 +2374,6 @@ in the region." (save-excursion (setq end (copy-marker end)) (goto-char beg) - ;; (if (fboundp 'deactivate-mark) (deactivate-mark)) - ;; (if (fboundp 'zmacs-deactivate-region) (zmacs-deactivate-region)) (if (and (re-search-forward (concat "^" outline-regexp) nil t) (< (point) end)) (funcall fun)) @@ -2605,9 +2704,10 @@ At all other locations, this simply calls `ispell-complete-word'." (let* ((end (point)) (beg (save-excursion (if (equal (char-before (point)) ?\ ) (backward-char 1)) - (skip-chars-backward "a-zA-Z0-9_:") + (skip-chars-backward "a-zA-Z0-9_:$") (point))) (texp (equal (char-before beg) ?\\)) + (form (equal (char-before beg) ?=)) (opt (equal (buffer-substring (max (point-at-bol) (- beg 2)) beg) "#+")) @@ -2624,6 +2724,9 @@ At all other locations, this simply calls `ispell-complete-word'." (texp (setq type :tex) org-html-entities) + (form + (setq type :form) + '(("sum") ("sumv") ("sumh"))) ((string-match "\\`\\*+[ \t]*\\'" (buffer-substring (point-at-bol) beg)) (setq type :todo) @@ -2776,7 +2879,7 @@ to modify it to the correct date." The tree will show the lines where the regexp matches, and all higher headlines above the match. It will also show the heading after the match, to make sure editing the matching entry is easy. -if CALLBACK is non-nil, it is a function which is called to confirm +If CALLBACK is non-nil, it is a function which is called to confirm that the match should indeed be shown." (interactive "sRegexp: ") (setq regexp (org-check-occur-regexp regexp)) @@ -3047,7 +3150,7 @@ used to insert the time stamp into the buffer to include the time." (defun org-eval-in-calendar (form) "Eval FORM in the calendar window and return to current window. -Also, store the cursor date in variable ans2." +Also, store the cursor date in variable `ans2'." (let ((sw (selected-window))) (select-window (get-buffer-window "*Calendar*")) (eval form) @@ -3221,7 +3324,7 @@ With prefix ARG, change that many days." (>= (match-end n) pos))) (defun org-at-timestamp-p () - "Determine if the cursor is or at a timestamp." + "Determine if the cursor is at a timestamp." (interactive) (let* ((tsr org-ts-regexp2) (pos (point)) @@ -3378,7 +3481,8 @@ The following commands are available: (define-key org-agenda-mode-map "l" 'org-agenda-recenter) (define-key org-agenda-mode-map "t" 'org-agenda-todo) (define-key org-agenda-mode-map "." 'org-agenda-goto-today) -(define-key org-agenda-mode-map "w" 'org-agenda-toggle-week-view) +(define-key org-agenda-mode-map "d" 'org-agenda-day-view) +(define-key org-agenda-mode-map "w" 'org-agenda-week-view) (define-key org-agenda-mode-map (org-key 'S-right) 'org-agenda-date-later) (define-key org-agenda-mode-map (org-key 'S-left) 'org-agenda-date-earlier) @@ -3388,7 +3492,7 @@ The following commands are available: (int-to-string (pop l)) 'digit-argument))) (define-key org-agenda-mode-map "f" 'org-agenda-follow-mode) -(define-key org-agenda-mode-map "d" 'org-agenda-toggle-diary) +(define-key org-agenda-mode-map "D" 'org-agenda-toggle-diary) (define-key org-agenda-mode-map "g" 'org-agenda-toggle-time-grid) (define-key org-agenda-mode-map "r" 'org-agenda-redo) (define-key org-agenda-mode-map "q" 'org-agenda-quit) @@ -3454,8 +3558,11 @@ The following commands are available: ["Next Dates" org-agenda-later (local-variable-p 'starting-day)] ["Previous Dates" org-agenda-earlier (local-variable-p 'starting-day)] "--" - ["Week/Day View" org-agenda-toggle-week-view - (local-variable-p 'starting-day)] + ["Day View" org-agenda-day-view :active (local-variable-p 'starting-day) + :style radio :selected (equal org-agenda-ndays 1)] + ["Week View" org-agenda-week-view :active (local-variable-p 'starting-day) + :style radio :selected (equal org-agenda-ndays 7)] + "--" ["Include Diary" org-agenda-toggle-diary :style toggle :selected org-agenda-include-diary :active t] ["Use Time Grid" org-agenda-toggle-time-grid @@ -3784,19 +3891,29 @@ With prefix ARG, go back that many times `org-agenda-ndays'." (org-agenda (if (boundp 'include-all-loc) include-all-loc nil) (- starting-day (* arg org-agenda-ndays)))) -(defun org-agenda-toggle-week-view () - "Toggle weekly/daily view for aagenda." +(defun org-agenda-week-view () + "Switch to weekly view for agenda." + (interactive) + (unless (boundp 'starting-day) + (error "Not allowed")) + (setq org-agenda-ndays 7) + (org-agenda include-all-loc + (or (get-text-property (point) 'day) + starting-day)) + (org-agenda-set-mode-name) + (message "Switched to week view")) + +(defun org-agenda-day-view () + "Switch to daily view for agenda." (interactive) (unless (boundp 'starting-day) (error "Not allowed")) - (setq org-agenda-ndays - (if (equal org-agenda-ndays 1) 7 1)) + (setq org-agenda-ndays 1) (org-agenda include-all-loc (or (get-text-property (point) 'day) starting-day)) (org-agenda-set-mode-name) - (message "Switched to %s view" - (if (equal org-agenda-ndays 1) "day" "week"))) + (message "Switched to day view")) (defun org-agenda-next-date-line (&optional arg) "Jump to the next line indicating a date in agenda buffer." @@ -3840,7 +3957,7 @@ With prefix ARG, go back that many times `org-agenda-ndays'." (if org-agenda-follow-mode "on" "off"))) (defun org-agenda-toggle-diary () - "Toggle follow mode in an agenda buffer." + "Toggle diary inclusion in an agenda buffer." (interactive) (setq org-agenda-include-diary (not org-agenda-include-diary)) (org-agenda-redo) @@ -3849,7 +3966,7 @@ With prefix ARG, go back that many times `org-agenda-ndays'." (if org-agenda-include-diary "on" "off"))) (defun org-agenda-toggle-time-grid () - "Toggle follow mode in an agenda buffer." + "Toggle time-grid in an agenda buffer." (interactive) (setq org-agenda-use-time-grid (not org-agenda-use-time-grid)) (org-agenda-redo) @@ -3917,10 +4034,10 @@ With prefix ARG, go back that many times `org-agenda-ndays'." entries))))) (defun org-agenda-cleanup-fancy-diary () - "Remove unwanted stuff in buffer created by fancy-diary-display. + "Remove unwanted stuff in buffer created by `fancy-diary-display'. This gets rid of the date, the underline under the date, and the dummy entry installed by `org-mode' to ensure non-empty diary for each -date. Itt also removes lines that contain only whitespace." +date. It also removes lines that contain only whitespace." (goto-char (point-min)) (if (looking-at ".*?:[ \t]*") (progn @@ -4091,7 +4208,7 @@ The function expects the lisp variables `entry' and `date' to be provided by the caller, because this is how the calendar works. Don't use this function from a program - use `org-agenda-get-day-entries' instead." (org-agenda-maybe-reset-markers) - (org-compile-agenda-prefix-format org-agenda-prefix-format) + (org-compile-prefix-format org-agenda-prefix-format) (setq args (or args '(:deadline :scheduled :timestamp))) (let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry)) (list entry) @@ -4214,7 +4331,7 @@ the documentation of `org-diary'." (nreverse ee))) (defconst org-agenda-no-heading-message - "No heading for this item in buffer or region") + "No heading for this item in buffer or region.") (defun org-agenda-get-timestamps () "Return the date stamp information for agenda display." @@ -4625,7 +4742,7 @@ HH:MM." (mapconcat 'identity (sort list 'org-entries-lessp) "\n")) (defsubst org-cmp-priority (a b) - "Compare the priorities of string a and b." + "Compare the priorities of strings A and B." (let ((pa (or (get-text-property 1 'priority a) 0)) (pb (or (get-text-property 1 'priority b) 0))) (cond ((> pa pb) +1) @@ -4633,7 +4750,7 @@ HH:MM." (t nil)))) (defsubst org-cmp-category (a b) - "Compare the string values of categories of strings a and b." + "Compare the string values of categories of strings A and B." (let ((ca (or (get-text-property 1 'category a) "")) (cb (or (get-text-property 1 'category b) ""))) (cond ((string-lessp ca cb) -1) @@ -4641,7 +4758,7 @@ HH:MM." (t nil)))) (defsubst org-cmp-time (a b) - "Compare the time-of-day values of strings a and b." + "Compare the time-of-day values of strings A and B." (let* ((def (if org-sort-agenda-notime-is-late 2401 -1)) (ta (or (get-text-property 1 'time-of-day a) def)) (tb (or (get-text-property 1 'time-of-day b) def))) @@ -4777,7 +4894,7 @@ the same tree node, and the headline of the tree node in the Org-mode file." (move-to-column col))) (defun org-agenda-change-all-lines (newhead hdmarker &optional fixface) - "Change all lines in the agenda buffer which match hdmarker. + "Change all lines in the agenda buffer which match HDMARKER. The new content of the line will be NEWHEAD (as modified by `org-format-agenda-item'). HDMARKER is checked with `equal' against all `org-hd-marker' text properties in the file. @@ -4899,7 +5016,7 @@ be used to request time specification in the time stamp." (defun org-agenda-diary-entry () "Make a diary entry, like the `i' command from the calendar. -All the standard commands work: block, weekly etc" +All the standard commands work: block, weekly etc." (interactive) (require 'diary-lib) (let* ((char (progn @@ -5437,7 +5554,7 @@ For file links, arg negates `org-line-numbers-in-file-links'." (if a (not b) b)) (defun org-get-header (header) - "Find a header field in the current buffer." + "Find a HEADER field in the current buffer." (save-excursion (goto-char (point-min)) (let ((case-fold-search t) s) @@ -5546,7 +5663,7 @@ conventions in Org-mode. This function returns such a link." UP/DOWN=headline TAB=cycle visibility [Q]uit RET/<left>/<right>=Store RET at beg-of-buf -> Append to file as level 2 headline RET on headline -> Store as sublevel entry to current headline -<left>/<right> -> before/after current headline, same headings level") +<left>/<right> -> Before/after current headline, same headings level") ;;;###autoload (defun org-remember-handler () @@ -5687,6 +5804,10 @@ See also the variable `org-reverse-note-order'." "Detects an org-type table line.") (defconst org-table-dataline-regexp "^[ \t]*|[^-]" "Detects an org-type table line.") +(defconst org-table-auto-recalculate-regexp "^[ \t]*| *# *\\(|\\|$\\)" + "Detects a table line marked for automatic recalculation.") +(defconst org-table-recalculate-regexp "^[ \t]*| *[#*] *\\(|\\|$\\)" + "Detects a table line marked for automatic recalculation.") (defconst org-table-hline-regexp "^[ \t]*|-" "Detects an org-type table hline.") (defconst org-table1-hline-regexp "^[ \t]*\\+-[-+]" @@ -5752,7 +5873,7 @@ SIZE is a string Columns x Rows like for example \"3x2\"." The region goes from BEG0 to END0, but these borders will be moved slightly, to make sure a beginning of line in the first line is included. When NSPACE is non-nil, it indicates the minimum number of spaces that -separate columns (default: just one space)" +separate columns (default: just one space)." (let* ((beg (min beg0 end0)) (end (max beg0 end0)) (tabsep t) @@ -5843,6 +5964,7 @@ This is being used to correctly align a single field after TAB or RET.") "List of max width of fields in each column. This is being used to correctly align a single field after TAB or RET.") +(defvar org-last-recalc-line nil) (defun org-table-align () "Align the table at point by aligning all vertical bars." @@ -5878,7 +6000,12 @@ This is being used to correctly align a single field after TAB or RET.") (if (string-match "^ *" (car lines)) (setq indent (make-string (- (match-end 0) (match-beginning 0)) ?\ ))) ;; Mark the hlines - (setq lines (mapcar (lambda (l) (if (string-match "^ *|-" l) nil l)) + (setq lines (mapcar (lambda (l) + (if (string-match "^ *|-" l) + nil + (if (string-match "[ \t]+$" l) + (substring l 0 (match-beginning 0)) + l))) lines)) ;; Get the data fields (setq fields (mapcar @@ -5994,15 +6121,17 @@ With argument TABLE-TYPE, go to the end of a table.el-type table." (let* ((pos (point)) s org-table-may-need-update (col (org-table-current-column)) (num (nth (1- col) org-table-last-alignment)) - l f) + l f n o) (when (> col 0) (skip-chars-backward "^|\n") (if (looking-at " *\\([^|\n]*?\\) *|") (progn (setq s (match-string 1) + o (match-string 0) l (max 1 (- (match-end 0) (match-beginning 0) 3))) - (setq f (format (if num " %%%ds |" " %%-%ds |") l)) - (replace-match (format f s t t))) + (setq f (format (if num " %%%ds |" " %%-%ds |") l) + n (format f s t t)) + (or (equal n o) (replace-match n))) (setq org-table-may-need-update t)) (goto-char pos)))))) @@ -6010,6 +6139,8 @@ With argument TABLE-TYPE, go to the end of a table.el-type table." "Go to the next field in the current table. Before doing so, re-align the table if necessary." (interactive) + (org-table-maybe-eval-formula) + (org-table-maybe-recalculate-line) (if (and org-table-automatic-realign org-table-may-need-update) (org-table-align)) @@ -6032,6 +6163,8 @@ Before doing so, re-align the table if necessary." "Go to the previous field in the table. Before doing so, re-align the table if necessary." (interactive) + (org-table-justify-field-maybe) + (org-table-maybe-recalculate-line) (if (and org-table-automatic-realign org-table-may-need-update) (org-table-align)) @@ -6048,6 +6181,8 @@ Before doing so, re-align the table if necessary." "Go to the next row (same column) in the current table. Before doing so, re-align the table if necessary." (interactive) + (org-table-maybe-eval-formula) + (org-table-maybe-recalculate-line) (if (or (looking-at "[ \t]*$") (save-excursion (skip-chars-backward " \t") (bolp))) (newline) @@ -6081,23 +6216,29 @@ integer, it will be incremented while copying." (beg (org-table-begin)) txt) (org-table-check-inside-data-field) - (if non-empty (progn (org-table-next-row) (org-table-blank-field))) - (if (save-excursion - (setq txt - (catch 'exit - (while (progn (beginning-of-line 1) - (re-search-backward org-table-dataline-regexp - beg t)) - (org-table-goto-column colpos t) - (if (and (looking-at - "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|") - (= (setq n (1- n)) 0)) - (throw 'exit (match-string 1))))))) + (if non-empty + (progn + (setq txt (org-trim field)) + (org-table-next-row) + (org-table-blank-field)) + (save-excursion + (setq txt + (catch 'exit + (while (progn (beginning-of-line 1) + (re-search-backward org-table-dataline-regexp + beg t)) + (org-table-goto-column colpos t) + (if (and (looking-at + "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|") + (= (setq n (1- n)) 0)) + (throw 'exit (match-string 1)))))))) + (if txt (progn (if (and org-table-copy-increment (string-match "^[0-9]+$" txt)) (setq txt (format "%d" (+ (string-to-int txt) 1)))) (insert txt) + (org-table-maybe-recalculate-line) (org-table-align)) (error "No non-empty field found")))) @@ -6119,10 +6260,10 @@ I.e. not on a hline or before the first or after the last column?" (org-table-check-inside-data-field) (if (and (interactive-p) (org-region-active-p)) (let (org-table-clip) - (org-table-cut-region)) + (org-table-cut-region (region-beginning) (region-end))) (skip-chars-backward "^|") (backward-char 1) - (if (looking-at "|[^|]+") + (if (looking-at "|[^|\n]+") (let* ((pos (match-beginning 0)) (match (match-string 0)) (len (length match))) @@ -6136,15 +6277,16 @@ N defaults to current field. If REPLACE is a string, replace field with this value. The return value is always the old value." (and n (org-table-goto-column n)) - (skip-chars-backward "^|") + (skip-chars-backward "^|\n") (backward-char 1) (if (looking-at "|[^|\r\n]*") (let* ((pos (match-beginning 0)) (val (buffer-substring (1+ pos) (match-end 0)))) (if replace (replace-match (concat "|" replace))) - (goto-char (+ 2 pos)) - val))) + (goto-char (min (point-at-eol) (+ 2 pos))) + val) + (forward-char 1) "")) (defun org-table-current-column () "Find out which column we are in. @@ -6173,17 +6315,17 @@ However, when FORCE is non-nil, create new columns if necessary." (and force (progn (end-of-line 1) (skip-chars-backward "^|") - (insert " |") - (backward-char 2) t))))) + (insert " | ")))))) +; (backward-char 2) t))))) (when (and force (not (looking-at ".*|"))) - (save-excursion (end-of-line 1) (insert "|"))) + (save-excursion (end-of-line 1) (insert " | "))) (if on-delim (backward-char 1) (if (looking-at " ") (forward-char 1)))))) (defun org-at-table-p (&optional table-type) "Return t if the cursor is inside an org-type table. -If TABLE-TYPE is non-nil, also chack for table.el-type tables." +If TABLE-TYPE is non-nil, also check for table.el-type tables." (if org-enable-table-editor (save-excursion (beginning-of-line 1) @@ -6255,8 +6397,9 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables." (beginning-of-line 2)) (move-marker end nil) (goto-line linepos) - (org-table-goto-column colpos)) - (org-table-align)) + (org-table-goto-column colpos) + (org-table-align) + (org-table-modify-formulas 'insert col))) (defun org-table-find-dataline () "Find a dataline in the current table, which is needed for column commands." @@ -6300,8 +6443,9 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables." (beginning-of-line 2)) (move-marker end nil) (goto-line linepos) - (org-table-goto-column colpos)) - (org-table-align)) + (org-table-goto-column colpos) + (org-table-align) + (org-table-modify-formulas 'remove col))) (defun org-table-move-column-right () "Move column to the right." @@ -6340,8 +6484,9 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables." (beginning-of-line 2)) (move-marker end nil) (goto-line linepos) - (org-table-goto-column colpos)) - (org-table-align)) + (org-table-goto-column colpos) + (org-table-align) + (org-table-modify-formulas 'swap col (if left (1- col) (1+ col))))) (defun org-table-move-row-down () "Move table row down." @@ -6380,13 +6525,18 @@ With prefix ARG, insert below the current line." (interactive "P") (if (not (org-at-table-p)) (error "Not at a table")) - (let ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol)))) + (let* ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol))) + new) (if (string-match "^[ \t]*|-" line) - (setq line (mapcar (lambda (x) (if (member x '(?| ?+)) ?| ?\ )) line)) - (setq line (mapcar (lambda (x) (if (equal x ?|) ?| ?\ )) line))) + (setq new (mapcar (lambda (x) (if (member x '(?| ?+)) ?| ?\ )) line)) + (setq new (mapcar (lambda (x) (if (equal x ?|) ?| ?\ )) line))) + ;; Fix the first field if necessary + (setq new (concat new)) + (if (string-match "^[ \t]*| *[#$] *|" line) + (setq new (replace-match (match-string 0 line) t t new))) (beginning-of-line (if arg 2 1)) (let (org-table-may-need-update) - (apply 'insert-before-markers line) + (insert-before-markers new) (insert-before-markers "\n")) (beginning-of-line 0) (re-search-forward "| ?" (point-at-eol) t) @@ -6431,20 +6581,17 @@ With prefix ARG, insert above the current line." (move-to-column col))) -(defun org-table-cut-region () +(defun org-table-cut-region (beg end) "Copy region in table to the clipboard and blank all relevant fields." - (interactive) - (org-table-copy-region 'cut)) + (interactive "r") + (org-table-copy-region beg end 'cut)) -(defun org-table-copy-region (&optional cut) +(defun org-table-copy-region (beg end &optional cut) "Copy rectangular region in table to clipboard. A special clipboard is used which can only be accessed -with `org-table-paste-rectangle'" - (interactive "P") - (unless (org-region-active-p) (error "No active region")) - (let* ((beg (region-beginning)) - (end (region-end)) - l01 c01 l02 c02 l1 c1 l2 c2 ic1 ic2 +with `org-table-paste-rectangle'." + (interactive "rP") + (let* (l01 c01 l02 c02 l1 c1 l2 c2 ic1 ic2 region cols (rpl (if cut " " nil))) (goto-char beg) @@ -6470,7 +6617,8 @@ with `org-table-paste-rectangle'" (push (nreverse cols) region) (setq l1 (1+ l1))))) (setq org-table-clip (nreverse region)) - (if cut (org-table-align)))) + (if cut (org-table-align)) + org-table-clip)) (defun org-table-paste-rectangle () "Paste a rectangular region into a table. @@ -6574,7 +6722,7 @@ blank, and the content is appended to the field above." ;; There is a region: fill as a paragraph (let ((beg (region-beginning)) nlines) - (org-table-cut-region) + (org-table-cut-region (region-beginning) (region-end)) (if (> (length (car org-table-clip)) 1) (error "Region must be limited to single column")) (setq nlines (if arg @@ -6611,7 +6759,8 @@ blank, and the content is appended to the field above." (defun org-trim (s) "Remove whitespace at beginning and end of string." (if (string-match "^[ \t]+" s) (setq s (replace-match "" t t s))) - (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s)))) + (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s))) + s) (defun org-wrap (string &optional width lines) "Wrap string to either a number of lines, or a width in characters. @@ -6701,7 +6850,7 @@ and end of string." "Toggle the visibility of table vertical lines. The effect is immediate and on all tables in the file. With prefix ARG, make lines invisible when ARG is positive, make lines -visible when ARG is not positive" +visible when ARG is not positive." (interactive "P") (let ((action (cond ((and arg (> (prefix-numeric-value arg) 0)) 'on) @@ -6734,7 +6883,7 @@ visible when ARG is not positive" (save-excursion (funcall function))) (re-search-forward org-table-any-border-regexp nil 1))))) -(defun org-table-sum () +(defun org-table-sum (&optional beg end nlast) "Sum numbers in region of current table column. The result will be displayed in the echo area, and will be available as kill to be inserted with \\[yank]. @@ -6746,35 +6895,38 @@ column. If at least one number looks like a time HH:MM or HH:MM:SS, all other numbers are assumed to be times as well (in decimal hours) and the -numbers are added as such." +numbers are added as such. + +If NLAST is a number, only the NLAST fields will actually be summed." (interactive) (save-excursion - (let (beg end col (timecnt 0) diff h m s) - (if (org-region-active-p) - (setq beg (region-beginning) end (region-end)) + (let (col (timecnt 0) diff h m s org-table-clip) + (cond + ((and beg end)) ; beg and end given explicitly + ((org-region-active-p) + (setq beg (region-beginning) end (region-end))) + (t (setq col (org-table-current-column)) (goto-char (org-table-begin)) (unless (re-search-forward "^[ \t]*|[^-]" nil t) (error "No table data")) (org-table-goto-column col) - (skip-chars-backward "^|") +;not needed? (skip-chars-backward "^|") (setq beg (point)) (goto-char (org-table-end)) (unless (re-search-backward "^[ \t]*|[^-]" nil t) (error "No table data")) (org-table-goto-column col) - (skip-chars-forward "^|") - (setq end (point))) - (let* ((l1 (progn (goto-char beg) - (+ (if (bolp) 1 0) (count-lines (point-min) (point))))) - (l2 (progn (goto-char end) - (+ (if (bolp) 1 0) (count-lines (point-min) (point))))) - (items (if (= l1 l2) - (split-string (buffer-substring beg end)) - (split-string - (mapconcat 'identity (extract-rectangle beg end) " ")))) +;not needed? (skip-chars-forward "^|") + (setq end (point)))) + (let* ((items (apply 'append (org-table-copy-region beg end))) + (items1 (cond ((not nlast) items) + ((>= nlast (length items)) items) + (t (setq items (reverse items)) + (setcdr (nthcdr (1- nlast) items) nil) + (nreverse items)))) (numbers (delq nil (mapcar 'org-table-get-number-for-summing - items))) + items1))) (res (apply '+ numbers)) (sres (if (= timecnt 0) (format "%g" res) @@ -6784,9 +6936,11 @@ numbers are added as such." s diff) (format "%d:%02d:%02d" h m s)))) (kill-new sres) - (message (substitute-command-keys - (format "Sum of %d items: %-20s (\\[yank] will insert result into buffer)" - (length numbers) sres))))))) + (if (interactive-p) + (message (substitute-command-keys + (format "Sum of %d items: %-20s (\\[yank] will insert result into buffer)" + (length numbers) sres)))) + sres)))) (defun org-table-get-number-for-summing (s) (let (n) @@ -6808,15 +6962,136 @@ numbers are added as such." ((equal n 0) nil) (t n)))) -(defvar org-table-current-formula nil) (defvar org-table-formula-history nil) -(defun org-table-get-formula (current) - (if (and current (not (equal "" org-table-current-formula))) - org-table-current-formula - (setq org-table-current-formula - (read-string - "Formula [last]: " "" 'org-table-formula-history - org-table-current-formula)))) + +(defun org-table-get-formula (&optional equation) + "Read a formula from the minibuffer, offer stored formula as default." + (let* ((col (org-table-current-column)) + (stored-list (org-table-get-stored-formulas)) + (stored (cdr (assoc col stored-list))) + (eq (cond + ((and stored equation (string-match "^ *= *$" equation)) + stored) + ((stringp equation) + equation) + (t (read-string + "Formula: " (or stored "") 'org-table-formula-history + stored))))) + (if (not (string-match "\\S-" eq)) + (error "Empty formula")) + (if (string-match "^ *=?" eq) (setq eq (replace-match "" t t eq))) + (if (string-match " *$" eq) (setq eq (replace-match "" t t eq))) + (if stored + (setcdr (assoc col stored-list) eq) + (setq stored-list (cons (cons col eq) stored-list))) + (if (not (equal stored eq)) + (org-table-store-formulas stored-list)) + eq)) + +(defun org-table-store-formulas (alist) + "Store the list of formulas below the current table." + (setq alist (sort alist (lambda (a b) (< (car a) (car b))))) + (save-excursion + (goto-char (org-table-end)) + (if (looking-at "\\([ \t]*\n\\)*#\\+TBLFM:.*\n?") + (delete-region (point) (match-end 0))) + (insert "#+TBLFM: " + (mapconcat (lambda (x) + (concat "$" (int-to-string (car x)) "=" (cdr x))) + alist "::") + "\n"))) + +(defun org-table-get-stored-formulas () + "Return an alist with the stored formulas directly after current table." + (interactive) + (let (col eq eq-alist strings string) + (save-excursion + (goto-char (org-table-end)) + (when (looking-at "\\([ \t]*\n\\)*#\\+TBLFM: *\\(.*\\)") + (setq strings (org-split-string (match-string 2) " *:: *")) + (while (setq string (pop strings)) + (if (string-match "\\$\\([0-9]+\\) *= *\\(.*[^ \t]\\)" string) + (setq col (string-to-number (match-string 1 string)) + eq (match-string 2 string) + eq-alist (cons (cons col eq) eq-alist)))))) + eq-alist)) + +(defun org-table-modify-formulas (action &rest columns) + "Modify the formulas stored below the current table. +ACTION can be `remove', `insert', `swap'. For `swap', two column numbers are +expected, for the other action only a single column number is needed." + (let ((list (org-table-get-stored-formulas)) + (nmax (length (org-split-string (buffer-substring (point-at-bol) (point-at-eol)) + "|"))) + col col1 col2) + (cond + ((null list)) ; No action needed if there are no stored formulas + ((eq action 'remove) + (setq col (car columns)) + (org-table-replace-in-formulas list col "INVALID") + (if (assoc col list) (setq list (delq (assoc col list) list))) + (loop for i from (1+ col) upto nmax by 1 do + (org-table-replace-in-formulas list i (1- i)) + (if (assoc i list) (setcar (assoc i list) (1- i))))) + ((eq action 'insert) + (setq col (car columns)) + (loop for i from nmax downto col by 1 do + (org-table-replace-in-formulas list i (1+ i)) + (if (assoc i list) (setcar (assoc i list) (1+ i))))) + ((eq action 'swap) + (setq col1 (car columns) col2 (nth 1 columns)) + (org-table-replace-in-formulas list col1 "Z") + (org-table-replace-in-formulas list col2 col1) + (org-table-replace-in-formulas list "Z" col2) + (if (assoc col1 list) (setcar (assoc col1 list) "Z")) + (if (assoc col2 list) (setcar (assoc col2 list) col1)) + (if (assoc "Z" list) (setcar (assoc "Z" list) col2))) + (t (error "Invalid action in `org-table-modify-formulas'"))) + (if list (org-table-store-formulas list)))) + +(defun org-table-replace-in-formulas (list s1 s2) + (let (elt re s) + (setq s1 (concat "$" (if (integerp s1) (int-to-string s1) s1)) + s2 (concat "$" (if (integerp s2) (int-to-string s2) s2)) + re (concat (regexp-quote s1) "\\>")) + (while (setq elt (pop list)) + (setq s (cdr elt)) + (while (string-match re s) + (setq s (replace-match s2 t t s))) + (setcdr elt s)))) + +(defvar org-table-column-names nil + "Alist with column names, derived from the `!' line.") +(defvar org-table-column-name-regexp nil + "Regular expression matching the current column names.") +(defvar org-table-local-parameters nil + "Alist with parameter names, derived from the `$' line.") + +(defun org-table-get-specials () + "Get the column names and local parameters for this table." + (save-excursion + (let ((beg (org-table-begin)) (end (org-table-end)) + names name fields field cnt) + (setq org-table-column-names nil + org-table-local-parameters nil) + (goto-char beg) + (when (re-search-forward "^[ \t]*| *! *\\(|.*\\)" end t) + (setq names (org-split-string (match-string 1) " *| *") + cnt 1) + (while (setq name (pop names)) + (setq cnt (1+ cnt)) + (if (string-match "^[a-zA-Z][a-zA-Z0-9]*$" name) + (push (cons name (int-to-string cnt)) org-table-column-names)))) + (setq org-table-column-names (nreverse org-table-column-names)) + (setq org-table-column-name-regexp + (concat "\\$\\(" (mapconcat 'car org-table-column-names "\\|") "\\)\\>")) + (goto-char beg) + (while (re-search-forward "^[ \t]*| *\\$ *\\(|.*\\)" end t) + (setq fields (org-split-string (match-string 1) " *| *")) + (while (setq field (pop fields)) + (if (string-match "^\\([a-zA-Z][a-zA-Z0-9]*\\) *= *\\(.*\\)" field) + (push (cons (match-string 1 field) (match-string 2 field)) + org-table-local-parameters))))))) (defun org-this-word () ;; Get the current word @@ -6825,24 +7100,157 @@ numbers are added as such." (end (progn (skip-chars-forward "^ \t\n") (point)))) (buffer-substring-no-properties beg end)))) -(defun org-table-eval-formula (&optional ndown) +(defun org-table-maybe-eval-formula () + "Check if the current field starts with \"=\" and evaluate the formula." + ;; We already know we are in a table. Get field will only return a formula + ;; when appropriate. It might return a separator line, but no problem. + (when org-table-formula-evaluate-inline + (let* ((field (org-trim (or (org-table-get-field) ""))) + (dfield (downcase field)) + col bolpos nlast) + (when (equal (string-to-char field) ?=) + (if (string-match "^\\(=sum[vh]?\\)\\([0-9]+\\)$" dfield) + (setq nlast (1+ (string-to-number (match-string 2 dfield))) + dfield (match-string 1 dfield))) + (cond + ((equal dfield "=sumh") + (org-table-get-field + nil (org-table-sum + (save-excursion (org-table-goto-column 1) (point)) + (point) nlast))) + ((member dfield '("=sum" "=sumv")) + (setq col (org-table-current-column) + bolpos (point-at-bol)) + (org-table-get-field + nil (org-table-sum + (save-excursion + (goto-char (org-table-begin)) + (if (re-search-forward org-table-dataline-regexp bolpos t) + (progn + (goto-char (match-beginning 0)) + (org-table-goto-column col) + (point)) + (error "No datalines above current"))) + (point) nlast))) + ((and (string-match "^ *=" field) + (fboundp 'calc-eval)) + (org-table-eval-formula nil field))))))) + +(defvar org-last-recalc-undo-list nil) +(defcustom org-table-allow-line-recalculation t + "FIXME:" + :group 'org-table + :type 'boolean) + +(defvar org-recalc-commands nil + "List of commands triggering the recalculation of a line. +Will be filled automatically during use.") + +(defvar org-recalc-marks + '((" " . "Unmarked: no special line, no automatic recalculation") + ("#" . "Automatically recalculate this line upon TAB, RET, and C-c C-c in the line") + ("*" . "Recalculate only when entire table is recalculated with `C-u C-c *'") + ("!" . "Column name definition line. Reference in formula as $name.") + ("$" . "Parameter definition line name=value. Reference in formula as $name."))) + +(defun org-table-rotate-recalc-marks (&optional newchar) + "Rotate the recalculation mark in the first column. +If in any row, the first field is not consistent with a mark, +insert a new column for the makers. +When there is an active region, change all the lines in the region, +after prompting for the marking character. +After each change, a message will be displayed indication the meaning +of the new mark." + (interactive) + (unless (org-at-table-p) (error "Not at a table")) + (let* ((marks (append (mapcar 'car org-recalc-marks) '(" "))) + (beg (org-table-begin)) + (end (org-table-end)) + (l (org-current-line)) + (l1 (if (org-region-active-p) (org-current-line (region-beginning)))) + (l2 (if (org-region-active-p) (org-current-line (region-end)))) + (have-col + (save-excursion + (goto-char beg) + (not (re-search-forward "^[ \t]*|[^-|][^|]*[^#!$*| \t][^|]*|" end t)))) + (col (org-table-current-column)) + (forcenew (car (assoc newchar org-recalc-marks))) + epos new) + (if l1 (setq newchar (char-to-string (read-char-exclusive "Change region to what mark? Type # * ! $ or SPC: ")) + forcenew (car (assoc newchar org-recalc-marks)))) + (if (and newchar (not forcenew)) + (error "Invalid NEWCHAR `%s' in `org-table-rotate-recalc-marks'" + newchar)) + (if l1 (goto-line l1)) + (save-excursion + (beginning-of-line 1) + (unless (looking-at org-table-dataline-regexp) + (error "Not at a table data line"))) + (unless have-col + (org-table-goto-column 1) + (org-table-insert-column) + (org-table-goto-column (1+ col))) + (setq epos (point-at-eol)) + (save-excursion + (beginning-of-line 1) + (org-table-get-field + 1 (if (looking-at "^[ \t]*| *\\([#!$* ]\\) *|") + (concat " " + (setq new (or forcenew + (cadr (member (match-string 1) marks)))) + " ") + " # "))) + (if (and l1 l2) + (progn + (goto-line l1) + (while (progn (beginning-of-line 2) (not (= (org-current-line) l2))) + (and (looking-at org-table-dataline-regexp) + (org-table-get-field 1 (concat " " new " ")))) + (goto-line l1))) + (if (not (= epos (point-at-eol))) (org-table-align)) + (goto-line l) + (and (interactive-p) (message (cdr (assoc new org-recalc-marks)))))) + +(defun org-table-maybe-recalculate-line () + "Recompute the current line if marked for it, and if we haven't just done it." + (interactive) + (and org-table-allow-line-recalculation + (not (and (memq last-command org-recalc-commands) + (equal org-last-recalc-line (org-current-line)))) + (save-excursion (beginning-of-line 1) + (looking-at org-table-auto-recalculate-regexp)) + (fboundp 'calc-eval) + (org-table-recalculate) t)) + +(defvar org-table-formula-debug nil + "Non-nil means, debug table formulas. +When nil, simply write \"#ERROR\" in corrupted fields.") + +(defvar modes) +(defsubst org-set-calc-mode (var value) + (setcar (or (cdr (memq var modes)) (cons nil nil)) value)) + +(defun org-table-eval-formula (&optional ndown equation + suppress-align suppress-const + suppress-store) "Replace the table field value at the cursor by the result of a calculation. -This function makes use of Dave Gillespie's calc package, arguably the most -exciting program ever written for GNU Emacs. So you need to have calc +This function makes use of Dave Gillespie's calc package, in my view the +most exciting program ever written for GNU Emacs. So you need to have calc installed in order to use this function. In a table, this command replaces the value in the current field with the result of a formula. While nowhere near the computation options of a -spreadsheet program, this is still very useful. Note that there is no -automatic updating of a calculated field, nor will the field remember the -formula. The command needs to be applied again after changing input -fields. +spreadsheet program, this is still very useful. There is no automatic +updating of a calculated field, but the table will remember the last +formula for each column. The command needs to be applied again after +changing input fields. When called, the command first prompts for a formula, which is read in the -minibuffer. Previously entered formulae are available through the history -list, and the last used formula is the default, reachable by simply -pressing RET. +minibuffer. Previously entered formulas are available through the history +list, and the last used formula for each column is offered as a default. +These stored formulas are adapted correctly when moving, inserting, or +deleting columns with the corresponding commands. The formula can be any algebraic expression understood by the calc package. Before evaluation, variable substitution takes place: \"$\" is replaced by @@ -6852,50 +7260,113 @@ here, so the command supports only horizontal computing. The formula can contain an optional printf format specifier after a semicolon, to reformat the result. -A few examples for formulae: +A few examples for formulas: $1+$2 Sum of first and second field $1+$2;%.2f Same, and format result to two digits after dec.point exp($2)+exp($1) Math functions can be used $;%.1f Reformat current cell to 1 digit after dec.point - ($3-32)*5/9 degrees F -> C conversion + ($3-32)*5/9 Degrees F -> C conversion When called with a raw \\[universal-argument] prefix, the formula is applied to the current field, and to the same same column in all following rows, until reaching a horizontal line or the end of the table. When the command is called with a numeric prefix argument (like M-3 or C-7 or \\[universal-argument] 24), the formula is applied to the current row, and to the following n-1 rows (but not beyond a -separator line)." +separator line). + +This function can also be called from Lisp programs and offers two additional +Arguments: EQUATION can be the formula to apply. If this argument is given, +the user will not be prompted. SUPPRESS-ALIGN is used to speed-up +recursive calls by by-passing unnecessary aligns. SUPPRESS-CONST suppresses +the interpretation of constants in the formula. SUPPRESS-STORE means the +formula should not be stored, either because it is already stored, or because +it is a modified equation that should not overwrite the stored one." (interactive "P") (setq ndown (if (equal ndown '(4)) 10000 (prefix-numeric-value ndown))) (require 'calc) (org-table-check-inside-data-field) + (org-table-get-specials) (let* (fields (org-table-automatic-realign nil) + (case-fold-search nil) (down (> ndown 1)) - (formula (org-table-get-formula nil)) + (formula (if (and equation suppress-store) + equation + (org-table-get-formula equation))) (n0 (org-table-current-column)) - n form fmt x ev) + (modes (copy-sequence org-calc-default-modes)) + n form fmt x ev orig c) + ;; Parse the format (if (string-match ";" formula) (let ((tmp (org-split-string formula ";"))) - (setq formula (car tmp) fmt (nth 1 tmp)))) + (setq formula (car tmp) fmt (or (nth 1 tmp) "")) + (while (string-match "[pnfse]\\(-?[0-9]+\\)" fmt) + (setq c (string-to-char (match-string 1 fmt)) + n (string-to-number (or (match-string 1 fmt) ""))) + (if (= c ?p) (org-set-calc-mode 'calc-internal-prec n) + (org-set-calc-mode 'calc-float-format + (list (cdr (assoc c '((?n. float) (?f. fix) + (?s. sci) (?e. eng)))) + n))) + (setq fmt (replace-match "" t t fmt))) + (when (string-match "[DR]" fmt) + (org-set-calc-mode 'calc-angle-mode + (if (equal (match-string 0 fmt) "D") + 'deg 'rad)) + (setq fmt (replace-match "" t t fmt))) + (when (string-match "F" fmt) + (org-set-calc-mode 'calc-prefer-frac t) + (setq fmt (replace-match "" t t fmt))) + (when (string-match "S" fmt) + (org-set-calc-mode 'calc-symbolic-mode t) + (setq fmt (replace-match "" t t fmt))) + (unless (string-match "\\S-" fmt) + (setq fmt nil)))) + (if (and (not suppress-const) org-table-formula-use-constants) + (setq formula (org-table-formula-substitute-names formula))) + (setq orig (or (get-text-property 1 :orig-formula formula) "?")) (while (> ndown 0) (setq fields (org-split-string - (concat " " (buffer-substring - (point-at-bol) (point-at-eol))) "|")) + (buffer-substring + (point-at-bol) (point-at-eol)) " *| *")) + (if org-table-formula-numbers-only + (setq fields (mapcar + (lambda (x) (number-to-string (string-to-number x))) + fields))) (setq ndown (1- ndown)) (setq form (copy-sequence formula)) (while (string-match "\\$\\([0-9]+\\)?" form) (setq n (if (match-beginning 1) (string-to-int (match-string 1 form)) n0) - x (nth n fields)) + x (nth (1- n) fields)) (unless x (error "Invalid field specifier \"%s\"" (match-string 0 form))) - (if (equal (string-to-number x) 0) (setq x "0")) - (setq form (replace-match x t t form))) - (setq ev (calc-eval (list form) 'num)) + (if (equal x "") (setq x "0")) + (setq form (replace-match (concat "(" x ")") t t form))) + (setq ev (calc-eval (cons form modes) + (if org-table-formula-numbers-only 'num))) + + (when org-table-formula-debug + (with-output-to-temp-buffer "*Help*" + (princ (format "Substitution history of formula +Orig: %s +$xyz-> %s +$1-> %s\n" orig formula form)) + (if (listp ev) + (princ (format " %s^\nError: %s" + (make-string (car ev) ?\-) (nth 1 ev))) + (princ (format "Result: %s" ev)))) + (shrink-window-if-larger-than-buffer (get-buffer-window "*Help*")) + (unless (and (interactive-p) (not ndown)) + (unless (let (inhibit-redisplay) + (y-or-n-p "Debugging Formula. Continue to next? ")) + (org-table-align) + (error "Abort")) + (delete-window (get-buffer-window "*Help*")) + (message ""))) (if (listp ev) - (error "Invalid expression: %s (%s at %d)" form (nth 1 ev) (car ev))) + (setq fmt nil ev "#ERROR")) (org-table-blank-field) (if fmt (insert (format fmt (string-to-number ev))) @@ -6903,7 +7374,96 @@ separator line)." (if (and down (> ndown 0) (looking-at ".*\n[ \t]*|[^-]")) (call-interactively 'org-return) (setq ndown 0))) - (org-table-align))) + (or suppress-align (org-table-align)))) + +(defun org-table-recalculate (&optional all noalign) + "Recalculate the current table line by applying all stored formulas." + (interactive "P") + (or (memq this-command org-recalc-commands) + (setq org-recalc-commands (cons this-command org-recalc-commands))) + (unless (org-at-table-p) (error "Not at a table")) + (org-table-get-specials) + (let* ((eqlist (sort (org-table-get-stored-formulas) + (lambda (a b) (< (car a) (car b))))) + (inhibit-redisplay t) + (line-re org-table-dataline-regexp) + (thisline (+ (if (bolp) 1 0) (count-lines (point-min) (point)))) + (thiscol (org-table-current-column)) + beg end entry eql (cnt 0)) + ;; Insert constants in all formulas + (setq eqlist + (mapcar (lambda (x) + (setcdr x (org-table-formula-substitute-names (cdr x))) + x) + eqlist)) + (if all + (progn + (setq end (move-marker (make-marker) (1+ (org-table-end)))) + (goto-char (setq beg (org-table-begin))) + (if (re-search-forward org-table-recalculate-regexp end t) + (setq line-re org-table-recalculate-regexp) + (if (and (re-search-forward org-table-dataline-regexp end t) + (re-search-forward org-table-hline-regexp end t) + (re-search-forward org-table-dataline-regexp end t)) + (setq beg (match-beginning 0)) + nil))) ;; just leave beg where it is + (setq beg (point-at-bol) + end (move-marker (make-marker) (1+ (point-at-eol))))) + (goto-char beg) + (and all (message "Re-applying formulas to full table...")) + (while (re-search-forward line-re end t) + (unless (string-match "^ *[!$] *$" (org-table-get-field 1)) + ;; Unprotected line, recalculate + (and all (message "Re-applying formulas to full table...(line %d)" + (setq cnt (1+ cnt)))) + (setq org-last-recalc-line (org-current-line)) + (setq eql eqlist) + (while (setq entry (pop eql)) + (goto-line org-last-recalc-line) + (org-table-goto-column (car entry) nil 'force) + (org-table-eval-formula nil (cdr entry) 'noalign 'nocst 'nostore)))) + (goto-line thisline) + (org-table-goto-column thiscol) + (or noalign (org-table-align) + (and all (message "Re-applying formulas to %d lines...done" cnt))))) + +(defun org-table-formula-substitute-names (f) + "Replace $const with values in string F." + (let ((start 0) a n1 n2 nn1 nn2 s (f1 f)) + ;; First, check for column names + (while (setq start (string-match org-table-column-name-regexp f start)) + (setq start (1+ start)) + (setq a (assoc (match-string 1 f) org-table-column-names)) + (setq f (replace-match (concat "$" (cdr a)) t t f))) + ;; Expand ranges to vectors + (while (string-match "\\$\\([0-9]+\\)\\.\\.\\.?\\$\\([0-9]+\\)" f) + (setq n1 (string-to-number (match-string 1 f)) + n2 (string-to-number (match-string 2 f)) + nn1 (1+ (min n1 n2)) nn2 (max n1 n2) + s (concat "[($" (number-to-string (1- nn1)) ")")) + (loop for i from nn1 upto nn2 do + (setq s (concat s ",($" (int-to-string i) ")"))) + (setq s (concat s "]")) + (if (< n2 n1) (setq s (concat "rev(" s ")"))) + (setq f (replace-match s t t f))) + ;; Parameters and constants + (setq start 0) + (while (setq start (string-match "\\$\\([a-zA-Z][a-zA-Z0-9]*\\)" f start)) + (setq start (1+ start)) + (if (setq a (save-match-data + (org-table-get-constant (match-string 1 f)))) + (setq f (replace-match (concat "(" a ")") t t f)))) + (if org-table-formula-debug + (put-text-property 0 (length f) :orig-formula f1 f)) + f)) + +(defun org-table-get-constant (const) + "Find the value for a parameter or constant in a formula. +Parameters get priority." + (or (cdr (assoc const org-table-local-parameters)) + (cdr (assoc const org-table-formula-constants)) + (and (fboundp 'constants-get) (constants-get const)) + "#UNDEFINED_NAME")) ;;; The orgtbl minor mode @@ -6972,6 +7532,11 @@ table editor in arbitrary modes.") (if arg (> (prefix-numeric-value arg) 0) (not orgtbl-mode))) (if orgtbl-mode (progn + (and (orgtbl-setup) (defun orgtbl-setup () nil)) + ;; Make sure we are first in minor-mode-map-alist + (let ((c (assq 'orgtbl-mode minor-mode-map-alist))) + (and c (setq minor-mode-map-alist + (cons c (delq c minor-mode-map-alist))))) (set (make-local-variable (quote org-table-may-need-update)) t) (make-local-hook (quote before-change-functions)) (add-hook 'before-change-functions 'org-before-change-function @@ -6994,81 +7559,134 @@ table editor in arbitrary modes.") (put 'orgtbl-mode :menu-tag "Org Table Mode") (add-minor-mode 'orgtbl-mode " OrgTbl" orgtbl-mode-map) -(defun orgtbl-make-binding (fun &rest keys) - "Create a function for binding in the table minor mode." - (list 'lambda '(arg) - (concat "Run `" (symbol-name fun) "' or the default binding.") - '(interactive "p") - (list 'if - '(org-at-table-p) - (list 'call-interactively (list 'quote fun)) - (list 'let '(orgtbl-mode) - (list 'call-interactively - (append '(or) - (mapcar (lambda (k) - (list 'key-binding k)) - keys) - '('orgtbl-error))))))) +(defun orgtbl-make-binding (fun n &rest keys) + "Create a function for binding in the table minor mode. +FUN is the command to call inside a table. N is used to create a unique +command name. KEYS are keys that should be checked in for a command +to execute outside of tables." + (eval + (list 'defun + (intern (concat "orgtbl-hijacker-command-" (int-to-string n))) + '(arg) + (concat "In tables, run `" (symbol-name fun) "'.\n" + "Outside of tables, run the binding of `" + (mapconcat (lambda (x) (format "%s" x)) keys "' or `") + "'.") + '(interactive "p") + (list 'if + '(org-at-table-p) + (list 'call-interactively (list 'quote fun)) + (list 'let '(orgtbl-mode) + (list 'call-interactively + (append '(or) + (mapcar (lambda (k) + (list 'key-binding k)) + keys) + '('orgtbl-error)))))))) (defun orgtbl-error () "Error when there is no default binding for a table key." (interactive) - (error "This key is has no function outside tables")) - -;; Keybindings for the minor mode -(let ((bindings - (list - '([(meta shift left)] org-table-delete-column) - '([(meta left)] org-table-move-column-left) - '([(meta right)] org-table-move-column-right) - '([(meta shift right)] org-table-insert-column) - '([(meta shift up)] org-table-kill-row) - '([(meta shift down)] org-table-insert-row) - '([(meta up)] org-table-move-row-up) - '([(meta down)] org-table-move-row-down) - '("\C-c\C-w" org-table-cut-region) - '("\C-c\M-w" org-table-copy-region) - '("\C-c\C-y" org-table-paste-rectangle) - '("\C-c-" org-table-insert-hline) - '([(shift tab)] org-table-previous-field) - '("\C-c\C-c" org-table-align) - '("\C-m" org-table-next-row) - (list (org-key 'S-return) 'org-table-copy-down) - '([(meta return)] org-table-wrap-region) - '("\C-c\C-q" org-table-wrap-region) - '("\C-c?" org-table-current-column) - '("\C-c " org-table-blank-field) - '("\C-c+" org-table-sum) - '("\C-c|" org-table-toggle-vline-visibility) - '("\C-c=" org-table-eval-formula))) - elt key fun cmd) - (while (setq elt (pop bindings)) - (setq key (car elt) - fun (nth 1 elt) - cmd (orgtbl-make-binding fun key)) - (define-key orgtbl-mode-map key cmd))) - -;; Special treatment needed for TAB and RET - -(define-key orgtbl-mode-map [(return)] - (orgtbl-make-binding 'orgtbl-ret [(return)] "\C-m")) -(define-key orgtbl-mode-map "\C-m" - (orgtbl-make-binding 'orgtbl-ret "\C-m" [(return)])) -(define-key orgtbl-mode-map [(tab)] - (orgtbl-make-binding 'orgtbl-tab [(tab)] "\C-i")) -(define-key orgtbl-mode-map "\C-i" - (orgtbl-make-binding 'orgtbl-tab "\C-i" [(tab)])) - -(when orgtbl-optimized - ;; If the user wants maximum table support, we need to hijack - ;; some standard editing functions - (substitute-key-definition 'self-insert-command 'orgtbl-self-insert-command - orgtbl-mode-map global-map) - (substitute-key-definition 'delete-char 'orgtbl-delete-char - orgtbl-mode-map global-map) - (substitute-key-definition 'delete-backward-char 'orgtbl-delete-backward-char - orgtbl-mode-map global-map) - (define-key org-mode-map "|" 'self-insert-command)) + (error "This key has no function outside tables")) + +(defun orgtbl-setup () + "Setup orgtbl keymaps." + (let ((nfunc 0) + (bindings + (list + '([(meta shift left)] org-table-delete-column) + '([(meta left)] org-table-move-column-left) + '([(meta right)] org-table-move-column-right) + '([(meta shift right)] org-table-insert-column) + '([(meta shift up)] org-table-kill-row) + '([(meta shift down)] org-table-insert-row) + '([(meta up)] org-table-move-row-up) + '([(meta down)] org-table-move-row-down) + '("\C-c\C-w" org-table-cut-region) + '("\C-c\M-w" org-table-copy-region) + '("\C-c\C-y" org-table-paste-rectangle) + '("\C-c-" org-table-insert-hline) + '([(shift tab)] org-table-previous-field) + '("\C-c\C-c" org-ctrl-c-ctrl-c) + '("\C-m" org-table-next-row) + (list (org-key 'S-return) 'org-table-copy-down) + '([(meta return)] org-table-wrap-region) + '("\C-c\C-q" org-table-wrap-region) + '("\C-c?" org-table-current-column) + '("\C-c " org-table-blank-field) + '("\C-c+" org-table-sum) + '("\C-c|" org-table-toggle-vline-visibility) + '("\C-c=" org-table-eval-formula) + '("\C-c*" org-table-recalculate) + '([(control ?#)] org-table-rotate-recalc-marks))) + elt key fun cmd) + (while (setq elt (pop bindings)) + (setq nfunc (1+ nfunc)) + (setq key (car elt) + fun (nth 1 elt) + cmd (orgtbl-make-binding fun nfunc key)) + (define-key orgtbl-mode-map key cmd)) + ;; Special treatment needed for TAB and RET + (define-key orgtbl-mode-map [(return)] + (orgtbl-make-binding 'orgtbl-ret 100 [(return)] "\C-m")) + (define-key orgtbl-mode-map "\C-m" + (orgtbl-make-binding 'orgtbl-ret 101 "\C-m" [(return)])) + (define-key orgtbl-mode-map [(tab)] + (orgtbl-make-binding 'orgtbl-tab 102 [(tab)] "\C-i")) + (define-key orgtbl-mode-map "\C-i" + (orgtbl-make-binding 'orgtbl-tab 103 "\C-i" [(tab)]))) + (when orgtbl-optimized + ;; If the user wants maximum table support, we need to hijack + ;; some standard editing functions + (substitute-key-definition 'self-insert-command 'orgtbl-self-insert-command + orgtbl-mode-map global-map) + (substitute-key-definition 'delete-char 'orgtbl-delete-char + orgtbl-mode-map global-map) + (substitute-key-definition 'delete-backward-char 'orgtbl-delete-backward-char + orgtbl-mode-map global-map) + (define-key org-mode-map "|" 'self-insert-command)) + (easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu" + '("OrgTbl" + ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"] + ["Next Field" org-cycle :active (org-at-table-p) :keys "TAB"] + ["Previous Field" org-shifttab :active (org-at-table-p) :keys "S-TAB"] + ["Next Row" org-return :active (org-at-table-p) :keys "RET"] + "--" + ["Blank Field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"] + ["Copy Field from Above" + org-table-copy-down :active (org-at-table-p) :keys "S-RET"] + "--" + ("Column" + ["Move Column Left" org-metaleft :active (org-at-table-p) :keys "M-<left>"] + ["Move Column Right" org-metaright :active (org-at-table-p) :keys "M-<right>"] + ["Delete Column" org-shiftmetaleft :active (org-at-table-p) :keys "M-S-<left>"] + ["Insert Column" org-shiftmetaright :active (org-at-table-p) :keys "M-S-<right>"]) + ("Row" + ["Move Row Up" org-metaup :active (org-at-table-p) :keys "M-<up>"] + ["Move Row Down" org-metadown :active (org-at-table-p) :keys "M-<down>"] + ["Delete Row" org-shiftmetaup :active (org-at-table-p) :keys "M-S-<up>"] + ["Insert Row" org-shiftmetadown :active (org-at-table-p) :keys "M-S-<down>"] + "--" + ["Insert Hline" org-table-insert-hline :active (org-at-table-p) :keys "C-c -"]) + ("Rectangle" + ["Copy Rectangle" org-copy-special :active (org-at-table-p) :keys "C-c M-w"] + ["Cut Rectangle" org-cut-special :active (org-at-table-p) :keys "C-c C-w"] + ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"] + ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"]) + "--" + ["Eval Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="] + ["Eval Formula Down " (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="] + ["Recalculate line" org-table-recalculate :active (org-at-table-p) :keys "C-c *"] + ["Recalculate all" (org-table-recalculate '(4)) :active (org-at-table-p) :keys "C-u C-c *"] + ["Toggle Recalculate Mark" org-table-rotate-recalc-marks :active (org-at-table-p) :keys "C-c #"] + ["Sum Column/Rectangle" org-table-sum + :active (or (org-at-table-p) (org-region-active-p)) :keys "C-c +"] + ["Which Column?" org-table-current-column :active (org-at-table-p) :keys "C-c ?"] + ["Debug Formulas" + (setq org-table-formula-debug (not org-table-formula-debug)) + :style toggle :selected org-table-formula-debug] + )) + t) (defun orgtbl-tab () "Justification and field motion for `orgtbl-mode'." @@ -7108,13 +7726,13 @@ reduced column width." (interactive "p") (if (and (org-at-table-p) (eq N 1) + (string-match "|" (buffer-substring (point-at-bol) (point))) (looking-at ".*?|")) (let ((pos (point))) (backward-delete-char N) (skip-chars-forward "^|") (insert " ") (goto-char (1- pos))) - (message "%s" last-input-event) (sit-for 1) (delete-backward-char N))) (defun orgtbl-delete-char (N) @@ -7125,6 +7743,8 @@ will still be marked for re-alignment, because a narrow field may lead to a reduced column width." (interactive "p") (if (and (org-at-table-p) + (not (bolp)) + (not (= (char-after) ?|)) (eq N 1)) (if (looking-at ".*?|") (let ((pos (point))) @@ -7134,41 +7754,6 @@ a reduced column width." (goto-char pos))) (delete-char N))) -(easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu" - '("Tbl" - ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"] - ["Next Field" org-cycle :active (org-at-table-p) :keys "TAB"] - ["Previous Field" org-shifttab :active (org-at-table-p) :keys "S-TAB"] - ["Next Row" org-return :active (org-at-table-p) :keys "RET"] - "--" - ["Blank Field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"] - ["Copy Field from Above" - org-table-copy-down :active (org-at-table-p) :keys "S-RET"] - "--" - ("Column" - ["Move Column Left" org-metaleft :active (org-at-table-p) :keys "M-<left>"] - ["Move Column Right" org-metaright :active (org-at-table-p) :keys "M-<right>"] - ["Delete Column" org-shiftmetaleft :active (org-at-table-p) :keys "M-S-<left>"] - ["Insert Column" org-shiftmetaright :active (org-at-table-p) :keys "M-S-<right>"]) - ("Row" - ["Move Row Up" org-metaup :active (org-at-table-p) :keys "M-<up>"] - ["Move Row Down" org-metadown :active (org-at-table-p) :keys "M-<down>"] - ["Delete Row" org-shiftmetaup :active (org-at-table-p) :keys "M-S-<up>"] - ["Insert Row" org-shiftmetadown :active (org-at-table-p) :keys "M-S-<down>"] - "--" - ["Insert Hline" org-table-insert-hline :active (org-at-table-p) :keys "C-c -"]) - ("Rectangle" - ["Copy Rectangle" org-copy-special :active (org-at-table-p) :keys "C-c M-w"] - ["Cut Rectangle" org-cut-special :active (org-at-table-p) :keys "C-c C-w"] - ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"] - ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"]) - "--" - ["Which Column?" org-table-current-column :active (org-at-table-p) :keys "C-c ?"] - ["Sum Column/Rectangle" org-table-sum - :active (or (org-at-table-p) (org-region-active-p)) :keys "C-c +"] - ["Eval Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="] - )) - ;;; Exporting (defconst org-level-max 20) @@ -7503,7 +8088,7 @@ Entries can be like (\"ent\"), in which case \"\\ent\" will be translated to In that case, \"\\ent\" will be translated to \"&other;\". The list contains HTML entities for Latin-1, Greek and other symbols. It is supplemented by a number of commonly used TeX macros with appropriate -translations.") +translations. There is currently no way for users to extend this.") (defvar org-last-level nil) ; dynamically scoped variable @@ -8095,7 +8680,7 @@ headlines. The default is 3. Lower levels will become bulleted lists." (org-format-table-table-html-using-table-generate-source olines))))) (defun org-format-org-table-html (lines) - "Format a table into html." + "Format a table into HTML." (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines))) (setq lines (nreverse lines)) (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines))) @@ -8138,7 +8723,7 @@ headlines. The default is 3. Lower levels will become bulleted lists." newstr)) (defun org-format-table-table-html (lines) - "Format a table generated by table.el into html. + "Format a table generated by table.el into HTML. This conversion does *not* use `table-generate-source' from table.el. This has the advantage that Org-mode's HTML conversions can be used. But it has the disadvantage, that no cell- or row-spanning is allowed." @@ -8182,7 +8767,7 @@ But it has the disadvantage, that no cell- or row-spanning is allowed." html)) (defun org-format-table-table-html-using-table-generate-source (lines) - "Format a table into html, using `table-generate-source' from table.el. + "Format a table into HTML, using `table-generate-source' from table.el. This has the advantage that cell- or row-spanning is allowed. But it has the disadvantage, that Org-mode's HTML conversions cannot be used." (require 'table) @@ -8413,10 +8998,10 @@ When LEVEL is non-nil, increase section numbers on that level." ;; - Bindings in Org-mode map are currently ;; 0123456789abcdefghijklmnopqrstuvwxyz!?@#$%^&-+*/=()_{}[]:;"|,.<>~`'\t the alphabet -;; abcd fgh j lmnopqrstuvwxyz ? # -+ /= [] ; |,.<> \t necessary bindings +;; abcd fgh j lmnopqrstuvwxyz ? #$ -+*/= [] ; |,.<>~ \t necessary bindings ;; e (?) useful from outline-mode ;; i k @ expendable from outline-mode -;; 0123456789 ! $%^& * ()_{} " ~`' free +;; 0123456789 ! %^& ()_{} " `' free (define-key org-mode-map "\C-i" 'org-cycle) (define-key org-mode-map [(meta tab)] 'org-complete) @@ -8476,7 +9061,9 @@ When LEVEL is non-nil, increase section numbers on that level." (define-key org-mode-map "\C-c+" 'org-table-sum) (define-key org-mode-map "\C-c|" 'org-table-toggle-vline-visibility) (define-key org-mode-map "\C-c=" 'org-table-eval-formula) -(define-key org-mode-map "\C-c#" 'org-table-create-with-table.el) +(define-key org-mode-map "\C-c*" 'org-table-recalculate) +(define-key org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks) +(define-key org-mode-map "\C-c~" 'org-table-create-with-table.el) (define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region) (define-key org-mode-map "\C-c\C-xa" 'org-export-as-ascii) (define-key org-mode-map "\C-c\C-x\C-a" 'org-export-as-ascii) @@ -8489,12 +9076,7 @@ When LEVEL is non-nil, increase section numbers on that level." (define-key org-mode-map "\C-c\C-xh" 'org-export-as-html) (define-key org-mode-map "\C-c\C-x\C-h" 'org-export-as-html-and-open) -(defsubst org-table-p () - (if (and (eq major-mode 'org-mode) font-lock-mode) - (eq (get-text-property (point) 'face) 'org-table) - ;; (save-match-data (org-at-table-p)))) ; FIXME: OK to not use this? - (org-at-table-p))) - +(defsubst org-table-p () (org-at-table-p)) (defun org-self-insert-command (N) "Like `self-insert-command', use overwrite-mode for whitespace in tables. @@ -8525,6 +9107,7 @@ reduced column width." (interactive "p") (if (and (org-table-p) (eq N 1) + (string-match "|" (buffer-substring (point-at-bol) (point))) (looking-at ".*?|")) (let ((pos (point))) (backward-delete-char N) @@ -8541,6 +9124,8 @@ will still be marked for re-alignment, because a narrow field may lead to a reduced column width." (interactive "p") (if (and (org-table-p) + (not (bolp)) + (not (= (char-after) ?|)) (eq N 1)) (if (looking-at ".*?|") (let ((pos (point))) @@ -8655,16 +9240,14 @@ a reduced column width." (defun org-copy-special () "Call either `org-table-copy' or `org-copy-subtree'." (interactive) - (if (org-at-table-p) - (org-table-copy-region) - (org-copy-subtree))) + (call-interactively + (if (org-at-table-p) 'org-table-copy-region 'org-copy-subtree))) (defun org-cut-special () "Call either `org-table-copy' or `org-cut-subtree'." (interactive) - (if (org-at-table-p) - (org-table-cut-region) - (org-cut-subtree))) + (call-interactively + (if (org-at-table-p) 'org-table-cut-region 'org-cut-subtree))) (defun org-paste-special (arg) "Call either `org-table-paste-rectangle' or `org-paste-subtree'." @@ -8674,23 +9257,37 @@ a reduced column width." (org-paste-subtree arg))) (defun org-ctrl-c-ctrl-c (&optional arg) - "Call realign table, or recognize a table.el table. + "Call realign table, or recognize a table.el table, or update keywords. When the cursor is inside a table created by the table.el package, activate that table. Otherwise, if the cursor is at a normal table created with org.el, re-align that table. This command works even if -the automatic table editor has been turned off." +the automatic table editor has been turned off. +If the cursor is in one of the special #+KEYWORD lines, this triggers +scanning the buffer for these lines and updating the information." (interactive "P") (let ((org-enable-table-editor t)) (cond ((org-at-table.el-p) (require 'table) (beginning-of-line 1) - (re-search-forward "|" (save-excursion (end-of-line 2) (point))) ;FIXME: line-end-position? + (re-search-forward "|" (save-excursion (end-of-line 2) (point))) (table-recognize-table)) ((org-at-table-p) + (org-table-maybe-eval-formula) + (if arg + (org-table-recalculate t) + (org-table-maybe-recalculate-line)) (org-table-align)) - ((save-excursion (beginning-of-line 1) (looking-at "#\\+[A-Z]+")) - (let ((org-inhibit-startup t)) (org-mode))) + ((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)")) + (cond + ((equal (match-string 1) "TBLFM") + ;; Recalculate the table before this line + (save-excursion + (beginning-of-line 1) + (skip-chars-backward " \r\n\t") + (if (org-at-table-p) (org-table-recalculate t)))) + (t + (let ((org-inhibit-startup t)) (org-mode))))) ((org-region-active-p) (org-table-convert-region (region-beginning) (region-end) arg)) ((and (region-beginning) (region-end)) @@ -8718,18 +9315,59 @@ the automatic table editor has been turned off." ;;; Menu entries -;; First, remove the outline menus. Org-mode does not neede these commands. -(if org-xemacs-p - (add-hook 'org-mode-hook - (lambda () - (delete-menu-item '("Headings")) - (delete-menu-item '("Show")) - (delete-menu-item '("Hide")) - (set-menubar-dirty-flag))) - (setq org-mode-map (delq (assoc 'menu-bar (cdr org-mode-map)) - org-mode-map))) - ;; Define the Org-mode menus +(easy-menu-define org-tbl-menu org-mode-map "Tbl menu" + '("Tbl" + ["Align" org-ctrl-c-ctrl-c (org-at-table-p)] + ["Next Field" org-cycle (org-at-table-p)] + ["Previous Field" org-shifttab (org-at-table-p)] + ["Next Row" org-return (org-at-table-p)] + "--" + ["Blank Field" org-table-blank-field (org-at-table-p)] + ["Copy Field from Above" org-table-copy-down (org-at-table-p)] + "--" + ("Column" + ["Move Column Left" org-metaleft (org-at-table-p)] + ["Move Column Right" org-metaright (org-at-table-p)] + ["Delete Column" org-shiftmetaleft (org-at-table-p)] + ["Insert Column" org-shiftmetaright (org-at-table-p)]) + ("Row" + ["Move Row Up" org-metaup (org-at-table-p)] + ["Move Row Down" org-metadown (org-at-table-p)] + ["Delete Row" org-shiftmetaup (org-at-table-p)] + ["Insert Row" org-shiftmetadown (org-at-table-p)] + "--" + ["Insert Hline" org-table-insert-hline (org-at-table-p)]) + ("Rectangle" + ["Copy Rectangle" org-copy-special (org-at-table-p)] + ["Cut Rectangle" org-cut-special (org-at-table-p)] + ["Paste Rectangle" org-paste-special (org-at-table-p)] + ["Fill Rectangle" org-table-wrap-region (org-at-table-p)]) + "--" + ("Calculate" + ["Eval Formula" org-table-eval-formula (org-at-table-p)] + ["Eval Formula Down" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="] + ["Recalculate line" org-table-recalculate (org-at-table-p)] + ["Recalculate all" (lambda () (interactive) (org-table-recalculate '(4))) :active (org-at-table-p) :keys "C-u C-c *"] + ["Toggle Recalculate Mark" org-table-rotate-recalc-marks (org-at-table-p)] + ["Sum Column/Rectangle" org-table-sum + (or (org-at-table-p) (org-region-active-p))] + ["Which Column?" org-table-current-column (org-at-table-p)]) + ["Debug Formulas" + (setq org-table-formula-debug (not org-table-formula-debug)) + :style toggle :selected org-table-formula-debug] + "--" + ["Invisible Vlines" org-table-toggle-vline-visibility + :style toggle :selected (org-in-invisibility-spec-p '(org-table))] + "--" + ["Create" org-table-create (and (not (org-at-table-p)) + org-enable-table-editor)] + ["Convert Region" org-ctrl-c-ctrl-c (not (org-at-table-p 'any))] + ["Import from File" org-table-import (not (org-at-table-p))] + ["Export to File" org-table-export (org-at-table-p)] + "--" + ["Create/Convert from/to table.el" org-table-create-with-table.el t])) + (easy-menu-define org-org-menu org-mode-map "Org menu" '("Org" ["Cycle Visibility" org-cycle (or (bobp) (outline-on-heading-p))] @@ -8794,49 +9432,6 @@ the automatic table editor has been turned off." ["Insert Link" org-insert-link t] ["Follow Link" org-open-at-point t]) "--" - ("Table" - ["Align" org-ctrl-c-ctrl-c (org-at-table-p)] - ["Next Field" org-cycle (org-at-table-p)] - ["Previous Field" org-shifttab (org-at-table-p)] - ["Next Row" org-return (org-at-table-p)] - "--" - ["Blank Field" org-table-blank-field (org-at-table-p)] - ["Copy Field from Above" org-table-copy-down (org-at-table-p)] - "--" - ("Column" - ["Move Column Left" org-metaleft (org-at-table-p)] - ["Move Column Right" org-metaright (org-at-table-p)] - ["Delete Column" org-shiftmetaleft (org-at-table-p)] - ["Insert Column" org-shiftmetaright (org-at-table-p)]) - ("Row" - ["Move Row Up" org-metaup (org-at-table-p)] - ["Move Row Down" org-metadown (org-at-table-p)] - ["Delete Row" org-shiftmetaup (org-at-table-p)] - ["Insert Row" org-shiftmetadown (org-at-table-p)] - "--" - ["Insert Hline" org-table-insert-hline (org-at-table-p)]) - ("Rectangle" - ["Copy Rectangle" org-copy-special (org-at-table-p)] - ["Cut Rectangle" org-cut-special (org-at-table-p)] - ["Paste Rectangle" org-paste-special (org-at-table-p)] - ["Fill Rectangle" org-table-wrap-region (org-at-table-p)]) - "--" - ["Which Column?" org-table-current-column (org-at-table-p)] - ["Sum Column/Rectangle" org-table-sum - (or (org-at-table-p) (org-region-active-p))] - ["Eval Formula" org-table-eval-formula (org-at-table-p)] - "--" - ["Invisible Vlines" org-table-toggle-vline-visibility - :style toggle :selected (org-in-invisibility-spec-p '(org-table))] - "--" - ["Create" org-table-create (and (not (org-at-table-p)) - org-enable-table-editor)] - ["Convert Region" org-ctrl-c-ctrl-c (not (org-at-table-p 'any))] - ["Import from File" org-table-import (not (org-at-table-p))] - ["Export to File" org-table-export (org-at-table-p)] - "--" - ["Create/Convert from/to table.el" org-table-create-with-table.el t]) - "--" ("Export" ["ASCII" org-export-as-ascii t] ["Extract Visible Text" org-export-copy-visible t] @@ -8878,7 +9473,7 @@ With optional NODE, go directly to that node." ;;; Documentation (defun org-customize () - "Call the customize function with org as argument." + "Call the customize function with `org' as argument." (interactive) (customize-browse 'org)) @@ -9017,7 +9612,7 @@ to a visible line beginning. This makes the function of C-a more intuitive." (equal (char-before) ?\r)))) (defun org-back-to-heading (&optional invisible-ok) - "Move to previous heading line, or beg of this line if it's a heading. + "Move to previous heading line, or beginning of this line if it's a heading. Only visible heading lines are considered, unless INVISIBLE-OK is non-nil." (if org-noutline-p (outline-back-to-heading invisible-ok) diff --git a/lisp/textmodes/picture.el b/lisp/textmodes/picture.el index b3c69ca657f..34b661afcc4 100644 --- a/lisp/textmodes/picture.el +++ b/lisp/textmodes/picture.el @@ -359,7 +359,7 @@ With positive argument insert that many lines." (point)))) (replace-match newtext fixedcase literal) (if (< change 0) - (insert-char ?\ (- change))))) + (insert-char ?\s (- change))))) ;; Picture Tabs diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 8e83a8fe90f..a4b5787981d 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -40,7 +40,7 @@ (require 'cl)) (defgroup sgml nil - "SGML editing mode" + "SGML editing mode." :group 'languages) (defcustom sgml-basic-offset 2 @@ -670,12 +670,12 @@ If QUIET, do not print a message when there are no attributes for TAG." (message "No attributes configured.")) (if (stringp (car alist)) (progn - (insert (if (eq (preceding-char) ? ) "" ? ) + (insert (if (eq (preceding-char) ?\s) "" ?\s) (funcall skeleton-transformation (car alist))) (sgml-value alist)) (setq i (length alist)) (while (> i 0) - (insert ? ) + (insert ?\s) (insert (funcall skeleton-transformation (setq attribute (skeleton-read '(completing-read @@ -685,7 +685,7 @@ If QUIET, do not print a message when there are no attributes for TAG." (setq i 0) (sgml-value (assoc (downcase attribute) alist)) (setq i (1- i)))) - (if (eq (preceding-char) ? ) + (if (eq (preceding-char) ?\s) (delete-backward-char 1))) car))) @@ -701,7 +701,7 @@ With prefix argument, only self insert." (eq (aref tag 0) ?/)) (self-insert-command (prefix-numeric-value arg)) (sgml-attributes tag) - (setq last-command-char ? ) + (setq last-command-char ?\s) (or (> (point) point) (self-insert-command 1))))) @@ -1875,7 +1875,7 @@ The third `match-string' will be the used in the menu.") (setq toc-index (cons (cons (concat (make-string (* 2 (1- (string-to-number (match-string 1)))) - ?\ ) + ?\s) (match-string 3)) (line-beginning-position)) toc-index)))) diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el index af13c2fe61c..d220d6b85e9 100644 --- a/lisp/textmodes/table.el +++ b/lisp/textmodes/table.el @@ -650,7 +650,7 @@ See `table-insert' for examples about how to use." :version "22.1") (defgroup table-hooks nil - "Hooks for table manipulation utilities" + "Hooks for table manipulation utilities." :group 'table) (defcustom table-time-before-update 0.2 @@ -1678,7 +1678,7 @@ Inside a table cell has a special keymap. (setq i 0) (while (< i columns) (let ((beg (point))) - (insert (make-string (car cw) ?\ )) + (insert (make-string (car cw) ?\s)) (insert table-cell-vertical-char) (table--put-cell-line-property beg (1- (point)))) (if (cdr cw) (setq cw (cdr cw))) @@ -2247,7 +2247,7 @@ table structure." (end (table--goto-coordinate (cons (cadr this) bottom-border-y))) (rect (extract-rectangle beg end)) (height (+ (- (cddr this) (cdar this)) 1)) - (blank-line (make-string (- (cadr this) (caar this)) ?\ ))) + (blank-line (make-string (- (cadr this) (caar this)) ?\s))) ;; delete lines from the bottom of the cell (setcdr (nthcdr (- height bottom-budget 1) rect) (nthcdr height rect)) ;; delete lines from the top of the cell @@ -3363,7 +3363,7 @@ Currently this method is for LaTeX only." ;; insert a column separator and column/multicolumn contents (with-current-buffer dest-buffer (unless first-p - (insert (if (eq (char-before) ?\ ) "" " ") "& ")) + (insert (if (eq (char-before) ?\s) "" " ") "& ")) (if (> span 1) (insert (format "\\multicolumn{%d}{%sl|}{%s}" span (if first-p "|" "") line)) (insert line))) @@ -3379,7 +3379,7 @@ Currently this method is for LaTeX only." (setq i (1+ i))) (funcall insert-column start x1)) (with-current-buffer dest-buffer - (insert (if (eq (char-before) ?\ ) "" " ") "\\\\\n")))) + (insert (if (eq (char-before) ?\s) "" " ") "\\\\\n")))) (setq y (1+ y))) (with-current-buffer dest-buffer (insert "\\hline\n")) @@ -3534,7 +3534,7 @@ consists from cells of same height." ;; insert the remaining area while appending blank lines below it (table--insert-rectangle (append rect (make-list (+ 2 (- (cdr rb-coord) (cdr lu-coord))) - (make-string (+ 2 (- (car rb-coord) (car lu-coord))) ?\ )))) + (make-string (+ 2 (- (car rb-coord) (car lu-coord))) ?\s)))) ;; remove the appended blank lines below the table if they are unnecessary (table--goto-coordinate (cons 0 (- (cdr bt-coord) (- (cdr rb-coord) (cdr lu-coord))))) (table--remove-blank-lines (+ 2 (- (cdr rb-coord) (cdr lu-coord)))) @@ -4014,7 +4014,7 @@ converts a table into plain text without frames. It is a companion to (unless (eolp) (delete-char 1))) (delete-char -1) - (insert ?\ ) + (insert ?\s) (forward-char -1))) (setq n (1+ n))) (setq table-inhibit-auto-fill-paragraph t)) @@ -4446,16 +4446,16 @@ Replace frame characters with spaces." (move-to-column col) (table--spacify-frame)))) (delete-char 1) - (insert-before-markers ?\ )) + (insert-before-markers ?\s)) ((table--cell-horizontal-char-p (char-after)) (while (progn (delete-char 1) - (insert-before-markers ?\ ) + (insert-before-markers ?\s) (table--cell-horizontal-char-p (char-after))))) ((eq (char-after) table-cell-vertical-char) (while (let ((col (current-column))) (delete-char 1) - (insert-before-markers ?\ ) + (insert-before-markers ?\s) (and (zerop (forward-line 1)) (zerop (current-column)) (move-to-column col) @@ -4611,7 +4611,7 @@ list. This list can be any vertical list within the table." (table--untabify-line) (delete-char columns-to-extend)) (table--untabify-line (point)) - (insert (make-string columns-to-extend ?\ ))) + (insert (make-string columns-to-extend ?\s))) (setcdr coord (1- (cdr coord))))) (table--goto-coordinate (caar (last top-to-bottom-coord-list))) (let ((coord (table--get-coordinate (cdr (table--horizontal-cell-list nil 'first-only 'bottom))))) @@ -4625,7 +4625,7 @@ list. This list can be any vertical list within the table." (table--untabify-line) (delete-char columns-to-extend)) (table--untabify-line (point)) - (insert (make-string columns-to-extend ?\ ))) + (insert (make-string columns-to-extend ?\s))) (setcdr coord (1+ (cdr coord))))) (while (<= (cdr beg-coord) (cdr end-coord)) (table--untabify-line (table--goto-coordinate beg-coord 'no-extension)) @@ -4854,7 +4854,7 @@ in the list." (insert char) (unless (eolp) (delete-char 1)))) - (if (not (eq char ?\ )) + (if (not (eq char ?\s)) (if char (insert char)) (if (not (looking-at "\\s *$")) (if (and table-fixed-width-mode @@ -5398,7 +5398,7 @@ works better than the previous versions however not fully compatible. (defun table--cell-blank-str (&optional n) "Return blank table cell string of length N." - (let ((str (make-string (or n 1) ?\ ))) + (let ((str (make-string (or n 1) ?\s))) (table--put-cell-content-property 0 (length str) str) str)) @@ -5481,7 +5481,7 @@ chopped location is indicated with table-word-continuation-char." (and (zerop (forward-line 1)) (< (point) end))) (t (forward-char -1) - (insert-before-markers (if (equal (char-before) ?\ ) ?\ table-word-continuation-char) + (insert-before-markers (if (equal (char-before) ?\s) ?\s table-word-continuation-char) "\n") t))))) diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index 7d04464346a..e0f1d78bb31 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -40,17 +40,17 @@ (require 'compile) (defgroup tex-file nil - "TeX files and directories" + "TeX files and directories." :prefix "tex-" :group 'tex) (defgroup tex-run nil - "Running external commands from TeX mode" + "Running external commands from TeX mode." :prefix "tex-" :group 'tex) (defgroup tex-view nil - "Viewing and printing TeX files" + "Viewing and printing TeX files." :prefix "tex-" :group 'tex) @@ -1114,7 +1114,7 @@ inserts \" characters." (delete-char (length tex-open-quote)) t))) (self-insert-command (prefix-numeric-value arg)) - (insert (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\ )) + (insert (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\s)) tex-open-quote tex-close-quote)))) (defun tex-validate-buffer () @@ -2421,7 +2421,7 @@ There might be text before point." (+ indent (current-column) tex-indent-item)) (t (let ((col (current-column))) - (if (or (not (eq (char-syntax (or (char-after pos) ?\ )) ?\()) + (if (or (not (eq (char-syntax (or (char-after pos) ?\s)) ?\()) ;; Can't be an arg if there's an empty line inbetween. (save-excursion (re-search-forward "^[ \t]*$" pos t))) ;; If the first char was not an open-paren, there's diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el index 2be01d630f9..048dfa99f31 100644 --- a/lisp/textmodes/texinfo.el +++ b/lisp/textmodes/texinfo.el @@ -44,7 +44,7 @@ (eval-when-compile (require 'tex-mode) (require 'cl)) (defgroup texinfo nil - "Texinfo Mode" + "Texinfo Mode." :group 'docs) ;;;###autoload @@ -701,7 +701,7 @@ With prefix argument or inside @code or @example, inserts a plain \"." (setq in-env t))))) (self-insert-command (prefix-numeric-value arg)) (insert - (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\ )) + (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\s)) texinfo-open-quote texinfo-close-quote))))) @@ -816,7 +816,7 @@ Otherwise, follow with a newline." (texinfo-last-unended-begin) (match-string 1))) "table") - ? ;space + ?\s ?\n))) (defun texinfo-insert-@kbd (&optional arg) diff --git a/lisp/textmodes/two-column.el b/lisp/textmodes/two-column.el index 71687f431c0..dc50cc68aa9 100644 --- a/lisp/textmodes/two-column.el +++ b/lisp/textmodes/two-column.el @@ -200,7 +200,7 @@ ;;;;; variable declarations ;;;;; (defgroup two-column nil - "Minor mode for editing of two-column text" + "Minor mode for editing of two-column text." :prefix "2C-" :group 'frames) diff --git a/lisp/tooltip.el b/lisp/tooltip.el index cb668f9cd00..6b78acd0597 100644 --- a/lisp/tooltip.el +++ b/lisp/tooltip.el @@ -136,6 +136,8 @@ the last mouse movement event that occurred.") (defvar tooltip-hide-time nil "Time when the last tooltip was hidden.") +(defvar gud-tooltip-mode) ;; Prevent warning. + ;;; Event accessors (defun tooltip-event-buffer (event) diff --git a/lisp/uniquify.el b/lisp/uniquify.el index 792a81f3221..e9b8b1e1da2 100644 --- a/lisp/uniquify.el +++ b/lisp/uniquify.el @@ -90,7 +90,7 @@ ;;; User-visible variables (defgroup uniquify nil - "Unique buffer names dependent on file name" + "Unique buffer names dependent on file name." :group 'applications) diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index 4da3d22584a..7e1f8c1fe24 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog @@ -1,3 +1,36 @@ +2005-07-04 Juanma Barranquero <lekktu@gmail.com> + + * url-history.el (url-history-track): Doc fix. + (url-history): Finish `defgroup' description with period. + + * url-cookie.el (url-cookie): + * url-gw.el (url-gateway): + * url-news.el (url-news): + * url-vars.el (url, url-file, url-cache, url-mime, url-hairy): + Finish `defgroup' description with period. + +2005-06-28 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change) + + * url-http.el (url-http-create-request): Call url-recreate-url + in proxy case. + +2005-06-27 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change) + + * url-http.el (url-http-create-request): When computing real-fname, + call url-filename in both cases. + +2005-06-27 Richard M. Stallman <rms@gnu.org> + + * url-cookie.el (url-cookie-store): Rename arg PATH to LOCALPART. + (url-cookie-retrieve): Likewise. + (url-cookie-generate-header-lines): Likewise. + (url-cookie-handle-set-cookie): Likewise. + (url-cookie-create): Expect :localpart instead of :path. + (url-cookie-localpart): Renamed from url-cookie-path. + (url-cookie-set-localpart): Renamed from url-cookie-set-path. + (url-cookie-file): Doc fix. + (url-cookie-p): Add doc string. + 2005-06-23 Richard M. Stallman <rms@gnu.org> * url-cookie.el (url-cookie-generate-header-lines): Fix autoload cookie. diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el index db50f289521..039e3b0150b 100644 --- a/lisp/url/url-cookie.el +++ b/lisp/url/url-cookie.el @@ -34,46 +34,60 @@ ;; 'open standard' defining this crap. ;; ;; A cookie is stored internally as a vector of 7 slots -;; [ 'cookie name value expires path domain secure ] +;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ] (defsubst url-cookie-name (cookie) (aref cookie 1)) (defsubst url-cookie-value (cookie) (aref cookie 2)) (defsubst url-cookie-expires (cookie) (aref cookie 3)) -(defsubst url-cookie-path (cookie) (aref cookie 4)) +(defsubst url-cookie-localpart (cookie) (aref cookie 4)) (defsubst url-cookie-domain (cookie) (aref cookie 5)) (defsubst url-cookie-secure (cookie) (aref cookie 6)) (defsubst url-cookie-set-name (cookie val) (aset cookie 1 val)) (defsubst url-cookie-set-value (cookie val) (aset cookie 2 val)) (defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val)) -(defsubst url-cookie-set-path (cookie val) (aset cookie 4 val)) +(defsubst url-cookie-set-localpart (cookie val) (aset cookie 4 val)) (defsubst url-cookie-set-domain (cookie val) (aset cookie 5 val)) (defsubst url-cookie-set-secure (cookie val) (aset cookie 6 val)) (defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args))) (defsubst url-cookie-create (&rest args) + "Create a cookie vector object from keyword-value pairs ARGS. +The keywords allowed are + :name NAME + :value VALUE + :expires TIME + :localpart LOCALPAR + :domain DOMAIN + :secure ??? +Could someone fill in more information?" (let ((retval (make-vector 7 nil))) (aset retval 0 'cookie) (url-cookie-set-name retval (url-cookie-retrieve-arg :name args)) (url-cookie-set-value retval (url-cookie-retrieve-arg :value args)) (url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args)) - (url-cookie-set-path retval (url-cookie-retrieve-arg :path args)) + (url-cookie-set-localpart retval (url-cookie-retrieve-arg :localpart args)) (url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args)) (url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args)) retval)) (defun url-cookie-p (obj) + "Return non-nil if OBJ is a cookie vector object. +These objects represent cookies in the URL package. +A cookie vector object is a vector of 7 slots: + [cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE]." (and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie))) (defgroup url-cookie nil - "URL cookies" + "URL cookies." :prefix "url-" :prefix "url-cookie-" :group 'url) (defvar url-cookie-storage nil "Where cookies are stored.") (defvar url-cookie-secure-storage nil "Where secure cookies are stored.") -(defcustom url-cookie-file nil "*Where cookies are stored on disk." +(defcustom url-cookie-file nil + "*File where cookies are stored on disk." :type '(choice (const :tag "Default" :value nil) file) :group 'url-file :group 'url-cookie) @@ -154,7 +168,7 @@ telling Microsoft that." (write-file fname) (kill-buffer (current-buffer)))))) -(defun url-cookie-store (name value &optional expires domain path secure) +(defun url-cookie-store (name value &optional expires domain localpart secure) "Store a netscape-style cookie." (let* ((storage (if secure url-cookie-secure-storage url-cookie-storage)) (tmp storage) @@ -173,7 +187,7 @@ telling Microsoft that." (while storage (setq cur (car storage) storage (cdr storage)) - (if (and (equal path (url-cookie-path cur)) + (if (and (equal localpart (url-cookie-localpart cur)) (equal name (url-cookie-name cur))) (progn (url-cookie-set-expires cur expires) @@ -186,7 +200,7 @@ telling Microsoft that." :value value :expires expires :domain domain - :path path + :localpart localpart :secure secure) (cdr found-domain))))) ;; Need to add a new top-level domain @@ -194,7 +208,7 @@ telling Microsoft that." :value value :expires expires :domain domain - :path path + :localpart localpart :secure secure)) (cond (storage @@ -235,8 +249,8 @@ telling Microsoft that." (> (- cur-norm exp-norm) 1)))))) ;;;###autoload -(defun url-cookie-retrieve (host path &optional secure) - "Retrieve all the netscape-style cookies for a specified HOST and PATH." +(defun url-cookie-retrieve (host localpart &optional secure) + "Retrieve all the netscape-style cookies for a specified HOST and LOCALPART." (let ((storage (if secure (append url-cookie-secure-storage url-cookie-storage) url-cookie-storage)) @@ -244,7 +258,7 @@ telling Microsoft that." (cookies nil) (cur nil) (retval nil) - (path-regexp nil)) + (localpart-regexp nil)) (while storage (setq cur (car storage) storage (cdr storage) @@ -255,26 +269,26 @@ telling Microsoft that." (while cookies (setq cur (car cookies) cookies (cdr cookies) - path-regexp (concat "^" (regexp-quote - (url-cookie-path cur)))) - (if (and (string-match path-regexp path) + localpart-regexp (concat "^" (regexp-quote + (url-cookie-localpart cur)))) + (if (and (string-match localpart-regexp localpart) (not (url-cookie-expired-p cur))) (setq retval (cons cur retval)))))) retval)) ;;;###autoload -(defun url-cookie-generate-header-lines (host path secure) - (let* ((cookies (url-cookie-retrieve host path secure)) - (retval nil) - (cur nil) - (chunk nil)) +(defun url-cookie-generate-header-lines (host localpart secure) + (let* ((cookies (url-cookie-retrieve host localpart secure)) + (retval nil) + (cur nil) + (chunk nil)) ;; Have to sort this for sending most specific cookies first (setq cookies (and cookies (sort cookies (function (lambda (x y) - (> (length (url-cookie-path x)) - (length (url-cookie-path y)))))))) + (> (length (url-cookie-localpart x)) + (length (url-cookie-localpart y)))))))) (while cookies (setq cur (car cookies) cookies (cdr cookies) @@ -340,9 +354,9 @@ telling Microsoft that." (trusted url-cookie-trusted-urls) (untrusted url-cookie-untrusted-urls) (expires (cdr-safe (assoc-string "expires" args t))) - (path (or (cdr-safe (assoc-string "path" args t)) - (file-name-directory - (url-filename url-current-object)))) + (localpart (or (cdr-safe (assoc-string "path" args t)) + (file-name-directory + (url-filename url-current-object)))) (rest nil)) (while args (if (not (member (downcase (car (car args))) @@ -422,7 +436,7 @@ telling Microsoft that." (while rest (setq cur (pop rest)) (url-cookie-store (car cur) (cdr cur) - expires domain path secure)))) + expires domain localpart secure)))) (t (message "%s tried to set a cookie for domain %s - rejected." (url-host url-current-object) domain))))) diff --git a/lisp/url/url-gw.el b/lisp/url/url-gw.el index 153d146b608..35104821782 100644 --- a/lisp/url/url-gw.el +++ b/lisp/url/url-gw.el @@ -34,7 +34,7 @@ (autoload 'open-tls-stream "tls") (defgroup url-gateway nil - "URL gateway variables" + "URL gateway variables." :group 'url) (defcustom url-gateway-local-host-regexp nil diff --git a/lisp/url/url-history.el b/lisp/url/url-history.el index 3f9a82b9afd..9483b255d8e 100644 --- a/lisp/url/url-history.el +++ b/lisp/url/url-history.el @@ -32,14 +32,14 @@ (autoload 'url-do-setup "url") (defgroup url-history nil - "History variables in the URL package" + "History variables in the URL package." :prefix "url-history" :group 'url) (defcustom url-history-track nil "*Controls whether to keep a list of all the URLS being visited. If non-nil, url will keep track of all the URLS visited. -If eq to `t', then the list is saved to disk at the end of each emacs +If set to t, then the list is saved to disk at the end of each Emacs session." :type 'boolean :group 'url-history) diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el index f5bbf4a7bf4..0b7e2cef8a1 100644 --- a/lisp/url/url-http.el +++ b/lisp/url/url-http.el @@ -156,8 +156,7 @@ request. (let ((url-basic-auth-storage 'url-http-proxy-basic-auth-storage)) (url-get-authentication url nil 'any nil)))) - (real-fname (if proxy-obj (url-recreate-url proxy-obj) - (url-filename url))) + (real-fname (url-filename (or proxy-obj url))) (host (url-host (or proxy-obj url))) (auth (if (cdr-safe (assoc "Authorization" url-request-extra-headers)) nil @@ -200,7 +199,9 @@ request. (setq request (concat ;; The request - (or url-request-method "GET") " " real-fname " HTTP/" url-http-version "\r\n" + (or url-request-method "GET") " " + (if proxy-obj (url-recreate-url proxy-obj) real-fname) + " HTTP/" url-http-version "\r\n" ;; Version of MIME we speak "MIME-Version: 1.0\r\n" ;; (maybe) Try to keep the connection open diff --git a/lisp/url/url-news.el b/lisp/url/url-news.el index 9d7f64bb4a4..21dd13ec17a 100644 --- a/lisp/url/url-news.el +++ b/lisp/url/url-news.el @@ -32,7 +32,7 @@ (eval-when-compile (require 'cl)) (defgroup url-news nil - "News related options" + "News related options." :group 'url) (defun url-news-open-host (host port user pass) @@ -105,7 +105,7 @@ nntp-open-connection-function) nil (cons (current-buffer) 'browse))) - + ;;;###autoload (defun url-news (url) ;; Find a news reference diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el index 53b144f0f98..1921a6e295f 100644 --- a/lisp/url/url-vars.el +++ b/lisp/url/url-vars.el @@ -29,28 +29,28 @@ "Version number of URL package.") (defgroup url nil - "Uniform Resource Locator tool" + "Uniform Resource Locator tool." :version "22.1" :group 'hypermedia) (defgroup url-file nil - "URL storage" + "URL storage." :prefix "url-" :group 'url) (defgroup url-cache nil - "URL cache" + "URL cache." :prefix "url-" :prefix "url-cache-" :group 'url) (defgroup url-mime nil - "MIME options of URL" + "MIME options of URL." :prefix "url-" :group 'url) (defgroup url-hairy nil - "Hairy options of URL" + "Hairy options of URL." :prefix "url-" :group 'url) diff --git a/lisp/w32-vars.el b/lisp/w32-vars.el index 1877e159ae7..30dae3f9987 100644 --- a/lisp/w32-vars.el +++ b/lisp/w32-vars.el @@ -28,7 +28,7 @@ ;; Custom group for w32 specific settings (defgroup w32 nil - "MS-Windows specific features" + "MS-Windows specific features." :group 'environment :version "22.1" :prefix "w32") |