diff options
| author | Tom Tromey <tromey@redhat.com> | 2013-03-08 11:57:29 -0700 |
|---|---|---|
| committer | Tom Tromey <tromey@redhat.com> | 2013-03-08 11:57:29 -0700 |
| commit | 71f91792e3013b397996905224f387da5cc539a9 (patch) | |
| tree | 4c3d3ba909e76deea1cdf73b73fca67a57149465 /lisp | |
| parent | 6f4de085f065e11f4df3195d47479f28f5ef08ba (diff) | |
| parent | b5426561089d39f18b42bed9dbfcb531f43ed562 (diff) | |
| download | emacs-71f91792e3013b397996905224f387da5cc539a9.tar.gz | |
merge from trunk
Diffstat (limited to 'lisp')
264 files changed, 9146 insertions, 7521 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f324ebbad51..9dc7f06e02c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,1511 @@ +2013-03-08 Jambunathan K <kjambunathan@gmail.com> + + * hi-lock.el (hi-lock-read-regexp-defaults-function): New var. + (hi-lock-read-regexp-defaults): New defun. + (hi-lock-line-face-buffer, hi-lock-face-buffer) + (hi-lock-face-phrase-buffer): Propagate above change. Update + docstring (bug#13892). + + * subr.el (find-tag-default-as-regexp): New defun. + * replace.el (read-regexp): Propagate above change. + +2013-03-08 Jay Belanger <jay.p.belanger@gmail.com> + + * calc/calc-units.el (calc-convert-units): Fix the way that default + new units are stored. + +2013-03-07 Matthias Meulien <orontee@gmail.com> + + * bookmark.el: Define a face to highlight bookmark names in + bookmark menu buffers, where the default is a bold face similarly + to buffer names in buffer menu buffers. + (bookmark-menu-bookmark): New face to highlight bookmark names. + (bookmark-insert-location): Remove duplicated text property to + conform to buffer list (see `list-buffers'). + (bookmark-bmenu-list, bookmark-bmenu-hide-filenames): Apply face + `bookmark-menu-bookmark' to bookmark names. + +2013-03-07 Matthias Meulien <orontee@gmail.com> + Karl Fogel <kfogel@red-bean.com> + + * bookmark.el: Display the bookmark list header similarly to the + buffer list header (see `list-buffers'), where the default is now + an immovable/immutable header line. + (bookmark-bmenu-use-header-line): New variable. + (bookmark-bmenu-inline-header-height): New name for + `bookmark-bmenu-header-height', to avoid confusion with the code + for the new immovable header. All references changed. + (bookmark-bmenu-set-header): New function. + (bookmark-bmenu-list, bookmark-bmenu-toggle-filenames): + Conditionalize header construction accordingly. + (bookmark-bmenu-ensure-position): Conditionalize the skipping of + the inline header height. + (bookmark-bmenu-show-filenames, bookmark-bmenu-hide-filenames): + Conditionalize the skipping of the inline header height. + +2013-03-07 Dmitry Gutov <dgutov@yandex.ru> + + * progmodes/js.el (js--multi-line-declaration-indentation): Merge + from js2-mode (https://github.com/mooz/js2-mode/issues/89). + +2013-03-06 Dmitry Gutov <dgutov@yandex.ru> + + * progmodes/ruby-mode.el (ruby-syntax-propertize-function): Only + propertize regexp when not inside a string (Bug#13885). + +2013-03-06 Alan Mackenzie <acm@muc.de> + + Correct the position of point in some line-up functions. + * progmodes/cc-align.el (c-lineup-whitesmith-in-block) + (c-lineup-assignments, c-lineup-gcc-asm-reg ): take position of + point at column 0 rather than at a random place in the line. + +2013-03-05 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-compat.el (tramp-compat-delete-directory): Implement + TRASH argument. + +2013-03-05 Dmitry Gutov <dgutov@yandex.ru> + + Keep pre-existing highlighting in completion candidates (Bug#13250). + * minibuffer.el (completions-first-difference): State that the + face is "added" in the docstring. + (completions-common-part): Same. And don't inherit from default. + (completion-hilit-commonality): Prepend 'completions-common-part + and 'completion-first-difference faces to the 'face property, + instead of replacing the value(s). + (completion--insert-strings): Same with 'completions-annotations face. + (completion-hilit-commonality): Use 'face instead of + 'font-lock-face, because it gets priority if the completion + strings already have 'face set. + +2013-03-04 Alan Mackenzie <acm@muc.de> + + Replace `last-command-event' by `last-command-char' in XEmacs. + * progmodes/cc-defs.el (c-last-command-char): New macro. + * progmodes/cc-align.el (c-semi&comma-inside-parenlist) + (c-semi&comma-no-newlines-before-nonblanks) + (c-semi&comma-no-newlines-for-oneline-inliners): Use the new macro + in place of `last-command-event'. + * progmodes/cc-cmds.el (c-electric-pound, c-electric-brace) + (c-electric-slash, c-electric-semi&comma, c-electric-lt-gt) + (c-electric-paren, c-electric-continued-statement): Use the new + macro in place of `last-command-event'. + +2013-03-04 Glenn Morris <rgm@gnu.org> + + * files.el (inhibit-local-variables-regexps): + Add .diff and .patch. (Bug#13862) + +2013-03-03 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-adb.el (tramp-adb-maybe-open-connection): Cache, + whether the "su" command is available on the device. + +2013-03-01 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-adb.el (tramp-adb-prompt): Extend regexp. + (tramp-adb-handle-process-file): Remove superfluous setting. + (tramp-adb-command-exit-status): Handle case that COMMAND is nil. + (tramp-adb-barf-unless-okay): Use `tramp-adb-command-exit-status'. + (tramp-adb-maybe-open-connection): Apply "su" if user is defined. + +2013-03-01 Stefan Monnier <monnier@iro.umontreal.ca> + + * textmodes/ispell.el: Fix nitpicks and byte-compiler warnings. + (ispell-print-if-debug): Build `format' in. Avoid end-of-buffer. + (ispell-parse-hunspell-affix-file): Avoid beginning-of-buffer. + Use dict-key rather than dict-name for the error message. + +2013-03-01 Thierry Volpiatto <thierry.volpiatto@gmail.com> + + * net/net-utils.el (net-utils-run-simple): Don't display-buffer + when reverting (bug#13831). + +2013-03-01 AgustÃn MartÃn Domingo <agustin.martin@hispalinux.es> + + * textmodes/ispell.el (ispell-find-hunspell-dictionaries): + Always expand affix-file before storing to protect against changed + `default-directory'. + (ispell-print-if-debug): Make sure message is printed at the end + of the debug buffer. + +2013-03-01 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-obsolete-methods): New defconst. + (tramp-warned-obsolete-methods): New defvar. + (tramp-find-method): Check for obsolete methods. Map them to a + replacement method if appropriate. + + * net/tramp-sh.el (tramp-methods) [scp1, scp2, ssh1, ssh2, plink1]: + Remove methods. + (top): Remove completion functions for "scp1", "scp2", "ssh1", + "ssh2" and "plink1". + +2013-02-28 Dale Sedivec <dale@codefu.org> + + * textmodes/sgml-mode.el (sgml-syntax-propertize-function): + Return valid syntax-table property value when converting + quotes within text from string syntax to punctuation syntax (bug#13844). + +2013-02-28 Juri Linkov <juri@jurta.org> + + * dired-aux.el (dired-diff): If file at point is a backup file, + use its original as the default value, and reverse the order + of arguments to the `diff' call. Doc fix. (Bug#13772) + +2013-02-28 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-adb.el (tramp-adb-sdk-dir): Remove. Replaced by ... + (tramp-adb-program): New defcustom. Remove function. Adapt calls. + +2013-02-28 AgustÃn MartÃn Domingo <agustin.martin@hispalinux.es> + + Initial support for hunspell dictionaries auto-detection (Bug#13639) + + * textmodes/ispell.el (ispell-find-hunspell-dictionaries): + Ask hunspell about available and default dictionaries. + (ispell-parse-hunspell-affix-file): Extract relevant info from + hunspell affix file. + (ispell-hunspell-fill-dictionary-entry): Fill non-initialized + `ispell-dictionary-alist' entry for given dictionary after info + provided by `ispell-parse-hunspell-affix-file'. + (ispell-hunspell-dict-paths-alist): New defvar to contain an alist + of parsed hunspell dicts and associated affix files. + (ispell-hunspell-dictionary-alist): New defvar to contain an alist + of parsed hunspell dicts and associated parameters. + (ispell-set-spellchecker-params): + Call `ispell-find-hunspell-dictionaries' if hunspell and not + previously done. + (ispell-start-process): + Call `ispell-hunspell-fill-dictionary-entry' for current + dictionary if it is not initialized. + +2013-02-28 Stefan Monnier <monnier@iro.umontreal.ca> + + * imenu.el: Comment nitpicks. + +2013-02-28 Sam Steingold <sds@gnu.org> + + * vc/diff-mode.el (diff-hunk-file-names): Handle filenames with spaces. + See <http://stackoverflow.com/questions/14720205>. + +2013-02-28 Thierry Volpiatto <thierry.volpiatto@gmail.com> + + * net/net-utils.el (net-utils--revert-function): New fun (bug#13831). + (net-utils-mode): Use it. + (net-utils--revert-cmd): New var. + (net-utils-run-simple): Set it, and remove bogus interactive spec. + (traceroute): Use net-utils-run-simple. + +2013-02-28 Glenn Morris <rgm@gnu.org> + + * textmodes/paragraphs.el (mark-paragraph): Doc fix. + +2013-02-28 Stefan Monnier <monnier@iro.umontreal.ca> + + * doc-view.el: Preserve h&v scroll across C-c C-c C-c C-c. + (doc-view-fallback-mode): Remove overlays here. + (doc-view-toggle-display): Instead of here. Don't throw away + image-mode-winprops-alist. + (doc-view-goto-page): Don't mess with hscroll. + +2013-02-27 Thierry Volpiatto <thierry.volpiatto@gmail.com> + + * font-lock.el (lisp-font-lock-keywords-2): Fix highlighting of + &optional (bug#13819). + +2013-02-27 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-adb.el (tramp-adb-parse-device-names) + (tramp-adb-maybe-open-connection): Add timeouts. (Bug#13299) + +2013-02-26 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-sh.el (tramp-sh-handle-insert-directory): + Add "2>/dev/null" to the ls command, in case "en_US.utf8" is not + defined. POSIX environments fall back to the "C" locale then and + emit a warning, which shall be suppressed. + +2013-02-26 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Tweak logic. + (easy-mmode-set-keymap-parents): Use make-composed-keymap. + +2013-02-25 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/bytecomp.el (byte-compile-file): Use let. + +2013-02-25 Juri Linkov <juri@jurta.org> + + * replace.el (read-regexp): Let-bind `default' to the first + element of `defaults' if it's a list, otherwise it should be + a string or nil. Let-bind `suggestions' to `defaults' if it's + a list, otherwise make a list with the string value. Doc fix. + (Bug#13805) + +2013-02-25 Eli Zaretskii <eliz@gnu.org> + + * emacs-lisp/bytecomp.el (byte-recompile-directory): Reject files + that match "\`\.#", to avoid compiling lock files, even if they + are readable (as they are on MS-Windows). + +2013-02-25 Stefan Monnier <monnier@iro.umontreal.ca> + + * files.el (basic-save-buffer): Remove redundant directory-creation. + +2013-02-24 Jay Belanger <jay.p.belanger@gmail.com> + + * calc/calc-ext.el (math-to-radians-2, math-from-radians-2): + Add option to force `pi' to remain symbolic. + * calc/calcalg2.el (calcFunc-sin, calcFunc-cos, calcFunc-tan) + (calcFunc-cot, calcFunc-csc, calcFunc-sec, calcFunc-arcsin) + (calcFunc-arccos, calcFunc-arctan): Use symbolic `pi' in the + derivatives, when necessary. + +2013-02-23 Peter Kleiweg <p.c.j.kleiweg@rug.nl> + + * progmodes/ps-mode.el (ps-mode-version): Bump to 1.1i. + (ps-mode-octal-region): Use string-make-unibyte. + +2013-02-23 Glenn Morris <rgm@gnu.org> + + * emulation/viper-cmd.el (viper-submit-report): + * progmodes/ps-mode.el (ps-mode-maintainer-address): + * progmodes/vera-mode.el (vera-mode-help-address): + * textmodes/artist.el (artist-maintainer-address): + * textmodes/reftex.el (reftex-report-bug): + * vc/ediff-util.el (ediff-submit-report): + Add bug-gnu-emacs to bug report address. + + * progmodes/simula.el (simula-mode-menu, simula-mode-map): + Remove bug report entries. + (simula-mode-help-address, simula-submit-bug-report): Make obsolete. + + * emacs-lisp/bytecomp.el (byte-compile-level): New. + (byte-compile-file, byte-compile-from-buffer): + Use separate input/output buffers for each level of recursive + byte-compile-file calls. (Bug#13787) + +2013-02-23 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-methods): Fix docstring. + (tramp-ssh-controlmaster-options): Rename it from + `tramp-ssh-controlmaster-template'. Return a string. + (tramp-default-method): Adapt check for + `tramp-ssh-controlmaster-options'. + + * net/tramp-sh.el (tramp-methods): + Replace `tramp-ssh-controlmaster-template' by "%c". + (tramp-do-copy-or-rename-file-out-of-band) + (tramp-maybe-open-connection): Use it in format spec. Ensure, + that it is applied for the first hop only. + +2013-02-22 Juri Linkov <juri@jurta.org> + + * isearch.el (isearch-lazy-highlight-new-loop): + Set `isearch-lazy-highlight-start' and `isearch-lazy-highlight-end' + to `isearch-other-end' if it is not nil. (Bug#13402) + + * replace.el (replace-highlight): Let-bind `isearch-other-end' + to `match-beg'. + + * textmodes/ispell.el (ispell-highlight-spelling-error-overlay): + Let-bind `isearch-other-end' to `start', `isearch-forward' to t + and `isearch-error' to nil. + +2013-02-22 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-tramp-file-p): Fix docstring. + + * net/tramp-sh.el (tramp-sh-handle-insert-directory): + Handle multibyte file names. + +2013-02-22 Glenn Morris <rgm@gnu.org> + + * textmodes/sgml-mode.el (sgml-xml-mode): Move before use. + (sgml-transformation-function): Give it a :set function. + (sgml-tag): Doc fix. + + * cmuscheme.el (scheme-buffer): + * progmodes/inf-lisp.el (inferior-lisp-buffer): + * progmodes/tcl.el (inferior-tcl-buffer): + * textmodes/tex-mode.el (tex-command): Doc fixes. + + * image-mode.el (image-mode): Add mouse bindings for mode-line-process. + + * htmlfontify.el (hfy-default-header): Encode title string. (Bug#7457) + +2013-02-21 Bastien Guerry <bzg@gnu.org> + + * cmuscheme.el (scheme-buffer): Fix docstring. (Bug#13778) + +2013-02-21 Fabián Ezequiel Gallina <fgallina@cuca> + + * progmodes/python.el (python-info-current-defun): + Enhance match-data cluttering prevention. + +2013-02-21 Glenn Morris <rgm@gnu.org> + + * net/tramp.el (tramp-get-debug-buffer): Ensure outline.el is not + loaded while outline-regexp is let bound. (Bug#9584) + +2013-02-21 Fabián Ezequiel Gallina <fgallina@cuca> + + * progmodes/python.el (python-info-current-defun): Fix failed + defun name retrieval because of unwanted match-data cluttering. + +2013-02-21 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-ssh-controlmaster-template): Make it a + defconst. Apply independent check for ControlPersist. + + * net/tramp-sh.el (tramp-sh-handle-set-file-times): Set $UTC only + temporarily, via "env". + +2013-02-21 Glenn Morris <rgm@gnu.org> + + * info.el (Info-enable-edit): Remove. + (Info-edit): Disable it rather than using Info-enable. + (Info-edit-mode-hook, Info-edit-map, Info-edit-mode, Info-edit) + (Info-cease-edit): Make editing of Info files obsolete. + + * informat.el (Info-tagify): + Handle buffers not visiting files. (Bug#13763) + +2013-02-21 Juanma Barranquero <lekktu@gmail.com> + + * calc/calc-graph.el (calc-graph-show-dumb): Fix typo. + +2013-02-21 Glenn Morris <rgm@gnu.org> + + * files.el (basic-save-buffer): Move check for existing parent + directory after hooks. (Bug#13773) + +2013-02-20 Stefan Monnier <monnier@iro.umontreal.ca> + + * simple.el (command-execute): Move from C. Add obsolete check. + (extended-command-history): Move from C. + +2013-02-20 Ulrich Müller <ulm@gentoo.org> + + * jka-cmpr-hook.el (jka-compr-compression-info-list) + (jka-compr-mode-alist-additions): Handle .txz suffix for + XZ-compressed tar archives (bug#13770). + +2013-02-20 Bastien Guerry <bzg@gnu.org> + + * outline.el (outline-regexp, outline-heading-end-regexp): + Make variables, not options (bug#13731). + +2013-02-20 Glenn Morris <rgm@gnu.org> + + * image.el (image-current-frame): Change from variable to function. + (image-show-frame): Rename from image-nth-frame. Update callers. + * image-mode.el (image-multi-frame): New variable. + (image-mode-map, image-mode, image-goto-frame): + Use image-multi-frame rather than image-current-frame. + (image-mode, image-goto-frame): Use image-current-frame as + function rather than as variable. + + * emacs-lisp/cl-lib.el (cl-floatp-safe): Make it an alias for floatp. + * emacs-lisp/cl-macs.el (cl--make-type-test) + (cl--compiler-macro-assoc): Use floatp rather than cl-floatp-safe. + +2013-02-19 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-cache.el (tramp-get-hash-table): New defun. + (tramp-get-file-property, tramp-set-file-property) + (tramp-get-connection-property, tramp-set-connection-property): Use it. + (tramp-flush-file-property, tramp-flush-directory-property): + Rename argument to KEY. + (tramp-flush-connection-property): Simplify a little bit. + (tramp-connection-property-p): New defun. + (top): Reapply saved values only if there isn't a corresponding + entry in `tramp-connection-properties'. + +2013-02-19 Fabián Ezequiel Gallina <fgallina@cuca> + + * progmodes/python.el (python-indent-context): + Fix python-info-line-ends-backslash-p call. + (python-info-line-ends-backslash-p) + (python-info-beginning-of-backslash): Respect line-number argument. + (python-info-current-line-comment-p): + Fix behavior when not at beginning-of-line. + (python-util-position): Remove function. + (python-util-goto-line): New function. + +2013-02-19 Michael Albinus <michael.albinus@gmx.de> + + * eshell/em-unix.el (eshell/su): Require tramp. + (eshell/sudo): Require tramp. Remove now unnecessary check. + + * net/tramp-sh.el (tramp-sh-handle-start-file-process): Let-bind + `tramp-current-connection' in order to avoid an error when several + commands are invoked in a short time in eshell and friends. + +2013-02-19 Stefan Monnier <monnier@iro.umontreal.ca> + + Cleanup some of EIEIO's namespace. + * emacs-lisp/eieio.el (eieio--define-field-accessors): New macro. + Use it to define all the class-* and object-* field accessors (renamed + to eieio--class-* and eieio--object-*). Update all uses. + (eieio--class-num-slots, eieio--object-num-slots): Rename from + class-num-slots and object-num-slots. + (eieio--check-type): New macro. + (eieio-defclass, eieio-oref, eieio-oref-default, same-class-p) + (object-of-class-p, child-of-class-p, object-slots, class-slot-initarg) + (eieio-oset, eieio-oset-default, object-assoc, object-assoc-list) + (object-assoc-list-safe): Use it. + (eieio-defclass): Tighten regexp. + (eieio--defmethod): Use `memq'. Signal an error for unknown method kind. + Remove unreachable code. + (object-class-fast): Declare obsolete. + (eieio-class-name, eieio-object-name, eieio-object-set-name-string) + (eieio-object-class, eieio-object-class-name, eieio-class-parents) + (eieio-class-children, eieio-class-precedence-list, eieio-class-parent): + Rename from class-name, object-name, object-set-name-string, + object-class, object-class-name, class-parents, class-children, + class-precedence-list, class-parent; with obsolete alias. + (class-of, class-direct-superclasses, class-direct-subclasses): + Declare obsolete. + (eieio-defmethod): Use `memq'; remove unreachable code. + * emacs-lisp/eieio-base.el (eieio-persistent-read): + * emacs-lisp/eieio-opt.el (eieio-class-button, eieio-describe-generic) + (eieio-browse-tree, eieio-browse): Use eieio--check-type. + + +2013-02-18 Michael Heerdegen <michael_heerdegen@web.de> + + * emacs-lisp/eldoc.el (eldoc-highlight-function-argument): + Use font-lock-keyword-face for macros and special forms (bug#8345). + +2013-02-17 Didier Verna <didier@didierverna.net> + + * net/network-stream.el (network-stream-open-starttls): + Check that response to the starttls-command is non-nil. (Bug#13706) + +2013-02-17 Stefan Monnier <monnier@iro.umontreal.ca> + + * font-lock.el (lisp-font-lock-keywords-1, lisp-font-lock-keywords-2): + Don't assume all identifier chars have syntax word. + * emacs-lisp/lisp-mode.el (lisp-mode-variables): + Remove bar-not-symbol. Adjust callers. + (lisp-mode-variables): Don't set a font-lock-syntax-table. + +2013-02-17 Leo Liu <sdl.web@gmail.com> + + * net/rcirc.el (rcirc-keepalive): Fix invalid timer error. + +2013-02-17 Glenn Morris <rgm@gnu.org> + + * menu-bar.el (menu-bar-tools-menu): Fix case of EDE entry. + + * image-mode.el (image-mode-map): Add image-dired menu entry. + + * image-dired.el (tumme): Make this alias obsolete. + +2013-02-16 Glenn Morris <rgm@gnu.org> + + * image.el (image-animated-types): Remove. + (image-multi-frame-p): Rename from image-animated-p, and generalize. + (image-animated-p): Make obsolete alias. + (image-animate, image-nth-frame, image-animate-timeout): + Use image-multi-frame-p. + (image-animate-timeout): If no delay, use image-default-frame-delay. + * image-mode.el (image-mode, image-toggle-animation): + Use image-multi-frame-p. (Bug#763, bug#10739) + (image-mode): Adjust startup message for a multi-frame image. + + * image-mode.el (image-mode-map): Give it a menu. + +2013-02-16 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-cache.el (tramp-connection-properties): New customer + option. + (tramp-get-connection-property): Use it. + + * net/tramp-compat.el (top): Require 'trampver. + + * net/tramp-sh.el (tramp-remote-process-environment): + Set tramp-autoload cookie. + +2013-02-16 Kevin Ryde <user42@zip.com.au> + + * info-look.el (info-lookup-select-mode): If major-mode has no + info-lookup-alist entry then search up derived-mode-parent (bug#8660). + +2013-02-16 Jambunathan K <kjambunathan@gmail.com> + + * replace.el (read-regexp): Tighten the regexp that matches tag. + When tag is retrieved with `find-tag-default', use regexp that + matches tag at point. Also update docstring (Bug#13687). + +2013-02-16 Eli Zaretskii <eliz@gnu.org> + + * autorevert.el (auto-revert-notify-add-watch): With 'w32notify', + add watch for the file, not its parent directory, since w32notify + sets up the watch for the directory internally. (Bug#13725) + +2013-02-16 Glenn Morris <rgm@gnu.org> + + * image.el (image-default-frame-delay): New variable. + (image-animated-p): Use image-default-frame-delay. + (image-minimum-frame-delay): New constant. + (image-animate-timeout): Use image-minimum-frame-delay. + + * image.el (image-nth-frame): New, split from image-animate-timeout. + (image-animate-timeout): Use image-nth-frame. + * image-mode.el (image-goto-frame, image-next-frame) + (image-previous-frame): New commands. + (image-mode-map): Add new frame commands. + +2013-02-16 Jonas Bernoulli <jonas@bernoul.li> + + * emacs-lisp/tabulated-list.el (tabulated-list-print-col): + If col-desc already has help-echo, use it. (Bug#13563) + +2013-02-16 Glenn Morris <rgm@gnu.org> + + * image.el (image-current-frame): New variable. + (image-animate-timeout): Set image-current-frame. + * image-mode.el (image-mode): For animated images, + display a frame counter via mode-line-process. + + * font-lock.el (lisp-font-lock-keywords-1): Add defvar-local. + +2013-02-15 Stefan Monnier <monnier@iro.umontreal.ca> + + * simple.el (eval-expression): Let `exp' set the mark (bug#13724). + +2013-02-15 Alan Mackenzie <acm@muc.de> + + * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): When a + global minor mode has been enabled, call the minor mode function + for a new buffer once only, after the major mode hook, whilst + allowing that hook explicitly to disable the minor mode. + (MODE-disable-in-buffer): New (generated) function. + (disable-MODE): New (generated) buffer local variable. + +2013-02-15 Jambunathan K <kjambunathan@gmail.com> + + * iswitchb.el (iswitchb-read-buffer): Bind `C-.' and `C-,' to + `iswitchb-next-match' and `iswitchb-prev-match' resply. + * ido.el (ido-init-completion-maps): Bind `C-.' and `C-,' to + `ido-next-match' and `ido-prev-match' resply. + * icomplete.el (icomplete-minibuffer-map): Unbind `C-s' and `C-r'. + Bind `C-.' and `C-,' to `icomplete-forward-completions' and + `icomplete-backward-completions' (Bug#13708). + +2013-02-15 Glenn Morris <rgm@gnu.org> + + * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix. + +2013-02-15 Stefan Monnier <monnier@iro.umontreal.ca> + + * net/goto-addr.el (goto-address-fontify): Add start and end args. + (goto-address-fontify-region): Use them instead of narrowing, so + syntax-ppss has access to the whole buffer. + +2013-02-15 Fabián Ezequiel Gallina <fgallina@cuca> + + * progmodes/python.el: Explain how to restore "cc-mode"-like + forward-sexp movement in header documentation (Bug#13642). + (python-nav--forward-sexp): Behave like emacs-lisp-mode in + comments and strings (GH bug 114). + +2013-02-15 Fabián Ezequiel Gallina <fgallina@cuca> + + * progmodes/python.el (python-info-current-defun): Fix current + defun detection (Bug#13618). + +2013-02-15 Chong Yidong <cyd@gnu.org> + + * xml.el (xml-parse-string): Fix typo in handling of bad character + references. + +2013-02-15 Glenn Morris <rgm@gnu.org> + + * play/fortune.el (fortune-compile): Simplify and fix previous change. + +2013-02-14 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-debug-message): + Add `tramp-condition-case-unless-debug'. + (tramp-debug-on-error): New defvar. + (tramp-condition-case-unless-debug): New defun. + (tramp-file-name-handler): Use it. + +2013-02-14 Juri Linkov <juri@jurta.org> + + * info.el (Info-isearch-filter): Treat non-nil values of + `search-invisible' including its default value `open' + like the value `t' to match hidden text. (Bug#13402) + +2013-02-14 Glenn Morris <rgm@gnu.org> + + * help-fns.el (find-lisp-object-file-name): Give special treatment + to all ~/.foo.elc files, not just ~/.emacs. (Bug#9007) + +2013-02-14 David Biesack <sasdjb@d72933.na.sas.com> (tiny change) + + * net/quickurl.el (quickurl-save-urls): + Ensure quickurl-urls is not truncated on printing. (Bug#9276) + +2013-02-14 Dmitry Gutov <dgutov@yandex.ru> + + * progmodes/ruby-mode.el (ruby-parse-partial): Don't increase + depth for unfinished percent literal. Not using it in the caller. + (ruby-move-to-block): Jump over multiline literals of all types, + ignoring code-looking contents inside them. + (ruby-add-log-current-method): Improve performance at the expense + of accuracy. `ruby-block-contains-point' is relatively slow, so + only use it for method and singleton class blocks. + +2013-02-13 Michael Albinus <michael.albinus@gmx.de> + + Use ControlMaster where applicable. (Bug#13677) + + * net/tramp.el (tramp-ssh-controlmaster-template): New defvar, + replacing `tramp-detect-ssh-controlmaster'. + (tramp-default-method): Use it. + + * net/tramp-sh.el (tramp-methods) [scp, scp1, scp2, scpx, sftp]: + [rsync, ssh, ssh1, ssh2, sshx]: Add ControlPath and ControlMaster + arguments. + [scpc, rsyncc]: Remove methods. + (top): Remove completion functions for "scpc", "rsyncc", "ssh1_old" + and "ssh2_old". + (tramp-do-copy-or-rename-file-out-of-band): Change trace level. + (tramp-maybe-open-connection): Reuse tmpfile for ControlPath. + +2013-02-13 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/package.el (package--initialized): Move before first use. + +2013-02-13 Jambunathan K <kjambunathan@gmail.com> + + * icomplete.el (icomplete-hide-common-prefix): New user option. + (icomplete-first-match): New face. + (icomplete-completions): Correct handling of "complete but not + unique" (Bug#12638). + +2013-02-13 YE Qianchuan <stool.ye@gmail.com> (tiny change) + + * descr-text.el (describe-char): Display the script (bug#13698). + +2013-02-13 Stefan Monnier <monnier@iro.umontreal.ca> + + * tmm.el: Use lexical-binding and current-active-maps. + (tmm-menubar): Use map-keymap and pcase. + (tmm--completion-table): New function. + (tmm-prompt): Use it to fix the menu order. + (tmm-get-keybind): Use current-active-maps. + +2013-02-12 Christopher Schmidt <christopher@ch.ristopher.com> + + Add dired-hide-details-mode. (Bug#6799) + + * locate.el (locate-mode): Set parent mode property to dired-mode. + + * find-dired.el (find-dired): Call dired-insert-set-properties on + initial information line. Set process mark on end of buffer. + (find-dired-sentinel): + Call dired-insert-set-properties on summary. + + * dired.el (dired-hide-details-hide-symlink-targets) + (dired-hide-details-hide-information-lines): New options. + (dired-insert-directory): + Set properties after final treatment of output. + (dired-insert-set-properties): + Set dired-hide-details-* properties. + (dired-mode-map): Bind dired-hide-details-mode. + (dired-mode): Set buffer-invisibility-spec to a list. + (dired-next-line): Skip hidden lines. + (dired-previous-line): Use dired-next-line. + (dired-hide-details-mode): New minor mode. + (dired-hide-details-update-invisibility-spec): New function. + +2013-02-13 Glenn Morris <rgm@gnu.org> + + * play/yow.el: Move to obsolete/. (Bug#9384) + +2013-02-13 Juri Linkov <juri@jurta.org> + + * vc/ediff-util.el (ediff-recenter): Use `select-frame-set-input-focus' + to select `ediff-control-frame' and set input focus correctly on Xfce. + (Bug#12218) + +2013-02-13 Juri Linkov <juri@jurta.org> + + * image-mode.el (image-mode-map): + * doc-view.el (doc-view-mode-map): + * vc/ediff-util.el (ediff-setup-keymap): + Make S-SPC scroll in the opposite sense to SPC. (Bug#2145) + +2013-02-13 Dmitry Gutov <dgutov@yandex.ru> + + * progmodes/ruby-mode.el (ruby-move-to-block): Improve + performance. Instead of recalculating indentation fully for each + line, sum up indentation depth based only on visited lines. + (ruby-parse-partial): Increase the depth after "do" even when END + is right after it. + (ruby-parse-partial): When END is in the middle of a percent + literal, increase the depth if the delimiter chars belong to the + paren syntax class. + +2013-02-13 Kirill A. Korinskiy <catap@catap.ru> + + * play/fortune.el (fortune-compile): Also make the compiled file + if it does not exist at all, not just if it is old. (Bug#5338) + +2013-02-13 Glenn Morris <rgm@gnu.org> + + * emacs-lisp/package.el (package-menu-execute): Doc fix. + +2013-02-13 Yves Baumes <ybaumes@gmail.com> (tiny change) + + * lisp/emacs-lisp/package.el (package-menu-execute): + Add optional noquery argument. (Bug#13625) + +2013-02-13 Michael Albinus <michael.albinus@gmx.de> + + * net/ange-ftp.el (ange-ftp-make-directory): Don't raise an error, + if DIR exists and PARENTS is non-nil. + +2013-02-13 Juanma Barranquero <lekktu@gmail.com> + + * progmodes/js.el (js--multi-line-declaration-indentation): + Silence byte-compiler warning. + +2013-02-12 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-adb.el (tramp-adb-handle-start-file-process): Rewrite. + + * net/tramp-compat.el (top): Declare `remote-file-name-inhibit-cache' + only if it doesn't exist. + + * net/tramp-sh.el (tramp-sh-handle-start-file-process): + Set process marker. + +2013-02-12 Tassilo Horn <tsdh@gnu.org> + + * doc-view.el (doc-view-odf->pdf-converter-soffice): Use separate + UserInstallation when calling soffice to work around LibreOffice + bug 37531. + +2013-02-12 Glenn Morris <rgm@gnu.org> + + * files.el (basic-save-buffer): + Offer to create a non-existing directory. (Bug#3016) + + * calc/calc-graph.el (calc-graph-show-dumb): + * calendar/calendar.el (calendar-mode-map): + * cus-edit.el (custom-mode-map): + * ehelp.el (electric-help-map): + * emulation/vip.el (vip-mode-map): + * epa.el (epa-key-list-mode-map): + * info.el (Info-mode-map): + * mail/rmail.el (rmail-mode-map): + * mail/rmailsum.el (rmail-summary-mode-map): + * man.el (Man-mode-map): + * net/newst-plainview.el (newsticker-mode-map): + * progmodes/cpp.el (cpp-edit-mode-map): + * progmodes/grep.el (grep-mode-map): + * progmodes/idlw-help.el (idlwave-help-mode-map): + * simple.el (special-mode-map): + * startup.el (splash-screen-keymap): + * view.el (view-mode-map): + Make S-SPC scroll in the opposite sense to SPC. (Bug#2145) + +2013-02-11 Elias Pipping <pipping@lavabit.com> + + * doc-view.el (doc-view-current-cache-dir): Beware % escapes + (bug#13679). + +2013-02-11 Stefan Monnier <monnier@iro.umontreal.ca> + + * cus-start.el (all): Remove inhibit-local-menu-bar-menus. + +2013-02-11 Glenn Morris <rgm@gnu.org> + + * vc/diff.el (diff-use-labels): New variable. + (diff-no-select): Use --label rather than -L, and first + check that it is supported. (Bug#11067) + + * files.el (enable-dir-local-variables): New variable. + (hack-dir-local-variables): Respect enable-dir-local-variables. + * tutorial.el (help-with-tutorial): + Ignore directory-local variables. (Bug#11127) + + * vc/vc-svn.el (vc-svn-command): Move --non-interactive from here... + (vc-svn-global-switches): ... to here. (Bug#13513) + +2013-02-10 Christopher Schmidt <christopher@ch.ristopher.com> + + * minibuf-eldef.el (minibuffer-default--in-prompt-regexps): + Handle "foo (bar, default: xxx): " prompts. + +2013-02-10 Chong Yidong <cyd@gnu.org> + + * files.el (basic-save-buffer-1): Do not set + buffer-file-coding-system-explicit (Bug#4533). + + * mail/emacsbug.el (report-emacs-bug): Change binding of + report-emacs-bug-insert-to-mailer to C-c M-i (Bug#13510). + +2013-02-09 Jay Belanger <jay.p.belanger@gmail.com> + + * calc/calc.el (calc-allow-units-as-numbers): New variable. + * calc/calc-units.el (calc-convert-units): Use new variable. + +2013-02-09 Eli Zaretskii <eliz@gnu.org> + + * subr.el (buffer-file-type, default-buffer-file-type): Remove. + + * net/ange-ftp.el (ange-ftp-insert-file-contents): Don't reference + buffer-file-type. + + * mail/feedmail.el (feedmail-force-binary-write): Doc fix. + (feedmail-run-the-queue, feedmail-dump-message-to-queue) + (feedmail-send-it-immediately): Don't bind buffer-file-type, bind + coding-system-for-write instead. + + * jka-compr.el (jka-compr-write-region): Don't bind + buffer-file-type. + + * emacs-lisp/bytecomp.el (byte-compile-file): Don't bind + buffer-file-type. + + * files.el (file-name-buffer-file-type-alist): Remove defvar. + (insert-file-contents-literally): Remove reference to + file-name-buffer-file-type-alist. + + * dos-w32.el (file-name-buffer-file-type-alist): Deprecate and + make-obsolete. + (find-buffer-file-type-match, find-buffer-file-type): Remove. + (find-buffer-file-type-coding-system): Remove references to + find-buffer-file-type-match, find-buffer-file-type, and + buffer-file-type. + Don't put find-buffer-file-type-coding-system into + file-coding-system-alist. + (find-file-binary, find-file-text): Bind coding-system-for-read + instead of file-name-buffer-file-type-alist. + +2013-02-09 Jambunathan K <kjambunathan@gmail.com> + + * doc-view.el: Use (and prefer) soffice as default ODF->PDF + converter (Bug#13622). + (doc-view-unoconv-program): Make obsolete alias. + (doc-view-odf->pdf-converter-program): New variable. + (doc-view-odf->pdf-converter-function): New variable. + (doc-view-mode-p): Use it. + (doc-view-odf->pdf-converter-unoconv): + Rename from `doc-view-odf->pdf-converter-unoconv'. + (doc-view-odf->pdf-converter-soffice): New function. + (doc-view-convert-current-doc): + Use `doc-view-odf->pdf-converter-function'. + +2013-02-09 Chong Yidong <cyd@gnu.org> + + * minibuffer.el (minibuffer-inactive-mode-map): Bind mouse-1 to + view-echo-area-messages (Bug#13340). + + * help.el (view-echo-area-messages): Use display-buffer. + + * dired-x.el (dired-do-run-mail): Prompt for confirmation + (Bug#13561). + +2013-02-08 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/byte-run.el (eval-when-compile, eval-and-compile): + Eval body right away, now that we do eager macroexpansion (bug#13605). + + * simple.el (end-of-buffer): Don't touch unrelated windows (bug#13466). + (fundamental-mode): Use run-mode-hooks. + + * eshell/esh-proc.el (eshell/kill): Fix last change. + * eshell/em-ls.el (eshell-ls-dir): Fix use of CL in last change. + +2013-02-08 Aidan Gauland <aidalgol@no8wireless.co.nz> + + * eshell/esh-proc.el (eshell/kill): Rewrite. + + * eshell/em-ls.el (show-almost-all): Declare. + (eshell-do-ls): Add support for -A argument. + +2013-02-08 Jambunathan K <kjambunathan@gmail.com> + + * icomplete.el (icomplete-forward-completions) + (icomplete-backward-completions): Handle corner case (bug#13602). + +2013-02-07 Michael Albinus <michael.albinus@gmx.de> + + * vc/vc-hooks.el (vc-find-file-hook): `buffer-file-truename' can + be nil. Handle this. (Bug#13636) + +2013-02-07 Richard Stallman <rms@gnu.org> + + * mail/rmail.el (rmail-variables): Specify `no-conversion' for + `save-buffer-coding-system'. + +2013-02-07 Alan Mackenzie <acm@muc.de> + + Fix bug in state cache mechanism. Remove 'BOD "strategy". Refactor. + * progmodes/cc-engine.el (c-get-fallback-scan-pos): Remove. + (c-parse-state-get-strategy): Don't return 'BOD any more. + (c-append-lower-brace-pair-to-state-cache): + Extra parameter HERE instead of narrowing. + Widen to top of buffer before searching backwards for a brace pair. + (c-state-push-any-brace-pair): Add HERE parameter to function call. + (c-append-to-state-cache): Extra parameter HERE in place of narrowing. + Narrow to parameter HERE, in place of being called narrowed. + (c-remove-stale-state-cache): Extra parameter HERE in place of + narrowing. Check there's an open brace in the cache before + searching for its match. + (c-invalidate-state-cache-1): Add HERE parameter to function call. + (c-parse-state-1): Don't narrow here for 'forward strategy, + instead passing extra parameter HERE to several functions. + Remove 'BOD strategy. + +2013-02-06 Nicolas Richard <theonewiththeevillook@yahoo.fr> (tiny change) + + * emacs-lisp/package.el (describe-package-1): Tell what archive is + used to install the package. + +2013-02-06 Glenn Morris <rgm@gnu.org> + + * vc/vc-hooks.el (vc-find-file-hook): Don't ask about following links + if we can't get user input. (Bug#6567) + + * startup.el (command-line): If simple.el is missing, + test and warn about for some possible causes. + +2013-02-05 Jan Djärv <jan.h.d@swipnet.se> + + * cus-start.el (all): Add ns-use-native-fullscreen. + +2013-02-05 Glenn Morris <rgm@gnu.org> + + * profiler.el (profiler-report-mode-map): Add a restart menu entry. + + * play/gamegrid.el (gamegrid-add-score-with-update-game-score): + Fix directory creation in fallback case. + +2013-02-04 Thierry Volpiatto <thierry.volpiatto@gmail.com> + + * vc/vc.el (vc-next-action): Fix inf-loop (bug#13610). + (vc-update-change-log): Use dolist. + +2013-02-04 Chong Yidong <cyd@gnu.org> + + * thingatpt.el: Rewrite the URL detection routines, absorbing some + code from ffap.el. + (thing-at-point-beginning-of-url-regexp): New var. + (thing-at-point-uri-schemes): Update list of URI schemes. + (thing-at-point-url-regexp): Variable deleted. + (thing-at-point-markedup-url-regexp): Disallow newlines. + (thing-at-point-newsgroup-regexp) + (thing-at-point-newsgroup-heads) + (thing-at-point-default-mail-uri-scheme): New variables. + (thing-at-point-bounds-of-url-at-point): Rewrite. Use ffap's + method to find the possible bounds of the URI at point. + New optional argument to find ill-formed URIs. + (thing-at-point-url-at-point): Rewrite. New arguments for finding + ill-formed URIs. Use thing-at-point-bounds-of-url-at-point, and + the scheme-adding heuristics from ffap-url-at-point. + (thing-at-point--bounds-of-well-formed-url): New function. + Do parens matching to decide whether to include parens in the URI + (Bug#9153). + + * ffap.el: Require thingatpt. + (ffap-url-at-point): Delegate URI detection to thing-at-point. + All URI-valid characters are now recognized (Bug#5673). + (ffap-string-at-point): Use use-region-p. + (ffap-url-regexp): Extra character is handled by thing-at-point. + (ffap-string-at-point-mode-alist): Allow parentheses. + (ffap-newsgroup-regexp, ffap-newsgroup-heads, ffap-newsgroup-p): + Convert to aliases; code moved to thingatpt.el. + (ffap-gnus-hook): Use setq-local. + +2013-02-04 Glenn Morris <rgm@gnu.org> + + * emacs-lisp/ert.el (ert--explain-format-atom): + Don't try to print non-characters as characters. (Bug#13543) + +2013-02-03 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-debug-message): Extend function exclude list. + (tramp-backtrace): New defun. + (tramp-handle-insert-file-contents): Use `visit' when inserting + the local copy. + + * net/tramp-sh.el (tramp-sh-handle-set-visited-file-modtime): + Use `remote-file-name-inhibit-cache'. + +2013-02-03 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/cperl-mode.el (cperl-mode): Avoid byte-compile warning + (bug#13614). + + * subr.el (internal--called-interactively-p--get-frame): Avoid filling + current-load-list (bug#13366). + +2013-02-02 Christopher Schmidt <christopher@ch.ristopher.com> + + * progmodes/compile.el (compilation-error-regexp-alist-alist): + Identify g++ template instantiation trace. (Bug#12287) + (compilation-mode-hook, compilation-start-hook) + (compilation-window-height): Simplify docstrings. (Bug#13379) + +2013-02-02 Stefan Monnier <monnier@iro.umontreal.ca> + + * mouse.el (mouse-drag-track): Always deactivate the mark before + running the final event's command since that command is in charge of + activating the mark if needed (bug#13523). + +2013-02-02 Juri Linkov <juri@jurta.org> + + * replace.el (perform-replace): Move let-bindings of isearch-* + variables deeper to the loop that searches for the next match. + Add bindings for `isearch-nonincremental' and `isearch-adjusted'. + Use `isearch-search-fun-default' instead of `isearch-search-fun'. + (Bug#13579) + + * isearch.el (isearch-search-fun-default): Check for null + first element of isearch-cmds as a precaution when it's used + with inactive isearch. + +2013-02-02 Andrew W. Nosenko <andrew.w.nosenko@gmail.com> (tiny change) + + * net/tramp.el (tramp-check-for-regexp): Avoid "Args out of range" + error when buffer in question is narrowed so position 1 is out of + visible part. + +2013-02-02 Glenn Morris <rgm@gnu.org> + + * textmodes/remember.el (remember-clipboard): Doc fix. + +2013-02-02 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/make-mode.el (makefile-fill-paragraph): Reset syntax-table + properties (bug#13179). + +2013-02-02 Juri Linkov <juri@jurta.org> + + * progmodes/grep.el (grep-regexp-alist): Use variable grep-match-face + instead of hard-coded default face `match'. (Bug#9438) + +2012-02-01 Christopher Schmidt <christopher@ch.ristopher.com> + + * vc/vc-arch.el (vc-arch-registered): + * vc/vc-bzr.el (vc-bzr-registered): + * vc/vc-cvs.el (vc-cvs-registered): + * vc/vc-git.el (vc-git-registered): + * vc/vc-hg.el (vc-hg-registered): + * vc/vc-mtn.el (vc-mtn-registered): + * vc/vc-svn.el (vc-svn-registered): Suppress load messages. + (Bug#13139) + + * info.el (Info-next-reference, Info-prev-reference): Add numeric + prefix argument. (Bug#11656) + +2013-02-01 Stefan Monnier <monnier@iro.umontreal.ca> + + * help-fns.el (help-split-fundoc): Don't insert byte-compiled body. + +2013-02-01 Glenn Morris <rgm@gnu.org> + + * vc/vc-hooks.el (vc-menu-map): Disable vc-rollback menu item + if the backend is known not to support it. + + * imenu.el (imenu-default-create-index-function): + Tweak infinite loop test to check for forward motion as well as none. + +2013-02-01 Alex Harsanyi <AlexHarsanyi@gmail.com> + + * net/soap-client.el (soap-invoke): Encode the string for + `url-request-data' as UTF-8. + Fixes <http://code.google.com/p/emacs-soap-client/issues/detail?id=16>. + +2013-02-01 Glenn Morris <rgm@gnu.org> + + * calc/calc-help.el (calc-view-news): Use view-emacs-news. + + * calc/README, calc/README.prev: Rename/merge to etc/CALC-NEWS. + +2013-01-31 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-tramp-file-p): Comment check for + `string-as-unibyte'. The function does not exist on XEmacs, and + likely we need another approach. + + * net/tramp-sh.el (tramp-compute-multi-hops): Check, whether + `tramp-gw-*' variables are bound. + +2013-01-31 Glenn Morris <rgm@gnu.org> + + * files.el (basic-save-buffer-2): Choose coding system for + writing the file before backing it up, to reduce delay between + backing up and writing the new version. (Bug#13522) + +2013-01-31 Michal Nazarewicz <mina86@mina86.com> + + * simple.el (cycle-spacing): New command. + (just-one-space): Use it. + +2013-01-31 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/opascal.el: Rename from delphi.el. Use lexical-binding. + (opascal-newline-always-indents): Remove custom. + (opascal-tab, opascal-newline): Remove commands. + (opascal-new-comment-line): Insert "\n" instead of calling newline. + (opascal-mode-map): Keep default bindings for RET and TAB and DEL. + (opascal-save-match-data): Remove, use save-match-data instead. + (opascal-save-state): Use with-silent-modifications. + + * progmodes/pascal.el (pascal-mode-syntax-table): Accept //..\n comments + (bug#13585). + +2013-01-30 Juri Linkov <juri@jurta.org> + + * frame.el (toggle-frame-maximized, toggle-frame-fullscreen): + Use fullboth as an alias for fullscreen. Suggested by Jan Djärv in + <http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00203.html>. + +2013-01-30 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/make-mode.el (makefile-backslash-region): Don't compute + column if we're just deleting the backslashes. + (makefile-fill-paragraph): Use eolp. + +2013-01-30 Michael Albinus <michael.albinus@gmx.de> + + * autorevert.el (auto-revert-use-notify): Fix docstring. + +2013-01-30 Leo Liu <sdl.web@gmail.com> + + * imenu.el (imenu--truncate-items): Fix subalist checking (bug#13576). + +2013-01-30 Glenn Morris <rgm@gnu.org> + + * mouse.el (mouse-drag-line): Avoid pushing same event onto + unread-command-events twice in some cases. This tries to implement + the 2012-07-26 changes in a different way. (Bug#13560) + +2013-01-30 Fabián Ezequiel Gallina <fgallina@cuca> + + * progmodes/python.el + (python-pdbtrack-comint-output-filter-function): Enhancements on + stacktrace detection. (thanks @gnovak) + +2013-01-30 Stefan Monnier <monnier@iro.umontreal.ca> + + * jit-lock.el (jit-lock-stealth-chunk-start): Don't widen (bug#13542). + (jit-lock-mode, jit-lock-functions, jit-lock-context-unfontify-pos): + Use defvar-local. + (jit-lock-register): Use setq-local. + +2013-01-30 Jay Belanger <jay.p.belanger@gmail.com> + + * calc-units.el (math-default-units-table): Remove initial value. + (calc-convert-units): Treat expressions where all the units cancel as + if they didn't have units. + +2013-01-30 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-process-connection-type): Fix docstring. + (tramp-completion-reread-directory-timeout): Fix type. + (tramp-connection-min-time-diff): New defcustom. + + * net/tramp-sh.el (tramp-maybe-open-connection): Use it. + +2013-01-30 Glenn Morris <rgm@gnu.org> + + * imenu.el (imenu-default-create-index-function): + Put back a version of the infinite loop test removed 2013-01-23. + +2013-01-30 Fabián Ezequiel Gallina <fgallina@cuca> + + * progmodes/python.el (python-shell-parse-command): + Find python-shell-interpreter with modified environment. + +2013-01-30 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/cl.el (cl-set-getf): Add compatibility alias. + +2013-01-29 Alan Mackenzie <acm@muc.de> + + Amend to fontify /regexp/s in actions correctly. + * cc-awk.el (c-awk-harmless-char-re, c-awk-harmless-string*-re): + (c-awk-harmless-string*-here-re): Braces, parens and semicolons + are no longer included. + (c-awk-harmless-line-char-re, c-awk-harmless-line-string*-re): + What used to be these variables without "-line" in the name. + (c-awk-neutral-re): { is no longer neutral. Escaped newlines now are. + (c-awk-non-arith-op-bra-re): Now also matches {. + (c-awk-pre-exp-alphanum-kwd-re): New regexp to match "print", + "return", and "case". + (c-awk-kwd-regexp-sign-re): New, to match "print", etc., followed + by /. + (c-awk-syntax-tablify-/): Check special cases "print /re/", etc. + (c-awk-set-syntax-table-properties): Extend FSM to handle {,},(,),;. + +2013-01-29 Michael Albinus <michael.albinus@gmx.de> + + * autorevert.el (auto-revert-use-notify): + Use `custom-initialize-default' for initialization. (Bug#13583) + + * net/ange-ftp.el (ange-ftp-skip-msgs): Add another message. + + * net/tramp-sh.el (tramp-sh-handle-start-file-process): + Catch `suppress'. Otherwise, `tramp-run-real-handler' might be called + in `tramp-file-name-handler'. + (tramp-gw-tunnel-method, tramp-gw-socks-method): Declare for + compatibility. + (tramp-compute-multi-hops): Check, whether + `tramp-gw-tunnel-method' and `tramp-gw-socks-method' are non-nil. + +2013-01-28 Stefan Monnier <monnier@iro.umontreal.ca> + + * hi-lock.el (hi-lock-unface-buffer): Don't assume `face' is a symbol + (bug#13297). + +2013-01-27 Dmitry Gutov <dgutov@yandex.ru> + + * progmodes/ruby-mode.el (ruby-font-lock-keywords): Remove some + checks made superfluous by the \_< operator. + * progmodes/ruby-mode.el (ruby-move-to-block): Work with (maybe + temporarily) broken indentation. + * progmodes/ruby-mode.el (ruby-font-lock-keywords): + Highlight nested constants, too. \_< broke that. + +2013-01-27 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * progmodes/ruby-mode.el (ruby-font-lock-keywords): Use "\\_<" + instead of "\\b". + +2013-01-27 Michael Albinus <michael.albinus@gmx.de> + + * autorevert.el (auto-revert-handler): Notifications which result + from a saved file shall not be taken into account. (Bug#13557) + +2013-01-26 Andreas Schwab <schwab@linux-m68k.org> + + * emacs-lisp/lisp-mode.el (lisp-mode-variables): Add optional + parameter BAR-NOT-SYMBOL to control syntax of | for font-lock. + (lisp-mode): Pass t for it. (Bug#13556) + +2013-01-25 Alan Mackenzie <acm@muc.de> + + AWK Mode: Fix indentation bug at top level. Bug #12274. + + * progmodes/cc-engine.el (c-guess-basic-syntax): Move CASE 5P to + just before CASE 5D. + +2013-01-25 Dmitry Antipov <dmantipov@yandex.ru> + + * net/socks.el (socks-nslookup-host): Use string-to-number. + +2013-01-25 Michael Albinus <michael.albinus@gmx.de> + + * autorevert.el (auto-revert-remote-files) + (auto-revert-notify-exclude-dir-regexp): New defcustoms. + (auto-revert-notify-enabled, auto-revert-use-notify) + (auto-revert-notify-watch-descriptor-hash-list) + (auto-revert-notify-modified-p, auto-revert-notify-event-p) + (auto-revert-notify-event-descriptor) + (auto-revert-notify-event-action) + (auto-revert-notify-event-file-name): Doc fix. + (global-auto-revert-mode): Reorder checks. + (auto-revert-notify-rm-watch): Respect changed values of + `auto-revert-notify-watch-descriptor-hash-list'. + (auto-revert-notify-add-watch): Check for + `auto-revert-notify-exclude-dir-regexp'. Adapt filters for + `inotify-add-watch'. Watch `default-directory' instead of + `buffer-file-name'. `auto-revert-notify-watch-descriptor-hash-list' + has a changed meaning now. (Bug#13540) + (auto-revert-notify-handler): Change implementation wrt events + returning from a directory. + (auto-revert-handler): Reorder implementation for checks of remote + files. + (auto-revert-buffers): Fix parentheses error. + +2013-01-25 Fabián Ezequiel Gallina <fgallina@cuca> + + * progmodes/python.el: Enhancements to header documentation about + skeletons. (Bug#5716) + + * imenu.el (imenu-default-create-index-function): Remove useless + infinite loop check. (Bug#13438) + +2013-01-25 Alan Mackenzie <acm@muc.de> + + Fix a bug in the state cache mechanism. Refactor this a bit. + + * progmodes/cc-engine.el (c-parse-state-get-strategy): Remove the + `cache-pos' element from the return value. + (c-append-lower-brace-pair-to-state-cache): "Narrow" to end of + buffer to enable proper searching from beyond HERE. Amend the + test for detecting the sought brace pair. Amend the value written + to the "brace desert cache" when the brace isn't found. + (c-remove-stale-state-cache): Rename `good-pos' to `start-point', + and several other variables analogously. + (c-remove-stale-state-cache-backwards): Change `cache-pos' from a + parameter to a locally calculated variable. + (c-parse-state-1): Change the calling conventions to the two + defuns involving `cache-pos'. + +2013-01-25 Chong Yidong <cyd@gnu.org> + + * xml.el (xml-entity-or-char-ref-re): Fix regexp. + +2013-01-24 Aaron Ecay <aaronecay@gmail.com> (tiny change) + + * paren.el (show-paren-function): Make sure to set 'priority and + 'face only if the overlay does exist. + +2013-01-24 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-tramp-file-p): Check, whether NAME is unibyte. + + * net/tramp-sh.el (tramp-sh-handle-set-file-acl): Do not suppress + basic attributes. + (tramp-sh-handle-set-file-acl): Improve error checking. + +2013-01-24 Dmitry Antipov <dmantipov@yandex.ru> + + * doc-view.el (doc-view-display): Force mode line update until all + document is converted. Suggested by Stefan Monnier (Bug#13164). + +2013-01-23 Bastien Guerry <bzg@gnu.org> + + * paren.el (show-paren-function): Make sure an overlay exists + before trying to delete it. Also use `pos' as a position only + when it is an integer. + +2013-01-23 Dmitry Antipov <dmantipov@yandex.ru> + + * play/gametree.el (gametree-break-line-here): Use point-marker. + +2013-01-22 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-cmds.el (tramp-bug, tramp-append-tramp-buffers): + Mark descriptive parts with `display' property. + +2013-01-21 AgustÃn MartÃn Domingo <agustin.martin@hispalinux.es> + + * textmodes/ispell.el (ispell-hunspell-dictionary-equivs-alist): + New variable to map standard dict names to hunspell ones. + (ispell-set-spellchecker-params): Make sure specific dict names + are used for standard dicts with hunspell. + +2013-01-21 Tassilo Horn <tsdh@gnu.org> + + * textmodes/reftex-cite.el (reftex-format-citation): Add format + chars for note (%N) and url (%U). + * textmodes/reftex-vars.el (reftex-cite-format): Document them. + +2013-01-21 Juri Linkov <juri@jurta.org> + + * frame.el: Bind `f10' in `esc-map' to `toggle-frame-maximized' + in addition to existing separate binding `meta f10' in `global-map'. + (Bug#13484) + +2013-01-21 Michael Albinus <michael.albinus@gmx.de> + + Improve XEmacs compatibility. + + * net/tramp.el (tramp-replace-environment-variables): Make it a defun. + + * net/tramp-adb.el (top): Require `time-date'. + (tramp-adb-ls-output-time-less-p): Use `tramp-time-less-p'. + (tramp-adb-handle-copy-file, tramp-adb-handle-rename-file): + Use `tramp-file-name-handler'. + (tramp-adb-maybe-open-connection): + Use `tramp-compat-set-process-query-on-exit-flag'. + + * net/tramp-sh.el (tramp-sh-handle-file-acl): + Use `tramp-compat-funcall'. + + * net/tramp-smb.el (tramp-smb-handle-file-acl): Use `looking-at' and + `tramp-compat-funcall'. + +2013-01-21 Jürgen Hötzel <juergen@archlinux.org> + + * net/tramp-adb.el (tramp-adb-handle-start-file-process): Complete + reimplementation using "adb shell command ..." instead of running + remote shell interactively. + +2013-01-20 Glenn Morris <rgm@gnu.org> + + * emacs-lisp/lisp-mode.el (emacs-lisp-mode-map): + Add native profiler menu entries. + + * profiler.el (profiler-running-p): New function. + (profiler-cpu-profile): Use profiler-running-p. + (profiler-report-mode-map): Add some more menu entries. + +2013-01-19 Glenn Morris <rgm@gnu.org> + + * mail/unrmail.el (unrmail): Do not mangle the mbox From line; + fixes 2012-12-07 change. (Bug#13499) + +2013-01-19 Leo Liu <sdl.web@gmail.com> + + * dired.el (dired-get-marked-files): Prune erroneous values due to + last change. (Bug#13152) + +2013-01-19 Glenn Morris <rgm@gnu.org> + + * progmodes/etags.el (tags-table-check-computed-list): + Preserve point in tags buffer. (Bug#13412) + + * emacs-lisp/lisp-mode.el (lisp-indent-function): Doc fix. + +2013-01-19 Christian Wittern <cwittern@gmail.com> (tiny change) + Chong Yidong <cyd@gnu.org> + + * image-mode.el (image-next-file, image-previous-file): + New commands (Bug#8453). + (image-mode-map): Bind them to n and p. + (image-mode--images-in-directory): New helper function. + +2013-01-19 Chong Yidong <cyd@gnu.org> + + * image-mode.el (image-mode-fit-frame): Add a frame argument. + Suggested by Drew Adams (Bug#7730). Handle window decorations; + save and restore the old window configuration. + +2013-01-18 Leo Liu <sdl.web@gmail.com> + + * progmodes/js.el: Tweak autoload cookie for alias. + +2013-01-17 Michael Albinus <michael.albinus@gmx.de> + + * autorevert.el (auto-revert-notify-watch-descriptor): Make it + buffer local, again. This was lost with the fix on 2013-01-12. + +2013-01-17 Jürgen Hötzel <juergen@archlinux.org> + + * eshell/esh-util.el (eshell-path-env): Make it buffer local, in + order to support several eshell buffers in parallel. + +2013-01-17 Michael Albinus <michael.albinus@gmx.de> + + * autorevert.el (auto-revert-use-notify): In the :set function, do + not modify `kill-buffer-hook'. + (auto-revert-notify-rm-watch): + Remove `auto-revert-notify-rm-watch' from `kill-buffer-hook'. + (auto-revert-notify-add-watch): Do not call + `auto-revert-notify-rm-watch', but add it to a buffer local + `kill-buffer-hook'. + +2013-01-16 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/trace.el (trace--read-args): Use a closure and an honest + call to `eval' rather than a backquoted lambda. + 2013-01-15 Stefan Monnier <monnier@iro.umontreal.ca> * emacs-lisp/nadvice.el (advice--tweak): Make it possible for `tweak' @@ -11627,7 +13135,7 @@ * server.el (server--on-display-p): New function. (server--on-display-p): Use it. -2012-04-04 Gabor Vida <vidagabor@gmail.com> (tiny change) +2012-04-04 Gábor Vida <vidagabor@gmail.com> (tiny change) * ido.el (ido-wide-find-dirs-or-files): Use file-name-absolute-p (bug#11145). @@ -20728,7 +22236,7 @@ * nxml/rng-xsd.el (rng-xsd-check-pattern): Use case-sensitive matching (Bug#8516). -2011-01-22 Jari Aalto <jari.aalto@cante.net> +2011-05-22 Jari Aalto <jari.aalto@cante.net> * vc/vc-dir.el (vc-default-dir-printer): Give edited tag a different face (Bug#8178). diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el index 8849fb85244..4fc04b706b5 100644 --- a/lisp/arc-mode.el +++ b/lisp/arc-mode.el @@ -975,11 +975,6 @@ using `make-temp-file', and the generated name is returned." (save-excursion (funcall set-auto-coding-function filename (- (point-max) (point-min))))) - ;; dos-w32.el defines the function - ;; find-buffer-file-type-coding-system for DOS/Windows - ;; systems which preserves the coding-system of existing files. - ;; (That function is called via file-coding-system-alist.) - ;; Here, we want it to act as if the extracted file existed. ;; The following let-binding of file-name-handler-alist forces ;; find-file-not-found-set-buffer-file-coding-system to ignore ;; the file's name (see dos-w32.el). diff --git a/lisp/autorevert.el b/lisp/autorevert.el index c9180482cd9..a2d70c37762 100644 --- a/lisp/autorevert.el +++ b/lisp/autorevert.el @@ -39,8 +39,11 @@ ;; Auto-Revert Mode applies to all file buffers. (If the user option ;; `global-auto-revert-non-file-buffers' is non-nil, it also applies ;; to some non-file buffers. This option is disabled by default.) -;; Since checking a remote file is too slow, these modes do not check -;; or revert remote files. +;; +;; Since checking a remote file is slow, these modes check or revert +;; remote files only if the user option `auto-revert-remote-files' is +;; non-nil. It is recommended to disable version control for remote +;; files. ;; ;; Both modes operate by checking the time stamp of all files at ;; intervals of `auto-revert-interval'. The default is every five @@ -48,10 +51,12 @@ ;; Emacs. You should never even notice that this package is active ;; (except that your buffers will be reverted, of course). ;; -;; If Emacs is compiled with file watch support, notifications are -;; used instead of checking the time stamp of the files. You can +;; If Emacs is compiled with file notification support, notifications +;; are used instead of checking the time stamp of the files. You can ;; disable this by setting the user option `auto-revert-use-notify' to -;; nil. +;; nil. Alternatively, a regular expression of directories to be +;; excluded from file notifications can be specified by +;; `auto-revert-notify-exclude-dir-regexp'. ;; ;; After reverting a file buffer, Auto Revert Mode normally puts point ;; at the same position that a regular manual revert would. However, @@ -70,7 +75,6 @@ ;; change by growing at the end. It only appends the new output, ;; instead of reverting the entire buffer. It does so even if the ;; buffer contains unsaved changes. (Because they will not be lost.) -;; Auto Revert Tail Mode works also for remote files. ;; Usage: ;; @@ -260,26 +264,43 @@ buffers. CPU usage depends on the version control system." This variable becomes buffer local when set in any fashion.") (make-variable-buffer-local 'global-auto-revert-ignore-buffer) +(defcustom auto-revert-remote-files nil + "If non-nil remote files are also reverted." + :group 'auto-revert + :type 'boolean + :version "24.4") + (defconst auto-revert-notify-enabled (or (featurep 'inotify) (featurep 'w32notify)) - "Non-nil when Emacs has been compiled with file watch support.") + "Non-nil when Emacs has been compiled with file notification support.") (defcustom auto-revert-use-notify auto-revert-notify-enabled - "If non-nil Auto Revert Mode uses file watch functions. -This requires Emacs being compiled with file watch support (see -`auto-revert-notify-enabled'). You should set this variable -through Custom only." + "If non-nil Auto Revert Mode uses file notification functions. +This requires Emacs being compiled with file notification +support (see `auto-revert-notify-enabled'). You should set this +variable through Custom." :group 'auto-revert :type 'boolean :set (lambda (variable value) (set-default variable (and auto-revert-notify-enabled value)) - (if (symbol-value variable) - (add-hook 'kill-buffer-hook 'auto-revert-notify-rm-watch) - (remove-hook 'kill-buffer-hook 'auto-revert-notify-rm-watch) + (unless (symbol-value variable) (when auto-revert-notify-enabled (dolist (buf (buffer-list)) (with-current-buffer buf - (auto-revert-notify-rm-watch)))))) + (when (symbol-value 'auto-revert-notify-watch-descriptor) + (auto-revert-notify-rm-watch))))))) + :initialize 'custom-initialize-default + :version "24.4") + +(defcustom auto-revert-notify-exclude-dir-regexp + (concat + ;; No mounted file systems. + "^" (regexp-opt '("/afs/" "/media/" "/mnt" "/net/" "/tmp_mnt/")) + ;; No remote files. + (unless auto-revert-remote-files "\\|^/[^/|:][^/|]+:")) + "Regular expression of directories to be excluded from file notifications." + :group 'auto-revert + :type 'regexp :version "24.4") ;; Internal variables: @@ -307,15 +328,18 @@ the list of old buffers.") (defvar auto-revert-notify-watch-descriptor-hash-list (make-hash-table :test 'equal) "A hash table collecting all file watch descriptors. -Hash key is a watch descriptor, hash value is the corresponding buffer.") +Hash key is a watch descriptor, hash value is a list of buffers +which are related to files being watched and carrying the same +default directory.") (defvar auto-revert-notify-watch-descriptor nil "The file watch descriptor active for the current buffer.") +(make-variable-buffer-local 'auto-revert-notify-watch-descriptor) (put 'auto-revert-notify-watch-descriptor 'permanent-local t) (defvar auto-revert-notify-modified-p nil "Non-nil when file has been modified on the file system. -This has been reported by a file watch event.") +This has been reported by a file notification event.") (make-variable-buffer-local 'auto-revert-notify-modified-p) ;; Functions: @@ -444,9 +468,9 @@ specifies in the mode line." (auto-revert-set-timer) (if global-auto-revert-mode (auto-revert-buffers) - (when auto-revert-use-notify - (dolist (buf (buffer-list)) - (with-current-buffer buf + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when auto-revert-use-notify (auto-revert-notify-rm-watch)))))) (defun auto-revert-set-timer () @@ -465,81 +489,107 @@ will use an up-to-date value of `auto-revert-interval'" 'auto-revert-buffers)))) (defun auto-revert-notify-rm-watch () - "Disable file watch for current buffer's associated file." + "Disable file notification for current buffer's associated file." (when auto-revert-notify-watch-descriptor - (ignore-errors - (funcall (if (fboundp 'inotify-rm-watch) - 'inotify-rm-watch 'w32notify-rm-watch) - auto-revert-notify-watch-descriptor)) - (remhash auto-revert-notify-watch-descriptor - auto-revert-notify-watch-descriptor-hash-list)) + (maphash + (lambda (key value) + (when (equal key auto-revert-notify-watch-descriptor) + (setq value (delete (current-buffer) value)) + (if value + (puthash key value auto-revert-notify-watch-descriptor-hash-list) + (remhash key auto-revert-notify-watch-descriptor-hash-list) + (ignore-errors + (funcall (if (fboundp 'inotify-rm-watch) + 'inotify-rm-watch 'w32notify-rm-watch) + auto-revert-notify-watch-descriptor))))) + auto-revert-notify-watch-descriptor-hash-list) + (remove-hook 'kill-buffer-hook 'auto-revert-notify-rm-watch)) (setq auto-revert-notify-watch-descriptor nil auto-revert-notify-modified-p nil)) (defun auto-revert-notify-add-watch () - "Enable file watch for current buffer's associated file." - (when (and buffer-file-name auto-revert-use-notify) - (auto-revert-notify-rm-watch) + "Enable file notification for current buffer's associated file." + (when (string-match auto-revert-notify-exclude-dir-regexp + (expand-file-name default-directory)) + ;; Fallback to file checks. + (set (make-local-variable 'auto-revert-use-notify) nil)) + + (when (and buffer-file-name auto-revert-use-notify + (not auto-revert-notify-watch-descriptor)) (let ((func (if (fboundp 'inotify-add-watch) 'inotify-add-watch 'w32notify-add-watch)) (aspect (if (fboundp 'inotify-add-watch) - '(modify) '(size last-write-time)))) + '(create modify moved-to) '(size last-write-time))) + (file (if (fboundp 'inotify-add-watch) + (directory-file-name (expand-file-name default-directory)) + (buffer-file-name)))) (setq auto-revert-notify-watch-descriptor (ignore-errors - (funcall - func buffer-file-name aspect 'auto-revert-notify-handler))) + (funcall func file aspect 'auto-revert-notify-handler))) (if auto-revert-notify-watch-descriptor - (puthash auto-revert-notify-watch-descriptor - (current-buffer) - auto-revert-notify-watch-descriptor-hash-list) + (progn + (puthash + auto-revert-notify-watch-descriptor + (cons (current-buffer) + (gethash auto-revert-notify-watch-descriptor + auto-revert-notify-watch-descriptor-hash-list)) + auto-revert-notify-watch-descriptor-hash-list) + (add-hook (make-local-variable 'kill-buffer-hook) + 'auto-revert-notify-rm-watch)) ;; Fallback to file checks. (set (make-local-variable 'auto-revert-use-notify) nil))))) (defun auto-revert-notify-event-p (event) - "Check that event is a file watch event." + "Check that event is a file notification event." (cond ((featurep 'inotify) (and (listp event) (= (length event) 4))) ((featurep 'w32notify) (and (listp event) (= (length event) 3) (stringp (nth 2 event)))))) (defun auto-revert-notify-event-descriptor (event) - "Return watch descriptor of notification event, or nil." + "Return watch descriptor of file notification event, or nil." (and (auto-revert-notify-event-p event) (car event))) (defun auto-revert-notify-event-action (event) - "Return action of notification event, or nil." + "Return action of file notification event, or nil." (and (auto-revert-notify-event-p event) (nth 1 event))) (defun auto-revert-notify-event-file-name (event) - "Return file name of notification event, or nil." + "Return file name of file notification event, or nil." (and (auto-revert-notify-event-p event) (cond ((featurep 'inotify) (nth 3 event)) ((featurep 'w32notify) (nth 2 event))))) (defun auto-revert-notify-handler (event) - "Handle an event returned from file watch." + "Handle an event returned from file notification." (when (auto-revert-notify-event-p event) (let* ((descriptor (auto-revert-notify-event-descriptor event)) (action (auto-revert-notify-event-action event)) (file (auto-revert-notify-event-file-name event)) - (buffer (gethash descriptor - auto-revert-notify-watch-descriptor-hash-list))) + (buffers (gethash descriptor + auto-revert-notify-watch-descriptor-hash-list))) (ignore-errors ;; Check, that event is meant for us. ;; TODO: Filter events which stop watching, like `move' or `removed'. (cl-assert descriptor) - (when (featurep 'inotify) (cl-assert (memq 'modify action))) + (when (featurep 'inotify) + (cl-assert (or (memq 'create action) + (memq 'modify action) + (memq 'moved-to action)))) (when (featurep 'w32notify) (cl-assert (eq 'modified action))) - (cl-assert (bufferp buffer)) - (with-current-buffer buffer - (when (and (stringp file) (stringp buffer-file-name)) - ;; w32notify returns the basename of the file without its - ;; leading directories; inotify returns its full absolute - ;; file name. - (cl-assert (file-equal-p file buffer-file-name))) - - ;; Mark buffer modified. - (setq auto-revert-notify-modified-p t)))))) + ;; Since we watch a directory, a file name must be returned. + (cl-assert (stringp file)) + (dolist (buffer buffers) + (when (buffer-live-p buffer) + (with-current-buffer buffer + (when (and (stringp buffer-file-name) + (string-equal + (file-name-nondirectory file) + (file-name-nondirectory buffer-file-name))) + ;; Mark buffer modified. + (setq auto-revert-notify-modified-p t) + ;; No need to check other buffers. + (cl-return))))))))) (defun auto-revert-active-p () "Check if auto-revert is active (in current buffer or globally)." @@ -556,22 +606,23 @@ will use an up-to-date value of `auto-revert-interval'" This is an internal function used by Auto-Revert Mode." (when (or auto-revert-tail-mode (not (buffer-modified-p))) (let* ((buffer (current-buffer)) size + ;; Tramp caches the file attributes. Setting + ;; `remote-file-name-inhibit-cache' forces Tramp to reread + ;; the values. + (remote-file-name-inhibit-cache t) (revert (or (and buffer-file-name + (or auto-revert-remote-files + (not (file-remote-p buffer-file-name))) (or (not auto-revert-use-notify) auto-revert-notify-modified-p) (if auto-revert-tail-mode - ;; Tramp caches the file attributes. Setting - ;; `remote-file-name-inhibit-cache' forces Tramp - ;; to reread the values. - (let ((remote-file-name-inhibit-cache t)) - (and (file-readable-p buffer-file-name) - (/= auto-revert-tail-pos - (setq size - (nth 7 (file-attributes - buffer-file-name)))))) - (and (not (file-remote-p buffer-file-name)) - (file-readable-p buffer-file-name) + (and (file-readable-p buffer-file-name) + (/= auto-revert-tail-pos + (setq size + (nth 7 (file-attributes + buffer-file-name))))) + (and (file-readable-p buffer-file-name) (not (verify-visited-file-modtime buffer))))) (and (or auto-revert-mode global-auto-revert-non-file-buffers) @@ -580,8 +631,8 @@ This is an internal function used by Auto-Revert Mode." (functionp buffer-stale-function) (funcall buffer-stale-function t)))) eob eoblist) + (setq auto-revert-notify-modified-p nil) (when revert - (setq auto-revert-notify-modified-p nil) (when (and auto-revert-verbose (not (eq revert 'fast))) (message "Reverting buffer `%s'." (buffer-name))) @@ -688,10 +739,10 @@ the timer when no buffers need to be checked." (setq auto-revert-buffer-list (delq buf auto-revert-buffer-list))) (when (auto-revert-active-p) - ;; Enable file watches. + ;; Enable file notification. (when (and auto-revert-use-notify buffer-file-name - (not auto-revert-notify-watch-descriptor) - (auto-revert-notify-add-watch))) + (not auto-revert-notify-watch-descriptor)) + (auto-revert-notify-add-watch)) (auto-revert-handler))) ;; Remove dead buffer from `auto-revert-buffer-list'. (setq auto-revert-buffer-list diff --git a/lisp/battery.el b/lisp/battery.el index 98ba7d1b631..d4e4d8b3a31 100644 --- a/lisp/battery.el +++ b/lisp/battery.el @@ -1,4 +1,4 @@ -;;; battery.el --- display battery status information -*- coding: iso-8859-1 -*- +;;; battery.el --- display battery status information -*- coding: utf-8 -*- ;; Copyright (C) 1997-1998, 2000-2013 Free Software Foundation, Inc. @@ -116,7 +116,7 @@ string are substituted as defined by the current value of the variable (defcustom battery-mode-line-format (cond ((eq battery-status-function 'battery-linux-proc-acpi) - "[%b%p%%,%d°C]") + "[%b%p%%,%d°C]") (battery-status-function "[%b%p%%]")) "Control string formatting the string to display in the mode line. diff --git a/lisp/bookmark.el b/lisp/bookmark.el index da6ffb38452..47e13799625 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -129,9 +129,15 @@ recently set ones come first, oldest ones come last)." :type 'boolean :group 'bookmark) +(defcustom bookmark-bmenu-use-header-line t + "Non-nil means to use an immovable header line, as opposed to inline +text at the top of the buffer." + :type 'boolean + :group 'bookmark) -(defconst bookmark-bmenu-header-height 2 - "Number of lines used for the *Bookmark List* header.") +(defconst bookmark-bmenu-inline-header-height 2 + "Number of lines used for the *Bookmark List* header +\(only significant when `bookmark-bmenu-use-header-line' is nil\).") (defconst bookmark-bmenu-marks-width 2 "Number of columns (chars) used for the *Bookmark List* marks column, @@ -150,6 +156,10 @@ A non-nil value may result in truncated bookmark names." :type 'boolean :group 'bookmark) +(defface bookmark-menu-bookmark + '((t (:weight bold))) + "Face used to highlight bookmark names in bookmark menu buffers." + :group 'bookmark) (defcustom bookmark-menu-length 70 "Maximum length of a bookmark name displayed on a popup menu." @@ -1176,18 +1186,7 @@ Optional second arg NO-HISTORY means don't record this in the minibuffer history list `bookmark-history'." (interactive (list (bookmark-completing-read "Insert bookmark location"))) (or no-history (bookmark-maybe-historicize-string bookmark-name)) - (let ((start (point))) - (prog1 - (insert (bookmark-location bookmark-name)) - (if (display-mouse-p) - (add-text-properties - start - (save-excursion (re-search-backward - "[^ \t]") - (1+ (point))) - '(mouse-face highlight - follow-link t - help-echo "mouse-2: go to this bookmark in other window")))))) + (insert (bookmark-location bookmark-name))) ;;;###autoload (defalias 'bookmark-locate 'bookmark-insert-location) @@ -1552,7 +1551,8 @@ deletion, or > if it is flagged for displaying." (set-buffer buf))) (let ((inhibit-read-only t)) (erase-buffer) - (insert "% Bookmark\n- --------\n") + (if (not bookmark-bmenu-use-header-line) + (insert "% Bookmark\n- --------\n")) (add-text-properties (point-min) (point) '(font-lock-face bookmark-menu-heading)) (dolist (full-record (bookmark-maybe-sort-alist)) @@ -1571,14 +1571,17 @@ deletion, or > if it is flagged for displaying." (when (display-mouse-p) (add-text-properties (+ bookmark-bmenu-marks-width start) end - '(mouse-face highlight + '(font-lock-face bookmark-menu-bookmark + mouse-face highlight follow-link t help-echo "mouse-2: go to this bookmark in other window"))) (insert "\n"))) (set-buffer-modified-p (not (= bookmark-alist-modification-count 0))) (goto-char (point-min)) - (forward-line 2) (bookmark-bmenu-mode) + (if bookmark-bmenu-use-header-line + (bookmark-bmenu-set-header) + (forward-line bookmark-bmenu-inline-header-height)) (if bookmark-bmenu-toggle-filenames (bookmark-bmenu-toggle-filenames t)))) @@ -1587,7 +1590,25 @@ deletion, or > if it is flagged for displaying." ;;;###autoload (defalias 'edit-bookmarks 'bookmark-bmenu-list) - +(defun bookmark-bmenu-set-header () + "Sets the immutable header line." + (let ((header (concat "%% " "Bookmark"))) + (when bookmark-bmenu-toggle-filenames + (setq header (concat header + (make-string (- bookmark-bmenu-file-column + (- (length header) 3)) ?\s) + "File"))) + (let ((pos 0)) + (while (string-match "[ \t\n]+" header pos) + (setq pos (match-end 0)) + (put-text-property (match-beginning 0) pos 'display + (list 'space :align-to (- pos 1)) + header))) + (put-text-property 0 2 'face 'fixed-pitch header) + (setq header (concat (propertize " " 'display '(space :align-to 0)) + header)) + ;; Code derived from `buff-menu.el'. + (setq header-line-format header))) (define-derived-mode bookmark-bmenu-mode special-mode "Bookmark Menu" "Major mode for editing a list of bookmarks. @@ -1640,7 +1661,9 @@ Optional argument SHOW means show them unconditionally." (setq bookmark-bmenu-toggle-filenames nil)) (t (bookmark-bmenu-show-filenames) - (setq bookmark-bmenu-toggle-filenames t)))) + (setq bookmark-bmenu-toggle-filenames t))) + (when bookmark-bmenu-use-header-line + (bookmark-bmenu-set-header))) (defun bookmark-bmenu-show-filenames (&optional force) @@ -1653,7 +1676,8 @@ mainly for debugging, and should not be necessary in normal use." (save-excursion (save-window-excursion (goto-char (point-min)) - (forward-line 2) + (if (not bookmark-bmenu-use-header-line) + (forward-line bookmark-bmenu-inline-header-height)) (setq bookmark-bmenu-hidden-bookmarks ()) (let ((inhibit-read-only t)) (while (< (point) (point-max)) @@ -1681,7 +1705,8 @@ mainly for debugging, and should not be necessary in normal use." (with-buffer-modified-unmodified (save-excursion (goto-char (point-min)) - (forward-line 2) + (if (not bookmark-bmenu-use-header-line) + (forward-line bookmark-bmenu-inline-header-height)) (setq bookmark-bmenu-hidden-bookmarks (nreverse bookmark-bmenu-hidden-bookmarks)) (let ((inhibit-read-only t)) @@ -1695,8 +1720,9 @@ mainly for debugging, and should not be necessary in normal use." (if (display-mouse-p) (add-text-properties start (point) - '(mouse-face - highlight follow-link t help-echo + '(font-lock-face bookmark-menu-bookmark + mouse-face highlight + follow-link t help-echo "mouse-2: go to this bookmark in other window")))) (forward-line 1))))))) @@ -1705,9 +1731,11 @@ mainly for debugging, and should not be necessary in normal use." "If point is not on a bookmark line, move it to one. If before the first bookmark line, move to the first; if after the last full line, move to the last full line. The return value is undefined." - (cond ((< (count-lines (point-min) (point)) bookmark-bmenu-header-height) + (cond ((and (not bookmark-bmenu-use-header-line) + (< (count-lines (point-min) (point)) + bookmark-bmenu-inline-header-height)) (goto-char (point-min)) - (forward-line bookmark-bmenu-header-height)) + (forward-line bookmark-bmenu-inline-header-height)) ((and (bolp) (eobp)) (beginning-of-line 0)))) diff --git a/lisp/calc/README b/lisp/calc/README deleted file mode 100644 index c44ffe5aef0..00000000000 --- a/lisp/calc/README +++ /dev/null @@ -1,301 +0,0 @@ -Copyright (C) 2001-2013 Free Software Foundation, Inc. -See the end of the file for license conditions. - - -This directory contains Calc, an advanced desk calculator for GNU -Emacs. - -"Calc" Copyright (C) 1990-1993, 2001-2013 Free Software Foundation, Inc. - -Written by: - Dave Gillespie - c/o Synaptics, Inc. - 2698 Orchard Parkway - San Jose CA 95134 - daveg@synaptics.com, uunet!synaptx!daveg - -Currently maintained by: - Jay Belanger <jay.p.belanger@gmail.com> - -From the introduction to the manual: - - "Calc" is an advanced calculator and mathematical tool that runs as - part of the GNU Emacs environment. Very roughly based on the HP-28/48 - series of calculators, its many features include: - - * Choice of algebraic or RPN (stack-based) entry of calculations. - - * Arbitrary precision integers and floating-point numbers. - - * Arithmetic on rational numbers, complex numbers (rectangular and - polar), error forms with standard deviations, open and closed - intervals, vectors and matrices, dates and times, infinities, - sets, quantities with units, and algebraic formulas. - - * Mathematical operations such as logarithms and trigonometric functions. - - * Programmer's features (bitwise operations, non-decimal numbers). - - * Financial functions such as future value and internal rate of return. - - * Number theoretical features such as prime factorization and - arithmetic modulo M for any M. - - * Algebraic manipulation features, including symbolic calculus. - - * Moving data to and from regular editing buffers. - - * "Embedded mode" for manipulating Calc formulas and data directly - inside any editing buffer. - - * Graphics using GNUPLOT, a versatile (and free) plotting program. - - * Easy programming using keyboard macros, algebraic formulas, - algebraic rewrite rules, or extended Emacs Lisp. - - -Calc is written entirely in Emacs Lisp, for maximum portability. - -I am anxious to hear about your experiences using Calc. Send mail to -"jay.p.belanger@gmail.com". A bug report is most useful if you include the -exact input and output that occurred, any modes in effect (such as the -current precision), and so on. If you find Calc is difficult to operate -in any way, or if you have other suggestions, don't hesitate to let me -know. If you find errors (including simple typos) in the manual, let -me know. Even if you find no bugs at all I would love to hear your -opinions. - - - -Summary of changes to "Calc" -------- -- ------- -- ---- - -Emacs 24.4 - -* The date forms use the Gregorian calendar for all dates. - (Previously they were a combination of Julian and Gregorian - dates.) This can be configured with the customizable variable - `calc-gregorian-switch'. - -* Support for ISO 8601 dates added. -Emacs 24.3 - -* Algebraic simplification mode is now the default. - To restrict to the limited simplifications given by the former - default simplification mode, use `m I'. - -Emacs 24.1 - -* Support for musical notes added. - -* Support for logarithmic units added. - -* Calc no longer uses the tex prefix for TeX specific unit -names when using TeX or LaTeX mode. - -* Added option to highlight selections using faces. - -* Gave `calc-histogram' the option of using a vector to determine the bins. - -* Added "O" option prefix. - -* Used "O" prefix to "d r" (`calc-radix') to turn on twos-complement mode. - -Emacs 23.2 - -* Added twos-complement display. - -Emacs 23.1: - -* Gave `j *' (cal-sel-mult-both-sides) an option to expand the - denominator. - -* Use `calc-embedded-word-regexp' for finding words in - `calc-embedded-word' in place of delimiters. - -* Remove version numbering; use Emacs version for reference. - -* Added support for using registers. - -* Added support for Yacas, Maxima and Giac languages. - -* Added a menu. - -* Added logistic non-linear curves to curve-fitting. - -* Added option of plotting data points and curve when curve-fitting. - -* Made unit conversions exact when possible. - -* Lowered the precedence of negation. - -Version 2.1: - -* New matrix mode for square matrices. Improved handling of - non-commutative products. - -* New functions: powerexpand and ldiv. - -* Added new functions: sec, csc, cot, sech, csch, coth. - -* 0^0 now evaluates to 1. - -* Added a new language mode for LaTeX. - -* Calc now tries to use an appropriate language mode in embedded mode. - -* Calc now restores original modes when leaving embedded mode. - -* User settable variables which are not set with keystrokes are now - customizable. - -* Made ~/.calc.el the default Calc settings file. - -* Miscellaneous updates and bugfixes. - - -Version 2.02f: - - * Fixed a bug which broke `I', `H', `K' prefix keys in recent Emacs. - - * Fixed a bug in calc.texinfo which prevented "make tex2" from working. - - * Updated `C-y' (calc-yank) to understand Emacs 19 generalized kill ring. - - * Added a copy of "calccard.tex", the Calc quick reference card. - - -Version 2.02e: - - * Fixed an installation bug caused by recent changes to `write-region'. - - -Version 2.02d: - - * Fixed a minor installation problem with a Emacs 19.29 byte-compiler bug. - - * Removed archaic "macedit" package (superseded by "edmacro"). - - -Version 2.02c: - - * Patch to port Calc to Lucid Emacs 19; still works with GNU 18 and GNU 19. - - * Fixed a bug that broke `C-x C-c' after Calc graphics had been used. - - -Version 2.02b: - - * Minor patch to port Calc to GNU Emacs 19. Will be superseded by Calc 3.00. - - -Version 2.02: - - * Revamped the manual a bit; rearranged some sections. - - * Added marginal notes for Key/Function Index refs in printed manual. - - * Changed `M-# r' to deal more gracefully with blank lines. - - * Made reductions like `V R +' and `M-# :' considerably faster. - - * Improved parsing and display of cases like "[a + b]". - - * Added `t +' and `t -' for doing business date arithmetic. - - * Added "syntax tables," the opposite of compositions. - - * Added another Rewrites Tutorial exercise. - - * Added the "vmatches" function. - - * Added the `Modes' variable and `m g' command. - - * Improved `u s' to cancel, e.g., "11 mph hr / yd" to get a number. - - * Added "quick units" commands "u 0" through "u 9". - - * Moved `M-%' to calc.el to avoid autoloading problems. - - * Added `M-=' during algebraic entry, acts like `RET ='. - - * Made `LFD' prevent evaluation when finishing a calc-edit command. - - * Changed calc-store commands to use `t .' mode for trail display. - - * Improved integrator to understand forms involving "erf". - - * Fixed parser to make sense of "[1....1e2]" input. - - * Fixed FORTRAN parser to treat a(i,j) as a_i_j if a is declared matrix. - - * Got rid of some version number stamps to reduce size of patches. - - * Fixed a bug in defmath treating "<=" and ">=" predicates. - - * Fixed a bug in which Calc crashed multiplying two date forms. - - * Fixed a bug in line breaker that crashed for large, nested formulas. - - * Fixed a bug using ` to edit string("foo"). - - * Fixed a bug where `M-# y' in Big mode copied stack level number. - - * Fixed a bug where `g O' used wrong default directory, no completion. - - * Fixed a bug where "foo_bar(i)" parsed in C mode but showed as foo#bar. - - * Fixed several bugs where large calculations got "computation too long." - - -Version 2.01: - - * Added percentage commands `M-%', `b %', and `c %'. - - * Changed Big mode to force radix-10 in superscripts. - - * Improved display of fractions in various language modes. - - * Changed `a n' to work properly with equations and inequalities. - - * The problem with cross references to Index nodes in TeX has been fixed. - - * Fixed a bug where recursive esc-maps make calc-ext/-aent unloadable. - - * Fixed a bug in `M-# k', then `OFF' right away, with fresh Emacs. - - * Fixed a bug in which "S_i_j" was formatted wrong after `j s'. - - * Fixed a bug in which `h k u c' positioned cursor on wrong line. - - * Fixed a bug where `z ?' crashed if `z %' was defined. - - * Fixed a bug in `j O' (calc-select-once-maybe). - - * Fixed "make private" not to ask "Delete excess versions" and crash. - - -Version 2.00: - - * First complete posting of Calc since 1.01. - - * Most parts of Calc have seen changes since version 1.07. See - section "New for Calc 2.00" in the manual for a summary. In - the FTP version of the Calc distribution, the file README.prev - contains a detailed change history from 1.00 up to 2.00. - - -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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>. diff --git a/lisp/calc/README.prev b/lisp/calc/README.prev deleted file mode 100644 index eae72cbbe6c..00000000000 --- a/lisp/calc/README.prev +++ /dev/null @@ -1,998 +0,0 @@ -Copyright (C) 2001-2013 Free Software Foundation, Inc. -See the end of the file for license conditions. - - -Summary of changes to "Calc" Preceding 2.00 -------- -- ------- -- ---- --------- ---- - - -Version 2.00: - - * Changed to compile calc-macs/-maint, to allow "cp *.elc new-dir". - - * Improved calc-describe-bindings to avoid showing redundant ESC maps. - - -Version 2.00 beta 3: - - * Removed version numbers from most .el files to reduce size of patches. - - * Added a "calc-version" command. - - * Changed `M-# ? ?' to allow for modified describe-function. - - * Changed date parser to accept "Sept" as an alternative for "Sep". - - * Inhibited answers to exercise from showing up in table of contents. - - * Changed Makefile to say "texindex calc.[cfkptv]?" to avoid "calc.el". - - * Fixed up the Makefile in various other ways. - - * Rearranged banner at top of `h h' command's output. - - * Changed "make summary" to print "Calc Summary" on the title page. - - * Added "IntegSimpRules". - - * Added `M-# :', `M-# _', and `M-# Z' options. - - * Changed `^' to evaluate "[-3..-1]^-2" properly. - - * Improved `f g' to give symbolic answers for, e.g., 101:2 and -3:2. - - * Fixed a bug where `h k RET' didn't find the right place on the page. - - * Fixed a bug that formatted "x*(y ? a : b)" as "x y ? a : b". - - * Fixed a bug where defmath translated (< x 0) as (math-posp x)! - - * Fixed a bug that prevented quick-calc from working sometimes. - - * Fixed the `z ?' bug again (maybe this time for good?). - - * Fixed a bug in which `V ^' (vint) was just plain wrong, wrong, wrong! - - * Scanned for and fixed remaining bugs relating to autoloading. - - -Version 2.00 beta 2: - - * Changed "make info" to try "make texinfo" if "makeinfo" not found. - - * Changed to "New for Calc 2.00"; texinfo.tex chokes on apostrophes. - - * Added List Tutorial Exercise 14 (just in case there weren't enough!). - - * Added a discussion of the `Z F' command to the Programming Tutorial. - - * Improved `H a f' not to lose info if input is partially pre-factored. - - * Improved simplification of expressions like sqrt(3) + 3^3:2. - - * Changed Big mode to omit "*" in expressions like 2 sqrt(3) 5^3:4. - - * Replaced European date format D/M/Y with D.M.Y. - - * Changed `a N' and `a X' to consider the endpoints of the interval. - - * Fixed a bug where TeX mode made c*(1+a/b) look like a function call. - - * Fixed a bug formatting top-level evalto's while using selections. - - * Fixed a bug that caused `z ?' to crash. - - * Fixed a bug where `Z F' broke for argument names "t" and "nil". - - * Fixed several bugs relating to autoloading. - - -Version 2.00 beta 1: - - * Added "What's new in Calc 2.00" to the manual (summary of info below). - - * Added support for many GNUPLOT 3.0 features. - - * Tweaked the Makefile and calc-compile a bit more. - - * Modified to work with Zawinski's/Furuseth's optimizing byte compiler. - - * Modified Calc to garbage-collect less often (raised gc-cons-threshold). - - * Changed quick-calc to avoid autoloading so many parts of Calc. - - * Changed Calc subfiles to work properly if not byte-compiled. - - * Renamed `M-# s' to `M-# j', made `M-# s' be equivalent to `h s'. - - * Changed calc-quit to avoid reapportioning space among other windows. - - * Added `M-DEL' (calc-pop-above) key, to DEL as LFD is to RET. - - * Added `{' and `}' to scroll vertically, analogous to `<' and `>'. - - * Added `m t' for "total" algebraic mode. - - * Added `d , \' option to group digits with "\,". - - * Improved support of "prime" accent in "eqn" language mode. - - * Changed macedit's read-kbd-macro to accept a string argument in Lisp. - - * Changed calc-check-defines to use a more concise run-hooks linkage. - - * Changed auto-why mode not to say [w=more] if next msg is not urgent. - - * Made `a d' able to differentiate "a?b:c" and "a_i" formulas. - - * Changed probability dist. functions to work with `a f' and `a d'. - - * Added special constants "phi" and "gamma". - - * Added "poly" function, simpler cousin of "gpoly". - - * Added "pdeg", "plead", "pcont", "pprim"; cleaned up "pdiv" and "pgcd". - - * Added `a p' command for polynomial interpolation. - - * Added `a I' command for numerical integration; made IntegLimit variable. - - * Added `a f' to factor polynomials; moved old `a f' to `a "'. - - * Added `a a' to do partial fraction decompositions. - - * Improved `a i' to integrate many more kinds of formulas. - - * Modified `a P' to find numerical roots of high-degree polynomials. - - * Modified `c 0' through `c 9' to convert int-valued floats to integers. - - * Made sinh, arctanh, etc., expandable into exps/logs by `a f'. - - * Added more algebraic simplifications having to do with logs and exps. - - * Changed `s s', `s t', `s x', `s l' to accept an equation at prompt. - - * Changed `s i' not to store Decls if its value is the default, []. - - * Changed `s i' to store in `d O' language mode if in Normal or Big mode. - - * Rearranged `V M'/`V R' matrix mapping modes. - - * Added <#1+#2> notation for lambda expressions. - - * Extended `b l' and other binary shifts to have a 2-argument version. - - * Changed `u c' and `u t' to give unitless result for unitless input. - - * Changed sqrt(1-cos(x)^2)-to-sin(x) to be an unsafe simplification. - - * Improved simplification of sqrts, e.g., sqrt(a^2 x + a^2 y). - - * Changed solver to treat (x-a)(x-b)(x-c) more intelligently. - - * Changed Pascal language mode to use "$FFFF" for hexadecimal numbers. - - * Added support for non-decimal display of floats. - - * Changed `p' to refresh stack display if current float format uses it. - - * Changed Big mode to use subscript notation for log10(x), log(x,b), r#nnn. - - * Changed Big mode to format deriv(u,x) and tderiv(u,x) as du/dx. - - * Changed Big mode to format integ(1/x,x) as "dx/x" instead of "1/x dx". - - * Added "tty" output type for graphics commands. - - * Documented Calc's random number generation algorithm in the manual. - - * Fixed a bug involving having "(setq calc-timing t)" in .emacs. - - * Fixed a bug that incorrectly parsed "|x| - 1" in TeX mode. - - * Fixed bugs and made improvements in `a R' when widening the guess. - - * Fixed a bug that where `a S' didn't solve (x - a)^2 = (x - b)^2. - - * Fixed a bug that sometimes crashed `a P' on systems of equations. - - * Fixed a bug that prevented `b p' (calc-pack-bits) from working. - - * Fixed some bugs in which certain functions didn't get autoloaded. - - * Fixed a bug in which the date <1/1/13> was incorrectly parsed. - - * Fixed a bug which prevented `j D' from expanding (a+b)/c. - - * Fixed a bug in solver: bad inverses for sinh and cosh. - - * Fixed a bug in math-possible-signs that failed for x*0. - - * Fixed a bug where sqrt(-a) was rewritten sqrt(a)*i even if a<0. - - * Fixed a bug in line breaker when first "word" of line was too long. - - * Worked around a makeinfo bug that handled @end group/@group badly. - - -Version 2.00 alpha 3: - - * Changed logic for locating component .elc files to be even smarter. - - * Changed "make install" to "make compile"; added different "make install". - - * Improved "make compile" to check file dates and compile only when needed. - - * Made output of "make compile" in batch mode more compact and readable. - - * Replaced "Quick Overview" in manual with "Demonstration of Calc". - - * Changed to use keymaps for dispatching M-# and h prefix keys. - - * Added TAGS target to the Calc Makefile. - - * Removed most doc strings from functions; new help commands are better. - - * Got rid of some crufty "fset" calls that were cluttering the code. - - * Split calc-grab-region into two functions, calc-grab-region/-rectangle. - - * Swapped positions of stack and trail in full-calc-keypad display. - - * Improved line-breaking algorithm for displaying long formulas. - - * Improved display of control characters in vectors shown as strings. - - * Changed `d o' to allow fraction format to specify desired denominator. - - * Changed `M-# y' to respect overwrite mode in target buffer. - - * Added `H' prefix to display-mode commands to suppress stack refresh. - - * Changed "calc-why" mechanism to display urgent messages automatically. - - * Handled taking derivatives of symbolic integrals and vice-versa. - - * Handled integrating vectors of formulas. - - * Incorporated Ewerlid's polynomial division and GCD functions into Calc. - - * Improved algebraic operations on "mod" forms, esp. polynomials. - - * Added some more financial functions (sln, syd, ddb). - - * Added nest, anest, fixp, and afixp (`H V R' and `H V U') functions. - - * Added `a .' (calc-remove-equal) command to take apart equations. - - * Generalized dfact to work for negative odd integers; added !! syntax. - - * Changed `k f' to factor 1, 0, and negative integers. - - * Changed `u M', etc., to accept +/- and [ .. ] forms as distributions. - - * Changed `g q' to remove *Gnuplot Commands/Trail* window if present. - - * Added support for Francois Pinard's "dumb terminal" driver for GNUPLOT. - - * Added ":: remember" feature for rewrite rules. - - * Changed rewrites to let pattern "a*b" match "x/2" with a=x, b=1/2. - - * Added ability to put function names like "simplify" in rewrite schedule. - - * Added "Rewrites Tutorial" to the manual. - - * Changed ` to bind RET as newline instead of finish if editing a vector. - - * Added some new exercises to the List Tutorial. - - * Changed `Z F', `V M', etc. not to remove stored vars from def arg list. - - * Added parsing for /1, 2, 3/ notation for Fortran mode vectors. - - * Added a "%%" syntax for comments in formulas being read. - - * Fixed a bug in which failing `h k' removed an existing Info window. - - * Fixed a bug in `j /' operating on subformulas like "a + b". - - * Fixed a bug in which "inf = inf" undesirably evaluated to 1. - - * Fixed a bug that simplified "0 = 1 + a + 2" to "0 = a". - - * Fixed a bug that failed for rewrite patterns like "fib(1 ||| 2)". - - * Fixed a bug that arose because rewrite programs are non-reentrant. - - -Version 2.00 alpha 2: - - * Changed LFD terminating algebraic entry to push in no-simplify mode. - - * Changed so that `K -' interprets `-' as calc-minus, not neg prefix arg. - - * Improved `h c' command to understand all Calc key sequences. - - * Fixed problems with DistribRules, NegateRules, and FitRules. - - * Fixed several bad node pointers in the manual. - - * Fixed a bug in `h C-w' when used with makeinfo-formatted manuals. - - * Fixed a bug in sqrt(-1) when Polar and HMS modes are enabled. - - * Fixed/improved dscalar and deven functions; added dodd. - - * Fixed a bug in polynomial handling that also affected sum(sin(k),k,1,n). - - * Fixed various other glitches in the manual. - - -Version 2.00 alpha 1: - - * Calc's tar file now creates a calc-(version) directory to unpack into. - - * Calc now comes with a Makefile; install with "make install". - - * Calc now comes already split into many files; installation is much simpler. - - * Changed base file name of the manual from "calc-info" to "calc.info". - - * Key binding for `M-# w' was documented but not implemented. - - * Bound M-# ' to be synonymous with `M-# f' (used to be `M-# q'). - - * Changed M-# M-# to use last interface of C or K; E no longer counts. - - * Changed `i' (and `M-# i') not to return to Top node unnecessarily. - - * Changed `h' to be a prefix key with various help commands. - - * Changed `s' to be a prefix key with various store and recall commands. - - * Keys `i', `r', and `l' are obsolete (moved to `h' and `s' prefixes). - - * Rearranged `K', `X', and `M-RET' keys; `K' is now calc-keep-args. - - * Changed quick-calc to display input formula as well as output if room. - - * Changed quick-calc to interact with the editing buffer and kill ring. - - * Created pack, unpack, unpackt function equivalents of `v p', `v u'. - - * Changed to expand (a/b)^x to a^x/b^x only if b > 0 (not if a > 0). - - * Changed math-possible-signs to understand sqrt function. - - * Changed Z [, rewrites to consider any provably non-zero value as true. - - * Changed normal language modes to accept ** as a synonym for ^. - - * Added "maple" language mode. - - * Changed, e.g., Mathematica "(2 + 3 I)^(1.23*10^20)" to include parens. - - * Generalized math-compose-big properties for all language modes. - - * Introduced "string" and other function for composing expressions. - - * Changed many recursive vector routines to use loops instead. - - * Added evalv, evalvn function equivalents to `=', `N'. - - * Changed "expr =>" not to evaluate at all if in no-simplify mode. - - * Redesigned user interface of `a F' (calc-curve-fit) command. - - * Added "phase" feature to the rewrite rule system. - - * Added "&&&", "|||", "!!!" to the rewrite rule system. - - * Introduced a new notation for rewrites: LHS := RHS :: COND. - - * Changed `a r' (but not `j r') to repeat 100 times by default. - - * Integrated EvalRules more cleanly into the default simplifications. - - * Added `H v l' [mdims] to measure the dimensions of a matrix. - - * Changed `u c' to interpret "/units" as "1/units". - - * Added `u a' to adjust unit prefix letters automatically. - - * Changed `u s' to enable scalar mode while simplifying. - - * Changed `c f' [pfloat] not to float integer powers or subscripts. - - * Added a three-argument form for the "hms" function. - - * Changed, e.g., sin(90) degrees to produce 1 instead of 1.0. - - * Changed symbolic mode to prefer sqrt(int): abs([1 2 3]) => sqrt(14). - - * Enhanced solver to handle, e.g., x + 1/x = a; exp(x) + exp(-x) = a. - - * Enhanced simplifier to handle, e.g., exp(a+2) / e^a => e^2. - - * Enhanced `a s' to simplify sqrt(x) - x^1:2 and exp(x) - e^x to 0. - - * Added -(a + b) to -a - b as a default simplification. - - * Added rules for differentiating sum() and prod() functions. - - * Added a few more energy units (due to Przemek Klosowski). - - * Added overflow/underflow checking for all floating-point arithmetic. - - * Extended error forms to work with complex numbers. - - * Generalized GCD to handle fractional arguments. - - * Changed graphics routines to evaluate "x" values, e.g., [-pi .. pi]. - - * Added `g q', like `g K' but without viewing the Gnuplot Trail. - - * Changed `g p' and `V M' to display better "Working..." messages. - - * Modified `M-# g' to be more robust about grabbing formulas. - - * Added `Y' prefix key reserved for user-written extensions. - - * Added calc-load-hook and calc-ext-load-hook. - - * Prevented calc-install from leaving large ~ files behind. - - * Changed @bullet to @bullet{} in manual to conform to texinfo spec. - - * Rearranged some chapters in the manual to be a bit more logical. - - * Added calc-split-summary command. - - * Fixed several bugs in embedded mode. - - * Fixed a bug in calc-vector-covariance that required a prefix arg. - - * Fixed a bug that prevented parsing "a=>" with no right-hand side. - - * Fixed a bug which allowed incorrectly dividing a vector by a vector. - - * Fixed a bug formatting sum(...)^2 in Big mode. - - * Fixed a bug that prevented Calc from deleting old graphics temp files. - - * Fixed some typos calling calc-inverse-func instead of calc-invert-func. - - * Fixed bugs in the derivatives of conj, deg, and rad; added re, im. - - * Fixed a bug where (r;theta) parsed as r exp(theta i) even in Deg mode. - - * Fixed a bug which gave wrong answer for exp of a polar complex number. - - * Fixed a bug in `Z F' that failed if formula used non-arg variables. - - * Fixed a bad pointer to Info node "Assignments in Embedded Mode". - - * Fixed several errors in the Calc Summary. - - -Version 1.08 beta 1: - - * Calc's copyright has been assigned to FSF, for inclusion in Emacs 19! - - * Changed M-# to be a two-key sequence; use M-# M-# to start Calc now. - - * Rewrote and expanded the introductory chapter of the manual. - - * Added a key and function summary to the manual. - - * Changed the manual to take better advantage of TeX's math formatting. - - * Changed manual to be printable in @smallbook format. - - * Added "calc-embedded" mode. - - * Added "=>" [evalto] operator. - - * Added facilities for date and date/time arithmetic. - - * Added a set of financial functions (pv, fv, etc.). - - * Added infinite quantities inf, uinf, and nan (plus infinite intervals). - - * Added "EvalRules", "SimpRules", and "ExtSimpRules" variables. - - * Added sum and product commands `a +', `a -', `a *', `a T'. - - * Enhanced `a S' and `a P' to solve systems of equations. - - * Enhanced solver to handle eqns like sin(x) = cos(2 x), sqrt(x) + x = 1. - - * Added `a M' (calc-map-equation) command. - - * Added new statistical functions: mean, standard deviation, etc. - - * Added line, polynomial, and curve fitting commands (`a L' and `a F'). - - * Added support for composite units, e.g., "mi+ft+in". - - * Enhanced "Big" mode to format square roots, choose, and powers better. - - * Enhanced "Big" mode to display fractions in large notation. - - * Added several alternate formats for matrix display. - - * Changed TeX mode to write "(1 + x^2)" instead of "\left(1 + x^2\right)". - - * Added support for relational operators in TeX and FORTRAN modes. - - * Added recognition of accents like \dot, \tilde, \underline in TeX mode. - - * Added "eqn" language mode. - - * Added extra control over display justification with `d <', `d =', `d >'. - - * Added calc-left-label and calc-right-label (`d {', `d }'). - - * Added "nn%" syntax for algebraic formulas; equivalent to "nn * .01". - - * Added input syntaxes like a = b = c, a != b != c, a <= b < c. - - * Changed "_" to mean subscripts; old use of "_" in vars is now "#". - - * Introduced "matrix mode" and "scalar mode" (`m v'). - - * Introduced generic identity matrices (idn(1)). - - * Added a method for declaring variables to be real, integer, > 0, etc. - - * Added `Z S' command for editing stored value of a variable. - - * Added "subst" algebraic function equivalent to the `a b' command. - - * Added `a f' command, changed deriv/integ/solve-for to use it. - - * Improved `a s' to simplify (x + y) (y + x) to (x + y)^2. - - * Improved `a s' to simplify i^2 to -1. - - * Improved `a s' to simplify, e.g., sin(pi/3) in Symbolic mode. - - * Improved `a s' to simplify sqrt(8) to 2 sqrt(2), 1/sqrt(2) to sqrt(2)/2. - - * Moved sin(arccos(x)) from `a e' to `a s'; not unsafe after all! - - * Changed (x y)^z => x^z y^z to be a usually-unsafe simplification. - - * Added thorough documentation of `a s' and `a e' to the manual. - - * Improved `a c' to collect "f(a)" even if "a" also appears elsewhere. - - * Introduced lin, linnt, islin, islinnt functions for linearity testing. - - * Improved `a x' to use binomial theorem to give simpler answers. - - * Improved `j D' to distribute powers of sums: (a + b)^n. - - * Improved `j M' to merge products of powers (may need no-simplify mode). - - * Changed to use defvar for DistribRules etc. so `Z V' works with them. - - * Improved `j *' and `j /' to work properly in a few more cases. - - * Improved `V R' to use identity value when reducing empty vectors. - - * Improved `v p' and `v u' to support more complex packing operations. - - * Disabled automatic simplification of sqrt(2)/2 to 1/sqrt(2). - - * Bound SPC and RET to press, TAB to next-menu in *Calc Keypad* buffer. - - * Added C-u ' to do algebraic entry with language mode forced to normal. - - * Added "$1", "$2", etc. input notation for algebraic entry. - - * Changed unary operators like `n', `&' to treat neg prefix args like RET. - - * Changed ` (calc-edit) to show full precision regardless of float format. - - * Enhanced quick-calc to display integers in several formats. - - * Documented `g H' (calc-graph-hide) command (had been left from manual). - - * Enhanced floor/ceil/trunc/round in several ways. - - * Added rounde and roundu functions. - - * Changed `c 1' through `c 9' to change small floats to 0.0; added `c 0'. - - * Enhanced set operations to work on sets of intervals. - - * Fixed erf(0), utpn(x,x,y), and arccosh(-1) to work properly. - - * Changed complex arctan and arctanh to follow Steele 2nd edition. - - * Expanded "Branch Cuts" section of the manual with some useful tables. - - * Rearranged order of words in mode line to be a bit more logical. - - * Changed `m N' (num-simplify) mode to evaluate constant vectors, too. - - * Changed `a r'/`j r' to prompt twice for separate LHS/RHS if necessary. - - * Enhanced `let(v,x)' in rewrites by allowing arbitrary patterns for v. - - * Changed cursor positioning in second prompt for `a b' (calc-substitute). - - * Changed `y' to omit line numbers more consistently. - - * Changed `o' (calc-realign) to reset horizontal scrolling to zero, also. - - * Added "pred" mode for calc-eval. - - * Added "calc-report-bug" as an alias for "report-calc-bug". - - * Added `Z T' and "calc-pass-errors" to aid debugging Calc-related code. - - * Added "calc-load-everything" (`m X' or `M-# L') command. - - * Enhanced calc-install to pre-build units table, CommuteRules, etc. - - * Changed Calc to interact more gracefully with load-path. - - * Changed Lisp Variable Index in manual to include user variables, too. - - * Fixed a bug that prevented calc-install from working under VMS. - - * Fixed a bug that sometimes crashed rewrites dealing with subtractions. - - * Fixed a bug that prevented `a S' from solving "3 - x = 1 + x"! - - * Fixed a bug in solver that crashed for certain cubics and quartics. - - * Fixed a bug in calc-simplify that crashed for equations and ineqs. - - * Fixed a bug which placed the "[" oddly in `d B' + `v /' mode. - - * Fixed a bug where finishing calc-edit improperly obeyed language mode. - - * Fixed a bug formatting (-1)^n in Big mode after selection commands. - - * Fixed a bug that got ">=" and "<=" backwards in rewrite conditions. - - * Fixed a bug that broke the `"x"' key in calc-keypad mode. - - * Fixed a bug in which `MAP$' in calc-keypad didn't display "Working...". - - * Fixed a bug where matrix division gave bad result for singular matrix. - - * Fixed a bug which closed Calc window if calc-grab-region got an error. - - * Fixed a bug where `a s' failed on formulas containing dimension errors. - - * Fixed a bug that caused `m F' to hang. - - * Fixed a bug in complex arithmetic that caused problems with solver. - - * Fixed a bug which raised intervals to interval powers incorrectly. - - * Fixed a bug in utpp/ltpp (order of arguments did not match the manual). - - * Fixed a bug in which `t y' rounded yanked data with old precision. - - * Fixed a bug in which "in(3, [3 .. 3))" returned true. - - * Fixed a bug which simplified abs(abs(x)) incorrectly. - - * Fixed a bug in which (a^2)^1:3 was unsafely simplified to a^2:3. - - * Fixed a bug in rewrite system which missed pattern "2 sin(x) cos(x)". - - * Fixed a bug in rewrite system which missed pattern "a - a cos(x)^2". - - * Fixed obsolete trail tags gsmp, gneg, ginv to jsmp, jneg, jinv. - - * Fixed some errors and made improvements in units table [Ulrich Mueller]. - - -Version 1.07: - - * Added `m F' (calc-settings-file-name) command. - - * Added calc-autoload-directory variable. - - * Extended Z ` to accept a prefix argument. - - * Added keystrokes (v h, v k) for head, tail, cons. - - * Extended `v e' to accept a vector as the filler. - - * Changed `V M', `V R' to accept mapping-mode keys in uppercase, too. - - * Changed V M ' etc. to accept $, $$, ... as argument indicators. - - * Changed `t y' to accept a prefix argument. - - * Put in a cleaner and safer random number generator for `k r' et al. - - * Fixed a bug which completely broke `a r' command! - - * Fixed "0 * matrix" to generate a zero matrix instead of 0. - - * Fixed a bug in `a R' which sometimes caused it to crash. - - * Fixed a fatal typo in the TeX version of the manual. - - * Fixed a bug that prevented C-k, C-w, M-w from working in Trail buffer. - - * Fixed another bug in `Z P' command. - - * Fixed a bug in `u s' which incorrectly simplified subtractions. - - * Fixed an argument-name aliasing bug evaluating lambda( ) formulas. - - * Fixed overfull hboxes in the manual. - - * Fixed various other bugs in the manual. - - -Version 1.06: - - * Added "calc-keypad" mode for X window system users (try it!). - - * Improved "calc-eval" for calling/operating Calc from user-written Lisp. - - * Moved vector accumulate command to `V U' (old `H V R' still supported). - - * Added right-to-left reductions: `I V R' and `I V U'. - - * Added set operations on vectors: intersect, union, diff, xor. - - * Added `I v s' to remove a subvector from a vector. - - * Introduced `H |' to append two vectors with no magical special cases. - - * Introduced rhead, rtail, and rcons for isolating last vector element. - - * Changed `g p' to keep temp files around until data actually change. - - * Improved `a S' to solve many higher-order polynomial equations. - - * Added `a P' to produce a vector of all solutions to an equation. - - * Enhanced `a v' and `j v' to allow top-level-only evaluation. - - * Changed `j DEL' to delete a side of an eqn or ineq, leaving other side. - - * Fixed binding for keys `j 1' through `j 9'. - - * Introduced "let" marker in rewrite rules. - - * Enhanced the "sign" function to provide a two-argument version. - - * Changed "max-specpdl-size exceeded" error message to be user-friendly. - - * Put "<Aborted>" in the trail in above case and when user presses C-g. - - * Changed TeX mode to generate \ldots instead of \dots, recognize both. - - * Changed "sin(0)" etc. (for integer 0) to generate "0" instead of "0.". - - * Enhanced Programming Tutorial exercise 2. - - * Fixed an error in the answer to Types Tutorial exercise 3. - - * Fixed several bugs relating to head, tail, and cons functions. - - * Fixed some other minor typos in the manual. - - * Fixed several bugs in `Z P' (calc-user-define-permanent). - - * Fixed several bugs that broke the `g P' command. - - -Version 1.05: - - * Created a calc-install command to ease installation. - - * Added lots of exercises to the Tutorial section of the manual. - - * Added ability to select and operate on sub-formulas. - - * Substantially improved the algebraic rewrite-rule system. - - * Added a set of graphing commands that use GNUPLOT. - - * Added a command (`a R') for finding numerical roots to equations. - - * Added several new math functions, such as erf and Bessel functions. - - * Added key bindings for miscellaneous commands using the "f" prefix key. - - * Added lots of new vector operations, many of them in the spirit of APL. - - * Added more control over vector display, including an abbreviated mode. - - * Improved keyboard macro editing; added read-kbd-macro to macedit.el. - - * Introduced the `m S' (calc-shift-prefix) command. - - * Enhanced the calc-edit command in several ways. - - * Made it possible to hit ` (calc-edit) during numeric/algebraic entry. - - * Enhanced the calc-solve-for command to handle inequalities. - - * Enhanced calc-simplify to handle equations and inequalities. - - * Taught log10 and log to look for exact integer or rational results. - - * Added ability to take Nth roots directly. - - * Added "increment" and "decrement" commands for integers and floats. - - * Added "full-help" command, changed "h" key to invoke it. - - * Added special help for Inverse and Hyperbolic prefixes. - - * Added an optional prefix argument to `o' (calc-realign). - - * Changed `t s' and `t r' to use RET as the search exit key. - - * Made handling of operator keys for V M, V R, etc. more regular. - - * Improved TeX mode; added support for \matrix format. - - * Added a variant of `m a' mode that only affects ( and [ keys. - - * Fixed "Mismatch" message for algebraic entry of semi-open intervals. - - * Trimmed fat from calc.el to speed loading, moved more to calc-ext.el. - - * Fixed a bug in which minibuffer entry rounded to out-of-date precision. - - * Fixed a bug which crashed Calc 1.04 under Epoch. - - * Fixed a bug which messed up Calc Trail's mode line, among other things. - - * Fixed a bug which caused trail ">" to show only when in Trail buffer. - - * Fixed a bug in which "calc" called "calc-grab-region" with too few args. - - * Fixed bugs in both implementation and documentation of calc-perm. - - * Fixed a bug in which calc-simplify-extended always used radians. - - * Fixed a bug where calc-comma failed to override "polar" mode. - - * Fixed a bug doing mixed arithmetic on rectangular+polar complex numbers. - - * Fixed several bugs in transcendental functions with complex arguments. - - * Fixed a bug in which `a s' simplified "x / .5" to ".5 x". - - * Fixed numerous other bugs in various parts of Calc. - - * Completed the "Hooks" section of the "Internals" chapter of the manual. - - -Version 1.04: - - * Included a copy of revision history (from README) in calc.el. - - * Added the "calc-split" feature to split calc-ext.el into smaller bits. - - * Changed calc-unpack to unpack floats and fractions, too. - - * Added "mant", "xpon", and "scf" functions for decomposing floats. - - * Fixed a bug in the "y" command with positive prefix arguments. - - * Rearranged binary shift/rotate command keys to be a bit more convenient. - - * Fixed a bug in which simplifying "(0/0) * 2" crashed with a Lisp error. - - * Made `H F' [ffloor] and friends faster for very large arguments. - - * Made calc-define-del more robust. - - * Handled pasting of data into the Calculator using the mouse under X. - - * Made overlay-arrow variables buffer-local to avoid interference. - - * Fixed a problem in which Calc Trail buffer got stuck after a C-x C-w. - - -Version 1.03: - - * Changed math-choose to compute n-choose-m faster when m is large. - - * Fixed some problems with TeX mode. - - * Fixed a bug that prevented `b s' from working without a prefix argument. - - * Added "calc-eval" function. - - * Improved calc-grab-region. - - -Version 1.02: - - * Fixed a bug in Tutorial: telephone pole height/distance were switched! - - * Fixed a few other things in the manual. - - * Added "full-calc" command. - - * Added "calc-insert-variables" (`Z I') command. - - * Quick Calc now works even if you are already in the minibuffer. - - * Fixed a bug in math-mul-bignum-digit which affected math-and, etc. - - * Definition of "Hectares" was wrong in units table. - - * Fixed a bug in calc-execute-kbd-macro concerning undo and refresh. - - * Bound "calc-undo" to `C-x u' as well as `C-_' and `U'. - -Version 1.01: - - * Added a tutorial section to the manual. - - * Next and Prev for node Strings in the manual were reversed; fixed. - - * Changed "'bignum" in calc-isqrt-bignum-iter to "'bigpos". - - * Fixed a bug that prevented "$" from working during algebraic entry. - - * Fixed a bug caused by an X (last-X) command following a K (macro) cmd. - - * Fixed a bug in which K command incorrectly formatted stack in Big mode. - - * Added space between unary operators and non-flat compositions. - (Otherwise, "-(a/b)" in Big mode blended the minus sign into the rule!) - - * Fixed formatting of (-1)^n in Big mode. - - * Fixed some problems relating to "not" operator in Pascal language mode. - - * Fixed several bugs relating to V M ' and V M $ sequences. - - * Fixed matrix-vector multiplication to produce a vector. - - * Introduced Z ` ... Z ' commands; renamed old Z ' to Z #. - - * Fixed various other bugs. - - * Added calc-settings-file variable suggested by C. Witty. - - -Version 1.00: - - * First official release of Calc. - - * If you used the Beta test version (0.01), you will find that this - version of Calc is over 50% larger than the original release. - General areas of improvement include much better algebra features; - operations on units; language modes; simplification modes; interval - arithmetic; vector mapping and reduction. Other new commands include - calc-fraction and calc-grab-region. The program has been split into - two parts for faster loading, and the manual is more complete. - - -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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>. diff --git a/lisp/calc/calc-graph.el b/lisp/calc/calc-graph.el index 4376e21b4ca..16fc6c09dbe 100644 --- a/lisp/calc/calc-graph.el +++ b/lisp/calc/calc-graph.el @@ -948,6 +948,7 @@ This \"dumb\" driver will be present in Gnuplot 3.0." (setq calc-dumb-map (make-sparse-keymap)) (define-key calc-dumb-map "\n" 'scroll-up-command) (define-key calc-dumb-map " " 'scroll-up-command) + (define-key calc-dumb-map [?\S-\ ] 'scroll-down-command) (define-key calc-dumb-map "\177" 'scroll-down-command) (define-key calc-dumb-map "<" 'scroll-left) (define-key calc-dumb-map ">" 'scroll-right) diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el index 512faefa78f..2b7b56c3f89 100644 --- a/lisp/calc/calc-help.el +++ b/lisp/calc/calc-help.el @@ -386,23 +386,9 @@ C-w Describe how there is no warranty for Calc." (defun calc-view-news () (interactive) - (let ((path load-path)) - (while (and path - (not (file-exists-p (expand-file-name "calc.el" (car path))))) - (setq path (cdr path))) - (or (and path - (file-exists-p (expand-file-name "README" (car path)))) - (error "Can't locate Calc sources")) - (calc-quit) - (switch-to-buffer "*Help*") - (let ((inhibit-read-only t)) - (erase-buffer) - (insert-file-contents (expand-file-name "README" (car path))) - (search-forward "Summary of changes") - (forward-line -1) - (delete-region (point-min) (point)) - (goto-char (point-min))) - (help-mode))) + (calc-quit) + (view-emacs-news) + (re-search-forward "^\*+ .*\\<Calc\\>" nil t)) (defvar calc-help-long-names '((?b . "binary/business") (?g . "graphics") diff --git a/lisp/calc/calc-math.el b/lisp/calc/calc-math.el index 94b3f645785..3b845f563a1 100644 --- a/lisp/calc/calc-math.el +++ b/lisp/calc/calc-math.el @@ -777,18 +777,18 @@ If this can't be done, return NIL." (math-to-hms a 'rad)) (t a))) -(defun math-to-radians-2 (a) ; [N N] +(defun math-to-radians-2 (a &optional force-symbolic) ; [N N] (cond ((eq (car-safe a) 'hms) (math-from-hms a 'rad)) ((memq calc-angle-mode '(deg hms)) - (if calc-symbolic-mode + (if (or calc-symbolic-mode force-symbolic) (math-div (math-mul a '(var pi var-pi)) 180) (math-mul a (math-pi-over-180)))) (t a))) -(defun math-from-radians-2 (a) ; [N N] +(defun math-from-radians-2 (a &optional force-symbolic) ; [N N] (cond ((memq calc-angle-mode '(deg hms)) - (if calc-symbolic-mode + (if (or calc-symbolic-mode force-symbolic) (math-div (math-mul 180 a) '(var pi var-pi)) (math-div a (math-pi-over-180)))) (t a))) diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el index a3d037ee042..335980af4dd 100644 --- a/lisp/calc/calc-units.el +++ b/lisp/calc/calc-units.el @@ -404,7 +404,7 @@ If EXPR is nil, return nil." (math-composition-to-string cexpr)))))) (defvar math-default-units-table - #s(hash-table test equal data (1 (1))) + (make-hash-table :test 'equal) "A table storing previously converted units.") (defun math-get-default-units (expr) @@ -437,20 +437,32 @@ If COMP or STD is non-nil, put that in the units table instead." (list new-units (car default-units)) math-default-units-table)))))) +(defvar calc-allow-units-as-numbers) + (defun calc-convert-units (&optional old-units new-units) (interactive) (calc-slow-wrapper (let ((expr (calc-top-n 1)) (uoldname nil) + (unitscancel nil) + (nouold nil) unew units defunits) - (unless (math-units-in-expr-p expr t) + (if (or (not (math-units-in-expr-p expr t)) + (setq unitscancel (and + calc-allow-units-as-numbers + (eq (math-get-standard-units expr) 1)))) (let ((uold (or old-units (progn - (setq uoldname (read-string "Old units: ")) + (setq uoldname + (if unitscancel + (read-string + "(The expression is unitless when simplified) Old Units: ") + (read-string "Old units: "))) (if (equal uoldname "") (progn + (setq nouold unitscancel) (setq uoldname "1") 1) (if (string-match "\\` */" uoldname) @@ -460,47 +472,45 @@ If COMP or STD is non-nil, put that in the units table instead." (error "Bad format in units expression: %s" (nth 1 uold))) (setq expr (math-mul expr uold)))) (setq defunits (math-get-default-units expr)) - (if (equal defunits "1") - (progn - (calc-enter-result 1 "cvun" (math-simplify-units expr)) - (message "All units in expression cancel")) - (unless new-units - (setq new-units - (read-string (concat - (if uoldname - (concat "Old units: " - uoldname - ", new units") - "New units") - (if defunits - (concat - " (default " - defunits - "): ") - ": ")))) - (if (and - (string= new-units "") - defunits) - (setq new-units defunits))) - (when (string-match "\\` */" new-units) - (setq new-units (concat "1" new-units))) - (setq units (math-read-expr new-units)) - (when (eq (car-safe units) 'error) - (error "Bad format in units expression: %s" (nth 2 units))) - (if calc-ensure-consistent-units - (math-check-unit-consistency expr units)) - (let ((unew (math-units-in-expr-p units t)) - (std (and (eq (car-safe units) 'var) - (assq (nth 1 units) math-standard-units-systems))) - (comp (eq (car-safe units) '+))) - (unless (or unew std) - (error "No units specified")) - (let ((res - (if std - (math-simplify-units (math-to-standard-units expr (nth 1 std))) - (math-convert-units expr units (and uoldname (not (equal uoldname "1"))))))) - (math-put-default-units res (if comp units)) - (calc-enter-result 1 "cvun" res))))))) + (unless new-units + (setq new-units + (read-string (concat + (if (and uoldname (not nouold)) + (concat "Old units: " + uoldname + ", new units") + "New units") + (if defunits + (concat + " (default " + defunits + "): ") + ": ")))) + (if (and + (string= new-units "") + defunits) + (setq new-units defunits))) + (when (string-match "\\` */" new-units) + (setq new-units (concat "1" new-units))) + (setq units (math-read-expr new-units)) + (when (eq (car-safe units) 'error) + (error "Bad format in units expression: %s" (nth 2 units))) + (if calc-ensure-consistent-units + (math-check-unit-consistency expr units)) + (let ((unew (math-units-in-expr-p units t)) + (std (and (eq (car-safe units) 'var) + (assq (nth 1 units) math-standard-units-systems))) + (comp (eq (car-safe units) '+))) + (unless (or unew std) + (error "No units specified")) + (let* ((noold (and uoldname (not (equal uoldname "1")))) + (res + (if std + (math-simplify-units (math-to-standard-units expr (nth 1 std))) + (math-convert-units expr units noold)))) + (unless std + (math-put-default-units (if noold units res) (if comp units))) + (calc-enter-result 1 "cvun" res)))))) (defun calc-autorange-units (arg) (interactive "P") diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el index c35e7650254..db30d53d537 100644 --- a/lisp/calc/calc.el +++ b/lisp/calc/calc.el @@ -426,6 +426,14 @@ when converting units." :version "24.3" :type 'boolean) +(defcustom calc-allow-units-as-numbers + t + "If non-nil, allow unit expressions to be treated like numbers +when converting units, if the expression can be simplified to be unitless." + :group 'calc + :version "24.4" + :type 'boolean) + (defcustom calc-undo-length 100 "The number of undo steps that will be preserved when Calc is quit." diff --git a/lisp/calc/calcalg2.el b/lisp/calc/calcalg2.el index 58a82bcf143..cd962e7dbed 100644 --- a/lisp/calc/calcalg2.el +++ b/lisp/calc/calcalg2.el @@ -401,18 +401,18 @@ (put 'calcFunc-sin\' 'math-derivative-1 (function (lambda (u) (math-to-radians-2 (math-normalize - (list 'calcFunc-cos u)))))) + (list 'calcFunc-cos u)) t)))) (put 'calcFunc-cos\' 'math-derivative-1 (function (lambda (u) (math-neg (math-to-radians-2 (math-normalize - (list 'calcFunc-sin u))))))) + (list 'calcFunc-sin u)) t))))) (put 'calcFunc-tan\' 'math-derivative-1 (function (lambda (u) (math-to-radians-2 (math-sqr (math-normalize - (list 'calcFunc-sec u))))))) + (list 'calcFunc-sec u))) t)))) (put 'calcFunc-sec\' 'math-derivative-1 (function (lambda (u) (math-to-radians-2 @@ -420,7 +420,7 @@ (math-normalize (list 'calcFunc-sec u)) (math-normalize - (list 'calcFunc-tan u))))))) + (list 'calcFunc-tan u))) t)))) (put 'calcFunc-csc\' 'math-derivative-1 (function (lambda (u) (math-neg @@ -429,32 +429,32 @@ (math-normalize (list 'calcFunc-csc u)) (math-normalize - (list 'calcFunc-cot u)))))))) + (list 'calcFunc-cot u))) t))))) (put 'calcFunc-cot\' 'math-derivative-1 (function (lambda (u) (math-neg (math-to-radians-2 (math-sqr (math-normalize - (list 'calcFunc-csc u)))))))) + (list 'calcFunc-csc u))) t))))) (put 'calcFunc-arcsin\' 'math-derivative-1 (function (lambda (u) (math-from-radians-2 (math-div 1 (math-normalize (list 'calcFunc-sqrt - (math-sub 1 (math-sqr u))))))))) + (math-sub 1 (math-sqr u))))) t)))) (put 'calcFunc-arccos\' 'math-derivative-1 (function (lambda (u) (math-from-radians-2 (math-div -1 (math-normalize (list 'calcFunc-sqrt - (math-sub 1 (math-sqr u))))))))) + (math-sub 1 (math-sqr u))))) t)))) (put 'calcFunc-arctan\' 'math-derivative-1 (function (lambda (u) (math-from-radians-2 - (math-div 1 (math-add 1 (math-sqr u))))))) + (math-div 1 (math-add 1 (math-sqr u))) t)))) (put 'calcFunc-sinh\' 'math-derivative-1 (function (lambda (u) (math-normalize (list 'calcFunc-cosh u))))) diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index 74d3ce80338..20a8684e387 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el @@ -1635,6 +1635,7 @@ line." (define-key map "S" 'calendar-sunrise-sunset) (define-key map "M" 'calendar-lunar-phases) (define-key map " " 'scroll-other-window) + (define-key map [?\S-\ ] 'scroll-other-window-down) (define-key map "\d" 'scroll-other-window-down) (define-key map "\C-c\C-l" 'calendar-redraw) (define-key map "." 'calendar-goto-today) diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog index 60c15e17184..2ccce8bb01d 100644 --- a/lisp/cedet/ChangeLog +++ b/lisp/cedet/ChangeLog @@ -1,3 +1,9 @@ +2013-03-04 Paul Eggert <eggert@cs.ucla.edu> + + * semantic/wisent/wisent.el (wisent): Stick to ASCII in the ASCII art. + + * semantic/wisent/javat-wy.el: Regenerate. + 2012-11-19 Stefan Monnier <monnier@iro.umontreal.ca> * semantic/fw.el (semantic-make-local-hook, semantic-mode-line-update): diff --git a/lisp/cedet/cedet.el b/lisp/cedet/cedet.el index ccc75a40f4b..e8720bc6624 100644 --- a/lisp/cedet/cedet.el +++ b/lisp/cedet/cedet.el @@ -4,7 +4,7 @@ ;; Author: David Ponce <david@dponce.com> ;; Maintainer: Eric M. Ludlam <zappo@gnu.org> -;; Version: 1.0pre7 +;; Version: 2.0 ;; Keywords: OO, lisp ;; This file is part of GNU Emacs. @@ -35,7 +35,7 @@ (declare-function inversion-find-version "inversion") -(defconst cedet-version "1.1" +(defconst cedet-version "2.0" "Current version of CEDET.") (defconst cedet-packages @@ -43,12 +43,12 @@ ;;PACKAGE MIN-VERSION INSTALLDIR DOCDIR (cedet ,cedet-version "common" "common" ) (eieio "1.4" nil "eieio" ) - (semantic "2.1" nil "semantic/doc") - (srecode "1.1" nil "srecode" ) - (ede "1.1" nil "ede" ) + (semantic "2.2" nil "semantic/doc") + (srecode "1.2" nil "srecode" ) + (ede "1.2" nil "ede" ) (speedbar "1.0.4" nil "speedbar" ) - (cogre "1.1" nil "cogre" ) - (cedet-contrib "1.1" "contrib" nil ) + (cogre "1.2" nil "cogre" ) + (cedet-contrib "1.2" "contrib" nil ) ) "Table of CEDET packages to install.") diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el index 12b8f558d65..3867f628b93 100644 --- a/lisp/cedet/ede.el +++ b/lisp/cedet/ede.el @@ -4,7 +4,7 @@ ;; Author: Eric M. Ludlam <zappo@gnu.org> ;; Keywords: project, make -;; Version: 1.0 +;; Version: 1.2 ;; This file is part of GNU Emacs. @@ -60,7 +60,7 @@ (declare-function ede-up-directory "ede/files") (declare-function semantic-lex-make-spp-table "semantic/lex-spp") -(defconst ede-version "1.0" +(defconst ede-version "1.2" "Current version of the Emacs EDE.") ;;; Code: diff --git a/lisp/cedet/inversion.el b/lisp/cedet/inversion.el index bebb7b58e40..533d959f6b7 100644 --- a/lisp/cedet/inversion.el +++ b/lisp/cedet/inversion.el @@ -3,7 +3,7 @@ ;;; Copyright (C) 2002-2003, 2005-2013 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam <zappo@gnu.org> -;; Version: 0.2 +;; Version: 1.3 ;; Keywords: OO, lisp ;; This file is part of GNU Emacs. diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el index 73d0860c49f..edf2d0cb21a 100644 --- a/lisp/cedet/semantic.el +++ b/lisp/cedet/semantic.el @@ -4,7 +4,7 @@ ;; Author: Eric M. Ludlam <zappo@gnu.org> ;; Keywords: syntax tools -;; Version: 2.0 +;; Version: 2.2 ;; This file is part of GNU Emacs. @@ -38,7 +38,7 @@ (require 'semantic/tag) (require 'semantic/lex) -(defvar semantic-version "2.1beta" +(defvar semantic-version "2.2" "Current version of Semantic.") (declare-function inversion-test "inversion") diff --git a/lisp/cedet/semantic/wisent/javat-wy.el b/lisp/cedet/semantic/wisent/javat-wy.el Binary files differindex e666b9c4191..f082358c4f5 100644 --- a/lisp/cedet/semantic/wisent/javat-wy.el +++ b/lisp/cedet/semantic/wisent/javat-wy.el diff --git a/lisp/cedet/semantic/wisent/wisent.el b/lisp/cedet/semantic/wisent/wisent.el index 1cb039f9750..32788381b23 100644 --- a/lisp/cedet/semantic/wisent/wisent.el +++ b/lisp/cedet/semantic/wisent/wisent.el @@ -46,8 +46,8 @@ \\_ _/ ( `o ` (European ;-) Bison \\ ` / - ( D ,¨ for Emacs! - ` ~ ,¨ + ( D ,\" for Emacs! + ` ~ ,\" `\"\"" :group 'semantic) diff --git a/lisp/cedet/srecode.el b/lisp/cedet/srecode.el index 3201374bc92..2e2cb8a3f80 100644 --- a/lisp/cedet/srecode.el +++ b/lisp/cedet/srecode.el @@ -4,7 +4,7 @@ ;; Author: Eric M. Ludlam <zappo@gnu.org> ;; Keywords: codegeneration -;; Version: 1.0 +;; Version: 1.2 ;; This file is part of GNU Emacs. @@ -41,7 +41,7 @@ (require 'mode-local) (load "srecode/loaddefs" nil 'nomessage) -(defvar srecode-version "1.0" +(defvar srecode-version "1.2" "Current version of the Semantic Recoder.") ;;; Code: diff --git a/lisp/cmuscheme.el b/lisp/cmuscheme.el index d40822188ee..0f89eae8828 100644 --- a/lisp/cmuscheme.el +++ b/lisp/cmuscheme.el @@ -447,7 +447,7 @@ in the next one.") "\"\)\n"))) -(defvar scheme-buffer nil "*The current scheme process buffer. +(defvar scheme-buffer nil "The current scheme process buffer. MULTIPLE PROCESS SUPPORT =========================================================================== @@ -478,8 +478,8 @@ This process selection is performed by function `scheme-proc'. Whenever \\[run-scheme] fires up a new process, it resets `scheme-buffer' to be the new process's buffer. If you only run one process, this will -do the right thing. If you run multiple processes, you can change -`scheme-buffer' to another process buffer with \\[set-variable]. +do the right thing. If you run multiple processes, you might need to +set `scheme-buffer' to whichever process buffer you want to use. More sophisticated approaches are, of course, possible. If you find yourself needing to switch back and forth between multiple processes frequently, diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 6d1ebe5a962..d19e2ded00c 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -443,6 +443,7 @@ (define-key map [remap self-insert-command] 'Custom-no-edit) (define-key map "\^m" 'Custom-newline) (define-key map " " 'scroll-up-command) + (define-key map [?\S-\ ] 'scroll-down-command) (define-key map "\177" 'scroll-down-command) (define-key map "\C-c\C-c" 'Custom-set) (define-key map "\C-x\C-s" 'Custom-save) diff --git a/lisp/cus-start.el b/lisp/cus-start.el index 62e91fafcbf..2e442b6c944 100644 --- a/lisp/cus-start.el +++ b/lisp/cus-start.el @@ -286,7 +286,6 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of (double-click-time mouse (restricted-sexp :match-alternatives (integerp 'nil 't))) (double-click-fuzz mouse integer "22.1") - (inhibit-local-menu-bar-menus menu boolean) (help-char keyboard character) (help-event-list keyboard (repeat (sexp :format "%v"))) (menu-prompting menu boolean) @@ -301,15 +300,15 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of (const :tag "When sent SIGUSR2" sigusr2)) "24.1") -;; This is not good news because it will use the wrong -;; version-specific directories when you upgrade. We need -;; customization of the front of the list, maintaining the standard -;; value intact at the back. -;;; (load-path environment -;;; (repeat (choice :tag "[Current dir?]" -;;; :format "%[Current dir?%] %v" -;;; (const :tag " current dir" nil) -;;; (directory :format "%v")))) + ;; This is not good news because it will use the wrong + ;; version-specific directories when you upgrade. We need + ;; customization of the front of the list, maintaining the + ;; standard value intact at the back. + ;;(load-path environment + ;; (repeat (choice :tag "[Current dir?]" + ;; :format "%[Current dir?%] %v" + ;; (const :tag " current dir" nil) + ;; (directory :format "%v")))) ;; minibuf.c (enable-recursive-minibuffers minibuffer boolean) (history-length minibuffer @@ -398,6 +397,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of (const super)) "23.1") (ns-antialias-text ns boolean "23.1") (ns-auto-hide-menu-bar ns boolean "24.0") + (ns-use-native-fullscreen ns boolean "24.4") ;; process.c (delete-exited-processes processes-basics boolean) ;; syntax.c diff --git a/lisp/descr-text.el b/lisp/descr-text.el index b3f78780bd3..2aea0a96215 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el @@ -574,6 +574,9 @@ relevant to POS." 'help-echo "mouse-2, RET: show this character in its character set") str))) + ,@(let ((script (aref char-script-table char))) + (if script + (list (list "script" (symbol-name script))))) ("syntax" ,(let ((syntax (syntax-after pos))) (with-temp-buffer diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 13443419bd7..f6ff32b0b01 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -55,7 +55,8 @@ into this list; they also should call `dired-log' to log the errors.") (defun dired-diff (file &optional switches) "Compare file at point with file FILE using `diff'. If called interactively, prompt for FILE. If the file at point -has a backup file, use that as the default. If the mark is active +has a backup file, use that as the default. If the file at point +is a backup file, use its original. If the mark is active in Transient Mark mode, use the file at the mark as the default. \(That's the mark set by \\[set-mark-command], not by Dired's \\[dired-mark] command.) @@ -67,8 +68,10 @@ With prefix arg, prompt for second argument SWITCHES, which is the string of command switches for the third argument of `diff'." (interactive (let* ((current (dired-get-filename t)) - ;; Get the latest existing backup file. - (oldf (diff-latest-backup-file current)) + ;; Get the latest existing backup file or its original. + (oldf (if (backup-file-name-p current) + (file-name-sans-versions current) + (diff-latest-backup-file current))) ;; Get the file at the mark. (file-at-mark (if (and transient-mark-mode mark-active) (save-excursion (goto-char (mark t)) @@ -107,7 +110,10 @@ the string of command switches for the third argument of `diff'." (equal (expand-file-name current file) (expand-file-name current)))) (error "Attempt to compare the file to itself")) - (diff file current switches))) + (if (and (backup-file-name-p current) + (equal file (file-name-sans-versions current))) + (diff current file switches) + (diff file current switches)))) ;;;###autoload (defun dired-backup-diff (&optional switches) diff --git a/lisp/dired-x.el b/lisp/dired-x.el index a2c13033cd1..3cf6654da2b 100644 --- a/lisp/dired-x.el +++ b/lisp/dired-x.el @@ -1344,13 +1344,20 @@ Otherwise obeys the value of `dired-vm-read-only-folders'." (rmail (dired-get-filename))) (defun dired-do-run-mail () - "If `dired-bind-vm' is non-nil, call `dired-vm', else call `dired-rmail'." + "Visit the current file as a mailbox, using VM or RMAIL. +Prompt for confirmation first; if the user says yes, call +`dired-vm' if `dired-bind-vm' is non-nil, `dired-rmail' +otherwise." (interactive) - (if dired-bind-vm - ;; Read mail folder using vm. - (dired-vm) - ;; Read mail folder using rmail. - (dired-rmail))) + (let ((file (dired-get-filename t))) + (if dired-bind-vm + (if (y-or-n-p (concat "Visit `" file + "' as a mail folder with VM?")) + (dired-vm)) + ;; Read mail folder using rmail. + (if (y-or-n-p (concat "Visit `" file + "' as a mailbox with RMAIL?")) + (dired-rmail))))) ;;; MISCELLANEOUS INTERNAL FUNCTIONS. diff --git a/lisp/dired.el b/lisp/dired.el index b8b8a7f877c..f03e0aca475 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -230,6 +230,18 @@ new dired buffers." :version "22.1" :group 'dired) +(defcustom dired-hide-details-hide-symlink-targets t + "If non-nil, `dired-hide-details-mode' hides symbolic link targets." + :type 'boolean + :version "24.4" + :group 'dired) + +(defcustom dired-hide-details-hide-information-lines t + "Non-nil means hide lines other than header and file/dir lines." + :type 'boolean + :version "24.4" + :group 'dired) + ;; Internal variables (defvar dired-marker-char ?* ; the answer is 42 @@ -620,12 +632,14 @@ Optional third argument FILTER, if non-nil, is a function to select If DISTINGUISH-ONE-MARKED is non-nil, then if we find just one marked file, return (t FILENAME) instead of (FILENAME). Don't use that together with FILTER." - (let* ((all-of-them - (save-excursion - (dired-map-over-marks - (dired-get-filename localp 'no-error-if-not-filep) - arg nil distinguish-one-marked))) - result) + (let ((all-of-them + (save-excursion + (delq nil (dired-map-over-marks + (dired-get-filename localp 'no-error-if-not-filep) + arg nil distinguish-one-marked)))) + result) + (when (equal all-of-them '(t)) + (setq all-of-them nil)) (if (not filter) (if (and distinguish-one-marked (eq (car all-of-them) t)) all-of-them @@ -1194,7 +1208,6 @@ see `dired-use-ls-dired' for more details.") ;; Note: adjust dired-build-subdir-alist if you change this. (setq dir (replace-regexp-in-string "\\\\" "\\\\" dir nil t) dir (replace-regexp-in-string "\n" "\\n" dir nil t))) - (dired-insert-set-properties opoint (point)) ;; If we used --dired and it worked, the lines are already indented. ;; Otherwise, indent them. (unless (save-excursion @@ -1203,18 +1216,21 @@ see `dired-use-ls-dired' for more details.") (let ((indent-tabs-mode nil)) (indent-rigidly opoint (point) 2))) ;; Insert text at the beginning to standardize things. - (save-excursion - (goto-char opoint) - (if (and (or hdr wildcard) - (not (and (looking-at "^ \\(.*\\):$") - (file-name-absolute-p (match-string 1))))) + (let ((content-point opoint)) + (save-excursion + (goto-char opoint) + (when (and (or hdr wildcard) + (not (and (looking-at "^ \\(.*\\):$") + (file-name-absolute-p (match-string 1))))) ;; Note that dired-build-subdir-alist will replace the name ;; by its expansion, so it does not matter whether what we insert ;; here is fully expanded, but it should be absolute. - (insert " " (directory-file-name (file-name-directory dir)) ":\n")) - (when wildcard - ;; Insert "wildcard" line where "total" line would be for a full dir. - (insert " wildcard " (file-name-nondirectory dir) "\n"))))) + (insert " " (directory-file-name (file-name-directory dir)) ":\n") + (setq content-point (point))) + (when wildcard + ;; Insert "wildcard" line where "total" line would be for a full dir. + (insert " wildcard " (file-name-nondirectory dir) "\n"))) + (dired-insert-set-properties content-point (point))))) (defun dired-insert-set-properties (beg end) "Add various text properties to the lines in the region." @@ -1222,15 +1238,24 @@ see `dired-use-ls-dired' for more details.") (goto-char beg) (while (< (point) end) (condition-case nil - (if (dired-move-to-filename) - (add-text-properties - (point) - (save-excursion - (dired-move-to-end-of-filename) - (point)) - '(mouse-face highlight - dired-filename t - help-echo "mouse-2: visit this file in other window"))) + (if (not (dired-move-to-filename)) + (put-text-property (line-beginning-position) + (1+ (line-end-position)) + 'invisible 'dired-hide-details-information) + (put-text-property (+ (line-beginning-position) 1) (1- (point)) + 'invisible 'dired-hide-details-detail) + (add-text-properties + (point) + (progn + (dired-move-to-end-of-filename) + (point)) + '(mouse-face + highlight + dired-filename t + help-echo "mouse-2: visit this file in other window")) + (when (< (+ (point) 4) (line-end-position)) + (put-text-property (+ (point) 4) (line-end-position) + 'invisible 'dired-hide-details-link))) (error nil)) (forward-line 1)))) @@ -1494,6 +1519,7 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST." ;; hiding (define-key map "$" 'dired-hide-subdir) (define-key map "\M-$" 'dired-hide-all) + (define-key map "(" 'dired-hide-details-mode) ;; isearch (define-key map (kbd "M-s a C-s") 'dired-do-isearch) (define-key map (kbd "M-s a M-C-s") 'dired-do-isearch-regexp) @@ -1584,6 +1610,10 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST." '(menu-item "Toggle Image Thumbnails in This Buffer" image-dired-dired-toggle-marked-thumbs :help "Add or remove image thumbnails in front of marked file names")) + (define-key map [menu-bar immediate hide-details] + '(menu-item "Hide Details" dired-hide-details-mode + :help "Hide details in buffer" + :button (:toggle . dired-hide-details-mode))) (define-key map [menu-bar immediate revert-buffer] '(menu-item "Refresh" revert-buffer :help "Update contents of shown directories")) @@ -1912,6 +1942,9 @@ Keybindings: selective-display t ; for subdirectory hiding mode-line-buffer-identification (propertized-buffer-identification "%17b")) + ;; Ignore dired-hide-details-* value of invisible text property by default. + (when (eq buffer-invisibility-spec t) + (setq buffer-invisibility-spec (list t))) (set (make-local-variable 'revert-buffer-function) (function dired-revert)) (set (make-local-variable 'buffer-stale-function) @@ -1976,15 +2009,20 @@ Otherwise, call `toggle-read-only'." "Move down lines then position at filename. Optional prefix ARG says how many lines to move; default is one line." (interactive "p") - (forward-line arg) + (let ((line-move-visual) + (goal-column)) + (line-move arg t)) + ;; We never want to move point into an invisible line. + (while (and (invisible-p (point)) + (not (if (and arg (< arg 0)) (bobp) (eobp)))) + (forward-char (if (and arg (< arg 0)) -1 1))) (dired-move-to-filename)) (defun dired-previous-line (arg) "Move up lines then position at filename. Optional prefix ARG says how many lines to move; default is one line." (interactive "p") - (forward-line (- arg)) - (dired-move-to-filename)) + (dired-next-line (- (or arg 1)))) (defun dired-next-dirline (arg &optional opoint) "Goto ARG'th next directory file line." @@ -2228,6 +2266,40 @@ unchanged." (substring file (match-end 0)) file)) +;;; Minor mode for hiding details +;;;###autoload +(define-minor-mode dired-hide-details-mode + "Hide details in `dired-mode'." + :group 'dired + (unless (derived-mode-p 'dired-mode) + (error "Not a Dired buffer")) + (dired-hide-details-update-invisibility-spec) + (if dired-hide-details-mode + (add-hook 'wdired-mode-hook + 'dired-hide-details-update-invisibility-spec + nil + t) + (remove-hook 'wdired-mode-hook + 'dired-hide-details-update-invisibility-spec + t))) + +(defun dired-hide-details-update-invisibility-spec () + (funcall (if dired-hide-details-mode + 'add-to-invisibility-spec + 'remove-from-invisibility-spec) + 'dired-hide-details-detail) + (funcall (if (and dired-hide-details-mode + dired-hide-details-hide-information-lines) + 'add-to-invisibility-spec + 'remove-from-invisibility-spec) + 'dired-hide-details-information) + (funcall (if (and dired-hide-details-mode + dired-hide-details-hide-symlink-targets + (not (derived-mode-p 'wdired-mode))) + 'add-to-invisibility-spec + 'remove-from-invisibility-spec) + 'dired-hide-details-link)) + ;;; Functions for finding the file name in a dired buffer line. (defvar dired-permission-flags-regexp @@ -3792,13 +3864,14 @@ Ask means pop up a menu for the user to select one of copy, move or link." ;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command ;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown ;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff -;;;;;; dired-diff) "dired-aux" "dired-aux.el" "066bb17769887a7fbc0490003f59e4b3") +;;;;;; dired-diff) "dired-aux" "dired-aux.el" "d6a694b6d13fa948465fde52a9ffb3ba") ;;; Generated autoloads from dired-aux.el (autoload 'dired-diff "dired-aux" "\ Compare file at point with file FILE using `diff'. If called interactively, prompt for FILE. If the file at point -has a backup file, use that as the default. If the mark is active +has a backup file, use that as the default. If the file at point +is a backup file, use its original. If the mark is active in Transient Mark mode, use the file at the mark as the default. \(That's the mark set by \\[set-mark-command], not by Dired's \\[dired-mark] command.) @@ -4295,7 +4368,7 @@ instead. ;;;*** ;;;### (autoloads (dired-do-relsymlink dired-jump-other-window dired-jump) -;;;;;; "dired-x" "dired-x.el" "cdaacce7c861256289ba48493dd6d0ec") +;;;;;; "dired-x" "dired-x.el" "90ba5245f6f5df3bdbda6303c725ef45") ;;; Generated autoloads from dired-x.el (autoload 'dired-jump "dired-x" "\ diff --git a/lisp/doc-view.el b/lisp/doc-view.el index fa54eef828d..0cfdc9a22d1 100644 --- a/lisp/doc-view.el +++ b/lisp/doc-view.el @@ -231,14 +231,37 @@ If this and `doc-view-dvipdfm-program' are set, :type 'file :group 'doc-view) -(defcustom doc-view-unoconv-program "unoconv" +(define-obsolete-variable-alias 'doc-view-unoconv-program + 'doc-view-odf->pdf-converter-program + "24.4") + +(defcustom doc-view-odf->pdf-converter-program + (cond + ((executable-find "soffice") "soffice") + ((executable-find "unoconv") "unoconv") + (t "soffice")) "Program to convert any file type readable by OpenOffice.org to PDF. Needed for viewing OpenOffice.org (and MS Office) files." - :version "24.1" + :version "24.4" :type 'file :group 'doc-view) +(defcustom doc-view-odf->pdf-converter-function + (cond + ((string-match "unoconv\\'" doc-view-odf->pdf-converter-program) + #'doc-view-odf->pdf-converter-unoconv) + ((string-match "soffice\\'" doc-view-odf->pdf-converter-program) + #'doc-view-odf->pdf-converter-soffice)) + "Function to call to convert a ODF file into a PDF file." + :type '(radio + (function-item doc-view-odf->pdf-converter-unoconv + :doc "Use unoconv") + (function-item doc-view-odf->pdf-converter-soffice + :doc "Use LibreOffice") + function) + :version "24.4") + (defcustom doc-view-ps2pdf-program "ps2pdf" "Program to convert PS files to PDF. @@ -367,6 +390,7 @@ Typically \"page-%s.png\".") (define-key map [remap forward-page] 'doc-view-next-page) (define-key map [remap backward-page] 'doc-view-previous-page) (define-key map (kbd "SPC") 'doc-view-scroll-up-or-next-page) + (define-key map (kbd "S-SPC") 'doc-view-scroll-down-or-previous-page) (define-key map (kbd "DEL") 'doc-view-scroll-down-or-previous-page) (define-key map (kbd "C-n") 'doc-view-next-line-or-next-page) (define-key map (kbd "<down>") 'doc-view-next-line-or-next-page) @@ -461,8 +485,7 @@ Typically \"page-%s.png\".") (defun doc-view-goto-page (page) "View the page given by PAGE." (interactive "nPage: ") - (let ((len (doc-view-last-page-number)) - (hscroll (window-hscroll))) + (let ((len (doc-view-last-page-number))) (if (< page 1) (setq page 1) (when (and (> page len) @@ -496,7 +519,6 @@ Typically \"page-%s.png\".") (format doc-view--image-file-pattern page) (doc-view-current-cache-dir)))) (doc-view-insert-image file :pointer 'arrow) - (set-window-hscroll (selected-window) hscroll) (when (and (not (file-exists-p file)) doc-view-current-converter-processes) ;; The PNG file hasn't been generated yet. @@ -663,7 +685,8 @@ It's a subdirectory of `doc-view-cache-directory'." (setq doc-view-current-cache-dir (file-name-as-directory (expand-file-name - (concat (file-name-nondirectory doc-view-buffer-file-name) + (concat (subst-char-in-string ?% ?_ ;; bug#13679 + (file-name-nondirectory doc-view-buffer-file-name)) "-" (let ((file doc-view-buffer-file-name)) (with-temp-buffer @@ -700,8 +723,8 @@ OpenDocument format)." (and doc-view-ghostscript-program (executable-find doc-view-ghostscript-program))) ((eq type 'odf) - (and doc-view-unoconv-program - (executable-find doc-view-unoconv-program) + (and doc-view-odf->pdf-converter-program + (executable-find doc-view-odf->pdf-converter-program) (doc-view-mode-p 'pdf))) ((eq type 'djvu) (executable-find "ddjvu")) @@ -903,14 +926,34 @@ If PAGE is nil, convert the whole document." ,@(if page `(,(format "%d" page)))) callback)) -(defun doc-view-odf->pdf (odf callback) +(defun doc-view-odf->pdf-converter-unoconv (odf callback) "Convert ODF to PDF asynchronously and call CALLBACK when finished. The converted PDF is put into the current cache directory, and it is named like ODF with the extension turned to pdf." - (doc-view-start-process "odf->pdf" doc-view-unoconv-program + (doc-view-start-process "odf->pdf" doc-view-odf->pdf-converter-program (list "-f" "pdf" "-o" (doc-view-current-cache-dir) odf) callback)) +(defun doc-view-odf->pdf-converter-soffice (odf callback) + "Convert ODF to PDF asynchronously and call CALLBACK when finished. +The converted PDF is put into the current cache directory, and it +is named like ODF with the extension turned to pdf." + ;; FIXME: soffice doesn't work when there's another running + ;; LibreOffice instance, in which case it returns success without + ;; actually doing anything. See LibreOffice bug + ;; https://bugs.freedesktop.org/show_bug.cgi?id=37531. A workaround + ;; is to start soffice with a separate UserInstallation directory. + (let ((tmp-user-install-dir (make-temp-file "libreoffice-docview" t))) + (doc-view-start-process "odf->pdf" doc-view-odf->pdf-converter-program + (list + (concat "-env:UserInstallation=file://" + tmp-user-install-dir) + "--headless" "--convert-to" "pdf" + "--outdir" (doc-view-current-cache-dir) odf) + (lambda () + (delete-directory tmp-user-install-dir t) + (funcall callback))))) + (defun doc-view-pdf/ps->png (pdf-ps png) ;; FIXME: Fix name and docstring to account for djvu&tiff. "Convert PDF-PS to PNG asynchronously." @@ -1058,7 +1101,7 @@ Those files are saved in the directory given by the function ;; The unoconv tool only supports an output directory, but no ;; file name. It's named like the input file with the ;; extension replaced by pdf. - (doc-view-odf->pdf doc-view-buffer-file-name + (funcall doc-view-odf->pdf-converter-function doc-view-buffer-file-name (lambda () ;; Rename to doc.pdf (rename-file opdf pdf) @@ -1265,6 +1308,8 @@ have the page we want to view." "[0-9]+") t) 'doc-view-sort)) + (unless (eq (length prev-pages) (length doc-view-current-files)) + (force-mode-line-update)) (dolist (win (or (get-buffer-window-list buffer nil t) (list t))) (let* ((page (doc-view-current-page win)) @@ -1334,8 +1379,6 @@ For now these keys are useful: (progn (doc-view-kill-proc) (setq buffer-read-only nil) - (remove-overlays (point-min) (point-max) 'doc-view t) - (setq-local image-mode-winprops-alist t) ;; Switch to the previously used major mode or fall back to ;; normal mode. (doc-view-fallback-mode) @@ -1678,6 +1721,7 @@ toggle between displaying the document or editing it as text. (mapcar (lambda (var) (cons var (symbol-value var))) '(doc-view-resolution image-mode-winprops-alist))))) + (remove-overlays (point-min) (point-max) 'doc-view t) (if doc-view-previous-major-mode (funcall doc-view-previous-major-mode) (let ((auto-mode-alist diff --git a/lisp/dos-w32.el b/lisp/dos-w32.el index 5866edfc3d6..d6788ffe028 100644 --- a/lisp/dos-w32.el +++ b/lisp/dos-w32.el @@ -37,7 +37,7 @@ ;; Set the null device (for compile.el). (setq null-device "NUL") -;; For distinguishing file types based upon suffixes. +;; For distinguishing file types based upon suffixes. DEPRECATED, DO NOT USE! (defcustom file-name-buffer-file-type-alist '(("[:/].*config.sys$" . nil) ; config.sys text ("\\.\\(obj\\|exe\\|com\\|lib\\|sys\\|bin\\|ico\\|pif\\|class\\)$" . t) @@ -54,36 +54,18 @@ ("\\.tp[ulpw]$" . t) ; borland Pascal stuff ("[:/]tags$" . nil) ; emacs TAGS file ) - "Alist for distinguishing text files from binary files. + "Alist used in the past for distinguishing text files from binary files. Each element has the form (REGEXP . TYPE), where REGEXP is matched -against the file name, and TYPE is nil for text, t for binary." +against the file name, and TYPE is nil for text, t for binary. + +This variable is deprecated, not used anywhere, and will soon be deleted." :type '(repeat (cons regexp boolean)) :group 'dos-fns :group 'w32) -;; Return the pair matching filename on file-name-buffer-file-type-alist, -;; or nil otherwise. -(defun find-buffer-file-type-match (filename) - (let ((alist file-name-buffer-file-type-alist) - (found nil)) - (let ((case-fold-search t)) - (setq filename (file-name-sans-versions filename)) - (while (and (not found) alist) - (if (string-match (car (car alist)) filename) - (setq found (car alist))) - (setq alist (cdr alist))) - found))) - -;; Don't check for untranslated file systems here. -(defun find-buffer-file-type (filename) - (let ((match (find-buffer-file-type-match filename)) - (code)) - (if (not match) - (default-value 'buffer-file-type) - (setq code (cdr match)) - (cond ((memq code '(nil t)) code) - ((and (symbolp code) (fboundp code)) - (funcall code filename)))))) +(make-obsolete-variable 'file-name-buffer-file-type-alist + 'file-coding-system-alist + "24.4") (setq-default buffer-file-coding-system 'undecided-dos) @@ -99,9 +81,6 @@ and whether the file exists: If it matches in `untranslated-filesystem-list': If the file exists: `undecided' If the file does not exist: `undecided-unix' - If it matches in `file-name-buffer-file-type-alist': - If the match is t (for binary): `no-conversion' - If the match is nil (for dos-text): `undecided-dos' Otherwise: If the file exists: `undecided' If the file does not exist default value of `buffer-file-coding-system' @@ -110,25 +89,23 @@ Note that the CAR of arguments to `insert-file-contents' operation could be a cons cell of the form \(FILENAME . BUFFER\), where BUFFER is a buffer into which the file's contents were already read, but not yet decoded. -If operation is `write-region', the coding system is chosen based upon -the value of `buffer-file-coding-system' and `buffer-file-type'. If -`buffer-file-coding-system' is non-nil, its value is used. If it is -nil and `buffer-file-type' is t, the coding system is `no-conversion'. +If operation is `write-region', the coding system is chosen based +upon the value of `buffer-file-coding-system'. If +`buffer-file-coding-system' is non-nil, its value is used. Otherwise, it is `undecided-dos'. -The two most common situations are when DOS and Unix files are read -and written, and their names do not match in -`untranslated-filesystem-list' and `file-name-buffer-file-type-alist'. -In these cases, the coding system initially will be `undecided'. As -the file is read in the DOS case, the coding system will be changed to -`undecided-dos' as CR/LFs are detected. As the file is read in the -Unix case, the coding system will be changed to `undecided-unix' as -LFs are detected. In both cases, `buffer-file-coding-system' will be -set to the appropriate coding system, and the value of -`buffer-file-coding-system' will be used when writing the file." +The most common situation is when DOS and Unix files are read and +written, and their names do not match in `untranslated-filesystem-list'. +In these cases, the coding system initially will be `undecided'. +As the file is read in the DOS case, the coding system will be +changed to `undecided-dos' as CR/LFs are detected. As the file +is read in the Unix case, the coding system will be changed to +`undecided-unix' as LFs are detected. In both cases, +`buffer-file-coding-system' will be set to the appropriate coding +system, and the value of `buffer-file-coding-system' will be used +when writing the file." (let ((op (nth 0 command)) - (binary nil) (text nil) (undecided nil) (undecided-unix nil) target target-buf) (cond ((eq op 'insert-file-contents) @@ -144,15 +121,8 @@ set to the appropriate coding system, and the value of (and (bufferp (cdr target)) (buffer-name (cdr target)))) (setq target (car target))) - ;; First check for a file name that indicates - ;; it is truly binary. - (setq binary (find-buffer-file-type target)) - (cond (binary) - ;; Next check for files that MUST use DOS eol conversion. - ((find-buffer-file-type-match target) - (setq text t)) - ;; For any other existing file, decide based on contents. - ((or + (cond ((or + ;; For any existing file, decide based on contents. (file-exists-p target) ;; If TARGET does not exist as a file, replace its ;; base name with TARGET-BUF and try again. This @@ -167,9 +137,7 @@ set to the appropriate coding system, and the value of ;; Next check for a non-DOS file system. ((untranslated-file-p target) (setq undecided-unix t))) - (cond (binary '(no-conversion . no-conversion)) - (text '(undecided-dos . undecided-dos)) - (undecided-unix '(undecided-unix . undecided-unix)) + (cond (undecided-unix '(undecided-unix . undecided-unix)) (undecided '(undecided . undecided)) (t (cons (default-value 'buffer-file-coding-system) (default-value 'buffer-file-coding-system))))) @@ -180,22 +148,18 @@ set to the appropriate coding system, and the value of ;; Normally this is used only in a non-file-visiting ;; buffer, because normally buffer-file-coding-system is non-nil ;; in a file-visiting buffer. - (if buffer-file-type - '(no-conversion . no-conversion) - '(undecided-dos . undecided-dos))))))) - -(modify-coding-system-alist 'file "" 'find-buffer-file-type-coding-system) + '(undecided-dos . undecided-dos)))))) (defun find-file-binary (filename) "Visit file FILENAME and treat it as binary." (interactive "FFind file binary: ") - (let ((file-name-buffer-file-type-alist '(("" . t)))) + (let ((coding-system-for-read 'no-conversion)) (find-file filename))) (defun find-file-text (filename) "Visit file FILENAME and treat it as a text file." (interactive "FFind file text: ") - (let ((file-name-buffer-file-type-alist '(("" . nil)))) + (let ((coding-system-for-read 'undecided-dos)) (find-file filename))) (defun find-file-not-found-set-buffer-file-coding-system () diff --git a/lisp/ehelp.el b/lisp/ehelp.el index 416666f918c..88fc87b5b7a 100644 --- a/lisp/ehelp.el +++ b/lisp/ehelp.el @@ -80,6 +80,7 @@ (define-key map (char-to-string help-char) 'electric-help-help) (define-key map "?" 'electric-help-help) (define-key map " " 'scroll-up) + (define-key map [?\S-\ ] 'scroll-down) (define-key map "\^?" 'scroll-down) (define-key map "." 'beginning-of-buffer) (define-key map "<" 'beginning-of-buffer) diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el index b44ec68e2bf..48bcefaee1a 100644 --- a/lisp/emacs-lisp/byte-run.el +++ b/lisp/emacs-lisp/byte-run.el @@ -392,15 +392,15 @@ If you think you need this, you're probably making a mistake somewhere." Thus, the result of the body appears to the compiler as a quoted constant. In interpreted code, this is entirely equivalent to `progn'." (declare (debug t) (indent 0)) - ;; Not necessary because we have it in b-c-initial-macro-environment - ;; (list 'quote (eval (cons 'progn body))) - (cons 'progn body)) + (list 'quote (eval (cons 'progn body) lexical-binding))) (defmacro eval-and-compile (&rest body) "Like `progn', but evaluates the body at compile time and at load time." (declare (debug t) (indent 0)) - ;; Remember, it's magic. - (cons 'progn body)) + ;; When the byte-compiler expands code, this macro is not used, so we're + ;; either about to run `body' (plain interpretation) or we're doing eager + ;; macroexpansion. + (list 'quote (eval (cons 'progn body) lexical-binding))) (put 'with-no-warnings 'lisp-indent-function 0) (defun with-no-warnings (&rest body) diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 4e002cfc8cb..5db1793a407 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -1594,7 +1594,9 @@ that already has a `.elc' file." (setq directories (nconc directories (list source)))) ;; It is an ordinary file. Decide whether to compile it. (if (and (string-match emacs-lisp-file-regexp source) + ;; The next 2 tests avoid compiling lock files (file-readable-p source) + (not (string-match "\\`\\.#" file)) (not (auto-save-file-name-p source)) (not (string-equal dir-locals-file (file-name-nondirectory source)))) @@ -1675,6 +1677,9 @@ If compilation is needed, this functions returns the result of (load (if (file-exists-p dest) dest filename))) 'no-byte-compile))) +(defvar byte-compile-level 0 ; bug#13787 + "Depth of a recursive byte compilation.") + ;;;###autoload (defun byte-compile-file (filename &optional load) "Compile a file of Lisp code named FILENAME into a file of byte code. @@ -1717,7 +1722,13 @@ The value is non-nil if there were no errors, nil if errors." (setq target-file (byte-compile-dest-file filename)) (setq byte-compile-dest-file target-file) (with-current-buffer - (setq input-buffer (get-buffer-create " *Compiler Input*")) + ;; It would be cleaner to use a temp buffer, but if there was + ;; an error, we leave this buffer around for diagnostics. + ;; Its name is documented in the lispref. + (setq input-buffer (get-buffer-create + (concat " *Compiler Input*" + (if (zerop byte-compile-level) "" + (format "-%s" byte-compile-level))))) (erase-buffer) (setq buffer-file-coding-system nil) ;; Always compile an Emacs Lisp file as multibyte @@ -1775,7 +1786,8 @@ The value is non-nil if there were no errors, nil if errors." ;; within byte-compile-from-buffer lingers in that buffer. (setq output-buffer (save-current-buffer - (byte-compile-from-buffer input-buffer))) + (let ((byte-compile-level (1+ byte-compile-level))) + (byte-compile-from-buffer input-buffer)))) (if byte-compiler-error-flag nil (when byte-compile-verbose @@ -1795,8 +1807,6 @@ The value is non-nil if there were no errors, nil if errors." (kill-emacs-hook (cons (lambda () (ignore-errors (delete-file tempfile))) kill-emacs-hook))) - (if (memq system-type '(ms-dos 'windows-nt)) - (setq buffer-file-type t)) (write-region (point-min) (point-max) tempfile nil 1) ;; This has the intentional side effect that any ;; hard-links to target-file continue to @@ -1883,7 +1893,10 @@ With argument ARG, insert value in current buffer after the form." (byte-compile-close-variables (with-current-buffer (setq byte-compile--outbuffer - (get-buffer-create " *Compiler Output*")) + (get-buffer-create + (concat " *Compiler Output*" + (if (<= byte-compile-level 1) "" + (format "-%s" (1- byte-compile-level)))))) (set-buffer-multibyte t) (erase-buffer) ;; (emacs-lisp-mode) diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el index 2de8260c941..f3bf70b0190 100644 --- a/lisp/emacs-lisp/cl-lib.el +++ b/lisp/emacs-lisp/cl-lib.el @@ -271,11 +271,7 @@ so that they are registered at compile-time as well as run-time." ;;; Numbers. -(defun cl-floatp-safe (object) - "Return t if OBJECT is a floating point number. -On Emacs versions that lack floating-point support, this function -always returns nil." - (and (numberp object) (not (integerp object)))) +(define-obsolete-function-alias 'cl-floatp-safe 'floatp "24.4") (defsubst cl-plusp (number) "Return t if NUMBER is positive." diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el index 734975f7f11..8ab2abec67e 100644 --- a/lisp/emacs-lisp/cl-loaddefs.el +++ b/lisp/emacs-lisp/cl-loaddefs.el @@ -267,7 +267,7 @@ including `cl-block' and `cl-eval-when'. ;;;;;; cl-typecase cl-ecase cl-case cl-load-time-value cl-eval-when ;;;;;; cl-destructuring-bind cl-function cl-defmacro cl-defun cl-gentemp ;;;;;; cl-gensym cl--compiler-macro-cXXr cl--compiler-macro-list*) -;;;;;; "cl-macs" "cl-macs.el" "3b4d4e869f81f0b07ab3aa08f5478c2e") +;;;;;; "cl-macs" "cl-macs.el" "8a90c81a400a2846e7b4c3da07626d94") ;;; Generated autoloads from cl-macs.el (autoload 'cl--compiler-macro-list* "cl-macs" "\ diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index b63086d7a5f..e9cc200baaa 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -2520,7 +2520,7 @@ The type name can then be used in `cl-typecase', `cl-check-type', etc." ((memq type '(nil t)) type) ((eq type 'null) `(null ,val)) ((eq type 'atom) `(atom ,val)) - ((eq type 'float) `(cl-floatp-safe ,val)) + ((eq type 'float) `(floatp ,val)) ((eq type 'real) `(numberp ,val)) ((eq type 'fixnum) `(integerp ,val)) ;; FIXME: Should `character' accept things like ?\C-\M-a ? --Stef @@ -2739,7 +2739,7 @@ surrounded by (cl-block NAME ...). (cond ((eq test 'eq) `(assq ,a ,list)) ((eq test 'equal) `(assoc ,a ,list)) ((and (macroexp-const-p a) (or (null keys) (eq test 'eql))) - (if (cl-floatp-safe (cl--const-expr-val a)) + (if (floatp (cl--const-expr-val a)) `(assoc ,a ,list) `(assq ,a ,list))) (t form)))) @@ -2776,7 +2776,7 @@ surrounded by (cl-block NAME ...). (put y 'side-effect-free t)) ;;; Things that are inline. -(cl-proclaim '(inline cl-floatp-safe cl-acons cl-map cl-concatenate cl-notany +(cl-proclaim '(inline cl-acons cl-map cl-concatenate cl-notany cl-notevery cl--set-elt cl-revappend cl-nreconc gethash)) ;;; Things that are side-effect-free. @@ -2787,7 +2787,7 @@ surrounded by (cl-block NAME ...). ;;; Things that are side-effect-and-error-free. (mapc (lambda (x) (put x 'side-effect-free 'error-free)) - '(eql cl-floatp-safe cl-list* cl-subst cl-acons cl-equalp + '(eql cl-list* cl-subst cl-acons cl-equalp cl-random-state-p copy-tree cl-sublis)) diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el index 6942a9cfff9..ea4d9511f9d 100644 --- a/lisp/emacs-lisp/cl.el +++ b/lisp/emacs-lisp/cl.el @@ -689,6 +689,7 @@ You can replace this macro with `gv-letplace'." 'cl--map-keymap-recursively "24.3") (define-obsolete-function-alias 'cl-map-intervals 'cl--map-intervals "24.3") (define-obsolete-function-alias 'cl-map-extents 'cl--map-overlays "24.3") +(define-obsolete-function-alias 'cl-set-getf 'cl--set-getf "24.3") (defun cl-maclisp-member (item list) (declare (obsolete member "24.3")) diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index 9173d148c6a..abe7b1ea741 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -132,13 +132,14 @@ BODY contains code to execute each time the mode is enabled or disabled. :require SYM Same as in `defcustom'. :variable PLACE The location to use instead of the variable MODE to store the state of the mode. This can be simply a different - named variable, or more generally anything that can be used - with the CL macro `setf'. PLACE can also be of the form - \(GET . SET), where GET is an expression that returns the - current state, and SET is a function that takes one argument, - the new state, and sets it. If you specify a :variable, - this function does not define a MODE variable (nor any of - the terms used in :variable). + named variable, or a generalized variable. + PLACE can also be of the form \(GET . SET), where GET is + an expression that returns the current state, and SET is + a function that takes one argument, the new state, and + sets it. If you specify a :variable, this function does + not define a MODE variable (nor any of the terms used + in :variable). + :after-hook A single lisp form which is evaluated after the mode hooks have been run. It should not be quoted. @@ -340,9 +341,14 @@ If MODE's set-up depends on the major mode in effect when it was enabled, then disabling and reenabling MODE should make MODE work correctly with the current major mode. This is important to prevent problems with derived modes, that is, major modes that -call another major mode in their body." +call another major mode in their body. + +When a major mode is initialized, MODE is actually turned on just +after running the major mode's hook. However, MODE is not turned +on if the hook has explicitly disabled it." (declare (doc-string 2)) (let* ((global-mode-name (symbol-name global-mode)) + (mode-name (symbol-name mode)) (pretty-name (easy-mmode-pretty-mode-name mode)) (pretty-global-name (easy-mmode-pretty-mode-name global-mode)) (group nil) @@ -353,6 +359,8 @@ call another major mode in their body." (MODE-check-buffers (intern (concat global-mode-name "-check-buffers"))) (MODE-cmhh (intern (concat global-mode-name "-cmhh"))) + (minor-MODE-hook (intern (concat mode-name "-hook"))) + (MODE-set-explicitly (intern (concat mode-name "-set-explicitly"))) (MODE-major-mode (intern (concat (symbol-name mode) "-major-mode"))) keyw) @@ -396,13 +404,9 @@ See `%s' for more information on %s." (progn (add-hook 'after-change-major-mode-hook ',MODE-enable-in-buffers) - (add-hook 'change-major-mode-after-body-hook - ',MODE-enable-in-buffers) (add-hook 'find-file-hook ',MODE-check-buffers) (add-hook 'change-major-mode-hook ',MODE-cmhh)) (remove-hook 'after-change-major-mode-hook ',MODE-enable-in-buffers) - (remove-hook 'change-major-mode-after-body-hook - ',MODE-enable-in-buffers) (remove-hook 'find-file-hook ',MODE-check-buffers) (remove-hook 'change-major-mode-hook ',MODE-cmhh)) @@ -415,6 +419,10 @@ See `%s' for more information on %s." ;; up-to-here. :autoload-end + ;; A function which checks whether MODE has been disabled in the major + ;; mode hook which has just been run. + (add-hook ',minor-MODE-hook ',MODE-set-explicitly) + ;; List of buffers left to process. (defvar ,MODE-buffers nil) @@ -423,14 +431,14 @@ See `%s' for more information on %s." (dolist (buf ,MODE-buffers) (when (buffer-live-p buf) (with-current-buffer buf - (unless (eq ,MODE-major-mode major-mode) - (if ,mode - (progn - (,mode -1) - (,turn-on) - (setq ,MODE-major-mode major-mode)) - (,turn-on) - (setq ,MODE-major-mode major-mode))))))) + (unless ,MODE-set-explicitly + (unless (eq ,MODE-major-mode major-mode) + (if ,mode + (progn + (,mode -1) + (,turn-on)) + (,turn-on)))) + (setq ,MODE-major-mode major-mode))))) (put ',MODE-enable-in-buffers 'definition-name ',global-mode) (defun ,MODE-check-buffers () @@ -443,24 +451,21 @@ See `%s' for more information on %s." (defun ,MODE-cmhh () (add-to-list ',MODE-buffers (current-buffer)) (add-hook 'post-command-hook ',MODE-check-buffers)) - (put ',MODE-cmhh 'definition-name ',global-mode)))) + (put ',MODE-cmhh 'definition-name ',global-mode) + ;; MODE-set-explicitly is set in MODE-set-explicitly and cleared by + ;; kill-all-local-variables. + (defvar-local ,MODE-set-explicitly nil) + (defun ,MODE-set-explicitly () + (setq ,MODE-set-explicitly t)) + (put ',MODE-set-explicitly 'definition-name ',global-mode)))) ;;; ;;; easy-mmode-defmap ;;; -(eval-and-compile - (if (fboundp 'set-keymap-parents) - (defalias 'easy-mmode-set-keymap-parents 'set-keymap-parents) - (defun easy-mmode-set-keymap-parents (m parents) - (set-keymap-parent - m - (cond - ((not (consp parents)) parents) - ((not (cdr parents)) (car parents)) - (t (let ((m (copy-keymap (pop parents)))) - (easy-mmode-set-keymap-parents m parents) - m))))))) +(defun easy-mmode-set-keymap-parents (m parents) + (set-keymap-parent + m (if (cdr parents) (make-composed-keymap parents) (car parents)))) ;;;###autoload (defun easy-mmode-define-keymap (bs &optional name m args) diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el index 24d680181bb..c8ae3f4bf1a 100644 --- a/lisp/emacs-lisp/eieio-base.el +++ b/lisp/emacs-lisp/eieio-base.el @@ -65,19 +65,19 @@ SLOT-NAME is the offending slot. FN is the function signaling the error." "Clone OBJ, initializing `:parent' to OBJ. All slots are unbound, except those initialized with PARAMS." (let ((nobj (make-vector (length obj) eieio-unbound)) - (nm (aref obj object-name)) + (nm (eieio--object-name obj)) (passname (and params (stringp (car params)))) (num 1)) (aset nobj 0 'object) - (aset nobj object-class (aref obj object-class)) + (setf (eieio--object-class nobj) (eieio--object-class obj)) ;; The following was copied from the default clone. (if (not passname) (save-match-data (if (string-match "-\\([0-9]+\\)" nm) (setq num (1+ (string-to-number (match-string 1 nm))) nm (substring nm 0 (match-beginning 0)))) - (aset nobj object-name (concat nm "-" (int-to-string num)))) - (aset nobj object-name (car params))) + (setf (eieio--object-name nobj) (concat nm "-" (int-to-string num)))) + (setf (eieio--object-name nobj) (car params))) ;; Now initialize from params. (if params (shared-initialize nobj (if passname (cdr params) params))) (oset nobj parent-instance obj) @@ -232,8 +232,7 @@ for CLASS. Optional ALLOW-SUBCLASS says that it is ok for being pedantic." (unless class (message "Unsafe call to `eieio-persistent-read'.")) - (when (and class (not (class-p class))) - (signal 'wrong-type-argument (list 'class-p class))) + (when class (eieio--check-type class-p class)) (let ((ret nil) (buffstr nil)) (unwind-protect @@ -308,7 +307,7 @@ Second, any text properties will be stripped from strings." (type nil) (classtype nil)) (setq slot-idx (- slot-idx 3)) - (setq type (aref (aref (class-v class) class-public-type) + (setq type (aref (eieio--class-public-type (class-v class)) slot-idx)) (setq classtype (eieio-persistent-slot-type-is-class-p @@ -482,14 +481,13 @@ Argument SLOT-NAME is the slot that was attempted to be accessed. OPERATION is the type of access, such as `oref' or `oset'. NEW-VALUE is the value that was being set into SLOT if OPERATION were a set type." - (if (or (eq slot-name 'object-name) - (eq slot-name :object-name)) + (if (memq slot-name '(object-name :object-name)) (cond ((eq operation 'oset) (if (not (stringp new-value)) (signal 'invalid-slot-type (list obj slot-name 'string new-value))) - (object-set-name-string obj new-value)) - (t (object-name-string obj))) + (eieio-object-set-name-string obj new-value)) + (t (eieio-object-name-string obj))) (call-next-method))) (provide 'eieio-base) diff --git a/lisp/emacs-lisp/eieio-custom.el b/lisp/emacs-lisp/eieio-custom.el index 46dc34d6d45..f9917bddd42 100644 --- a/lisp/emacs-lisp/eieio-custom.el +++ b/lisp/emacs-lisp/eieio-custom.el @@ -192,22 +192,22 @@ Optional argument IGNORE is an extraneous parameter." (let* ((chil nil) (obj (widget-get widget :value)) (master-group (widget-get widget :eieio-group)) - (cv (class-v (object-class-fast obj))) - (slots (aref cv class-public-a)) - (flabel (aref cv class-public-custom-label)) - (fgroup (aref cv class-public-custom-group)) - (fdoc (aref cv class-public-doc)) - (fcust (aref cv class-public-custom))) + (cv (class-v (eieio--object-class obj))) + (slots (eieio--class-public-a cv)) + (flabel (eieio--class-public-custom-label cv)) + (fgroup (eieio--class-public-custom-group cv)) + (fdoc (eieio--class-public-doc cv)) + (fcust (eieio--class-public-custom cv))) ;; First line describes the object, but may not editable. (if (widget-get widget :eieio-show-name) (setq chil (cons (widget-create-child-and-convert widget 'string :tag "Object " :sample-face 'bold - (object-name-string obj)) + (eieio-object-name-string obj)) chil))) ;; Display information about the group being shown (when master-group - (let ((groups (class-option (object-class-fast obj) :custom-groups))) + (let ((groups (class-option (eieio--object-class obj) :custom-groups))) (widget-insert "Groups:") (while groups (widget-insert " ") @@ -260,7 +260,7 @@ Optional argument IGNORE is an extraneous parameter." (let ((s (symbol-name (or (class-slot-initarg - (object-class-fast obj) + (eieio--object-class obj) (car slots)) (car slots))))) (capitalize @@ -287,17 +287,17 @@ Optional argument IGNORE is an extraneous parameter." "Get the value of WIDGET." (let* ((obj (widget-get widget :value)) (master-group eieio-cog) - (cv (class-v (object-class-fast obj))) - (fgroup (aref cv class-public-custom-group)) + (cv (class-v (eieio--object-class obj))) + (fgroup (eieio--class-public-custom-group cv)) (wids (widget-get widget :children)) (name (if (widget-get widget :eieio-show-name) (car (widget-apply (car wids) :value-inline)) nil)) (chil (if (widget-get widget :eieio-show-name) (nthcdr 1 wids) wids)) - (cv (class-v (object-class-fast obj))) - (slots (aref cv class-public-a)) - (fcust (aref cv class-public-custom))) + (cv (class-v (eieio--object-class obj))) + (slots (eieio--class-public-a cv)) + (fcust (eieio--class-public-custom cv))) ;; If there are any prefix widgets, clear them. ;; -- None yet ;; Create a batch of initargs for each slot. @@ -316,7 +316,7 @@ Optional argument IGNORE is an extraneous parameter." fgroup (cdr fgroup) fcust (cdr fcust))) ;; Set any name updates on it. - (if name (aset obj object-name name)) + (if name (setf (eieio--object-name obj) name)) ;; This is the same object we had before. obj)) @@ -354,7 +354,7 @@ These groups are specified with the `:group' slot flag." (let* ((g (or group 'default))) (switch-to-buffer (get-buffer-create (concat "*CUSTOMIZE " - (object-name obj) " " + (eieio-object-name obj) " " (symbol-name g) "*"))) (setq buffer-read-only nil) (kill-all-local-variables) @@ -367,7 +367,7 @@ These groups are specified with the `:group' slot flag." ;; Add an apply reset option at the top of the buffer. (eieio-custom-object-apply-reset obj) (widget-insert "\n\n") - (widget-insert "Edit object " (object-name obj) "\n\n") + (widget-insert "Edit object " (eieio-object-name obj) "\n\n") ;; Create the widget editing the object. (make-local-variable 'eieio-wo) (setq eieio-wo (eieio-custom-widget-insert obj :eieio-group g)) @@ -452,7 +452,7 @@ Must return the created widget." (vector (concat "Group " (symbol-name group)) (list 'customize-object obj (list 'quote group)) t)) - (class-option (object-class-fast obj) :custom-groups))) + (class-option (eieio--object-class obj) :custom-groups))) (defvar eieio-read-custom-group-history nil "History for the custom group reader.") @@ -460,7 +460,7 @@ Must return the created widget." (defmethod eieio-read-customization-group ((obj eieio-default-superclass)) "Do a completing read on the name of a customization group in OBJ. Return the symbol for the group, or nil" - (let ((g (class-option (object-class-fast obj) :custom-groups))) + (let ((g (class-option (eieio--object-class obj) :custom-groups))) (if (= (length g) 1) (car g) ;; Make the association list diff --git a/lisp/emacs-lisp/eieio-datadebug.el b/lisp/emacs-lisp/eieio-datadebug.el index e23bbb07fe2..7daa24257a1 100644 --- a/lisp/emacs-lisp/eieio-datadebug.el +++ b/lisp/emacs-lisp/eieio-datadebug.el @@ -58,9 +58,9 @@ PREBUTTONTEXT is some text between PREFIX and the object button." (end nil) (str (object-print object)) (tip (format "Object %s\nClass: %S\nParent(s): %S\n%d slots" - (object-name-string object) - (object-class object) - (class-parents (object-class object)) + (eieio-object-name-string object) + (eieio-object-class object) + (eieio-class-parents (eieio-object-class object)) (length (object-slots object)) )) ) @@ -82,16 +82,16 @@ PREBUTTONTEXT is some text between PREFIX and the object button." (defmethod data-debug/eieio-insert-slots ((obj eieio-default-superclass) prefix) "Insert the slots of OBJ into the current DDEBUG buffer." - (data-debug-insert-thing (object-name-string obj) + (data-debug-insert-thing (eieio-object-name-string obj) prefix "Name: ") - (let* ((cl (object-class obj)) + (let* ((cl (eieio-object-class obj)) (cv (class-v cl))) (data-debug-insert-thing (class-constructor cl) prefix "Class: ") ;; Loop over all the public slots - (let ((publa (aref cv class-public-a)) + (let ((publa (eieio--class-public-a cv)) ) (while publa (if (slot-boundp obj (car publa)) @@ -123,7 +123,7 @@ PREBUTTONTEXT is some text between PREFIX and the object button." ;; (defmethod data-debug-show ((obj eieio-default-superclass)) "Run ddebug against any EIEIO object OBJ." - (data-debug-new-buffer (format "*%s DDEBUG*" (object-name obj))) + (data-debug-new-buffer (format "*%s DDEBUG*" (eieio-object-name obj))) (data-debug-insert-object-slots obj "]")) ;;; DEBUG FUNCTIONS diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el index 8867d88cc3a..29ad980991b 100644 --- a/lisp/emacs-lisp/eieio-opt.el +++ b/lisp/emacs-lisp/eieio-opt.el @@ -45,7 +45,7 @@ variable `eieio-default-superclass'." nil t))) nil)) (if (not root-class) (setq root-class 'eieio-default-superclass)) - (if (not (class-p root-class)) (signal 'wrong-type-argument (list 'class-p root-class))) + (eieio--check-type class-p root-class) (display-buffer (get-buffer-create "*EIEIO OBJECT BROWSE*") t) (with-current-buffer (get-buffer "*EIEIO OBJECT BROWSE*") (erase-buffer) @@ -58,9 +58,9 @@ variable `eieio-default-superclass'." Argument THIS-ROOT is the local root of the tree. Argument PREFIX is the character prefix to use. Argument CH-PREFIX is another character prefix to display." - (if (not (class-p (eval this-root))) (signal 'wrong-type-argument (list 'class-p this-root))) + (eieio--check-type class-p this-root) (let ((myname (symbol-name this-root)) - (chl (aref (class-v this-root) class-children)) + (chl (eieio--class-children (class-v this-root))) (fprefix (concat ch-prefix " +--")) (mprefix (concat ch-prefix " | ")) (lprefix (concat ch-prefix " "))) @@ -99,7 +99,7 @@ Optional HEADERFCN should be called to insert a few bits of info first." (princ "'")) (terpri) ;; Inheritance tree information - (let ((pl (class-parents class))) + (let ((pl (eieio-class-parents class))) (when pl (princ " Inherits from ") (while pl @@ -107,7 +107,7 @@ Optional HEADERFCN should be called to insert a few bits of info first." (setq pl (cdr pl)) (if pl (princ ", "))) (terpri))) - (let ((ch (class-children class))) + (let ((ch (eieio-class-children class))) (when ch (princ " Children ") (while ch @@ -177,13 +177,13 @@ Optional HEADERFCN should be called to insert a few bits of info first." "Describe the slots in CLASS. Outputs to the standard output." (let* ((cv (class-v class)) - (docs (aref cv class-public-doc)) - (names (aref cv class-public-a)) - (deflt (aref cv class-public-d)) - (types (aref cv class-public-type)) - (publp (aref cv class-public-printer)) + (docs (eieio--class-public-doc cv)) + (names (eieio--class-public-a cv)) + (deflt (eieio--class-public-d cv)) + (types (eieio--class-public-type cv)) + (publp (eieio--class-public-printer cv)) (i 0) - (prot (aref cv class-protection)) + (prot (eieio--class-protection cv)) ) (princ "Instance Allocated Slots:") (terpri) @@ -213,11 +213,11 @@ Outputs to the standard output." publp (cdr publp) prot (cdr prot) i (1+ i))) - (setq docs (aref cv class-class-allocation-doc) - names (aref cv class-class-allocation-a) - types (aref cv class-class-allocation-type) + (setq docs (eieio--class-class-allocation-doc cv) + names (eieio--class-class-allocation-a cv) + types (eieio--class-class-allocation-type cv) i 0 - prot (aref cv class-class-allocation-protection)) + prot (eieio--class-class-allocation-protection cv)) (when names (terpri) (princ "Class Allocated Slots:")) @@ -281,7 +281,7 @@ Uses `eieio-describe-class' to describe the class being constructed." (mapcar (lambda (c) (append (list c) (eieio-build-class-list c))) - (class-children-fast class))) + (eieio-class-children-fast class))) (list class))) (defun eieio-build-class-alist (&optional class instantiable-only buildlist) @@ -291,7 +291,7 @@ If INSTANTIABLE-ONLY is non nil, only allow names of classes which are not abstract, otherwise allow all classes. Optional argument BUILDLIST is more list to attach and is used internally." (let* ((cc (or class eieio-default-superclass)) - (sublst (aref (class-v cc) class-children))) + (sublst (eieio--class-children (class-v cc)))) (unless (assoc (symbol-name cc) buildlist) (when (or (not instantiable-only) (not (class-abstract-p cc))) (setq buildlist (cons (cons (symbol-name cc) 1) buildlist)))) @@ -335,8 +335,7 @@ are not abstract." "Describe the generic function GENERIC. Also extracts information about all methods specific to this generic." (interactive (list (eieio-read-generic "Generic Method: "))) - (if (not (generic-p generic)) - (signal 'wrong-type-argument '(generic-p generic))) + (eieio--check-type generic-p generic) (with-output-to-temp-buffer (help-buffer) ; "*Help*" (help-setup-xref (list #'eieio-describe-generic generic) (called-interactively-p 'interactive)) @@ -757,9 +756,8 @@ current expansion depth." (defun eieio-class-button (class depth) "Draw a speedbar button at the current point for CLASS at DEPTH." - (if (not (class-p class)) - (signal 'wrong-type-argument (list 'class-p class))) - (let ((subclasses (aref (class-v class) class-children))) + (eieio--check-type class-p class) + (let ((subclasses (eieio--class-children (class-v class)))) (if subclasses (speedbar-make-tag-line 'angle ?+ 'eieio-sb-expand @@ -784,7 +782,7 @@ Argument INDENT is the depth of indentation." (speedbar-with-writable (save-excursion (end-of-line) (forward-char 1) - (let ((subclasses (aref (class-v class) class-children))) + (let ((subclasses (eieio--class-children (class-v class)))) (while subclasses (eieio-class-button (car subclasses) (1+ indent)) (setq subclasses (cdr subclasses))))))) diff --git a/lisp/emacs-lisp/eieio-speedbar.el b/lisp/emacs-lisp/eieio-speedbar.el index 27c7d01f3b8..c230226eae4 100644 --- a/lisp/emacs-lisp/eieio-speedbar.el +++ b/lisp/emacs-lisp/eieio-speedbar.el @@ -198,7 +198,7 @@ that path." (defmethod eieio-speedbar-description (object) "Return a string describing OBJECT." - (object-name-string object)) + (eieio-object-name-string object)) (defmethod eieio-speedbar-derive-line-path (object) "Return the path which OBJECT has something to do with." @@ -206,7 +206,7 @@ that path." (defmethod eieio-speedbar-object-buttonname (object) "Return a string to use as a speedbar button for OBJECT." - (object-name-string object)) + (eieio-object-name-string object)) (defmethod eieio-speedbar-make-tag-line (object depth) "Insert a tag line into speedbar at point for OBJECT. @@ -324,7 +324,7 @@ Argument DEPTH is the depth at which the tag line is inserted." (defmethod eieio-speedbar-child-make-tag-lines ((object eieio-speedbar) depth) "Base method for creating tag lines for non-object children." (error "You must implement `eieio-speedbar-child-make-tag-lines' for %s" - (object-name object))) + (eieio-object-name object))) (defmethod eieio-speedbar-expand ((object eieio-speedbar) depth) "Expand OBJECT at indentation DEPTH. @@ -365,7 +365,7 @@ TOKEN is the object. INDENT is the current indentation level." (defmethod eieio-speedbar-child-description ((obj eieio-speedbar)) "Return a description for a child of OBJ which is not an object." (error "You must implement `eieio-speedbar-child-description' for %s" - (object-name obj))) + (eieio-object-name obj))) (defun eieio-speedbar-item-info () "Display info for the current line when in EDE display mode." diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el index 7a22e1222c9..37b1ec5fa94 100644 --- a/lisp/emacs-lisp/eieio.el +++ b/lisp/emacs-lisp/eieio.el @@ -4,7 +4,7 @@ ;; Copyright (C) 1995-1996, 1998-2013 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam <zappo@gnu.org> -;; Version: 1.3 +;; Version: 1.4 ;; Keywords: OO, lisp ;; This file is part of GNU Emacs. @@ -46,7 +46,7 @@ (eval-when-compile (require 'cl)) ;FIXME: Use cl-lib! -(defvar eieio-version "1.3" +(defvar eieio-version "1.4" "Current version of EIEIO.") (defun eieio-version () @@ -105,49 +105,67 @@ default setting for optimization purposes.") ;; This is a bootstrap for eieio-default-superclass so it has a value ;; while it is being built itself. -(defvar eieio-default-superclass nil) - -;; FIXME: The constants below should have an `eieio-' prefix added!! -(defconst class-symbol 1 "Class's symbol (self-referencing.).") -(defconst class-parent 2 "Class parent slot.") -(defconst class-children 3 "Class children class slot.") -(defconst class-symbol-obarray 4 "Obarray permitting fast access to variable position indexes.") -;; @todo -;; the word "public" here is leftovers from the very first version. -;; Get rid of it! -(defconst class-public-a 5 "Class attribute index.") -(defconst class-public-d 6 "Class attribute defaults index.") -(defconst class-public-doc 7 "Class documentation strings for attributes.") -(defconst class-public-type 8 "Class type for a slot.") -(defconst class-public-custom 9 "Class custom type for a slot.") -(defconst class-public-custom-label 10 "Class custom group for a slot.") -(defconst class-public-custom-group 11 "Class custom group for a slot.") -(defconst class-public-printer 12 "Printer for a slot.") -(defconst class-protection 13 "Class protection for a slot.") -(defconst class-initarg-tuples 14 "Class initarg tuples list.") -(defconst class-class-allocation-a 15 "Class allocated attributes.") -(defconst class-class-allocation-doc 16 "Class allocated documentation.") -(defconst class-class-allocation-type 17 "Class allocated value type.") -(defconst class-class-allocation-custom 18 "Class allocated custom descriptor.") -(defconst class-class-allocation-custom-label 19 "Class allocated custom descriptor.") -(defconst class-class-allocation-custom-group 20 "Class allocated custom group.") -(defconst class-class-allocation-printer 21 "Class allocated printer for a slot.") -(defconst class-class-allocation-protection 22 "Class allocated protection list.") -(defconst class-class-allocation-values 23 "Class allocated value vector.") -(defconst class-default-object-cache 24 - "Cache index of what a newly created object would look like. +(defvar eieio-default-superclass nil)) + +(defmacro eieio--define-field-accessors (prefix fields) + (declare (indent 1)) + (let ((index 0) + (defs '())) + (dolist (field fields) + (let ((doc (if (listp field) + (prog1 (cadr field) (setq field (car field)))))) + (push `(defmacro ,(intern (format "eieio--%s-%s" prefix field)) (x) + ,@(if doc (list (format (if (string-match "\n" doc) + "Return %s" "Return %s of a %s.") + doc prefix))) + (list 'aref x ,index)) + defs) + (setq index (1+ index)))) + `(eval-and-compile + ,@(nreverse defs) + (defconst ,(intern (format "eieio--%s-num-slots" prefix)) ,index)))) + +(eieio--define-field-accessors class + (-unused-0 ;;FIXME: not sure, but at least there was no accessor! + (symbol "symbol (self-referencing)") + parent children + (symbol-obarray "obarray permitting fast access to variable position indexes") + ;; @todo + ;; the word "public" here is leftovers from the very first version. + ;; Get rid of it! + (public-a "class attribute index") + (public-d "class attribute defaults index") + (public-doc "class documentation strings for attributes") + (public-type "class type for a slot") + (public-custom "class custom type for a slot") + (public-custom-label "class custom group for a slot") + (public-custom-group "class custom group for a slot") + (public-printer "printer for a slot") + (protection "protection for a slot") + (initarg-tuples "initarg tuples list") + (class-allocation-a "class allocated attributes") + (class-allocation-doc "class allocated documentation") + (class-allocation-type "class allocated value type") + (class-allocation-custom "class allocated custom descriptor") + (class-allocation-custom-label "class allocated custom descriptor") + (class-allocation-custom-group "class allocated custom group") + (class-allocation-printer "class allocated printer for a slot") + (class-allocation-protection "class allocated protection list") + (class-allocation-values "class allocated value vector") + (default-object-cache "what a newly created object would look like. This will speed up instantiation time as only a `copy-sequence' will be needed, instead of looping over all the values and setting them from the default.") -(defconst class-options 25 - "Storage location of tagged class options. -Stored outright without modifications or stripping.") + (options "storage location of tagged class options. +Stored outright without modifications or stripping."))) -(defconst class-num-slots 26 - "Number of slots in the class definition object.") +(eieio--define-field-accessors object + (-unused-0 ;;FIXME: not sure, but at least there was no accessor! + (class "class struct defining OBJ") + name)) -(defconst object-class 1 "Index in an object vector where the class is stored.") -(defconst object-name 2 "Index in an object where the name is stored.") +(eval-and-compile +;; FIXME: The constants below should have an `eieio-' prefix added!! (defconst method-static 0 "Index into :static tag on a method.") (defconst method-before 1 "Index into :before tag on a method.") @@ -188,13 +206,13 @@ CLASS is a symbol." `(condition-case nil (let ((tobj ,obj)) (and (eq (aref tobj 0) 'object) - (class-p (aref tobj object-class)))) + (class-p (eieio--object-class tobj)))) (error nil))) (defalias 'object-p 'eieio-object-p) (defmacro class-constructor (class) "Return the symbol representing the constructor of CLASS." - `(aref (class-v ,class) class-symbol)) + `(eieio--class-symbol (class-v ,class))) (defmacro generic-p (method) "Return t if symbol METHOD is a generic function. @@ -241,7 +259,7 @@ Methods with only primary implementations are executed in an optimized way." (defmacro class-option (class option) "Return the value stored for CLASS' OPTION. Return nil if that option doesn't exist." - `(class-option-assoc (aref (class-v ,class) class-options) ',option)) + `(class-option-assoc (eieio--class-options (class-v ,class)) ',option)) (defmacro class-abstract-p (class) "Return non-nil if CLASS is abstract. @@ -334,14 +352,14 @@ It creates an autoload function for CNAME's constructor." ;; Assume we've already debugged inputs. (let* ((oldc (when (class-p cname) (class-v cname))) - (newc (make-vector class-num-slots nil)) + (newc (make-vector eieio--class-num-slots nil)) ) (if oldc nil ;; Do nothing if we already have this class. ;; Create the class in NEWC, but don't fill anything else in. (aset newc 0 'defclass) - (aset newc class-symbol cname) + (setf (eieio--class-symbol newc) cname) (let ((clear-parent nil)) ;; No parents? @@ -371,12 +389,12 @@ It creates an autoload function for CNAME's constructor." ) ;; We have a parent, save the child in there. - (when (not (member cname (aref (class-v SC) class-children))) - (aset (class-v SC) class-children - (cons cname (aref (class-v SC) class-children))))) + (when (not (member cname (eieio--class-children (class-v SC)))) + (setf (eieio--class-children (class-v SC)) + (cons cname (eieio--class-children (class-v SC)))))) ;; save parent in child - (aset newc class-parent (cons SC (aref newc class-parent))) + (setf (eieio--class-parent newc) (cons SC (eieio--class-parent newc))) ) ;; turn this into a usable self-pointing symbol @@ -389,7 +407,7 @@ It creates an autoload function for CNAME's constructor." (put cname 'eieio-class-definition newc) ;; Clear the parent - (if clear-parent (aset newc class-parent nil)) + (if clear-parent (setf (eieio--class-parent newc) nil)) ;; Create an autoload on top of our constructor function. (autoload cname filename doc nil nil) @@ -404,6 +422,15 @@ It creates an autoload function for CNAME's constructor." (when (eq (car-safe (symbol-function cname)) 'autoload) (load-library (car (cdr (symbol-function cname)))))) +(defmacro eieio--check-type (type obj) + (unless (symbolp obj) + (error "eieio--check-type wants OBJ to be a variable")) + `(if (not ,(cond + ((eq 'or (car-safe type)) + `(or ,@(mapcar (lambda (type) `(,type ,obj)) (cdr type)))) + (t `(,type ,obj)))) + (signal 'wrong-type-argument (list ',type ,obj)))) + (defun eieio-defclass (cname superclasses slots options-and-doc) ;; FIXME: Most of this should be moved to the `defclass' macro. "Define CNAME as a new subclass of SUPERCLASSES. @@ -416,18 +443,17 @@ See `defclass' for more information." (run-hooks 'eieio-hook) (setq eieio-hook nil) - (if (not (listp superclasses)) - (signal 'wrong-type-argument '(listp superclasses))) + (eieio--check-type listp superclasses) (let* ((pname superclasses) - (newc (make-vector class-num-slots nil)) + (newc (make-vector eieio--class-num-slots nil)) (oldc (when (class-p cname) (class-v cname))) (groups nil) ;; list of groups id'd from slots (options nil) (clearparent nil)) (aset newc 0 'defclass) - (aset newc class-symbol cname) + (setf (eieio--class-symbol newc) cname) ;; If this class already existed, and we are updating its structure, ;; make sure we keep the old child list. This can cause bugs, but @@ -435,13 +461,13 @@ See `defclass' for more information." ;; method table breakage, particularly when the users is only ;; byte compiling an EIEIO file. (if oldc - (aset newc class-children (aref oldc class-children)) + (setf (eieio--class-children newc) (eieio--class-children oldc)) ;; If the old class did not exist, but did exist in the autoload map, then adopt those children. ;; This is like the above, but deals with autoloads nicely. (let ((sym (intern-soft (symbol-name cname) eieio-defclass-autoload-map))) (when sym (condition-case nil - (aset newc class-children (symbol-value sym)) + (setf (eieio--class-children newc) (symbol-value sym)) (error nil)) (unintern (symbol-name cname) eieio-defclass-autoload-map) )) @@ -469,30 +495,30 @@ See `defclass' for more information." (error "Given parent class %s is not a class" (car pname)) ;; good parent class... ;; save new child in parent - (when (not (member cname (aref (class-v (car pname)) class-children))) - (aset (class-v (car pname)) class-children - (cons cname (aref (class-v (car pname)) class-children)))) + (when (not (member cname (eieio--class-children (class-v (car pname))))) + (setf (eieio--class-children (class-v (car pname))) + (cons cname (eieio--class-children (class-v (car pname)))))) ;; Get custom groups, and store them into our local copy. (mapc (lambda (g) (add-to-list 'groups g)) (class-option (car pname) :custom-groups)) ;; save parent in child - (aset newc class-parent (cons (car pname) (aref newc class-parent)))) + (setf (eieio--class-parent newc) (cons (car pname) (eieio--class-parent newc)))) (error "Invalid parent class %s" pname)) (setq pname (cdr pname))) ;; Reverse the list of our parents so that they are prioritized in ;; the same order as specified in the code. - (aset newc class-parent (nreverse (aref newc class-parent))) ) + (setf (eieio--class-parent newc) (nreverse (eieio--class-parent newc))) ) ;; If there is nothing to loop over, then inherit from the ;; default superclass. (unless (eq cname 'eieio-default-superclass) ;; adopt the default parent here, but clear it later... (setq clearparent t) ;; save new child in parent - (if (not (member cname (aref (class-v 'eieio-default-superclass) class-children))) - (aset (class-v 'eieio-default-superclass) class-children - (cons cname (aref (class-v 'eieio-default-superclass) class-children)))) + (if (not (member cname (eieio--class-children (class-v 'eieio-default-superclass)))) + (setf (eieio--class-children (class-v 'eieio-default-superclass)) + (cons cname (eieio--class-children (class-v 'eieio-default-superclass))))) ;; save parent in child - (aset newc class-parent (list eieio-default-superclass)))) + (setf (eieio--class-parent newc) (list eieio-default-superclass)))) ;; turn this into a usable self-pointing symbol (set cname cname) @@ -714,26 +740,26 @@ See `defclass' for more information." ;; Now that everything has been loaded up, all our lists are backwards! ;; Fix that up now. - (aset newc class-public-a (nreverse (aref newc class-public-a))) - (aset newc class-public-d (nreverse (aref newc class-public-d))) - (aset newc class-public-doc (nreverse (aref newc class-public-doc))) - (aset newc class-public-type - (apply 'vector (nreverse (aref newc class-public-type)))) - (aset newc class-public-custom (nreverse (aref newc class-public-custom))) - (aset newc class-public-custom-label (nreverse (aref newc class-public-custom-label))) - (aset newc class-public-custom-group (nreverse (aref newc class-public-custom-group))) - (aset newc class-public-printer (nreverse (aref newc class-public-printer))) - (aset newc class-protection (nreverse (aref newc class-protection))) - (aset newc class-initarg-tuples (nreverse (aref newc class-initarg-tuples))) + (setf (eieio--class-public-a newc) (nreverse (eieio--class-public-a newc))) + (setf (eieio--class-public-d newc) (nreverse (eieio--class-public-d newc))) + (setf (eieio--class-public-doc newc) (nreverse (eieio--class-public-doc newc))) + (setf (eieio--class-public-type newc) + (apply 'vector (nreverse (eieio--class-public-type newc)))) + (setf (eieio--class-public-custom newc) (nreverse (eieio--class-public-custom newc))) + (setf (eieio--class-public-custom-label newc) (nreverse (eieio--class-public-custom-label newc))) + (setf (eieio--class-public-custom-group newc) (nreverse (eieio--class-public-custom-group newc))) + (setf (eieio--class-public-printer newc) (nreverse (eieio--class-public-printer newc))) + (setf (eieio--class-protection newc) (nreverse (eieio--class-protection newc))) + (setf (eieio--class-initarg-tuples newc) (nreverse (eieio--class-initarg-tuples newc))) ;; The storage for class-class-allocation-type needs to be turned into ;; a vector now. - (aset newc class-class-allocation-type - (apply 'vector (aref newc class-class-allocation-type))) + (setf (eieio--class-class-allocation-type newc) + (apply 'vector (eieio--class-class-allocation-type newc))) ;; Also, take class allocated values, and vectorize them for speed. - (aset newc class-class-allocation-values - (apply 'vector (aref newc class-class-allocation-values))) + (setf (eieio--class-class-allocation-values newc) + (apply 'vector (eieio--class-class-allocation-values newc))) ;; Attach slot symbols into an obarray, and store the index of ;; this slot as the variable slot in this new symbol. We need to @@ -741,8 +767,8 @@ See `defclass' for more information." ;; prime number length, and we also need to make our vector small ;; to save space, and also optimal for the number of items we have. (let* ((cnt 0) - (pubsyms (aref newc class-public-a)) - (prots (aref newc class-protection)) + (pubsyms (eieio--class-public-a newc)) + (prots (eieio--class-protection newc)) (l (length pubsyms)) (vl (let ((primes '( 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 ))) @@ -758,7 +784,7 @@ See `defclass' for more information." (if (car prots) (put newsym 'protection (car prots))) (setq pubsyms (cdr pubsyms) prots (cdr prots))) - (aset newc class-symbol-obarray oa) + (setf (eieio--class-symbol-obarray newc) oa) ) ;; Create the constructor function @@ -790,7 +816,7 @@ See `defclass' for more information." buffer-file-name)) loc) (when fname - (when (string-match "\\.elc$" fname) + (when (string-match "\\.elc\\'" fname) (setq fname (substring fname 0 (1- (length fname))))) (put cname 'class-location fname))) @@ -802,23 +828,23 @@ See `defclass' for more information." (setq options (cons :custom-groups (cons g options))))) ;; Set up the options we have collected. - (aset newc class-options options) + (setf (eieio--class-options newc) options) ;; if this is a superclass, clear out parent (which was set to the ;; default superclass eieio-default-superclass) - (if clearparent (aset newc class-parent nil)) + (if clearparent (setf (eieio--class-parent newc) nil)) ;; Create the cached default object. - (let ((cache (make-vector (+ (length (aref newc class-public-a)) - 3) nil))) + (let ((cache (make-vector (+ (length (eieio--class-public-a newc)) 3) + nil))) (aset cache 0 'object) - (aset cache object-class cname) - (aset cache object-name 'default-cache-object) + (setf (eieio--object-class cache) cname) + (setf (eieio--object-name cache) 'default-cache-object) (let ((eieio-skip-typecheck t)) ;; All type-checking has been done to our satisfaction ;; before this call. Don't waste our time in this call.. (eieio-set-defaults cache t)) - (aset newc class-default-object-cache cache)) + (setf (eieio--class-default-object-cache newc) cache)) ;; Return our new class object ;; newc @@ -855,7 +881,7 @@ if default value is nil." ;; To prevent override information w/out specification of storage, ;; we need to do this little hack. - (if (member a (aref newc class-class-allocation-a)) (setq alloc ':class)) + (if (member a (eieio--class-class-allocation-a newc)) (setq alloc ':class)) (if (or (not alloc) (and (symbolp alloc) (eq alloc ':instance))) ;; In this case, we modify the INSTANCE version of a given slot. @@ -863,31 +889,31 @@ if default value is nil." (progn ;; Only add this element if it is so-far unique - (if (not (member a (aref newc class-public-a))) + (if (not (member a (eieio--class-public-a newc))) (progn (eieio-perform-slot-validation-for-default a type d skipnil) - (aset newc class-public-a (cons a (aref newc class-public-a))) - (aset newc class-public-d (cons d (aref newc class-public-d))) - (aset newc class-public-doc (cons doc (aref newc class-public-doc))) - (aset newc class-public-type (cons type (aref newc class-public-type))) - (aset newc class-public-custom (cons cust (aref newc class-public-custom))) - (aset newc class-public-custom-label (cons label (aref newc class-public-custom-label))) - (aset newc class-public-custom-group (cons custg (aref newc class-public-custom-group))) - (aset newc class-public-printer (cons print (aref newc class-public-printer))) - (aset newc class-protection (cons prot (aref newc class-protection))) - (aset newc class-initarg-tuples (cons (cons init a) (aref newc class-initarg-tuples))) + (setf (eieio--class-public-a newc) (cons a (eieio--class-public-a newc))) + (setf (eieio--class-public-d newc) (cons d (eieio--class-public-d newc))) + (setf (eieio--class-public-doc newc) (cons doc (eieio--class-public-doc newc))) + (setf (eieio--class-public-type newc) (cons type (eieio--class-public-type newc))) + (setf (eieio--class-public-custom newc) (cons cust (eieio--class-public-custom newc))) + (setf (eieio--class-public-custom-label newc) (cons label (eieio--class-public-custom-label newc))) + (setf (eieio--class-public-custom-group newc) (cons custg (eieio--class-public-custom-group newc))) + (setf (eieio--class-public-printer newc) (cons print (eieio--class-public-printer newc))) + (setf (eieio--class-protection newc) (cons prot (eieio--class-protection newc))) + (setf (eieio--class-initarg-tuples newc) (cons (cons init a) (eieio--class-initarg-tuples newc))) ) ;; When defaultoverride is true, we are usually adding new local ;; attributes which must override the default value of any slot ;; passed in by one of the parent classes. (when defaultoverride ;; There is a match, and we must override the old value. - (let* ((ca (aref newc class-public-a)) + (let* ((ca (eieio--class-public-a newc)) (np (member a ca)) (num (- (length ca) (length np))) - (dp (if np (nthcdr num (aref newc class-public-d)) + (dp (if np (nthcdr num (eieio--class-public-d newc)) nil)) - (tp (if np (nth num (aref newc class-public-type)))) + (tp (if np (nth num (eieio--class-public-type newc)))) ) (if (not np) (error "EIEIO internal error overriding default value for %s" @@ -904,7 +930,7 @@ if default value is nil." (setcar dp d)) ;; If we have a new initarg, check for it. (when init - (let* ((inits (aref newc class-initarg-tuples)) + (let* ((inits (eieio--class-initarg-tuples newc)) (inita (rassq a inits))) ;; Replace the CAR of the associate INITA. ;;(message "Initarg: %S replace %s" inita init) @@ -920,7 +946,7 @@ if default value is nil." ;; EML - We used to have (if prot... here, ;; but a prot of 'nil means public. ;; - (let ((super-prot (nth num (aref newc class-protection))) + (let ((super-prot (nth num (eieio--class-protection newc))) ) (if (not (eq prot super-prot)) (error "Child slot protection `%s' does not match inherited protection `%s' for `%s'" @@ -932,7 +958,7 @@ if default value is nil." ;; groups and new ones. (when custg (let* ((groups - (nthcdr num (aref newc class-public-custom-group))) + (nthcdr num (eieio--class-public-custom-group newc))) (list1 (car groups)) (list2 (if (listp custg) custg (list custg)))) (if (< (length list1) (length list2)) @@ -947,20 +973,20 @@ if default value is nil." ;; set, simply replaces the old one. (when cust ;; (message "Custom type redefined to %s" cust) - (setcar (nthcdr num (aref newc class-public-custom)) cust)) + (setcar (nthcdr num (eieio--class-public-custom newc)) cust)) ;; If a new label is specified, it simply replaces ;; the old one. (when label ;; (message "Custom label redefined to %s" label) - (setcar (nthcdr num (aref newc class-public-custom-label)) label)) + (setcar (nthcdr num (eieio--class-public-custom-label newc)) label)) ;; End PLN ;; PLN Sat Jun 30 17:24:42 2007 : when a new ;; doc is specified, simply replaces the old one. (when doc ;;(message "Documentation redefined to %s" doc) - (setcar (nthcdr num (aref newc class-public-doc)) + (setcar (nthcdr num (eieio--class-public-doc newc)) doc)) ;; End PLN @@ -968,38 +994,38 @@ if default value is nil." ;; the old one. (when print ;; (message "printer redefined to %s" print) - (setcar (nthcdr num (aref newc class-public-printer)) print)) + (setcar (nthcdr num (eieio--class-public-printer newc)) print)) ))) )) ;; CLASS ALLOCATED SLOTS (let ((value (eieio-default-eval-maybe d))) - (if (not (member a (aref newc class-class-allocation-a))) + (if (not (member a (eieio--class-class-allocation-a newc))) (progn (eieio-perform-slot-validation-for-default a type value skipnil) ;; Here we have found a :class version of a slot. This ;; requires a very different approach. - (aset newc class-class-allocation-a (cons a (aref newc class-class-allocation-a))) - (aset newc class-class-allocation-doc (cons doc (aref newc class-class-allocation-doc))) - (aset newc class-class-allocation-type (cons type (aref newc class-class-allocation-type))) - (aset newc class-class-allocation-custom (cons cust (aref newc class-class-allocation-custom))) - (aset newc class-class-allocation-custom-label (cons label (aref newc class-class-allocation-custom-label))) - (aset newc class-class-allocation-custom-group (cons custg (aref newc class-class-allocation-custom-group))) - (aset newc class-class-allocation-protection (cons prot (aref newc class-class-allocation-protection))) + (setf (eieio--class-class-allocation-a newc) (cons a (eieio--class-class-allocation-a newc))) + (setf (eieio--class-class-allocation-doc newc) (cons doc (eieio--class-class-allocation-doc newc))) + (setf (eieio--class-class-allocation-type newc) (cons type (eieio--class-class-allocation-type newc))) + (setf (eieio--class-class-allocation-custom newc) (cons cust (eieio--class-class-allocation-custom newc))) + (setf (eieio--class-class-allocation-custom-label newc) (cons label (eieio--class-class-allocation-custom-label newc))) + (setf (eieio--class-class-allocation-custom-group newc) (cons custg (eieio--class-class-allocation-custom-group newc))) + (setf (eieio--class-class-allocation-protection newc) (cons prot (eieio--class-class-allocation-protection newc))) ;; Default value is stored in the 'values section, since new objects ;; can't initialize from this element. - (aset newc class-class-allocation-values (cons value (aref newc class-class-allocation-values)))) + (setf (eieio--class-class-allocation-values newc) (cons value (eieio--class-class-allocation-values newc)))) (when defaultoverride ;; There is a match, and we must override the old value. - (let* ((ca (aref newc class-class-allocation-a)) + (let* ((ca (eieio--class-class-allocation-a newc)) (np (member a ca)) (num (- (length ca) (length np))) (dp (if np (nthcdr num - (aref newc class-class-allocation-values)) + (eieio--class-class-allocation-values newc)) nil)) - (tp (if np (nth num (aref newc class-class-allocation-type)) + (tp (if np (nth num (eieio--class-class-allocation-type newc)) nil))) (if (not np) (error "EIEIO internal error overriding default value for %s" @@ -1023,7 +1049,7 @@ if default value is nil." ;; I wonder if a more flexible schedule might be ;; implemented. (let ((super-prot - (car (nthcdr num (aref newc class-class-allocation-protection))))) + (car (nthcdr num (eieio--class-class-allocation-protection newc))))) (if (not (eq prot super-prot)) (error "Child slot protection `%s' does not match inherited protection `%s' for `%s'" prot super-prot a))) @@ -1031,7 +1057,7 @@ if default value is nil." ;; and new ones. (when custg (let* ((groups - (nthcdr num (aref newc class-class-allocation-custom-group))) + (nthcdr num (eieio--class-class-allocation-custom-group newc))) (list1 (car groups)) (list2 (if (listp custg) custg (list custg)))) (if (< (length list1) (length list2)) @@ -1045,7 +1071,7 @@ if default value is nil." ;; doc is specified, simply replaces the old one. (when doc ;;(message "Documentation redefined to %s" doc) - (setcar (nthcdr num (aref newc class-class-allocation-doc)) + (setcar (nthcdr num (eieio--class-class-allocation-doc newc)) doc)) ;; End PLN @@ -1053,7 +1079,7 @@ if default value is nil." ;; the old one. (when print ;; (message "printer redefined to %s" print) - (setcar (nthcdr num (aref newc class-class-allocation-printer)) print)) + (setcar (nthcdr num (eieio--class-class-allocation-printer newc)) print)) )) )) @@ -1063,22 +1089,22 @@ if default value is nil." "Copy into NEWC the slots of PARENTS. Follow the rules of not overwriting early parents when applying to the new child class." - (let ((ps (aref newc class-parent)) - (sn (class-option-assoc (aref newc class-options) + (let ((ps (eieio--class-parent newc)) + (sn (class-option-assoc (eieio--class-options newc) ':allow-nil-initform))) (while ps ;; First, duplicate all the slots of the parent. (let ((pcv (class-v (car ps)))) - (let ((pa (aref pcv class-public-a)) - (pd (aref pcv class-public-d)) - (pdoc (aref pcv class-public-doc)) - (ptype (aref pcv class-public-type)) - (pcust (aref pcv class-public-custom)) - (plabel (aref pcv class-public-custom-label)) - (pcustg (aref pcv class-public-custom-group)) - (printer (aref pcv class-public-printer)) - (pprot (aref pcv class-protection)) - (pinit (aref pcv class-initarg-tuples)) + (let ((pa (eieio--class-public-a pcv)) + (pd (eieio--class-public-d pcv)) + (pdoc (eieio--class-public-doc pcv)) + (ptype (eieio--class-public-type pcv)) + (pcust (eieio--class-public-custom pcv)) + (plabel (eieio--class-public-custom-label pcv)) + (pcustg (eieio--class-public-custom-group pcv)) + (printer (eieio--class-public-printer pcv)) + (pprot (eieio--class-protection pcv)) + (pinit (eieio--class-initarg-tuples pcv)) (i 0)) (while pa (eieio-add-new-slot newc @@ -1099,15 +1125,15 @@ the new child class." pinit (cdr pinit)) )) ;; while/let ;; Now duplicate all the class alloc slots. - (let ((pa (aref pcv class-class-allocation-a)) - (pdoc (aref pcv class-class-allocation-doc)) - (ptype (aref pcv class-class-allocation-type)) - (pcust (aref pcv class-class-allocation-custom)) - (plabel (aref pcv class-class-allocation-custom-label)) - (pcustg (aref pcv class-class-allocation-custom-group)) - (printer (aref pcv class-class-allocation-printer)) - (pprot (aref pcv class-class-allocation-protection)) - (pval (aref pcv class-class-allocation-values)) + (let ((pa (eieio--class-class-allocation-a pcv)) + (pdoc (eieio--class-class-allocation-doc pcv)) + (ptype (eieio--class-class-allocation-type pcv)) + (pcust (eieio--class-class-allocation-custom pcv)) + (plabel (eieio--class-class-allocation-custom-label pcv)) + (pcustg (eieio--class-class-allocation-custom-group pcv)) + (printer (eieio--class-class-allocation-printer pcv)) + (pprot (eieio--class-class-allocation-protection pcv)) + (pval (eieio--class-class-allocation-values pcv)) (i 0)) (while pa (eieio-add-new-slot newc @@ -1252,7 +1278,7 @@ IMPL is the symbol holding the method implementation." ;; We do have an object. Make sure it is the right type. (if ,(if (eq class eieio-default-superclass) nil ; default superclass means just an obj. Already asked. - `(not (child-of-class-p (aref (car local-args) object-class) + `(not (child-of-class-p (eieio--object-class (car local-args)) ',class))) ;; If not the right kind of object, call no applicable @@ -1335,27 +1361,20 @@ Summary: (defun eieio--defmethod (method kind argclass code) "Work part of the `defmethod' macro defining METHOD with ARGS." (let ((key - ;; find optional keys - (cond ((or (eq ':BEFORE kind) - (eq ':before kind)) - method-before) - ((or (eq ':AFTER kind) - (eq ':after kind)) - method-after) - ((or (eq ':PRIMARY kind) - (eq ':primary kind)) - method-primary) - ((or (eq ':STATIC kind) - (eq ':static kind)) - method-static) - ;; Primary key - (t method-primary)))) + ;; Find optional keys. + (cond ((memq kind '(:BEFORE :before)) method-before) + ((memq kind '(:AFTER :after)) method-after) + ((memq kind '(:STATIC :static)) method-static) + ((memq kind '(:PRIMARY :primary nil)) method-primary) + ;; Primary key. + ;; (t method-primary) + (t (error "Unknown method kind %S" kind))))) ;; Make sure there is a generic (when called from defclass). (eieio--defalias method (eieio--defgeneric-init-form method (or (documentation code) (format "Generically created method `%s'." method)))) - ;; create symbol for property to bind to. If the first arg is of + ;; Create symbol for property to bind to. If the first arg is of ;; the form (varname vartype) and `vartype' is a class, then ;; that class will be the type symbol. If not, then it will fall ;; under the type `primary' which is a non-specific calling of the @@ -1364,11 +1383,9 @@ Summary: (if (not (class-p argclass)) (error "Unknown class type %s in method parameters" argclass)) - (if (= key -1) - (signal 'wrong-type-argument (list :static 'non-class-arg))) - ;; generics are higher + ;; Generics are higher. (setq key (eieio-specialized-key-to-generic-key key))) - ;; Put this lambda into the symbol so we can find it + ;; Put this lambda into the symbol so we can find it. (eieiomt-add method code key argclass) ) @@ -1449,7 +1466,7 @@ an error." nil ;; Trim off object IDX junk added in for the object index. (setq slot-idx (- slot-idx 3)) - (let ((st (aref (aref (class-v class) class-public-type) slot-idx))) + (let ((st (aref (eieio--class-public-type (class-v class)) slot-idx))) (if (not (eieio-perform-slot-validation st value)) (signal 'invalid-slot-type (list class slot st value)))))) @@ -1460,7 +1477,7 @@ SLOT is the slot that is being checked, and is only used when throwing an error." (if eieio-skip-typecheck nil - (let ((st (aref (aref (class-v class) class-class-allocation-type) + (let ((st (aref (eieio--class-class-allocation-type (class-v class)) slot-idx))) (if (not (eieio-perform-slot-validation st value)) (signal 'invalid-slot-type (list class slot st value)))))) @@ -1471,7 +1488,7 @@ INSTANCE is the object being referenced. SLOTNAME is the offending slot. If the slot is ok, return VALUE. Argument FN is the function calling this verifier." (if (and (eq value eieio-unbound) (not eieio-skip-typecheck)) - (slot-unbound instance (object-class instance) slotname fn) + (slot-unbound instance (eieio-object-class instance) slotname fn) value)) ;;; Get/Set slots in an object. @@ -1484,27 +1501,24 @@ created by the :initarg tag." (defun eieio-oref (obj slot) "Return the value in OBJ at SLOT in the object vector." - (if (not (or (eieio-object-p obj) (class-p obj))) - (signal 'wrong-type-argument (list '(or eieio-object-p class-p) obj))) - (if (not (symbolp slot)) - (signal 'wrong-type-argument (list 'symbolp slot))) + (eieio--check-type (or eieio-object-p class-p) obj) + (eieio--check-type symbolp slot) (if (class-p obj) (eieio-class-un-autoload obj)) - (let* ((class (if (class-p obj) obj (aref obj object-class))) + (let* ((class (if (class-p obj) obj (eieio--object-class obj))) (c (eieio-slot-name-index class obj slot))) (if (not c) ;; It might be missing because it is a :class allocated slot. ;; Let's check that info out. (if (setq c (eieio-class-slot-name-index class slot)) ;; Oref that slot. - (aref (aref (class-v class) class-class-allocation-values) c) + (aref (eieio--class-class-allocation-values (class-v class)) c) ;; The slot-missing method is a cool way of allowing an object author ;; to intercept missing slot definitions. Since it is also the LAST ;; thing called in this fn, its return value would be retrieved. (slot-missing obj slot 'oref) - ;;(signal 'invalid-slot-name (list (object-name obj) slot)) + ;;(signal 'invalid-slot-name (list (eieio-object-name obj) slot)) ) - (if (not (eieio-object-p obj)) - (signal 'wrong-type-argument (list 'eieio-object-p obj))) + (eieio--check-type eieio-object-p obj) (eieio-barf-if-slot-unbound (aref obj c) obj slot 'oref)))) (defalias 'slot-value 'eieio-oref) @@ -1520,9 +1534,9 @@ tag in the `defclass' call." (defun eieio-oref-default (obj slot) "Do the work for the macro `oref-default' with similar parameters. Fills in OBJ's SLOT with its default value." - (if (not (or (eieio-object-p obj) (class-p obj))) (signal 'wrong-type-argument (list 'eieio-object-p obj))) - (if (not (symbolp slot)) (signal 'wrong-type-argument (list 'symbolp slot))) - (let* ((cl (if (eieio-object-p obj) (aref obj object-class) obj)) + (eieio--check-type (or eieio-object-p class-p) obj) + (eieio--check-type symbolp slot) + (let* ((cl (if (eieio-object-p obj) (eieio--object-class obj) obj)) (c (eieio-slot-name-index cl obj slot))) (if (not c) ;; It might be missing because it is a :class allocated slot. @@ -1530,13 +1544,13 @@ Fills in OBJ's SLOT with its default value." (if (setq c (eieio-class-slot-name-index cl slot)) ;; Oref that slot. - (aref (aref (class-v cl) class-class-allocation-values) + (aref (eieio--class-class-allocation-values (class-v cl)) c) (slot-missing obj slot 'oref-default) ;;(signal 'invalid-slot-name (list (class-name cl) slot)) ) (eieio-barf-if-slot-unbound - (let ((val (nth (- c 3) (aref (class-v cl) class-public-d)))) + (let ((val (nth (- c 3) (eieio--class-public-d (class-v cl))))) (eieio-default-eval-maybe val)) obj cl 'oref-default)))) @@ -1590,62 +1604,78 @@ variable name of the same name as the slot." ;;; Simple generators, and query functions. None of these would do ;; well embedded into an object. ;; -(defmacro object-class-fast (obj) "Return the class struct defining OBJ with no check." - `(aref ,obj object-class)) +(define-obsolete-function-alias + 'object-class-fast #'eieio--object-class "24.4") -(defun class-name (class) "Return a Lisp like symbol name for CLASS." - (if (not (class-p class)) (signal 'wrong-type-argument (list 'class-p class))) +(defun eieio-class-name (class) "Return a Lisp like symbol name for CLASS." + (eieio--check-type class-p class) ;; I think this is supposed to return a symbol, but to me CLASS is a symbol, ;; and I wanted a string. Arg! (format "#<class %s>" (symbol-name class))) +(define-obsolete-function-alias 'class-name #'eieio-class-name "24.4") -(defun object-name (obj &optional extra) +(defun eieio-object-name (obj &optional extra) "Return a Lisp like symbol string for object OBJ. If EXTRA, include that in the string returned to represent the symbol." - (if (not (eieio-object-p obj)) (signal 'wrong-type-argument (list 'eieio-object-p obj))) - (format "#<%s %s%s>" (symbol-name (object-class-fast obj)) - (aref obj object-name) (or extra ""))) - -(defun object-name-string (obj) "Return a string which is OBJ's name." - (if (not (eieio-object-p obj)) (signal 'wrong-type-argument (list 'eieio-object-p obj))) - (aref obj object-name)) - -(defun object-set-name-string (obj name) "Set the string which is OBJ's NAME." - (if (not (eieio-object-p obj)) (signal 'wrong-type-argument (list 'eieio-object-p obj))) - (if (not (stringp name)) (signal 'wrong-type-argument (list 'stringp name))) - (aset obj object-name name)) - -(defun object-class (obj) "Return the class struct defining OBJ." - (if (not (eieio-object-p obj)) (signal 'wrong-type-argument (list 'eieio-object-p obj))) - (object-class-fast obj)) -(defalias 'class-of 'object-class) - -(defun object-class-name (obj) "Return a Lisp like symbol name for OBJ's class." - (if (not (eieio-object-p obj)) (signal 'wrong-type-argument (list 'eieio-object-p obj))) - (class-name (object-class-fast obj))) - -(defmacro class-parents-fast (class) "Return parent classes to CLASS with no check." - `(aref (class-v ,class) class-parent)) - -(defun class-parents (class) + (eieio--check-type eieio-object-p obj) + (format "#<%s %s%s>" (symbol-name (eieio--object-class obj)) + (eieio--object-name obj) (or extra ""))) +(define-obsolete-function-alias 'object-name #'eieio-object-name "24.4") + +(defun eieio-object-name-string (obj) "Return a string which is OBJ's name." + (eieio--check-type eieio-object-p obj) + (eieio--object-name obj)) +(define-obsolete-function-alias + 'object-name-string #'eieio-object-name-string "24.4") + +(defun eieio-object-set-name-string (obj name) + "Set the string which is OBJ's NAME." + (eieio--check-type eieio-object-p obj) + (eieio--check-type stringp name) + (setf (eieio--object-name obj) name)) +(define-obsolete-function-alias + 'object-set-name-string 'eieio-object-set-name-string "24.4") + +(defun eieio-object-class (obj) "Return the class struct defining OBJ." + (eieio--check-type eieio-object-p obj) + (eieio--object-class obj)) +(define-obsolete-function-alias 'object-class #'eieio-object-class "24.4") +;; CLOS name, maybe? +(define-obsolete-function-alias 'class-of #'eieio-object-class "24.4") + +(defun eieio-object-class-name (obj) + "Return a Lisp like symbol name for OBJ's class." + (eieio--check-type eieio-object-p obj) + (eieio-class-name (eieio--object-class obj))) +(define-obsolete-function-alias + 'object-class-name 'eieio-object-class-name "24.4") + +(defmacro eieio-class-parents-fast (class) + "Return parent classes to CLASS with no check." + `(eieio--class-parent (class-v ,class))) + +(defun eieio-class-parents (class) "Return parent classes to CLASS. (overload of variable). The CLOS function `class-direct-superclasses' is aliased to this function." - (if (not (class-p class)) (signal 'wrong-type-argument (list 'class-p class))) - (class-parents-fast class)) + (eieio--check-type class-p class) + (eieio-class-parents-fast class)) +(define-obsolete-function-alias 'class-parents #'eieio-class-parents "24.4") -(defmacro class-children-fast (class) "Return child classes to CLASS with no check." - `(aref (class-v ,class) class-children)) +(defmacro eieio-class-children-fast (class) "Return child classes to CLASS with no check." + `(eieio--class-children (class-v ,class))) -(defun class-children (class) -"Return child classes to CLASS. +(defun eieio-class-children (class) + "Return child classes to CLASS. The CLOS function `class-direct-subclasses' is aliased to this function." - (if (not (class-p class)) (signal 'wrong-type-argument (list 'class-p class))) - (class-children-fast class)) + (eieio--check-type class-p class) + (eieio-class-children-fast class)) +(define-obsolete-function-alias + 'class-children #'eieio-class-children "24.4") (defun eieio-c3-candidate (class remaining-inputs) - "Returns CLASS if it can go in the result now, otherwise nil" + "Return CLASS if it can go in the result now, otherwise nil" ;; Ensure CLASS is not in any position but the first in any of the ;; element lists of REMAINING-INPUTS. (and (not (let ((found nil)) @@ -1691,7 +1721,7 @@ If a consistent order does not exist, signal an error." (defun eieio-class-precedence-dfs (class) "Return all parents of CLASS in depth-first order." - (let* ((parents (class-parents-fast class)) + (let* ((parents (eieio-class-parents-fast class)) (classes (copy-sequence (apply #'append (list class) @@ -1712,21 +1742,21 @@ If a consistent order does not exist, signal an error." (defun eieio-class-precedence-bfs (class) "Return all parents of CLASS in breadth-first order." (let ((result) - (queue (or (class-parents-fast class) + (queue (or (eieio-class-parents-fast class) '(eieio-default-superclass)))) (while queue (let ((head (pop queue))) (unless (member head result) (push head result) (unless (eq head 'eieio-default-superclass) - (setq queue (append queue (or (class-parents-fast head) + (setq queue (append queue (or (eieio-class-parents-fast head) '(eieio-default-superclass)))))))) (cons class (nreverse result))) ) (defun eieio-class-precedence-c3 (class) "Return all parents of CLASS in c3 order." - (let ((parents (class-parents-fast class))) + (let ((parents (eieio-class-parents-fast class))) (eieio-c3-merge-lists (list class) (append @@ -1739,7 +1769,7 @@ If a consistent order does not exist, signal an error." (list parents)))) ) -(defun class-precedence-list (class) +(defun eieio-class-precedence-list (class) "Return (transitively closed) list of parents of CLASS. The order, in which the parents are returned depends on the method invocation orders of the involved classes." @@ -1753,52 +1783,56 @@ method invocation orders of the involved classes." (:c3 (eieio-class-precedence-c3 class)))) ) +(define-obsolete-function-alias + 'class-precedence-list 'eieio-class-precedence-list "24.4") ;; Official CLOS functions. -(defalias 'class-direct-superclasses 'class-parents) -(defalias 'class-direct-subclasses 'class-children) - -(defmacro class-parent-fast (class) "Return first parent class to CLASS with no check." - `(car (class-parents-fast ,class))) +(define-obsolete-function-alias + 'class-direct-superclasses #'eieio-class-parents "24.4") +(define-obsolete-function-alias + 'class-direct-subclasses #'eieio-class-children "24.4") -(defmacro class-parent (class) "Return first parent class to CLASS. (overload of variable)." - `(car (class-parents ,class))) +(defmacro eieio-class-parent (class) + "Return first parent class to CLASS. (overload of variable)." + `(car (eieio-class-parents ,class))) +(define-obsolete-function-alias 'class-parent #'eieio-class-parent "24.4") -(defmacro same-class-fast-p (obj class) "Return t if OBJ is of class-type CLASS with no error checking." - `(eq (aref ,obj object-class) ,class)) +(defmacro same-class-fast-p (obj class) + "Return t if OBJ is of class-type CLASS with no error checking." + `(eq (eieio--object-class ,obj) ,class)) (defun same-class-p (obj class) "Return t if OBJ is of class-type CLASS." - (if (not (class-p class)) (signal 'wrong-type-argument (list 'class-p class))) - (if (not (eieio-object-p obj)) (signal 'wrong-type-argument (list 'eieio-object-p obj))) + (eieio--check-type class-p class) + (eieio--check-type eieio-object-p obj) (same-class-fast-p obj class)) (defun object-of-class-p (obj class) "Return non-nil if OBJ is an instance of CLASS or CLASS' subclasses." - (if (not (eieio-object-p obj)) (signal 'wrong-type-argument (list 'eieio-object-p obj))) + (eieio--check-type eieio-object-p obj) ;; class will be checked one layer down - (child-of-class-p (aref obj object-class) class)) + (child-of-class-p (eieio--object-class obj) class)) ;; Backwards compatibility (defalias 'obj-of-class-p 'object-of-class-p) (defun child-of-class-p (child class) "Return non-nil if CHILD class is a subclass of CLASS." - (if (not (class-p class)) (signal 'wrong-type-argument (list 'class-p class))) - (if (not (class-p child)) (signal 'wrong-type-argument (list 'class-p child))) + (eieio--check-type class-p class) + (eieio--check-type class-p child) (let ((p nil)) (while (and child (not (eq child class))) - (setq p (append p (aref (class-v child) class-parent)) + (setq p (append p (eieio--class-parent (class-v child))) child (car p) p (cdr p))) (if child t))) (defun object-slots (obj) "Return list of slots available in OBJ." - (if (not (eieio-object-p obj)) (signal 'wrong-type-argument (list 'eieio-object-p obj))) - (aref (class-v (object-class-fast obj)) class-public-a)) + (eieio--check-type eieio-object-p obj) + (eieio--class-public-a (class-v (eieio--object-class obj)))) (defun class-slot-initarg (class slot) "Fetch from CLASS, SLOT's :initarg." - (if (not (class-p class)) (signal 'wrong-type-argument (list 'class-p class))) - (let ((ia (aref (class-v class) class-initarg-tuples)) + (eieio--check-type class-p class) + (let ((ia (eieio--class-initarg-tuples (class-v class))) (f nil)) (while (and ia (not f)) (if (eq (cdr (car ia)) slot) @@ -1817,25 +1851,24 @@ with in the :initarg slot. VALUE can be any Lisp object." (defun eieio-oset (obj slot value) "Do the work for the macro `oset'. Fills in OBJ's SLOT with VALUE." - (if (not (eieio-object-p obj)) (signal 'wrong-type-argument (list 'eieio-object-p obj))) - (if (not (symbolp slot)) (signal 'wrong-type-argument (list 'symbolp slot))) - (let ((c (eieio-slot-name-index (object-class-fast obj) obj slot))) + (eieio--check-type eieio-object-p obj) + (eieio--check-type symbolp slot) + (let ((c (eieio-slot-name-index (eieio--object-class obj) obj slot))) (if (not c) ;; It might be missing because it is a :class allocated slot. ;; Let's check that info out. (if (setq c - (eieio-class-slot-name-index (aref obj object-class) slot)) + (eieio-class-slot-name-index (eieio--object-class obj) slot)) ;; Oset that slot. (progn - (eieio-validate-class-slot-value (object-class-fast obj) c value slot) - (aset (aref (class-v (aref obj object-class)) - class-class-allocation-values) + (eieio-validate-class-slot-value (eieio--object-class obj) c value slot) + (aset (eieio--class-class-allocation-values (class-v (eieio--object-class obj))) c value)) ;; See oref for comment on `slot-missing' (slot-missing obj slot 'oset value) - ;;(signal 'invalid-slot-name (list (object-name obj) slot)) + ;;(signal 'invalid-slot-name (list (eieio-object-name obj) slot)) ) - (eieio-validate-slot-value (object-class-fast obj) c value slot) + (eieio-validate-slot-value (eieio--object-class obj) c value slot) (aset obj c value)))) (defmacro oset-default (class slot value) @@ -1848,8 +1881,8 @@ after they are created." (defun eieio-oset-default (class slot value) "Do the work for the macro `oset-default'. Fills in the default value in CLASS' in SLOT with VALUE." - (if (not (class-p class)) (signal 'wrong-type-argument (list 'class-p class))) - (if (not (symbolp slot)) (signal 'wrong-type-argument (list 'symbolp slot))) + (eieio--check-type class-p class) + (eieio--check-type symbolp slot) (let* ((scoped-class class) (c (eieio-slot-name-index class nil slot))) (if (not c) @@ -1859,15 +1892,15 @@ Fills in the default value in CLASS' in SLOT with VALUE." (progn ;; Oref that slot. (eieio-validate-class-slot-value class c value slot) - (aset (aref (class-v class) class-class-allocation-values) c + (aset (eieio--class-class-allocation-values (class-v class)) c value)) - (signal 'invalid-slot-name (list (class-name class) slot))) + (signal 'invalid-slot-name (list (eieio-class-name class) slot))) (eieio-validate-slot-value class c value slot) ;; Set this into the storage for defaults. - (setcar (nthcdr (- c 3) (aref (class-v class) class-public-d)) + (setcar (nthcdr (- c 3) (eieio--class-public-d (class-v class))) value) ;; Take the value, and put it into our cache object. - (eieio-oset (aref (class-v class) class-default-object-cache) + (eieio-oset (eieio--class-default-object-cache (class-v class)) slot value) ))) @@ -1894,12 +1927,12 @@ OBJECT can be an instance or a class." (defun slot-exists-p (object-or-class slot) "Return non-nil if OBJECT-OR-CLASS has SLOT." (let ((cv (class-v (cond ((eieio-object-p object-or-class) - (object-class object-or-class)) + (eieio-object-class object-or-class)) ((class-p object-or-class) object-or-class)) ))) - (or (memq slot (aref cv class-public-a)) - (memq slot (aref cv class-class-allocation-a))) + (or (memq slot (eieio--class-public-a cv)) + (memq slot (eieio--class-class-allocation-a cv))) )) (defun find-class (symbol &optional errorp) @@ -1919,7 +1952,7 @@ LIST is a list of objects whose slots are searched. Objects in LIST do not need to have a slot named SLOT, nor does SLOT need to be bound. If these errors occur, those objects will be ignored." - (if (not (listp list)) (signal 'wrong-type-argument (list 'listp list))) + (eieio--check-type listp list) (while (and list (not (condition-case nil ;; This prevents errors for missing slots. (equal key (eieio-oref (car list) slot)) @@ -1931,7 +1964,7 @@ be ignored." "Return an association list with the contents of SLOT as the key element. LIST must be a list of objects with SLOT in it. This is useful when you need to do completing read on an object group." - (if (not (listp list)) (signal 'wrong-type-argument (list 'listp list))) + (eieio--check-type listp list) (let ((assoclist nil)) (while list (setq assoclist (cons (cons (eieio-oref (car list) slot) @@ -1945,7 +1978,7 @@ This is useful when you need to do completing read on an object group." LIST must be a list of objects, but those objects do not need to have SLOT in it. If it does not, then that element is left out of the association list." - (if (not (listp list)) (signal 'wrong-type-argument (list 'listp list))) + (eieio--check-type listp list) (let ((assoclist nil)) (while list (if (slot-exists-p (car list) slot) @@ -1993,14 +2026,13 @@ If SLOT is unbound, do nothing." "Return non-nil if START-CLASS is the first class to define SLOT. This is for testing if `scoped-class' is the class that defines SLOT so that we can protect private slots." - (let ((par (class-parents start-class)) + (let ((par (eieio-class-parents start-class)) (ret t)) (if (not par) t (while (and par ret) (if (intern-soft (symbol-name slot) - (aref (class-v (car par)) - class-symbol-obarray)) + (eieio--class-symbol-obarray (class-v (car par)))) (setq ret nil)) (setq par (cdr par))) ret))) @@ -2015,8 +2047,7 @@ If SLOT is the value created with :initarg instead, reverse-lookup that name, and recurse with the associated slot value." ;; Removed checks to outside this call (let* ((fsym (intern-soft (symbol-name slot) - (aref (class-v class) - class-symbol-obarray))) + (eieio--class-symbol-obarray (class-v class)))) (fsi (if (symbolp fsym) (symbol-value fsym) nil))) (if (integerp fsi) (cond @@ -2026,7 +2057,7 @@ reverse-lookup that name, and recurse with the associated slot value." (bound-and-true-p scoped-class) (or (child-of-class-p class scoped-class) (and (eieio-object-p obj) - (child-of-class-p class (object-class obj))))) + (child-of-class-p class (eieio-object-class obj))))) (+ 3 fsi)) ((and (eq (get fsym 'protection) 'private) (or (and (bound-and-true-p scoped-class) @@ -2044,7 +2075,7 @@ call. If SLOT is the value created with :initarg instead, reverse-lookup that name, and recurse with the associated slot value." ;; This will happen less often, and with fewer slots. Do this the ;; storage cheap way. - (let* ((a (aref (class-v class) class-class-allocation-a)) + (let* ((a (eieio--class-class-allocation-a (class-v class))) (l1 (length a)) (af (memq slot a)) (l2 (length af))) @@ -2099,7 +2130,7 @@ This should only be called from a generic function." (load (nth 1 (symbol-function firstarg)))) ;; Determine the class to use. (cond ((eieio-object-p firstarg) - (setq mclass (object-class-fast firstarg))) + (setq mclass (eieio--object-class firstarg))) ((class-p firstarg) (setq mclass firstarg)) ) @@ -2236,7 +2267,7 @@ for this common case to improve performance." ;; Determine the class to use. (cond ((eieio-object-p firstarg) - (setq mclass (object-class-fast firstarg))) + (setq mclass (eieio--object-class firstarg))) ((not firstarg) (error "Method %s called on nil" method)) ((not (eieio-object-p firstarg)) @@ -2303,7 +2334,7 @@ If CLASS is nil, then an empty list of methods should be returned." ;; Collect lambda expressions stored for the class and its parent ;; classes. (let (lambdas) - (dolist (ancestor (class-precedence-list class)) + (dolist (ancestor (eieio-class-precedence-list class)) ;; Lookup the form to use for the PRIMARY object for the next level (let ((tmpl (eieio-generic-form method key ancestor))) (when (and tmpl @@ -2447,7 +2478,7 @@ This is different from function `class-parent' as class parent returns nil for superclasses. This function performs no type checking!" ;; No type-checking because all calls are made from functions which ;; are safe and do checking for us. - (or (class-parents-fast class) + (or (eieio-class-parents-fast class) (if (eq class 'eieio-default-superclass) nil '(eieio-default-superclass)))) @@ -2460,7 +2491,7 @@ nil for superclasses. This function performs no type checking!" ;; we replace the nil from above. (let ((external-symbol (intern-soft (symbol-name s)))) (catch 'done - (dolist (ancestor (rest (class-precedence-list external-symbol))) + (dolist (ancestor (rest (eieio-class-precedence-list external-symbol))) (let ((ov (intern-soft (symbol-name ancestor) eieiomt-optimizing-obarray))) (when (fboundp ov) @@ -2489,7 +2520,7 @@ is memorized for faster future use." (eieiomt-sym-optimize cs)))) ;; 3) If it's bound return this one. (if (fboundp cs) - (cons cs (aref (class-v class) class-symbol)) + (cons cs (eieio--class-symbol (class-v class))) ;; 4) If it's not bound then this variable knows something (if (symbol-value cs) (progn @@ -2499,8 +2530,7 @@ is memorized for faster future use." ;; 4.2) The optimizer should always have chosen a ;; function-symbol ;;(if (fboundp cs) - (cons cs (aref (class-v (intern (symbol-name class))) - class-symbol)) + (cons cs (eieio--class-symbol (class-v (intern (symbol-name class))))) ;;(error "EIEIO optimizer: erratic data loss!")) ) ;; There never will be a funcall... @@ -2523,9 +2553,9 @@ is memorized for faster future use." If SET-ALL is non-nil, then when a default is nil, that value is reset. If SET-ALL is nil, the slots are only reset if the default is not nil." - (let ((scoped-class (aref obj object-class)) + (let ((scoped-class (eieio--object-class obj)) (eieio-initializing-object t) - (pub (aref (class-v (aref obj object-class)) class-public-a))) + (pub (eieio--class-public-a (class-v (eieio--object-class obj))))) (while pub (let ((df (eieio-oref-default obj (car pub)))) (if (or df set-all) @@ -2536,7 +2566,7 @@ not nil." "For CLASS, convert INITARG to the actual attribute name. If there is no translation, pass it in directly (so we can cheat if need be... May remove that later...)" - (let ((tuple (assoc initarg (aref (class-v class) class-initarg-tuples)))) + (let ((tuple (assoc initarg (eieio--class-initarg-tuples (class-v class))))) (if tuple (cdr tuple) nil))) @@ -2544,7 +2574,7 @@ need be... May remove that later...)" (defun eieio-attribute-to-initarg (class attribute) "In CLASS, convert the ATTRIBUTE into the corresponding init argument tag. This is usually a symbol that starts with `:'." - (let ((tuple (rassoc attribute (aref (class-v class) class-initarg-tuples)))) + (let ((tuple (rassoc attribute (eieio--class-initarg-tuples (class-v class))))) (if tuple (car tuple) nil))) @@ -2632,10 +2662,9 @@ SLOTS are the initialization slots used by `shared-initialize'. This static method is called when an object is constructed. It allocates the vector used to represent an EIEIO object, and then calls `shared-initialize' on that object." - (let* ((new-object (copy-sequence (aref (class-v class) - class-default-object-cache)))) + (let* ((new-object (copy-sequence (eieio--class-default-object-cache (class-v class))))) ;; Update the name for the newly created object. - (aset new-object object-name newname) + (setf (eieio--object-name new-object) newname) ;; Call the initialize method on the new object with the slots ;; that were passed down to us. (initialize-instance new-object slots) @@ -2649,9 +2678,9 @@ Called from the constructor routine.") (defmethod shared-initialize ((obj eieio-default-superclass) slots) "Set slots of OBJ with SLOTS which is a list of name/value pairs. Called from the constructor routine." - (let ((scoped-class (aref obj object-class))) + (let ((scoped-class (eieio--object-class obj))) (while slots - (let ((rn (eieio-initarg-to-attribute (object-class-fast obj) + (let ((rn (eieio-initarg-to-attribute (eieio--object-class obj) (car slots)))) (if (not rn) (slot-missing obj (car slots) 'oset (car (cdr slots))) @@ -2673,9 +2702,9 @@ not taken, then new objects of your class will not have their values dynamically set from SLOTS." ;; First, see if any of our defaults are `lambda', and ;; re-evaluate them and apply the value to our slots. - (let* ((scoped-class (class-v (aref this object-class))) - (slot (aref scoped-class class-public-a)) - (defaults (aref scoped-class class-public-d))) + (let* ((scoped-class (class-v (eieio--object-class this))) + (slot (eieio--class-public-a scoped-class)) + (defaults (eieio--class-public-d scoped-class))) (while slot ;; For each slot, see if we need to evaluate it. ;; @@ -2705,7 +2734,7 @@ to be set. This method is called from `oref', `oset', and other functions which directly reference slots in EIEIO objects." - (signal 'invalid-slot-name (list (object-name object) + (signal 'invalid-slot-name (list (eieio-object-name object) slot-name))) (defgeneric slot-unbound (object class slot-name fn) @@ -2723,7 +2752,7 @@ Use `slot-boundp' to determine if a slot is bound or not. In CLOS, the argument list is (CLASS OBJECT SLOT-NAME), but EIEIO can only dispatch on the first argument, so the first two are swapped." - (signal 'unbound-slot (list (class-name class) (object-name object) + (signal 'unbound-slot (list (eieio-class-name class) (eieio-object-name object) slot-name fn))) (defgeneric no-applicable-method (object method &rest args) @@ -2737,7 +2766,7 @@ ARGS are the arguments that were passed to METHOD. Implement this for a class to block this signal. The return value becomes the return value of the original method call." - (signal 'no-method-definition (list method (object-name object))) + (signal 'no-method-definition (list method (eieio-object-name object))) ) (defgeneric no-next-method (object &rest args) @@ -2751,7 +2780,7 @@ ARGS are the arguments it is called by. This method signals `no-next-method' by default. Override this method to not throw an error, and its return value becomes the return value of `call-next-method'." - (signal 'no-next-method (list (object-name object) args)) + (signal 'no-next-method (list (eieio-object-name object) args)) ) (defgeneric clone (obj &rest params) @@ -2764,7 +2793,7 @@ first and modify the returned object.") (defmethod clone ((obj eieio-default-superclass) &rest params) "Make a copy of OBJ, and then apply PARAMS." (let ((nobj (copy-sequence obj)) - (nm (aref obj object-name)) + (nm (eieio--object-name obj)) (passname (and params (stringp (car params)))) (num 1)) (if params (shared-initialize nobj (if passname (cdr params) params))) @@ -2773,8 +2802,8 @@ first and modify the returned object.") (if (string-match "-\\([0-9]+\\)" nm) (setq num (1+ (string-to-number (match-string 1 nm))) nm (substring nm 0 (match-beginning 0)))) - (aset nobj object-name (concat nm "-" (int-to-string num)))) - (aset nobj object-name (car params))) + (setf (eieio--object-name nobj) (concat nm "-" (int-to-string num)))) + (setf (eieio--object-name nobj) (car params))) nobj)) (defgeneric destructor (this &rest params) @@ -2806,7 +2835,7 @@ Implement this function and specify STRINGS in a call to `call-next-method' to provide additional summary information. When passing in extra strings from child classes, always remember to prepend a space." - (object-name this (apply 'concat strings))) + (eieio-object-name this (apply 'concat strings))) (defvar eieio-print-depth 0 "When printing, keep track of the current indentation depth.") @@ -2823,11 +2852,11 @@ object are discouraged from being written. this object." (when comment (princ ";; Object ") - (princ (object-name-string this)) + (princ (eieio-object-name-string this)) (princ "\n") (princ comment) (princ "\n")) - (let* ((cl (object-class this)) + (let* ((cl (eieio-object-class this)) (cv (class-v cl))) ;; Now output readable lisp to recreate this object ;; It should look like this: @@ -2835,14 +2864,14 @@ this object." ;; Each slot's slot is writen using its :writer. (princ (make-string (* eieio-print-depth 2) ? )) (princ "(") - (princ (symbol-name (class-constructor (object-class this)))) + (princ (symbol-name (class-constructor (eieio-object-class this)))) (princ " ") - (prin1 (object-name-string this)) + (prin1 (eieio-object-name-string this)) (princ "\n") ;; Loop over all the public slots - (let ((publa (aref cv class-public-a)) - (publd (aref cv class-public-d)) - (publp (aref cv class-public-printer)) + (let ((publa (eieio--class-public-a cv)) + (publd (eieio--class-public-d cv)) + (publp (eieio--class-public-printer cv)) (eieio-print-depth (1+ eieio-print-depth))) (while publa (when (slot-boundp this (car publa)) @@ -2877,7 +2906,7 @@ this object." ((consp thing) (eieio-list-prin1 thing)) ((class-p thing) - (princ (class-name thing))) + (princ (eieio-class-name thing))) ((or (keywordp thing) (booleanp thing)) (prin1 thing)) ((symbolp thing) @@ -2921,34 +2950,30 @@ of `eq'." (let ((key nil) (body nil) (firstarg nil) (argfix nil) (argclass nil) loopa) ;; find optional keys (setq key - (cond ((or (eq ':BEFORE (car args)) - (eq ':before (car args))) + (cond ((memq (car args) '(:BEFORE :before)) (setq args (cdr args)) method-before) - ((or (eq ':AFTER (car args)) - (eq ':after (car args))) + ((memq (car args) '(:AFTER :after)) (setq args (cdr args)) method-after) - ((or (eq ':PRIMARY (car args)) - (eq ':primary (car args))) - (setq args (cdr args)) - method-primary) - ((or (eq ':STATIC (car args)) - (eq ':static (car args))) + ((memq (car args) '(:STATIC :static)) (setq args (cdr args)) method-static) - ;; Primary key + ((memq (car args) '(:PRIMARY :primary)) + (setq args (cdr args)) + method-primary) + ;; Primary key. (t method-primary))) - ;; get body, and fix contents of args to be the arguments of the fn. + ;; Get body, and fix contents of args to be the arguments of the fn. (setq body (cdr args) args (car args)) (setq loopa args) - ;; Create a fixed version of the arguments + ;; Create a fixed version of the arguments. (while loopa (setq argfix (cons (if (listp (car loopa)) (car (car loopa)) (car loopa)) argfix)) (setq loopa (cdr loopa))) - ;; make sure there is a generic + ;; Make sure there is a generic. (eieio-defgeneric method (if (stringp (car body)) @@ -2965,11 +2990,9 @@ of `eq'." (if (not (class-p argclass)) (error "Unknown class type %s in method parameters" (nth 1 firstarg)))) - (if (= key -1) - (signal 'wrong-type-argument (list :static 'non-class-arg))) - ;; generics are higher + ;; Generics are higher. (setq key (eieio-specialized-key-to-generic-key key))) - ;; Put this lambda into the symbol so we can find it + ;; Put this lambda into the symbol so we can find it. (if (byte-code-function-p (car-safe body)) (eieiomt-add method (car-safe body) key argclass) (eieiomt-add method (append (list 'lambda (reverse argfix)) body) @@ -3019,7 +3042,7 @@ of `eq'." "Display EIEIO OBJECT in fancy format. Overrides the edebug default. Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate." - (cond ((class-p object) (class-name object)) + (cond ((class-p object) (eieio-class-name object)) ((eieio-object-p object) (object-print object)) ((and (listp object) (or (class-p (car object)) (eieio-object-p (car object)))) diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el index 0f01857381c..5a6b486dcd0 100644 --- a/lisp/emacs-lisp/eldoc.el +++ b/lisp/emacs-lisp/eldoc.el @@ -356,7 +356,8 @@ In the absence of INDEX, just call `eldoc-docstring-format-sym-doc'." (setq doc (copy-sequence args)) (add-text-properties start end (list 'face argument-face) doc)) (setq doc (eldoc-docstring-format-sym-doc - sym doc 'font-lock-function-name-face)) + sym doc (if (functionp sym) 'font-lock-function-name-face + 'font-lock-keyword-face))) doc))) ;; Return a string containing a brief (one-line) documentation string for diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el index dd849362228..7df3acccbc9 100644 --- a/lisp/emacs-lisp/ert.el +++ b/lisp/emacs-lisp/ert.el @@ -568,7 +568,8 @@ failed." (defun ert--explain-format-atom (x) "Format the atom X for `ert--explain-equal'." (cl-typecase x - (fixnum (list x (format "#x%x" x) (format "?%c" x))) + (character (list x (format "#x%x" x) (format "?%c" x))) + (fixnum (list x (format "#x%x" x))) (t x))) (defun ert--explain-equal-rec (a b) diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 72794c304ea..4ebaa0a49d5 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -226,7 +226,7 @@ font-lock keywords will not be case sensitive." (setq font-lock-defaults `((lisp-font-lock-keywords lisp-font-lock-keywords-1 lisp-font-lock-keywords-2) - nil ,keywords-case-insensitive (("+-*/.<>=!?$%_&~^:@" . "w")) nil + nil ,keywords-case-insensitive nil nil (font-lock-mark-block-function . mark-defun) (font-lock-syntactic-face-function . lisp-font-lock-syntactic-face-function)))) @@ -335,6 +335,22 @@ font-lock keywords will not be case sensitive." (bindings--define-key prof-map [prof-func] '(menu-item "Instrument Function..." elp-instrument-function :help "Instrument a function for profiling")) + ;; Maybe this should be in a separate submenu from the ELP stuff? + (bindings--define-key prof-map [sep-natprof] menu-bar-separator) + (bindings--define-key prof-map [prof-natprof-stop] + '(menu-item "Stop Native Profiler" profiler-stop + :help "Stop recording profiling information" + :enable (and (featurep 'profiler) + (profiler-running-p)))) + (bindings--define-key prof-map [prof-natprof-report] + '(menu-item "Show Profiler Report" profiler-report + :help "Show the current profiler report" + :enable (and (featurep 'profiler) + (profiler-running-p)))) + (bindings--define-key prof-map [prof-natprof-start] + '(menu-item "Start Native Profiler..." profiler-start + :help "Start recording profiling information")) + (bindings--define-key menu-map [lint] (cons "Linting" lint-map)) (bindings--define-key lint-map [lint-di] '(menu-item "Lint Directory..." elint-directory @@ -1156,7 +1172,7 @@ is the buffer position of the start of the containing expression." The function `calculate-lisp-indent' calls this to determine if the arguments of a Lisp function call should be indented specially. -INDENT-POINT is the position where the user typed TAB, or equivalent. +INDENT-POINT is the position at which the line being indented begins. Point is located at the point to indent under (for default indentation); STATE is the `parse-partial-sexp' state for that position. diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el index b0711fed26c..0632c7d2fc0 100644 --- a/lisp/emacs-lisp/nadvice.el +++ b/lisp/emacs-lisp/nadvice.el @@ -23,7 +23,7 @@ ;; This package lets you add behavior (which we call "piece of advice") to ;; existing functions, like the old `advice.el' package, but with much fewer -;; bells ans whistles. It comes in 2 parts: +;; bells and whistles. It comes in 2 parts: ;; ;; - The first part lets you add/remove functions, similarly to ;; add/remove-hook, from any "place" (i.e. as accepted by `setf') that diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 6059f03f999..c15c9e079fe 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -735,6 +735,8 @@ It will move point to somewhere in the headers." (package--with-work-buffer location file (package-unpack name version)))) +(defvar package--initialized nil) + (defun package-installed-p (package &optional min-version) "Return true if PACKAGE, of MIN-VERSION or newer, is installed. MIN-VERSION should be a version list." @@ -896,8 +898,6 @@ using `package-compute-transaction'." package-user-dir) (package-activate elt (version-to-list v-string))))) -(defvar package--initialized nil) - ;;;###autoload (defun package-install (name) "Install the package named NAME. @@ -1182,7 +1182,7 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages." (require 'lisp-mnt) (let ((package-name (symbol-name package)) (built-in (assq package package--builtins)) - desc pkg-dir reqs version installable) + desc pkg-dir reqs version installable archive) (prin1 package) (princ " is ") (cond @@ -1196,6 +1196,7 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages." ;; Available packages are in `package-archive-contents'. ((setq desc (cdr (assq package package-archive-contents))) (setq version (package-version-join (package-desc-vers desc)) + archive (aref desc (- (length desc) 1)) installable t) (if built-in (insert "a built-in package.\n\n") @@ -1224,8 +1225,10 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages." (installable (if built-in (insert (propertize "Built-in." 'font-lock-face 'font-lock-builtin-face) - " Alternate version available -- ") - (insert "Available -- ")) + " Alternate version available") + (insert "Available")) + (insert " from " archive) + (insert " -- ") (let ((button-text (if (display-graphic-p) "Install" "[Install]")) (button-face (if (display-graphic-p) '(:box (:line-width 2 :color "dark grey") @@ -1588,10 +1591,11 @@ call will upgrade the package." (length upgrades) (if (= (length upgrades) 1) "" "s"))))) -(defun package-menu-execute () +(defun package-menu-execute (&optional noquery) "Perform marked Package Menu actions. Packages marked for installation are downloaded and installed; -packages marked for deletion are removed." +packages marked for deletion are removed. +Optional argument NOQUERY non-nil means do not ask the user to confirm." (interactive) (unless (derived-mode-p 'package-menu-mode) (error "The current buffer is not in Package Menu mode")) @@ -1611,16 +1615,20 @@ packages marked for deletion are removed." (push (car id) install-list)))) (forward-line))) (when install-list - (if (yes-or-no-p + (if (or + noquery + (yes-or-no-p (if (= (length install-list) 1) (format "Install package `%s'? " (car install-list)) (format "Install these %d packages (%s)? " (length install-list) - (mapconcat 'symbol-name install-list ", ")))) + (mapconcat 'symbol-name install-list ", "))))) (mapc 'package-install install-list))) ;; Delete packages, prompting if necessary. (when delete-list - (if (yes-or-no-p + (if (or + noquery + (yes-or-no-p (if (= (length delete-list) 1) (format "Delete package `%s-%s'? " (caar delete-list) @@ -1630,7 +1638,7 @@ packages marked for deletion are removed." (mapconcat (lambda (elt) (concat (car elt) "-" (cdr elt))) delete-list - ", ")))) + ", "))))) (dolist (elt delete-list) (condition-case-unless-debug err (package-delete (car elt) (cdr elt)) diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el index 94b3c1553e5..da487e463e2 100644 --- a/lisp/emacs-lisp/tabulated-list.el +++ b/lisp/emacs-lisp/tabulated-list.el @@ -379,7 +379,9 @@ Return the column number after insertion." (setq width (- width shift)) (setq x (+ x shift)))) (if (stringp col-desc) - (insert (propertize label 'help-echo help-echo)) + (insert (if (get-text-property 0 'help-echo label) + label + (propertize label 'help-echo help-echo))) (apply 'insert-text-button label (cdr col-desc))) (let ((next-x (+ x pad-right width))) ;; No need to append any spaces if this is the last column. diff --git a/lisp/emacs-lisp/trace.el b/lisp/emacs-lisp/trace.el index fb1b995be2b..09c4969cf18 100644 --- a/lisp/emacs-lisp/trace.el +++ b/lisp/emacs-lisp/trace.el @@ -256,9 +256,9 @@ be printed along with the arguments in the trace." (read-from-minibuffer "Context expression: " nil read-expression-map t 'read-expression-history)))) - `(lambda () - (let ((print-circle t)) - (concat " [" (prin1-to-string ,exp) "]")))))))) + (lambda () + (let ((print-circle t)) + (concat " [" (prin1-to-string (eval exp t)) "]")))))))) ;;;###autoload (defun trace-function-foreground (function &optional buffer context) diff --git a/lisp/emulation/vip.el b/lisp/emulation/vip.el index 4e6749d9cfb..e086f26e8ab 100644 --- a/lisp/emulation/vip.el +++ b/lisp/emulation/vip.el @@ -183,6 +183,7 @@ If nil then it is bound to `delete-backward-char'." (define-key map "\C-z" 'vip-change-mode-to-emacs) (define-key map "\e" 'vip-ESC) + (define-key map [?\S-\ ] 'vip-scroll-back) (define-key map " " 'vip-scroll) (define-key map "!" 'vip-command-argument) (define-key map "\"" 'vip-command-argument) diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el index 6945e870604..3813c304de1 100644 --- a/lisp/emulation/viper-cmd.el +++ b/lisp/emulation/viper-cmd.el @@ -5085,12 +5085,12 @@ Mail anyway (y or n)? ") (require 'reporter) (set-window-configuration window-config) - (reporter-submit-bug-report "kifer@cs.stonybrook.edu" - (viper-version) - varlist - nil 'delete-other-windows - salutation) - )) + (reporter-submit-bug-report + "kifer@cs.stonybrook.edu, bug-gnu-emacs@gnu.org" + (viper-version) + varlist + nil 'delete-other-windows + salutation))) diff --git a/lisp/epa.el b/lisp/epa.el index 61a1378aa22..852d10b1cf7 100644 --- a/lisp/epa.el +++ b/lisp/epa.el @@ -169,6 +169,7 @@ You should bind this variable with `let', but do not set it globally.") (define-key keymap "n" 'next-line) (define-key keymap "p" 'previous-line) (define-key keymap " " 'scroll-up-command) + (define-key keymap [?\S-\ ] 'scroll-down-command) (define-key keymap [delete] 'scroll-down-command) (define-key keymap "q" 'epa-exit-buffer) (define-key keymap [menu-bar epa-key-list-mode] (cons "Keys" menu-map)) diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog index bbe551c735d..f3d54782897 100644 --- a/lisp/erc/ChangeLog +++ b/lisp/erc/ChangeLog @@ -1,3 +1,16 @@ +2013-02-13 Aidan Gauland <aidalgol@no8wireless.co.nz> + + * erc-match.el (erc-match-message): Fix last commit. + +2013-02-12 Aidan Gauland <aidalgol@no8wireless.co.nz> + + * erc-match.el (erc-match-message): + Don't truncate action messages. (Bug#13689) + +2013-02-09 Eli Zaretskii <eliz@gnu.org> + + * erc-dcc.el (erc-dcc-get-file): Don't reference buffer-file-type. + 2013-01-11 Dmitry Antipov <dmantipov@yandex.ru> * erc-dcc.el (erc-dcc-send-file): Use point-min-marker. diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el index c27bb629f9d..acb8febea80 100644 --- a/lisp/erc/erc-dcc.el +++ b/lisp/erc/erc-dcc.el @@ -942,7 +942,6 @@ filter and a process sentinel, and making the connection." (set-buffer-multibyte nil)) (setq mode-line-process '(":%s") - buffer-file-type t buffer-read-only t) (setq erc-dcc-file-name file) diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el index 7ca86b5ac95..63683890226 100644 --- a/lisp/erc/erc-match.el +++ b/lisp/erc/erc-match.el @@ -452,11 +452,19 @@ Use this defun with `erc-insert-modify-hook'." (match-beginning 0))) (nick-end (when nick-beg (match-end 0))) - (message (buffer-substring (if (and nick-end - (<= (+ 2 nick-end) (point-max))) - (+ 2 nick-end) - (point-min)) - (point-max)))) + (message (buffer-substring + (if (and nick-end + (<= (+ 2 nick-end) (point-max))) + ;; Message starts 2 characters after the nick + ;; except for CTCP ACTION messages. Nick + ;; surrounded by angle brackets only in normal + ;; messages. + (+ nick-end + (if (eq ?> (char-after nick-end)) + 2 + 1)) + (point-min)) + (point-max)))) (when (and vector (not (and erc-match-exclude-server-buffer (erc-server-buffer-p)))) diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el index 8520a9c83d2..91311deffcf 100644 --- a/lisp/eshell/em-cmpl.el +++ b/lisp/eshell/em-cmpl.el @@ -63,7 +63,7 @@ ;; The list of possible completions can be viewed at any point by ;; pressing <M-?>. ;; -;; Finally, context-related help can be accessed by pressing <C-c i>. +;; Finally, context-related help can be accessed by pressing <C-c M-h>. ;; This only works well if the completion function has provided Eshell ;; with sufficient pointers to locate the relevant help text. diff --git a/lisp/eshell/em-ls.el b/lisp/eshell/em-ls.el index eec932103ee..73ed617b871 100644 --- a/lisp/eshell/em-ls.el +++ b/lisp/eshell/em-ls.el @@ -26,9 +26,8 @@ ;;; Code: -(eval-when-compile - (require 'cl-lib) - (require 'eshell)) +(eval-when-compile (require 'eshell)) +(require 'cl-lib) (require 'esh-util) (require 'esh-opt) @@ -328,6 +327,7 @@ instead." (defvar numeric-uid-gid) (defvar reverse-list) (defvar show-all) +(defvar show-almost-all) (defvar show-recursive) (defvar show-size) (defvar sort-method) @@ -337,13 +337,15 @@ instead." (defun eshell-do-ls (&rest args) "Implementation of \"ls\" in Lisp, passing ARGS." (funcall flush-func -1) - ;; process the command arguments, and begin listing files + ;; Process the command arguments, and begin listing files. (eshell-eval-using-options "ls" (if eshell-ls-initial-args (list eshell-ls-initial-args args) args) `((?a "all" nil show-all - "show all files in directory") + "do not ignore entries starting with .") + (?A "almost-all" nil show-almost-all + "do not list implied . and ..") (?c nil by-ctime sort-method "sort by last status change time") (?d "directory" nil dir-literal @@ -558,7 +560,15 @@ relative to that directory." ;; later when we are going to ;; display user and group names. (if numeric-uid-gid 'integer 'string)))) - (when (and (not show-all) eshell-ls-exclude-regexp) + (when (and show-almost-all + (not show-all)) + (setq entries + (cl-remove-if + (lambda (entry) + (member (caar entry) '("." ".."))) + entries))) + (when (and (not show-all) + eshell-ls-exclude-regexp) (while (and entries (string-match eshell-ls-exclude-regexp (caar entries))) (setq entries (cdr entries))) diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el index f6dd0d5e990..94508d71592 100644 --- a/lisp/eshell/em-unix.el +++ b/lisp/eshell/em-unix.el @@ -1040,6 +1040,7 @@ Show wall-clock time elapsed during execution of COMMAND.") (defun eshell/su (&rest args) "Alias \"su\" to call Tramp." + (require 'tramp) (setq args (eshell-stringify-list (eshell-flatten-list args))) (let ((orig-args (copy-tree args))) (eshell-eval-using-options @@ -1077,6 +1078,7 @@ Become another USER during a login session.") (defun eshell/sudo (&rest args) "Alias \"sudo\" to call Tramp." + (require 'tramp) (setq args (eshell-stringify-list (eshell-flatten-list args))) (let ((orig-args (copy-tree args))) (eshell-eval-using-options @@ -1111,8 +1113,6 @@ Execute a COMMAND as the superuser or another USER.") (format "%s|sudo:%s@%s:%s" (substring prefix 0 -1) user host dir) (format "/sudo:%s@%s:%s" user host dir)))) - ;; Ensure, that Tramp has connected to that construct already. - (ignore (file-exists-p default-directory)) (eshell-named-command (car orig-args) (cdr orig-args)))))))) (put 'eshell/sudo 'eshell-no-numeric-conversions t) diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el index 406822367d1..aa630dc87aa 100644 --- a/lisp/eshell/esh-proc.el +++ b/lisp/eshell/esh-proc.el @@ -165,43 +165,38 @@ The signals which will cause this to happen are matched by (list-processes))) (defun eshell/kill (&rest args) - "Kill processes, buffers, symbol or files." - (let ((ptr args) - (signum 'SIGINT)) - (while ptr - (if (or (eshell-processp (car ptr)) - (and (stringp (car ptr)) - (string-match "^[A-Za-z/][A-Za-z0-9<>/]+$" - (car ptr)))) - ;; What about when $lisp-variable is possible here? - ;; It could very well name a process. - (setcar ptr (get-process (car ptr)))) - (setq ptr (cdr ptr))) + "Kill processes. +Usage: kill [-<signal>] <pid>|<process> ... +Accepts PIDs and process objects." + ;; If the first argument starts with a dash, treat it as the signal + ;; specifier. + (let ((signum 'SIGINT)) + (let ((arg (car args)) + (case-fold-search nil)) + (when (stringp arg) + (cond + ((string-match "\\`-[[:digit:]]+\\'" arg) + (setq signum (abs (string-to-number arg)))) + ((string-match "\\`-\\([[:upper:]]+\\|[[:lower:]]+\\)\\'" arg) + (setq signum (abs (string-to-number arg))))) + (setq args (cdr args)))) (while args - (let ((id (if (eshell-processp (car args)) - (process-id (car args)) - (car args)))) - (when id - (cond - ((null id) - (error "kill: bad signal spec")) - ((and (numberp id) (= id 0)) - (error "kill: bad signal spec `%d'" id)) - ((and (stringp id) - (string-match "^-?[0-9]+$" id)) - (setq signum (abs (string-to-number id)))) - ((stringp id) - (let (case-fold-search) - (if (string-match "^-\\([A-Z]+[12]?\\)$" id) - (setq signum - (intern (concat "SIG" (match-string 1 id)))) - (error "kill: bad signal spec `%s'" id)))) - ((< id 0) - (setq signum (abs id))) - (t - (signal-process id signum))))) - (setq args (cdr args))) - nil)) + (let ((arg (if (eshell-processp (car args)) + (process-id (car args)) + (car args)))) + (when arg + (cond + ((null arg) + (error "kill: null pid. Process may actually be a network connection.")) + ((not (numberp arg)) + (error "kill: invalid argument type: %s" (type-of arg))) + ((and (numberp arg) + (<= arg 0)) + (error "kill: bad pid: %d" arg)) + (t + (signal-process arg signum))))) + (setq args (cdr args)))) + nil) (defun eshell-read-process-name (prompt) "Read the name of a process from the minibuffer, using completion. diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el index 2f49a21e76c..f9b86219e9b 100644 --- a/lisp/eshell/esh-util.el +++ b/lisp/eshell/esh-util.el @@ -229,6 +229,7 @@ If N or M is nil, it means the end of the list." "Content of $PATH. It might be different from \(getenv \"PATH\"\), when `default-directory' points to a remote host.") +(make-variable-buffer-local 'eshell-path-env) (defun eshell-parse-colon-path (path-env) "Split string with `parse-colon-path'. diff --git a/lisp/ffap.el b/lisp/ffap.el index c5b0784e5a2..0769469cbf2 100644 --- a/lisp/ffap.el +++ b/lisp/ffap.el @@ -106,6 +106,7 @@ ;;; Code: (require 'url-parse) +(require 'thingatpt) (define-obsolete-variable-alias 'ffap-version 'emacs-version "23.2") @@ -178,16 +179,14 @@ Note this name may be omitted if it equals the default :group 'ffap) (defvar ffap-url-regexp - ;; Could just use `url-nonrelative-link' of w3, if loaded. - ;; This regexp is not exhaustive, it just matches common cases. (concat "\\(" "news\\(post\\)?:\\|mailto:\\|file:" ; no host ok "\\|" "\\(ftp\\|https?\\|telnet\\|gopher\\|www\\|wais\\)://" ; needs host - "\\)." ; require one more character - ) - "Regexp matching URLs. Use nil to disable URL features in ffap.") + "\\)") + "Regexp matching the beginning of a URI, for FFAP. +If the value is nil, disable URL-matching features in ffap.") (defcustom ffap-foo-at-bar-prefix "mailto" "Presumed URL prefix type of strings like \"<foo.9z@bar>\". @@ -571,38 +570,9 @@ Looks at `ffap-ftp-default-user', returns \"\" for \"localhost\"." (ffap-ftp-regexp (ffap-host-to-filename mach)) )) -(defvar ffap-newsgroup-regexp "^[[:lower:]]+\\.[-+[:lower:]_0-9.]+$" - "Strings not matching this fail `ffap-newsgroup-p'.") -(defvar ffap-newsgroup-heads ; entirely inadequate - '("alt" "comp" "gnu" "misc" "news" "sci" "soc" "talk") - "Used by `ffap-newsgroup-p' if gnus is not running.") - -(defun ffap-newsgroup-p (string) - "Return STRING if it looks like a newsgroup name, else nil." - (and - (string-match ffap-newsgroup-regexp string) - (let ((htbs '(gnus-active-hashtb gnus-newsrc-hashtb gnus-killed-hashtb)) - (heads ffap-newsgroup-heads) - htb ret) - (while htbs - (setq htb (car htbs) htbs (cdr htbs)) - (condition-case nil - (progn - ;; errs: htb symbol may be unbound, or not a hash-table. - ;; gnus-gethash is just a macro for intern-soft. - (and (symbol-value htb) - (intern-soft string (symbol-value htb)) - (setq ret string htbs nil)) - ;; If we made it this far, gnus is running, so ignore "heads": - (setq heads nil)) - (error nil))) - (or ret (not heads) - (let ((head (string-match "\\`\\([[:lower:]]+\\)\\." string))) - (and head (setq head (substring string 0 (match-end 1))) - (member head heads) - (setq ret string)))) - ;; Is there ever a need to modify string as a newsgroup name? - ret))) +(defvaralias 'ffap-newsgroup-regexp 'thing-at-point-newsgroup-regexp) +(defvaralias 'ffap-newsgroup-heads 'thing-at-point-newsgroup-heads) +(defalias 'ffap-newsgroup-p 'thing-at-point-newsgroup-p) (defsubst ffap-url-p (string) "If STRING looks like an URL, return it (maybe improved), else nil." @@ -1017,7 +987,7 @@ If a given RFC isn't in these then `ffap-rfc-path' is offered." ;; * no commas (good for latex) (file "--:\\\\$+<>@-Z_[:alpha:]~*?" "<@" "@>;.,!:") ;; An url, or maybe a email/news message-id: - (url "--:=&?$+@-Z_[:alpha:]~#,%;*" "^[:alnum:]" ":;.,!?") + (url "--:=&?$+@-Z_[:alpha:]~#,%;*()!'" "^[0-9a-zA-Z]" ":;.,!?") ;; Find a string that does *not* contain a colon: (nocolon "--9$+<>@-Z_[:alpha:]~" "<@" "@>;.,!?") ;; A machine: @@ -1031,7 +1001,7 @@ possibly a major-mode name, or one of the symbol Function `ffap-string-at-point' uses the data fields as follows: 1. find a maximal string of CHARS around point, 2. strip BEG chars before point from the beginning, -3. Strip END chars after point from the end.") +3. strip END chars after point from the end.") (defvar ffap-string-at-point nil ;; Added at suggestion of RHOGEE (for ff-paths), 7/24/95. @@ -1050,22 +1020,22 @@ Sets the variable `ffap-string-at-point' and the variable (or (assq (or mode major-mode) ffap-string-at-point-mode-alist) (assq 'file ffap-string-at-point-mode-alist)))) (pt (point)) - (str - (if (and transient-mark-mode mark-active) - (buffer-substring - (setcar ffap-string-at-point-region (region-beginning)) - (setcar (cdr ffap-string-at-point-region) (region-end))) - (buffer-substring - (save-excursion - (skip-chars-backward (car args)) - (skip-chars-forward (nth 1 args) pt) - (setcar ffap-string-at-point-region (point))) - (save-excursion - (skip-chars-forward (car args)) - (skip-chars-backward (nth 2 args) pt) - (setcar (cdr ffap-string-at-point-region) (point))))))) - (set-text-properties 0 (length str) nil str) - (setq ffap-string-at-point str))) + (beg (if (use-region-p) + (region-beginning) + (save-excursion + (skip-chars-backward (car args)) + (skip-chars-forward (nth 1 args) pt) + (point)))) + (end (if (use-region-p) + (region-end) + (save-excursion + (skip-chars-forward (car args)) + (skip-chars-backward (nth 2 args) pt) + (point))))) + (setq ffap-string-at-point + (buffer-substring-no-properties + (setcar ffap-string-at-point-region beg) + (setcar (cdr ffap-string-at-point-region) end))))) (defun ffap-string-around () ;; Sometimes useful to decide how to treat a string. @@ -1098,35 +1068,15 @@ Assumes the buffer has not changed." (defun ffap-url-at-point () "Return URL from around point if it exists, or nil." - ;; Could use w3's url-get-url-at-point instead. Both handle "URL:", - ;; ignore non-relative links, trim punctuation. The other will - ;; actually look back if point is in whitespace, but I would rather - ;; ffap be less aggressive in such situations. (when ffap-url-regexp (or (and (eq major-mode 'w3-mode) ; In a w3 buffer button? (w3-view-this-url t)) - ;; Is there a reason not to strip trailing colon? - (let ((name (ffap-string-at-point 'url))) - (cond - ((string-match "^url:" name) (setq name (substring name 4))) - ((and (string-match "\\`[^:</>@]+@[^:</>@]+[[:alnum:]]\\'" name) - ;; "foo@bar": could be "mailto" or "news" (a Message-ID). - ;; Without "<>" it must be "mailto". Otherwise could be - ;; either, so consult `ffap-foo-at-bar-prefix'. - (let ((prefix (if (and (equal (ffap-string-around) "<>") - ;; Expect some odd characters: - (string-match "[$.0-9].*[$.0-9].*@" name)) - ;; Could be news: - ffap-foo-at-bar-prefix - "mailto"))) - (and prefix (setq name (concat prefix ":" name)))))) - ((ffap-newsgroup-p name) (setq name (concat "news:" name))) - ((and (string-match "\\`[[:alnum:]]+\\'" name) ; <mic> <root> <nobody> - (equal (ffap-string-around) "<>") - ;; (ffap-user-p name): - (not (string-match "~" (expand-file-name (concat "~" name))))) - (setq name (concat "mailto:" name))) - ((ffap-url-p name))))))) + (let ((thing-at-point-beginning-of-url-regexp ffap-url-regexp) + (thing-at-point-default-mail-scheme ffap-foo-at-bar-prefix)) + (thing-at-point-url-at-point t + (if (use-region-p) + (cons (region-beginning) + (region-end)))))))) (defvar ffap-gopher-regexp "^.*\\<\\(Type\\|Name\\|Path\\|Host\\|Port\\) *= *\\(.*\\) *$" @@ -1763,7 +1713,8 @@ Only intended for interactive use." (defun ffap-gnus-hook () "Bind `ffap-gnus-next' and `ffap-gnus-menu' to M-l and M-m, resp." - (set (make-local-variable 'ffap-foo-at-bar-prefix) "news") ; message-id's + ;; message-id's + (setq-local thing-at-point-default-mail-uri-scheme "news") ;; Note "l", "L", "m", "M" are taken: (local-set-key "\M-l" 'ffap-gnus-next) (local-set-key "\M-m" 'ffap-gnus-menu)) diff --git a/lisp/files.el b/lisp/files.el index b015b53db3c..9da9ac6fd53 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -507,6 +507,11 @@ and ignores this variable." (other :tag "Query" other)) :group 'find-file) +(defvar enable-dir-local-variables t + "Non-nil means enable use of directory-local variables. +Some modes may wish to set this to nil to prevent directory-local +settings being applied, but still respect file-local ones.") + ;; This is an odd variable IMO. ;; You might wonder why it is needed, when we could just do: ;; (set (make-local-variable 'enable-local-variables) nil) @@ -1983,8 +1988,6 @@ Do you want to revisit the file normally now? ") (after-find-file error (not nowarn))) (current-buffer)))) -(defvar file-name-buffer-file-type-alist) ;From dos-w32.el. - (defun insert-file-contents-literally (filename &optional visit beg end replace) "Like `insert-file-contents', but only reads in the file literally. A buffer may be modified in several ways after reading into the buffer, @@ -1996,7 +1999,6 @@ This function ensures that none of these modifications will take place." (after-insert-file-functions nil) (coding-system-for-read 'no-conversion) (coding-system-for-write 'no-conversion) - (file-name-buffer-file-type-alist '(("" . t))) (inhibit-file-name-handlers ;; FIXME: Yuck!! We should turn insert-file-contents-literally ;; into a file operation instead! @@ -2496,6 +2498,7 @@ See also `auto-mode-alist'.") "\\.zoo\\'" "\\.[jew]ar\\'" "\\.xpi\\'" "\\.rar\\'" "\\.7z\\'" "\\.sx[dmicw]\\'" "\\.odt\\'" + "\\.diff\\'" "\\.patch\\'" "\\.tiff?\\'" "\\.gif\\'" "\\.png\\'" "\\.jpe?g\\'")) "List of regexps matching file names in which to ignore local variables. This includes `-*-' lines as well as trailing \"Local Variables\" sections. @@ -3662,8 +3665,12 @@ is found. Returns the new class name." (defun hack-dir-local-variables () "Read per-directory local variables for the current buffer. Store the directory-local variables in `dir-local-variables-alist' -and `file-local-variables-alist', without applying them." +and `file-local-variables-alist', without applying them. + +This does nothing if either `enable-local-variables' or +`enable-dir-local-variables' are nil." (when (and enable-local-variables + enable-dir-local-variables (or enable-remote-dir-locals (not (file-remote-p (or (buffer-file-name) default-directory))))) @@ -4557,28 +4564,21 @@ Before and after saving the buffer, this function runs (not (file-exists-p buffer-file-name)))) (let ((recent-save (recent-auto-save-p)) setmodes) - ;; If buffer has no file name, ask user for one. + ;; If buffer has no file name, ask user for one. (or buffer-file-name - (let ((filename - (expand-file-name - (read-file-name "File to save in: " - nil (expand-file-name (buffer-name)))))) - (if (file-exists-p filename) - (if (file-directory-p filename) - ;; Signal an error if the user specified the name of an - ;; existing directory. - (error "%s is a directory" filename) - (unless (y-or-n-p (format "File `%s' exists; overwrite? " - filename)) - (error "Canceled"))) - ;; Signal an error if the specified name refers to a - ;; non-existing directory. - (let ((dir (file-name-directory filename))) - (unless (file-directory-p dir) - (if (file-exists-p dir) - (error "%s is not a directory" dir) - (error "%s: no such directory" dir))))) - (set-visited-file-name filename))) + (let ((filename + (expand-file-name + (read-file-name "File to save in: " + nil (expand-file-name (buffer-name)))))) + (if (file-exists-p filename) + (if (file-directory-p filename) + ;; Signal an error if the user specified the name of an + ;; existing directory. + (error "%s is a directory" filename) + (unless (y-or-n-p (format "File `%s' exists; overwrite? " + filename)) + (error "Canceled")))) + (set-visited-file-name filename))) (or (verify-visited-file-modtime (current-buffer)) (not (file-exists-p buffer-file-name)) (yes-or-no-p @@ -4611,7 +4611,14 @@ Before and after saving the buffer, this function runs (run-hook-with-args-until-success 'write-file-functions) ;; If a hook returned t, file is already "written". ;; Otherwise, write it the usual way now. - (setq setmodes (basic-save-buffer-1))) + (let ((dir (file-name-directory + (expand-file-name buffer-file-name)))) + (unless (file-exists-p dir) + (if (y-or-n-p + (format "Directory `%s' does not exist; create? " dir)) + (make-directory dir t) + (error "Canceled"))) + (setq setmodes (basic-save-buffer-1)))) ;; Now we have saved the current buffer. Let's make sure ;; that buffer-file-coding-system is fixed to what ;; actually used for saving by binding it locally. @@ -4649,14 +4656,12 @@ Before and after saving the buffer, this function runs (basic-save-buffer-2)) (basic-save-buffer-2)) (if buffer-file-coding-system-explicit - (setcar buffer-file-coding-system-explicit last-coding-system-used) - (setq buffer-file-coding-system-explicit - (cons last-coding-system-used nil))))) + (setcar buffer-file-coding-system-explicit last-coding-system-used)))) ;; This returns a value (MODES EXTENDED-ATTRIBUTES BACKUPNAME), like ;; backup-buffer. (defun basic-save-buffer-2 () - (let (tempsetmodes setmodes) + (let (tempsetmodes setmodes writecoding) (if (not (file-writable-p buffer-file-name)) (let ((dir (file-name-directory buffer-file-name))) (if (not (file-directory-p dir)) @@ -4672,6 +4677,14 @@ Before and after saving the buffer, this function runs buffer-file-name))) (setq tempsetmodes t) (error "Attempt to save to a file which you aren't allowed to write")))))) + ;; This may involve prompting, so do it now before backing up the file. + ;; Otherwise there can be a delay while the user answers the + ;; prompt during which the original file has been renamed. (Bug#13522) + (setq writecoding + ;; Args here should match write-region call below around + ;; which we use writecoding. + (choose-write-coding-system nil nil buffer-file-name nil t + buffer-file-truename)) (or buffer-backed-up (setq setmodes (backup-buffer))) (let* ((dir (file-name-directory buffer-file-name)) @@ -4753,10 +4766,11 @@ Before and after saving the buffer, this function runs (logior (car setmodes) 128)))))) (let (success) (unwind-protect - (progn ;; Pass in nil&nil rather than point-min&max to indicate ;; we're saving the buffer rather than just a region. ;; write-region-annotate-functions may make us of it. + (let ((coding-system-for-write writecoding) + (coding-system-require-warning nil)) (write-region nil nil buffer-file-name nil t buffer-file-truename) (setq success t)) diff --git a/lisp/filesets.el b/lisp/filesets.el index 62ab7423f67..978512bd3a4 100644 --- a/lisp/filesets.el +++ b/lisp/filesets.el @@ -1,4 +1,4 @@ -;;; filesets.el --- handle group of files +;;; filesets.el --- handle group of files -*- coding: utf-8 -*- ;; Copyright (C) 2002-2013 Free Software Foundation, Inc. @@ -805,8 +805,8 @@ In order to view pdf or rtf files in an Emacs buffer, you could use these: (:match-number 2) (:get-file-name (lambda (master file) (filesets-which-file master file load-path)))))) - ("^\\([A-ZÄÖÜ][a-zäöüß]+\\([A-ZÄÖÜ][a-zäöüß]+\\)+\\)$" t - (((:pattern "\\<\\([A-ZÄÖÜ][a-zäöüß]+\\([A-ZÄÖÜ][a-zäöüß]+\\)+\\)\\>") + ("^\\([A-ZÄÖÜ][a-zäöüß]+\\([A-ZÄÖÜ][a-zäöüß]+\\)+\\)$" t + (((:pattern "\\<\\([A-ZÄÖÜ][a-zäöüß]+\\([A-ZÄÖÜ][a-zäöüß]+\\)+\\)\\>") (:scan-depth 5) (:stubp (lambda (a b) (not (filesets-files-in-same-directory-p a b)))) (:case-sensitive t) diff --git a/lisp/find-dired.el b/lisp/find-dired.el index ae7cc1c8629..f9a0c015bf7 100644 --- a/lisp/find-dired.el +++ b/lisp/find-dired.el @@ -210,13 +210,15 @@ use in place of \"-ls\" as the final argument." (insert " " dir ":\n") ;; Make second line a ``find'' line in analogy to the ``total'' or ;; ``wildcard'' line. - (insert " " args "\n") + (let ((point (point))) + (insert " " args "\n") + (dired-insert-set-properties point (point))) (setq buffer-read-only t) (let ((proc (get-buffer-process (current-buffer)))) (set-process-filter proc (function find-dired-filter)) (set-process-sentinel proc (function find-dired-sentinel)) ;; Initialize the process marker; it is used by the filter. - (move-marker (process-mark proc) 1 (current-buffer))) + (move-marker (process-mark proc) (point) (current-buffer))) (setq mode-line-process '(":%s")))) (defun kill-find () @@ -337,10 +339,11 @@ use in place of \"-ls\" as the final argument." (let ((buffer-read-only nil)) (save-excursion (goto-char (point-max)) - (insert "\n find " state) - (forward-char -1) ;Back up before \n at end of STATE. - (insert " at " (substring (current-time-string) 0 19)) - (forward-char 1) + (let ((point (point))) + (insert "\n find " state) + (forward-char -1) ;Back up before \n at end of STATE. + (insert " at " (substring (current-time-string) 0 19)) + (dired-insert-set-properties point (point))) (setq mode-line-process (concat ":" (symbol-name (process-status proc)))) diff --git a/lisp/font-lock.el b/lisp/font-lock.el index f714eaab233..9436012ee59 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -2256,13 +2256,13 @@ in which C preprocessor directives are used. e.g. `asm-mode' and "method-combination\\|setf-expander\\|skeleton\\|widget\\|" "function\\|\\(compiler\\|modify\\|symbol\\)-macro\\)\\)\\|" ;; Variable declarations. - "\\(const\\(ant\\)?\\|custom\\|varalias\\|face\\|parameter\\|var\\)\\|" + "\\(const\\(ant\\)?\\|custom\\|varalias\\|face\\|parameter\\|var\\(?:-local\\)?\\)\\|" ;; Structure declarations. "\\(class\\|group\\|theme\\|package\\|struct\\|type\\)" - "\\)\\)\\>" + "\\)\\)\\_>" ;; Any whitespace and defined object. "[ \t'\(]*" - "\\(setf[ \t]+\\sw+\\|\\sw+\\)?") + "\\(setf[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?") (1 font-lock-keyword-face) (9 (cond ((match-beginning 3) font-lock-function-name-face) ((match-beginning 6) font-lock-variable-name-face) @@ -2299,7 +2299,7 @@ in which C preprocessor directives are used. e.g. `asm-mode' and "with-silent-modifications" "with-syntax-table" "with-temp-buffer" "with-temp-file" "with-temp-message" "with-timeout" "with-timeout-handler" "with-wrapper-hook") t) - "\\>") + "\\_>") . 1) ;; Control structures. Common Lisp forms. (,(concat @@ -2320,23 +2320,25 @@ in which C preprocessor directives are used. e.g. `asm-mode' and "with-open-stream" "with-output-to-string" "with-package-iterator" "with-simple-restart" "with-slots" "with-standard-io-syntax") t) - "\\>") + "\\_>") . 1) ;; Exit/Feature symbols as constants. (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\>" - "[ \t']*\\(\\sw+\\)?") + "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?") (1 font-lock-keyword-face) (2 font-lock-constant-face nil t)) ;; Erroneous structures. ("(\\(abort\\|assert\\|warn\\|check-type\\|cerror\\|error\\|signal\\)\\>" 1 font-lock-warning-face) ;; Words inside \\[] tend to be for `substitute-command-keys'. - ("\\\\\\\\\\[\\(\\sw+\\)\\]" 1 font-lock-constant-face prepend) + ("\\\\\\\\\\[\\(\\(?:\\sw\\|\\s_\\)+\\)\\]" + (1 font-lock-constant-face prepend)) ;; Words inside `' tend to be symbol names. - ("`\\(\\sw\\sw+\\)'" 1 font-lock-constant-face prepend) + ("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'" + (1 font-lock-constant-face prepend)) ;; Constant values. - ("\\<:\\sw+\\>" 0 font-lock-builtin-face) + ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face) ;; ELisp and CLisp `&' keywords as types. - ("\\<\\&\\sw+\\>" . font-lock-type-face) + ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face) ;; ELisp regexp grouping constructs ((lambda (bound) (catch 'found @@ -2353,11 +2355,11 @@ in which C preprocessor directives are used. e.g. `asm-mode' and (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. -;;; ;; CL `with-' and `do-' constructs -;;; ("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) + ;; This is too general -- rms. + ;; A user complained that he has functions whose names start with `do' + ;; and that they get the wrong color. + ;; ;; CL `with-' and `do-' constructs + ;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) ))) "Gaudy level highlighting for Lisp modes.") diff --git a/lisp/frame.el b/lisp/frame.el index 243f524c403..4bf885b27b2 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -1666,7 +1666,7 @@ so the frame will go to the right maximization state after disabling fullscreen mode. See also `toggle-frame-fullscreen'." (interactive) - (if (eq (frame-parameter nil 'fullscreen) 'fullscreen) + (if (memq (frame-parameter nil 'fullscreen) '(fullscreen fullboth)) (modify-frame-parameters nil `((maximized @@ -1690,10 +1690,10 @@ See also `toggle-frame-maximized'." (modify-frame-parameters nil `((maximized - . ,(unless (eq (frame-parameter nil 'fullscreen) 'fullscreen) + . ,(unless (memq (frame-parameter nil 'fullscreen) '(fullscreen fullboth)) (frame-parameter nil 'fullscreen))) (fullscreen - . ,(if (eq (frame-parameter nil 'fullscreen) 'fullscreen) + . ,(if (memq (frame-parameter nil 'fullscreen) '(fullscreen fullboth)) (if (eq (frame-parameter nil 'maximized) 'maximized) 'maximized) 'fullscreen))))) @@ -1707,6 +1707,7 @@ See also `toggle-frame-maximized'." (define-key ctl-x-5-map "o" 'other-frame) (define-key global-map [f11] 'toggle-frame-fullscreen) (define-key global-map [(meta f10)] 'toggle-frame-maximized) +(define-key esc-map [f10] 'toggle-frame-maximized) ;; Misc. diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 1f1b46c8532..870164023d5 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,84 @@ +2013-03-06 Katsumi Yamaoka <yamaoka@jpl.org> + + * nndir.el (nndir-request-list): Remove 2nd argument passed to + nnml-request-list. (Bug#13873) + (nndir-request-newsgroups): Remove, unused. + + * nndraft.el (nndraft-request-newsgroups): Remove, unused. + +2013-03-03 Ted Phelps <phelps@gnusto.com> + + * shr.el: Make all the overlays set the `evaporate' property so that + they're removed properly. + +2013-02-25 Adam Sjøgren <asjo@koldfront.dk> + + * mml2015-el (mml2015-epg-key-image): Wrap epg-gpg-program in + shell-quote-argument. + +2013-02-22 David Engster <deng@randomsample.de> + + * gnus-registry.el (gnus-registry-save): Provide class name when + calling `eieio-persistent-read' to avoid "unsafe call" warning. Use + `condition-case' to stay compatible with older EIEIO versions which + only accept one argument. + +2013-02-17 Daiki Ueno <ueno@gnu.org> + + * mml2015.el (epg-key-user-id-list, epg-user-id-string) + (epg-user-id-validity): Autoload. + (mml2015-epg-check-user-id): New function. + (mml2015-epg-check-sub-key): New function split from + mml2015-epg-find-usable-key. + (mml2015-epg-find-usable-key): Accept context, name, usage, and + optional name-is-key-id, to handle the case when user-id is unusable. + Reported by Åukasz Stelmach <stlman@poczta.fm>. + +2013-02-17 Glenn Morris <rgm@gnu.org> + + * shr.el (shr-put-image): Use image-multi-frame-p if available. + +2013-02-16 Glenn Morris <rgm@gnu.org> + + * shr.el (shr-put-image): Only animate images that specify a delay. + This is consistent with the old image-animated-p behavior. + +2013-02-14 Katsumi Yamaoka <yamaoka@jpl.org> + + * gnus-util.el (gnus-define-keys): Convert [?\S-\ ] to [(shift space)] + for XEmacs. + +2013-02-13 Juri Linkov <juri@jurta.org> + + * gnus-art.el (gnus-article-mode-map): + * gnus-sum.el (gnus-summary-mode-map, gnus-summary-article-map): + Make S-SPC scroll in the opposite sense to SPC. (Bug#2145) + +2013-02-10 Katsumi Yamaoka <yamaoka@jpl.org> + + * nnir.el ("nnir"): Add 'virtual ability to nnir backend. (This was + done in 2012-07-22 by Andrew Cohen, but I reverted it mistakenly.) + +2013-02-07 Gábor Vida <gabor.v.vida@ericsson.com> (tiny change) + + * auth-source.el (auth-source-format-prompt): Don't get confused by + any "\" in replacement text. (Bug#13637) + +2013-01-30 Christopher Schmidt <christopher@ch.ristopher.com> + + * gnus-int.el (gnus-backend-trace-elapsed): New variable. + (gnus-backend-trace): Honour gnus-backend-trace. + + * mml.el (mml-insert-part): Insert closing tag. + + * mm-decode.el (mm-save-part): Handle invalid read-file-name results. + +2013-01-21 Lars Magne Ingebrigtsen <larsi@gnus.org> + + * gnus-sum.el (gnus-summary-read-group-1): Protect against not being + able to find the article, which can happen in debbugs groups, + apparently. + 2013-01-16 Glenn Morris <rgm@gnu.org> * smiley.el (smiley-style): Make the file loadable in batch mode. @@ -1434,7 +1515,7 @@ (nnimap-request-move-article): Delete the message from the correct IMAP server. -2012-02-19 Vida Gábor <vidagabor@gmail.com> (tiny change) +2012-02-19 Gábor Vida <vidagabor@gmail.com> (tiny change) * gnus-demon.el (gnus-demon-init): Don't multiply time twice. Reported by Peter Münster. @@ -1644,7 +1725,7 @@ * shr.el (shr-browse-url): Fix the name of the `browse-url-mail' function call. -2012-01-27 Vida Gábor <vidagabor@gmail.com> (tiny change) +2012-01-27 Gábor Vida <vidagabor@gmail.com> (tiny change) * gnus-demon.el (gnus-demon-run-callback, gnus-demon-init): Convert to seconds, and make the repeat clause with HH:MM specs work as diff --git a/lisp/gnus/ChangeLog.1 b/lisp/gnus/ChangeLog.1 index 34533f31bff..9043a23361e 100644 --- a/lisp/gnus/ChangeLog.1 +++ b/lisp/gnus/ChangeLog.1 @@ -452,7 +452,7 @@ * gnus-sum.el (gnus-remove-thread): Didn't work with sparse threads. -1998-08-14 François Pinard <pinard@iro.umontreal.ca> +1998-08-14 François Pinard <pinard@iro.umontreal.ca> * nndoc.el (nndoc-generate-mime-parts-head): Use original Subject, Message-ID, and References in fully blown articles. @@ -619,7 +619,7 @@ * gnus.el: Gnus v5.6.31 is released. -1998-08-09 François Pinard <pinard@iro.umontreal.ca> +1998-08-09 François Pinard <pinard@iro.umontreal.ca> * nndoc.el: Split MIME multipart messages, maybe recursively. (nndoc-mime-parts-type-p, nndoc-transform-mime-parts, @@ -760,7 +760,7 @@ * gnus-group.el (gnus-group-read-ephemeral-group): Make the server unique. -1998-07-28 François Pinard <pinard@iro.umontreal.ca> +1998-07-28 François Pinard <pinard@iro.umontreal.ca> * gnus-uu.el (gnus-uu-reginize-string): Consider the number of parts as part of the fixed subject, instead of a wild quantity. @@ -943,7 +943,7 @@ * nntp.el (nntp-server-opened-hook): Doc change. -1998-07-10 François Pinard <pinard@iro.umontreal.ca> +1998-07-10 François Pinard <pinard@iro.umontreal.ca> * gnus-sum.el (gnus-summary-respool-trace): New command and keystroke. @@ -1003,7 +1003,7 @@ * nntp.el (nntp-record-command): Give more precise time info. (nntp-next-result-arrived-p): Look for the end of error lines. -1998-07-01 François Pinard <pinard@iro.umontreal.ca> +1998-07-01 François Pinard <pinard@iro.umontreal.ca> * gnus-util.el (gnus-delete-if): Would do the opposite. @@ -2016,7 +2016,7 @@ * gnus-picon.el (gnus-picons-display-x-face): `buf' -- unbound var. -1998-02-28 François Pinard <pinard@iro.umontreal.ca> +1998-02-28 François Pinard <pinard@iro.umontreal.ca> * gnus: configure'd. @@ -2370,7 +2370,7 @@ * gnus-sum.el (gnus-summary-exit): Call purging function. -1998-02-13 François Pinard <pinard@iro.umontreal.ca> +1998-02-13 François Pinard <pinard@iro.umontreal.ca> * nnmail.el (nnmail-get-new-mail): Don't clear split-history. (nnmail-purge-split-history): New function. @@ -3724,3 +3724,7 @@ You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;; Local Variables: +;; coding: utf-8 +;; End: diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el index ac16200adb2..e94904bf175 100644 --- a/lisp/gnus/auth-source.el +++ b/lisp/gnus/auth-source.el @@ -913,7 +913,7 @@ while \(:host t) would find all host entries." (when (and c v) (setq prompt (replace-regexp-in-string (format "%%%c" c) (format "%s" v) - prompt))))) + prompt nil t))))) prompt) (defun auth-source-ensure-strings (values) diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el index 8ef89a9e56d..36e91980ba2 100644 --- a/lisp/gnus/deuglify.el +++ b/lisp/gnus/deuglify.el @@ -270,7 +270,7 @@ :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-attrib-verb-regexp - "wrote\\|writes\\|says\\|schrieb\\|schreibt\\|meinte\\|skrev\\|a écrit\\|schreef\\|escribió" + "wrote\\|writes\\|says\\|schrieb\\|schreibt\\|meinte\\|skrev\\|a écrit\\|schreef\\|escribió" "Regular expression matching the verb used in an attribution line." :version "22.1" :type 'string @@ -472,7 +472,7 @@ NODISPLAY is non-nil, don't redisplay the article buffer." (provide 'deuglify) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; deuglify.el ends here diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 25a555f3d8b..13d9b4e5c28 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -4361,6 +4361,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is (gnus-define-keys gnus-article-mode-map " " gnus-article-goto-next-page + [?\S-\ ] gnus-article-goto-prev-page "\177" gnus-article-goto-prev-page [delete] gnus-article-goto-prev-page [backspace] gnus-article-goto-prev-page diff --git a/lisp/gnus/gnus-cite.el b/lisp/gnus/gnus-cite.el index 3840f33687c..22e97cd8f4f 100644 --- a/lisp/gnus/gnus-cite.el +++ b/lisp/gnus/gnus-cite.el @@ -1250,7 +1250,7 @@ When enabled, it automatically turns on `font-lock-mode'." (provide 'gnus-cite) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; gnus-cite.el ends here diff --git a/lisp/gnus/gnus-delay.el b/lisp/gnus/gnus-delay.el index 5c14ffcfbdf..921d24109c2 100644 --- a/lisp/gnus/gnus-delay.el +++ b/lisp/gnus/gnus-delay.el @@ -2,7 +2,7 @@ ;; Copyright (C) 2001-2013 Free Software Foundation, Inc. -;; Author: Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> +;; Author: Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> ;; Keywords: mail, news, extensions ;; This file is part of GNU Emacs. @@ -186,7 +186,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil." (provide 'gnus-delay) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; gnus-delay.el ends here diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 700d319228f..2c45d3c24a1 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el @@ -4377,7 +4377,7 @@ The hook `gnus-exit-gnus-hook' is called before actually exiting." (defun gnus-group-browse-foreign-server (method) "Browse a foreign news server. If called interactively, this function will ask for a select method - (nntp, nnspool, etc.) and a server address (eg. nntp.some.where). + (nntp, nnspool, etc.) and a server address (e.g., nntp.some.where). If not, METHOD should be a list where the first element is the method and the second element is the address." (interactive diff --git a/lisp/gnus/gnus-int.el b/lisp/gnus/gnus-int.el index 81e0252cf93..2378b598eeb 100644 --- a/lisp/gnus/gnus-int.el +++ b/lisp/gnus/gnus-int.el @@ -248,18 +248,20 @@ If it is down, start it up (again)." 'denied)) (defvar gnus-backend-trace nil) +(defvar gnus-backend-trace-elapsed nil) (defun gnus-backend-trace (type form) - (with-current-buffer (get-buffer-create "*gnus trace*") - (buffer-disable-undo) - (goto-char (point-max)) - (insert (format-time-string "%H:%M:%S") - (format " %.2fs %s %S\n" - (if (numberp gnus-backend-trace) - (- (float-time) gnus-backend-trace) - 0) - type form)) - (setq gnus-backend-trace (float-time)))) + (when gnus-backend-trace + (with-current-buffer (get-buffer-create "*gnus trace*") + (buffer-disable-undo) + (goto-char (point-max)) + (insert (format-time-string "%H:%M:%S") + (format " %.2fs %s %S\n" + (if (numberp gnus-backend-trace-elapsed) + (- (float-time) gnus-backend-trace-elapsed) + 0) + type form)) + (setq gnus-backend-trace-elapsed (float-time))))) (defun gnus-open-server (gnus-command-method) "Open a connection to GNUS-COMMAND-METHOD." diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el index e808b1975b4..5a7dfd82d28 100644 --- a/lisp/gnus/gnus-registry.el +++ b/lisp/gnus/gnus-registry.el @@ -87,6 +87,12 @@ (require 'easymenu) (require 'registry) +;; Silence XEmacs byte compiler, which will otherwise complain about +;; call to `eieio-persistent-read'. +(when (featurep 'xemacs) + (byte-compiler-options + (warnings (- callargs)))) + (defvar gnus-adaptive-word-syntax-table) (defvar gnus-registry-dirty t @@ -296,8 +302,14 @@ This is not required after changing `gnus-registry-cache-file'." (condition-case nil (progn (gnus-message 5 "Reading Gnus registry from %s..." file) - (setq gnus-registry-db (gnus-registry-fixup-registry - (eieio-persistent-read file))) + (setq gnus-registry-db + (gnus-registry-fixup-registry + (condition-case nil + (with-no-warnings + (eieio-persistent-read file 'registry-db)) + ;; Older EIEIO versions do not check the class name. + ('wrong-number-of-arguments + (eieio-persistent-read file))))) (gnus-message 5 "Reading Gnus registry from %s...done" file)) (error (gnus-message diff --git a/lisp/gnus/gnus-spec.el b/lisp/gnus/gnus-spec.el index 446e8260203..2606b8860af 100644 --- a/lisp/gnus/gnus-spec.el +++ b/lisp/gnus/gnus-spec.el @@ -418,7 +418,7 @@ characters when given a pad value." ;; them will have the balloon-help text property. (let ((case-fold-search nil)) (if (string-match - "\\`\\(.*\\)%[0-9]?[{(«]\\(.*\\)%[0-9]?[»})]\\(.*\n?\\)\\'\\|%[-0-9]*=\\|%[-0-9]*\\*" + "\\`\\(.*\\)%[0-9]?[{(«]\\(.*\\)%[0-9]?[»})]\\(.*\n?\\)\\'\\|%[-0-9]*=\\|%[-0-9]*\\*" format) (gnus-parse-complex-format format spec-alist) ;; This is a simple format. @@ -435,13 +435,13 @@ characters when given a pad value." (goto-char (point-min)) (insert "(\"") ;; Convert all font specs into font spec lists. - (while (re-search-forward "%\\([0-9]+\\)?\\([«»{}()]\\)" nil t) + (while (re-search-forward "%\\([0-9]+\\)?\\([«»{}()]\\)" nil t) (let ((number (if (match-beginning 1) (match-string 1) "0")) (delim (aref (match-string 2) 0))) (if (or (= delim ?\() (= delim ?\{) - (= delim ?\«)) + (= delim ?\«)) (replace-match (concat "\"(" (cond ((= delim ?\() "mouse") ((= delim ?\{) "face") @@ -733,7 +733,7 @@ If PROPS, insert the result." (provide 'gnus-spec) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; gnus-spec.el ends here diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el index aa8b6bf2703..48bb99bfbce 100644 --- a/lisp/gnus/gnus-start.el +++ b/lisp/gnus/gnus-start.el @@ -121,7 +121,7 @@ This variable can be a list of select methods which Gnus will query with the `ask-server' method in addition to the primary, secondary, and archive servers. -Eg. +E.g.: (setq gnus-check-new-newsgroups '((nntp \"some.server\") (nntp \"other.server\"))) diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index ea68a6a2fa5..93bc35af3bd 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -451,7 +451,7 @@ current article is unread." :group 'gnus-summary-maneuvering :type 'boolean) -(defcustom gnus-auto-center-summary +(defcustom gnus-auto-center-summary (max (or (bound-and-true-p scroll-margin) 0) 2) "*If non-nil, always center the current summary buffer. In particular, if `vertical' do only vertical recentering. If non-nil @@ -1819,6 +1819,7 @@ increase the score of each group you read." (gnus-define-keys gnus-summary-mode-map " " gnus-summary-next-page + [?\S-\ ] gnus-summary-prev-page "\177" gnus-summary-prev-page [delete] gnus-summary-prev-page [backspace] gnus-summary-prev-page @@ -2058,6 +2059,7 @@ increase the score of each group you read." (gnus-define-keys (gnus-summary-article-map "A" gnus-summary-mode-map) " " gnus-summary-next-page "n" gnus-summary-next-page + [?\S-\ ] gnus-summary-prev-page "\177" gnus-summary-prev-page [delete] gnus-summary-prev-page "p" gnus-summary-prev-page @@ -4058,9 +4060,10 @@ If SELECT-ARTICLES, only select those articles from GROUP." gnus-auto-select-first) (progn (let ((art (gnus-summary-article-number))) - (unless (and (not gnus-plugged) - (or (memq art gnus-newsgroup-undownloaded) - (memq art gnus-newsgroup-downloadable))) + (when (and art + gnus-plugged + (not (memq art gnus-newsgroup-undownloaded)) + (not (memq art gnus-newsgroup-downloadable))) (gnus-summary-goto-article art)))) ;; Don't select any articles. (gnus-summary-position-point) @@ -9785,7 +9788,7 @@ installed for this command to work." (when (message-goto-body) (gnus-narrow-to-body)) (goto-char (point-min)) - (while (search-forward "·" (point-max) t) + (while (search-forward "·" (point-max) t) (replace-match ".")) (unmorse-region (point-min) (point-max)) (widen) @@ -12975,7 +12978,7 @@ BOOKMARK is a bookmark name or a bookmark record." (run-hooks 'gnus-sum-load-hook) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; gnus-sum.el ends here diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index df805c6fb26..331f9556710 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el @@ -333,6 +333,13 @@ TIME defaults to the current time." (defmacro gnus-define-keys (keymap &rest plist) "Define all keys in PLIST in KEYMAP." + ;; Convert the key [?\S-\ ] to [(shift space)] for XEmacs. + (when (featurep 'xemacs) + (let ((bindings plist)) + (while bindings + (when (equal (car bindings) [?\S-\ ]) + (setcar bindings [(shift space)])) + (setq bindings (cddr bindings))))) `(gnus-define-keys-1 (quote ,keymap) (quote ,plist))) (defmacro gnus-define-keys-safe (keymap &rest plist) diff --git a/lisp/gnus/html2text.el b/lisp/gnus/html2text.el index 4e05f1abb40..68e75196c87 100644 --- a/lisp/gnus/html2text.el +++ b/lisp/gnus/html2text.el @@ -1,4 +1,4 @@ -;;; html2text.el --- a simple html to plain text converter +;;; html2text.el --- a simple html to plain text converter -*- coding: utf-8 -*- ;; Copyright (C) 2002-2013 Free Software Foundation, Inc. @@ -65,14 +65,14 @@ ("–" . "-") ("‰" . "%%") ("±" . "+-") - ("£" . "£") + ("£" . "£") (""" . "\"") ("»" . ">>") ("&rdquo" . "\"") ("®" . "(R)") ("›" . ")") ("’" . "'") - ("§" . "§") + ("§" . "§") ("¹" . "^1") ("²" . "^2") ("³" . "^3") diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 808e1edd6c3..a6638097b47 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -1743,7 +1743,7 @@ no, only reply back to the author." (file-error)) (mm-coding-system-p 'utf-8) (executable-find idna-program) - (string= (idna-to-ascii "räksmörgås") + (string= (idna-to-ascii "räksmörgÃ¥s") "xn--rksmrgs-5wao1o") t) "Whether to encode non-ASCII in domain names into ASCII according to IDNA. @@ -8421,7 +8421,7 @@ Used in `message-simplify-recipients'." (run-hooks 'message-load-hook) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; message.el ends here diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index b5e4d3e38e8..04f325633ba 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -1298,14 +1298,26 @@ PROMPT overrides the default one used to ask user for a file name." (when filename (setq filename (gnus-map-function mm-file-name-rewrite-functions (file-name-nondirectory filename)))) - (setq file - (read-file-name - (or prompt - (format "Save MIME part to (default %s): " - (or filename ""))) - (or mm-default-directory default-directory) - (expand-file-name (or filename "") - (or mm-default-directory default-directory)))) + (while + (progn + (setq file + (read-file-name + (or prompt + (format "Save MIME part to (default %s): " + (or filename ""))) + (or mm-default-directory default-directory) + (expand-file-name (or filename "") + (or mm-default-directory default-directory)))) + (cond ((or (not file) (equal file "")) + (message "Please enter a file name") + t) + ((and (file-directory-p file) + (not filename)) + (message "Please enter a non-directory file name") + t) + (t nil))) + (sit-for 2) + (discard-input)) (if (file-directory-p file) (setq file (expand-file-name filename file)) (setq file (expand-file-name @@ -1791,7 +1803,7 @@ If RECURSIVE, search recursively." (replace-match (char-to-string char)))) ;; Remove "soft hyphens". (goto-char (point-min)) - (while (search-forward "" nil t) + (while (search-forward "Â" nil t) (replace-match "" t t)) (libxml-parse-html-region (point-min) (point-max)))) (unless (bobp) @@ -1813,7 +1825,7 @@ If RECURSIVE, search recursively." (provide 'mm-decode) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; mm-decode.el ends here diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el index 453086f4c20..3c9344a62c3 100644 --- a/lisp/gnus/mml.el +++ b/lisp/gnus/mml.el @@ -1440,7 +1440,9 @@ TYPE is the MIME type to use." ;; when you send the message. (or (eq mail-user-agent 'message-user-agent) (setq mail-encode-mml t)) - (mml-insert-tag 'part 'type type 'disposition "inline")) + (mml-insert-tag 'part 'type type 'disposition "inline") + (save-excursion + (mml-insert-tag '/part))) (declare-function message-subscribed-p "message" ()) (declare-function message-make-mail-followup-to "message" diff --git a/lisp/gnus/mml1991.el b/lisp/gnus/mml1991.el index 88dee4ad883..5af7639019a 100644 --- a/lisp/gnus/mml1991.el +++ b/lisp/gnus/mml1991.el @@ -2,7 +2,7 @@ ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. -;; Author: Sascha Lüdecke <sascha@meta-x.de>, +;; Author: Sascha Lüdecke <sascha@meta-x.de>, ;; Simon Josefsson <simon@josefsson.org> (Mailcrypt interface, Gnus glue) ;; Keywords: PGP @@ -480,7 +480,7 @@ If no one is selected, default secret key is used. " (provide 'mml1991) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; mml1991.el ends here diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el index 275a4867e85..39bce23e76c 100644 --- a/lisp/gnus/mml2015.el +++ b/lisp/gnus/mml2015.el @@ -757,6 +757,9 @@ If set, it overrides the setting of `mml2015-sign-with-sender'." (autoload 'epg-sub-key-fingerprint "epg") (autoload 'epg-signature-key-id "epg") (autoload 'epg-signature-to-string "epg") +(autoload 'epg-key-user-id-list "epg") +(autoload 'epg-user-id-string "epg") +(autoload 'epg-user-id-validity "epg") (autoload 'epg-configuration "epg-config") (autoload 'epg-expand-group "epg-config") (autoload 'epa-select-keys "epa") @@ -786,21 +789,53 @@ If set, it overrides the setting of `mml2015-sign-with-sender'." (cons password-cache-key-id mml2015-epg-secret-key-id-list)) (copy-sequence passphrase))))) -(defun mml2015-epg-find-usable-key (keys usage) - (catch 'found +(defun mml2015-epg-check-user-id (key recipient) + (let ((pointer (epg-key-user-id-list key)) + result) + (while pointer + (if (and (equal (car (mail-header-parse-address + (epg-user-id-string (car pointer)))) + (car (mail-header-parse-address + recipient))) + (not (memq (epg-user-id-validity (car pointer)) + '(revoked expired)))) + (setq result t + pointer nil) + (setq pointer (cdr pointer)))) + result)) + +(defun mml2015-epg-check-sub-key (key usage) + (let ((pointer (epg-key-sub-key-list key)) + result) + ;; The primary key will be marked as disabled, when the entire + ;; key is disabled (see 12 Field, Format of colon listings, in + ;; gnupg/doc/DETAILS) + (unless (memq 'disabled (epg-sub-key-capability (car pointer))) + (while pointer + (if (and (memq usage (epg-sub-key-capability (car pointer))) + (not (memq (epg-sub-key-validity (car pointer)) + '(revoked expired)))) + (setq result t + pointer nil) + (setq pointer (cdr pointer))))) + result)) + +(defun mml2015-epg-find-usable-key (context name usage + &optional name-is-key-id) + (let ((keys (epg-list-keys context name)) + key) (while keys - (let ((pointer (epg-key-sub-key-list (car keys)))) - ;; The primary key will be marked as disabled, when the entire - ;; key is disabled (see 12 Field, Format of colon listings, in - ;; gnupg/doc/DETAILS) - (unless (memq 'disabled (epg-sub-key-capability (car pointer))) - (while pointer - (if (and (memq usage (epg-sub-key-capability (car pointer))) - (not (memq (epg-sub-key-validity (car pointer)) - '(revoked expired)))) - (throw 'found (car keys))) - (setq pointer (cdr pointer))))) - (setq keys (cdr keys))))) + (if (and (or name-is-key-id + ;; Non email user-id can be supplied through + ;; mml2015-signers if mml2015-encrypt-to-self is set. + ;; Treat it as valid, as it is user's intention. + (not (string-match "\\`<" name)) + (mml2015-epg-check-user-id (car keys) name)) + (mml2015-epg-check-sub-key (car keys) usage)) + (setq key (car keys) + keys nil) + (setq keys (cdr keys)))) + key)) ;; XXX: since gpg --list-secret-keys does not return validity of each ;; key, `mml2015-epg-find-usable-key' defined above is not enough for @@ -811,10 +846,12 @@ If set, it overrides the setting of `mml2015-sign-with-sender'." secret-key) (while (and (not secret-key) secret-keys) (if (mml2015-epg-find-usable-key - (epg-list-keys context (epg-sub-key-fingerprint - (car (epg-key-sub-key-list - (car secret-keys))))) - usage) + context + (epg-sub-key-fingerprint + (car (epg-key-sub-key-list + (car secret-keys)))) + usage + t) (setq secret-key (car secret-keys) secret-keys nil) (setq secret-keys (cdr secret-keys)))) @@ -828,7 +865,7 @@ If set, it overrides the setting of `mml2015-sign-with-sender'." (coding-system-for-read 'binary) (data (shell-command-to-string (format "%s --list-options no-show-photos --attribute-fd 3 --list-keys %s 3>&1 >/dev/null 2>&1" - epg-gpg-program key-id)))) + (shell-quote-argument epg-gpg-program) key-id)))) (when (> (length data) 0) (insert (substring data 16)) (create-image (buffer-string) nil t))))) @@ -1115,8 +1152,7 @@ If no one is selected, symmetric encryption will be performed. " (mapcar (lambda (recipient) (setq recipient-key (mml2015-epg-find-usable-key - (epg-list-keys context recipient) - 'encrypt)) + context recipient 'encrypt)) (unless (or recipient-key (y-or-n-p (format "No public key for %s; skip it? " diff --git a/lisp/gnus/nndir.el b/lisp/gnus/nndir.el index b99a0c37d2e..5e68779e977 100644 --- a/lisp/gnus/nndir.el +++ b/lisp/gnus/nndir.el @@ -90,8 +90,7 @@ (nnml-request-article 0 nndir-current-group 0 0) (nnmh-request-group nndir-current-group 0 0) (nnml-close-group nndir-current-group 0) - (nnml-request-list (nnoo-current-server 'nndir) nndir-directory) - (nnml-request-newsgroups (nnoo-current-server 'nndir) nndir-directory)) + (nnml-request-list (nnoo-current-server 'nndir))) (provide 'nndir) diff --git a/lisp/gnus/nndraft.el b/lisp/gnus/nndraft.el index ad8a8b164de..b19b56ae6ea 100644 --- a/lisp/gnus/nndraft.el +++ b/lisp/gnus/nndraft.el @@ -346,8 +346,7 @@ are generated if and only if they are also in `message-draft-headers'.") nnmh-retrieve-headers nnmh-request-group nnmh-close-group - nnmh-request-list - nnmh-request-newsgroups)) + nnmh-request-list)) (provide 'nndraft) diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el index e0bfcc2b5f5..cf5a813c5a8 100644 --- a/lisp/gnus/nnir.el +++ b/lisp/gnus/nnir.el @@ -1,8 +1,8 @@ -;;; nnir.el --- search mail with various search engines -*- coding: iso-8859-1 -*- +;;; nnir.el --- search mail with various search engines -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. -;; Author: Kai Großjohann <grossjohann@ls6.cs.uni-dortmund.de> +;; Author: Kai Großjohann <grossjohann@ls6.cs.uni-dortmund.de> ;; Swish-e and Swish++ backends by: ;; Christoph Conrad <christoph.conrad@gmx.de>. ;; IMAP backend by: Simon Josefsson <jas@pdc.kth.se>. @@ -298,7 +298,7 @@ is `(valuefunc member)'." (defvoo nnir-address nil "The address of the nnir server.") -(gnus-declare-backend "nnir" 'mail) +(gnus-declare-backend "nnir" 'mail 'virtual) ;;; User Customizable Variables: diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el index 85a6d5639a1..a266567987d 100644 --- a/lisp/gnus/nnmail.el +++ b/lisp/gnus/nnmail.el @@ -179,7 +179,7 @@ is to be performed in, and it should return an integer that says how many days an article can be stored before it is considered \"old\". It can also return the values `never' and `immediate'. -Eg.: +E.g.: \(setq nnmail-expiry-wait-function (lambda (newsgroup) @@ -291,7 +291,7 @@ directory. This hook is called after the incoming mail box has been emptied, and can be used to call any mail box programs you have running (\"xwatch\", etc.) -Eg. +E.g.: \(add-hook 'nnmail-read-incoming-hook (lambda () diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el index c9bf324b4fa..5df5297ba8a 100644 --- a/lisp/gnus/shr.el +++ b/lisp/gnus/shr.el @@ -347,11 +347,11 @@ size, and full-buffer size." ((eq shr-folding-mode 'none) (insert text)) (t - (when (and (string-match "\\`[ \t\n ]" text) + (when (and (string-match "\\`[ \t\n ]" text) (not (bolp)) (not (eq (char-after (1- (point))) ? ))) (insert " ")) - (dolist (elem (split-string text "[ \f\t\n\r\v ]+" t)) + (dolist (elem (split-string text "[ \f\t\n\r\v ]+" t)) (when (and (bolp) (> shr-indentation 0)) (shr-indent)) @@ -391,7 +391,7 @@ size, and full-buffer size." (shr-indent)) (end-of-line)) (insert " "))) - (unless (string-match "[ \t\r\n ]\\'" text) + (unless (string-match "[ \t\r\n ]\\'" text) (delete-char -1))))) (defun shr-find-fill-point () @@ -520,6 +520,11 @@ size, and full-buffer size." (dolist (type types) (shr-add-font (or shr-start (point)) (point) type)))) +(defun shr-make-overlay (beg end &optional buffer front-advance rear-advance) + (let ((overlay (make-overlay beg end buffer front-advance rear-advance))) + (overlay-put overlay 'evaporate t) + overlay)) + ;; Add an overlay in the region, but avoid putting the font properties ;; on blank text at the start of the line, and the newline at the end, ;; to avoid ugliness. @@ -529,7 +534,7 @@ size, and full-buffer size." (while (< (point) end) (when (bolp) (skip-chars-forward " ")) - (let ((overlay (make-overlay (point) (min (line-end-position) end)))) + (let ((overlay (shr-make-overlay (point) (min (line-end-position) end)))) (overlay-put overlay 'face type)) (if (< (line-end-position) end) (forward-line 1) @@ -615,7 +620,12 @@ size, and full-buffer size." (overlay-put overlay 'face 'default))) (insert-image image (or alt "*"))) (put-text-property start (point) 'image-size size) - (when (image-animated-p image) + (when (if (fboundp 'image-multi-frame-p) + ;; Only animate multi-frame things that specify a + ;; delay; eg animated gifs as opposed to + ;; multi-page tiffs. FIXME? + (cdr (image-multi-frame-p image)) + (image-animated-p image)) (image-animate image nil 60))) image) (insert alt))) @@ -785,7 +795,7 @@ ones, in case fg and bg are nil." (when (and (< (setq column (current-column)) width) (< (setq column (shr-previous-newline-padding-width column)) width)) - (let ((overlay (make-overlay (point) (1+ (point))))) + (let ((overlay (shr-make-overlay (point) (1+ (point))))) (overlay-put overlay 'before-string (concat (mapconcat @@ -1233,8 +1243,8 @@ ones, in case fg and bg are nil." (end-of-line) (insert line shr-table-vertical-line) (dolist (overlay overlay-line) - (let ((o (make-overlay (- (point) (nth 0 overlay) 1) - (- (point) (nth 1 overlay) 1))) + (let ((o (shr-make-overlay (- (point) (nth 0 overlay) 1) + (- (point) (nth 1 overlay) 1))) (properties (nth 2 overlay))) (while properties (overlay-put o (pop properties) (pop properties))))) @@ -1335,8 +1345,8 @@ ones, in case fg and bg are nil." (let ((end (length (car cache)))) (dolist (overlay (cadr cache)) (let ((new-overlay - (make-overlay (1+ (- end (nth 0 overlay))) - (1+ (- end (nth 1 overlay))))) + (shr-make-overlay (1+ (- end (nth 0 overlay))) + (1+ (- end (nth 1 overlay))))) (properties (nth 2 overlay))) (while properties (overlay-put new-overlay @@ -1466,7 +1476,7 @@ ones, in case fg and bg are nil." (provide 'shr) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; shr.el ends here diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el index 7e391c03778..2c2775dfbd7 100644 --- a/lisp/gnus/smime.el +++ b/lisp/gnus/smime.el @@ -214,7 +214,7 @@ Enabling this will have OpenSSL check the signers certificate against a certificate revocation list (CRL). For this to work the CRL must be up-to-date and since they are -normally updated quite often (ie. several times a day) you +normally updated quite often (i.e., several times a day) you probably need some tool to keep them up-to-date. Unfortunately Gnus cannot do this for you. diff --git a/lisp/gnus/utf7.el b/lisp/gnus/utf7.el index 69b189b6b53..b55b77a383b 100644 --- a/lisp/gnus/utf7.el +++ b/lisp/gnus/utf7.el @@ -1,4 +1,4 @@ -;;; utf7.el --- UTF-7 encoding/decoding for Emacs -*-coding: iso-8859-1;-*- +;;; utf7.el --- UTF-7 encoding/decoding for Emacs -*-coding: utf-8;-*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. @@ -52,10 +52,10 @@ ;; necessary coding system. The code below doesn't seem to DTRT ;; generally. E.g.: ;; -;; (utf7-encode "a+£") +;; (utf7-encode "a+£") ;; => "a+ACsAow-" ;; -;; $ echo "a+£"|iconv -f iso-8859-1 -t utf-7 +;; $ echo "a+£"|iconv -f utf-8 -t utf-7 ;; a+-+AKM ;; ;; -- fx diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 04bcc9c0763..bdf86016844 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -76,7 +76,7 @@ DEF is the function whose usage we're looking for in DOCSTRING." (when (and docstring (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring)) (cons (format "(%s%s" ;; Replace `fn' with the actual function name. - (if (consp def) "anonymous" def) + (if (symbolp def) def "anonymous") (match-string 1 docstring)) (unless (zerop (match-beginning 0)) (substring docstring 0 (match-beginning 0)))))) @@ -336,11 +336,15 @@ suitable file is found, return nil." ;; If we don't have a file-name string by now, we lost. nil) ;; Now, `file-name' should have become an absolute file name. - ;; For files loaded from ~/.emacs.elc, try ~/.emacs. + ;; For files loaded from ~/.foo.elc, try ~/.foo. + ;; This applies to config files like ~/.emacs, + ;; which people sometimes compile. ((let (fn) - (and (string-equal file-name - (expand-file-name ".emacs.elc" "~")) - (file-readable-p (setq fn (expand-file-name ".emacs" "~"))) + (and (string-match "\\`\\..*\\.elc\\'" + (file-name-nondirectory file-name)) + (string-equal (file-name-directory file-name) + (file-name-as-directory (expand-file-name "~"))) + (file-readable-p (setq fn (file-name-sans-extension file-name))) fn))) ;; When the Elisp source file can be found in the install ;; directory, return the name of that file. diff --git a/lisp/help.el b/lisp/help.el index 4219dd86986..25bc9c4b7c6 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -412,7 +412,9 @@ With argument, display info only for the selected version." The number of messages retained in that buffer is specified by the variable `message-log-max'." (interactive) - (switch-to-buffer (get-buffer-create "*Messages*"))) + (with-current-buffer (get-buffer-create "*Messages*") + (goto-char (point-max)) + (display-buffer (current-buffer)))) (defun view-order-manuals () "Display the Emacs ORDERS file." diff --git a/lisp/hexl.el b/lisp/hexl.el index 13181ff0e3c..2ee492b4c5e 100644 --- a/lisp/hexl.el +++ b/lisp/hexl.el @@ -311,8 +311,8 @@ A sample format: 000000c0: 7265 6769 6f6e 2e0a region.. Movement is as simple as movement in a normal Emacs text buffer. Most -cursor movement bindings are the same (ie. Use \\[hexl-backward-char], \\[hexl-forward-char], \\[hexl-next-line], and \\[hexl-previous-line] -to move the cursor left, right, down, and up). +cursor movement bindings are the same: use \\[hexl-backward-char], \\[hexl-forward-char], \\[hexl-next-line], and \\[hexl-previous-line] +to move the cursor left, right, down, and up. Advanced cursor movement commands (ala \\[hexl-beginning-of-line], \\[hexl-end-of-line], \\[hexl-beginning-of-buffer], and \\[hexl-end-of-buffer]) are also supported. diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el index e7948614241..38e5e8acb15 100644 --- a/lisp/hi-lock.el +++ b/lisp/hi-lock.el @@ -279,6 +279,26 @@ a library is being loaded.") map) "Key map for hi-lock.") +(defvar hi-lock-read-regexp-defaults-function + 'hi-lock-read-regexp-defaults + "Function that provides default regexp(s) for highlighting commands. +This function should take no arguments and return one of nil, a +regexp or a list of regexps for use with highlighting commands - +`hi-lock-face-phrase-buffer', `hi-lock-line-face-buffer' and +`hi-lock-face-buffer'. The return value of this function is used +as DEFAULTS param of `read-regexp' while executing the +highlighting command. This function is called only during +interactive use. + +For example, to highlight at symbol at point use + + \(setq hi-lock-read-regexp-defaults-function + 'find-tag-default-as-regexp\) + +If you need different defaults for different highlighting +operations, use `this-command' to identify the command under +execution.") + ;; Visible Functions ;;;###autoload @@ -399,17 +419,18 @@ versions before 22 use the following in your init file: ;;;###autoload (defun hi-lock-line-face-buffer (regexp &optional face) "Set face of all lines containing a match of REGEXP to FACE. -Interactively, prompt for REGEXP then FACE, using a buffer-local -history list for REGEXP and a global history list for FACE. +Interactively, prompt for REGEXP then FACE. Use +`hi-lock-read-regexp-defaults-function' to retrieve default +value(s) of REGEXP. Use the global history list for FACE. -If Font Lock mode is enabled in the buffer, it is used to -highlight REGEXP. If Font Lock mode is disabled, overlays are -used for highlighting; in this case, the highlighting will not be -updated as you type." +Use Font lock mode, if enabled, to highlight REGEXP. Otherwise, +use overlays for highlighting. If overlays are used, the +highlighting will not update as you type." (interactive (list (hi-lock-regexp-okay - (read-regexp "Regexp to highlight line" (car regexp-history))) + (read-regexp "Regexp to highlight line" + (funcall hi-lock-read-regexp-defaults-function))) (hi-lock-read-face-name))) (or (facep face) (setq face 'hi-yellow)) (unless hi-lock-mode (hi-lock-mode 1)) @@ -424,17 +445,18 @@ updated as you type." ;;;###autoload (defun hi-lock-face-buffer (regexp &optional face) "Set face of each match of REGEXP to FACE. -Interactively, prompt for REGEXP then FACE, using a buffer-local -history list for REGEXP and a global history list for FACE. +Interactively, prompt for REGEXP then FACE. Use +`hi-lock-read-regexp-defaults-function' to retrieve default +value(s) REGEXP. Use the global history list for FACE. -If Font Lock mode is enabled in the buffer, it is used to -highlight REGEXP. If Font Lock mode is disabled, overlays are -used for highlighting; in this case, the highlighting will not be -updated as you type." +Use Font lock mode, if enabled, to highlight REGEXP. Otherwise, +use overlays for highlighting. If overlays are used, the +highlighting will not update as you type." (interactive (list (hi-lock-regexp-okay - (read-regexp "Regexp to highlight" (car regexp-history))) + (read-regexp "Regexp to highlight" + (funcall hi-lock-read-regexp-defaults-function))) (hi-lock-read-face-name))) (or (facep face) (setq face 'hi-yellow)) (unless hi-lock-mode (hi-lock-mode 1)) @@ -445,18 +467,22 @@ updated as you type." ;;;###autoload (defun hi-lock-face-phrase-buffer (regexp &optional face) "Set face of each match of phrase REGEXP to FACE. -If called interactively, replaces whitespace in REGEXP with -arbitrary whitespace and makes initial lower-case letters case-insensitive. - -If Font Lock mode is enabled in the buffer, it is used to -highlight REGEXP. If Font Lock mode is disabled, overlays are -used for highlighting; in this case, the highlighting will not be -updated as you type." +Interactively, prompt for REGEXP then FACE. Use +`hi-lock-read-regexp-defaults-function' to retrieve default +value(s) of REGEXP. Use the global history list for FACE. When +called interactively, replace whitespace in user provided regexp +with arbitrary whitespace and make initial lower-case letters +case-insensitive before highlighting with `hi-lock-set-pattern'. + +Use Font lock mode, if enabled, to highlight REGEXP. Otherwise, +use overlays for highlighting. If overlays are used, the +highlighting will not update as you type." (interactive (list (hi-lock-regexp-okay (hi-lock-process-phrase - (read-regexp "Phrase to highlight" (car regexp-history)))) + (read-regexp "Phrase to highlight" + (funcall hi-lock-read-regexp-defaults-function)))) (hi-lock-read-face-name))) (or (facep face) (setq face 'hi-yellow)) (unless hi-lock-mode (hi-lock-mode 1)) @@ -562,7 +588,8 @@ then remove all hi-lock highlighting." (when keyword (let ((face (hi-lock-keyword->face keyword))) ;; Make `face' the next one to use by default. - (add-to-list 'hi-lock--unused-faces (face-name face))) + (when (symbolp face) ;Don't add it if it's a list (bug#13297). + (add-to-list 'hi-lock--unused-faces (face-name face)))) (font-lock-remove-keywords nil (list keyword)) (setq hi-lock-interactive-patterns (delq keyword hi-lock-interactive-patterns)) @@ -621,6 +648,11 @@ not suitable." (error "Regexp cannot match an empty string") regexp)) +(defun hi-lock-read-regexp-defaults () + "Return the latest regexp from `regexp-history'. +See `hi-lock-read-regexp-defaults-function' for details." + (car regexp-history)) + (defun hi-lock-read-face-name () "Return face for interactive highlighting. When `hi-lock-auto-select-face' is non-nil, just return the next face. diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el index df8ef86a3cd..768dda993e2 100644 --- a/lisp/htmlfontify.el +++ b/lisp/htmlfontify.el @@ -717,7 +717,7 @@ STYLE is the inline CSS stylesheet (or tag referring to an external sheet)." --> </script> </head> <body onload=\"stripe('index'); return true;\">\n" - file style)) + (mapconcat 'hfy-html-quote (mapcar 'char-to-string file) "") style)) (defun hfy-default-footer (_file) "Default value for `hfy-page-footer'. diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 8f934b86288..586c8306a36 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -3030,7 +3030,7 @@ defaults to one. (run-hooks 'ibuffer-load-hook) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; ibuffer.el ends here diff --git a/lisp/icomplete.el b/lisp/icomplete.el index 9407de4f6d9..73049df097d 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -76,6 +76,18 @@ :type 'string :version "24.4") +(defcustom icomplete-hide-common-prefix t + "When non-nil, hide common prefix from completion candidates. +When nil, show candidates in full." + :type 'boolean + :version "24.4" + :group 'icomplete) + +(defface icomplete-first-match '((t :weight bold)) + "Face used by icomplete for highlighting first match." + :version "24.4" + :group 'icomplete) + ;;;_* User Customization variables (defcustom icomplete-prospects-height ;; 20 is an estimated common size for the prompt + minibuffer content, to @@ -156,8 +168,8 @@ except those on this list.") (let ((map (make-sparse-keymap))) (define-key map [?\M-\t] 'minibuffer-force-complete) (define-key map [?\C-j] 'minibuffer-force-complete-and-exit) - (define-key map [?\C-s] 'icomplete-forward-completions) - (define-key map [?\C-r] 'icomplete-backward-completions) + (define-key map [?\C-.] 'icomplete-forward-completions) + (define-key map [?\C-,] 'icomplete-backward-completions) map)) (defun icomplete-forward-completions () @@ -167,8 +179,9 @@ Second entry becomes the first and can be selected with (interactive) (let* ((comps (completion-all-sorted-completions)) (last (last comps))) - (setcdr last (cons (car comps) (cdr last))) - (completion--cache-all-sorted-completions (cdr comps)))) + (when comps + (setcdr last (cons (car comps) (cdr last))) + (completion--cache-all-sorted-completions (cdr comps))))) (defun icomplete-backward-completions () "Step backward completions by one entry. @@ -178,7 +191,7 @@ Last entry becomes the first and can be selected with (let* ((comps (completion-all-sorted-completions)) (last-but-one (last comps 2)) (last (cdr last-but-one))) - (when last + (when (consp last) ; At least two elements in comps (setcdr last-but-one (cdr last)) (push (car last) comps) (completion--cache-all-sorted-completions comps)))) @@ -343,7 +356,8 @@ are exhibited within the square braces.)" (t (concat "…" (substring most compare)))) close-bracket))) ;;"-prospects" - more than one candidate - (prospects-len (+ (length determ) + (prospects-len (+ (string-width + (or determ (concat open-bracket close-bracket))) (string-width icomplete-separator) 3 ;; take {…} into account (string-width (buffer-string)))) @@ -354,6 +368,8 @@ are exhibited within the square braces.)" ;; one line, increase the allowable space accordingly. (/ prospects-len (window-width))) (window-width))) + (prefix (when icomplete-hide-common-prefix + (try-completion "" comps))) (prefix-len ;; Find the common prefix among `comps'. ;; We can't use the optimization below because its assumptions @@ -363,37 +379,55 @@ are exhibited within the square braces.)" ;; ;; Common case. ;; (length most) ;; Else, use try-completion. - (let ((comps-prefix (try-completion "" comps))) - (and (stringp comps-prefix) - (length comps-prefix)))) ;;) - - prospects most-is-exact comp limit) + (and (stringp prefix) (length prefix))) ;;) + prospects comp limit) (if (eq most-try t) ;; (or (null (cdr comps)) (setq prospects nil) + (when (member name comps) + ;; NAME is complete but not unique. This scenario poses + ;; following UI issues: + ;; + ;; - When `icomplete-hide-common-prefix' is non-nil, NAME + ;; is stripped empty. This would make the entry + ;; inconspicuous. + ;; + ;; - Due to sorting of completions, NAME may not be the + ;; first of the prospects and could be hidden deep in + ;; the displayed string. + ;; + ;; - Because of `icomplete-prospects-height' , NAME may + ;; not even be displayed to the user. + ;; + ;; To circumvent all the above problems, provide a visual + ;; cue to the user via an "empty string" in the try + ;; completion field. + (setq determ (concat open-bracket "" close-bracket))) + ;; Compute prospects for display. (while (and comps (not limit)) (setq comp (if prefix-len (substring (car comps) prefix-len) (car comps)) comps (cdr comps)) - (cond ((string-equal comp "") (setq most-is-exact t)) - ((member comp prospects)) - (t (setq prospects-len + (setq prospects-len (+ (string-width comp) (string-width icomplete-separator) prospects-len)) (if (< prospects-len prospects-max) (push comp prospects) - (setq limit t)))))) + (setq limit t)))) + (setq prospects (nreverse prospects)) + ;; Decorate first of the prospects. + (when prospects + (let ((first (copy-sequence (pop prospects)))) + (put-text-property 0 (length first) + 'face 'icomplete-first-match first) + (push first prospects))) ;; Restore the base-size info, since completion-all-sorted-completions ;; is cached. (if last (setcdr last base-size)) (if prospects (concat determ "{" - (and most-is-exact - (substring icomplete-separator - (string-match "[^ ]" icomplete-separator))) - (mapconcat 'identity (nreverse prospects) - icomplete-separator) + (mapconcat 'identity prospects icomplete-separator) (and limit (concat icomplete-separator "…")) "}") (concat determ " [Matched]")))))) diff --git a/lisp/ido.el b/lisp/ido.el index 008561aa268..066d8276af5 100644 --- a/lisp/ido.el +++ b/lisp/ido.el @@ -1585,6 +1585,8 @@ This function also adds a hook to the minibuffer." (define-key map "\C-p" 'ido-toggle-prefix) (define-key map "\C-r" 'ido-prev-match) (define-key map "\C-s" 'ido-next-match) + (define-key map [?\C-.] 'ido-next-match) + (define-key map [?\C-,] 'ido-prev-match) (define-key map "\C-t" 'ido-toggle-regexp) (define-key map "\C-z" 'ido-undo-merge-work-directory) (define-key map [(control ?\s)] 'ido-restrict-to-matches) diff --git a/lisp/image-dired.el b/lisp/image-dired.el index 354e16b0bfb..bbb41d49a1d 100644 --- a/lisp/image-dired.el +++ b/lisp/image-dired.el @@ -883,7 +883,7 @@ displayed." (defalias 'image-dired 'image-dired-show-all-from-dir) ;;;###autoload -(defalias 'tumme 'image-dired-show-all-from-dir) +(define-obsolete-function-alias 'tumme 'image-dired "24.4") (defun image-dired-sane-db-file () "Check if `image-dired-db-file' exists. diff --git a/lisp/image-mode.el b/lisp/image-mode.el index a95dde1d999..ac090f020b3 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el @@ -278,28 +278,50 @@ stopping if the top or bottom edge of the image is reached." ;; Adjust frame and image size. -(defun image-mode-fit-frame () - "Toggle whether to fit the frame to the current image. -This function assumes the current frame has only one window." - ;; FIXME: This does not take into account decorations like mode-line, - ;; minibuffer, header-line, ... - (interactive) - (let* ((saved (frame-parameter nil 'image-mode-saved-size)) +(defun image-mode-fit-frame (&optional frame toggle) + "Fit FRAME to the current image. +If FRAME is omitted or nil, it defaults to the selected frame. +All other windows on the frame are deleted. + +If called interactively, or if TOGGLE is non-nil, toggle between +fitting FRAME to the current image and restoring the size and +window configuration prior to the last `image-mode-fit-frame' +call." + (interactive (list nil t)) + (let* ((buffer (current-buffer)) (display (image-get-display-property)) - (size (image-display-size display))) - (if (and saved - (eq (caar saved) (frame-width)) - (eq (cdar saved) (frame-height))) - (progn ;; Toggle back to previous non-fitted size. - (set-frame-parameter nil 'image-mode-saved-size nil) - (setq size (cdr saved))) - ;; Round up size, and save current size so we can toggle back to it. - (setcar size (ceiling (car size))) - (setcdr size (ceiling (cdr size))) - (set-frame-parameter nil 'image-mode-saved-size - (cons size (cons (frame-width) (frame-height))))) - (set-frame-width (selected-frame) (car size)) - (set-frame-height (selected-frame) (cdr size)))) + (size (image-display-size display)) + (saved (frame-parameter frame 'image-mode-saved-params)) + (window-configuration (current-window-configuration frame)) + (width (frame-width frame)) + (height (frame-height frame))) + (with-selected-frame (or frame (selected-frame)) + (if (and toggle saved + (= (caar saved) width) + (= (cdar saved) height)) + (progn + (set-frame-width frame (car (nth 1 saved))) + (set-frame-height frame (cdr (nth 1 saved))) + (set-window-configuration (nth 2 saved)) + (set-frame-parameter frame 'image-mode-saved-params nil)) + (delete-other-windows) + (switch-to-buffer buffer t t) + (let* ((edges (window-inside-edges)) + (inner-width (- (nth 2 edges) (nth 0 edges))) + (inner-height (- (nth 3 edges) (nth 1 edges)))) + (set-frame-width frame (+ (ceiling (car size)) + width (- inner-width))) + (set-frame-height frame (+ (ceiling (cdr size)) + height (- inner-height))) + ;; The frame size after the above `set-frame-*' calls may + ;; differ from what we specified, due to window manager + ;; interference. We have to call `frame-width' and + ;; `frame-height' to get the actual results. + (set-frame-parameter frame 'image-mode-saved-params + (list (cons (frame-width) + (frame-height)) + (cons width height) + window-configuration))))))) ;;; Image Mode setup @@ -307,6 +329,9 @@ This function assumes the current frame has only one window." "The image type for the current Image mode buffer.") (make-variable-buffer-local 'image-type) +(defvar-local image-multi-frame nil + "Non-nil if image for the current Image mode buffer has multiple frames.") + (defvar image-mode-previous-major-mode nil "Internal variable to keep the previous non-image major mode.") @@ -315,8 +340,14 @@ This function assumes the current frame has only one window." (set-keymap-parent map special-mode-map) (define-key map "\C-c\C-c" 'image-toggle-display) (define-key map (kbd "SPC") 'image-scroll-up) + (define-key map (kbd "S-SPC") 'image-scroll-down) (define-key map (kbd "DEL") 'image-scroll-down) (define-key map (kbd "RET") 'image-toggle-animation) + (define-key map "F" 'image-goto-frame) + (define-key map "f" 'image-next-frame) + (define-key map "b" 'image-previous-frame) + (define-key map "n" 'image-next-file) + (define-key map "p" 'image-previous-file) (define-key map [remap forward-char] 'image-forward-hscroll) (define-key map [remap backward-char] 'image-backward-hscroll) (define-key map [remap right-char] 'image-forward-hscroll) @@ -331,6 +362,59 @@ This function assumes the current frame has only one window." (define-key map [remap move-end-of-line] 'image-eol) (define-key map [remap beginning-of-buffer] 'image-bob) (define-key map [remap end-of-buffer] 'image-eob) + (easy-menu-define image-mode-menu map "Menu for Image mode." + '("Image" + ["Show as Text" image-toggle-display :active t + :help "Show image as text"] + "--" + ["Fit Frame to Image" image-mode-fit-frame :active t + :help "Resize frame to match image"] + ["Fit to Window Height" image-transform-fit-to-height + :visible (eq image-type 'imagemagick) + :help "Resize image to match the window height"] + ["Fit to Window Width" image-transform-fit-to-width + :visible (eq image-type 'imagemagick) + :help "Resize image to match the window width"] + ["Rotate Image..." image-transform-set-rotation + :visible (eq image-type 'imagemagick) + :help "Rotate the image"] + "--" + ["Show Thumbnails" + (lambda () + (interactive) + (image-dired default-directory)) + :active default-directory + :help "Show thumbnails for all images in this directory"] + ["Next Image" image-next-file :active buffer-file-name + :help "Move to next image in this directory"] + ["Previous Image" image-previous-file :active buffer-file-name + :help "Move to previous image in this directory"] + "--" + ["Animate Image" image-toggle-animation :style toggle + :selected (let ((image (image-get-display-property))) + (and image (image-animate-timer image))) + :active image-multi-frame + :help "Toggle image animation"] + ["Loop Animation" + (lambda () (interactive) +;;; (make-variable-buffer-local 'image-animate-loop) + (setq image-animate-loop (not image-animate-loop)) + ;; FIXME this is a hacky way to make it affect a currently + ;; animating image. + (when (let ((image (image-get-display-property))) + (and image (image-animate-timer image))) + (image-toggle-animation) + (image-toggle-animation))) + :style toggle :selected image-animate-loop + :active image-multi-frame + :help "Animate images once, or forever?"] + ["Next Frame" image-next-frame :active image-multi-frame + :help "Show the next frame of this image"] + ["Previous Frame" image-previous-frame :active image-multi-frame + :help "Show the previous frame of this image"] + ["Goto Frame..." image-goto-frame :active image-multi-frame + :help "Show a specific frame of this image"] + )) map) "Mode keymap for `image-mode'.") @@ -384,15 +468,34 @@ to toggle between display as an image and display as text." (run-mode-hooks 'image-mode-hook) (let ((image (image-get-display-property)) (msg1 (substitute-command-keys - "Type \\[image-toggle-display] to view the image as "))) + "Type \\[image-toggle-display] to view the image as ")) + animated) (cond ((null image) (message "%s" (concat msg1 "an image."))) - ((image-animated-p image) + ((setq animated (image-multi-frame-p image)) + (setq image-multi-frame t + mode-line-process + `(:eval + (concat " " + (propertize + (format "[%s/%s]" + (1+ (image-current-frame ',image)) + ,(car animated)) + 'help-echo "Frames +mouse-1: Next frame +mouse-3: Previous frame" + 'mouse-face 'mode-line-highlight + 'local-map + '(keymap + (mode-line + keymap + (down-mouse-1 . image-next-frame) + (down-mouse-3 . image-previous-frame))))))) (message "%s" - (concat msg1 "text, or " - (substitute-command-keys - "\\[image-toggle-animation] to animate.")))) + (concat msg1 "text. This image has multiple frames."))) +;;; (substitute-command-keys +;;; "\\[image-toggle-animation] to animate.")))) (t (message "%s" (concat msg1 "text.")))))) @@ -581,7 +684,7 @@ Otherwise it plays once, then stops." (cond ((null image) (error "No image is present")) - ((null (setq animation (image-animated-p image))) + ((null (setq animation (image-multi-frame-p image))) (message "No image animation.")) (t (let ((timer (image-animate-timer image))) @@ -595,6 +698,85 @@ Otherwise it plays once, then stops." (image-animate image index (if image-animate-loop t))))))))) +(defun image-goto-frame (n &optional relative) + "Show frame N of a multi-frame image. +Optional argument OFFSET non-nil means interpret N as relative to the +current frame. Frames are indexed from 1." + (interactive + (list (or current-prefix-arg + (read-number "Show frame number: ")))) + (let ((image (image-get-display-property))) + (cond + ((null image) + (error "No image is present")) + ((null image-multi-frame) + (message "No image animation.")) + (t + (image-show-frame image + (if relative + (+ n (image-current-frame image)) + (1- n))))))) + +(defun image-next-frame (&optional n) + "Switch to the next frame of a multi-frame image. +With optional argument N, switch to the Nth frame after the current one. +If N is negative, switch to the Nth frame before the current one." + (interactive "p") + (image-goto-frame n t)) + +(defun image-previous-frame (&optional n) + "Switch to the previous frame of a multi-frame image. +With optional argument N, switch to the Nth frame before the current one. +If N is negative, switch to the Nth frame after the current one." + (interactive "p") + (image-next-frame (- n))) + + +;;; Switching to the next/previous image + +(defun image-next-file (&optional n) + "Visit the next image in the same directory as the current image file. +With optional argument N, visit the Nth image file after the +current one, in cyclic alphabetical order. + +This command visits the specified file via `find-alternate-file', +replacing the current Image mode buffer." + (interactive "p") + (unless (derived-mode-p 'image-mode) + (error "The buffer is not in Image mode")) + (unless buffer-file-name + (error "The current image is not associated with a file")) + (let* ((file (file-name-nondirectory buffer-file-name)) + (images (image-mode--images-in-directory file)) + (idx 0)) + (catch 'image-visit-next-file + (dolist (f images) + (if (string= f file) + (throw 'image-visit-next-file (1+ idx))) + (setq idx (1+ idx)))) + (setq idx (mod (+ idx (or n 1)) (length images))) + (find-alternate-file (nth idx images)))) + +(defun image-previous-file (&optional n) + "Visit the preceding image in the same directory as the current file. +With optional argument N, visit the Nth image file preceding the +current one, in cyclic alphabetical order. + +This command visits the specified file via `find-alternate-file', +replacing the current Image mode buffer." + (interactive "p") + (image-next-file (- n))) + +(defun image-mode--images-in-directory (file) + (let* ((dir (file-name-directory buffer-file-name)) + (files (directory-files dir nil + (image-file-name-regexp) t))) + ;; Add the current file to the list of images if necessary, in + ;; case it does not match `image-file-name-regexp'. + (unless (member file files) + (push file files)) + (sort files 'string-lessp))) + ;;; Support for bookmark.el (declare-function bookmark-make-record-default diff --git a/lisp/image.el b/lisp/image.el index 73b25f6da67..ec7b41bf126 100644 --- a/lisp/image.el +++ b/lisp/image.el @@ -606,25 +606,25 @@ Example: ;;; Animated image API -(defconst image-animated-types '(gif) - "List of supported animated image types.") - -(defun image-animated-p (image) - "Return non-nil if IMAGE can be animated. -To be capable of being animated, an image must be of a type -listed in `image-animated-types', and contain more than one -sub-image, with a specified animation delay. The actual return -value is a cons (NIMAGES . DELAY), where NIMAGES is the number -of sub-images in the animated image and DELAY is the delay in -seconds until the next sub-image should be displayed." - (cond - ((memq (plist-get (cdr image) :type) image-animated-types) - (let* ((metadata (image-metadata image)) - (images (plist-get metadata 'count)) - (delay (plist-get metadata 'delay))) - (when (and images (> images 1) (numberp delay)) - (if (< delay 0) (setq delay 0.1)) - (cons images delay)))))) +(defvar image-default-frame-delay 0.1 + "Default interval in seconds between frames of a multi-frame image. +Only used if the image does not specify a value.") + +(defun image-multi-frame-p (image) + "Return non-nil if IMAGE contains more than one frame. +The actual return value is a cons (NIMAGES . DELAY), where NIMAGES is +the number of frames (or sub-images) in the image and DELAY is the delay +in seconds that the image specifies between each frame. DELAY may be nil, +in which case you might want to use `image-default-frame-delay'." + (let* ((metadata (image-metadata image)) + (images (plist-get metadata 'count)) + (delay (plist-get metadata 'delay))) + (when (and images (> images 1)) + (if (or (not (numberp delay)) (< delay 0)) + (setq delay image-default-frame-delay)) + (cons images delay)))) + +(define-obsolete-function-alias 'image-animated-p 'image-multi-frame-p "24.4") ;; "Destructively"? (defun image-animate (image &optional index limit) @@ -635,7 +635,7 @@ With optional INDEX, begin animating from that animation frame. LIMIT specifies how long to animate the image. If omitted or nil, play the animation until the end. If t, loop forever. If a number, play until that number of seconds has elapsed." - (let ((animation (image-animated-p image)) + (let ((animation (image-multi-frame-p image)) timer) (when animation (if (setq timer (image-animate-timer image)) @@ -657,8 +657,25 @@ number, play until that number of seconds has elapsed." (setq timer nil))) timer)) +(defconst image-minimum-frame-delay 0.01 + "Minimum interval in seconds between frames of an animated image.") + +(defun image-current-frame (image) + "The current frame number of IMAGE, indexed from 0." + (or (plist-get (cdr image) :index) 0)) + +(defun image-show-frame (image n &optional nocheck) + "Show frame N of IMAGE. +Frames are indexed from 0. Optional argument NOCHECK non-nil means +do not check N is within the range of frames present in the image." + (unless nocheck + (if (< n 0) (setq n 0) + (setq n (min n (1- (car (image-multi-frame-p image))))))) + (plist-put (cdr image) :index n) + (force-window-update)) + ;; FIXME? The delay may not be the same for different sub-images, -;; hence we need to call image-animated-p to return it. +;; hence we need to call image-multi-frame-p to return it. ;; But it also returns count, so why do we bother passing that as an ;; argument? (defun image-animate-timeout (image n count time-elapsed limit) @@ -670,16 +687,16 @@ TIME-ELAPSED is the total time that has elapsed since LIMIT determines when to stop. If t, loop forever. If nil, stop after displaying the last animation frame. Otherwise, stop after LIMIT seconds have elapsed. -The minimum delay between successive frames is 0.01s." - (plist-put (cdr image) :index n) - (force-window-update) +The minimum delay between successive frames is `image-minimum-frame-delay'." + (image-show-frame image n t) (setq n (1+ n)) (let* ((time (float-time)) - (animation (image-animated-p image)) + (animation (image-multi-frame-p image)) ;; Subtract off the time we took to load the image from the ;; stated delay time. - (delay (max (+ (cdr animation) time (- (float-time))) - 0.01)) + (delay (max (+ (or (cdr animation) image-default-frame-delay) + time (- (float-time))) + image-minimum-frame-delay)) done) (if (>= n count) (if limit diff --git a/lisp/imenu.el b/lisp/imenu.el index f64d1afe951..d79b0abeebc 100644 --- a/lisp/imenu.el +++ b/lisp/imenu.el @@ -405,11 +405,11 @@ Don't move point." ;; Regular expression to find C functions (defvar imenu-example--function-name-regexp-c (concat - "^[a-zA-Z0-9]+[ \t]?" ; type specs; there can be no + "^[a-zA-Z0-9]+[ \t]?" ; Type specs; there can be no "\\([a-zA-Z0-9_*]+[ \t]+\\)?" ; more than 3 tokens, right? "\\([a-zA-Z0-9_*]+[ \t]+\\)?" - "\\([*&]+[ \t]*\\)?" ; pointer - "\\([a-zA-Z0-9_*]+\\)[ \t]*(" ; name + "\\([*&]+[ \t]*\\)?" ; Pointer. + "\\([a-zA-Z0-9_*]+\\)[ \t]*(" ; Name. )) (defun imenu-example--create-c-index (&optional regexp) @@ -555,16 +555,14 @@ NOT share structure with ALIST." (defun imenu--truncate-items (menulist) "Truncate all strings in MENULIST to `imenu-max-item-length'." - (mapcar (lambda (item) - (cond - ((consp (cdr item)) - (imenu--truncate-items (cdr item))) - ;; truncate if necessary - ((and (numberp imenu-max-item-length) - (> (length (car item)) imenu-max-item-length)) - (setcar item (substring (car item) 0 imenu-max-item-length))))) - menulist)) - + (mapc (lambda (item) + ;; Truncate if necessary. + (when (and (numberp imenu-max-item-length) + (> (length (car item)) imenu-max-item-length)) + (setcar item (substring (car item) 0 imenu-max-item-length))) + (when (imenu--subalist-p item) + (imenu--truncate-items (cdr item)))) + menulist)) (defun imenu--make-index-alist (&optional noerror) "Create an index alist for the definitions in the current buffer. @@ -577,7 +575,7 @@ See `imenu--index-alist' for the format of the index alist." (or (not imenu-auto-rescan) (and imenu-auto-rescan (> (buffer-size) imenu-auto-rescan-maxout)))) - ;; Get the index; truncate if necessary + ;; Get the index; truncate if necessary. (progn (setq imenu--index-alist (save-excursion @@ -678,19 +676,20 @@ The alternate method, which is the one most often used, is to call ;; in these major modes. But save that change for later. (cond ((and imenu-prev-index-position-function imenu-extract-index-name-function) - (let ((index-alist '()) (pos (point)) + (let ((index-alist '()) (pos (point-max)) name) - (goto-char (point-max)) + (goto-char pos) ;; Search for the function (while (funcall imenu-prev-index-position-function) - (when (= pos (point)) + (unless (< (point) pos) (error "Infinite loop at %s:%d: imenu-prev-index-position-function does not move point" (buffer-name) pos)) (setq pos (point)) (save-excursion (setq name (funcall imenu-extract-index-name-function))) (and (stringp name) - ;; [ydi] updated for imenu-use-markers - (push (cons name (if imenu-use-markers (point-marker) (point))) + ;; [ydi] Updated for imenu-use-markers. + (push (cons name + (if imenu-use-markers (point-marker) (point))) index-alist))) index-alist)) ;; Use generic expression if possible. @@ -743,12 +742,12 @@ depending on PATTERNS." (modify-syntax-entry c (cdr syn) table)) (car syn)))) (goto-char (point-max)) - (unwind-protect ; for syntax table + (unwind-protect ; For syntax table. (save-match-data (set-syntax-table table) - ;; map over the elements of imenu-generic-expression - ;; (typically functions, variables ...) + ;; Map over the elements of imenu-generic-expression + ;; (typically functions, variables ...). (dolist (pat patterns) (let ((menu-title (car pat)) (regexp (nth 1 pat)) @@ -1004,7 +1003,7 @@ The ignored args just make this function have the same interface as a function placed in a special index-item." (if (or (< position (point-min)) (> position (point-max))) - ;; widen if outside narrowing + ;; Widen if outside narrowing. (widen)) (goto-char position)) diff --git a/lisp/info-look.el b/lisp/info-look.el index a67fabc5a88..afe4301c659 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -27,6 +27,14 @@ ;; Really cool code to lookup info indexes. ;; Try especially info-lookup-symbol (aka C-h S). +;; Some additional sources of (Tex)info files for non-GNU packages: +;; +;; Scheme: <URL:http://groups.csail.mit.edu/mac/ftpdir/scm/r5rs.info.tar.gz> +;; LaTeX: +;; <URL:ftp://ctan.tug.org/tex-archive/info/latex2e-help-texinfo/latex2e.texi> +;; (or CTAN mirrors) +;; Perl: <URL:ftp://ftp.cpan.org/pub/CPAN/doc/manual/texinfo/> (or CPAN mirrors) + ;;; Code: (require 'info) @@ -298,6 +306,21 @@ If optional argument QUERY is non-nil, query for the help mode." (when (string-match (caar file-name-alist) file-name) (setq info-lookup-mode (cdar file-name-alist))) (setq file-name-alist (cdr file-name-alist))))) + + ;; If major-mode has no setups in info-lookup-alist, under any topic, then + ;; search up through derived-mode-parent to find a parent mode which does + ;; have some setups. This means that a `define-derived-mode' with no + ;; setups of its own will select its parent mode for lookups, if one of + ;; its parents has some setups. Good for example on `makefile-gmake-mode' + ;; and similar derivatives of `makefile-mode'. + ;; + (let ((mode major-mode)) ;; Look for `mode' with some setups. + (while (and mode (not info-lookup-mode)) + (dolist (topic-cell info-lookup-alist) ;; Usually only two topics here. + (if (info-lookup->mode-value (car topic-cell) mode) + (setq info-lookup-mode mode))) + (setq mode (get mode 'derived-mode-parent)))) + (or info-lookup-mode (setq info-lookup-mode major-mode))) (defun info-lookup-change-mode (topic) diff --git a/lisp/info.el b/lisp/info.el index e230ed0f82c..3792857d47a 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -59,15 +59,6 @@ to the user." :group 'info :version "24.1") -(defcustom Info-enable-edit nil - "Non-nil means the \\<Info-mode-map>\\[Info-edit] command in Info can edit the current node. -This is convenient if you want to write Info files by hand. -However, we recommend that you not do this. -It is better to write a Texinfo file and generate the Info file from that, -because that gives you a printed manual as well." - :type 'boolean - :group 'info) - (defvar Info-enable-active-nodes nil "Non-nil allows Info to execute Lisp code associated with nodes. The Lisp code is executed when the node is selected.") @@ -375,6 +366,9 @@ with wrapping around the current Info node." (defvar Info-edit-mode-hook nil "Hooks run when `Info-edit-mode' is called.") +(make-obsolete-variable 'Info-edit-mode-hook + "editing Info nodes by hand is not recommended." "24.4") + (defvar Info-current-file nil "Info file that Info is now looking at, or nil. This is the name that was specified in Info, not the actual file name. @@ -2151,7 +2145,7 @@ and is not in the header line or a tag table." (let ((backward (< found beg-found))) (not (or - (and (not (eq search-invisible t)) + (and (not search-invisible) (if backward (or (text-property-not-all found beg-found 'invisible nil) (text-property-not-all found beg-found 'display nil)) @@ -3063,48 +3057,62 @@ See `Info-scroll-down'." (select-window (posn-window (event-start e)))) (Info-scroll-down))) -(defun Info-next-reference (&optional recur) - "Move cursor to the next cross-reference or menu item in the node." - (interactive) - (let ((pat "\\*note[ \n\t]+\\([^:]+\\):\\|^\\* .*:\\|[hf]t?tps?://") - (old-pt (point)) - (case-fold-search t)) - (or (eobp) (forward-char 1)) - (or (re-search-forward pat nil t) - (progn - (goto-char (point-min)) - (or (re-search-forward pat nil t) - (progn - (goto-char old-pt) - (user-error "No cross references in this node"))))) - (goto-char (or (match-beginning 1) (match-beginning 0))) - (if (looking-at "\\* Menu:") - (if recur - (user-error "No cross references in this node") - (Info-next-reference t)) - (if (looking-at "^\\* ") - (forward-char 2))))) - -(defun Info-prev-reference (&optional recur) - "Move cursor to the previous cross-reference or menu item in the node." - (interactive) - (let ((pat "\\*note[ \n\t]+\\([^:]+\\):\\|^\\* .*:\\|[hf]t?tps?://") - (old-pt (point)) - (case-fold-search t)) - (or (re-search-backward pat nil t) - (progn - (goto-char (point-max)) - (or (re-search-backward pat nil t) - (progn - (goto-char old-pt) - (user-error "No cross references in this node"))))) - (goto-char (or (match-beginning 1) (match-beginning 0))) - (if (looking-at "\\* Menu:") - (if recur - (user-error "No cross references in this node") - (Info-prev-reference t)) - (if (looking-at "^\\* ") - (forward-char 2))))) +(defun Info-next-reference (&optional recur count) + "Move cursor to the next cross-reference or menu item in the node. +If COUNT is non-nil (interactively with a prefix arg), jump over +COUNT cross-references." + (interactive "i\np") + (unless count + (setq count 1)) + (if (< count 0) + (Info-prev-reference recur (- count)) + (while (unless (zerop count) (setq count (1- count))) + (let ((pat "\\*note[ \n\t]+\\([^:]+\\):\\|^\\* .*:\\|[hf]t?tps?://") + (old-pt (point)) + (case-fold-search t)) + (or (eobp) (forward-char 1)) + (or (re-search-forward pat nil t) + (progn + (goto-char (point-min)) + (or (re-search-forward pat nil t) + (progn + (goto-char old-pt) + (user-error "No cross references in this node"))))) + (goto-char (or (match-beginning 1) (match-beginning 0))) + (if (looking-at "\\* Menu:") + (if recur + (user-error "No cross references in this node") + (Info-next-reference t)) + (if (looking-at "^\\* ") + (forward-char 2))))))) + +(defun Info-prev-reference (&optional recur count) + "Move cursor to the previous cross-reference or menu item in the node. +If COUNT is non-nil (interactively with a prefix arg), jump over +COUNT cross-references." + (interactive "i\np") + (unless count + (setq count 1)) + (if (< count 0) + (Info-next-reference recur (- count)) + (while (unless (zerop count) (setq count (1- count))) + (let ((pat "\\*note[ \n\t]+\\([^:]+\\):\\|^\\* .*:\\|[hf]t?tps?://") + (old-pt (point)) + (case-fold-search t)) + (or (re-search-backward pat nil t) + (progn + (goto-char (point-max)) + (or (re-search-backward pat nil t) + (progn + (goto-char old-pt) + (user-error "No cross references in this node"))))) + (goto-char (or (match-beginning 1) (match-beginning 0))) + (if (looking-at "\\* Menu:") + (if recur + (user-error "No cross references in this node") + (Info-prev-reference t)) + (if (looking-at "^\\* ") + (forward-char 2))))))) (defun Info-index-nodes (&optional file) "Return a list of names of all index nodes in Info FILE. @@ -3860,6 +3868,7 @@ If FORK is non-nil, it is passed to `Info-goto-node'." (suppress-keymap map) (define-key map "." 'beginning-of-buffer) (define-key map " " 'Info-scroll-up) + (define-key map [?\S-\ ] 'Info-scroll-down) (define-key map "\C-m" 'Info-follow-nearest-node) (define-key map "\t" 'Info-next-reference) (define-key map "\e\t" 'Info-prev-reference) @@ -4238,6 +4247,10 @@ Advanced commands: map) "Local keymap used within `e' command of Info.") +(make-obsolete-variable 'Info-edit-map + "editing Info nodes by hand is not recommended." + "24.4") + ;; Info-edit mode is suitable only for specially formatted data. (put 'Info-edit-mode 'mode-class 'special) @@ -4255,16 +4268,22 @@ which returns to Info mode for browsing. (buffer-enable-undo (current-buffer)) (run-mode-hooks 'Info-edit-mode-hook)) +(make-obsolete 'Info-edit-mode + "editing Info nodes by hand is not recommended." "24.4") + (defun Info-edit () - "Edit the contents of this Info node. -Allowed only if variable `Info-enable-edit' is non-nil." + "Edit the contents of this Info node." (interactive) - (or Info-enable-edit - (error "Editing Info nodes is not enabled")) (Info-edit-mode) (message "%s" (substitute-command-keys "Editing: Type \\<Info-edit-map>\\[Info-cease-edit] to return to info"))) +(put 'Info-edit 'disabled "Editing Info nodes by hand is not recommended. +This feature will be removed in future.") + +(make-obsolete 'Info-edit + "editing Info nodes by hand is not recommended." "24.4") + (defun Info-cease-edit () "Finish editing Info node; switch back to Info proper." (interactive) @@ -4281,6 +4300,9 @@ Allowed only if variable `Info-enable-edit' is non-nil." (and (marker-position Info-tag-table-marker) (buffer-modified-p) (message "Tags may have changed. Use Info-tagify if necessary"))) + +(make-obsolete 'Info-cease-edit + "editing Info nodes by hand is not recommended." "24.4") (defvar Info-file-list-for-emacs '("ediff" "eudc" "forms" "gnus" "info" ("Info" . "info") ("mh" . "mh-e") diff --git a/lisp/informat.el b/lisp/informat.el index d4412b8a86a..53b043fbbad 100644 --- a/lisp/informat.el +++ b/lisp/informat.el @@ -43,14 +43,17 @@ ;; save-restrictions would not work ;; because it records the old max relative to the end. ;; We record it relative to the beginning. - (if input-buffer-name - (message "Tagifying region in %s ..." input-buffer-name) - (message - "Tagifying %s ..." (file-name-nondirectory (buffer-file-name)))) (let ((omin (point-min)) (omax (point-max)) (nomax (= (point-max) (1+ (buffer-size)))) - (opoint (point))) + (opoint (point)) + (msg (format "Tagifying %s..." + (cond (input-buffer-name + (format "region in %s" input-buffer-name)) + (buffer-file-name + (file-name-nondirectory (buffer-file-name))) + (t "buffer"))))) + (message "%s" msg) (unwind-protect (progn (widen) @@ -148,11 +151,8 @@ (insert "\^_\nEnd tag table\n"))))) (goto-char opoint) (narrow-to-region omin (if nomax (1+ (buffer-size)) - (min omax (point-max)))))) - (if input-buffer-name - (message "Tagifying region in %s done" input-buffer-name) - (message - "Tagifying %s done" (file-name-nondirectory (buffer-file-name))))) + (min omax (point-max))))) + (message "%sdone" msg))) ;;;###autoload diff --git a/lisp/international/iso-cvt.el b/lisp/international/iso-cvt.el index 34488db5f17..407ff3ae7a4 100644 --- a/lisp/international/iso-cvt.el +++ b/lisp/international/iso-cvt.el @@ -1,4 +1,4 @@ -;;; iso-cvt.el --- translate ISO 8859-1 from/to various encodings -*- coding: iso-latin-1 -*- +;;; iso-cvt.el --- translate ISO 8859-1 from/to various encodings -*- coding: utf-8 -*- ;; This file was formerly called gm-lingo.el. ;; Copyright (C) 1993-1998, 2000-2013 Free Software Foundation, Inc. @@ -45,19 +45,19 @@ (defvar iso-spanish-trans-tab '( - ("~n" "ñ") - ("\([a-zA-Z]\)#" "\\1ñ") - ("~N" "Ñ") - ("\\([-a-zA-Z\"`]\\)\"u" "\\1ü") - ("\\([-a-zA-Z\"`]\\)\"U" "\\1Ü") - ("\\([-a-zA-Z]\\)'o" "\\1ó") - ("\\([-a-zA-Z]\\)'O" "\\Ó") - ("\\([-a-zA-Z]\\)'e" "\\1é") - ("\\([-a-zA-Z]\\)'E" "\\1É") - ("\\([-a-zA-Z]\\)'a" "\\1á") + ("~n" "ñ") + ("\([a-zA-Z]\)#" "\\1ñ") + ("~N" "Ñ") + ("\\([-a-zA-Z\"`]\\)\"u" "\\1ü") + ("\\([-a-zA-Z\"`]\\)\"U" "\\1Ü") + ("\\([-a-zA-Z]\\)'o" "\\1ó") + ("\\([-a-zA-Z]\\)'O" "\\Ó") + ("\\([-a-zA-Z]\\)'e" "\\1é") + ("\\([-a-zA-Z]\\)'E" "\\1É") + ("\\([-a-zA-Z]\\)'a" "\\1á") ("\\([-a-zA-Z]\\)'A" "\\1A") - ("\\([-a-zA-Z]\\)'i" "\\1í") - ("\\([-a-zA-Z]\\)'I" "\\1Í") + ("\\([-a-zA-Z]\\)'i" "\\1Ã") + ("\\([-a-zA-Z]\\)'I" "\\1Ã") ) "Spanish translation table.") @@ -89,14 +89,14 @@ Optional arg BUFFER is ignored (for use in `format-alist')." (defvar iso-aggressive-german-trans-tab '( - ("\"a" "ä") - ("\"A" "Ä") - ("\"o" "ö") - ("\"O" "Ö") - ("\"u" "ü") - ("\"U" "Ü") - ("\"s" "ß") - ("\\\\3" "ß") + ("\"a" "ä") + ("\"A" "Ä") + ("\"o" "ö") + ("\"O" "Ö") + ("\"u" "ü") + ("\"U" "Ü") + ("\"s" "ß") + ("\\\\3" "ß") ) "German translation table. This table uses an aggressive translation approach @@ -104,14 +104,14 @@ and may erroneously translate too much.") (defvar iso-conservative-german-trans-tab '( - ("\\([-a-zA-Z\"`]\\)\"a" "\\1ä") - ("\\([-a-zA-Z\"`]\\)\"A" "\\1Ä") - ("\\([-a-zA-Z\"`]\\)\"o" "\\1ö") - ("\\([-a-zA-Z\"`]\\)\"O" "\\1Ö") - ("\\([-a-zA-Z\"`]\\)\"u" "\\1ü") - ("\\([-a-zA-Z\"`]\\)\"U" "\\1Ü") - ("\\([-a-zA-Z\"`]\\)\"s" "\\1ß") - ("\\([-a-zA-Z\"`]\\)\\\\3" "\\1ß") + ("\\([-a-zA-Z\"`]\\)\"a" "\\1ä") + ("\\([-a-zA-Z\"`]\\)\"A" "\\1Ä") + ("\\([-a-zA-Z\"`]\\)\"o" "\\1ö") + ("\\([-a-zA-Z\"`]\\)\"O" "\\1Ö") + ("\\([-a-zA-Z\"`]\\)\"u" "\\1ü") + ("\\([-a-zA-Z\"`]\\)\"U" "\\1Ü") + ("\\([-a-zA-Z\"`]\\)\"s" "\\1ß") + ("\\([-a-zA-Z\"`]\\)\\\\3" "\\1ß") ) "German translation table. This table uses a conservative translation approach @@ -131,65 +131,65 @@ Optional arg BUFFER is ignored (for use in `format-alist')." (defvar iso-iso2tex-trans-tab '( - ("ä" "{\\\\\"a}") - ("à" "{\\\\`a}") - ("á" "{\\\\'a}") - ("ã" "{\\\\~a}") - ("â" "{\\\\^a}") - ("ë" "{\\\\\"e}") - ("è" "{\\\\`e}") - ("é" "{\\\\'e}") - ("ê" "{\\\\^e}") - ("ï" "{\\\\\"\\\\i}") - ("ì" "{\\\\`\\\\i}") - ("í" "{\\\\'\\\\i}") - ("î" "{\\\\^\\\\i}") - ("ö" "{\\\\\"o}") - ("ò" "{\\\\`o}") - ("ó" "{\\\\'o}") - ("õ" "{\\\\~o}") - ("ô" "{\\\\^o}") - ("ü" "{\\\\\"u}") - ("ù" "{\\\\`u}") - ("ú" "{\\\\'u}") - ("û" "{\\\\^u}") - ("Ä" "{\\\\\"A}") - ("À" "{\\\\`A}") - ("Á" "{\\\\'A}") - ("Ã" "{\\\\~A}") - ("Â" "{\\\\^A}") - ("Ë" "{\\\\\"E}") - ("È" "{\\\\`E}") - ("É" "{\\\\'E}") - ("Ê" "{\\\\^E}") - ("Ï" "{\\\\\"I}") - ("Ì" "{\\\\`I}") - ("Í" "{\\\\'I}") - ("Î" "{\\\\^I}") - ("Ö" "{\\\\\"O}") - ("Ò" "{\\\\`O}") - ("Ó" "{\\\\'O}") - ("Õ" "{\\\\~O}") - ("Ô" "{\\\\^O}") - ("Ü" "{\\\\\"U}") - ("Ù" "{\\\\`U}") - ("Ú" "{\\\\'U}") - ("Û" "{\\\\^U}") - ("ñ" "{\\\\~n}") - ("Ñ" "{\\\\~N}") - ("ç" "{\\\\c c}") - ("Ç" "{\\\\c C}") - ("ß" "{\\\\ss}") + ("ä" "{\\\\\"a}") + ("à " "{\\\\`a}") + ("á" "{\\\\'a}") + ("ã" "{\\\\~a}") + ("â" "{\\\\^a}") + ("ë" "{\\\\\"e}") + ("è" "{\\\\`e}") + ("é" "{\\\\'e}") + ("ê" "{\\\\^e}") + ("ï" "{\\\\\"\\\\i}") + ("ì" "{\\\\`\\\\i}") + ("Ã" "{\\\\'\\\\i}") + ("î" "{\\\\^\\\\i}") + ("ö" "{\\\\\"o}") + ("ò" "{\\\\`o}") + ("ó" "{\\\\'o}") + ("õ" "{\\\\~o}") + ("ô" "{\\\\^o}") + ("ü" "{\\\\\"u}") + ("ù" "{\\\\`u}") + ("ú" "{\\\\'u}") + ("û" "{\\\\^u}") + ("Ä" "{\\\\\"A}") + ("À" "{\\\\`A}") + ("Ã" "{\\\\'A}") + ("Ã" "{\\\\~A}") + ("Â" "{\\\\^A}") + ("Ë" "{\\\\\"E}") + ("È" "{\\\\`E}") + ("É" "{\\\\'E}") + ("Ê" "{\\\\^E}") + ("Ã" "{\\\\\"I}") + ("ÃŒ" "{\\\\`I}") + ("Ã" "{\\\\'I}") + ("ÃŽ" "{\\\\^I}") + ("Ö" "{\\\\\"O}") + ("Ã’" "{\\\\`O}") + ("Ó" "{\\\\'O}") + ("Õ" "{\\\\~O}") + ("Ô" "{\\\\^O}") + ("Ü" "{\\\\\"U}") + ("Ù" "{\\\\`U}") + ("Ú" "{\\\\'U}") + ("Û" "{\\\\^U}") + ("ñ" "{\\\\~n}") + ("Ñ" "{\\\\~N}") + ("ç" "{\\\\c c}") + ("Ç" "{\\\\c C}") + ("ß" "{\\\\ss}") ("\306" "{\\\\AE}") ("\346" "{\\\\ae}") ("\305" "{\\\\AA}") ("\345" "{\\\\aa}") ("\251" "{\\\\copyright}") - ("£" "{\\\\pounds}") - ("¶" "{\\\\P}") - ("§" "{\\\\S}") - ("¿" "{?`}") - ("¡" "{!`}") + ("£" "{\\\\pounds}") + ("¶" "{\\\\P}") + ("§" "{\\\\S}") + ("¿" "{?`}") + ("¡" "{!`}") ) "Translation table for translating ISO 8859-1 characters to TeX sequences.") @@ -204,183 +204,183 @@ Optional arg BUFFER is ignored (for use in `format-alist')." (defvar iso-tex2iso-trans-tab '( - ("{\\\\\"a}" "ä") - ("{\\\\`a}" "à") - ("{\\\\'a}" "á") - ("{\\\\~a}" "ã") - ("{\\\\^a}" "â") - ("{\\\\\"e}" "ë") - ("{\\\\`e}" "è") - ("{\\\\'e}" "é") - ("{\\\\^e}" "ê") - ("{\\\\\"\\\\i}" "ï") - ("{\\\\`\\\\i}" "ì") - ("{\\\\'\\\\i}" "í") - ("{\\\\^\\\\i}" "î") - ("{\\\\\"i}" "ï") - ("{\\\\`i}" "ì") - ("{\\\\'i}" "í") - ("{\\\\^i}" "î") - ("{\\\\\"o}" "ö") - ("{\\\\`o}" "ò") - ("{\\\\'o}" "ó") - ("{\\\\~o}" "õ") - ("{\\\\^o}" "ô") - ("{\\\\\"u}" "ü") - ("{\\\\`u}" "ù") - ("{\\\\'u}" "ú") - ("{\\\\^u}" "û") - ("{\\\\\"A}" "Ä") - ("{\\\\`A}" "À") - ("{\\\\'A}" "Á") - ("{\\\\~A}" "Ã") - ("{\\\\^A}" "Â") - ("{\\\\\"E}" "Ë") - ("{\\\\`E}" "È") - ("{\\\\'E}" "É") - ("{\\\\^E}" "Ê") - ("{\\\\\"I}" "Ï") - ("{\\\\`I}" "Ì") - ("{\\\\'I}" "Í") - ("{\\\\^I}" "Î") - ("{\\\\\"O}" "Ö") - ("{\\\\`O}" "Ò") - ("{\\\\'O}" "Ó") - ("{\\\\~O}" "Õ") - ("{\\\\^O}" "Ô") - ("{\\\\\"U}" "Ü") - ("{\\\\`U}" "Ù") - ("{\\\\'U}" "Ú") - ("{\\\\^U}" "Û") - ("{\\\\~n}" "ñ") - ("{\\\\~N}" "Ñ") - ("{\\\\c c}" "ç") - ("{\\\\c C}" "Ç") - ("\\\\\"a" "ä") - ("\\\\`a" "à") - ("\\\\'a" "á") - ("\\\\~a" "ã") - ("\\\\^a" "â") - ("\\\\\"e" "ë") - ("\\\\`e" "è") - ("\\\\'e" "é") - ("\\\\^e" "ê") + ("{\\\\\"a}" "ä") + ("{\\\\`a}" "à ") + ("{\\\\'a}" "á") + ("{\\\\~a}" "ã") + ("{\\\\^a}" "â") + ("{\\\\\"e}" "ë") + ("{\\\\`e}" "è") + ("{\\\\'e}" "é") + ("{\\\\^e}" "ê") + ("{\\\\\"\\\\i}" "ï") + ("{\\\\`\\\\i}" "ì") + ("{\\\\'\\\\i}" "Ã") + ("{\\\\^\\\\i}" "î") + ("{\\\\\"i}" "ï") + ("{\\\\`i}" "ì") + ("{\\\\'i}" "Ã") + ("{\\\\^i}" "î") + ("{\\\\\"o}" "ö") + ("{\\\\`o}" "ò") + ("{\\\\'o}" "ó") + ("{\\\\~o}" "õ") + ("{\\\\^o}" "ô") + ("{\\\\\"u}" "ü") + ("{\\\\`u}" "ù") + ("{\\\\'u}" "ú") + ("{\\\\^u}" "û") + ("{\\\\\"A}" "Ä") + ("{\\\\`A}" "À") + ("{\\\\'A}" "Ã") + ("{\\\\~A}" "Ã") + ("{\\\\^A}" "Â") + ("{\\\\\"E}" "Ë") + ("{\\\\`E}" "È") + ("{\\\\'E}" "É") + ("{\\\\^E}" "Ê") + ("{\\\\\"I}" "Ã") + ("{\\\\`I}" "ÃŒ") + ("{\\\\'I}" "Ã") + ("{\\\\^I}" "ÃŽ") + ("{\\\\\"O}" "Ö") + ("{\\\\`O}" "Ã’") + ("{\\\\'O}" "Ó") + ("{\\\\~O}" "Õ") + ("{\\\\^O}" "Ô") + ("{\\\\\"U}" "Ü") + ("{\\\\`U}" "Ù") + ("{\\\\'U}" "Ú") + ("{\\\\^U}" "Û") + ("{\\\\~n}" "ñ") + ("{\\\\~N}" "Ñ") + ("{\\\\c c}" "ç") + ("{\\\\c C}" "Ç") + ("\\\\\"a" "ä") + ("\\\\`a" "à ") + ("\\\\'a" "á") + ("\\\\~a" "ã") + ("\\\\^a" "â") + ("\\\\\"e" "ë") + ("\\\\`e" "è") + ("\\\\'e" "é") + ("\\\\^e" "ê") ;; Discard spaces and/or one EOF after macro \i. ;; Converting it back will use braces. - ("\\\\\"\\\\i *\n\n" "ï\n\n") - ("\\\\\"\\\\i *\n?" "ï") - ("\\\\`\\\\i *\n\n" "ì\n\n") - ("\\\\`\\\\i *\n?" "ì") - ("\\\\'\\\\i *\n\n" "í\n\n") - ("\\\\'\\\\i *\n?" "í") - ("\\\\^\\\\i *\n\n" "î\n\n") - ("\\\\^\\\\i *\n?" "î") - ("\\\\\"i" "ï") - ("\\\\`i" "ì") - ("\\\\'i" "í") - ("\\\\^i" "î") - ("\\\\\"o" "ö") - ("\\\\`o" "ò") - ("\\\\'o" "ó") - ("\\\\~o" "õ") - ("\\\\^o" "ô") - ("\\\\\"u" "ü") - ("\\\\`u" "ù") - ("\\\\'u" "ú") - ("\\\\^u" "û") - ("\\\\\"A" "Ä") - ("\\\\`A" "À") - ("\\\\'A" "Á") - ("\\\\~A" "Ã") - ("\\\\^A" "Â") - ("\\\\\"E" "Ë") - ("\\\\`E" "È") - ("\\\\'E" "É") - ("\\\\^E" "Ê") - ("\\\\\"I" "Ï") - ("\\\\`I" "Ì") - ("\\\\'I" "Í") - ("\\\\^I" "Î") - ("\\\\\"O" "Ö") - ("\\\\`O" "Ò") - ("\\\\'O" "Ó") - ("\\\\~O" "Õ") - ("\\\\^O" "Ô") - ("\\\\\"U" "Ü") - ("\\\\`U" "Ù") - ("\\\\'U" "Ú") - ("\\\\^U" "Û") - ("\\\\~n" "ñ") - ("\\\\~N" "Ñ") - ("\\\\\"{a}" "ä") - ("\\\\`{a}" "à") - ("\\\\'{a}" "á") - ("\\\\~{a}" "ã") - ("\\\\^{a}" "â") - ("\\\\\"{e}" "ë") - ("\\\\`{e}" "è") - ("\\\\'{e}" "é") - ("\\\\^{e}" "ê") - ("\\\\\"{\\\\i}" "ï") - ("\\\\`{\\\\i}" "ì") - ("\\\\'{\\\\i}" "í") - ("\\\\^{\\\\i}" "î") - ("\\\\\"{i}" "ï") - ("\\\\`{i}" "ì") - ("\\\\'{i}" "í") - ("\\\\^{i}" "î") - ("\\\\\"{o}" "ö") - ("\\\\`{o}" "ò") - ("\\\\'{o}" "ó") - ("\\\\~{o}" "õ") - ("\\\\^{o}" "ô") - ("\\\\\"{u}" "ü") - ("\\\\`{u}" "ù") - ("\\\\'{u}" "ú") - ("\\\\^{u}" "û") - ("\\\\\"{A}" "Ä") - ("\\\\`{A}" "À") - ("\\\\'{A}" "Á") - ("\\\\~{A}" "Ã") - ("\\\\^{A}" "Â") - ("\\\\\"{E}" "Ë") - ("\\\\`{E}" "È") - ("\\\\'{E}" "É") - ("\\\\^{E}" "Ê") - ("\\\\\"{I}" "Ï") - ("\\\\`{I}" "Ì") - ("\\\\'{I}" "Í") - ("\\\\^{I}" "Î") - ("\\\\\"{O}" "Ö") - ("\\\\`{O}" "Ò") - ("\\\\'{O}" "Ó") - ("\\\\~{O}" "Õ") - ("\\\\^{O}" "Ô") - ("\\\\\"{U}" "Ü") - ("\\\\`{U}" "Ù") - ("\\\\'{U}" "Ú") - ("\\\\^{U}" "Û") - ("\\\\~{n}" "ñ") - ("\\\\~{N}" "Ñ") - ("\\\\c{c}" "ç") - ("\\\\c{C}" "Ç") - ("{\\\\ss}" "ß") + ("\\\\\"\\\\i *\n\n" "ï\n\n") + ("\\\\\"\\\\i *\n?" "ï") + ("\\\\`\\\\i *\n\n" "ì\n\n") + ("\\\\`\\\\i *\n?" "ì") + ("\\\\'\\\\i *\n\n" "Ã\n\n") + ("\\\\'\\\\i *\n?" "Ã") + ("\\\\^\\\\i *\n\n" "î\n\n") + ("\\\\^\\\\i *\n?" "î") + ("\\\\\"i" "ï") + ("\\\\`i" "ì") + ("\\\\'i" "Ã") + ("\\\\^i" "î") + ("\\\\\"o" "ö") + ("\\\\`o" "ò") + ("\\\\'o" "ó") + ("\\\\~o" "õ") + ("\\\\^o" "ô") + ("\\\\\"u" "ü") + ("\\\\`u" "ù") + ("\\\\'u" "ú") + ("\\\\^u" "û") + ("\\\\\"A" "Ä") + ("\\\\`A" "À") + ("\\\\'A" "Ã") + ("\\\\~A" "Ã") + ("\\\\^A" "Â") + ("\\\\\"E" "Ë") + ("\\\\`E" "È") + ("\\\\'E" "É") + ("\\\\^E" "Ê") + ("\\\\\"I" "Ã") + ("\\\\`I" "ÃŒ") + ("\\\\'I" "Ã") + ("\\\\^I" "ÃŽ") + ("\\\\\"O" "Ö") + ("\\\\`O" "Ã’") + ("\\\\'O" "Ó") + ("\\\\~O" "Õ") + ("\\\\^O" "Ô") + ("\\\\\"U" "Ü") + ("\\\\`U" "Ù") + ("\\\\'U" "Ú") + ("\\\\^U" "Û") + ("\\\\~n" "ñ") + ("\\\\~N" "Ñ") + ("\\\\\"{a}" "ä") + ("\\\\`{a}" "à ") + ("\\\\'{a}" "á") + ("\\\\~{a}" "ã") + ("\\\\^{a}" "â") + ("\\\\\"{e}" "ë") + ("\\\\`{e}" "è") + ("\\\\'{e}" "é") + ("\\\\^{e}" "ê") + ("\\\\\"{\\\\i}" "ï") + ("\\\\`{\\\\i}" "ì") + ("\\\\'{\\\\i}" "Ã") + ("\\\\^{\\\\i}" "î") + ("\\\\\"{i}" "ï") + ("\\\\`{i}" "ì") + ("\\\\'{i}" "Ã") + ("\\\\^{i}" "î") + ("\\\\\"{o}" "ö") + ("\\\\`{o}" "ò") + ("\\\\'{o}" "ó") + ("\\\\~{o}" "õ") + ("\\\\^{o}" "ô") + ("\\\\\"{u}" "ü") + ("\\\\`{u}" "ù") + ("\\\\'{u}" "ú") + ("\\\\^{u}" "û") + ("\\\\\"{A}" "Ä") + ("\\\\`{A}" "À") + ("\\\\'{A}" "Ã") + ("\\\\~{A}" "Ã") + ("\\\\^{A}" "Â") + ("\\\\\"{E}" "Ë") + ("\\\\`{E}" "È") + ("\\\\'{E}" "É") + ("\\\\^{E}" "Ê") + ("\\\\\"{I}" "Ã") + ("\\\\`{I}" "ÃŒ") + ("\\\\'{I}" "Ã") + ("\\\\^{I}" "ÃŽ") + ("\\\\\"{O}" "Ö") + ("\\\\`{O}" "Ã’") + ("\\\\'{O}" "Ó") + ("\\\\~{O}" "Õ") + ("\\\\^{O}" "Ô") + ("\\\\\"{U}" "Ü") + ("\\\\`{U}" "Ù") + ("\\\\'{U}" "Ú") + ("\\\\^{U}" "Û") + ("\\\\~{n}" "ñ") + ("\\\\~{N}" "Ñ") + ("\\\\c{c}" "ç") + ("\\\\c{C}" "Ç") + ("{\\\\ss}" "ß") ("{\\\\AE}" "\306") ("{\\\\ae}" "\346") ("{\\\\AA}" "\305") ("{\\\\aa}" "\345") ("{\\\\copyright}" "\251") ("\\\\copyright{}" "\251") - ("{\\\\pounds}" "£" ) - ("{\\\\P}" "¶" ) - ("{\\\\S}" "§" ) - ("\\\\pounds{}" "£" ) - ("\\\\P{}" "¶" ) - ("\\\\S{}" "§" ) - ("{\\?`}" "¿") - ("{!`}" "¡") - ("\\?`" "¿") - ("!`" "¡") + ("{\\\\pounds}" "£" ) + ("{\\\\P}" "¶" ) + ("{\\\\S}" "§" ) + ("\\\\pounds{}" "£" ) + ("\\\\P{}" "¶" ) + ("\\\\S{}" "§" ) + ("{\\?`}" "¿") + ("{!`}" "¡") + ("\\?`" "¿") + ("!`" "¡") ) "Translation table for translating TeX sequences to ISO 8859-1 characters. This table is not exhaustive (and due to TeX's power can never be). @@ -397,185 +397,185 @@ Optional arg BUFFER is ignored (for use in `format-alist')." (defvar iso-gtex2iso-trans-tab '( - ("{\\\\\"a}" "ä") - ("{\\\\`a}" "à") - ("{\\\\'a}" "á") - ("{\\\\~a}" "ã") - ("{\\\\^a}" "â") - ("{\\\\\"e}" "ë") - ("{\\\\`e}" "è") - ("{\\\\'e}" "é") - ("{\\\\^e}" "ê") - ("{\\\\\"\\\\i}" "ï") - ("{\\\\`\\\\i}" "ì") - ("{\\\\'\\\\i}" "í") - ("{\\\\^\\\\i}" "î") - ("{\\\\\"i}" "ï") - ("{\\\\`i}" "ì") - ("{\\\\'i}" "í") - ("{\\\\^i}" "î") - ("{\\\\\"o}" "ö") - ("{\\\\`o}" "ò") - ("{\\\\'o}" "ó") - ("{\\\\~o}" "õ") - ("{\\\\^o}" "ô") - ("{\\\\\"u}" "ü") - ("{\\\\`u}" "ù") - ("{\\\\'u}" "ú") - ("{\\\\^u}" "û") - ("{\\\\\"A}" "Ä") - ("{\\\\`A}" "À") - ("{\\\\'A}" "Á") - ("{\\\\~A}" "Ã") - ("{\\\\^A}" "Â") - ("{\\\\\"E}" "Ë") - ("{\\\\`E}" "È") - ("{\\\\'E}" "É") - ("{\\\\^E}" "Ê") - ("{\\\\\"I}" "Ï") - ("{\\\\`I}" "Ì") - ("{\\\\'I}" "Í") - ("{\\\\^I}" "Î") - ("{\\\\\"O}" "Ö") - ("{\\\\`O}" "Ò") - ("{\\\\'O}" "Ó") - ("{\\\\~O}" "Õ") - ("{\\\\^O}" "Ô") - ("{\\\\\"U}" "Ü") - ("{\\\\`U}" "Ù") - ("{\\\\'U}" "Ú") - ("{\\\\^U}" "Û") - ("{\\\\~n}" "ñ") - ("{\\\\~N}" "Ñ") - ("{\\\\c c}" "ç") - ("{\\\\c C}" "Ç") - ("\\\\\"a" "ä") - ("\\\\`a" "à") - ("\\\\'a" "á") - ("\\\\~a" "ã") - ("\\\\^a" "â") - ("\\\\\"e" "ë") - ("\\\\`e" "è") - ("\\\\'e" "é") - ("\\\\^e" "ê") - ("\\\\\"\\\\i" "ï") - ("\\\\`\\\\i" "ì") - ("\\\\'\\\\i" "í") - ("\\\\^\\\\i" "î") - ("\\\\\"i" "ï") - ("\\\\`i" "ì") - ("\\\\'i" "í") - ("\\\\^i" "î") - ("\\\\\"o" "ö") - ("\\\\`o" "ò") - ("\\\\'o" "ó") - ("\\\\~o" "õ") - ("\\\\^o" "ô") - ("\\\\\"u" "ü") - ("\\\\`u" "ù") - ("\\\\'u" "ú") - ("\\\\^u" "û") - ("\\\\\"A" "Ä") - ("\\\\`A" "À") - ("\\\\'A" "Á") - ("\\\\~A" "Ã") - ("\\\\^A" "Â") - ("\\\\\"E" "Ë") - ("\\\\`E" "È") - ("\\\\'E" "É") - ("\\\\^E" "Ê") - ("\\\\\"I" "Ï") - ("\\\\`I" "Ì") - ("\\\\'I" "Í") - ("\\\\^I" "Î") - ("\\\\\"O" "Ö") - ("\\\\`O" "Ò") - ("\\\\'O" "Ó") - ("\\\\~O" "Õ") - ("\\\\^O" "Ô") - ("\\\\\"U" "Ü") - ("\\\\`U" "Ù") - ("\\\\'U" "Ú") - ("\\\\^U" "Û") - ("\\\\~n" "ñ") - ("\\\\~N" "Ñ") - ("\\\\\"{a}" "ä") - ("\\\\`{a}" "à") - ("\\\\'{a}" "á") - ("\\\\~{a}" "ã") - ("\\\\^{a}" "â") - ("\\\\\"{e}" "ë") - ("\\\\`{e}" "è") - ("\\\\'{e}" "é") - ("\\\\^{e}" "ê") - ("\\\\\"{\\\\i}" "ï") - ("\\\\`{\\\\i}" "ì") - ("\\\\'{\\\\i}" "í") - ("\\\\^{\\\\i}" "î") - ("\\\\\"{i}" "ï") - ("\\\\`{i}" "ì") - ("\\\\'{i}" "í") - ("\\\\^{i}" "î") - ("\\\\\"{o}" "ö") - ("\\\\`{o}" "ò") - ("\\\\'{o}" "ó") - ("\\\\~{o}" "õ") - ("\\\\^{o}" "ô") - ("\\\\\"{u}" "ü") - ("\\\\`{u}" "ù") - ("\\\\'{u}" "ú") - ("\\\\^{u}" "û") - ("\\\\\"{A}" "Ä") - ("\\\\`{A}" "À") - ("\\\\'{A}" "Á") - ("\\\\~{A}" "Ã") - ("\\\\^{A}" "Â") - ("\\\\\"{E}" "Ë") - ("\\\\`{E}" "È") - ("\\\\'{E}" "É") - ("\\\\^{E}" "Ê") - ("\\\\\"{I}" "Ï") - ("\\\\`{I}" "Ì") - ("\\\\'{I}" "Í") - ("\\\\^{I}" "Î") - ("\\\\\"{O}" "Ö") - ("\\\\`{O}" "Ò") - ("\\\\'{O}" "Ó") - ("\\\\~{O}" "Õ") - ("\\\\^{O}" "Ô") - ("\\\\\"{U}" "Ü") - ("\\\\`{U}" "Ù") - ("\\\\'{U}" "Ú") - ("\\\\^{U}" "Û") - ("\\\\~{n}" "ñ") - ("\\\\~{N}" "Ñ") - ("\\\\c{c}" "ç") - ("\\\\c{C}" "Ç") - ("{\\\\ss}" "ß") + ("{\\\\\"a}" "ä") + ("{\\\\`a}" "à ") + ("{\\\\'a}" "á") + ("{\\\\~a}" "ã") + ("{\\\\^a}" "â") + ("{\\\\\"e}" "ë") + ("{\\\\`e}" "è") + ("{\\\\'e}" "é") + ("{\\\\^e}" "ê") + ("{\\\\\"\\\\i}" "ï") + ("{\\\\`\\\\i}" "ì") + ("{\\\\'\\\\i}" "Ã") + ("{\\\\^\\\\i}" "î") + ("{\\\\\"i}" "ï") + ("{\\\\`i}" "ì") + ("{\\\\'i}" "Ã") + ("{\\\\^i}" "î") + ("{\\\\\"o}" "ö") + ("{\\\\`o}" "ò") + ("{\\\\'o}" "ó") + ("{\\\\~o}" "õ") + ("{\\\\^o}" "ô") + ("{\\\\\"u}" "ü") + ("{\\\\`u}" "ù") + ("{\\\\'u}" "ú") + ("{\\\\^u}" "û") + ("{\\\\\"A}" "Ä") + ("{\\\\`A}" "À") + ("{\\\\'A}" "Ã") + ("{\\\\~A}" "Ã") + ("{\\\\^A}" "Â") + ("{\\\\\"E}" "Ë") + ("{\\\\`E}" "È") + ("{\\\\'E}" "É") + ("{\\\\^E}" "Ê") + ("{\\\\\"I}" "Ã") + ("{\\\\`I}" "ÃŒ") + ("{\\\\'I}" "Ã") + ("{\\\\^I}" "ÃŽ") + ("{\\\\\"O}" "Ö") + ("{\\\\`O}" "Ã’") + ("{\\\\'O}" "Ó") + ("{\\\\~O}" "Õ") + ("{\\\\^O}" "Ô") + ("{\\\\\"U}" "Ü") + ("{\\\\`U}" "Ù") + ("{\\\\'U}" "Ú") + ("{\\\\^U}" "Û") + ("{\\\\~n}" "ñ") + ("{\\\\~N}" "Ñ") + ("{\\\\c c}" "ç") + ("{\\\\c C}" "Ç") + ("\\\\\"a" "ä") + ("\\\\`a" "à ") + ("\\\\'a" "á") + ("\\\\~a" "ã") + ("\\\\^a" "â") + ("\\\\\"e" "ë") + ("\\\\`e" "è") + ("\\\\'e" "é") + ("\\\\^e" "ê") + ("\\\\\"\\\\i" "ï") + ("\\\\`\\\\i" "ì") + ("\\\\'\\\\i" "Ã") + ("\\\\^\\\\i" "î") + ("\\\\\"i" "ï") + ("\\\\`i" "ì") + ("\\\\'i" "Ã") + ("\\\\^i" "î") + ("\\\\\"o" "ö") + ("\\\\`o" "ò") + ("\\\\'o" "ó") + ("\\\\~o" "õ") + ("\\\\^o" "ô") + ("\\\\\"u" "ü") + ("\\\\`u" "ù") + ("\\\\'u" "ú") + ("\\\\^u" "û") + ("\\\\\"A" "Ä") + ("\\\\`A" "À") + ("\\\\'A" "Ã") + ("\\\\~A" "Ã") + ("\\\\^A" "Â") + ("\\\\\"E" "Ë") + ("\\\\`E" "È") + ("\\\\'E" "É") + ("\\\\^E" "Ê") + ("\\\\\"I" "Ã") + ("\\\\`I" "ÃŒ") + ("\\\\'I" "Ã") + ("\\\\^I" "ÃŽ") + ("\\\\\"O" "Ö") + ("\\\\`O" "Ã’") + ("\\\\'O" "Ó") + ("\\\\~O" "Õ") + ("\\\\^O" "Ô") + ("\\\\\"U" "Ü") + ("\\\\`U" "Ù") + ("\\\\'U" "Ú") + ("\\\\^U" "Û") + ("\\\\~n" "ñ") + ("\\\\~N" "Ñ") + ("\\\\\"{a}" "ä") + ("\\\\`{a}" "à ") + ("\\\\'{a}" "á") + ("\\\\~{a}" "ã") + ("\\\\^{a}" "â") + ("\\\\\"{e}" "ë") + ("\\\\`{e}" "è") + ("\\\\'{e}" "é") + ("\\\\^{e}" "ê") + ("\\\\\"{\\\\i}" "ï") + ("\\\\`{\\\\i}" "ì") + ("\\\\'{\\\\i}" "Ã") + ("\\\\^{\\\\i}" "î") + ("\\\\\"{i}" "ï") + ("\\\\`{i}" "ì") + ("\\\\'{i}" "Ã") + ("\\\\^{i}" "î") + ("\\\\\"{o}" "ö") + ("\\\\`{o}" "ò") + ("\\\\'{o}" "ó") + ("\\\\~{o}" "õ") + ("\\\\^{o}" "ô") + ("\\\\\"{u}" "ü") + ("\\\\`{u}" "ù") + ("\\\\'{u}" "ú") + ("\\\\^{u}" "û") + ("\\\\\"{A}" "Ä") + ("\\\\`{A}" "À") + ("\\\\'{A}" "Ã") + ("\\\\~{A}" "Ã") + ("\\\\^{A}" "Â") + ("\\\\\"{E}" "Ë") + ("\\\\`{E}" "È") + ("\\\\'{E}" "É") + ("\\\\^{E}" "Ê") + ("\\\\\"{I}" "Ã") + ("\\\\`{I}" "ÃŒ") + ("\\\\'{I}" "Ã") + ("\\\\^{I}" "ÃŽ") + ("\\\\\"{O}" "Ö") + ("\\\\`{O}" "Ã’") + ("\\\\'{O}" "Ó") + ("\\\\~{O}" "Õ") + ("\\\\^{O}" "Ô") + ("\\\\\"{U}" "Ü") + ("\\\\`{U}" "Ù") + ("\\\\'{U}" "Ú") + ("\\\\^{U}" "Û") + ("\\\\~{n}" "ñ") + ("\\\\~{N}" "Ñ") + ("\\\\c{c}" "ç") + ("\\\\c{C}" "Ç") + ("{\\\\ss}" "ß") ("{\\\\AE}" "\306") ("{\\\\ae}" "\346") ("{\\\\AA}" "\305") ("{\\\\aa}" "\345") ("{\\\\copyright}" "\251") ("\\\\copyright{}" "\251") - ("{\\\\pounds}" "£" ) - ("{\\\\P}" "¶" ) - ("{\\\\S}" "§" ) - ("\\\\pounds{}" "£" ) - ("\\\\P{}" "¶" ) - ("\\\\S{}" "§" ) - ("?`" "¿") - ("!`" "¡") - ("{?`}" "¿") - ("{!`}" "¡") - ("\"a" "ä") - ("\"A" "Ä") - ("\"o" "ö") - ("\"O" "Ö") - ("\"u" "ü") - ("\"U" "Ü") - ("\"s" "ß") - ("\\\\3" "ß") + ("{\\\\pounds}" "£" ) + ("{\\\\P}" "¶" ) + ("{\\\\S}" "§" ) + ("\\\\pounds{}" "£" ) + ("\\\\P{}" "¶" ) + ("\\\\S{}" "§" ) + ("?`" "¿") + ("!`" "¡") + ("{?`}" "¿") + ("{!`}" "¡") + ("\"a" "ä") + ("\"A" "Ä") + ("\"o" "ö") + ("\"O" "Ö") + ("\"u" "ü") + ("\"U" "Ü") + ("\"s" "ß") + ("\\\\3" "ß") ) "Translation table for translating German TeX sequences to ISO 8859-1. This table is not exhaustive (and due to TeX's power can never be). @@ -583,65 +583,65 @@ It only contains commonly used sequences.") (defvar iso-iso2gtex-trans-tab '( - ("ä" "\"a") - ("à" "{\\\\`a}") - ("á" "{\\\\'a}") - ("ã" "{\\\\~a}") - ("â" "{\\\\^a}") - ("ë" "{\\\\\"e}") - ("è" "{\\\\`e}") - ("é" "{\\\\'e}") - ("ê" "{\\\\^e}") - ("ï" "{\\\\\"\\\\i}") - ("ì" "{\\\\`\\\\i}") - ("í" "{\\\\'\\\\i}") - ("î" "{\\\\^\\\\i}") - ("ö" "\"o") - ("ò" "{\\\\`o}") - ("ó" "{\\\\'o}") - ("õ" "{\\\\~o}") - ("ô" "{\\\\^o}") - ("ü" "\"u") - ("ù" "{\\\\`u}") - ("ú" "{\\\\'u}") - ("û" "{\\\\^u}") - ("Ä" "\"A") - ("À" "{\\\\`A}") - ("Á" "{\\\\'A}") - ("Ã" "{\\\\~A}") - ("Â" "{\\\\^A}") - ("Ë" "{\\\\\"E}") - ("È" "{\\\\`E}") - ("É" "{\\\\'E}") - ("Ê" "{\\\\^E}") - ("Ï" "{\\\\\"I}") - ("Ì" "{\\\\`I}") - ("Í" "{\\\\'I}") - ("Î" "{\\\\^I}") - ("Ö" "\"O") - ("Ò" "{\\\\`O}") - ("Ó" "{\\\\'O}") - ("Õ" "{\\\\~O}") - ("Ô" "{\\\\^O}") - ("Ü" "\"U") - ("Ù" "{\\\\`U}") - ("Ú" "{\\\\'U}") - ("Û" "{\\\\^U}") - ("ñ" "{\\\\~n}") - ("Ñ" "{\\\\~N}") - ("ç" "{\\\\c c}") - ("Ç" "{\\\\c C}") - ("ß" "\"s") + ("ä" "\"a") + ("à " "{\\\\`a}") + ("á" "{\\\\'a}") + ("ã" "{\\\\~a}") + ("â" "{\\\\^a}") + ("ë" "{\\\\\"e}") + ("è" "{\\\\`e}") + ("é" "{\\\\'e}") + ("ê" "{\\\\^e}") + ("ï" "{\\\\\"\\\\i}") + ("ì" "{\\\\`\\\\i}") + ("Ã" "{\\\\'\\\\i}") + ("î" "{\\\\^\\\\i}") + ("ö" "\"o") + ("ò" "{\\\\`o}") + ("ó" "{\\\\'o}") + ("õ" "{\\\\~o}") + ("ô" "{\\\\^o}") + ("ü" "\"u") + ("ù" "{\\\\`u}") + ("ú" "{\\\\'u}") + ("û" "{\\\\^u}") + ("Ä" "\"A") + ("À" "{\\\\`A}") + ("Ã" "{\\\\'A}") + ("Ã" "{\\\\~A}") + ("Â" "{\\\\^A}") + ("Ë" "{\\\\\"E}") + ("È" "{\\\\`E}") + ("É" "{\\\\'E}") + ("Ê" "{\\\\^E}") + ("Ã" "{\\\\\"I}") + ("ÃŒ" "{\\\\`I}") + ("Ã" "{\\\\'I}") + ("ÃŽ" "{\\\\^I}") + ("Ö" "\"O") + ("Ã’" "{\\\\`O}") + ("Ó" "{\\\\'O}") + ("Õ" "{\\\\~O}") + ("Ô" "{\\\\^O}") + ("Ü" "\"U") + ("Ù" "{\\\\`U}") + ("Ú" "{\\\\'U}") + ("Û" "{\\\\^U}") + ("ñ" "{\\\\~n}") + ("Ñ" "{\\\\~N}") + ("ç" "{\\\\c c}") + ("Ç" "{\\\\c C}") + ("ß" "\"s") ("\306" "{\\\\AE}") ("\346" "{\\\\ae}") ("\305" "{\\\\AA}") ("\345" "{\\\\aa}") ("\251" "{\\\\copyright}") - ("£" "{\\\\pounds}") - ("¶" "{\\\\P}") - ("§" "{\\\\S}") - ("¿" "{?`}") - ("¡" "{!`}") + ("£" "{\\\\pounds}") + ("¶" "{\\\\P}") + ("§" "{\\\\S}") + ("¿" "{?`}") + ("¡" "{!`}") ) "Translation table for translating ISO 8859-1 characters to German TeX.") @@ -664,13 +664,13 @@ Optional arg BUFFER is ignored (for use in `format-alist')." (iso-translate-conventions from to iso-iso2gtex-trans-tab)) (defvar iso-iso2duden-trans-tab - '(("ä" "ae") - ("Ä" "Ae") - ("ö" "oe") - ("Ö" "Oe") - ("ü" "ue") - ("Ü" "Ue") - ("ß" "ss")) + '(("ä" "ae") + ("Ä" "Ae") + ("ö" "oe") + ("Ö" "Oe") + ("ü" "ue") + ("Ü" "Ue") + ("ß" "ss")) "Translation table for translating ISO 8859-1 characters to Duden sequences.") ;;;###autoload @@ -683,133 +683,133 @@ Optional arg BUFFER is ignored (for use in `format-alist')." (iso-translate-conventions from to iso-iso2duden-trans-tab)) (defvar iso-iso2sgml-trans-tab - '(("À" "À") - ("Á" "Á") - ("Â" "Â") - ("Ã" "Ã") - ("Ä" "Ä") - ("Å" "Å") - ("Æ" "Æ") - ("Ç" "Ç") - ("È" "È") - ("É" "É") - ("Ê" "Ê") - ("Ë" "Ë") - ("Ì" "Ì") - ("Í" "Í") - ("Î" "Î") - ("Ï" "Ï") - ("Ð" "Ð") - ("Ñ" "Ñ") - ("Ò" "Ò") - ("Ó" "Ó") - ("Ô" "Ô") - ("Õ" "Õ") - ("Ö" "Ö") - ("Ø" "Ø") - ("Ù" "Ù") - ("Ú" "Ú") - ("Û" "Û") - ("Ü" "Ü") - ("Ý" "Ý") - ("Þ" "Þ") - ("ß" "ß") - ("à" "à") - ("á" "á") - ("â" "â") - ("ã" "ã") - ("ä" "ä") - ("å" "å") - ("æ" "æ") - ("ç" "ç") - ("è" "è") - ("é" "é") - ("ê" "ê") - ("ë" "ë") - ("ì" "ì") - ("í" "í") - ("î" "î") - ("ï" "ï") - ("ð" "ð") - ("ñ" "ñ") - ("ò" "ò") - ("ó" "ó") - ("ô" "ô") - ("õ" "õ") - ("ö" "ö") - ("ø" "ø") - ("ù" "ù") - ("ú" "ú") - ("û" "û") - ("ü" "ü") - ("ý" "ý") - ("þ" "þ") - ("ÿ" "ÿ"))) + '(("À" "À") + ("Ã" "Á") + ("Â" "Â") + ("Ã" "Ã") + ("Ä" "Ä") + ("Ã…" "Å") + ("Æ" "Æ") + ("Ç" "Ç") + ("È" "È") + ("É" "É") + ("Ê" "Ê") + ("Ë" "Ë") + ("ÃŒ" "Ì") + ("Ã" "Í") + ("ÃŽ" "Î") + ("Ã" "Ï") + ("Ã" "Ð") + ("Ñ" "Ñ") + ("Ã’" "Ò") + ("Ó" "Ó") + ("Ô" "Ô") + ("Õ" "Õ") + ("Ö" "Ö") + ("Ø" "Ø") + ("Ù" "Ù") + ("Ú" "Ú") + ("Û" "Û") + ("Ü" "Ü") + ("Ã" "Ý") + ("Þ" "Þ") + ("ß" "ß") + ("à " "à") + ("á" "á") + ("â" "â") + ("ã" "ã") + ("ä" "ä") + ("Ã¥" "å") + ("æ" "æ") + ("ç" "ç") + ("è" "è") + ("é" "é") + ("ê" "ê") + ("ë" "ë") + ("ì" "ì") + ("Ã" "í") + ("î" "î") + ("ï" "ï") + ("ð" "ð") + ("ñ" "ñ") + ("ò" "ò") + ("ó" "ó") + ("ô" "ô") + ("õ" "õ") + ("ö" "ö") + ("ø" "ø") + ("ù" "ù") + ("ú" "ú") + ("û" "û") + ("ü" "ü") + ("ý" "ý") + ("þ" "þ") + ("ÿ" "ÿ"))) (defvar iso-sgml2iso-trans-tab - '(("À" "À") - ("Á" "Á") - ("Â" "Â") - ("Ã" "Ã") - ("Ä" "Ä") - ("Å" "Å") - ("Æ" "Æ") - ("Ç" "Ç") - ("È" "È") - ("É" "É") - ("Ê" "Ê") - ("Ë" "Ë") - ("Ì" "Ì") - ("Í" "Í") - ("Î" "Î") - ("Ï" "Ï") - ("Ð" "Ð") - ("Ñ" "Ñ") - ("Ò" "Ò") - ("Ó" "Ó") - ("Ô" "Ô") - ("Õ" "Õ") - ("Ö" "Ö") - ("Ø" "Ø") - ("Ù" "Ù") - ("Ú" "Ú") - ("Û" "Û") - ("Ü" "Ü") - ("Ý" "Ý") - ("Þ" "Þ") - ("ß" "ß") - ("à" "à") - ("á" "á") - ("â" "â") - ("ã" "ã") - ("ä" "ä") - ("å" "å") - ("æ" "æ") - ("ç" "ç") - ("è" "è") - ("é" "é") - ("ê" "ê") - ("ë" "ë") - ("ì" "ì") - ("í" "í") - ("î" "î") - ("ï" "ï") - ("ð" "ð") - ("ñ" "ñ") - (" " " ") - ("ò" "ò") - ("ó" "ó") - ("ô" "ô") - ("õ" "õ") - ("ö" "ö") - ("ø" "ø") - ("ù" "ù") - ("ú" "ú") - ("û" "û") - ("ü" "ü") - ("ý" "ý") - ("þ" "þ") - ("ÿ" "ÿ"))) + '(("À" "À") + ("Á" "Ã") + ("Â" "Â") + ("Ã" "Ã") + ("Ä" "Ä") + ("Å" "Ã…") + ("Æ" "Æ") + ("Ç" "Ç") + ("È" "È") + ("É" "É") + ("Ê" "Ê") + ("Ë" "Ë") + ("Ì" "ÃŒ") + ("Í" "Ã") + ("Î" "ÃŽ") + ("Ï" "Ã") + ("Ð" "Ã") + ("Ñ" "Ñ") + ("Ò" "Ã’") + ("Ó" "Ó") + ("Ô" "Ô") + ("Õ" "Õ") + ("Ö" "Ö") + ("Ø" "Ø") + ("Ù" "Ù") + ("Ú" "Ú") + ("Û" "Û") + ("Ü" "Ü") + ("Ý" "Ã") + ("Þ" "Þ") + ("ß" "ß") + ("à" "à ") + ("á" "á") + ("â" "â") + ("ã" "ã") + ("ä" "ä") + ("å" "Ã¥") + ("æ" "æ") + ("ç" "ç") + ("è" "è") + ("é" "é") + ("ê" "ê") + ("ë" "ë") + ("ì" "ì") + ("í" "Ã") + ("î" "î") + ("ï" "ï") + ("ð" "ð") + ("ñ" "ñ") + (" " " ") + ("ò" "ò") + ("ó" "ó") + ("ô" "ô") + ("õ" "õ") + ("ö" "ö") + ("ø" "ø") + ("ù" "ù") + ("ú" "ú") + ("û" "û") + ("ü" "ü") + ("ý" "ý") + ("þ" "þ") + ("ÿ" "ÿ"))) ;;;###autoload (defun iso-iso2sgml (from to &optional buffer) diff --git a/lisp/international/iso-transl.el b/lisp/international/iso-transl.el index 4bc0400ef23..4bbb89c7087 100644 --- a/lisp/international/iso-transl.el +++ b/lisp/international/iso-transl.el @@ -1,4 +1,4 @@ -;;; iso-transl.el --- keyboard input definitions for ISO 8859-1 -*- coding: iso-8859-1 -*- +;;; iso-transl.el --- keyboard input definitions for ISO 8859-1 -*- coding: utf-8 -*- ;; Copyright (C) 1987, 1993-1999, 2001-2013 Free Software Foundation, ;; Inc. @@ -73,125 +73,125 @@ ;; language-specific table might override the short form for its own use. (defvar iso-transl-char-map - '(("* " . [? ]) - (" " . [? ]) - ("*!" . [?¡]) - ("!" . [?¡]) - ("\"\"" . [?¨]) - ("\"A" . [?Ä]) - ("\"E" . [?Ë]) - ("\"I" . [?Ï]) - ("\"O" . [?Ö]) - ("\"U" . [?Ü]) - ("\"a" . [?ä]) - ("\"e" . [?ë]) - ("\"i" . [?ï]) - ("\"o" . [?ö]) - ("\"s" . [?ß]) - ("\"u" . [?ü]) - ("\"y" . [?ÿ]) - ("''" . [?´]) - ("'A" . [?Á]) - ("'E" . [?É]) - ("'I" . [?Í]) - ("'O" . [?Ó]) - ("'U" . [?Ú]) - ("'Y" . [?Ý]) - ("'a" . [?á]) - ("'e" . [?é]) - ("'i" . [?í]) - ("'o" . [?ó]) - ("'u" . [?ú]) - ("'y" . [?ý]) - ("*$" . [?¤]) - ("$" . [?¤]) - ("*+" . [?±]) - ("+" . [?±]) - (",," . [?¸]) - (",C" . [?Ç]) - (",c" . [?ç]) - ("*-" . [?]) - ("-" . [?]) - ("*." . [?·]) - ("." . [?·]) - ("//" . [?÷]) - ("/A" . [?Å]) - ("/E" . [?Æ]) - ("/O" . [?Ø]) - ("/a" . [?å]) - ("/e" . [?æ]) - ("/o" . [?ø]) - ("1/2" . [?½]) - ("1/4" . [?¼]) - ("3/4" . [?¾]) - ("*<" . [?«]) - ("<" . [?«]) - ("*=" . [?¯]) - ("=" . [?¯]) - ("*>" . [?»]) - (">" . [?»]) - ("*?" . [?¿]) - ("?" . [?¿]) - ("*C" . [?©]) - ("C" . [?©]) - ("*L" . [?£]) - ("L" . [?£]) - ("*P" . [?¶]) - ("P" . [?¶]) - ("*R" . [?®]) - ("R" . [?®]) - ("*S" . [?§]) - ("S" . [?§]) - ("*Y" . [?¥]) - ("Y" . [?¥]) - ("^1" . [?¹]) - ("^2" . [?²]) - ("^3" . [?³]) - ("^A" . [?Â]) - ("^E" . [?Ê]) - ("^I" . [?Î]) - ("^O" . [?Ô]) - ("^U" . [?Û]) - ("^a" . [?â]) - ("^e" . [?ê]) - ("^i" . [?î]) - ("^o" . [?ô]) - ("^u" . [?û]) - ("_a" . [?ª]) - ("_o" . [?º]) - ("`A" . [?À]) - ("`E" . [?È]) - ("`I" . [?Ì]) - ("`O" . [?Ò]) - ("`U" . [?Ù]) - ("`a" . [?à]) - ("`e" . [?è]) - ("`i" . [?ì]) - ("`o" . [?ò]) - ("`u" . [?ù]) - ("*c" . [?¢]) - ("c" . [?¢]) - ("*o" . [?°]) - ("o" . [?°]) - ("*u" . [?µ]) - ("u" . [?µ]) - ("*m" . [?µ]) - ("m" . [?µ]) - ("*x" . [?×]) - ("x" . [?×]) - ("*|" . [?¦]) - ("|" . [?¦]) - ("~A" . [?Ã]) - ("~D" . [?Ð]) - ("~N" . [?Ñ]) - ("~O" . [?Õ]) - ("~T" . [?Þ]) - ("~a" . [?ã]) - ("~d" . [?ð]) - ("~n" . [?ñ]) - ("~o" . [?õ]) - ("~t" . [?þ]) - ("~~" . [?¬]) + '(("* " . [? ]) + (" " . [? ]) + ("*!" . [?¡]) + ("!" . [?¡]) + ("\"\"" . [?¨]) + ("\"A" . [?Ä]) + ("\"E" . [?Ë]) + ("\"I" . [?Ã]) + ("\"O" . [?Ö]) + ("\"U" . [?Ü]) + ("\"a" . [?ä]) + ("\"e" . [?ë]) + ("\"i" . [?ï]) + ("\"o" . [?ö]) + ("\"s" . [?ß]) + ("\"u" . [?ü]) + ("\"y" . [?ÿ]) + ("''" . [?´]) + ("'A" . [?Ã]) + ("'E" . [?É]) + ("'I" . [?Ã]) + ("'O" . [?Ó]) + ("'U" . [?Ú]) + ("'Y" . [?Ã]) + ("'a" . [?á]) + ("'e" . [?é]) + ("'i" . [?Ã]) + ("'o" . [?ó]) + ("'u" . [?ú]) + ("'y" . [?ý]) + ("*$" . [?¤]) + ("$" . [?¤]) + ("*+" . [?±]) + ("+" . [?±]) + (",," . [?¸]) + (",C" . [?Ç]) + (",c" . [?ç]) + ("*-" . [?Â]) + ("-" . [?Â]) + ("*." . [?·]) + ("." . [?·]) + ("//" . [?÷]) + ("/A" . [?Ã…]) + ("/E" . [?Æ]) + ("/O" . [?Ø]) + ("/a" . [?Ã¥]) + ("/e" . [?æ]) + ("/o" . [?ø]) + ("1/2" . [?½]) + ("1/4" . [?¼]) + ("3/4" . [?¾]) + ("*<" . [?«]) + ("<" . [?«]) + ("*=" . [?¯]) + ("=" . [?¯]) + ("*>" . [?»]) + (">" . [?»]) + ("*?" . [?¿]) + ("?" . [?¿]) + ("*C" . [?©]) + ("C" . [?©]) + ("*L" . [?£]) + ("L" . [?£]) + ("*P" . [?¶]) + ("P" . [?¶]) + ("*R" . [?®]) + ("R" . [?®]) + ("*S" . [?§]) + ("S" . [?§]) + ("*Y" . [?Â¥]) + ("Y" . [?Â¥]) + ("^1" . [?¹]) + ("^2" . [?²]) + ("^3" . [?³]) + ("^A" . [?Â]) + ("^E" . [?Ê]) + ("^I" . [?ÃŽ]) + ("^O" . [?Ô]) + ("^U" . [?Û]) + ("^a" . [?â]) + ("^e" . [?ê]) + ("^i" . [?î]) + ("^o" . [?ô]) + ("^u" . [?û]) + ("_a" . [?ª]) + ("_o" . [?º]) + ("`A" . [?À]) + ("`E" . [?È]) + ("`I" . [?ÃŒ]) + ("`O" . [?Ã’]) + ("`U" . [?Ù]) + ("`a" . [?à ]) + ("`e" . [?è]) + ("`i" . [?ì]) + ("`o" . [?ò]) + ("`u" . [?ù]) + ("*c" . [?¢]) + ("c" . [?¢]) + ("*o" . [?°]) + ("o" . [?°]) + ("*u" . [?µ]) + ("u" . [?µ]) + ("*m" . [?µ]) + ("m" . [?µ]) + ("*x" . [?×]) + ("x" . [?×]) + ("*|" . [?¦]) + ("|" . [?¦]) + ("~A" . [?Ã]) + ("~D" . [?Ã]) + ("~N" . [?Ñ]) + ("~O" . [?Õ]) + ("~T" . [?Þ]) + ("~a" . [?ã]) + ("~d" . [?ð]) + ("~n" . [?ñ]) + ("~o" . [?õ]) + ("~t" . [?þ]) + ("~~" . [?¬]) ("' " . "'") ("` " . "`") ("\" " . "\"") @@ -205,37 +205,37 @@ sequence VECTOR. (VECTOR is normally one character long.)") ;; Language-specific translation lists. (defvar iso-transl-language-alist '(("Esperanto" - ("C" . [?Æ]) - ("G" . [?Ø]) - ("H" . [?¦]) - ("J" . [?¬]) - ("S" . [?Þ]) - ("U" . [?Ý]) - ("c" . [?æ]) - ("g" . [?ø]) - ("h" . [?¶]) - ("j" . [?¼]) - ("s" . [?þ]) - ("u" . [?ý])) + ("C" . [?Æ]) + ("G" . [?Ø]) + ("H" . [?¦]) + ("J" . [?¬]) + ("S" . [?Þ]) + ("U" . [?Ã]) + ("c" . [?æ]) + ("g" . [?ø]) + ("h" . [?¶]) + ("j" . [?¼]) + ("s" . [?þ]) + ("u" . [?ý])) ("French" - ("C" . [?Ç]) - ("c" . [?ç])) + ("C" . [?Ç]) + ("c" . [?ç])) ("German" - ("A" . [?Ä]) - ("O" . [?Ö]) - ("U" . [?Ü]) - ("a" . [?ä]) - ("o" . [?ö]) - ("s" . [?ß]) - ("u" . [?ü])) + ("A" . [?Ä]) + ("O" . [?Ö]) + ("U" . [?Ü]) + ("a" . [?ä]) + ("o" . [?ö]) + ("s" . [?ß]) + ("u" . [?ü])) ("Portuguese" - ("C" . [?Ç]) - ("c" . [?ç])) + ("C" . [?Ç]) + ("c" . [?ç])) ("Spanish" - ("!" . [?¡]) - ("?" . [?¿]) - ("N" . [?Ñ]) - ("n" . [?ñ])))) + ("!" . [?¡]) + ("?" . [?¿]) + ("N" . [?Ñ]) + ("n" . [?ñ])))) (defvar iso-transl-ctl-x-8-map nil "Keymap for C-x 8 prefix.") diff --git a/lisp/international/mule.el b/lisp/international/mule.el index 995df2fb9a7..47c7087518e 100644 --- a/lisp/international/mule.el +++ b/lisp/international/mule.el @@ -1132,17 +1132,20 @@ FORM is a form to evaluate to define the coding-system." (put (intern name) 'coding-system-define-form form) (setq coding-system-alist (cons (list name) coding-system-alist))))) -;; This variable is set in these three cases: +;; This variable is set in these two cases: ;; (1) A file is read by a coding system specified explicitly. -;; after-insert-file-set-coding sets the car of this value to -;; coding-system-for-read, and sets the cdr to nil. -;; (2) A buffer is saved. -;; After writing, basic-save-buffer-1 sets the car of this value -;; to last-coding-system-used. -;; (3) set-buffer-file-coding-system is called. +;; `after-insert-file-set-coding' sets the car of this value to +;; `coding-system-for-read', and sets the cdr to nil. +;; (2) `set-buffer-file-coding-system' is called. ;; The cdr of this value is set to the specified coding system. -;; This variable is used for decoding in revert-buffer and encoding in -;; select-safe-coding-system. +;; This variable is used for decoding in `revert-buffer' and encoding +;; in `select-safe-coding-system'. +;; +;; When saving a buffer, if `buffer-file-coding-system-explicit' is +;; already non-nil, `basic-save-buffer-1' sets its CAR to the value of +;; `last-coding-system-used'. (It used to set it unconditionally, but +;; that seems unnecessary; see Bug#4533.) + (defvar buffer-file-coding-system-explicit nil "The file coding system explicitly specified for the current buffer. The value is a cons of coding systems for reading (decoding) and diff --git a/lisp/isearch.el b/lisp/isearch.el index e16e3840d0d..b36b250738a 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -2520,6 +2520,7 @@ Can be changed via `isearch-search-fun-function' for special needs." ;; the user adds and removes characters in the search string ;; (or when using nonincremental word isearch) (let ((lax (not (or isearch-nonincremental + (null (car isearch-cmds)) (eq (length isearch-string) (length (isearch--state-string (car isearch-cmds)))))))) @@ -2960,8 +2961,15 @@ by other Emacs features." (setq isearch-lazy-highlight-window (selected-window) isearch-lazy-highlight-window-start (window-start) isearch-lazy-highlight-window-end (window-end) - isearch-lazy-highlight-start (point) - isearch-lazy-highlight-end (point) + ;; Start lazy-highlighting at the beginning of the found + ;; match (`isearch-other-end'). If no match, use point. + ;; One of the next two variables (depending on search direction) + ;; is used to define the starting position of lazy-highlighting + ;; and also to remember the current position of point between + ;; calls of `isearch-lazy-highlight-update', and another variable + ;; is used to define where the wrapped search must stop. + isearch-lazy-highlight-start (or isearch-other-end (point)) + isearch-lazy-highlight-end (or isearch-other-end (point)) isearch-lazy-highlight-wrapped nil isearch-lazy-highlight-last-string isearch-string isearch-lazy-highlight-case-fold-search isearch-case-fold-search @@ -3059,6 +3067,9 @@ Attempt to do the search exactly the way the pending Isearch would." (overlay-put ov 'priority 1000) (overlay-put ov 'face lazy-highlight-face) (overlay-put ov 'window (selected-window)))) + ;; Remember the current position of point for + ;; the next call of `isearch-lazy-highlight-update' + ;; when `lazy-highlight-max-at-a-time' is too small. (if isearch-lazy-highlight-forward (setq isearch-lazy-highlight-end (point)) (setq isearch-lazy-highlight-start (point))))) diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el index 93d589c7706..68749f1b012 100644 --- a/lisp/iswitchb.el +++ b/lisp/iswitchb.el @@ -471,6 +471,8 @@ interfere with other minibuffer usage.") (define-key map "?" 'iswitchb-completion-help) (define-key map "\C-s" 'iswitchb-next-match) (define-key map "\C-r" 'iswitchb-prev-match) + (define-key map [?\C-.] 'iswitchb-next-match) + (define-key map [?\C-,] 'iswitchb-prev-match) (define-key map "\t" 'iswitchb-complete) (define-key map "\C-j" 'iswitchb-select-buffer-text) (define-key map "\C-t" 'iswitchb-toggle-regexp) diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el index 668f1ec963a..d879735c344 100644 --- a/lisp/jit-lock.el +++ b/lisp/jit-lock.el @@ -132,20 +132,16 @@ If nil, fontification is not deferred." ;;; Variables that are not customizable. -(defvar jit-lock-mode nil +(defvar-local jit-lock-mode nil "Non-nil means Just-in-time Lock mode is active.") -(make-variable-buffer-local 'jit-lock-mode) -(defvar jit-lock-functions nil +(defvar-local jit-lock-functions nil "Functions to do the actual fontification. They are called with two arguments: the START and END of the region to fontify.") -(make-variable-buffer-local 'jit-lock-functions) -(defvar jit-lock-context-unfontify-pos nil +(defvar-local jit-lock-context-unfontify-pos nil "Consider text after this position as contextually unfontified. If nil, contextual fontification is disabled.") -(make-variable-buffer-local 'jit-lock-context-unfontify-pos) - (defvar jit-lock-stealth-timer nil "Timer for stealth fontification in Just-in-time Lock mode.") @@ -305,7 +301,7 @@ that needs to be (re)fontified. If non-nil, CONTEXTUAL means that a contextual fontification would be useful." (add-hook 'jit-lock-functions fun nil t) (when (and contextual jit-lock-contextually) - (set (make-local-variable 'jit-lock-contextually) t)) + (setq-local jit-lock-contextually t)) (jit-lock-mode t)) (defun jit-lock-unregister (fun) @@ -439,41 +435,39 @@ Defaults to the whole buffer. END can be out of bounds." Value is nil if there is nothing more to fontify." (if (zerop (buffer-size)) nil - (save-restriction - (widen) - (let* ((next (text-property-not-all around (point-max) 'fontified t)) - (prev (previous-single-property-change around 'fontified)) - (prop (get-text-property (max (point-min) (1- around)) - 'fontified)) - (start (cond - ((null prev) - ;; There is no property change between AROUND - ;; and the start of the buffer. If PROP is - ;; non-nil, everything in front of AROUND is - ;; fontified, otherwise nothing is fontified. - (if (eq prop t) - nil - (max (point-min) - (- around (/ jit-lock-chunk-size 2))))) - ((eq prop t) - ;; PREV is the start of a region of fontified - ;; text containing AROUND. Start fontifying a - ;; chunk size before the end of the unfontified - ;; region in front of that. - (max (or (previous-single-property-change prev 'fontified) - (point-min)) - (- prev jit-lock-chunk-size))) - (t - ;; PREV is the start of a region of unfontified - ;; text containing AROUND. Start at PREV or - ;; chunk size in front of AROUND, whichever is - ;; nearer. - (max prev (- around jit-lock-chunk-size))))) - (result (cond ((null start) next) - ((null next) start) - ((< (- around start) (- next around)) start) - (t next)))) - result)))) + (let* ((next (text-property-not-all around (point-max) 'fontified t)) + (prev (previous-single-property-change around 'fontified)) + (prop (get-text-property (max (point-min) (1- around)) + 'fontified)) + (start (cond + ((null prev) + ;; There is no property change between AROUND + ;; and the start of the buffer. If PROP is + ;; non-nil, everything in front of AROUND is + ;; fontified, otherwise nothing is fontified. + (if (eq prop t) + nil + (max (point-min) + (- around (/ jit-lock-chunk-size 2))))) + ((eq prop t) + ;; PREV is the start of a region of fontified + ;; text containing AROUND. Start fontifying a + ;; chunk size before the end of the unfontified + ;; region in front of that. + (max (or (previous-single-property-change prev 'fontified) + (point-min)) + (- prev jit-lock-chunk-size))) + (t + ;; PREV is the start of a region of unfontified + ;; text containing AROUND. Start at PREV or + ;; chunk size in front of AROUND, whichever is + ;; nearer. + (max prev (- around jit-lock-chunk-size))))) + (result (cond ((null start) next) + ((null next) start) + ((< (- around start) (- next around)) start) + (t next)))) + result))) (defun jit-lock-stealth-fontify (&optional repeat) "Fontify buffers stealthily. @@ -564,7 +558,9 @@ non-nil in a repeated invocation of this function." (when jit-lock-context-unfontify-pos ;; (message "Jit-Context %s" (buffer-name)) (save-restriction - (widen) + ;; Don't be blindsided by narrowing that starts in the middle + ;; of a jit-lock-defer-multiline. + (widen) (when (and (>= jit-lock-context-unfontify-pos (point-min)) (< jit-lock-context-unfontify-pos (point-max))) ;; If we're in text that matches a complex multi-line diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el index 7b36f7c1214..851bceccf30 100644 --- a/lisp/jka-cmpr-hook.el +++ b/lisp/jka-cmpr-hook.el @@ -234,6 +234,10 @@ options through Custom does this automatically." "XZ compressing" "xz" ("-c" "-q") "XZ uncompressing" "xz" ("-c" "-q" "-d") t t "\3757zXZ\0"] + ["\\.txz\\'" + "XZ compressing" "xz" ("-c" "-q") + "XZ uncompressing" "xz" ("-c" "-q" "-d") + t nil "\3757zXZ\0"] ;; dzip is gzip with random access. Its compression program can't ;; read/write stdin/out, so .dz files can only be viewed without ;; saving, having their contents decompressed with gzip. @@ -302,7 +306,9 @@ variables. Setting this through Custom does that automatically." :group 'jka-compr) (defcustom jka-compr-mode-alist-additions - (list (cons (purecopy "\\.tgz\\'") 'tar-mode) (cons (purecopy "\\.tbz2?\\'") 'tar-mode)) + (purecopy '(("\\.tgz\\'" . tar-mode) + ("\\.tbz2?\\'" . tar-mode) + ("\\.txz\\'" . 'tar-mode))) "List of pairs added to `auto-mode-alist' when installing jka-compr. Uninstalling jka-compr removes all pairs from `auto-mode-alist' that installing added. @@ -315,7 +321,7 @@ variables. Setting this through Custom does that automatically." :set 'jka-compr-set :group 'jka-compr) -(defcustom jka-compr-load-suffixes (list (purecopy ".gz")) +(defcustom jka-compr-load-suffixes (purecopy '(".gz")) "List of compression related suffixes to try when loading files. Enabling Auto Compression mode appends this list to `load-file-rep-suffixes', which see. Disabling Auto Compression mode removes all suffixes diff --git a/lisp/jka-compr.el b/lisp/jka-compr.el index ac81cf0d52d..5664a890cb1 100644 --- a/lisp/jka-compr.el +++ b/lisp/jka-compr.el @@ -332,8 +332,6 @@ There should be no more than seven characters after the final `/'." (with-current-buffer temp-buffer (let ((coding-system-for-write 'no-conversion)) - (if (memq system-type '(ms-dos windows-nt)) - (setq buffer-file-type t) ) (jka-compr-run-real-handler 'write-region (list (point-min) (point-max) filename diff --git a/lisp/language/romanian.el b/lisp/language/romanian.el index 98eff2a7db7..608ff811923 100644 --- a/lisp/language/romanian.el +++ b/lisp/language/romanian.el @@ -1,4 +1,4 @@ -;;; romanian.el --- support for Romanian -*- coding: iso-latin-2 -*- +;;; romanian.el --- support for Romanian -*- coding: utf-8 -*- ;; Copyright (C) 1998, 2001-2013 Free Software Foundation, Inc. @@ -34,7 +34,7 @@ (input-method . "latin-2-postfix") (unibyte-display . iso-8859-2) (tutorial . "TUTORIAL.ro") - (sample-text . "Bunã ziua, bine aþi venit!") + (sample-text . "Bună ziua, bine aÅ£i venit!") (documentation . "Romanian environment using Latin-2 encoding. An environment for generic Latin-10 encoding is also available.")) '("European")) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 81787682692..e58967d5a80 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -5,7 +5,7 @@ ;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best ;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5" -;;;;;; "play/5x5.el" (20545 57511 257469 0)) +;;;;;; "play/5x5.el" (20709 26818 907104 0)) ;;; Generated autoloads from play/5x5.el (autoload '5x5 "5x5" "\ @@ -68,7 +68,7 @@ should return a grid vector array that is the new solution. ;;;*** ;;;### (autoloads (ada-mode ada-add-extensions) "ada-mode" "progmodes/ada-mode.el" -;;;;;; (20576 42138 697312 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/ada-mode.el (autoload 'ada-add-extensions "ada-mode" "\ @@ -88,7 +88,7 @@ Ada mode is the major mode for editing Ada code. ;;;*** ;;;### (autoloads (ada-header) "ada-stmt" "progmodes/ada-stmt.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/ada-stmt.el (autoload 'ada-header "ada-stmt" "\ @@ -99,7 +99,7 @@ Insert a descriptive header at the top of the file. ;;;*** ;;;### (autoloads (ada-find-file) "ada-xref" "progmodes/ada-xref.el" -;;;;;; (20458 56750 651721 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/ada-xref.el (autoload 'ada-find-file "ada-xref" "\ @@ -114,7 +114,7 @@ Completion is available. ;;;;;; add-change-log-entry-other-window add-change-log-entry find-change-log ;;;;;; prompt-for-change-log-name add-log-mailing-address add-log-full-name ;;;;;; add-log-current-defun-function) "add-log" "vc/add-log.el" -;;;;;; (20665 59189 799105 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from vc/add-log.el (put 'change-log-default-name 'safe-local-variable 'string-or-null-p) @@ -245,7 +245,7 @@ old-style time formats for entries are supported. ;;;### (autoloads (defadvice ad-activate ad-add-advice ad-disable-advice ;;;;;; ad-enable-advice ad-default-compilation-action ad-redefinition-action) -;;;;;; "advice" "emacs-lisp/advice.el" (20660 41272 835092 0)) +;;;;;; "advice" "emacs-lisp/advice.el" (20725 15032 264919 0)) ;;; Generated autoloads from emacs-lisp/advice.el (defvar ad-redefinition-action 'warn "\ @@ -383,7 +383,7 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...) ;;;### (autoloads (align-newline-and-indent align-unhighlight-rule ;;;;;; align-highlight-rule align-current align-entire align-regexp -;;;;;; align) "align" "align.el" (20566 63671 243798 0)) +;;;;;; align) "align" "align.el" (20709 26818 907104 0)) ;;; Generated autoloads from align.el (autoload 'align "align" "\ @@ -474,7 +474,7 @@ A replacement function for `newline-and-indent', aligning as it goes. ;;;### (autoloads (outlineify-sticky allout-mode allout-mode-p allout-auto-activation ;;;;;; allout-setup allout-auto-activation-helper) "allout" "allout.el" -;;;;;; (20651 26294 774003 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from allout.el (autoload 'allout-auto-activation-helper "allout" "\ @@ -835,7 +835,7 @@ for details on preparing Emacs for automatic allout activation. ;;;### (autoloads (allout-widgets-mode allout-widgets-auto-activation ;;;;;; allout-widgets-setup allout-widgets) "allout-widgets" "allout-widgets.el" -;;;;;; (20545 57511 257469 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from allout-widgets.el (let ((loads (get 'allout-widgets 'custom-loads))) (if (member '"allout-widgets" loads) nil (put 'allout-widgets 'custom-loads (cons '"allout-widgets" loads)))) @@ -895,7 +895,7 @@ outline hot-spot navigation (see `allout-mode'). ;;;*** ;;;### (autoloads (ange-ftp-hook-function ange-ftp-reread-dir) "ange-ftp" -;;;;;; "net/ange-ftp.el" (20566 63671 243798 0)) +;;;;;; "net/ange-ftp.el" (20763 30266 231060 0)) ;;; Generated autoloads from net/ange-ftp.el (defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir) @@ -917,7 +917,7 @@ directory, so that Emacs will know its current contents. ;;;*** ;;;### (autoloads (animate-birthday-present animate-sequence animate-string) -;;;;;; "animate" "play/animate.el" (20545 57511 257469 0)) +;;;;;; "animate" "play/animate.el" (20709 26818 907104 0)) ;;; Generated autoloads from play/animate.el (autoload 'animate-string "animate" "\ @@ -950,7 +950,7 @@ the buffer *Birthday-Present-for-Name*. ;;;*** ;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on) -;;;;;; "ansi-color" "ansi-color.el" (20642 11326 759953 0)) +;;;;;; "ansi-color" "ansi-color.el" (20709 26818 907104 0)) ;;; Generated autoloads from ansi-color.el (autoload 'ansi-color-for-comint-mode-on "ansi-color" "\ @@ -976,7 +976,7 @@ This is a good function to put in `comint-output-filter-functions'. ;;;*** ;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules) -;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (20566 63671 243798 +;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from progmodes/antlr-mode.el @@ -1013,7 +1013,7 @@ Used in `antlr-mode'. Also a useful function in `java-mode-hook'. ;;;*** ;;;### (autoloads (appt-activate appt-add) "appt" "calendar/appt.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from calendar/appt.el (autoload 'appt-add "appt" "\ @@ -1036,8 +1036,8 @@ ARG is positive, otherwise off. ;;;### (autoloads (apropos-documentation apropos-value apropos-library ;;;;;; apropos apropos-documentation-property apropos-command apropos-variable -;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20523 62082 -;;;;;; 997685 0)) +;;;;;; apropos-user-option apropos-read-pattern) "apropos" "apropos.el" +;;;;;; (20716 56 356960 0)) ;;; Generated autoloads from apropos.el (autoload 'apropos-read-pattern "apropos" "\ @@ -1050,18 +1050,25 @@ kind of objects to search. \(fn SUBJECT)" nil nil) -(autoload 'apropos-variable "apropos" "\ -Show user variables that match PATTERN. +(autoload 'apropos-user-option "apropos" "\ +Show user options that match PATTERN. PATTERN can be a word, a list of words (separated by spaces), or a regexp (using some regexp special characters). If it is a word, search for matches for that word as a substring. If it is a list of words, search for matches for any two (or more) of those words. With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also show -normal variables. +variables, not just user options. \(fn PATTERN &optional DO-ALL)" t nil) +(autoload 'apropos-variable "apropos" "\ +Show variables that match PATTERN. +When DO-NOT-ALL is not-nil, show user options only, i.e. behave +like `apropos-user-option'. + +\(fn PATTERN &optional DO-NOT-ALL)" t nil) + (defalias 'command-apropos 'apropos-command) (autoload 'apropos-command "apropos" "\ @@ -1145,8 +1152,8 @@ Returns list of symbols and documentation found. ;;;*** -;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (20647 -;;;;;; 29243 972198 0)) +;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (20759 +;;;;;; 33211 414988 0)) ;;; Generated autoloads from arc-mode.el (autoload 'archive-mode "arc-mode" "\ @@ -1166,7 +1173,7 @@ archive. ;;;*** -;;;### (autoloads (array-mode) "array" "array.el" (20355 10021 546955 +;;;### (autoloads (array-mode) "array" "array.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from array.el @@ -1238,8 +1245,8 @@ Entering array mode calls the function `array-mode-hook'. ;;;*** -;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20513 -;;;;;; 18948 537867 0)) +;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20777 +;;;;;; 63161 848428 0)) ;;; Generated autoloads from textmodes/artist.el (autoload 'artist-mode "artist" "\ @@ -1444,8 +1451,8 @@ Keymap summary ;;;*** -;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from progmodes/asm-mode.el (autoload 'asm-mode "asm-mode" "\ @@ -1473,7 +1480,7 @@ Special commands: ;;;*** ;;;### (autoloads (auth-source-cache-expiry) "auth-source" "gnus/auth-source.el" -;;;;;; (20698 56506 332830 0)) +;;;;;; (20755 36154 171386 0)) ;;; Generated autoloads from gnus/auth-source.el (defvar auth-source-cache-expiry 7200 "\ @@ -1486,7 +1493,7 @@ let-binding.") ;;;*** ;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from autoarg.el (defvar autoarg-mode nil "\ @@ -1547,7 +1554,7 @@ This is similar to `autoarg-mode' but rebinds the keypad keys ;;;*** ;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el" -;;;;;; (20665 59189 799105 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/autoconf.el (autoload 'autoconf-mode "autoconf" "\ @@ -1558,7 +1565,7 @@ Major mode for editing Autoconf configure.ac files. ;;;*** ;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert) -;;;;;; "autoinsert" "autoinsert.el" (20566 63671 243798 0)) +;;;;;; "autoinsert" "autoinsert.el" (20709 26818 907104 0)) ;;; Generated autoloads from autoinsert.el (autoload 'auto-insert "autoinsert" "\ @@ -1598,7 +1605,7 @@ insert a template for the file depending on the mode of the buffer. ;;;### (autoloads (batch-update-autoloads update-directory-autoloads ;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el" -;;;;;; (20594 43050 277913 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/autoload.el (put 'generated-autoload-file 'safe-local-variable 'stringp) @@ -1649,7 +1656,7 @@ should be non-nil). ;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode ;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode) -;;;;;; "autorevert" "autorevert.el" (20476 31768 298871 0)) +;;;;;; "autorevert" "autorevert.el" (20767 27320 533690 0)) ;;; Generated autoloads from autorevert.el (autoload 'auto-revert-mode "autorevert" "\ @@ -1738,7 +1745,7 @@ specifies in the mode line. ;;;*** ;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid" -;;;;;; "avoid.el" (20593 22184 581574 0)) +;;;;;; "avoid.el" (20709 26818 907104 0)) ;;; Generated autoloads from avoid.el (defvar mouse-avoidance-mode nil "\ @@ -1779,7 +1786,7 @@ definition of \"random distance\".) ;;;*** ;;;### (autoloads (display-battery-mode battery) "battery" "battery.el" -;;;;;; (20685 44469 497553 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from battery.el (put 'battery-mode-line-string 'risky-local-variable t) @@ -1815,7 +1822,7 @@ seconds. ;;;*** ;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run) -;;;;;; "benchmark" "emacs-lisp/benchmark.el" (20557 48712 315579 +;;;;;; "benchmark" "emacs-lisp/benchmark.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from emacs-lisp/benchmark.el @@ -1853,7 +1860,7 @@ For non-interactive use see also `benchmark-run' and ;;;*** ;;;### (autoloads (bibtex-search-entry bibtex-mode bibtex-initialize) -;;;;;; "bibtex" "textmodes/bibtex.el" (20576 13095 881042 0)) +;;;;;; "bibtex" "textmodes/bibtex.el" (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/bibtex.el (autoload 'bibtex-initialize "bibtex" "\ @@ -1942,7 +1949,7 @@ A prefix arg negates the value of `bibtex-search-entry-globally'. ;;;*** ;;;### (autoloads (bibtex-style-mode) "bibtex-style" "textmodes/bibtex-style.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/bibtex-style.el (autoload 'bibtex-style-mode "bibtex-style" "\ @@ -1954,7 +1961,7 @@ Major mode for editing BibTeX style files. ;;;### (autoloads (binhex-decode-region binhex-decode-region-external ;;;;;; binhex-decode-region-internal) "binhex" "mail/binhex.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from mail/binhex.el (defconst binhex-begin-line "^:...............................................................$" "\ @@ -1978,8 +1985,8 @@ Binhex decode region between START and END. ;;;*** -;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20551 -;;;;;; 9899 283417 0)) +;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from play/blackbox.el (autoload 'blackbox "blackbox" "\ @@ -2102,7 +2109,7 @@ a reflection. ;;;;;; bookmark-save bookmark-write bookmark-delete bookmark-insert ;;;;;; bookmark-rename bookmark-insert-location bookmark-relocate ;;;;;; bookmark-jump-other-window bookmark-jump bookmark-set) "bookmark" -;;;;;; "bookmark.el" (20630 20152 156327 0)) +;;;;;; "bookmark.el" (20709 26818 907104 0)) ;;; Generated autoloads from bookmark.el (define-key ctl-x-r-map "b" 'bookmark-jump) (define-key ctl-x-r-map "m" 'bookmark-set) @@ -2303,7 +2310,7 @@ Incremental search of bookmarks, hiding the non-matches as we go. ;;;;;; browse-url-xdg-open browse-url-at-mouse browse-url-at-point ;;;;;; browse-url browse-url-of-region browse-url-of-dired-file ;;;;;; browse-url-of-buffer browse-url-of-file browse-url-browser-function) -;;;;;; "browse-url" "net/browse-url.el" (20566 63671 243798 0)) +;;;;;; "browse-url" "net/browse-url.el" (20709 26818 907104 0)) ;;; Generated autoloads from net/browse-url.el (defvar browse-url-browser-function 'browse-url-default-browser "\ @@ -2619,7 +2626,7 @@ from `browse-url-elinks-wrapper'. ;;;*** ;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next) -;;;;;; "bs" "bs.el" (20576 13095 881042 0)) +;;;;;; "bs" "bs.el" (20709 26818 907104 0)) ;;; Generated autoloads from bs.el (autoload 'bs-cycle-next "bs" "\ @@ -2659,8 +2666,8 @@ name of buffer configuration. ;;;*** -;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (20566 63671 -;;;;;; 243798 0)) +;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from play/bubbles.el (autoload 'bubbles "bubbles" "\ @@ -2682,7 +2689,7 @@ columns on its right towards the left. ;;;*** ;;;### (autoloads (bug-reference-prog-mode bug-reference-mode) "bug-reference" -;;;;;; "progmodes/bug-reference.el" (20593 22184 581574 0)) +;;;;;; "progmodes/bug-reference.el" (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/bug-reference.el (put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format))))) @@ -2706,7 +2713,7 @@ Like `bug-reference-mode', but only buttonize in comments and strings. ;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile ;;;;;; compile-defun byte-compile-file byte-recompile-directory ;;;;;; byte-force-recompile byte-compile-enable-warning byte-compile-disable-warning) -;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20656 44218 805102 0)) +;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20780 39352 990623 0)) ;;; Generated autoloads from emacs-lisp/bytecomp.el (put 'byte-compile-dynamic 'safe-local-variable 'booleanp) (put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) @@ -2826,8 +2833,8 @@ and corresponding effects. ;;;*** -;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from calendar/cal-china.el (put 'calendar-chinese-time-zone 'risky-local-variable t) @@ -2836,8 +2843,8 @@ and corresponding effects. ;;;*** -;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (20461 32935 -;;;;;; 300400 0)) +;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from calendar/cal-dst.el (put 'calendar-daylight-savings-starts 'risky-local-variable t) @@ -2849,7 +2856,7 @@ and corresponding effects. ;;;*** ;;;### (autoloads (calendar-hebrew-list-yahrzeits) "cal-hebrew" "calendar/cal-hebrew.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from calendar/cal-hebrew.el (autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\ @@ -2865,13 +2872,13 @@ from the cursor position. ;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle ;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc -;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20685 -;;;;;; 44469 497553 0)) +;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20759 +;;;;;; 33211 414988 0)) ;;; Generated autoloads from calc/calc.el (define-key ctl-x-map "*" 'calc-dispatch) (autoload 'calc-dispatch "calc" "\ -Invoke the GNU Emacs Calculator. See `calc-dispatch-help' for details. +Invoke the GNU Emacs Calculator. See \\[calc-dispatch-help] for details. \(fn &optional ARG)" t nil) @@ -2950,8 +2957,8 @@ See Info node `(calc)Defining Functions'. ;;;*** -;;;### (autoloads (calc-undo) "calc-undo" "calc/calc-undo.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (calc-undo) "calc-undo" "calc/calc-undo.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from calc/calc-undo.el (autoload 'calc-undo "calc-undo" "\ @@ -2961,8 +2968,8 @@ See Info node `(calc)Defining Functions'. ;;;*** -;;;### (autoloads (calculator) "calculator" "calculator.el" (20476 -;;;;;; 31768 298871 0)) +;;;### (autoloads (calculator) "calculator" "calculator.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from calculator.el (autoload 'calculator "calculator" "\ @@ -2973,8 +2980,8 @@ See the documentation for `calculator-mode' for more information. ;;;*** -;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20594 -;;;;;; 43050 277913 0)) +;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20762 +;;;;;; 9398 526093 0)) ;;; Generated autoloads from calendar/calendar.el (autoload 'calendar "calendar" "\ @@ -3018,7 +3025,7 @@ This function is suitable for execution in an init file. ;;;*** ;;;### (autoloads (canlock-verify canlock-insert-header) "canlock" -;;;;;; "gnus/canlock.el" (20355 10021 546955 0)) +;;;;;; "gnus/canlock.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/canlock.el (autoload 'canlock-insert-header "canlock" "\ @@ -3036,7 +3043,7 @@ it fails. ;;;*** ;;;### (autoloads (capitalized-words-mode) "cap-words" "progmodes/cap-words.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/cap-words.el (autoload 'capitalized-words-mode "cap-words" "\ @@ -3075,15 +3082,15 @@ Obsoletes `c-forward-into-nomenclature'. ;;;*** -;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from progmodes/cc-compat.el (put 'c-indent-level 'safe-local-variable 'integerp) ;;;*** ;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el" -;;;;;; (20681 47415 473102 0)) +;;;;;; (20755 36154 171386 0)) ;;; Generated autoloads from progmodes/cc-engine.el (autoload 'c-guess-basic-syntax "cc-engine" "\ @@ -3095,8 +3102,8 @@ Return the syntactic context of the current line. ;;;### (autoloads (c-guess-install c-guess-region-no-install c-guess-region ;;;;;; c-guess-buffer-no-install c-guess-buffer c-guess-no-install -;;;;;; c-guess) "cc-guess" "progmodes/cc-guess.el" (20355 10021 -;;;;;; 546955 0)) +;;;;;; c-guess) "cc-guess" "progmodes/cc-guess.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from progmodes/cc-guess.el (defvar c-guess-guessed-offsets-alist nil "\ @@ -3196,7 +3203,7 @@ the absolute file name of the file if STYLE-NAME is nil. ;;;### (autoloads (awk-mode pike-mode idl-mode java-mode objc-mode ;;;;;; c++-mode c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el" -;;;;;; (20665 59189 799105 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/cc-mode.el (autoload 'c-initialize-cc-mode "cc-mode" "\ @@ -3373,7 +3380,7 @@ Key bindings: ;;;*** ;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles" -;;;;;; "progmodes/cc-styles.el" (20566 63671 243798 0)) +;;;;;; "progmodes/cc-styles.el" (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/cc-styles.el (autoload 'c-set-style "cc-styles" "\ @@ -3424,8 +3431,8 @@ and exists only for compatibility reasons. ;;;*** -;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (20595 63909 -;;;;;; 923329 0)) +;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from progmodes/cc-vars.el (put 'c-basic-offset 'safe-local-variable 'integerp) (put 'c-backslash-column 'safe-local-variable 'integerp) @@ -3435,7 +3442,7 @@ and exists only for compatibility reasons. ;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program ;;;;;; declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from international/ccl.el (autoload 'ccl-compile "ccl" "\ @@ -3696,7 +3703,7 @@ See the documentation of `define-ccl-program' for the detail of CCL program. ;;;*** ;;;### (autoloads (cconv-closure-convert) "cconv" "emacs-lisp/cconv.el" -;;;;;; (20453 5437 764254 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/cconv.el (autoload 'cconv-closure-convert "cconv" "\ @@ -3711,7 +3718,7 @@ Returns a form where all lambdas don't have any free variables. ;;;*** ;;;### (autoloads (cfengine-auto-mode cfengine2-mode cfengine3-mode) -;;;;;; "cfengine" "progmodes/cfengine.el" (20355 10021 546955 0)) +;;;;;; "cfengine" "progmodes/cfengine.el" (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/cfengine.el (autoload 'cfengine3-mode "cfengine" "\ @@ -3741,7 +3748,7 @@ on the buffer contents ;;;*** ;;;### (autoloads (check-declare-directory check-declare-file) "check-declare" -;;;;;; "emacs-lisp/check-declare.el" (20378 29222 722320 0)) +;;;;;; "emacs-lisp/check-declare.el" (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/check-declare.el (autoload 'check-declare-file "check-declare" "\ @@ -3766,7 +3773,7 @@ Returns non-nil if any false statements are found. ;;;;;; checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer ;;;;;; checkdoc-eval-current-buffer checkdoc-message-interactive ;;;;;; checkdoc-interactive checkdoc checkdoc-list-of-strings-p) -;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (20647 29243 972198 0)) +;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/checkdoc.el (put 'checkdoc-force-docstrings-flag 'safe-local-variable 'booleanp) (put 'checkdoc-force-history-flag 'safe-local-variable 'booleanp) @@ -3962,7 +3969,7 @@ checking of documentation strings. ;;;### (autoloads (pre-write-encode-hz post-read-decode-hz encode-hz-buffer ;;;;;; encode-hz-region decode-hz-buffer decode-hz-region) "china-util" -;;;;;; "language/china-util.el" (20355 10021 546955 0)) +;;;;;; "language/china-util.el" (20709 26818 907104 0)) ;;; Generated autoloads from language/china-util.el (autoload 'decode-hz-region "china-util" "\ @@ -4000,7 +4007,7 @@ Encode the text in the current buffer to HZ. ;;;*** ;;;### (autoloads (command-history list-command-history repeat-matching-complex-command) -;;;;;; "chistory" "chistory.el" (20355 10021 546955 0)) +;;;;;; "chistory" "chistory.el" (20709 26818 907104 0)) ;;; Generated autoloads from chistory.el (autoload 'repeat-matching-complex-command "chistory" "\ @@ -4040,7 +4047,7 @@ and runs the normal hook `command-history-hook'. ;;;*** ;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/cl-indent.el (autoload 'common-lisp-indent-function "cl-indent" "\ @@ -4118,8 +4125,8 @@ For example, the function `case' has an indent property ;;;*** -;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20677 50357 -;;;;;; 68628 0)) +;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20772 12071 +;;;;;; 425443 833000)) ;;; Generated autoloads from emacs-lisp/cl-lib.el (define-obsolete-variable-alias 'custom-print-functions 'cl-custom-print-functions "24.3") @@ -4147,7 +4154,7 @@ a future Emacs interpreter will be able to use it.") ;;;*** ;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el" -;;;;;; (20566 63671 243798 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/cmacexp.el (autoload 'c-macro-expand "cmacexp" "\ @@ -4167,8 +4174,8 @@ For use inside Lisp programs, see also `c-macro-expansion'. ;;;*** -;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (20774 +;;;;;; 53405 584723 417000)) ;;; Generated autoloads from cmuscheme.el (autoload 'run-scheme "cmuscheme" "\ @@ -4188,8 +4195,8 @@ is run). ;;;*** -;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20650 54512 -;;;;;; 564403 0)) +;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20721 17977 +;;;;;; 14204 0)) ;;; Generated autoloads from color.el (autoload 'color-name-to-rgb "color" "\ @@ -4211,7 +4218,7 @@ If FRAME cannot display COLOR, return nil. ;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list ;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command ;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el" -;;;;;; (20700 11832 779612 0)) +;;;;;; (20721 17977 14204 0)) ;;; Generated autoloads from comint.el (defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\ @@ -4311,7 +4318,7 @@ REGEXP-GROUP is the regular expression group in REGEXP to use. ;;;*** ;;;### (autoloads (compare-windows) "compare-w" "vc/compare-w.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20721 17977 14204 0)) ;;; Generated autoloads from vc/compare-w.el (autoload 'compare-windows "compare-w" "\ @@ -4348,27 +4355,24 @@ on third call it again advances points to the next difference and so on. ;;;;;; compilation-shell-minor-mode compilation-mode compilation-start ;;;;;; compile compilation-disable-input compile-command compilation-search-path ;;;;;; compilation-ask-about-save compilation-window-height compilation-start-hook -;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20690 -;;;;;; 62389 885263 0)) +;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20763 +;;;;;; 30266 231060 0)) ;;; Generated autoloads from progmodes/compile.el (defvar compilation-mode-hook nil "\ -List of hook functions run by `compilation-mode' (see `run-mode-hooks').") +List of hook functions run by `compilation-mode'.") (custom-autoload 'compilation-mode-hook "compile" t) (defvar compilation-start-hook nil "\ -List of hook functions run by `compilation-start' on the compilation process. -\(See `run-hook-with-args'). -If you use \"omake -P\" and do not want \\[save-buffers-kill-terminal] to ask whether you want -the compilation to be killed, you can use this hook: - (add-hook 'compilation-start-hook - (lambda (process) (set-process-query-on-exit-flag process nil)) nil t)") +Hook run after starting a new compilation process. +The hook is run with one argument, the new process.") (custom-autoload 'compilation-start-hook "compile" t) (defvar compilation-window-height nil "\ -Number of lines in a compilation window. If nil, use Emacs default.") +Number of lines in a compilation window. +If nil, use Emacs default.") (custom-autoload 'compilation-window-height "compile" t) @@ -4443,8 +4447,9 @@ and move to the source code that caused it. If optional second arg COMINT is t the buffer will be in Comint mode with `compilation-shell-minor-mode'. -Interactively, prompts for the command if `compilation-read-command' is -non-nil; otherwise uses `compile-command'. With prefix arg, always prompts. +Interactively, prompts for the command if the variable +`compilation-read-command' is non-nil; otherwise uses`compile-command'. +With prefix arg, always prompts. Additionally, with universal prefix arg, compilation buffer will be in comint mode, i.e. interactive. @@ -4531,7 +4536,7 @@ This is the value of `next-error-function' in Compilation buffers. ;;;*** ;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el" -;;;;;; (20495 51111 757560 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from completion.el (defvar dynamic-completion-mode nil "\ @@ -4556,7 +4561,7 @@ if ARG is omitted or nil. ;;;### (autoloads (conf-xdefaults-mode conf-ppd-mode conf-colon-mode ;;;;;; conf-space-keywords conf-space-mode conf-javaprop-mode conf-windows-mode ;;;;;; conf-unix-mode conf-mode) "conf-mode" "textmodes/conf-mode.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/conf-mode.el (autoload 'conf-mode "conf-mode" "\ @@ -4712,7 +4717,7 @@ For details see `conf-mode'. Example: ;;;*** ;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie) -;;;;;; "cookie1" "play/cookie1.el" (20545 57511 257469 0)) +;;;;;; "cookie1" "play/cookie1.el" (20709 26818 907104 0)) ;;; Generated autoloads from play/cookie1.el (autoload 'cookie "cookie1" "\ @@ -4744,8 +4749,8 @@ Randomly permute the elements of VECTOR (all permutations equally likely). ;;;*** ;;;### (autoloads (copyright-update-directory copyright copyright-fix-years -;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20518 -;;;;;; 12580 46478 0)) +;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/copyright.el (put 'copyright-at-end-flag 'safe-local-variable 'booleanp) (put 'copyright-names-regexp 'safe-local-variable 'stringp) @@ -4784,7 +4789,7 @@ If FIX is non-nil, run `copyright-fix-years' instead. ;;;*** ;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode) -;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20701 32695 861936 +;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20763 30266 231060 ;;;;;; 0)) ;;; Generated autoloads from progmodes/cperl-mode.el (put 'cperl-indent-level 'safe-local-variable 'integerp) @@ -4824,7 +4829,7 @@ and POD directives (Disabled by default, see `cperl-electric-keywords'.) The user types the keyword immediately followed by a space, which causes the construct to be expanded, and the point is positioned where -she is most likely to want to be. eg. when the user types a space +she is most likely to want to be. E.g., when the user types a space following \"if\" the following appears in the buffer: if () { or if () } { } and the cursor is between the parentheses. The user can then type some boolean expression within the parens. Having done that, @@ -4984,7 +4989,7 @@ Run a `perldoc' on the word around point. ;;;*** ;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20762 9398 526093 0)) ;;; Generated autoloads from progmodes/cpp.el (autoload 'cpp-highlight-buffer "cpp" "\ @@ -5003,7 +5008,7 @@ Edit display information for cpp conditionals. ;;;*** ;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el" -;;;;;; (20593 22184 581574 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emulation/crisp.el (defvar crisp-mode nil "\ @@ -5029,7 +5034,7 @@ if ARG is omitted or nil. ;;;*** ;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20718 41783 713368 0)) ;;; Generated autoloads from emacs-lisp/crm.el (autoload 'completing-read-multiple "crm" "\ @@ -5038,12 +5043,12 @@ By using this functionality, a user may specify multiple strings at a single prompt, optionally using completion. Multiple strings are specified by separating each of the strings with -a prespecified separator character. For example, if the separator -character is a comma, the strings 'alice', 'bob', and 'eve' would be +a prespecified separator regexp. For example, if the separator +regexp is \",\", the strings 'alice', 'bob', and 'eve' would be specified as 'alice,bob,eve'. -The default value for the separator character is the value of -`crm-default-separator' (comma). The separator character may be +The default value for the separator regexp is the value of +`crm-default-separator' (comma). The separator regexp may be changed by modifying the value of `crm-separator'. Contiguous strings of non-separator-characters are referred to as @@ -5064,8 +5069,8 @@ INHERIT-INPUT-METHOD. ;;;*** -;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (20665 -;;;;;; 59189 799105 0)) +;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from textmodes/css-mode.el (autoload 'css-mode "css-mode" "\ @@ -5076,7 +5081,7 @@ Major mode to edit Cascading Style Sheets. ;;;*** ;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el" -;;;;;; (20434 17809 692608 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emulation/cua-base.el (defvar cua-mode nil "\ @@ -5136,7 +5141,7 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings. ;;;;;; customize-mode customize customize-push-and-save customize-save-variable ;;;;;; customize-set-variable customize-set-value custom-menu-sort-alphabetically ;;;;;; custom-buffer-sort-alphabetically custom-browse-sort-alphabetically) -;;;;;; "cus-edit" "cus-edit.el" (20657 65077 880084 0)) +;;;;;; "cus-edit" "cus-edit.el" (20762 9398 526093 0)) ;;; Generated autoloads from cus-edit.el (defvar custom-browse-sort-alphabetically nil "\ @@ -5448,8 +5453,8 @@ The format is suitable for use with `easy-menu-define'. ;;;*** ;;;### (autoloads (customize-themes describe-theme custom-theme-visit-theme -;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20355 -;;;;;; 10021 546955 0)) +;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from cus-theme.el (autoload 'customize-create-theme "cus-theme" "\ @@ -5483,7 +5488,7 @@ omitted, a buffer named *Custom Themes* is used. ;;;*** ;;;### (autoloads (cvs-status-mode) "cvs-status" "vc/cvs-status.el" -;;;;;; (20476 31768 298871 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from vc/cvs-status.el (autoload 'cvs-status-mode "cvs-status" "\ @@ -5494,7 +5499,7 @@ Mode used for cvs status output. ;;;*** ;;;### (autoloads (global-cwarn-mode cwarn-mode) "cwarn" "progmodes/cwarn.el" -;;;;;; (20577 33959 40183 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/cwarn.el (autoload 'cwarn-mode "cwarn" "\ @@ -5539,7 +5544,7 @@ See `cwarn-mode' for more information on Cwarn mode. ;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char ;;;;;; cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from language/cyril-util.el (autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\ @@ -5568,7 +5573,7 @@ If the argument is nil, we return the display table to its standard state. ;;;*** ;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el" -;;;;;; (20397 45851 446679 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from dabbrev.el (put 'dabbrev-case-fold-search 'risky-local-variable t) (put 'dabbrev-case-replace 'risky-local-variable t) @@ -5615,7 +5620,7 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion]. ;;;*** ;;;### (autoloads (data-debug-new-buffer) "data-debug" "cedet/data-debug.el" -;;;;;; (20586 48936 135199 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from cedet/data-debug.el (autoload 'data-debug-new-buffer "data-debug" "\ @@ -5625,8 +5630,8 @@ Create a new data-debug buffer with NAME. ;;;*** -;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20614 -;;;;;; 54428 654267 0)) +;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from net/dbus.el (autoload 'dbus-handle-event "dbus" "\ @@ -5639,8 +5644,8 @@ If the HANDLER returns a `dbus-error', it is propagated as return message. ;;;*** -;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (20763 +;;;;;; 30266 231060 0)) ;;; Generated autoloads from progmodes/dcl-mode.el (autoload 'dcl-mode "dcl-mode" "\ @@ -5767,7 +5772,7 @@ There is some minimal font-lock support (see vars ;;;*** ;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug" -;;;;;; "emacs-lisp/debug.el" (20642 11326 759953 0)) +;;;;;; "emacs-lisp/debug.el" (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/debug.el (setq debugger 'debug) @@ -5811,7 +5816,7 @@ To specify a nil argument interactively, exit with an empty minibuffer. ;;;*** ;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el" -;;;;;; (20566 63671 243798 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from play/decipher.el (autoload 'decipher "decipher" "\ @@ -5840,8 +5845,8 @@ The most useful commands are: ;;;*** ;;;### (autoloads (delimit-columns-rectangle delimit-columns-region -;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (20355 -;;;;;; 10021 546955 0)) +;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from delim-col.el (autoload 'delimit-columns-customize "delim-col" "\ @@ -5865,60 +5870,8 @@ START and END delimits the corners of text rectangle. ;;;*** -;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (20355 -;;;;;; 10021 546955 0)) -;;; Generated autoloads from progmodes/delphi.el - -(autoload 'delphi-mode "delphi" "\ -Major mode for editing Delphi code. \\<delphi-mode-map> -\\[delphi-tab] - Indents the current line (or region, if Transient Mark mode - is enabled and the region is active) of Delphi code. -\\[delphi-find-unit] - Search for a Delphi source file. -\\[delphi-fill-comment] - Fill the current comment. -\\[delphi-new-comment-line] - If in a // comment, do a new comment line. - -\\[indent-region] also works for indenting a whole region. - -Customization: - - `delphi-indent-level' (default 3) - Indentation of Delphi statements with respect to containing block. - `delphi-compound-block-indent' (default 0) - Extra indentation for blocks in compound statements. - `delphi-case-label-indent' (default 0) - Extra indentation for case statement labels. - `delphi-tab-always-indents' (default t) - Non-nil means TAB in Delphi mode should always reindent the current line, - regardless of where in the line point is when the TAB command is used. - `delphi-newline-always-indents' (default t) - Non-nil means NEWLINE in Delphi mode should always reindent the current - line, insert a blank line and move to the default indent column of the - blank line. - `delphi-search-path' (default .) - Directories to search when finding external units. - `delphi-verbose' (default nil) - If true then Delphi token processing progress is reported to the user. - -Coloring: - - `delphi-comment-face' (default font-lock-comment-face) - Face used to color Delphi comments. - `delphi-string-face' (default font-lock-string-face) - Face used to color Delphi strings. - `delphi-keyword-face' (default font-lock-keyword-face) - Face used to color Delphi keywords. - `delphi-other-face' (default nil) - Face used to color everything else. - -Turning on Delphi mode calls the value of the variable `delphi-mode-hook' -with no args, if that value is non-nil. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20613 -;;;;;; 49078 764749 0)) +;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from delsel.el (defalias 'pending-delete-mode 'delete-selection-mode) @@ -5948,7 +5901,7 @@ any selection. ;;;*** ;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode) -;;;;;; "derived" "emacs-lisp/derived.el" (20660 60553 594737 612000)) +;;;;;; "derived" "emacs-lisp/derived.el" (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/derived.el (autoload 'define-derived-mode "derived" "\ @@ -6015,7 +5968,7 @@ the first time the mode is used. ;;;*** ;;;### (autoloads (describe-char describe-text-properties) "descr-text" -;;;;;; "descr-text.el" (20660 41272 835092 0)) +;;;;;; "descr-text.el" (20764 51137 83502 0)) ;;; Generated autoloads from descr-text.el (autoload 'describe-text-properties "descr-text" "\ @@ -6052,7 +6005,7 @@ relevant to POS. ;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir ;;;;;; desktop-load-default desktop-read desktop-remove desktop-save ;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop" -;;;;;; "desktop.el" (20662 46799 344737 276000)) +;;;;;; "desktop.el" (20709 26818 907104 0)) ;;; Generated autoloads from desktop.el (defvar desktop-save-mode nil "\ @@ -6241,7 +6194,7 @@ Revert to the last loaded desktop. ;;;### (autoloads (gnus-article-outlook-deuglify-article gnus-outlook-deuglify-article ;;;;;; gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines) -;;;;;; "deuglify" "gnus/deuglify.el" (20355 10021 546955 0)) +;;;;;; "deuglify" "gnus/deuglify.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/deuglify.el (autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\ @@ -6274,7 +6227,7 @@ Deuglify broken Outlook (Express) articles and redisplay. ;;;*** ;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib" -;;;;;; "calendar/diary-lib.el" (20668 35382 940599 0)) +;;;;;; "calendar/diary-lib.el" (20709 26818 907104 0)) ;;; Generated autoloads from calendar/diary-lib.el (autoload 'diary "diary-lib" "\ @@ -6318,7 +6271,7 @@ Major mode for editing the diary file. ;;;### (autoloads (diff-buffer-with-file diff-latest-backup-file ;;;;;; diff-backup diff diff-command diff-switches) "diff" "vc/diff.el" -;;;;;; (20570 60708 993668 0)) +;;;;;; (20760 54070 584283 0)) ;;; Generated autoloads from vc/diff.el (defvar diff-switches (purecopy "-c") "\ @@ -6340,7 +6293,7 @@ exists. If NO-ASYNC is non-nil, call diff synchronously. When called interactively with a prefix argument, prompt interactively for diff switches. Otherwise, the switches -specified in `diff-switches' are passed to the diff command. +specified in the variable `diff-switches' are passed to the diff command. \(fn OLD NEW &optional SWITCHES NO-ASYNC)" t nil) @@ -6367,7 +6320,7 @@ This requires the external program `diff' to be in your `exec-path'. ;;;*** ;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "vc/diff-mode.el" -;;;;;; (20690 62389 885263 0)) +;;;;;; (20784 36406 653593 0)) ;;; Generated autoloads from vc/diff-mode.el (autoload 'diff-mode "diff-mode" "\ @@ -6399,7 +6352,7 @@ the mode if ARG is omitted or nil. ;;;*** -;;;### (autoloads (dig) "dig" "net/dig.el" (20355 10021 546955 0)) +;;;### (autoloads (dig) "dig" "net/dig.el" (20709 26818 907104 0)) ;;; Generated autoloads from net/dig.el (autoload 'dig "dig" "\ @@ -6410,9 +6363,9 @@ Optional arguments are passed to `dig-invoke'. ;;;*** -;;;### (autoloads (dired-mode dired-noselect dired-other-frame dired-other-window -;;;;;; dired dired-listing-switches) "dired" "dired.el" (20685 44764 -;;;;;; 669491 35000)) +;;;### (autoloads (dired-hide-details-mode dired-mode dired-noselect +;;;;;; dired-other-frame dired-other-window dired dired-listing-switches) +;;;;;; "dired" "dired.el" (20784 36406 653593 0)) ;;; Generated autoloads from dired.el (defvar dired-listing-switches (purecopy "-al") "\ @@ -6530,10 +6483,15 @@ Keybindings: \(fn &optional DIRNAME SWITCHES)" nil nil) (put 'dired-find-alternate-file 'disabled t) +(autoload 'dired-hide-details-mode "dired" "\ +Hide details in `dired-mode'. + +\(fn &optional ARG)" t nil) + ;;;*** ;;;### (autoloads (dirtrack dirtrack-mode) "dirtrack" "dirtrack.el" -;;;;;; (20648 50109 802321 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from dirtrack.el (autoload 'dirtrack-mode "dirtrack" "\ @@ -6563,8 +6521,8 @@ from `default-directory'. ;;;*** -;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (20497 -;;;;;; 6436 957082 0)) +;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/disass.el (autoload 'disassemble "disass" "\ @@ -6583,7 +6541,7 @@ redefine OBJECT if it is a symbol. ;;;;;; standard-display-g1 standard-display-ascii standard-display-default ;;;;;; standard-display-8bit describe-current-display-table describe-display-table ;;;;;; set-display-table-slot display-table-slot make-display-table) -;;;;;; "disp-table" "disp-table.el" (20355 10021 546955 0)) +;;;;;; "disp-table" "disp-table.el" (20709 26818 907104 0)) ;;; Generated autoloads from disp-table.el (autoload 'make-display-table "disp-table" "\ @@ -6705,7 +6663,7 @@ in `.emacs'. ;;;*** ;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el" -;;;;;; (20545 57511 257469 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from play/dissociate.el (autoload 'dissociated-press "dissociate" "\ @@ -6721,8 +6679,8 @@ Default is 2. ;;;*** -;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from dnd.el (defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\ @@ -6743,7 +6701,7 @@ if some action was made, or nil if the URL is ignored.") ;;;*** ;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode" -;;;;;; "textmodes/dns-mode.el" (20355 10021 546955 0)) +;;;;;; "textmodes/dns-mode.el" (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/dns-mode.el (autoload 'dns-mode "dns-mode" "\ @@ -6767,8 +6725,8 @@ Locate SOA record and increment the serial field. ;;;*** ;;;### (autoloads (doc-view-bookmark-jump doc-view-minor-mode doc-view-mode-maybe -;;;;;; doc-view-mode doc-view-mode-p) "doc-view" "doc-view.el" (20581 -;;;;;; 31014 234484 0)) +;;;;;; doc-view-mode doc-view-mode-p) "doc-view" "doc-view.el" (20783 +;;;;;; 15545 430927 0)) ;;; Generated autoloads from doc-view.el (autoload 'doc-view-mode-p "doc-view" "\ @@ -6814,8 +6772,8 @@ See the command `doc-view-mode' for more information on this mode. ;;;*** -;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20545 57511 -;;;;;; 257469 0)) +;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from play/doctor.el (autoload 'doctor "doctor" "\ @@ -6825,8 +6783,8 @@ Switch to *doctor* buffer and start giving psychotherapy. ;;;*** -;;;### (autoloads (double-mode) "double" "double.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (double-mode) "double" "double.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from double.el (autoload 'double-mode "double" "\ @@ -6842,8 +6800,8 @@ strings when pressed twice. See `double-map' for details. ;;;*** -;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20545 57511 -;;;;;; 257469 0)) +;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from play/dunnet.el (autoload 'dunnet "dunnet" "\ @@ -6855,7 +6813,7 @@ Switch to *dungeon* buffer and start game. ;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap ;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode" -;;;;;; "emacs-lisp/easy-mmode.el" (20574 57775 217760 0)) +;;;;;; "emacs-lisp/easy-mmode.el" (20780 39352 990623 0)) ;;; Generated autoloads from emacs-lisp/easy-mmode.el (defalias 'easy-mmode-define-minor-mode 'define-minor-mode) @@ -6909,13 +6867,14 @@ BODY contains code to execute each time the mode is enabled or disabled. :require SYM Same as in `defcustom'. :variable PLACE The location to use instead of the variable MODE to store the state of the mode. This can be simply a different - named variable, or more generally anything that can be used - with the CL macro `setf'. PLACE can also be of the form - (GET . SET), where GET is an expression that returns the - current state, and SET is a function that takes one argument, - the new state, and sets it. If you specify a :variable, - this function does not define a MODE variable (nor any of - the terms used in :variable). + named variable, or a generalized variable. + PLACE can also be of the form (GET . SET), where GET is + an expression that returns the current state, and SET is + a function that takes one argument, the new state, and + sets it. If you specify a :variable, this function does + not define a MODE variable (nor any of the terms used + in :variable). + :after-hook A single lisp form which is evaluated after the mode hooks have been run. It should not be quoted. @@ -6951,6 +6910,10 @@ correctly with the current major mode. This is important to prevent problems with derived modes, that is, major modes that call another major mode in their body. +When a major mode is initialized, MODE is actually turned on just +after running the major mode's hook. However, MODE is not turned +on if the hook has explicitly disabled it. + \(fn GLOBAL-MODE MODE TURN-ON &rest KEYS)" nil t) (put 'define-globalized-minor-mode 'doc-string-elt '2) @@ -6990,8 +6953,8 @@ CSS contains a list of syntax specifications of the form (CHAR . SYNTAX). ;;;*** ;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define -;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (20615 -;;;;;; 49194 141673 0)) +;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/easymenu.el (autoload 'easy-menu-define "easymenu" "\ @@ -7136,7 +7099,7 @@ To implement dynamic menus, either call this from ;;;;;; ebnf-eps-file ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer ;;;;;; ebnf-spool-file ebnf-spool-directory ebnf-print-region ebnf-print-buffer ;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps" -;;;;;; "progmodes/ebnf2ps.el" (20566 63671 243798 0)) +;;;;;; "progmodes/ebnf2ps.el" (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/ebnf2ps.el (autoload 'ebnf-customize "ebnf2ps" "\ @@ -7410,8 +7373,8 @@ See `ebnf-style-database' documentation. ;;;;;; ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition ;;;;;; ebrowse-tags-view-definition ebrowse-tags-find-declaration ;;;;;; ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree -;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (20561 -;;;;;; 18280 338092 0)) +;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from progmodes/ebrowse.el (autoload 'ebrowse-tree-mode "ebrowse" "\ @@ -7560,7 +7523,7 @@ Display statistics for a class tree. ;;;*** ;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el" -;;;;;; (20523 62082 997685 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from ebuff-menu.el (autoload 'electric-buffer-list "ebuff-menu" "\ @@ -7593,7 +7556,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry. ;;;*** ;;;### (autoloads (Electric-command-history-redo-expression) "echistory" -;;;;;; "echistory.el" (20355 10021 546955 0)) +;;;;;; "echistory.el" (20709 26818 907104 0)) ;;; Generated autoloads from echistory.el (autoload 'Electric-command-history-redo-expression "echistory" "\ @@ -7605,7 +7568,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing. ;;;*** ;;;### (autoloads (ecomplete-setup) "ecomplete" "gnus/ecomplete.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/ecomplete.el (autoload 'ecomplete-setup "ecomplete" "\ @@ -7615,8 +7578,8 @@ With prefix arg NOCONFIRM, execute current line as-is without editing. ;;;*** -;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (20590 45996 -;;;;;; 129575 0)) +;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (20748 62911 +;;;;;; 684442 0)) ;;; Generated autoloads from cedet/ede.el (defvar global-ede-mode nil "\ @@ -7643,7 +7606,7 @@ an EDE controlled project. ;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form ;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug" -;;;;;; "emacs-lisp/edebug.el" (20683 2742 588278 0)) +;;;;;; "emacs-lisp/edebug.el" (20721 17977 14204 0)) ;;; Generated autoloads from emacs-lisp/edebug.el (defvar edebug-all-defs nil "\ @@ -7716,8 +7679,8 @@ Toggle edebugging of all forms. ;;;;;; ediff-merge-directories-with-ancestor ediff-merge-directories ;;;;;; ediff-directories3 ediff-directory-revisions ediff-directories ;;;;;; ediff-buffers3 ediff-buffers ediff-backup ediff-current-file -;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (20495 51111 -;;;;;; 757560 0)) +;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from vc/ediff.el (autoload 'ediff-files "ediff" "\ @@ -7949,7 +7912,7 @@ With optional NODE, goes to that node. ;;;*** ;;;### (autoloads (ediff-customize) "ediff-help" "vc/ediff-help.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from vc/ediff-help.el (autoload 'ediff-customize "ediff-help" "\ @@ -7960,7 +7923,7 @@ With optional NODE, goes to that node. ;;;*** ;;;### (autoloads (ediff-show-registry) "ediff-mult" "vc/ediff-mult.el" -;;;;;; (20614 54428 654267 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from vc/ediff-mult.el (autoload 'ediff-show-registry "ediff-mult" "\ @@ -7973,7 +7936,7 @@ Display Ediff's registry. ;;;*** ;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe) -;;;;;; "ediff-util" "vc/ediff-util.el" (20683 39246 740032 0)) +;;;;;; "ediff-util" "vc/ediff-util.el" (20777 63161 848428 0)) ;;; Generated autoloads from vc/ediff-util.el (autoload 'ediff-toggle-multiframe "ediff-util" "\ @@ -7994,7 +7957,7 @@ To change the default, set the variable `ediff-use-toolbar-p', which see. ;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro ;;;;;; edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el" -;;;;;; (20476 31768 298871 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from edmacro.el (autoload 'edit-kbd-macro "edmacro" "\ @@ -8043,7 +8006,7 @@ or nil, use a compact 80-column format. ;;;*** ;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt" -;;;;;; "emulation/edt.el" (20566 63671 243798 0)) +;;;;;; "emulation/edt.el" (20709 26818 907104 0)) ;;; Generated autoloads from emulation/edt.el (autoload 'edt-set-scroll-margins "edt" "\ @@ -8061,7 +8024,7 @@ Turn on EDT Emulation. ;;;*** ;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el" -;;;;;; (20593 22184 581574 0)) +;;;;;; (20762 9398 526093 0)) ;;; Generated autoloads from ehelp.el (autoload 'with-electric-help "ehelp" "\ @@ -8098,7 +8061,7 @@ BUFFER is put back into its original major mode. ;;;*** ;;;### (autoloads (customize-object) "eieio-custom" "emacs-lisp/eieio-custom.el" -;;;;;; (20586 48936 135199 0)) +;;;;;; (20771 24374 643644 0)) ;;; Generated autoloads from emacs-lisp/eieio-custom.el (autoload 'customize-object "eieio-custom" "\ @@ -8111,7 +8074,7 @@ Optional argument GROUP is the sub-group of slots to display. ;;;### (autoloads (eieio-describe-generic eieio-describe-constructor ;;;;;; eieio-describe-class eieio-browse) "eieio-opt" "emacs-lisp/eieio-opt.el" -;;;;;; (20617 41641 89638 0)) +;;;;;; (20771 24374 643644 0)) ;;; Generated autoloads from emacs-lisp/eieio-opt.el (autoload 'eieio-browse "eieio-opt" "\ @@ -8145,7 +8108,7 @@ Also extracts information about all methods specific to this generic. ;;;*** ;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string) -;;;;;; "eldoc" "emacs-lisp/eldoc.el" (20355 10021 546955 0)) +;;;;;; "eldoc" "emacs-lisp/eldoc.el" (20770 3512 176098 0)) ;;; Generated autoloads from emacs-lisp/eldoc.el (defvar eldoc-minor-mode-string (purecopy " ElDoc") "\ @@ -8192,7 +8155,7 @@ Emacs Lisp mode) that support ElDoc.") ;;;*** ;;;### (autoloads (electric-layout-mode electric-pair-mode electric-indent-mode) -;;;;;; "electric" "electric.el" (20613 49078 764749 0)) +;;;;;; "electric" "electric.el" (20709 26818 907104 0)) ;;; Generated autoloads from electric.el (defvar electric-indent-chars '(10) "\ @@ -8262,8 +8225,8 @@ The variable `electric-layout-rules' says when and how to insert newlines. ;;;*** -;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from elide-head.el (autoload 'elide-head "elide-head" "\ @@ -8280,7 +8243,7 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks. ;;;### (autoloads (elint-initialize elint-defun elint-current-buffer ;;;;;; elint-directory elint-file) "elint" "emacs-lisp/elint.el" -;;;;;; (20486 36135 22104 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/elint.el (autoload 'elint-file "elint" "\ @@ -8316,8 +8279,8 @@ optional prefix argument REINIT is non-nil. ;;;*** ;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list -;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (20642 -;;;;;; 11326 759953 0)) +;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/elp.el (autoload 'elp-instrument-function "elp" "\ @@ -8352,7 +8315,7 @@ displayed. ;;;*** ;;;### (autoloads (emacs-lock-mode) "emacs-lock" "emacs-lock.el" -;;;;;; (20577 33959 40183 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lock.el (autoload 'emacs-lock-mode "emacs-lock" "\ @@ -8380,7 +8343,7 @@ Other values are interpreted as usual. ;;;*** ;;;### (autoloads (report-emacs-bug) "emacsbug" "mail/emacsbug.el" -;;;;;; (20680 26549 383882 0)) +;;;;;; (20759 33211 414988 0)) ;;; Generated autoloads from mail/emacsbug.el (autoload 'report-emacs-bug "emacsbug" "\ @@ -8456,7 +8419,7 @@ Emerge two RCS revisions of a file, with another revision as ancestor. ;;;*** ;;;### (autoloads (enriched-decode enriched-encode enriched-mode) -;;;;;; "enriched" "textmodes/enriched.el" (20461 32935 300400 0)) +;;;;;; "enriched" "textmodes/enriched.el" (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/enriched.el (autoload 'enriched-mode "enriched" "\ @@ -8496,8 +8459,8 @@ Commands: ;;;;;; epa-sign-region epa-verify-cleartext-in-region epa-verify-region ;;;;;; epa-decrypt-armor-in-region epa-decrypt-region epa-encrypt-file ;;;;;; epa-sign-file epa-verify-file epa-decrypt-file epa-select-keys -;;;;;; epa-list-secret-keys epa-list-keys) "epa" "epa.el" (20577 -;;;;;; 33959 40183 0)) +;;;;;; epa-list-secret-keys epa-list-keys) "epa" "epa.el" (20762 +;;;;;; 9398 526093 0)) ;;; Generated autoloads from epa.el (autoload 'epa-list-keys "epa" "\ @@ -8675,8 +8638,8 @@ Insert selected KEYS after the point. ;;;*** ;;;### (autoloads (epa-dired-do-encrypt epa-dired-do-sign epa-dired-do-verify -;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (20355 10021 -;;;;;; 546955 0)) +;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from epa-dired.el (autoload 'epa-dired-do-decrypt "epa-dired" "\ @@ -8702,7 +8665,7 @@ Encrypt marked files. ;;;*** ;;;### (autoloads (epa-file-disable epa-file-enable epa-file-handler) -;;;;;; "epa-file" "epa-file.el" (20355 10021 546955 0)) +;;;;;; "epa-file" "epa-file.el" (20709 26818 907104 0)) ;;; Generated autoloads from epa-file.el (autoload 'epa-file-handler "epa-file" "\ @@ -8724,7 +8687,7 @@ Encrypt marked files. ;;;### (autoloads (epa-global-mail-mode epa-mail-import-keys epa-mail-encrypt ;;;;;; epa-mail-sign epa-mail-verify epa-mail-decrypt epa-mail-mode) -;;;;;; "epa-mail" "epa-mail.el" (20566 63671 243798 0)) +;;;;;; "epa-mail" "epa-mail.el" (20709 26818 907104 0)) ;;; Generated autoloads from epa-mail.el (autoload 'epa-mail-mode "epa-mail" "\ @@ -8794,8 +8757,8 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads (epg-make-context) "epg" "epg.el" (20701 32695 -;;;;;; 861936 0)) +;;;### (autoloads (epg-make-context) "epg" "epg.el" (20712 3008 596088 +;;;;;; 0)) ;;; Generated autoloads from epg.el (autoload 'epg-make-context "epg" "\ @@ -8806,7 +8769,7 @@ Return a context object. ;;;*** ;;;### (autoloads (epg-expand-group epg-check-configuration epg-configuration) -;;;;;; "epg-config" "epg-config.el" (20373 11301 906925 0)) +;;;;;; "epg-config" "epg-config.el" (20709 26818 907104 0)) ;;; Generated autoloads from epg-config.el (autoload 'epg-configuration "epg-config" "\ @@ -8827,7 +8790,7 @@ Look at CONFIG and try to expand GROUP. ;;;*** ;;;### (autoloads (erc-handle-irc-url erc-tls erc erc-select-read-args) -;;;;;; "erc" "erc/erc.el" (20665 23726 628150 0)) +;;;;;; "erc" "erc/erc.el" (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc.el (autoload 'erc-select-read-args "erc" "\ @@ -8875,36 +8838,36 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL. ;;;*** -;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (20591 -;;;;;; 33616 626144 310000)) +;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from erc/erc-autoaway.el (autoload 'erc-autoaway-mode "erc-autoaway") ;;;*** -;;;### (autoloads nil "erc-button" "erc/erc-button.el" (20593 22184 -;;;;;; 581574 0)) +;;;### (autoloads nil "erc-button" "erc/erc-button.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from erc/erc-button.el (autoload 'erc-button-mode "erc-button" nil t) ;;;*** -;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (20650 54512 -;;;;;; 564403 0)) +;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from erc/erc-capab.el (autoload 'erc-capab-identify-mode "erc-capab" nil t) ;;;*** -;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (20591 33616 -;;;;;; 736174 412000)) +;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from erc/erc-compat.el (autoload 'erc-define-minor-mode "erc-compat") ;;;*** ;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC) -;;;;;; "erc-dcc" "erc/erc-dcc.el" (20650 54512 564403 0)) +;;;;;; "erc-dcc" "erc/erc-dcc.el" (20759 33211 414988 0)) ;;; Generated autoloads from erc/erc-dcc.el (autoload 'erc-dcc-mode "erc-dcc") @@ -8934,7 +8897,7 @@ that subcommand. ;;;*** ;;;### (autoloads nil "erc-desktop-notifications" "erc/erc-desktop-notifications.el" -;;;;;; (20593 22184 581574 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-desktop-notifications.el (autoload 'erc-notifications-mode "erc-desktop-notifications" "" t) @@ -8944,7 +8907,7 @@ that subcommand. ;;;;;; erc-ezb-add-session erc-ezb-end-of-session-list erc-ezb-init-session-list ;;;;;; erc-ezb-identify erc-ezb-notice-autodetect erc-ezb-lookup-action ;;;;;; erc-ezb-get-login erc-cmd-ezb) "erc-ezbounce" "erc/erc-ezbounce.el" -;;;;;; (20650 54512 564403 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-ezbounce.el (autoload 'erc-cmd-ezb "erc-ezbounce" "\ @@ -9006,8 +8969,8 @@ Add EZBouncer convenience functions to ERC. ;;;*** -;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (20591 -;;;;;; 33616 776163 920000)) +;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from erc/erc-fill.el (autoload 'erc-fill-mode "erc-fill" nil t) @@ -9020,7 +8983,7 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'. ;;;*** ;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd" -;;;;;; "erc/erc-identd.el" (20591 33616 794740 81000)) +;;;;;; "erc/erc-identd.el" (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-identd.el (autoload 'erc-identd-mode "erc-identd") @@ -9042,7 +9005,7 @@ system. ;;;*** ;;;### (autoloads (erc-create-imenu-index) "erc-imenu" "erc/erc-imenu.el" -;;;;;; (20591 33616 794740 81000)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-imenu.el (autoload 'erc-create-imenu-index "erc-imenu" "\ @@ -9052,22 +9015,22 @@ system. ;;;*** -;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20650 54512 564403 +;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from erc/erc-join.el (autoload 'erc-autojoin-mode "erc-join" nil t) ;;;*** -;;;### (autoloads nil "erc-list" "erc/erc-list.el" (20591 33616 824757 -;;;;;; 867000)) +;;;### (autoloads nil "erc-list" "erc/erc-list.el" (20709 26818 907104 +;;;;;; 0)) ;;; Generated autoloads from erc/erc-list.el (autoload 'erc-list-mode "erc-list") ;;;*** ;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log" -;;;;;; "erc/erc-log.el" (20650 54512 564403 0)) +;;;;;; "erc/erc-log.el" (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-log.el (autoload 'erc-log-mode "erc-log" nil t) @@ -9099,7 +9062,7 @@ You can save every individual message by putting this function on ;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host ;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool ;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el" -;;;;;; (20650 54512 564403 0)) +;;;;;; (20763 30266 231060 0)) ;;; Generated autoloads from erc/erc-match.el (autoload 'erc-match-mode "erc-match") @@ -9145,15 +9108,15 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'. ;;;*** -;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (20591 33616 844710 -;;;;;; 904000)) +;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (20709 26818 907104 +;;;;;; 0)) ;;; Generated autoloads from erc/erc-menu.el (autoload 'erc-menu-mode "erc-menu" nil t) ;;;*** ;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el" -;;;;;; (20650 54512 564403 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-netsplit.el (autoload 'erc-netsplit-mode "erc-netsplit") @@ -9165,7 +9128,7 @@ Show who's gone. ;;;*** ;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks" -;;;;;; "erc/erc-networks.el" (20650 54512 564403 0)) +;;;;;; "erc/erc-networks.el" (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-networks.el (autoload 'erc-determine-network "erc-networks" "\ @@ -9183,7 +9146,7 @@ Interactively select a server to connect to using `erc-server-alist'. ;;;*** ;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify" -;;;;;; "erc/erc-notify.el" (20650 54512 564403 0)) +;;;;;; "erc/erc-notify.el" (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-notify.el (autoload 'erc-notify-mode "erc-notify" nil t) @@ -9201,36 +9164,36 @@ with args, toggle notify status of people. ;;;*** -;;;### (autoloads nil "erc-page" "erc/erc-page.el" (20591 33616 864734 -;;;;;; 46000)) +;;;### (autoloads nil "erc-page" "erc/erc-page.el" (20709 26818 907104 +;;;;;; 0)) ;;; Generated autoloads from erc/erc-page.el (autoload 'erc-page-mode "erc-page") ;;;*** -;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (20650 -;;;;;; 54512 564403 0)) +;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from erc/erc-pcomplete.el (autoload 'erc-completion-mode "erc-pcomplete" nil t) ;;;*** -;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (20591 33616 -;;;;;; 874723 983000)) +;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from erc/erc-replace.el (autoload 'erc-replace-mode "erc-replace") ;;;*** -;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (20591 33616 884730 -;;;;;; 605000)) +;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (20709 26818 907104 +;;;;;; 0)) ;;; Generated autoloads from erc/erc-ring.el (autoload 'erc-ring-mode "erc-ring" nil t) ;;;*** ;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode) -;;;;;; "erc-services" "erc/erc-services.el" (20650 54512 564403 +;;;;;; "erc-services" "erc/erc-services.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from erc/erc-services.el (autoload 'erc-services-mode "erc-services" nil t) @@ -9248,15 +9211,15 @@ When called interactively, read the password using `read-passwd'. ;;;*** -;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (20591 33616 -;;;;;; 894723 303000)) +;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from erc/erc-sound.el (autoload 'erc-sound-mode "erc-sound") ;;;*** ;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el" -;;;;;; (20650 54512 564403 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-speedbar.el (autoload 'erc-speedbar-browser "erc-speedbar" "\ @@ -9267,22 +9230,22 @@ This will add a speedbar major display mode. ;;;*** -;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (20591 -;;;;;; 33616 904733 437000)) +;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from erc/erc-spelling.el (autoload 'erc-spelling-mode "erc-spelling" nil t) ;;;*** -;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (20593 22184 -;;;;;; 581574 0)) +;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from erc/erc-stamp.el (autoload 'erc-timestamp-mode "erc-stamp" nil t) ;;;*** ;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el" -;;;;;; (20650 54512 564403 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-track.el (defvar erc-track-minor-mode nil "\ @@ -9308,8 +9271,8 @@ keybindings will not do anything useful. ;;;*** ;;;### (autoloads (erc-truncate-buffer erc-truncate-buffer-to-size) -;;;;;; "erc-truncate" "erc/erc-truncate.el" (20591 33616 934716 -;;;;;; 526000)) +;;;;;; "erc-truncate" "erc/erc-truncate.el" (20709 26818 907104 +;;;;;; 0)) ;;; Generated autoloads from erc/erc-truncate.el (autoload 'erc-truncate-mode "erc-truncate" nil t) @@ -9329,7 +9292,7 @@ Meant to be used in hooks, like `erc-insert-post-hook'. ;;;*** ;;;### (autoloads (erc-xdcc-add-file) "erc-xdcc" "erc/erc-xdcc.el" -;;;;;; (20591 33616 934716 526000)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from erc/erc-xdcc.el (autoload 'erc-xdcc-mode "erc-xdcc") @@ -9342,7 +9305,7 @@ Add a file to `erc-xdcc-files'. ;;;### (autoloads (ert-describe-test ert-run-tests-interactively ;;;;;; ert-run-tests-batch-and-exit ert-run-tests-batch ert-deftest) -;;;;;; "ert" "emacs-lisp/ert.el" (20655 23358 697173 0)) +;;;;;; "ert" "emacs-lisp/ert.el" (20751 39094 700824 0)) ;;; Generated autoloads from emacs-lisp/ert.el (autoload 'ert-deftest "ert" "\ @@ -9408,7 +9371,7 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test). ;;;*** ;;;### (autoloads (ert-kill-all-test-buffers) "ert-x" "emacs-lisp/ert-x.el" -;;;;;; (20655 23358 697173 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/ert-x.el (put 'ert-with-test-buffer 'lisp-indent-function 1) @@ -9420,8 +9383,8 @@ Kill all test buffers that are still live. ;;;*** -;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20593 -;;;;;; 22184 581574 0)) +;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from eshell/esh-mode.el (autoload 'eshell-mode "esh-mode" "\ @@ -9434,7 +9397,7 @@ Emacs shell interactive mode. ;;;*** ;;;### (autoloads (eshell-command-result eshell-command eshell) "eshell" -;;;;;; "eshell/eshell.el" (20577 33959 40183 0)) +;;;;;; "eshell/eshell.el" (20709 26818 907104 0)) ;;; Generated autoloads from eshell/eshell.el (autoload 'eshell "eshell" "\ @@ -9475,7 +9438,7 @@ corresponding to a successful execution. ;;;;;; visit-tags-table tags-table-mode find-tag-default-function ;;;;;; find-tag-hook tags-add-tables tags-compression-info-list ;;;;;; tags-table-list tags-case-fold-search) "etags" "progmodes/etags.el" -;;;;;; (20693 38586 665915 0)) +;;;;;; (20731 53823 676680 0)) ;;; Generated autoloads from progmodes/etags.el (defvar tags-file-name nil "\ @@ -9503,11 +9466,8 @@ Use the `etags' program to make a tags table file.") (custom-autoload 'tags-table-list "etags" t) (defvar tags-compression-info-list (purecopy '("" ".Z" ".bz2" ".gz" ".xz" ".tgz")) "\ -List of extensions tried by etags when jka-compr is used. -An empty string means search the non-compressed file. -These extensions will be tried only if jka-compr was activated -\(i.e. via customize of `auto-compression-mode' or by calling the function -`auto-compression-mode').") +List of extensions tried by etags when `auto-compression-mode' is on. +An empty string means search the non-compressed file.") (custom-autoload 'tags-compression-info-list "etags" t) @@ -9793,7 +9753,7 @@ for \\[find-tag] (which see). ;;;;;; ethio-fidel-to-sera-marker ethio-fidel-to-sera-region ethio-fidel-to-sera-buffer ;;;;;; ethio-sera-to-fidel-marker ethio-sera-to-fidel-region ethio-sera-to-fidel-buffer ;;;;;; setup-ethiopic-environment-internal) "ethio-util" "language/ethio-util.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from language/ethio-util.el (autoload 'setup-ethiopic-environment-internal "ethio-util" "\ @@ -9963,7 +9923,7 @@ With ARG, insert that many delimiters. ;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline ;;;;;; eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el" -;;;;;; (20478 3673 653810 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from net/eudc.el (autoload 'eudc-set-server "eudc" "\ @@ -10019,7 +9979,7 @@ This does nothing except loading eudc by autoload side-effect. ;;;### (autoloads (eudc-display-jpeg-as-button eudc-display-jpeg-inline ;;;;;; eudc-display-sound eudc-display-mail eudc-display-url eudc-display-generic-binary) -;;;;;; "eudc-bob" "net/eudc-bob.el" (20355 10021 546955 0)) +;;;;;; "eudc-bob" "net/eudc-bob.el" (20709 26818 907104 0)) ;;; Generated autoloads from net/eudc-bob.el (autoload 'eudc-display-generic-binary "eudc-bob" "\ @@ -10055,7 +10015,7 @@ Display a button for the JPEG DATA. ;;;*** ;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb) -;;;;;; "eudc-export" "net/eudc-export.el" (20355 10021 546955 0)) +;;;;;; "eudc-export" "net/eudc-export.el" (20709 26818 907104 0)) ;;; Generated autoloads from net/eudc-export.el (autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\ @@ -10072,7 +10032,7 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a record. ;;;*** ;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from net/eudc-hotlist.el (autoload 'eudc-edit-hotlist "eudc-hotlist" "\ @@ -10082,8 +10042,8 @@ Edit the hotlist of directory servers in a specialized buffer. ;;;*** -;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20453 -;;;;;; 5437 764254 0)) +;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/ewoc.el (autoload 'ewoc-create "ewoc" "\ @@ -10112,7 +10072,7 @@ fourth arg NOSEP non-nil inhibits this. ;;;### (autoloads (executable-make-buffer-file-executable-if-script-p ;;;;;; executable-self-display executable-set-magic executable-interpret ;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el" -;;;;;; (20533 6181 437016 717000)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/executable.el (autoload 'executable-command-find-posix-p "executable" "\ @@ -10155,7 +10115,7 @@ file modes. ;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot ;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from expand.el (autoload 'expand-add-abbrevs "expand" "\ @@ -10204,8 +10164,8 @@ This is used only in conjunction with `expand-add-abbrevs'. ;;;*** -;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (20679 5689 -;;;;;; 779225 0)) +;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from progmodes/f90.el (autoload 'f90-mode "f90" "\ @@ -10275,8 +10235,8 @@ with no args, if that value is non-nil. ;;;### (autoloads (variable-pitch-mode buffer-face-toggle buffer-face-set ;;;;;; buffer-face-mode text-scale-adjust text-scale-decrease text-scale-increase ;;;;;; text-scale-set face-remap-set-base face-remap-reset-base -;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (20622 -;;;;;; 22438 32851 0)) +;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from face-remap.el (autoload 'face-remap-add-relative "face-remap" "\ @@ -10439,8 +10399,8 @@ Besides the choice of face, it is the same as `buffer-face-mode'. ;;;### (autoloads (feedmail-queue-reminder feedmail-run-the-queue ;;;;;; feedmail-run-the-queue-global-prompt feedmail-run-the-queue-no-prompts -;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (20566 63671 -;;;;;; 243798 0)) +;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (20759 33211 +;;;;;; 414988 0)) ;;; Generated autoloads from mail/feedmail.el (autoload 'feedmail-send-it "feedmail" "\ @@ -10495,7 +10455,7 @@ you can set `feedmail-queue-reminder-alist' to nil. ;;;### (autoloads (ffap-bindings ffap-guess-file-name-at-point dired-at-point ;;;;;; ffap-at-mouse ffap-menu find-file-at-point ffap-next) "ffap" -;;;;;; "ffap.el" (20671 11582 624449 0)) +;;;;;; "ffap.el" (20752 26669 524456 0)) ;;; Generated autoloads from ffap.el (autoload 'ffap-next "ffap" "\ @@ -10504,7 +10464,7 @@ Optional argument BACK says to search backwards. Optional argument WRAP says to try wrapping around if necessary. Interactively: use a single prefix to search backwards, double prefix to wrap forward, triple to wrap backwards. -Actual search is done by `ffap-next-guess'. +Actual search is done by the function `ffap-next-guess'. \(fn &optional BACK WRAP)" t nil) @@ -10561,7 +10521,7 @@ Evaluate the forms in variable `ffap-bindings'. ;;;### (autoloads (file-cache-minibuffer-complete file-cache-add-directory-recursively ;;;;;; file-cache-add-directory-using-locate file-cache-add-directory-using-find ;;;;;; file-cache-add-file file-cache-add-directory-list file-cache-add-directory) -;;;;;; "filecache" "filecache.el" (20648 50109 802321 0)) +;;;;;; "filecache" "filecache.el" (20709 26818 907104 0)) ;;; Generated autoloads from filecache.el (autoload 'file-cache-add-directory "filecache" "\ @@ -10622,8 +10582,8 @@ the name is considered already unique; only the second substitution ;;;;;; copy-file-locals-to-dir-locals delete-dir-local-variable ;;;;;; add-dir-local-variable delete-file-local-variable-prop-line ;;;;;; add-file-local-variable-prop-line delete-file-local-variable -;;;;;; add-file-local-variable) "files-x" "files-x.el" (20355 10021 -;;;;;; 546955 0)) +;;;;;; add-file-local-variable) "files-x" "files-x.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from files-x.el (autoload 'add-file-local-variable "files-x" "\ @@ -10688,8 +10648,8 @@ Copy directory-local variables to the -*- line. ;;;*** -;;;### (autoloads (filesets-init) "filesets" "filesets.el" (20614 -;;;;;; 54428 654267 0)) +;;;### (autoloads (filesets-init) "filesets" "filesets.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from filesets.el (autoload 'filesets-init "filesets" "\ @@ -10700,8 +10660,8 @@ Set up hooks, load the cache file -- if existing -- and build the menu. ;;;*** -;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (20655 23358 -;;;;;; 697173 0)) +;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from find-cmd.el (autoload 'find-cmd "find-cmd" "\ @@ -10721,7 +10681,7 @@ result is a string that should be ready for the command line. ;;;*** ;;;### (autoloads (find-grep-dired find-name-dired find-dired) "find-dired" -;;;;;; "find-dired.el" (20355 10021 546955 0)) +;;;;;; "find-dired.el" (20763 30266 231060 0)) ;;; Generated autoloads from find-dired.el (autoload 'find-dired "find-dired" "\ @@ -10761,7 +10721,7 @@ use in place of \"-ls\" as the final argument. ;;;### (autoloads (ff-mouse-find-other-file-other-window ff-mouse-find-other-file ;;;;;; ff-find-other-file ff-get-other-file ff-special-constructs) -;;;;;; "find-file" "find-file.el" (20387 44199 24128 0)) +;;;;;; "find-file" "find-file.el" (20709 26818 907104 0)) ;;; Generated autoloads from find-file.el (defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) (match-end 2)))) "\ @@ -10857,7 +10817,7 @@ Visit the file you click on in another window. ;;;;;; find-variable find-variable-noselect find-function-other-frame ;;;;;; find-function-other-window find-function find-function-noselect ;;;;;; find-function-search-for-symbol find-library) "find-func" -;;;;;; "emacs-lisp/find-func.el" (20497 6436 957082 0)) +;;;;;; "emacs-lisp/find-func.el" (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/find-func.el (autoload 'find-library "find-func" "\ @@ -11016,8 +10976,8 @@ Define some key bindings for the find-function family of functions. ;;;*** ;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories -;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (20355 10021 -;;;;;; 546955 0)) +;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from find-lisp.el (autoload 'find-lisp-find-dired "find-lisp" "\ @@ -11038,7 +10998,7 @@ Change the filter on a find-lisp-find-dired buffer to REGEXP. ;;;*** ;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords) -;;;;;; "finder" "finder.el" (20355 10021 546955 0)) +;;;;;; "finder" "finder.el" (20709 26818 907104 0)) ;;; Generated autoloads from finder.el (autoload 'finder-list-keywords "finder" "\ @@ -11060,7 +11020,7 @@ Find packages matching a given keyword. ;;;*** ;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl" -;;;;;; "flow-ctrl.el" (20566 63671 243798 0)) +;;;;;; "flow-ctrl.el" (20709 26818 907104 0)) ;;; Generated autoloads from flow-ctrl.el (autoload 'enable-flow-control "flow-ctrl" "\ @@ -11082,7 +11042,7 @@ to get the effect of a C-q. ;;;*** ;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/flow-fill.el (autoload 'fill-flowed-encode "flow-fill" "\ @@ -11098,8 +11058,8 @@ to get the effect of a C-q. ;;;*** ;;;### (autoloads (flymake-find-file-hook flymake-mode-off flymake-mode-on -;;;;;; flymake-mode) "flymake" "progmodes/flymake.el" (20642 11326 -;;;;;; 759953 0)) +;;;;;; flymake-mode) "flymake" "progmodes/flymake.el" (20717 20920 +;;;;;; 410005 0)) ;;; Generated autoloads from progmodes/flymake.el (autoload 'flymake-mode "flymake" "\ @@ -11129,7 +11089,7 @@ Turn flymake mode off. ;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off ;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode) -;;;;;; "flyspell" "textmodes/flyspell.el" (20566 63671 243798 0)) +;;;;;; "flyspell" "textmodes/flyspell.el" (20721 17977 14204 0)) ;;; Generated autoloads from textmodes/flyspell.el (autoload 'flyspell-prog-mode "flyspell" "\ @@ -11201,7 +11161,7 @@ Flyspell whole buffer. ;;;### (autoloads (follow-delete-other-windows-and-split follow-mode ;;;;;; turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el" -;;;;;; (20501 3499 284800 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from follow.el (autoload 'turn-on-follow-mode "follow" "\ @@ -11269,8 +11229,8 @@ selected if the original window is the first one in the frame. ;;;*** -;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (20478 -;;;;;; 3673 653810 0)) +;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from mail/footnote.el (autoload 'footnote-mode "footnote" "\ @@ -11289,7 +11249,7 @@ play around with the following keys: ;;;*** ;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode) -;;;;;; "forms" "forms.el" (20427 14766 970343 0)) +;;;;;; "forms" "forms.el" (20709 26818 907104 0)) ;;; Generated autoloads from forms.el (autoload 'forms-mode "forms" "\ @@ -11326,7 +11286,7 @@ Visit a file in Forms mode in other window. ;;;*** ;;;### (autoloads (fortran-mode) "fortran" "progmodes/fortran.el" -;;;;;; (20438 24024 724594 589000)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/fortran.el (autoload 'fortran-mode "fortran" "\ @@ -11404,8 +11364,8 @@ with no args, if that value is non-nil. ;;;*** ;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region -;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (20355 10021 -;;;;;; 546955 0)) +;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (20765 36517 +;;;;;; 595445 191000)) ;;; Generated autoloads from play/fortune.el (autoload 'fortune-add-fortune "fortune" "\ @@ -11454,7 +11414,7 @@ and choose the directory as the fortune-file. ;;;*** ;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el" -;;;;;; (20609 10405 476026 0)) +;;;;;; (20721 17977 14204 0)) ;;; Generated autoloads from progmodes/gdb-mi.el (defvar gdb-enable-debug nil "\ @@ -11484,12 +11444,12 @@ executable followed by command-line options. The command-line options should include \"-i=mi\" to use gdb's MI text interface. Note that the old \"--annotate\" option is no longer supported. -If `gdb-many-windows' is nil (the default value) then gdb just +If option `gdb-many-windows' is nil (the default value) then gdb just pops up the GUD buffer unless `gdb-show-main' is t. In this case it starts with two windows: one displaying the GUD buffer and the other with the source file with the main routine of the inferior. -If `gdb-many-windows' is t, regardless of the value of +If option `gdb-many-windows' is t, regardless of the value of `gdb-show-main', the layout below will appear. Keybindings are shown in some of the buffers. @@ -11532,8 +11492,8 @@ detailed description of this mode. ;;;*** ;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal -;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (20406 -;;;;;; 8611 875037 0)) +;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/generic.el (defvar generic-mode-list nil "\ @@ -11612,7 +11572,7 @@ regular expression that can be used as an element of ;;;*** ;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el" -;;;;;; (20478 3673 653810 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/glasses.el (autoload 'glasses-mode "glasses" "\ @@ -11628,7 +11588,7 @@ add virtual separators (like underscores) at places they belong to. ;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error ;;;;;; gmm-message gmm-regexp-concat) "gmm-utils" "gnus/gmm-utils.el" -;;;;;; (20672 32446 100992 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gmm-utils.el (autoload 'gmm-regexp-concat "gmm-utils" "\ @@ -11683,8 +11643,8 @@ DEFAULT-MAP specifies the default key map for ICON-LIST. ;;;*** ;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server -;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20681 1859 197031 -;;;;;; 0)) +;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from gnus/gnus.el (when (fboundp 'custom-autoload) (custom-autoload 'gnus-select-method "gnus")) @@ -11738,7 +11698,7 @@ prompt the user for the name of an NNTP server to use. ;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group ;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize ;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent" -;;;;;; "gnus/gnus-agent.el" (20698 56506 332830 0)) +;;;;;; "gnus/gnus-agent.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-agent.el (autoload 'gnus-unplugged "gnus-agent" "\ @@ -11829,7 +11789,7 @@ If CLEAN, obsolete (ignore). ;;;*** ;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el" -;;;;;; (20700 11832 779612 0)) +;;;;;; (20763 30266 231060 0)) ;;; Generated autoloads from gnus/gnus-art.el (autoload 'gnus-article-prepare-display "gnus-art" "\ @@ -11840,7 +11800,7 @@ Make the current buffer look like a nice article. ;;;*** ;;;### (autoloads (gnus-bookmark-bmenu-list gnus-bookmark-jump gnus-bookmark-set) -;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (20672 32446 100992 +;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from gnus/gnus-bookmark.el @@ -11866,8 +11826,8 @@ deletion, or > if it is flagged for displaying. ;;;### (autoloads (gnus-cache-delete-group gnus-cache-rename-group ;;;;;; gnus-cache-generate-nov-databases gnus-cache-generate-active -;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (20355 -;;;;;; 10021 546955 0)) +;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-cache.el (autoload 'gnus-jog-cache "gnus-cache" "\ @@ -11909,7 +11869,7 @@ supported. ;;;*** ;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article) -;;;;;; "gnus-delay" "gnus/gnus-delay.el" (20355 10021 546955 0)) +;;;;;; "gnus-delay" "gnus/gnus-delay.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-delay.el (autoload 'gnus-delay-article "gnus-delay" "\ @@ -11945,7 +11905,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil. ;;;*** ;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d) -;;;;;; "gnus-diary" "gnus/gnus-diary.el" (20647 29243 972198 0)) +;;;;;; "gnus-diary" "gnus/gnus-diary.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-diary.el (autoload 'gnus-user-format-function-d "gnus-diary" "\ @@ -11961,7 +11921,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil. ;;;*** ;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el" -;;;;;; (20628 29298 719852 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-dired.el (autoload 'turn-on-gnus-dired-mode "gnus-dired" "\ @@ -11972,7 +11932,7 @@ Convenience method to turn on gnus-dired-mode. ;;;*** ;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-draft.el (autoload 'gnus-draft-reminder "gnus-draft" "\ @@ -11984,8 +11944,8 @@ Reminder user if there are unsent drafts. ;;;### (autoloads (gnus-convert-png-to-face gnus-convert-face-to-png ;;;;;; gnus-face-from-file gnus-x-face-from-file gnus-insert-random-x-face-header -;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (20549 -;;;;;; 54573 979353 0)) +;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-fun.el (autoload 'gnus-random-x-face "gnus-fun" "\ @@ -12030,7 +11990,7 @@ FILE should be a PNG file that's 48x48 and smaller than or equal to ;;;*** ;;;### (autoloads (gnus-treat-mail-gravatar gnus-treat-from-gravatar) -;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (20355 10021 546955 +;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from gnus/gnus-gravatar.el @@ -12049,7 +12009,7 @@ If gravatars are already displayed, remove them. ;;;*** ;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group) -;;;;;; "gnus-group" "gnus/gnus-group.el" (20698 56506 332830 0)) +;;;;;; "gnus-group" "gnus/gnus-group.el" (20763 30266 231060 0)) ;;; Generated autoloads from gnus/gnus-group.el (autoload 'gnus-fetch-group "gnus-group" "\ @@ -12067,7 +12027,7 @@ Pop up a frame and enter GROUP. ;;;*** ;;;### (autoloads (gnus-html-prefetch-images gnus-article-html) "gnus-html" -;;;;;; "gnus/gnus-html.el" (20355 10021 546955 0)) +;;;;;; "gnus/gnus-html.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-html.el (autoload 'gnus-article-html "gnus-html" "\ @@ -12083,7 +12043,7 @@ Pop up a frame and enter GROUP. ;;;*** ;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el" -;;;;;; (20495 51111 757560 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-kill.el (defalias 'gnus-batch-kill 'gnus-batch-score) @@ -12098,7 +12058,7 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score ;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate ;;;;;; turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-ml.el (autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\ @@ -12123,7 +12083,7 @@ Minor mode for providing mailing-list commands. ;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update ;;;;;; gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-mlspl.el (autoload 'gnus-group-split-setup "gnus-mlspl" "\ @@ -12224,7 +12184,7 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns: ;;;*** ;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail) -;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20701 32695 861936 0)) +;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-msg.el (autoload 'gnus-msg-mail "gnus-msg" "\ @@ -12251,7 +12211,7 @@ Like `message-reply'. ;;;*** ;;;### (autoloads (gnus-notifications) "gnus-notifications" "gnus/gnus-notifications.el" -;;;;;; (20593 22184 581574 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-notifications.el (autoload 'gnus-notifications "gnus-notifications" "\ @@ -12269,7 +12229,7 @@ This is typically a function to add in ;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon ;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el" -;;;;;; (20523 62082 997685 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-picon.el (autoload 'gnus-treat-from-picon "gnus-picon" "\ @@ -12296,7 +12256,7 @@ If picons are already displayed, remove them. ;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection ;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement ;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range" -;;;;;; "gnus/gnus-range.el" (20544 36659 880486 0)) +;;;;;; "gnus/gnus-range.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-range.el (autoload 'gnus-sorted-difference "gnus-range" "\ @@ -12364,7 +12324,7 @@ Add NUM into sorted LIST by side effect. ;;;*** ;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize) -;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20672 32446 100992 +;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20779 18487 859617 ;;;;;; 0)) ;;; Generated autoloads from gnus/gnus-registry.el @@ -12381,8 +12341,8 @@ Install the registry hooks. ;;;*** ;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate -;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (20355 -;;;;;; 10021 546955 0)) +;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-sieve.el (autoload 'gnus-sieve-update "gnus-sieve" "\ @@ -12410,7 +12370,7 @@ See the documentation for these variables and functions for details. ;;;*** ;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el" -;;;;;; (20701 32695 861936 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-spec.el (autoload 'gnus-update-format "gnus-spec" "\ @@ -12421,7 +12381,7 @@ Update the format specification near point. ;;;*** ;;;### (autoloads (gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" -;;;;;; (20681 47415 473102 0)) +;;;;;; (20763 30266 231060 0)) ;;; Generated autoloads from gnus/gnus-start.el (autoload 'gnus-declare-backend "gnus-start" "\ @@ -12432,7 +12392,7 @@ Declare back end NAME with ABILITIES as a Gnus back end. ;;;*** ;;;### (autoloads (gnus-summary-bookmark-jump) "gnus-sum" "gnus/gnus-sum.el" -;;;;;; (20698 56506 332830 0)) +;;;;;; (20763 30266 231060 0)) ;;; Generated autoloads from gnus/gnus-sum.el (autoload 'gnus-summary-bookmark-jump "gnus-sum" "\ @@ -12444,7 +12404,7 @@ BOOKMARK is a bookmark name or a bookmark record. ;;;*** ;;;### (autoloads (gnus-sync-install-hooks gnus-sync-initialize) -;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20696 14774 167809 0)) +;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-sync.el (autoload 'gnus-sync-initialize "gnus-sync" "\ @@ -12460,7 +12420,7 @@ Install the sync hooks. ;;;*** ;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el" -;;;;;; (20447 49522 409090 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gnus-win.el (autoload 'gnus-add-configuration "gnus-win" "\ @@ -12471,7 +12431,7 @@ Add the window configuration CONF to `gnus-buffer-configuration'. ;;;*** ;;;### (autoloads (gnutls-min-prime-bits) "gnutls" "net/gnutls.el" -;;;;;; (20476 31768 298871 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from net/gnutls.el (defvar gnutls-min-prime-bits 256 "\ @@ -12487,8 +12447,8 @@ A value of nil says to use the default GnuTLS value.") ;;;*** -;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20626 19492 -;;;;;; 855904 0)) +;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from play/gomoku.el (autoload 'gomoku "gomoku" "\ @@ -12515,8 +12475,8 @@ Use \\[describe-mode] for more info. ;;;*** ;;;### (autoloads (goto-address-prog-mode goto-address-mode goto-address -;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (20566 -;;;;;; 63671 243798 0)) +;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (20766 +;;;;;; 6456 368550 0)) ;;; Generated autoloads from net/goto-addr.el (define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1") @@ -12558,7 +12518,7 @@ Like `goto-address-mode', but only for comments and strings. ;;;*** ;;;### (autoloads (gravatar-retrieve-synchronously gravatar-retrieve) -;;;;;; "gravatar" "gnus/gravatar.el" (20355 10021 546955 0)) +;;;;;; "gravatar" "gnus/gravatar.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/gravatar.el (autoload 'gravatar-retrieve "gravatar" "\ @@ -12576,8 +12536,8 @@ Retrieve MAIL-ADDRESS gravatar and returns it. ;;;### (autoloads (zrgrep rgrep lgrep grep-find grep grep-mode grep-compute-defaults ;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command -;;;;;; grep-window-height) "grep" "progmodes/grep.el" (20690 62389 -;;;;;; 885263 0)) +;;;;;; grep-window-height) "grep" "progmodes/grep.el" (20762 9398 +;;;;;; 526093 0)) ;;; Generated autoloads from progmodes/grep.el (defvar grep-window-height nil "\ @@ -12610,7 +12570,7 @@ List of hook functions run by `grep-process-setup' (see `run-hooks').") (custom-autoload 'grep-setup-hook "grep" t) -(defconst grep-regexp-alist '(("^\\(.+?\\)\\(:[ ]*\\)\\([1-9][0-9]*\\)\\2" 1 3 ((lambda nil (when grep-highlight-matches (let* ((beg (match-end 0)) (end (save-excursion (goto-char beg) (line-end-position))) (mbeg (text-property-any beg end 'font-lock-face 'match))) (when mbeg (- mbeg beg))))) lambda nil (when grep-highlight-matches (let* ((beg (match-end 0)) (end (save-excursion (goto-char beg) (line-end-position))) (mbeg (text-property-any beg end 'font-lock-face 'match)) (mend (and mbeg (next-single-property-change mbeg 'font-lock-face nil end)))) (when mend (- mend beg)))))) ("^Binary file \\(.+\\) matches$" 1 nil nil 0 1)) "\ +(defconst grep-regexp-alist '(("^\\(.+?\\)\\(:[ ]*\\)\\([1-9][0-9]*\\)\\2" 1 3 ((lambda nil (when grep-highlight-matches (let* ((beg (match-end 0)) (end (save-excursion (goto-char beg) (line-end-position))) (mbeg (text-property-any beg end 'font-lock-face grep-match-face))) (when mbeg (- mbeg beg))))) lambda nil (when grep-highlight-matches (let* ((beg (match-end 0)) (end (save-excursion (goto-char beg) (line-end-position))) (mbeg (text-property-any beg end 'font-lock-face grep-match-face)) (mend (and mbeg (next-single-property-change mbeg 'font-lock-face nil end)))) (when mend (- mend beg)))))) ("^Binary file \\(.+\\) matches$" 1 nil nil 0 1)) "\ Regexp used to match grep hits. See `compilation-error-regexp-alist'.") (defvar grep-program (purecopy "grep") "\ @@ -12740,7 +12700,7 @@ file name to `*.gz', and sets `grep-highlight-matches' to `always'. ;;;*** -;;;### (autoloads (gs-load-image) "gs" "gs.el" (20355 10021 546955 +;;;### (autoloads (gs-load-image) "gs" "gs.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from gs.el @@ -12755,8 +12715,8 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful. ;;;*** ;;;### (autoloads (gud-tooltip-mode gdb-script-mode jdb pdb perldb -;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20614 55343 -;;;;;; 384716 548000)) +;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from progmodes/gud.el (autoload 'gud-gdb "gud" "\ @@ -12846,7 +12806,7 @@ it if ARG is omitted or nil. ;;;### (autoloads (gv-ref setf gv-define-simple-setter gv-define-setter ;;;;;; gv--defun-declaration gv-define-expander gv-letplace gv-get) -;;;;;; "gv" "emacs-lisp/gv.el" (20643 32183 554981 0)) +;;;;;; "gv" "emacs-lisp/gv.el" (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/gv.el (autoload 'gv-get "gv" "\ @@ -12945,8 +12905,8 @@ This is like the `&' operator of the C language. ;;;*** -;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (20566 -;;;;;; 63671 243798 0)) +;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from play/handwrite.el (autoload 'handwrite "handwrite" "\ @@ -12993,7 +12953,7 @@ to be updated. ;;;### (autoloads (mail-check-payment mail-add-payment-async mail-add-payment ;;;;;; hashcash-verify-payment hashcash-insert-payment-async hashcash-insert-payment) -;;;;;; "hashcash" "mail/hashcash.el" (20355 10021 546955 0)) +;;;;;; "hashcash" "mail/hashcash.el" (20709 26818 907104 0)) ;;; Generated autoloads from mail/hashcash.el (autoload 'hashcash-insert-payment "hashcash" "\ @@ -13038,8 +12998,8 @@ Prefix arg sets default accept amount temporarily. ;;;### (autoloads (scan-buf-previous-region scan-buf-next-region ;;;;;; scan-buf-move-to-region help-at-pt-display-when-idle help-at-pt-set-timer ;;;;;; help-at-pt-cancel-timer display-local-help help-at-pt-kbd-string -;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (20355 10021 -;;;;;; 546955 0)) +;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from help-at-pt.el (autoload 'help-at-pt-string "help-at-pt" "\ @@ -13169,7 +13129,7 @@ different regions. With numeric argument ARG, behaves like ;;;### (autoloads (doc-file-to-info doc-file-to-man describe-categories ;;;;;; describe-syntax describe-variable variable-at-point describe-function-1 ;;;;;; find-lisp-object-file-name help-C-file-name describe-function) -;;;;;; "help-fns" "help-fns.el" (20692 17721 295021 0)) +;;;;;; "help-fns" "help-fns.el" (20764 51137 83502 0)) ;;; Generated autoloads from help-fns.el (autoload 'describe-function "help-fns" "\ @@ -13249,7 +13209,7 @@ Produce a texinfo buffer with sorted doc-strings from the DOC file. ;;;*** ;;;### (autoloads (three-step-help) "help-macro" "help-macro.el" -;;;;;; (20686 65335 65598 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from help-macro.el (defvar three-step-help nil "\ @@ -13266,7 +13226,7 @@ gives the window that lists the options.") ;;;### (autoloads (help-bookmark-jump help-xref-on-pp help-insert-xref-button ;;;;;; help-xref-button help-make-xrefs help-buffer help-setup-xref ;;;;;; help-mode-finish help-mode-setup help-mode) "help-mode" "help-mode.el" -;;;;;; (20647 29243 972198 0)) +;;;;;; (20721 17977 14204 0)) ;;; Generated autoloads from help-mode.el (autoload 'help-mode "help-mode" "\ @@ -13366,7 +13326,7 @@ BOOKMARK is a bookmark name or a bookmark record. ;;;*** ;;;### (autoloads (Helper-help Helper-describe-bindings) "helper" -;;;;;; "emacs-lisp/helper.el" (20355 10021 546955 0)) +;;;;;; "emacs-lisp/helper.el" (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/helper.el (autoload 'Helper-describe-bindings "helper" "\ @@ -13382,7 +13342,7 @@ Provide help for current mode. ;;;*** ;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl" -;;;;;; "hexl.el" (20523 62082 997685 0)) +;;;;;; "hexl.el" (20763 30266 231060 0)) ;;; Generated autoloads from hexl.el (autoload 'hexl-mode "hexl" "\ @@ -13425,8 +13385,8 @@ A sample format: 000000c0: 7265 6769 6f6e 2e0a region.. Movement is as simple as movement in a normal Emacs text buffer. Most -cursor movement bindings are the same (ie. Use \\[hexl-backward-char], \\[hexl-forward-char], \\[hexl-next-line], and \\[hexl-previous-line] -to move the cursor left, right, down, and up). +cursor movement bindings are the same: use \\[hexl-backward-char], \\[hexl-forward-char], \\[hexl-next-line], and \\[hexl-previous-line] +to move the cursor left, right, down, and up. Advanced cursor movement commands (ala \\[hexl-beginning-of-line], \\[hexl-end-of-line], \\[hexl-beginning-of-buffer], and \\[hexl-end-of-buffer]) are also supported. @@ -13479,7 +13439,7 @@ This discards the buffer's undo information. ;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer ;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer ;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el" -;;;;;; (20679 5689 779225 0)) +;;;;;; (20743 44982 104196 0)) ;;; Generated autoloads from hi-lock.el (autoload 'hi-lock-mode "hi-lock" "\ @@ -13629,7 +13589,7 @@ be found in variable `hi-lock-interactive-patterns'. ;;;*** ;;;### (autoloads (hide-ifdef-mode) "hideif" "progmodes/hideif.el" -;;;;;; (20588 4262 531841 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/hideif.el (autoload 'hide-ifdef-mode "hideif" "\ @@ -13673,7 +13633,7 @@ Several variables affect how the hiding is done: ;;;*** ;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el" -;;;;;; (20566 63671 243798 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/hideshow.el (defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\ @@ -13739,8 +13699,8 @@ Unconditionally turn off `hs-minor-mode'. ;;;;;; highlight-compare-buffers highlight-changes-rotate-faces ;;;;;; highlight-changes-previous-change highlight-changes-next-change ;;;;;; highlight-changes-remove-highlight highlight-changes-visible-mode -;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (20680 -;;;;;; 26549 383882 0)) +;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from hilit-chg.el (autoload 'highlight-changes-mode "hilit-chg" "\ @@ -13872,7 +13832,7 @@ See `highlight-changes-mode' for more information on Highlight-Changes mode. ;;;*** ;;;### (autoloads (make-hippie-expand-function hippie-expand hippie-expand-try-functions-list) -;;;;;; "hippie-exp" "hippie-exp.el" (20660 41272 835092 0)) +;;;;;; "hippie-exp" "hippie-exp.el" (20709 26818 907104 0)) ;;; Generated autoloads from hippie-exp.el (defvar hippie-expand-try-functions-list '(try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-lisp-symbol-partially try-complete-lisp-symbol) "\ @@ -13904,7 +13864,7 @@ argument VERBOSE non-nil makes the function verbose. ;;;*** ;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from hl-line.el (autoload 'hl-line-mode "hl-line" "\ @@ -13957,7 +13917,7 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and ;;;;;; holiday-bahai-holidays holiday-islamic-holidays holiday-christian-holidays ;;;;;; holiday-hebrew-holidays holiday-other-holidays holiday-local-holidays ;;;;;; holiday-oriental-holidays holiday-general-holidays) "holidays" -;;;;;; "calendar/holidays.el" (20566 63671 243798 0)) +;;;;;; "calendar/holidays.el" (20709 26818 907104 0)) ;;; Generated autoloads from calendar/holidays.el (define-obsolete-variable-alias 'general-holidays 'holiday-general-holidays "23.1") @@ -14105,8 +14065,8 @@ The optional LABEL is used to label the buffer created. ;;;*** -;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from gnus/html2text.el (autoload 'html2text "html2text" "\ @@ -14117,7 +14077,7 @@ Convert HTML to plain text in the current buffer. ;;;*** ;;;### (autoloads (htmlfontify-copy-and-link-dir htmlfontify-buffer) -;;;;;; "htmlfontify" "htmlfontify.el" (20614 54428 654267 0)) +;;;;;; "htmlfontify" "htmlfontify.el" (20774 51822 616889 64000)) ;;; Generated autoloads from htmlfontify.el (autoload 'htmlfontify-buffer "htmlfontify" "\ @@ -14150,8 +14110,8 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'. ;;;*** ;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter -;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (20478 -;;;;;; 3673 653810 0)) +;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from ibuf-macs.el (autoload 'define-ibuffer-column "ibuf-macs" "\ @@ -14240,7 +14200,7 @@ bound to the current value of the filter. ;;;*** ;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers) -;;;;;; "ibuffer" "ibuffer.el" (20647 29243 972198 0)) +;;;;;; "ibuffer" "ibuffer.el" (20709 26818 907104 0)) ;;; Generated autoloads from ibuffer.el (autoload 'ibuffer-list-buffers "ibuffer" "\ @@ -14281,7 +14241,7 @@ FORMATS is the value to use for `ibuffer-formats'. ;;;### (autoloads (icalendar-import-buffer icalendar-import-file ;;;;;; icalendar-export-region icalendar-export-file) "icalendar" -;;;;;; "calendar/icalendar.el" (20593 22184 581574 0)) +;;;;;; "calendar/icalendar.el" (20709 26818 907104 0)) ;;; Generated autoloads from calendar/icalendar.el (autoload 'icalendar-export-file "icalendar" "\ @@ -14333,8 +14293,8 @@ buffer `*icalendar-errors*'. ;;;*** -;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20688 -;;;;;; 20662 910837 0)) +;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20766 +;;;;;; 59066 666084 0)) ;;; Generated autoloads from icomplete.el (defvar icomplete-mode nil "\ @@ -14356,8 +14316,8 @@ the mode if ARG is omitted or nil. ;;;*** -;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from progmodes/icon.el (autoload 'icon-mode "icon" "\ @@ -14398,7 +14358,7 @@ with no args, if that value is non-nil. ;;;*** ;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el" -;;;;;; (20572 16038 402143 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/idlw-shell.el (autoload 'idlwave-shell "idlw-shell" "\ @@ -14424,7 +14384,7 @@ See also the variable `idlwave-shell-prompt-pattern'. ;;;*** ;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el" -;;;;;; (20576 42138 697312 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/idlwave.el (autoload 'idlwave-mode "idlwave" "\ @@ -14558,8 +14518,8 @@ The main features of this mode are ;;;;;; ido-find-alternate-file ido-find-file-other-window ido-find-file ;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer ;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window -;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20665 -;;;;;; 23733 615437 420000)) +;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20766 +;;;;;; 59066 666084 0)) ;;; Generated autoloads from ido.el (defvar ido-mode nil "\ @@ -14818,7 +14778,7 @@ DEF, if non-nil, is the default value. ;;;*** -;;;### (autoloads (ielm) "ielm" "ielm.el" (20566 63671 243798 0)) +;;;### (autoloads (ielm) "ielm" "ielm.el" (20709 26818 907104 0)) ;;; Generated autoloads from ielm.el (autoload 'ielm "ielm" "\ @@ -14829,8 +14789,8 @@ Switches to the buffer `*ielm*', or creates it if it does not exist. ;;;*** -;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from iimage.el (define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1") @@ -14851,7 +14811,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'. ;;;;;; create-image image-type-auto-detected-p image-type-available-p ;;;;;; image-type image-type-from-file-name image-type-from-file-header ;;;;;; image-type-from-buffer image-type-from-data) "image" "image.el" -;;;;;; (20648 50109 802321 0)) +;;;;;; (20772 45239 494620 0)) ;;; Generated autoloads from image.el (autoload 'image-type-from-data "image" "\ @@ -15051,7 +15011,7 @@ If Emacs is compiled without ImageMagick support, this does nothing. ;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag ;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs ;;;;;; image-dired-dired-with-window-configuration image-dired-dired-toggle-marked-thumbs) -;;;;;; "image-dired" "image-dired.el" (20648 50109 802321 0)) +;;;;;; "image-dired" "image-dired.el" (20768 48184 78670 0)) ;;; Generated autoloads from image-dired.el (autoload 'image-dired-dired-toggle-marked-thumbs "image-dired" "\ @@ -15116,7 +15076,7 @@ displayed. (defalias 'image-dired 'image-dired-show-all-from-dir) -(defalias 'tumme 'image-dired-show-all-from-dir) +(define-obsolete-function-alias 'tumme 'image-dired "24.4") (autoload 'image-dired-tag-files "image-dired" "\ Tag marked file(s) in dired. With prefix ARG, tag file at point. @@ -15189,7 +15149,7 @@ easy-to-use form. ;;;### (autoloads (auto-image-file-mode insert-image-file image-file-name-regexp ;;;;;; image-file-name-regexps image-file-name-extensions) "image-file" -;;;;;; "image-file.el" (20355 10021 546955 0)) +;;;;;; "image-file.el" (20709 26818 907104 0)) ;;; Generated autoloads from image-file.el (defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\ @@ -15252,8 +15212,8 @@ An image file is one whose name has an extension in ;;;*** ;;;### (autoloads (image-bookmark-jump image-mode-as-text image-minor-mode -;;;;;; image-mode) "image-mode" "image-mode.el" (20656 44218 805102 -;;;;;; 0)) +;;;;;; image-mode) "image-mode" "image-mode.el" (20774 51931 214714 +;;;;;; 829000)) ;;; Generated autoloads from image-mode.el (autoload 'image-mode "image-mode" "\ @@ -15298,7 +15258,7 @@ on these modes. ;;;*** ;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar -;;;;;; imenu-sort-function) "imenu" "imenu.el" (20644 53049 326201 +;;;;;; imenu-sort-function) "imenu" "imenu.el" (20784 36406 653593 ;;;;;; 0)) ;;; Generated autoloads from imenu.el @@ -15439,7 +15399,7 @@ for more information. ;;;### (autoloads (indian-2-column-to-ucs-region in-is13194-pre-write-conversion ;;;;;; in-is13194-post-read-conversion indian-compose-string indian-compose-region) -;;;;;; "ind-util" "language/ind-util.el" (20355 10021 546955 0)) +;;;;;; "ind-util" "language/ind-util.el" (20709 26818 907104 0)) ;;; Generated autoloads from language/ind-util.el (autoload 'indian-compose-region "ind-util" "\ @@ -15470,7 +15430,7 @@ Convert old Emacs Devanagari characters to UCS. ;;;*** ;;;### (autoloads (inferior-lisp) "inf-lisp" "progmodes/inf-lisp.el" -;;;;;; (20584 7212 455152 0)) +;;;;;; (20774 53405 644725 888000)) ;;; Generated autoloads from progmodes/inf-lisp.el (autoload 'inferior-lisp "inf-lisp" "\ @@ -15492,7 +15452,7 @@ of `inferior-lisp-program'). Runs the hooks from ;;;;;; Info-goto-emacs-key-command-node Info-goto-emacs-command-node ;;;;;; Info-mode info-finder info-apropos Info-index Info-directory ;;;;;; Info-on-current-buffer info-standalone info-emacs-bug info-emacs-manual -;;;;;; info info-other-window) "info" "info.el" (20702 53568 929244 +;;;;;; info info-other-window) "info" "info.el" (20774 566 676067 ;;;;;; 0)) ;;; Generated autoloads from info.el @@ -15706,7 +15666,7 @@ Otherwise, visit the manual in a new Info buffer. ;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file ;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el" -;;;;;; (20474 44971 970015 0)) +;;;;;; (20771 24374 643644 0)) ;;; Generated autoloads from info-look.el (autoload 'info-lookup-reset "info-look" "\ @@ -15755,7 +15715,7 @@ Perform completion on file preceding point. ;;;### (autoloads (info-xref-docstrings info-xref-check-all-custom ;;;;;; info-xref-check-all info-xref-check) "info-xref" "info-xref.el" -;;;;;; (20476 31768 298871 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from info-xref.el (autoload 'info-xref-check "info-xref" "\ @@ -15838,8 +15798,7 @@ the sources handy. ;;;*** ;;;### (autoloads (batch-info-validate Info-validate Info-split Info-split-threshold -;;;;;; Info-tagify) "informat" "informat.el" (20355 10021 546955 -;;;;;; 0)) +;;;;;; Info-tagify) "informat" "informat.el" (20774 566 676067 0)) ;;; Generated autoloads from informat.el (autoload 'Info-tagify "informat" "\ @@ -15885,7 +15844,7 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\" ;;;*** ;;;### (autoloads (inversion-require-emacs) "inversion" "cedet/inversion.el" -;;;;;; (20590 45996 129575 0)) +;;;;;; (20745 310 425822 0)) ;;; Generated autoloads from cedet/inversion.el (autoload 'inversion-require-emacs "inversion" "\ @@ -15898,7 +15857,7 @@ Only checks one based on which kind of Emacs is being run. ;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method ;;;;;; isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from international/isearch-x.el (autoload 'isearch-toggle-specified-input-method "isearch-x" "\ @@ -15918,8 +15877,8 @@ Toggle input method in interactive search. ;;;*** -;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from isearchb.el (autoload 'isearchb-activate "isearchb" "\ @@ -15935,7 +15894,7 @@ accessed via isearchb. ;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only ;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso ;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt" -;;;;;; "international/iso-cvt.el" (20355 10021 546955 0)) +;;;;;; "international/iso-cvt.el" (20709 26818 907104 0)) ;;; Generated autoloads from international/iso-cvt.el (autoload 'iso-spanish "iso-cvt" "\ @@ -16026,7 +15985,7 @@ Add submenus to the File menu, to convert to and from various formats. ;;;*** ;;;### (autoloads nil "iso-transl" "international/iso-transl.el" -;;;;;; (20486 36135 22104 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from international/iso-transl.el (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map) (autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 'keymap) @@ -16038,7 +15997,7 @@ Add submenus to the File menu, to convert to and from various formats. ;;;;;; ispell-buffer ispell-comments-and-strings ispell-region ispell-change-dictionary ;;;;;; ispell-kill-ispell ispell-help ispell-pdict-save ispell-word ;;;;;; ispell-personal-dictionary) "ispell" "textmodes/ispell.el" -;;;;;; (20669 56247 196168 0)) +;;;;;; (20784 36406 653593 0)) ;;; Generated autoloads from textmodes/ispell.el (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive)))) @@ -16271,8 +16230,8 @@ You can bind this to the key C-c i in GNUS or mail by adding to ;;;*** -;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (20577 -;;;;;; 33959 40183 0)) +;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (20766 +;;;;;; 59066 666084 0)) ;;; Generated autoloads from iswitchb.el (defvar iswitchb-mode nil "\ @@ -16300,7 +16259,7 @@ between buffers using substrings. See `iswitchb' for details. ;;;### (autoloads (read-hiragana-string japanese-zenkaku-region japanese-hankaku-region ;;;;;; japanese-hiragana-region japanese-katakana-region japanese-zenkaku ;;;;;; japanese-hankaku japanese-hiragana japanese-katakana setup-japanese-environment-internal) -;;;;;; "japan-util" "language/japan-util.el" (20355 10021 546955 +;;;;;; "japan-util" "language/japan-util.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from language/japan-util.el @@ -16379,7 +16338,7 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading. ;;;*** ;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr" -;;;;;; "jka-compr.el" (20355 10021 546955 0)) +;;;;;; "jka-compr.el" (20759 33211 414988 0)) ;;; Generated autoloads from jka-compr.el (defvar jka-compr-inhibit nil "\ @@ -16402,7 +16361,7 @@ by `jka-compr-installed'. ;;;*** -;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20665 59189 799105 +;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20763 30266 231060 ;;;;;; 0)) ;;; Generated autoloads from progmodes/js.el @@ -16410,14 +16369,13 @@ by `jka-compr-installed'. Major mode for editing JavaScript. \(fn)" t nil) - -(defalias 'javascript-mode 'js-mode) + (defalias 'javascript-mode 'js-mode) ;;;*** ;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup ;;;;;; keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emulation/keypad.el (defvar keypad-setup nil "\ @@ -16473,7 +16431,7 @@ the decimal key on the keypad is mapped to DECIMAL instead of `.' ;;;*** ;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from international/kinsoku.el (autoload 'kinsoku "kinsoku" "\ @@ -16494,8 +16452,8 @@ the context of text formatting. ;;;*** -;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from international/kkc.el (defvar kkc-after-update-conversion-functions nil "\ @@ -16520,7 +16478,7 @@ and the return value is the length of the conversion. ;;;### (autoloads (kmacro-end-call-mouse kmacro-end-and-call-macro ;;;;;; kmacro-end-or-call-macro kmacro-start-macro-or-insert-counter ;;;;;; kmacro-call-macro kmacro-end-macro kmacro-start-macro kmacro-exec-ring-item) -;;;;;; "kmacro" "kmacro.el" (20471 22929 875294 592000)) +;;;;;; "kmacro" "kmacro.el" (20709 26818 907104 0)) ;;; Generated autoloads from kmacro.el (global-set-key "\C-x(" 'kmacro-start-macro) (global-set-key "\C-x)" 'kmacro-end-macro) @@ -16631,7 +16589,7 @@ If kbd macro currently being defined end it before activating it. ;;;*** ;;;### (autoloads (setup-korean-environment-internal) "korea-util" -;;;;;; "language/korea-util.el" (20501 3499 284800 0)) +;;;;;; "language/korea-util.el" (20709 26818 907104 0)) ;;; Generated autoloads from language/korea-util.el (defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\ @@ -16646,7 +16604,7 @@ The kind of Korean keyboard for Korean input method. ;;;*** ;;;### (autoloads (landmark landmark-test-run) "landmark" "play/landmark.el" -;;;;;; (20545 57511 257469 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from play/landmark.el (defalias 'landmark-repeat 'landmark-test-run) @@ -16678,7 +16636,7 @@ Use \\[describe-mode] for more info. ;;;### (autoloads (lao-compose-region lao-composition-function lao-transcribe-roman-to-lao-string ;;;;;; lao-transcribe-single-roman-syllable-to-lao lao-compose-string) -;;;;;; "lao-util" "language/lao-util.el" (20355 10021 546955 0)) +;;;;;; "lao-util" "language/lao-util.el" (20709 26818 907104 0)) ;;; Generated autoloads from language/lao-util.el (autoload 'lao-compose-string "lao-util" "\ @@ -16717,7 +16675,7 @@ Transcribe Romanized Lao string STR to Lao character string. ;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc ;;;;;; latexenc-inputenc-to-coding-system latex-inputenc-coding-alist) -;;;;;; "latexenc" "international/latexenc.el" (20355 10021 546955 +;;;;;; "latexenc" "international/latexenc.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from international/latexenc.el @@ -16750,8 +16708,8 @@ coding system names is determined from `latex-inputenc-coding-alist'. ;;;*** ;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display) -;;;;;; "latin1-disp" "international/latin1-disp.el" (20577 33959 -;;;;;; 40183 0)) +;;;;;; "latin1-disp" "international/latin1-disp.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from international/latin1-disp.el (defvar latin1-display nil "\ @@ -16793,7 +16751,7 @@ use either \\[customize] or the function `latin1-display'.") ;;;*** ;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/ld-script.el (autoload 'ld-script-mode "ld-script" "\ @@ -16803,7 +16761,7 @@ A major mode to edit GNU ld script files ;;;*** -;;;### (autoloads (life) "life" "play/life.el" (20545 57511 257469 +;;;### (autoloads (life) "life" "play/life.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from play/life.el @@ -16818,7 +16776,7 @@ generations (this defaults to 1). ;;;*** ;;;### (autoloads (global-linum-mode linum-mode) "linum" "linum.el" -;;;;;; (20580 10161 446444 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from linum.el (autoload 'linum-mode "linum" "\ @@ -16854,8 +16812,8 @@ See `linum-mode' for more information on Linum mode. ;;;*** -;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (20476 -;;;;;; 31768 298871 0)) +;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from loadhist.el (autoload 'unload-feature "loadhist" "\ @@ -16887,7 +16845,7 @@ something strange, such as redefining an Emacs function. ;;;*** ;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches) -;;;;;; "locate" "locate.el" (20566 63671 243798 0)) +;;;;;; "locate" "locate.el" (20763 30266 231060 0)) ;;; Generated autoloads from locate.el (defvar locate-ls-subdir-switches (purecopy "-al") "\ @@ -16939,8 +16897,8 @@ except that FILTER is not optional. ;;;*** -;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (20586 48936 -;;;;;; 135199 0)) +;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (20721 17977 +;;;;;; 14204 0)) ;;; Generated autoloads from vc/log-edit.el (autoload 'log-edit "log-edit" "\ @@ -16971,8 +16929,8 @@ done. Otherwise, it uses the current buffer. ;;;*** -;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20515 -;;;;;; 36389 544939 0)) +;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from vc/log-view.el (autoload 'log-view-mode "log-view" "\ @@ -16983,8 +16941,8 @@ Major mode for browsing CVS log output. ;;;*** ;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer -;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (20476 -;;;;;; 31768 298871 0)) +;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from lpr.el (defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\ @@ -17080,7 +17038,7 @@ for further customization of the printer command. ;;;*** ;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from ls-lisp.el (defvar ls-lisp-support-shell-wildcards t "\ @@ -17091,8 +17049,8 @@ Otherwise they are treated as Emacs regexps (for backward compatibility).") ;;;*** -;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (20566 -;;;;;; 63671 243798 0)) +;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from calendar/lunar.el (autoload 'lunar-phases "lunar" "\ @@ -17106,8 +17064,8 @@ This function is suitable for execution in an init file. ;;;*** -;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (20665 -;;;;;; 59189 799105 0)) +;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from progmodes/m4-mode.el (autoload 'm4-mode "m4-mode" "\ @@ -17118,7 +17076,7 @@ A major mode to edit m4 macro files. ;;;*** ;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro -;;;;;; name-last-kbd-macro) "macros" "macros.el" (20355 10021 546955 +;;;;;; name-last-kbd-macro) "macros" "macros.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from macros.el @@ -17208,7 +17166,7 @@ and then select the region of un-tablified names and use ;;;*** ;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr" -;;;;;; "mail/mail-extr.el" (20355 10021 546955 0)) +;;;;;; "mail/mail-extr.el" (20709 26818 907104 0)) ;;; Generated autoloads from mail/mail-extr.el (autoload 'mail-extract-address-components "mail-extr" "\ @@ -17240,7 +17198,7 @@ Convert mail domain DOMAIN to the country it corresponds to. ;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history ;;;;;; mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el" -;;;;;; (20566 63671 243798 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from mail/mail-hist.el (autoload 'mail-hist-define-keys "mail-hist" "\ @@ -17272,7 +17230,7 @@ This function normally would be called when the message is sent. ;;;### (autoloads (mail-fetch-field mail-unquote-printable-region ;;;;;; mail-unquote-printable mail-quote-printable-region mail-quote-printable ;;;;;; mail-file-babyl-p mail-dont-reply-to-names mail-use-rfc822) -;;;;;; "mail-utils" "mail/mail-utils.el" (20355 10021 546955 0)) +;;;;;; "mail-utils" "mail/mail-utils.el" (20709 26818 907104 0)) ;;; Generated autoloads from mail/mail-utils.el (defvar mail-use-rfc822 nil "\ @@ -17347,8 +17305,8 @@ matches may be returned from the message body. ;;;*** ;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup -;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (20672 -;;;;;; 32446 100992 0)) +;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from mail/mailabbrev.el (defvar mail-abbrevs-mode nil "\ @@ -17399,7 +17357,7 @@ double-quotes. ;;;### (autoloads (mail-complete mail-completion-at-point-function ;;;;;; define-mail-alias expand-mail-aliases mail-complete-style) -;;;;;; "mailalias" "mail/mailalias.el" (20577 33959 40183 0)) +;;;;;; "mailalias" "mail/mailalias.el" (20709 26818 907104 0)) ;;; Generated autoloads from mail/mailalias.el (defvar mail-complete-style 'angles "\ @@ -17453,7 +17411,7 @@ current header, calls `mail-complete-function' and passes prefix ARG if any. ;;;*** ;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from mail/mailclient.el (autoload 'mailclient-send-it "mailclient" "\ @@ -17467,7 +17425,7 @@ The mail client is taken to be the handler of mailto URLs. ;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode ;;;;;; makefile-gmake-mode makefile-automake-mode makefile-mode) -;;;;;; "make-mode" "progmodes/make-mode.el" (20665 59189 799105 +;;;;;; "make-mode" "progmodes/make-mode.el" (20748 62911 684442 ;;;;;; 0)) ;;; Generated autoloads from progmodes/make-mode.el @@ -17585,8 +17543,8 @@ An adapted `makefile-mode' that knows about imake. ;;;*** -;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from makesum.el (autoload 'make-command-summary "makesum" "\ @@ -17598,7 +17556,7 @@ Previous contents of that buffer are killed first. ;;;*** ;;;### (autoloads (Man-bookmark-jump man-follow man) "man" "man.el" -;;;;;; (20523 62082 997685 0)) +;;;;;; (20762 9398 526093 0)) ;;; Generated autoloads from man.el (defalias 'manual-entry 'man) @@ -17652,8 +17610,8 @@ Default bookmark handler for Man buffers. ;;;*** -;;;### (autoloads (master-mode) "master" "master.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (master-mode) "master" "master.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from master.el (autoload 'master-mode "master" "\ @@ -17676,7 +17634,7 @@ yourself the value of `master-of' by calling `master-show-slave'. ;;;*** ;;;### (autoloads (minibuffer-depth-indicate-mode) "mb-depth" "mb-depth.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from mb-depth.el (defvar minibuffer-depth-indicate-mode nil "\ @@ -17709,7 +17667,7 @@ recursion depth in the minibuffer prompt. This is only useful if ;;;;;; message-forward-make-body message-forward message-recover ;;;;;; message-supersede message-cancel-news message-followup message-wide-reply ;;;;;; message-reply message-news message-mail message-mode) "message" -;;;;;; "gnus/message.el" (20698 56506 332830 0)) +;;;;;; "gnus/message.el" (20723 59703 12265 0)) ;;; Generated autoloads from gnus/message.el (define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook) @@ -17875,7 +17833,7 @@ which specify the range to operate on. ;;;*** ;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el" -;;;;;; (20399 35365 4050 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/meta-mode.el (autoload 'metafont-mode "meta-mode" "\ @@ -17892,7 +17850,7 @@ Major mode for editing MetaPost sources. ;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body ;;;;;; metamail-interpret-header) "metamail" "mail/metamail.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from mail/metamail.el (autoload 'metamail-interpret-header "metamail" "\ @@ -17937,7 +17895,7 @@ redisplayed as output is inserted. ;;;### (autoloads (mh-fully-kill-draft mh-send-letter mh-user-agent-compose ;;;;;; mh-smail-batch mh-smail-other-window mh-smail) "mh-comp" -;;;;;; "mh-e/mh-comp.el" (20659 20411 59719 0)) +;;;;;; "mh-e/mh-comp.el" (20709 26818 907104 0)) ;;; Generated autoloads from mh-e/mh-comp.el (autoload 'mh-smail "mh-comp" "\ @@ -18027,8 +17985,8 @@ delete the draft message. ;;;*** -;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (20673 53308 -;;;;;; 39372 0)) +;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from mh-e/mh-e.el (put 'mh-progs 'risky-local-variable t) @@ -18045,7 +18003,7 @@ Display version information about MH-E and the MH mail handling system. ;;;*** ;;;### (autoloads (mh-folder-mode mh-nmail mh-rmail) "mh-folder" -;;;;;; "mh-e/mh-folder.el" (20659 20411 59719 0)) +;;;;;; "mh-e/mh-folder.el" (20709 26818 907104 0)) ;;; Generated autoloads from mh-e/mh-folder.el (autoload 'mh-rmail "mh-folder" "\ @@ -18127,7 +18085,7 @@ perform the operation on all messages in that region. ;;;*** ;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight" -;;;;;; "midnight.el" (20478 3673 653810 0)) +;;;;;; "midnight.el" (20709 26818 907104 0)) ;;; Generated autoloads from midnight.el (autoload 'clean-buffer-list "midnight" "\ @@ -18154,7 +18112,7 @@ to its second argument TM. ;;;*** ;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef" -;;;;;; "minibuf-eldef.el" (20672 32446 100992 0)) +;;;;;; "minibuf-eldef.el" (20760 54070 584283 0)) ;;; Generated autoloads from minibuf-eldef.el (defvar minibuffer-electric-default-mode nil "\ @@ -18184,7 +18142,7 @@ is modified to remove the default indication. ;;;*** ;;;### (autoloads (list-dynamic-libraries butterfly) "misc" "misc.el" -;;;;;; (20533 5993 500881 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from misc.el (autoload 'butterfly "misc" "\ @@ -18214,7 +18172,7 @@ The return value is always nil. ;;;### (autoloads (multi-isearch-files-regexp multi-isearch-files ;;;;;; multi-isearch-buffers-regexp multi-isearch-buffers multi-isearch-setup) -;;;;;; "misearch" "misearch.el" (20490 33188 850375 0)) +;;;;;; "misearch" "misearch.el" (20721 17977 14204 0)) ;;; Generated autoloads from misearch.el (add-hook 'isearch-mode-hook 'multi-isearch-setup) @@ -18233,7 +18191,7 @@ end of the search space). The first argument of this function is the current buffer where the search is currently searching. It defines the base buffer relative to which this function should find the next buffer. When the isearch -direction is backward (when `isearch-forward' is nil), this function +direction is backward (when option `isearch-forward' is nil), this function should return the previous buffer to search. If the second argument of this function WRAP is non-nil, then it @@ -18296,7 +18254,7 @@ whose file names match the specified wildcard. ;;;*** ;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el" -;;;;;; (20566 63671 243798 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/mixal-mode.el (autoload 'mixal-mode "mixal-mode" "\ @@ -18307,7 +18265,7 @@ Major mode for the mixal asm language. ;;;*** ;;;### (autoloads (mm-default-file-encoding) "mm-encode" "gnus/mm-encode.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/mm-encode.el (autoload 'mm-default-file-encoding "mm-encode" "\ @@ -18318,7 +18276,7 @@ Return a default encoding for FILE. ;;;*** ;;;### (autoloads (mm-inline-external-body mm-extern-cache-contents) -;;;;;; "mm-extern" "gnus/mm-extern.el" (20355 10021 546955 0)) +;;;;;; "mm-extern" "gnus/mm-extern.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/mm-extern.el (autoload 'mm-extern-cache-contents "mm-extern" "\ @@ -18337,7 +18295,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing. ;;;*** ;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/mm-partial.el (autoload 'mm-inline-partial "mm-partial" "\ @@ -18351,7 +18309,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing. ;;;*** ;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents) -;;;;;; "mm-url" "gnus/mm-url.el" (20495 51111 757560 0)) +;;;;;; "mm-url" "gnus/mm-url.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/mm-url.el (autoload 'mm-url-insert-file-contents "mm-url" "\ @@ -18368,7 +18326,7 @@ Insert file contents of URL using `mm-url-program'. ;;;*** ;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu" -;;;;;; "gnus/mm-uu.el" (20355 10021 546955 0)) +;;;;;; "gnus/mm-uu.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/mm-uu.el (autoload 'mm-uu-dissect "mm-uu" "\ @@ -18388,7 +18346,7 @@ Assume text has been decoded if DECODED is non-nil. ;;;*** ;;;### (autoloads (mml-attach-file mml-to-mime) "mml" "gnus/mml.el" -;;;;;; (20567 23165 75548 0)) +;;;;;; (20745 310 425822 0)) ;;; Generated autoloads from gnus/mml.el (autoload 'mml-to-mime "mml" "\ @@ -18414,7 +18372,7 @@ body) or \"attachment\" (separate from the body). ;;;*** ;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/mml1991.el (autoload 'mml1991-encrypt "mml1991" "\ @@ -18431,7 +18389,7 @@ body) or \"attachment\" (separate from the body). ;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt ;;;;;; mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt) -;;;;;; "mml2015" "gnus/mml2015.el" (20701 32695 861936 0)) +;;;;;; "mml2015" "gnus/mml2015.el" (20780 39352 990623 0)) ;;; Generated autoloads from gnus/mml2015.el (autoload 'mml2015-decrypt "mml2015" "\ @@ -18471,8 +18429,8 @@ body) or \"attachment\" (separate from the body). ;;;*** -;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (20406 8611 -;;;;;; 875037 0)) +;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from cedet/mode-local.el (put 'define-overloadable-function 'doc-string-elt 3) @@ -18514,7 +18472,7 @@ followed by the first character of the construct. ;;;*** ;;;### (autoloads (denato-region nato-region unmorse-region morse-region) -;;;;;; "morse" "play/morse.el" (20355 10021 546955 0)) +;;;;;; "morse" "play/morse.el" (20709 26818 907104 0)) ;;; Generated autoloads from play/morse.el (autoload 'morse-region "morse" "\ @@ -18540,7 +18498,7 @@ Convert NATO phonetic alphabet in region to ordinary ASCII text. ;;;*** ;;;### (autoloads (mouse-drag-drag mouse-drag-throw) "mouse-drag" -;;;;;; "mouse-drag.el" (20566 63671 243798 0)) +;;;;;; "mouse-drag.el" (20709 26818 907104 0)) ;;; Generated autoloads from mouse-drag.el (autoload 'mouse-drag-throw "mouse-drag" "\ @@ -18587,7 +18545,7 @@ To test this function, evaluate: ;;;*** -;;;### (autoloads (mpc) "mpc" "mpc.el" (20681 1859 197031 0)) +;;;### (autoloads (mpc) "mpc" "mpc.el" (20709 26818 907104 0)) ;;; Generated autoloads from mpc.el (autoload 'mpc "mpc" "\ @@ -18597,7 +18555,7 @@ Main entry point for MPC. ;;;*** -;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20545 57511 257469 +;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from play/mpuz.el @@ -18608,7 +18566,7 @@ Multiplication puzzle with GNU Emacs. ;;;*** -;;;### (autoloads (msb-mode) "msb" "msb.el" (20476 31768 298871 0)) +;;;### (autoloads (msb-mode) "msb" "msb.el" (20709 26818 907104 0)) ;;; Generated autoloads from msb.el (defvar msb-mode nil "\ @@ -18638,7 +18596,7 @@ different buffer menu using the function `msb'. ;;;;;; describe-current-coding-system describe-current-coding-system-briefly ;;;;;; describe-coding-system describe-character-set list-charset-chars ;;;;;; read-charset list-character-sets) "mule-diag" "international/mule-diag.el" -;;;;;; (20577 33959 40183 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from international/mule-diag.el (autoload 'list-character-sets "mule-diag" "\ @@ -18775,7 +18733,7 @@ The default is 20. If LIMIT is negative, do not limit the listing. ;;;;;; coding-system-translation-table-for-decode coding-system-pre-write-conversion ;;;;;; coding-system-post-read-conversion lookup-nested-alist set-nested-alist ;;;;;; truncate-string-to-width store-substring) "mule-util" "international/mule-util.el" -;;;;;; (20577 33959 40183 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from international/mule-util.el (defsubst string-to-list (string) "\ @@ -18908,7 +18866,7 @@ per-character basis, this may not be accurate. ;;;### (autoloads (advice-member-p advice-remove advice-add advice--add-function ;;;;;; add-function advice--buffer-local advice--remove-function) -;;;;;; "nadvice" "emacs-lisp/nadvice.el" (20651 26294 774003 0)) +;;;;;; "nadvice" "emacs-lisp/nadvice.el" (20725 15032 264919 0)) ;;; Generated autoloads from emacs-lisp/nadvice.el (autoload 'advice--remove-function "nadvice" "\ @@ -18986,8 +18944,8 @@ of the piece of advice. ;;;### (autoloads (network-connection network-connection-to-service ;;;;;; whois-reverse-lookup whois finger ftp run-dig dns-lookup-host ;;;;;; nslookup nslookup-host ping traceroute route arp netstat -;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (20355 -;;;;;; 10021 546955 0)) +;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (20784 +;;;;;; 36406 653593 0)) ;;; Generated autoloads from net/net-utils.el (autoload 'ifconfig "net-utils" "\ @@ -19081,8 +19039,8 @@ Open a network connection to HOST on PORT. ;;;*** -;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (20495 -;;;;;; 51111 757560 0)) +;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from net/netrc.el (autoload 'netrc-credentials "netrc" "\ @@ -19095,7 +19053,7 @@ listed in the PORTS list. ;;;*** ;;;### (autoloads (open-network-stream) "network-stream" "net/network-stream.el" -;;;;;; (20369 14251 85829 0)) +;;;;;; (20770 3512 176098 0)) ;;; Generated autoloads from net/network-stream.el (autoload 'open-network-stream "network-stream" "\ @@ -19186,7 +19144,7 @@ STARTTLS upgrades even if Emacs doesn't have built-in TLS functionality. ;;;*** ;;;### (autoloads (newsticker-start newsticker-running-p) "newst-backend" -;;;;;; "net/newst-backend.el" (20577 33959 40183 0)) +;;;;;; "net/newst-backend.el" (20709 26818 907104 0)) ;;; Generated autoloads from net/newst-backend.el (autoload 'newsticker-running-p "newst-backend" "\ @@ -19208,7 +19166,7 @@ Run `newsticker-start-hook' if newsticker was not running already. ;;;*** ;;;### (autoloads (newsticker-plainview) "newst-plainview" "net/newst-plainview.el" -;;;;;; (20434 17809 692608 0)) +;;;;;; (20762 9398 526093 0)) ;;; Generated autoloads from net/newst-plainview.el (autoload 'newsticker-plainview "newst-plainview" "\ @@ -19219,7 +19177,7 @@ Start newsticker plainview. ;;;*** ;;;### (autoloads (newsticker-show-news) "newst-reader" "net/newst-reader.el" -;;;;;; (20434 17809 692608 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from net/newst-reader.el (autoload 'newsticker-show-news "newst-reader" "\ @@ -19230,7 +19188,7 @@ Start reading news. You may want to bind this to a key. ;;;*** ;;;### (autoloads (newsticker-start-ticker newsticker-ticker-running-p) -;;;;;; "newst-ticker" "net/newst-ticker.el" (20427 14766 970343 +;;;;;; "newst-ticker" "net/newst-ticker.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from net/newst-ticker.el @@ -19252,7 +19210,7 @@ running already. ;;;*** ;;;### (autoloads (newsticker-treeview) "newst-treeview" "net/newst-treeview.el" -;;;;;; (20590 45996 129575 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from net/newst-treeview.el (autoload 'newsticker-treeview "newst-treeview" "\ @@ -19263,7 +19221,7 @@ Start newsticker treeview. ;;;*** ;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el" -;;;;;; (20614 54428 654267 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/nndiary.el (autoload 'nndiary-generate-nov-databases "nndiary" "\ @@ -19273,8 +19231,8 @@ Generate NOV databases in all nndiary directories. ;;;*** -;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from gnus/nndoc.el (autoload 'nndoc-add-type "nndoc" "\ @@ -19289,7 +19247,7 @@ symbol in the alist. ;;;*** ;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el" -;;;;;; (20704 8885 590749 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/nnfolder.el (autoload 'nnfolder-generate-active-file "nnfolder" "\ @@ -19301,7 +19259,7 @@ This command does not work if you use short group names. ;;;*** ;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el" -;;;;;; (20458 56750 651721 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/nnml.el (autoload 'nnml-generate-nov-databases "nnml" "\ @@ -19312,7 +19270,7 @@ Generate NOV databases in all nnml directories. ;;;*** ;;;### (autoloads (disable-command enable-command disabled-command-function) -;;;;;; "novice" "novice.el" (20675 8629 685250 0)) +;;;;;; "novice" "novice.el" (20709 26818 907104 0)) ;;; Generated autoloads from novice.el (define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1") @@ -19345,7 +19303,7 @@ future sessions. ;;;*** ;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/nroff-mode.el (autoload 'nroff-mode "nroff-mode" "\ @@ -19360,7 +19318,7 @@ closing requests for requests that are used in matched pairs. ;;;*** ;;;### (autoloads (nxml-glyph-display-string) "nxml-glyph" "nxml/nxml-glyph.el" -;;;;;; (20523 62082 997685 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from nxml/nxml-glyph.el (autoload 'nxml-glyph-display-string "nxml-glyph" "\ @@ -19372,8 +19330,8 @@ Return nil if the face cannot display a glyph for N. ;;;*** -;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (20478 -;;;;;; 3673 653810 0)) +;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (20763 +;;;;;; 30266 231060 0)) ;;; Generated autoloads from nxml/nxml-mode.el (autoload 'nxml-mode "nxml-mode" "\ @@ -19435,7 +19393,7 @@ Many aspects this mode can be customized using ;;;*** ;;;### (autoloads (nxml-enable-unicode-char-name-sets) "nxml-uchnm" -;;;;;; "nxml/nxml-uchnm.el" (20355 10021 546955 0)) +;;;;;; "nxml/nxml-uchnm.el" (20709 26818 907104 0)) ;;; Generated autoloads from nxml/nxml-uchnm.el (autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\ @@ -19448,7 +19406,7 @@ the variable `nxml-enabled-unicode-blocks'. ;;;*** ;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/octave-inf.el (autoload 'inferior-octave "octave-inf" "\ @@ -19471,7 +19429,7 @@ startup file, `~/.emacs-octave'. ;;;*** ;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el" -;;;;;; (20672 32446 100992 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/octave-mod.el (autoload 'octave-mode "octave-mod" "\ @@ -19553,13 +19511,61 @@ including a reproducible test case and send the message. ;;;*** +;;;### (autoloads (opascal-mode) "opascal" "progmodes/opascal.el" +;;;;;; (20746 21181 635406 0)) +;;; Generated autoloads from progmodes/opascal.el + +(define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4") + +(autoload 'opascal-mode "opascal" "\ +Major mode for editing OPascal code. \\<opascal-mode-map> +\\[opascal-find-unit] - Search for a OPascal source file. +\\[opascal-fill-comment] - Fill the current comment. +\\[opascal-new-comment-line] - If in a // comment, do a new comment line. + +\\[indent-region] also works for indenting a whole region. + +Customization: + + `opascal-indent-level' (default 3) + Indentation of OPascal statements with respect to containing block. + `opascal-compound-block-indent' (default 0) + Extra indentation for blocks in compound statements. + `opascal-case-label-indent' (default 0) + Extra indentation for case statement labels. + `opascal-tab-always-indents' (default `tab-always-indents') + Non-nil means TAB in OPascal mode should always reindent the current line, + regardless of where in the line point is when the TAB command is used. + `opascal-search-path' (default .) + Directories to search when finding external units. + `opascal-verbose' (default nil) + If true then OPascal token processing progress is reported to the user. + +Coloring: + + `opascal-comment-face' (default font-lock-comment-face) + Face used to color OPascal comments. + `opascal-string-face' (default font-lock-string-face) + Face used to color OPascal strings. + `opascal-keyword-face' (default font-lock-keyword-face) + Face used to color OPascal keywords. + `opascal-other-face' (default nil) + Face used to color everything else. + +Turning on OPascal mode calls the value of the variable `opascal-mode-hook' +with no args, if that value is non-nil. + +\(fn)" t nil) + +;;;*** + ;;;### (autoloads (org-customize org-reload org-submit-bug-report ;;;;;; org-cycle-agenda-files org-switchb org-open-link-from-string ;;;;;; org-open-at-point-global org-insert-link-global org-store-link ;;;;;; org-run-like-in-org-mode turn-on-orgstruct++ turn-on-orgstruct ;;;;;; orgstruct-mode org-global-cycle org-cycle org-mode org-clock-persistence-insinuate ;;;;;; turn-on-orgtbl org-version org-babel-do-load-languages) "org" -;;;;;; "org/org.el" (20681 47415 473102 0)) +;;;;;; "org/org.el" (20783 15545 430927 0)) ;;; Generated autoloads from org/org.el (autoload 'org-babel-do-load-languages "org" "\ @@ -19785,7 +19791,7 @@ Call the customize function with org as argument. ;;;;;; org-search-view org-agenda-list org-batch-store-agenda-views ;;;;;; org-store-agenda-views org-batch-agenda-csv org-batch-agenda ;;;;;; org-agenda org-toggle-sticky-agenda) "org-agenda" "org/org-agenda.el" -;;;;;; (20681 47415 473102 0)) +;;;;;; (20783 15545 430927 0)) ;;; Generated autoloads from org/org-agenda.el (autoload 'org-toggle-sticky-agenda "org-agenda" "\ @@ -20034,7 +20040,7 @@ By default `org-agenda-to-appt' will use :deadline, :scheduled and :timestamp entries. See the docstring of `org-diary' for details and examples. -If an entry as a APPT_WARNTIME property, its value will be used +If an entry has a APPT_WARNTIME property, its value will be used to override `appt-message-warning-time'. \(fn &optional REFRESH FILTER &rest ARGS)" t nil) @@ -20042,7 +20048,7 @@ to override `appt-message-warning-time'. ;;;*** ;;;### (autoloads (org-beamer-mode org-beamer-sectioning) "org-beamer" -;;;;;; "org/org-beamer.el" (20618 55210 422086 0)) +;;;;;; "org/org-beamer.el" (20709 26818 907104 0)) ;;; Generated autoloads from org/org-beamer.el (autoload 'org-beamer-sectioning "org-beamer" "\ @@ -20064,8 +20070,8 @@ Special support for editing Org-mode files made to export to beamer. ;;;*** ;;;### (autoloads (org-capture-import-remember-templates org-capture -;;;;;; org-capture-string) "org-capture" "org/org-capture.el" (20618 -;;;;;; 55210 422086 0)) +;;;;;; org-capture-string) "org-capture" "org/org-capture.el" (20723 +;;;;;; 59703 12265 0)) ;;; Generated autoloads from org/org-capture.el (autoload 'org-capture-string "org-capture" "\ @@ -20106,8 +20112,8 @@ Set org-capture-templates to be similar to `org-remember-templates'. ;;;*** ;;;### (autoloads (org-agenda-columns org-insert-columns-dblock org-dblock-write:columnview -;;;;;; org-columns) "org-colview" "org/org-colview.el" (20618 55210 -;;;;;; 422086 0)) +;;;;;; org-columns) "org-colview" "org/org-colview.el" (20717 20920 +;;;;;; 410005 0)) ;;; Generated autoloads from org/org-colview.el (autoload 'org-columns "org-colview" "\ @@ -20151,7 +20157,7 @@ Turn on or update column view in the agenda. ;;;*** ;;;### (autoloads (org-check-version) "org-compat" "org/org-compat.el" -;;;;;; (20618 55210 422086 0)) +;;;;;; (20723 59703 12265 0)) ;;; Generated autoloads from org/org-compat.el (autoload 'org-check-version "org-compat" "\ @@ -20162,7 +20168,7 @@ Try very hard to provide sensible version strings. ;;;*** ;;;### (autoloads (org-git-version org-release) "org-version" "org/org-version.el" -;;;;;; (20681 47415 473102 0)) +;;;;;; (20783 15545 430927 0)) ;;; Generated autoloads from org/org-version.el (autoload 'org-release "org-version" "\ @@ -20183,7 +20189,7 @@ The location of ODT styles.") ;;;*** ;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20773 35190 350513 0)) ;;; Generated autoloads from outline.el (put 'outline-regexp 'safe-local-variable 'stringp) (put 'outline-heading-end-regexp 'safe-local-variable 'stringp) @@ -20247,7 +20253,7 @@ See the command `outline-mode' for more information on this mode. ;;;### (autoloads (list-packages describe-package package-initialize ;;;;;; package-refresh-contents package-install-file package-install-from-buffer ;;;;;; package-install package-enable-at-startup) "package" "emacs-lisp/package.el" -;;;;;; (20705 29751 556330 0)) +;;;;;; (20764 51137 83502 0)) ;;; Generated autoloads from emacs-lisp/package.el (defvar package-enable-at-startup t "\ @@ -20317,8 +20323,8 @@ The list is displayed in a buffer named `*Packages*'. ;;;*** -;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20542 50478 -;;;;;; 439878 507000)) +;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20738 27061 +;;;;;; 124069 0)) ;;; Generated autoloads from paren.el (defvar show-paren-mode nil "\ @@ -20345,7 +20351,7 @@ matching parenthesis is highlighted in `show-paren-style' after ;;;*** ;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el" -;;;;;; (20478 3673 653810 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from calendar/parse-time.el (put 'parse-time-rules 'risky-local-variable t) @@ -20358,8 +20364,8 @@ unknown are returned as nil. ;;;*** -;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (20478 -;;;;;; 3673 653810 0)) +;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (20746 +;;;;;; 21181 635406 0)) ;;; Generated autoloads from progmodes/pascal.el (autoload 'pascal-mode "pascal" "\ @@ -20412,7 +20418,8 @@ no args, if that value is non-nil. ;;;*** ;;;### (autoloads (password-in-cache-p password-cache-expiry password-cache) -;;;;;; "password-cache" "password-cache.el" (20577 33959 40183 0)) +;;;;;; "password-cache" "password-cache.el" (20709 26818 907104 +;;;;;; 0)) ;;; Generated autoloads from password-cache.el (defvar password-cache t "\ @@ -20434,7 +20441,7 @@ Check if KEY is in the cache. ;;;*** ;;;### (autoloads (pcase-let pcase-let* pcase) "pcase" "emacs-lisp/pcase.el" -;;;;;; (20582 12914 894781 0)) +;;;;;; (20717 20920 410005 0)) ;;; Generated autoloads from emacs-lisp/pcase.el (autoload 'pcase "pcase" "\ @@ -20495,8 +20502,8 @@ of the form (UPAT EXP). ;;;*** -;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from pcmpl-cvs.el (autoload 'pcomplete/cvs "pcmpl-cvs" "\ @@ -20507,7 +20514,7 @@ Completion rules for the `cvs' command. ;;;*** ;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip) -;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (20572 16038 402143 0)) +;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (20709 26818 907104 0)) ;;; Generated autoloads from pcmpl-gnu.el (autoload 'pcomplete/gzip "pcmpl-gnu" "\ @@ -20535,7 +20542,7 @@ Completion for the GNU tar utility. ;;;*** ;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill) -;;;;;; "pcmpl-linux" "pcmpl-linux.el" (20355 10021 546955 0)) +;;;;;; "pcmpl-linux" "pcmpl-linux.el" (20709 26818 907104 0)) ;;; Generated autoloads from pcmpl-linux.el (autoload 'pcomplete/kill "pcmpl-linux" "\ @@ -20555,8 +20562,8 @@ Completion for GNU/Linux `mount'. ;;;*** -;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20523 -;;;;;; 62082 997685 0)) +;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from pcmpl-rpm.el (autoload 'pcomplete/rpm "pcmpl-rpm" "\ @@ -20568,7 +20575,7 @@ Completion for the `rpm' command. ;;;### (autoloads (pcomplete/scp pcomplete/ssh pcomplete/chgrp pcomplete/chown ;;;;;; pcomplete/which pcomplete/xargs pcomplete/rm pcomplete/rmdir -;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (20376 40834 914217 +;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from pcmpl-unix.el @@ -20626,8 +20633,8 @@ Includes files as well as host names followed by a colon. ;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list ;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete -;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20652 -;;;;;; 47164 970964 0)) +;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from pcomplete.el (autoload 'pcomplete "pcomplete" "\ @@ -20686,7 +20693,7 @@ Setup `shell-mode' to use pcomplete. ;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status ;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs" -;;;;;; "vc/pcvs.el" (20584 7212 455152 0)) +;;;;;; "vc/pcvs.el" (20717 20920 410005 0)) ;;; Generated autoloads from vc/pcvs.el (autoload 'cvs-checkout "pcvs" "\ @@ -20761,8 +20768,8 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d ;;;*** -;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (20576 42138 -;;;;;; 697312 0)) +;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from vc/pcvs-defs.el (defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help ,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] `(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check out a module from the repository"))) (define-key m [update] `(menu-item ,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from the repository"))) (define-key m [examine] `(menu-item ,(purecopy "Examine Directory") cvs-examine :help ,(purecopy "Examine the current state of a workarea"))) (fset 'cvs-global-menu m)) "\ @@ -20771,7 +20778,7 @@ Global menu used by PCL-CVS.") ;;;*** ;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el" -;;;;;; (20665 59189 799105 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/perl-mode.el (put 'perl-indent-level 'safe-local-variable 'integerp) (put 'perl-continued-statement-offset 'safe-local-variable 'integerp) @@ -20833,7 +20840,7 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'. ;;;*** ;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el" -;;;;;; (20551 9899 283417 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/picture.el (autoload 'picture-mode "picture" "\ @@ -20914,7 +20921,7 @@ they are not by default assigned to keys. ;;;*** ;;;### (autoloads (plstore-mode plstore-open) "plstore" "gnus/plstore.el" -;;;;;; (20700 11832 779612 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/plstore.el (autoload 'plstore-open "plstore" "\ @@ -20930,7 +20937,7 @@ Major mode for editing PLSTORE files. ;;;*** ;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/po.el (autoload 'po-find-file-coding-system "po" "\ @@ -20941,7 +20948,7 @@ Called through `file-coding-system-alist', before the file is visited for real. ;;;*** -;;;### (autoloads (pong) "pong" "play/pong.el" (20478 3673 653810 +;;;### (autoloads (pong) "pong" "play/pong.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from play/pong.el @@ -20958,8 +20965,8 @@ pong-mode keybindings:\\<pong-mode-map> ;;;*** -;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (20643 32183 -;;;;;; 554981 0)) +;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from gnus/pop3.el (autoload 'pop3-movemail "pop3" "\ @@ -20972,7 +20979,7 @@ Use streaming commands. ;;;### (autoloads (pp-macroexpand-last-sexp pp-eval-last-sexp pp-macroexpand-expression ;;;;;; pp-eval-expression pp pp-buffer pp-to-string) "pp" "emacs-lisp/pp.el" -;;;;;; (20495 51111 757560 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/pp.el (autoload 'pp-to-string "pp" "\ @@ -21040,7 +21047,7 @@ Ignores leading comment characters. ;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview ;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript ;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el" -;;;;;; (20648 50109 802321 0)) +;;;;;; (20721 17977 14204 0)) ;;; Generated autoloads from printing.el (autoload 'pr-interface "printing" "\ @@ -21627,7 +21634,7 @@ are both set to t. ;;;*** -;;;### (autoloads (proced) "proced" "proced.el" (20593 22184 581574 +;;;### (autoloads (proced) "proced" "proced.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from proced.el @@ -21648,7 +21655,7 @@ Proced buffers. ;;;### (autoloads (profiler-find-profile-other-frame profiler-find-profile-other-window ;;;;;; profiler-find-profile profiler-start) "profiler" "profiler.el" -;;;;;; (20650 54468 205452 950000)) +;;;;;; (20752 27211 244736 501000)) ;;; Generated autoloads from profiler.el (autoload 'profiler-start "profiler" "\ @@ -21677,7 +21684,7 @@ Open profile FILENAME. ;;;*** ;;;### (autoloads (run-prolog mercury-mode prolog-mode) "prolog" -;;;;;; "progmodes/prolog.el" (20576 42138 697312 0)) +;;;;;; "progmodes/prolog.el" (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/prolog.el (autoload 'prolog-mode "prolog" "\ @@ -21712,8 +21719,8 @@ With prefix argument ARG, restart the Prolog process if running before. ;;;*** -;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (20652 -;;;;;; 47164 970964 0)) +;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from ps-bdf.el (defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list (expand-file-name "fonts/bdf" installation-directory)) '("/usr/local/share/emacs/fonts/bdf")) "\ @@ -21724,8 +21731,8 @@ The default value is '(\"/usr/local/share/emacs/fonts/bdf\").") ;;;*** -;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (20576 -;;;;;; 42138 697312 0)) +;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (20777 +;;;;;; 63161 848428 0)) ;;; Generated autoloads from progmodes/ps-mode.el (autoload 'ps-mode "ps-mode" "\ @@ -21776,8 +21783,8 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the cursor is at the number ;;;;;; ps-spool-region ps-spool-buffer-with-faces ps-spool-buffer ;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces ;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type -;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (20566 -;;;;;; 63671 243798 0)) +;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (20721 +;;;;;; 17977 14204 0)) ;;; Generated autoloads from ps-print.el (defvar ps-page-dimensions-database (purecopy (list (list 'a4 (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list 'a3 (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list 'letter (* 72 8.5) (* 72 11.0) "Letter") (list 'legal (* 72 8.5) (* 72 14.0) "Legal") (list 'letter-small (* 72 7.68) (* 72 10.16) "LetterSmall") (list 'tabloid (* 72 11.0) (* 72 17.0) "Tabloid") (list 'ledger (* 72 17.0) (* 72 11.0) "Ledger") (list 'statement (* 72 5.5) (* 72 8.5) "Statement") (list 'executive (* 72 7.5) (* 72 10.0) "Executive") (list 'a4small (* 72 7.47) (* 72 10.85) "A4Small") (list 'b4 (* 72 10.125) (* 72 14.33) "B4") (list 'b5 (* 72 7.16) (* 72 10.125) "B5") '(addresslarge 236.0 99.0 "AddressLarge") '(addresssmall 236.0 68.0 "AddressSmall") '(cuthanging13 90.0 222.0 "CutHanging13") '(cuthanging15 90.0 114.0 "CutHanging15") '(diskette 181.0 136.0 "Diskette") '(eurofilefolder 139.0 112.0 "EuropeanFilefolder") '(eurofoldernarrow 526.0 107.0 "EuroFolderNarrow") '(eurofolderwide 526.0 136.0 "EuroFolderWide") '(euronamebadge 189.0 108.0 "EuroNameBadge") '(euronamebadgelarge 223.0 136.0 "EuroNameBadgeLarge") '(filefolder 230.0 37.0 "FileFolder") '(jewelry 76.0 136.0 "Jewelry") '(mediabadge 180.0 136.0 "MediaBadge") '(multipurpose 126.0 68.0 "MultiPurpose") '(retaillabel 90.0 104.0 "RetailLabel") '(shipping 271.0 136.0 "Shipping") '(slide35mm 26.0 104.0 "Slide35mm") '(spine8mm 187.0 26.0 "Spine8mm") '(topcoated 425.19685 136.0 "TopCoatedPaper") '(topcoatedpaper 396.0 136.0 "TopcoatedPaper150") '(vhsface 205.0 127.0 "VHSFace") '(vhsspine 400.0 50.0 "VHSSpine") '(zipdisk 156.0 136.0 "ZipDisk"))) "\ @@ -21860,9 +21867,9 @@ Use the command `ps-despool' to send the spooled images to the printer. (autoload 'ps-spool-buffer-with-faces "ps-print" "\ Generate and spool a PostScript image of the buffer. -Like `ps-spool-buffer', but includes font, color, and underline information in -the generated image. This command works only if you are using a window system, -so it has a way to determine color values. +Like the command `ps-spool-buffer', but includes font, color, and underline +information in the generated image. This command works only if you are using +a window system, so it has a way to determine color values. Use the command `ps-despool' to send the spooled images to the printer. @@ -21974,7 +21981,7 @@ If EXTENSION is any other symbol, it is ignored. ;;;*** ;;;### (autoloads (python-mode run-python) "python" "progmodes/python.el" -;;;;;; (20704 8885 590749 0)) +;;;;;; (20774 51843 230245 0)) ;;; Generated autoloads from progmodes/python.el (add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode)) @@ -22010,7 +22017,7 @@ if that value is non-nil. ;;;*** ;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el" -;;;;;; (20557 48712 315579 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/qp.el (autoload 'quoted-printable-decode-region "qp" "\ @@ -22033,7 +22040,7 @@ them into characters should be done separately. ;;;;;; quail-defrule quail-install-decode-map quail-install-map ;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout ;;;;;; quail-define-package quail-use-package quail-title) "quail" -;;;;;; "international/quail.el" (20523 62082 997685 0)) +;;;;;; "international/quail.el" (20709 26818 907104 0)) ;;; Generated autoloads from international/quail.el (autoload 'quail-title "quail" "\ @@ -22264,8 +22271,8 @@ of each directory. ;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls ;;;;;; quickurl-browse-url-ask quickurl-browse-url quickurl-add-url -;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (20566 -;;;;;; 63671 243798 0)) +;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (20764 +;;;;;; 51137 83502 0)) ;;; Generated autoloads from net/quickurl.el (defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\ @@ -22337,7 +22344,7 @@ Display `quickurl-list' as a formatted list using `quickurl-list-mode'. ;;;*** ;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc" -;;;;;; "net/rcirc.el" (20679 5689 779225 0)) +;;;;;; "net/rcirc.el" (20770 3512 176098 0)) ;;; Generated autoloads from net/rcirc.el (autoload 'rcirc "rcirc" "\ @@ -22375,8 +22382,8 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from net/rcompile.el (autoload 'remote-compile "rcompile" "\ @@ -22388,7 +22395,7 @@ See \\[compile]. ;;;*** ;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el" -;;;;;; (20427 14766 970343 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/re-builder.el (defalias 'regexp-builder 're-builder) @@ -22406,8 +22413,8 @@ matching parts of the target buffer will be highlighted. ;;;*** -;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (20356 2211 -;;;;;; 532900 0)) +;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from recentf.el (defvar recentf-mode nil "\ @@ -22437,7 +22444,7 @@ were operated on recently. ;;;;;; string-rectangle delete-whitespace-rectangle open-rectangle ;;;;;; insert-rectangle yank-rectangle copy-rectangle-as-kill kill-rectangle ;;;;;; extract-rectangle delete-extract-rectangle delete-rectangle) -;;;;;; "rect" "rect.el" (20501 3499 284800 0)) +;;;;;; "rect" "rect.el" (20709 26818 907104 0)) ;;; Generated autoloads from rect.el (autoload 'delete-rectangle "rect" "\ @@ -22571,8 +22578,8 @@ with a prefix argument, prompt for START-AT and FORMAT. ;;;*** -;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (20478 -;;;;;; 3673 653810 0)) +;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from textmodes/refill.el (autoload 'refill-mode "refill" "\ @@ -22593,8 +22600,8 @@ For true \"word wrap\" behavior, use `visual-line-mode' instead. ;;;*** ;;;### (autoloads (reftex-reset-scanning-information reftex-mode -;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20657 65077 -;;;;;; 880084 0)) +;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20777 63161 +;;;;;; 848428 0)) ;;; Generated autoloads from textmodes/reftex.el (autoload 'turn-on-reftex "reftex" "\ @@ -22644,7 +22651,7 @@ This enforces rescanning the buffer on next use. ;;;*** ;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el" -;;;;;; (20585 28088 480237 0)) +;;;;;; (20734 30007 218637 0)) ;;; Generated autoloads from textmodes/reftex-cite.el (autoload 'reftex-citation "reftex-cite" "\ @@ -22674,7 +22681,7 @@ While entering the regexp, completion on knows citation keys is possible. ;;;*** ;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el" -;;;;;; (20585 28088 480237 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/reftex-global.el (autoload 'reftex-isearch-minor-mode "reftex-global" "\ @@ -22691,7 +22698,7 @@ With no argument, this command toggles ;;;*** ;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el" -;;;;;; (20585 28088 480237 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/reftex-index.el (autoload 'reftex-index-phrases-mode "reftex-index" "\ @@ -22724,7 +22731,7 @@ Here are all local bindings. ;;;*** ;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el" -;;;;;; (20657 65077 880084 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/reftex-parse.el (autoload 'reftex-all-document-files "reftex-parse" "\ @@ -22736,8 +22743,8 @@ of master file. ;;;*** -;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20593 -;;;;;; 22184 581574 0)) +;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20734 +;;;;;; 30007 218637 0)) ;;; Generated autoloads from textmodes/reftex-vars.el (put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) (put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) @@ -22747,7 +22754,7 @@ of master file. ;;;*** ;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el" -;;;;;; (20522 38650 757441 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/regexp-opt.el (autoload 'regexp-opt "regexp-opt" "\ @@ -22778,7 +22785,7 @@ This means the number of non-shy regexp grouping constructs ;;;### (autoloads (remember-diary-extract-entries remember-clipboard ;;;;;; remember-other-frame remember) "remember" "textmodes/remember.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20748 62911 684442 0)) ;;; Generated autoloads from textmodes/remember.el (autoload 'remember "remember" "\ @@ -22797,8 +22804,7 @@ Call `remember' in another frame. (autoload 'remember-clipboard "remember" "\ Remember the contents of the current clipboard. -Most useful for remembering things from Netscape or other X Windows -application. +Most useful for remembering things from other applications. \(fn)" t nil) @@ -22809,7 +22815,7 @@ Extract diary entries from the region. ;;;*** -;;;### (autoloads (repeat) "repeat" "repeat.el" (20614 54428 654267 +;;;### (autoloads (repeat) "repeat" "repeat.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from repeat.el @@ -22833,7 +22839,7 @@ recently executed command not bound to an input event\". ;;;*** ;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from mail/reporter.el (autoload 'reporter-submit-bug-report "reporter" "\ @@ -22865,7 +22871,7 @@ mail-sending package is used for editing and sending the message. ;;;*** ;;;### (autoloads (reposition-window) "reposition" "reposition.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from reposition.el (autoload 'reposition-window "reposition" "\ @@ -22892,7 +22898,7 @@ first comment line visible (if point is in a comment). ;;;*** ;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from reveal.el (autoload 'reveal-mode "reveal" "\ @@ -22928,7 +22934,7 @@ the mode if ARG is omitted or nil. ;;;*** ;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/ring.el (autoload 'ring-p "ring" "\ @@ -22943,8 +22949,8 @@ Make a ring that can contain SIZE elements. ;;;*** -;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (20402 11562 -;;;;;; 85788 0)) +;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from net/rlogin.el (autoload 'rlogin "rlogin" "\ @@ -22993,7 +22999,7 @@ variable. ;;;;;; rmail-secondary-file-directory rmail-primary-inbox-list rmail-highlighted-headers ;;;;;; rmail-retry-ignored-headers rmail-displayed-headers rmail-ignored-headers ;;;;;; rmail-user-mail-address-regexp rmail-movemail-variant-p rmail-spool-directory -;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20706 50624 612201 +;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20762 9398 526093 ;;;;;; 0)) ;;; Generated autoloads from mail/rmail.el @@ -23192,8 +23198,8 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server. ;;;*** ;;;### (autoloads (rmail-output-body-to-file rmail-output-as-seen -;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20530 3765 184907 -;;;;;; 0)) +;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from mail/rmailout.el (put 'rmail-output-file-alist 'risky-local-variable t) @@ -23258,7 +23264,7 @@ than appending to it. Deletes the message after writing if ;;;*** ;;;### (autoloads (rng-c-load-schema) "rng-cmpct" "nxml/rng-cmpct.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from nxml/rng-cmpct.el (autoload 'rng-c-load-schema "rng-cmpct" "\ @@ -23270,7 +23276,7 @@ Return a pattern. ;;;*** ;;;### (autoloads (rng-nxml-mode-init) "rng-nxml" "nxml/rng-nxml.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from nxml/rng-nxml.el (autoload 'rng-nxml-mode-init "rng-nxml" "\ @@ -23283,7 +23289,7 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil. ;;;*** ;;;### (autoloads (rng-validate-mode) "rng-valid" "nxml/rng-valid.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from nxml/rng-valid.el (autoload 'rng-validate-mode "rng-valid" "\ @@ -23313,8 +23319,8 @@ to use for finding the schema. ;;;*** -;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from nxml/rng-xsd.el (put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 'rng-xsd-compile) @@ -23375,7 +23381,7 @@ Start using robin package NAME, which is a string. ;;;*** ;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region -;;;;;; rot13-string rot13) "rot13" "rot13.el" (20355 10021 546955 +;;;;;; rot13-string rot13) "rot13" "rot13.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from rot13.el @@ -23414,7 +23420,7 @@ Toggle the use of ROT13 encoding for the current window. ;;;*** ;;;### (autoloads (rst-minor-mode rst-mode) "rst" "textmodes/rst.el" -;;;;;; (20594 43050 277913 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/rst.el (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode))) @@ -23445,7 +23451,7 @@ for modes derived from Text mode, like Mail mode. ;;;*** ;;;### (autoloads (ruby-mode) "ruby-mode" "progmodes/ruby-mode.el" -;;;;;; (20700 11832 779612 0)) +;;;;;; (20764 51137 83502 0)) ;;; Generated autoloads from progmodes/ruby-mode.el (autoload 'ruby-mode "ruby-mode" "\ @@ -23470,8 +23476,8 @@ The variable `ruby-indent-level' controls the amount of indentation. ;;;*** -;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from ruler-mode.el (defvar ruler-mode nil "\ @@ -23488,8 +23494,8 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20518 -;;;;;; 12580 46478 0)) +;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/rx.el (autoload 'rx-to-string "rx" "\ @@ -23800,8 +23806,8 @@ enclosed in `(and ...)'. ;;;*** -;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20577 -;;;;;; 33959 40183 0)) +;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from savehist.el (defvar savehist-mode nil "\ @@ -23833,7 +23839,7 @@ histories, which is probably undesirable. ;;;*** ;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el" -;;;;;; (20665 59189 799105 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/scheme.el (autoload 'scheme-mode "scheme" "\ @@ -23875,7 +23881,7 @@ that variable's value is a string. ;;;*** ;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/score-mode.el (autoload 'gnus-score-mode "score-mode" "\ @@ -23889,7 +23895,7 @@ This mode is an extended emacs-lisp mode. ;;;*** ;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el" -;;;;;; (20363 61861 222722 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from scroll-all.el (defvar scroll-all-mode nil "\ @@ -23915,7 +23921,7 @@ one window apply to all visible windows in the same frame. ;;;*** ;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from scroll-lock.el (autoload 'scroll-lock-mode "scroll-lock" "\ @@ -23931,7 +23937,7 @@ vertically fixed relative to window boundaries during scrolling. ;;;*** -;;;### (autoloads nil "secrets" "net/secrets.el" (20478 3673 653810 +;;;### (autoloads nil "secrets" "net/secrets.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from net/secrets.el (when (featurep 'dbusbind) @@ -23940,7 +23946,7 @@ vertically fixed relative to window boundaries during scrolling. ;;;*** ;;;### (autoloads (semantic-mode semantic-default-submodes) "semantic" -;;;;;; "cedet/semantic.el" (20617 41641 89638 0)) +;;;;;; "cedet/semantic.el" (20748 62911 684442 0)) ;;; Generated autoloads from cedet/semantic.el (defvar semantic-default-submodes '(global-semantic-idle-scheduler-mode global-semanticdb-minor-mode) "\ @@ -23997,7 +24003,7 @@ Semantic mode. ;;;*** ;;;### (autoloads (bovine-grammar-mode) "semantic/bovine/grammar" -;;;;;; "cedet/semantic/bovine/grammar.el" (20593 22184 581574 0)) +;;;;;; "cedet/semantic/bovine/grammar.el" (20709 26818 907104 0)) ;;; Generated autoloads from cedet/semantic/bovine/grammar.el (autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\ @@ -24008,7 +24014,7 @@ Major mode for editing Bovine grammars. ;;;*** ;;;### (autoloads (wisent-grammar-mode) "semantic/wisent/grammar" -;;;;;; "cedet/semantic/wisent/grammar.el" (20593 22184 581574 0)) +;;;;;; "cedet/semantic/wisent/grammar.el" (20709 26818 907104 0)) ;;; Generated autoloads from cedet/semantic/wisent/grammar.el (autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\ @@ -24026,7 +24032,7 @@ Major mode for editing Wisent grammars. ;;;;;; mail-personal-alias-file mail-default-reply-to mail-archive-file-name ;;;;;; mail-header-separator send-mail-function mail-interactive ;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style) -;;;;;; "sendmail" "mail/sendmail.el" (20614 54428 654267 0)) +;;;;;; "sendmail" "mail/sendmail.el" (20723 59703 12265 0)) ;;; Generated autoloads from mail/sendmail.el (defvar mail-from-style 'default "\ @@ -24308,8 +24314,8 @@ Like `mail' command, but display mail buffer in another frame. ;;;*** ;;;### (autoloads (server-save-buffers-kill-terminal server-mode -;;;;;; server-force-delete server-start) "server" "server.el" (20697 -;;;;;; 35643 276642 0)) +;;;;;; server-force-delete server-start) "server" "server.el" (20763 +;;;;;; 30266 231060 0)) ;;; Generated autoloads from server.el (put 'server-host 'risky-local-variable t) @@ -24376,7 +24382,7 @@ only these files will be asked to be saved. ;;;*** -;;;### (autoloads (ses-mode) "ses" "ses.el" (20673 53308 39372 0)) +;;;### (autoloads (ses-mode) "ses" "ses.el" (20709 26818 907104 0)) ;;; Generated autoloads from ses.el (autoload 'ses-mode "ses" "\ @@ -24395,7 +24401,7 @@ These are active only in the minibuffer, when entering or editing a formula: ;;;*** ;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el" -;;;;;; (20665 59189 799105 0)) +;;;;;; (20784 36406 653593 0)) ;;; Generated autoloads from textmodes/sgml-mode.el (autoload 'sgml-mode "sgml-mode" "\ @@ -24461,7 +24467,7 @@ To work around that, do: ;;;*** ;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el" -;;;;;; (20665 59189 799105 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/sh-script.el (put 'sh-shell 'safe-local-variable 'symbolp) @@ -24525,7 +24531,7 @@ with your script for an edit-interpret-debug cycle. ;;;*** ;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el" -;;;;;; (20572 16038 402143 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/shadow.el (autoload 'list-load-path-shadows "shadow" "\ @@ -24575,8 +24581,8 @@ function, `load-path-shadows-find'. ;;;*** ;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group -;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (20355 -;;;;;; 10021 546955 0)) +;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from shadowfile.el (autoload 'shadow-define-cluster "shadowfile" "\ @@ -24615,7 +24621,7 @@ Set up file shadowing. ;;;*** ;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el" -;;;;;; (20664 38325 385623 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from shell.el (defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\ @@ -24663,8 +24669,8 @@ Otherwise, one argument `-i' is passed to the shell. ;;;*** -;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20698 -;;;;;; 56506 332830 0)) +;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20768 +;;;;;; 48184 78670 0)) ;;; Generated autoloads from gnus/shr.el (autoload 'shr-insert-document "shr" "\ @@ -24677,7 +24683,7 @@ DOM should be a parse tree as generated by ;;;*** ;;;### (autoloads (sieve-upload-and-kill sieve-upload-and-bury sieve-upload -;;;;;; sieve-manage) "sieve" "gnus/sieve.el" (20487 57003 603251 +;;;;;; sieve-manage) "sieve" "gnus/sieve.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from gnus/sieve.el @@ -24704,7 +24710,7 @@ DOM should be a parse tree as generated by ;;;*** ;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el" -;;;;;; (20683 2742 588278 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/sieve-mode.el (autoload 'sieve-mode "sieve-mode" "\ @@ -24719,8 +24725,8 @@ Turning on Sieve mode runs `sieve-mode-hook'. ;;;*** -;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (20777 +;;;;;; 63161 848428 0)) ;;; Generated autoloads from progmodes/simula.el (autoload 'simula-mode "simula" "\ @@ -24769,7 +24775,7 @@ with no arguments, if that value is non-nil. ;;;*** ;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new -;;;;;; define-skeleton) "skeleton" "skeleton.el" (20541 6907 775259 +;;;;;; define-skeleton) "skeleton" "skeleton.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from skeleton.el @@ -24882,7 +24888,7 @@ symmetrical ones, and the same character twice for the others. ;;;*** ;;;### (autoloads (smerge-start-session smerge-mode smerge-ediff) -;;;;;; "smerge-mode" "vc/smerge-mode.el" (20585 28088 480237 0)) +;;;;;; "smerge-mode" "vc/smerge-mode.el" (20709 26818 907104 0)) ;;; Generated autoloads from vc/smerge-mode.el (autoload 'smerge-ediff "smerge-mode" "\ @@ -24910,7 +24916,7 @@ If no conflict maker is found, turn off `smerge-mode'. ;;;*** ;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20726 5184 974741 509000)) ;;; Generated autoloads from gnus/smiley.el (autoload 'smiley-region "smiley" "\ @@ -24928,7 +24934,7 @@ interactively. If there's no argument, do it at the current buffer. ;;;*** ;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail" -;;;;;; "mail/smtpmail.el" (20697 35643 276642 0)) +;;;;;; "mail/smtpmail.el" (20709 26818 907104 0)) ;;; Generated autoloads from mail/smtpmail.el (autoload 'smtpmail-send-it "smtpmail" "\ @@ -24943,7 +24949,7 @@ Send mail that was queued as a result of setting `smtpmail-queue-mail'. ;;;*** -;;;### (autoloads (snake) "snake" "play/snake.el" (20478 3673 653810 +;;;### (autoloads (snake) "snake" "play/snake.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from play/snake.el @@ -24968,7 +24974,7 @@ Snake mode keybindings: ;;;*** ;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el" -;;;;;; (20577 33959 40183 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from net/snmp-mode.el (autoload 'snmp-mode "snmp-mode" "\ @@ -24997,8 +25003,8 @@ then `snmpv2-mode-hook'. ;;;*** -;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (20566 -;;;;;; 63671 243798 0)) +;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from calendar/solar.el (autoload 'sunrise-sunset "solar" "\ @@ -25013,8 +25019,8 @@ This function is suitable for execution in an init file. ;;;*** -;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (20427 -;;;;;; 14766 970343 0)) +;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from play/solitaire.el (autoload 'solitaire "solitaire" "\ @@ -25091,8 +25097,8 @@ Pick your favorite shortcuts: ;;;### (autoloads (delete-duplicate-lines reverse-region sort-columns ;;;;;; sort-regexp-fields sort-fields sort-numeric-fields sort-pages -;;;;;; sort-paragraphs sort-lines sort-subr) "sort" "sort.el" (20693 -;;;;;; 38586 665915 0)) +;;;;;; sort-paragraphs sort-lines sort-subr) "sort" "sort.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from sort.el (put 'sort-fold-case 'safe-local-variable 'booleanp) @@ -25266,8 +25272,8 @@ function behaves in all respects as if it had been called interactively. ;;;*** -;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (20672 -;;;;;; 32446 100992 0)) +;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from gnus/spam.el (autoload 'spam-initialize "spam" "\ @@ -25283,7 +25289,7 @@ installed through `spam-necessary-extra-headers'. ;;;### (autoloads (spam-report-deagentize spam-report-agentize spam-report-url-to-file ;;;;;; spam-report-url-ping-mm-url spam-report-process-queue) "spam-report" -;;;;;; "gnus/spam-report.el" (20355 10021 546955 0)) +;;;;;; "gnus/spam-report.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/spam-report.el (autoload 'spam-report-process-queue "spam-report" "\ @@ -25326,7 +25332,7 @@ Spam reports will be queued with the method used when ;;;*** ;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar" -;;;;;; "speedbar.el" (20648 50109 802321 0)) +;;;;;; "speedbar.el" (20709 26818 907104 0)) ;;; Generated autoloads from speedbar.el (defalias 'speedbar 'speedbar-frame-mode) @@ -25350,8 +25356,8 @@ selected. If the speedbar frame is active, then select the attached frame. ;;;*** -;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from play/spook.el (autoload 'spook "spook" "\ @@ -25370,7 +25376,7 @@ Return a vector containing the lines from `spook-phrases-file'. ;;;;;; sql-ms sql-ingres sql-solid sql-mysql sql-sqlite sql-informix ;;;;;; sql-sybase sql-oracle sql-product-interactive sql-connect ;;;;;; sql-mode sql-add-product-keywords) "sql" "progmodes/sql.el" -;;;;;; (20683 39246 740032 0)) +;;;;;; (20725 15032 264919 0)) ;;; Generated autoloads from progmodes/sql.el (autoload 'sql-add-product-keywords "sql" "\ @@ -25833,7 +25839,7 @@ buffer. ;;;*** ;;;### (autoloads (srecode-template-mode) "srecode/srt-mode" "cedet/srecode/srt-mode.el" -;;;;;; (20642 11326 759953 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from cedet/srecode/srt-mode.el (autoload 'srecode-template-mode "srecode/srt-mode" "\ @@ -25846,7 +25852,7 @@ Major-mode for writing SRecode macros. ;;;*** ;;;### (autoloads (starttls-open-stream) "starttls" "gnus/starttls.el" -;;;;;; (20606 34222 123795 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from gnus/starttls.el (autoload 'starttls-open-stream "starttls" "\ @@ -25873,8 +25879,8 @@ GnuTLS requires a port number. ;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes ;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke ;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke -;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20593 -;;;;;; 22184 581574 0)) +;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from strokes.el (autoload 'strokes-global-set-stroke "strokes" "\ @@ -26009,7 +26015,7 @@ Studlify-case the current buffer. ;;;*** ;;;### (autoloads (global-subword-mode subword-mode) "subword" "progmodes/subword.el" -;;;;;; (20524 51365 2559 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/subword.el (autoload 'subword-mode "subword" "\ @@ -26065,7 +26071,7 @@ See `subword-mode' for more information on Subword mode. ;;;*** ;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el" -;;;;;; (20576 42138 697312 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from mail/supercite.el (autoload 'sc-cite-original "supercite" "\ @@ -26097,8 +26103,8 @@ and `sc-post-hook' is run after the guts of this function. ;;;*** -;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from t-mouse.el (define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1") @@ -26126,8 +26132,8 @@ It relies on the `gpm' daemon being activated. ;;;*** -;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from tabify.el (autoload 'untabify "tabify" "\ @@ -26162,7 +26168,7 @@ The variable `tab-width' controls the spacing of tab stops. ;;;;;; table-recognize table-insert-row-column table-insert-column ;;;;;; table-insert-row table-insert table-point-left-cell-hook ;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook) -;;;;;; "table" "textmodes/table.el" (20660 41272 835092 0)) +;;;;;; "table" "textmodes/table.el" (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/table.el (defvar table-cell-map-hook nil "\ @@ -26754,8 +26760,8 @@ converts a table into plain text without frames. It is a companion to ;;;*** -;;;### (autoloads (talk talk-connect) "talk" "talk.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (talk talk-connect) "talk" "talk.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from talk.el (autoload 'talk-connect "talk" "\ @@ -26770,8 +26776,8 @@ Connect to the Emacs talk group from the current X display or tty frame. ;;;*** -;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20585 28088 -;;;;;; 480237 0)) +;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from tar-mode.el (autoload 'tar-mode "tar-mode" "\ @@ -26795,7 +26801,7 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'. ;;;*** ;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl" -;;;;;; "progmodes/tcl.el" (20580 10161 446444 0)) +;;;;;; "progmodes/tcl.el" (20774 53405 704746 172000)) ;;; Generated autoloads from progmodes/tcl.el (autoload 'tcl-mode "tcl" "\ @@ -26843,8 +26849,8 @@ Prefix argument means invert sense of `tcl-use-smart-word-finder'. ;;;*** -;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from net/telnet.el (autoload 'telnet "telnet" "\ @@ -26870,7 +26876,7 @@ Normally input is edited in Emacs and sent a line at a time. ;;;*** ;;;### (autoloads (serial-term ansi-term term make-term) "term" "term.el" -;;;;;; (20648 50109 802321 0)) +;;;;;; (20712 3008 596088 0)) ;;; Generated autoloads from term.el (autoload 'make-term "term" "\ @@ -26913,7 +26919,7 @@ use in that buffer. ;;;*** ;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el" -;;;;;; (20580 10161 446444 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/testcover.el (autoload 'testcover-this-defun "testcover" "\ @@ -26923,8 +26929,8 @@ Start coverage on function under point. ;;;*** -;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20545 57511 -;;;;;; 257469 0)) +;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from play/tetris.el (autoload 'tetris "tetris" "\ @@ -26955,7 +26961,7 @@ tetris-mode keybindings: ;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command ;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp ;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el" -;;;;;; (20665 59189 799105 0)) +;;;;;; (20774 53405 754743 8000)) ;;; Generated autoloads from textmodes/tex-mode.el (defvar tex-shell-file-name nil "\ @@ -27257,7 +27263,7 @@ Major mode to edit DocTeX files. ;;;*** ;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer) -;;;;;; "texinfmt" "textmodes/texinfmt.el" (20434 17809 692608 0)) +;;;;;; "texinfmt" "textmodes/texinfmt.el" (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/texinfmt.el (autoload 'texinfo-format-buffer "texinfmt" "\ @@ -27297,7 +27303,7 @@ if large. You can use `Info-split' to do this manually. ;;;*** ;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote) -;;;;;; "texinfo" "textmodes/texinfo.el" (20677 50357 68628 0)) +;;;;;; "texinfo" "textmodes/texinfo.el" (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/texinfo.el (defvar texinfo-open-quote (purecopy "``") "\ @@ -27383,7 +27389,7 @@ value of `texinfo-mode-hook'. ;;;### (autoloads (thai-composition-function thai-compose-buffer ;;;;;; thai-compose-string thai-compose-region) "thai-util" "language/thai-util.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from language/thai-util.el (autoload 'thai-compose-region "thai-util" "\ @@ -27412,7 +27418,7 @@ Compose Thai characters in the current buffer. ;;;### (autoloads (list-at-point number-at-point symbol-at-point ;;;;;; sexp-at-point thing-at-point bounds-of-thing-at-point forward-thing) -;;;;;; "thingatpt" "thingatpt.el" (20623 43301 870757 0)) +;;;;;; "thingatpt" "thingatpt.el" (20752 26669 524456 0)) ;;; Generated autoloads from thingatpt.el (autoload 'forward-thing "thingatpt" "\ @@ -27475,7 +27481,7 @@ Return the Lisp list at point, or nil if none is found. ;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show thumbs-dired-show-marked ;;;;;; thumbs-show-from-dir thumbs-find-thumb) "thumbs" "thumbs.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from thumbs.el (autoload 'thumbs-find-thumb "thumbs" "\ @@ -27513,8 +27519,8 @@ In dired, call the setroot program on the image at point. ;;;;;; tibetan-post-read-conversion tibetan-compose-buffer tibetan-decompose-buffer ;;;;;; tibetan-decompose-string tibetan-decompose-region tibetan-compose-region ;;;;;; tibetan-compose-string tibetan-transcription-to-tibetan tibetan-tibetan-to-transcription -;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20355 -;;;;;; 10021 546955 0)) +;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from language/tibet-util.el (autoload 'tibetan-char-p "tibet-util" "\ @@ -27588,7 +27594,7 @@ See also docstring of the function tibetan-compose-region. ;;;*** ;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el" -;;;;;; (20373 11301 906925 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/tildify.el (autoload 'tildify-region "tildify" "\ @@ -27613,7 +27619,7 @@ This function performs no refilling of the changed text. ;;;### (autoloads (emacs-init-time emacs-uptime display-time-world ;;;;;; display-time-mode display-time display-time-day-and-date) -;;;;;; "time" "time.el" (20619 46245 806932 0)) +;;;;;; "time" "time.el" (20709 26818 907104 0)) ;;; Generated autoloads from time.el (defvar display-time-day-and-date nil "\ @@ -27679,7 +27685,7 @@ Return a string giving the duration of the Emacs initialization. ;;;;;; time-to-day-in-year date-leap-year-p days-between date-to-day ;;;;;; time-add time-subtract time-since days-to-time time-less-p ;;;;;; seconds-to-time date-to-time) "time-date" "calendar/time-date.el" -;;;;;; (20652 47164 970964 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from calendar/time-date.el (autoload 'date-to-time "time-date" "\ @@ -27791,7 +27797,7 @@ This function does not work for SECONDS greater than `most-positive-fixnum'. ;;;*** ;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp" -;;;;;; "time-stamp.el" (20566 63671 243798 0)) +;;;;;; "time-stamp.el" (20709 26818 907104 0)) ;;; Generated autoloads from time-stamp.el (put 'time-stamp-format 'safe-local-variable 'stringp) (put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p) @@ -27835,7 +27841,7 @@ With ARG, turn time stamping on if and only if arg is positive. ;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out ;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in ;;;;;; timeclock-mode-line-display) "timeclock" "calendar/timeclock.el" -;;;;;; (20593 22184 581574 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from calendar/timeclock.el (autoload 'timeclock-mode-line-display "timeclock" "\ @@ -27935,7 +27941,7 @@ relative only to the time worked today, and not to past time. ;;;*** ;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv" -;;;;;; "international/titdic-cnv.el" (20355 10021 546955 0)) +;;;;;; "international/titdic-cnv.el" (20709 26818 907104 0)) ;;; Generated autoloads from international/titdic-cnv.el (autoload 'titdic-convert "titdic-cnv" "\ @@ -27958,7 +27964,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\". ;;;*** ;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm" -;;;;;; "tmm.el" (20622 22438 32851 0)) +;;;;;; "tmm.el" (20764 51137 83502 0)) ;;; Generated autoloads from tmm.el (define-key global-map "\M-`" 'tmm-menubar) (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse) @@ -27998,7 +28004,7 @@ Its value should be an event that has a binding in MENU. ;;;### (autoloads (todo-show todo-cp todo-mode todo-print todo-top-priorities ;;;;;; todo-insert-item todo-add-item-non-interactively todo-add-category) -;;;;;; "todo-mode" "calendar/todo-mode.el" (20355 10021 546955 0)) +;;;;;; "todo-mode" "calendar/todo-mode.el" (20709 26818 907104 0)) ;;; Generated autoloads from calendar/todo-mode.el (autoload 'todo-add-category "todo-mode" "\ @@ -28058,7 +28064,7 @@ Show TODO list. ;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu ;;;;;; tool-bar-local-item tool-bar-add-item toggle-tool-bar-mode-from-frame) -;;;;;; "tool-bar" "tool-bar.el" (20355 10021 546955 0)) +;;;;;; "tool-bar" "tool-bar.el" (20709 26818 907104 0)) ;;; Generated autoloads from tool-bar.el (autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\ @@ -28129,7 +28135,7 @@ holds a keymap. ;;;*** ;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el" -;;;;;; (20566 63671 243798 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emulation/tpu-edt.el (defvar tpu-edt-mode nil "\ @@ -28159,7 +28165,7 @@ Turn on TPU/edt emulation. ;;;*** ;;;### (autoloads (tpu-mapper) "tpu-mapper" "emulation/tpu-mapper.el" -;;;;;; (20566 63671 243798 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emulation/tpu-mapper.el (autoload 'tpu-mapper "tpu-mapper" "\ @@ -28193,8 +28199,8 @@ your local X guru can try to figure out why the key is being ignored. ;;;*** -;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from emacs-lisp/tq.el (autoload 'tq-create "tq" "\ @@ -28208,8 +28214,8 @@ to a tcp server on another machine. ;;;*** ;;;### (autoloads (trace-function-background trace-function-foreground -;;;;;; trace-buffer) "trace" "emacs-lisp/trace.el" (20652 47164 -;;;;;; 970964 0)) +;;;;;; trace-buffer) "trace" "emacs-lisp/trace.el" (20727 56759 +;;;;;; 628211 0)) ;;; Generated autoloads from emacs-lisp/trace.el (defvar trace-buffer "*trace-output*" "\ @@ -28226,18 +28232,14 @@ there might be!! The trace BUFFER will popup whenever FUNCTION is called. Do not use this to trace functions that switch buffers or do any other display oriented stuff, use `trace-function-background' instead. +To untrace a function, use `untrace-function' or `untrace-all'. + \(fn FUNCTION &optional BUFFER CONTEXT)" t nil) (autoload 'trace-function-background "trace" "\ Traces FUNCTION with trace output going quietly to BUFFER. -When this tracing is enabled, every call to FUNCTION writes -a Lisp-style trace message (showing the arguments and return value) -into BUFFER. This function generates advice to trace FUNCTION -and activates it together with any other advice there might be. -The trace output goes to BUFFER quietly, without changing -the window or buffer configuration. - -BUFFER defaults to `trace-buffer'. +Like `trace-function-foreground' but without popping up the trace BUFFER or +changing the window configuration. \(fn FUNCTION &optional BUFFER CONTEXT)" t nil) @@ -28248,7 +28250,7 @@ BUFFER defaults to `trace-buffer'. ;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion ;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers ;;;;;; tramp-file-name-handler tramp-syntax tramp-mode) "tramp" -;;;;;; "net/tramp.el" (20701 32695 861936 0)) +;;;;;; "net/tramp.el" (20784 36406 653593 0)) ;;; Generated autoloads from net/tramp.el (defvar tramp-mode t "\ @@ -28381,7 +28383,7 @@ Discard Tramp from loading remote files. ;;;*** ;;;### (autoloads (tramp-ftp-enable-ange-ftp) "tramp-ftp" "net/tramp-ftp.el" -;;;;;; (20683 2742 588278 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from net/tramp-ftp.el (autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\ @@ -28391,8 +28393,8 @@ Discard Tramp from loading remote files. ;;;*** -;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20584 -;;;;;; 7212 455152 0)) +;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20760 +;;;;;; 54070 584283 0)) ;;; Generated autoloads from tutorial.el (autoload 'help-with-tutorial "tutorial" "\ @@ -28428,7 +28430,7 @@ resumed later. ;;;*** ;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column" -;;;;;; "textmodes/two-column.el" (20566 63671 243798 0)) +;;;;;; "textmodes/two-column.el" (20763 30266 231060 0)) ;;; Generated autoloads from textmodes/two-column.el (autoload '2C-command "two-column" () t 'keymap) (global-set-key "\C-x6" '2C-command) @@ -28477,7 +28479,7 @@ First column's text sSs Second column's text ;;;### (autoloads (type-break-guesstimate-keystroke-threshold type-break-statistics ;;;;;; type-break type-break-mode) "type-break" "type-break.el" -;;;;;; (20582 12914 894781 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from type-break.el (defvar type-break-mode nil "\ @@ -28609,8 +28611,8 @@ FRAC should be the inverse of the fractional value; for example, a value of ;;;*** -;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (20566 63671 -;;;;;; 243798 0)) +;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from mail/uce.el (autoload 'uce-reply-to-uce "uce" "\ @@ -28628,7 +28630,7 @@ You might need to set `uce-mail-reader' before using this. ;;;;;; ucs-normalize-NFKC-string ucs-normalize-NFKC-region ucs-normalize-NFKD-string ;;;;;; ucs-normalize-NFKD-region ucs-normalize-NFC-string ucs-normalize-NFC-region ;;;;;; ucs-normalize-NFD-string ucs-normalize-NFD-region) "ucs-normalize" -;;;;;; "international/ucs-normalize.el" (20476 31768 298871 0)) +;;;;;; "international/ucs-normalize.el" (20709 26818 907104 0)) ;;; Generated autoloads from international/ucs-normalize.el (autoload 'ucs-normalize-NFD-region "ucs-normalize" "\ @@ -28694,7 +28696,7 @@ Normalize the string STR by the Unicode NFC and Mac OS's HFS Plus. ;;;*** ;;;### (autoloads (ununderline-region underline-region) "underline" -;;;;;; "textmodes/underline.el" (20355 10021 546955 0)) +;;;;;; "textmodes/underline.el" (20709 26818 907104 0)) ;;; Generated autoloads from textmodes/underline.el (autoload 'underline-region "underline" "\ @@ -28715,7 +28717,7 @@ which specify the range to operate on. ;;;*** ;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el" -;;;;;; (20673 53308 39372 0)) +;;;;;; (20731 53823 676680 0)) ;;; Generated autoloads from mail/unrmail.el (autoload 'batch-unrmail "unrmail" "\ @@ -28735,8 +28737,8 @@ The variable `unrmail-mbox-format' controls which mbox format to use. ;;;*** -;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/unsafep.el (autoload 'unsafep "unsafep" "\ @@ -28749,7 +28751,7 @@ UNSAFEP-VARS is a list of symbols with local bindings. ;;;*** ;;;### (autoloads (url-retrieve-synchronously url-retrieve) "url" -;;;;;; "url/url.el" (20601 16294 451653 0)) +;;;;;; "url/url.el" (20709 26818 907104 0)) ;;; Generated autoloads from url/url.el (autoload 'url-retrieve "url" "\ @@ -28797,7 +28799,7 @@ no further processing). URL is either a string or a parsed URL. ;;;*** ;;;### (autoloads (url-register-auth-scheme url-get-authentication) -;;;;;; "url-auth" "url/url-auth.el" (20355 10021 546955 0)) +;;;;;; "url-auth" "url/url-auth.el" (20709 26818 907104 0)) ;;; Generated autoloads from url/url-auth.el (autoload 'url-get-authentication "url-auth" "\ @@ -28839,7 +28841,7 @@ RATING a rating between 1 and 10 of the strength of the authentication. ;;;*** ;;;### (autoloads (url-cache-extract url-is-cached url-store-in-cache) -;;;;;; "url-cache" "url/url-cache.el" (20355 10021 546955 0)) +;;;;;; "url-cache" "url/url-cache.el" (20751 39094 700824 0)) ;;; Generated autoloads from url/url-cache.el (autoload 'url-store-in-cache "url-cache" "\ @@ -28860,8 +28862,8 @@ Extract FNAM from the local disk cache. ;;;*** -;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from url/url-cid.el (autoload 'url-cid "url-cid" "\ @@ -28872,7 +28874,7 @@ Extract FNAM from the local disk cache. ;;;*** ;;;### (autoloads (url-dav-vc-registered url-dav-request url-dav-supported-p) -;;;;;; "url-dav" "url/url-dav.el" (20501 3499 284800 0)) +;;;;;; "url-dav" "url/url-dav.el" (20709 26818 907104 0)) ;;; Generated autoloads from url/url-dav.el (autoload 'url-dav-supported-p "url-dav" "\ @@ -28906,8 +28908,8 @@ added to this list, so most requests can just pass in nil. ;;;*** -;;;### (autoloads (url-file) "url-file" "url/url-file.el" (20602 -;;;;;; 37158 321420 0)) +;;;### (autoloads (url-file) "url-file" "url/url-file.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from url/url-file.el (autoload 'url-file "url-file" "\ @@ -28918,7 +28920,7 @@ Handle file: and ftp: URLs. ;;;*** ;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw" -;;;;;; "url/url-gw.el" (20478 3673 653810 0)) +;;;;;; "url/url-gw.el" (20709 26818 907104 0)) ;;; Generated autoloads from url/url-gw.el (autoload 'url-gateway-nslookup-host "url-gw" "\ @@ -28938,7 +28940,7 @@ Might do a non-blocking connection; use `process-status' to check. ;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file ;;;;;; url-file-handler url-handler-mode) "url-handlers" "url/url-handlers.el" -;;;;;; (20584 7212 455152 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from url/url-handlers.el (defvar url-handler-mode nil "\ @@ -28992,8 +28994,8 @@ accessible. ;;;*** -;;;### (autoloads nil "url-http" "url/url-http.el" (20693 38586 665915 -;;;;;; 0)) +;;;### (autoloads nil "url-http" "url/url-http.el" (20766 59628 334727 +;;;;;; 618000)) ;;; Generated autoloads from url/url-http.el (autoload 'url-default-expander "url-expand") @@ -29005,8 +29007,8 @@ accessible. ;;;*** -;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from url/url-irc.el (autoload 'url-irc "url-irc" "\ @@ -29016,8 +29018,8 @@ accessible. ;;;*** -;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (20355 -;;;;;; 10021 546955 0)) +;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from url/url-ldap.el (autoload 'url-ldap "url-ldap" "\ @@ -29031,7 +29033,7 @@ URL can be a URL string, or a URL vector of the type returned by ;;;*** ;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from url/url-mailto.el (autoload 'url-mail "url-mailto" "\ @@ -29047,7 +29049,7 @@ Handle the mailto: URL syntax. ;;;*** ;;;### (autoloads (url-data url-generic-emulator-loader url-info -;;;;;; url-man) "url-misc" "url/url-misc.el" (20668 35382 940599 +;;;;;; url-man) "url-misc" "url/url-misc.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from url/url-misc.el @@ -29080,7 +29082,7 @@ Fetch a data URL (RFC 2397). ;;;*** ;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from url/url-news.el (autoload 'url-news "url-news" "\ @@ -29097,7 +29099,7 @@ Fetch a data URL (RFC 2397). ;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable ;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from url/url-ns.el (autoload 'isPlainHostName "url-ns" "\ @@ -29138,7 +29140,7 @@ Fetch a data URL (RFC 2397). ;;;*** ;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse" -;;;;;; "url/url-parse.el" (20693 38586 665915 0)) +;;;;;; "url/url-parse.el" (20709 26818 907104 0)) ;;; Generated autoloads from url/url-parse.el (autoload 'url-recreate-url "url-parse" "\ @@ -29190,7 +29192,7 @@ parses to ;;;*** ;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el" -;;;;;; (20478 3673 653810 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from url/url-privacy.el (autoload 'url-setup-privacy-info "url-privacy" "\ @@ -29201,7 +29203,7 @@ Setup variables that expose info about you and your system. ;;;*** ;;;### (autoloads (url-queue-retrieve) "url-queue" "url/url-queue.el" -;;;;;; (20478 3673 653810 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from url/url-queue.el (autoload 'url-queue-retrieve "url-queue" "\ @@ -29221,8 +29223,8 @@ The variable `url-queue-timeout' sets a timeout. ;;;;;; url-percentage url-display-percentage url-pretty-length url-strip-leading-spaces ;;;;;; url-eat-trailing-space url-get-normalized-date url-lazy-message ;;;;;; url-normalize-url url-insert-entities-in-string url-parse-args -;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20584 -;;;;;; 7212 455152 0)) +;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from url/url-util.el (defvar url-debug nil "\ @@ -29396,7 +29398,7 @@ This uses `url-current-object', set locally to the buffer. ;;;*** ;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock) -;;;;;; "userlock" "userlock.el" (20555 6946 859539 0)) +;;;;;; "userlock" "userlock.el" (20709 26818 907104 0)) ;;; Generated autoloads from userlock.el (autoload 'ask-user-about-lock "userlock" "\ @@ -29426,7 +29428,7 @@ The buffer in question is current when this function is called. ;;;### (autoloads (utf-7-imap-pre-write-conversion utf-7-pre-write-conversion ;;;;;; utf-7-imap-post-read-conversion utf-7-post-read-conversion) -;;;;;; "utf-7" "international/utf-7.el" (20355 10021 546955 0)) +;;;;;; "utf-7" "international/utf-7.el" (20709 26818 907104 0)) ;;; Generated autoloads from international/utf-7.el (autoload 'utf-7-post-read-conversion "utf-7" "\ @@ -29451,8 +29453,8 @@ The buffer in question is current when this function is called. ;;;*** -;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (20355 10021 -;;;;;; 546955 0)) +;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from gnus/utf7.el (autoload 'utf7-encode "utf7" "\ @@ -29464,7 +29466,7 @@ Encode UTF-7 STRING. Use IMAP modification if FOR-IMAP is non-nil. ;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal ;;;;;; uudecode-decode-region-external) "uudecode" "mail/uudecode.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from mail/uudecode.el (autoload 'uudecode-decode-region-external "uudecode" "\ @@ -29494,8 +29496,8 @@ If FILE-NAME is non-nil, save the result to FILE-NAME. ;;;;;; vc-print-log vc-retrieve-tag vc-create-tag vc-merge vc-insert-headers ;;;;;; vc-revision-other-window vc-root-diff vc-ediff vc-version-ediff ;;;;;; vc-diff vc-version-diff vc-register vc-next-action vc-before-checkin-hook -;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20668 -;;;;;; 35382 940599 0)) +;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20752 +;;;;;; 26669 524456 0)) ;;; Generated autoloads from vc/vc.el (defvar vc-checkout-hook nil "\ @@ -29777,7 +29779,7 @@ Return the branch part of a revision number REV. ;;;*** ;;;### (autoloads (vc-annotate) "vc-annotate" "vc/vc-annotate.el" -;;;;;; (20478 3673 653810 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from vc/vc-annotate.el (autoload 'vc-annotate "vc-annotate" "\ @@ -29814,18 +29816,18 @@ mode-specific menu. `vc-annotate-color-map' and ;;;*** -;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20478 3673 653810 +;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20748 62911 684442 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-arch.el (defun vc-arch-registered (file) (if (vc-find-root file "{arch}/=tagging-method") (progn - (load "vc-arch") + (load "vc-arch" nil t) (vc-arch-registered file)))) ;;;*** -;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20584 7212 455152 +;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20748 62911 684442 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-bzr.el @@ -29837,25 +29839,25 @@ Name of the format file in a .bzr directory.") (defun vc-bzr-registered (file) (if (vc-find-root file vc-bzr-admin-checkout-format-file) (progn - (load "vc-bzr") + (load "vc-bzr" nil t) (vc-bzr-registered file)))) ;;;*** -;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20542 46798 773957 +;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20748 62911 684442 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-cvs.el (defun vc-cvs-registered (f) "Return non-nil if file F is registered with CVS." (when (file-readable-p (expand-file-name "CVS/Entries" (file-name-directory f))) - (load "vc-cvs") + (load "vc-cvs" nil t) (vc-cvs-registered f))) ;;;*** -;;;### (autoloads (vc-dir vc-dir-mode) "vc-dir" "vc/vc-dir.el" (20662 -;;;;;; 46799 394737 457000)) +;;;### (autoloads (vc-dir vc-dir-mode) "vc-dir" "vc/vc-dir.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from vc/vc-dir.el (autoload 'vc-dir-mode "vc-dir" "\ @@ -29919,7 +29921,7 @@ These are the commands available for use in the file status buffer: ;;;*** ;;;### (autoloads (vc-do-command) "vc-dispatcher" "vc/vc-dispatcher.el" -;;;;;; (20489 12324 656827 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from vc/vc-dispatcher.el (autoload 'vc-do-command "vc-dispatcher" "\ @@ -29942,30 +29944,31 @@ case, and the process object in the asynchronous case. ;;;*** -;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20664 38325 385623 +;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20748 62911 684442 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-git.el (defun vc-git-registered (file) "Return non-nil if FILE is registered with git." (if (vc-find-root file ".git") ; Short cut. (progn - (load "vc-git") + (load "vc-git" nil t) (vc-git-registered file)))) ;;;*** -;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20670 42926 924735 782000)) +;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20748 62911 684442 0)) ;;; Generated autoloads from vc/vc-hg.el (defun vc-hg-registered (file) "Return non-nil if FILE is registered with hg." (if (vc-find-root file ".hg") ; short cut (progn - (load "vc-hg") + (load "vc-hg" nil t) (vc-hg-registered file)))) ;;;*** -;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20524 51365 2559 0)) +;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20748 62911 684442 +;;;;;; 0)) ;;; Generated autoloads from vc/vc-mtn.el (defconst vc-mtn-admin-dir "_MTN" "\ @@ -29976,13 +29979,13 @@ Name of the monotone directory's format file.") (defun vc-mtn-registered (file) (if (vc-find-root file vc-mtn-admin-format) (progn - (load "vc-mtn") + (load "vc-mtn" nil t) (vc-mtn-registered file)))) ;;;*** ;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc/vc-rcs.el" -;;;;;; (20584 7212 455152 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from vc/vc-rcs.el (defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\ @@ -29996,7 +29999,7 @@ For a description of possible values, see `vc-check-master-templates'.") ;;;*** ;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc/vc-sccs.el" -;;;;;; (20584 7212 455152 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from vc/vc-sccs.el (defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\ @@ -30014,7 +30017,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir) ;;;*** -;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20648 50109 802321 +;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20760 54070 584283 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-svn.el (defun vc-svn-registered (f) @@ -30023,13 +30026,13 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir) "_svn") (t ".svn")))) (when (vc-find-root f admin-dir) - (load "vc-svn") + (load "vc-svn" nil t) (vc-svn-registered f)))) ;;;*** ;;;### (autoloads (vera-mode) "vera-mode" "progmodes/vera-mode.el" -;;;;;; (20577 33959 40183 0)) +;;;;;; (20777 63161 848428 0)) ;;; Generated autoloads from progmodes/vera-mode.el (add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'") 'vera-mode)) @@ -30087,7 +30090,7 @@ Key bindings: ;;;*** ;;;### (autoloads (verilog-mode) "verilog-mode" "progmodes/verilog-mode.el" -;;;;;; (20593 22184 581574 0)) +;;;;;; (20763 30266 231060 0)) ;;; Generated autoloads from progmodes/verilog-mode.el (autoload 'verilog-mode "verilog-mode" "\ @@ -30226,7 +30229,7 @@ Key bindings specific to `verilog-mode-map' are: ;;;*** ;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el" -;;;;;; (20593 22184 581574 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from progmodes/vhdl-mode.el (autoload 'vhdl-mode "vhdl-mode" "\ @@ -30836,7 +30839,7 @@ Syntax table and abbrevs while in vi mode remain as they were in Emacs. ;;;### (autoloads (viqr-pre-write-conversion viqr-post-read-conversion ;;;;;; viet-encode-viqr-buffer viet-encode-viqr-region viet-decode-viqr-buffer ;;;;;; viet-decode-viqr-region viet-encode-viscii-char) "viet-util" -;;;;;; "language/viet-util.el" (20355 10021 546955 0)) +;;;;;; "language/viet-util.el" (20709 26818 907104 0)) ;;; Generated autoloads from language/viet-util.el (autoload 'viet-encode-viscii-char "viet-util" "\ @@ -30884,7 +30887,7 @@ Convert Vietnamese characters of the current buffer to `VIQR' mnemonics. ;;;;;; view-mode view-buffer-other-frame view-buffer-other-window ;;;;;; view-buffer view-file-other-frame view-file-other-window ;;;;;; view-file kill-buffer-if-not-modified view-remove-frame-by-deleting) -;;;;;; "view" "view.el" (20706 50624 612201 0)) +;;;;;; "view" "view.el" (20762 9398 526093 0)) ;;; Generated autoloads from view.el (defvar view-remove-frame-by-deleting t "\ @@ -31046,8 +31049,8 @@ Digits provide prefix arguments. \\[View-scroll-to-buffer-end] scroll so that buffer end is at last line of window. SPC scroll forward \"page size\" lines. With prefix scroll forward prefix lines. -DEL scroll backward \"page size\" lines. - With prefix scroll backward prefix lines. +DEL, S-SPC scroll backward \"page size\" lines. + With prefix scroll backward prefix lines. \\[View-scroll-page-forward-set-page-size] like \\[View-scroll-page-forward] but with prefix sets \"page size\" to prefix. \\[View-scroll-page-backward-set-page-size] like \\[View-scroll-page-backward] but with prefix sets \"page size\" to prefix. \\[View-scroll-half-page-forward] scroll forward \"half page size\" lines. With prefix, sets @@ -31140,8 +31143,8 @@ Exit View mode and make the current buffer editable. ;;;*** -;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20513 -;;;;;; 18948 537867 0)) +;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20762 +;;;;;; 9398 526093 0)) ;;; Generated autoloads from emulation/vip.el (autoload 'vip-setup "vip" "\ @@ -31157,7 +31160,7 @@ Turn on VIP emulation of VI. ;;;*** ;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el" -;;;;;; (20566 63671 243798 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emulation/viper.el (autoload 'toggle-viper-mode "viper" "\ @@ -31174,7 +31177,7 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'. ;;;*** ;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emacs-lisp/warnings.el (defvar warning-prefix-function nil "\ @@ -31264,7 +31267,7 @@ this is equivalent to `display-warning', using ;;;*** ;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el" -;;;;;; (20656 44218 805102 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from wdired.el (autoload 'wdired-change-to-wdired-mode "wdired" "\ @@ -31281,8 +31284,8 @@ See `wdired-mode'. ;;;*** -;;;### (autoloads (webjump) "webjump" "net/webjump.el" (20566 63671 -;;;;;; 243798 0)) +;;;### (autoloads (webjump) "webjump" "net/webjump.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from net/webjump.el (autoload 'webjump "webjump" "\ @@ -31299,7 +31302,7 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke ;;;*** ;;;### (autoloads (which-function-mode) "which-func" "progmodes/which-func.el" -;;;;;; (20613 49078 764749 0)) +;;;;;; (20725 15032 264919 0)) ;;; Generated autoloads from progmodes/which-func.el (put 'which-func-format 'risky-local-variable t) (put 'which-func-current 'risky-local-variable t) @@ -31332,8 +31335,8 @@ in certain major modes. ;;;### (autoloads (whitespace-report-region whitespace-report whitespace-cleanup-region ;;;;;; whitespace-cleanup global-whitespace-toggle-options whitespace-toggle-options ;;;;;; global-whitespace-newline-mode global-whitespace-mode whitespace-newline-mode -;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20508 13724 -;;;;;; 260761 0)) +;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20721 17977 +;;;;;; 14204 0)) ;;; Generated autoloads from whitespace.el (autoload 'whitespace-mode "whitespace" "\ @@ -31732,8 +31735,8 @@ cleaning up these problems. ;;;*** ;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse -;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (20478 3673 -;;;;;; 653810 0)) +;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from wid-browse.el (autoload 'widget-browse-at "wid-browse" "\ @@ -31762,8 +31765,8 @@ if ARG is omitted or nil. ;;;*** ;;;### (autoloads (widget-setup widget-insert widget-delete widget-create -;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (20373 -;;;;;; 11301 906925 0)) +;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (20716 +;;;;;; 56 356960 0)) ;;; Generated autoloads from wid-edit.el (autoload 'widgetp "wid-edit" "\ @@ -31806,8 +31809,8 @@ Setup current buffer so editing string widgets works. ;;;*** ;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right -;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (20566 -;;;;;; 63671 243798 0)) +;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from windmove.el (autoload 'windmove-left "windmove" "\ @@ -31859,8 +31862,8 @@ Default MODIFIER is 'shift. ;;;*** -;;;### (autoloads (winner-mode) "winner" "winner.el" (20584 7212 -;;;;;; 455152 0)) +;;;### (autoloads (winner-mode) "winner" "winner.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from winner.el (defvar winner-mode nil "\ @@ -31884,7 +31887,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'. ;;;*** ;;;### (autoloads (woman-bookmark-jump woman-find-file woman-dired-find-file -;;;;;; woman woman-locale) "woman" "woman.el" (20657 65077 880084 +;;;;;; woman woman-locale) "woman" "woman.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from woman.el @@ -31934,7 +31937,7 @@ Default bookmark handler for Woman buffers. ;;;*** ;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el" -;;;;;; (20355 10021 546955 0)) +;;;;;; (20709 26818 907104 0)) ;;; Generated autoloads from emulation/ws-mode.el (autoload 'wordstar-mode "ws-mode" "\ @@ -32046,8 +32049,8 @@ The key bindings are: ;;;*** -;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (20478 3673 -;;;;;; 653810 0)) +;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (20709 26818 +;;;;;; 907104 0)) ;;; Generated autoloads from net/xesam.el (autoload 'xesam-search "xesam" "\ @@ -32067,7 +32070,7 @@ Example: ;;;*** ;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el" -;;;;;; (20528 48420 241677 0)) +;;;;;; (20766 6456 368550 0)) ;;; Generated autoloads from xml.el (autoload 'xml-parse-file "xml" "\ @@ -32124,7 +32127,7 @@ Both features can be combined by providing a cons cell ;;;*** ;;;### (autoloads (xmltok-get-declared-encoding-position) "xmltok" -;;;;;; "nxml/xmltok.el" (20355 10021 546955 0)) +;;;;;; "nxml/xmltok.el" (20709 26818 907104 0)) ;;; Generated autoloads from nxml/xmltok.el (autoload 'xmltok-get-declared-encoding-position "xmltok" "\ @@ -32142,8 +32145,8 @@ If LIMIT is non-nil, then do not consider characters beyond LIMIT. ;;;*** -;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (20485 -;;;;;; 15269 390836 0)) +;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (20709 +;;;;;; 26818 907104 0)) ;;; Generated autoloads from xt-mouse.el (defvar xterm-mouse-mode nil "\ @@ -32173,7 +32176,7 @@ down the SHIFT key while pressing the mouse button. ;;;*** ;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc" -;;;;;; "gnus/yenc.el" (20355 10021 546955 0)) +;;;;;; "gnus/yenc.el" (20709 26818 907104 0)) ;;; Generated autoloads from gnus/yenc.el (autoload 'yenc-decode-region "yenc" "\ @@ -32188,34 +32191,7 @@ Extract file name from an yenc header. ;;;*** -;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism -;;;;;; yow) "yow" "play/yow.el" (20364 42504 244840 586000)) -;;; Generated autoloads from play/yow.el - -(autoload 'yow "yow" "\ -Return or display a random Zippy quotation. With prefix arg, insert it. - -\(fn &optional INSERT DISPLAY)" t nil) - -(autoload 'insert-zippyism "yow" "\ -Prompt with completion for a known Zippy quotation, and insert it at point. - -\(fn &optional ZIPPYISM)" t nil) - -(autoload 'apropos-zippy "yow" "\ -Return a list of all Zippy quotes matching REGEXP. -If called interactively, display a list of matches. - -\(fn REGEXP)" t nil) - -(autoload 'psychoanalyze-pinhead "yow" "\ -Zippy goes to the analyst. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (zone) "zone" "play/zone.el" (20545 57511 257469 +;;;### (autoloads (zone) "zone" "play/zone.el" (20709 26818 907104 ;;;;;; 0)) ;;; Generated autoloads from play/zone.el @@ -32435,8 +32411,8 @@ Zone out, completely. ;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el" ;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el" ;;;;;; "vcursor.el" "vt-control.el" "vt100-led.el" "w32-common-fns.el" -;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (20706 50646 12288 -;;;;;; 733000)) +;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (20784 36426 559404 +;;;;;; 170000)) ;;;*** diff --git a/lisp/locate.el b/lisp/locate.el index 804260969ee..ab0417070e7 100644 --- a/lisp/locate.el +++ b/lisp/locate.el @@ -496,6 +496,7 @@ do not work in subdirectories. (setq revert-buffer-function 'locate-update) (set (make-local-variable 'page-delimiter) "\n\n") (run-mode-hooks 'locate-mode-hook)) +(put 'locate-mode 'derived-mode-parent 'dired-mode) (defun locate-do-setup (search-string) (goto-char (point-min)) diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el index c35809ef648..c1bc7e2e1ab 100644 --- a/lisp/mail/emacsbug.el +++ b/lisp/mail/emacsbug.el @@ -323,7 +323,7 @@ usually do not have translators for other languages.\n\n"))) (use-local-map (nconc (make-sparse-keymap) (current-local-map))) (define-key (current-local-map) "\C-c\C-i" 'info-emacs-bug) (if can-insert-mail - (define-key (current-local-map) "\C-cm" + (define-key (current-local-map) "\C-c\M-i" 'report-emacs-bug-insert-to-mailer)) (setq report-emacs-bug-send-command (get mail-user-agent 'sendfunc) report-emacs-bug-send-hook (get mail-user-agent 'hookvar)) diff --git a/lisp/mail/feedmail.el b/lisp/mail/feedmail.el index 4305094611a..0502e7f9487 100644 --- a/lisp/mail/feedmail.el +++ b/lisp/mail/feedmail.el @@ -590,7 +590,7 @@ header is fiddled after the From: header is fiddled." (defcustom feedmail-force-binary-write t "If non-nil, force writing file as binary (this applies to queues and Fcc:). On systems where there is a difference between binary and text files, -feedmail will temporarily manipulate the value of `buffer-file-type' +feedmail will temporarily manipulate the value of `coding-system-for-write' to make the writing as binary. If nil, writing will be in text mode. On systems where there is no distinction or where it is controlled by other variables or other means, this option has no effect." @@ -2016,7 +2016,6 @@ backup file names and the like)." (setq buffer-offer-save nil) (buffer-disable-undo blobby-buffer) (insert-file-contents-literally maybe-file) - (setq buffer-file-type t) ; binary (goto-char (point-min)) ;; if at least two line-endings with CRLF, translate the file (if (looking-at ".*\r\n.*\r\n") @@ -2334,7 +2333,10 @@ mapped to mostly alphanumerics for safety." (setq filename buffer-file-name) (setq filename (feedmail-create-queue-filename queue-directory))) ;; make binary file on DOS/Windows 95/Windows NT, etc - (let ((buffer-file-type feedmail-force-binary-write)) + (let ((coding-system-for-write + (if feedmail-force-binary-write + 'no-conversion + coding-system-for-write))) (write-file filename)) ;; convenient for moving from draft to q, for example (if (and previous-buffer-file-name (or (not is-fqm) (not is-in-this-dir)) @@ -2571,26 +2573,27 @@ mapped to mostly alphanumerics for safety." ;; Re-insert and handle any Fcc fields (and, optionally, ;; any Bcc). (when fcc - (let ((old (default-value 'buffer-file-type))) + (let ((coding-system-for-write + (if (and (memq system-type '(ms-dos windows-nt)) + feedmail-force-binary-write) + 'no-conversion + coding-system-for-write))) (unwind-protect (progn - (setq-default buffer-file-type - feedmail-force-binary-write) (insert fcc) (unless feedmail-nuke-bcc-in-fcc (if bcc-holder (insert bcc-holder)) (if resent-bcc-holder (insert resent-bcc-holder))) - + (run-hooks 'feedmail-before-fcc-hook) - + (when feedmail-nuke-body-in-fcc (goto-char eoh-marker) (if (natnump feedmail-nuke-body-in-fcc) (forward-line feedmail-nuke-body-in-fcc)) (delete-region (point) (point-max))) - (mail-do-fcc eoh-marker)) - (setq-default buffer-file-type old))))) + (mail-do-fcc eoh-marker)))))) ;; User bailed out of one-last-look. (if feedmail-queue-runner-is-active (throw 'skip-me-q 'skip-me-q) diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index c6385498dcd..02703026e84 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -1085,6 +1085,7 @@ The buffer is expected to be narrowed to just the header of the message." (define-key map "<" 'rmail-first-message) (define-key map ">" 'rmail-last-message) (define-key map " " 'scroll-up-command) + (define-key map [?\S-\ ] 'scroll-down-command) (define-key map "\177" 'scroll-down-command) (define-key map "?" 'describe-mode) (define-key map "\C-c\C-s\C-d" 'rmail-sort-by-date) @@ -1507,6 +1508,8 @@ If so restore the actual mbox message collection." (setq file-precious-flag t) (make-local-variable 'desktop-save-buffer) (setq desktop-save-buffer t) + (make-local-variable 'save-buffer-coding-system) + (setq save-buffer-coding-system 'no-conversion) (setq next-error-move-function 'rmail-next-error-move)) ;; Handle M-x revert-buffer done in an rmail-mode buffer. @@ -4749,7 +4752,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order. ;;;### (autoloads (rmail-summary-by-senders rmail-summary-by-topic ;;;;;; rmail-summary-by-regexp rmail-summary-by-recipients rmail-summary-by-labels -;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "341825201e892b8fc875c1ae49ffd560") +;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "119ce8b431f01e7f54bb6fa99603b3d9") ;;; Generated autoloads from rmailsum.el (autoload 'rmail-summary "rmailsum" "\ diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el index 5b906719c39..13cd7c3f05e 100644 --- a/lisp/mail/rmailsum.el +++ b/lisp/mail/rmailsum.el @@ -118,6 +118,7 @@ Setting this option to nil might speed up the generation of summaries." (define-key map "<" 'rmail-summary-first-message) (define-key map ">" 'rmail-summary-last-message) (define-key map " " 'rmail-summary-scroll-msg-up) + (define-key map [?\S-\ ] 'rmail-summary-scroll-msg-down) (define-key map "\177" 'rmail-summary-scroll-msg-down) (define-key map "?" 'describe-mode) (define-key map "\C-c\C-n" 'rmail-summary-next-same-subject) diff --git a/lisp/mail/unrmail.el b/lisp/mail/unrmail.el index 85e8bb4f863..698e9b0e0a0 100644 --- a/lisp/mail/unrmail.el +++ b/lisp/mail/unrmail.el @@ -240,7 +240,6 @@ The variable `unrmail-mbox-format' controls which mbox format to use." (insert "X-RMAIL-ATTRIBUTES: " (apply 'string attrs) "\n") (when keywords (insert "X-RMAIL-KEYWORDS: " keywords "\n")) - (goto-char (point-min)) ;; Convert From to >From, etc. (let ((case-fold-search nil) (fromline (if (eq 'mboxrd unrmail-mbox-format) diff --git a/lisp/man.el b/lisp/man.el index 93a67128de4..04abc3d4d88 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -426,6 +426,7 @@ Otherwise, the value is whatever the function (suppress-keymap map) (set-keymap-parent map button-buffer-map) + (define-key map [?\S-\ ] 'scroll-down-command) (define-key map " " 'scroll-up-command) (define-key map "\177" 'scroll-down-command) (define-key map "n" 'Man-next-section) diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 60f2bc2999f..be459fe38d5 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -1518,7 +1518,7 @@ mail status in mode line")) :button (:toggle . (bound-and-true-p semantic-mode)))) (bindings--define-key menu [ede] - '(menu-item "Project support (EDE)" + '(menu-item "Project Support (EDE)" global-ede-mode :help "Toggle the Emacs Development Environment (Global EDE mode)" :button (:toggle . (bound-and-true-p global-ede-mode)))) diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index 8f81182b52d..6894a185ddc 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@ -1,3 +1,25 @@ +2013-03-02 Bill Wohler <wohler@newt.com> + + Release MH-E version 8.5. + + * mh-e.el (Version, mh-version): Update for release 8.5. + +2013-03-02 Jeffrey C Honig <jch@honig.net> + + * mh-folder.el (mh-inc-folder): Revert SF #2321115, SF #250 + which processed pending deletes and refiles. Call to + mh-process-or-undo-commands to insure that pending changes are + properly tagged after including new mail (closes SF #271). + + * mh-comp.el: Insure that mail-header-separator is set before + invoking any mml functions (closes SF #270). + +2013-01-23 Dmitry Antipov <dmantipov@yandex.ru> + + * mh-acros.el (mh-do-at-event-location): Use point-marker. + * mh-search.el (mh-index-create-imenu-index): Likewise. + * mh-xface.el (mh-x-image-url-display): Likewise. + 2012-11-25 Bill Wohler <wohler@newt.com> Release MH-E version 8.4. diff --git a/lisp/mh-e/ChangeLog.1 b/lisp/mh-e/ChangeLog.1 index 07320246c49..e57911947b1 100644 --- a/lisp/mh-e/ChangeLog.1 +++ b/lisp/mh-e/ChangeLog.1 @@ -5114,7 +5114,7 @@ (mail-abbrevs): Declare it in XEmacs. (mh-alias-add-alias-to-file): Remove unused code. -2003-02-14 Ville Skyttä <scop@xemacs.org> +2003-02-14 Ville Skyttä <scop@xemacs.org> * mh-comp.el: Add autoloaded auto-mode-alist association. @@ -11416,3 +11416,7 @@ You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;; Local Variables: +;; coding: utf-8 +;; End: diff --git a/lisp/mh-e/mh-acros.el b/lisp/mh-e/mh-acros.el index 9f7fc0df68b..7d6279e4eca 100644 --- a/lisp/mh-e/mh-acros.el +++ b/lisp/mh-e/mh-acros.el @@ -233,7 +233,7 @@ preserved." (,original-window (selected-window)) (,original-position (progn (set-buffer (window-buffer ,event-window)) - (set-marker (make-marker) (point)))) + (point-marker))) (,modified-flag (buffer-modified-p)) (buffer-read-only nil)) (unwind-protect (progn diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el index fbfc1207a5a..1f07a7983b1 100644 --- a/lisp/mh-e/mh-comp.el +++ b/lisp/mh-e/mh-comp.el @@ -587,6 +587,13 @@ See also `mh-compose-forward-as-mime-flag', (mh-forwarded-letter-subject orig-from orig-subject))) (mh-insert-fields "Subject:" forw-subject) (goto-char (point-min)) + ;; Set the local value of mh-mail-header-separator according to what is + ;; present in the buffer... + (set (make-local-variable 'mh-mail-header-separator) + (save-excursion + (goto-char (mh-mail-header-end)) + (buffer-substring-no-properties (point) (mh-line-end-position)))) + (set (make-local-variable 'mail-header-separator) mh-mail-header-separator) ;override sendmail.el ;; If using MML, translate MH-style directive (if (equal mh-compose-insertion 'mml) (save-excursion diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el index 334f73ff7ed..6ed033b8fa8 100644 --- a/lisp/mh-e/mh-e.el +++ b/lisp/mh-e/mh-e.el @@ -5,7 +5,7 @@ ;; Author: Bill Wohler <wohler@newt.com> ;; Maintainer: Bill Wohler <wohler@newt.com> -;; Version: 8.4 +;; Version: 8.5 ;; Keywords: mail ;; This file is part of GNU Emacs. @@ -127,7 +127,7 @@ ;; Try to keep variables local to a single file. Provide accessors if ;; variables are shared. Use this section as a last resort. -(defconst mh-version "8.4" "Version number of MH-E.") +(defconst mh-version "8.5" "Version number of MH-E.") ;; Variants diff --git a/lisp/mh-e/mh-folder.el b/lisp/mh-e/mh-folder.el index f3ea8003ed0..01f304a38dc 100644 --- a/lisp/mh-e/mh-folder.el +++ b/lisp/mh-e/mh-folder.el @@ -774,7 +774,7 @@ the message." return-value)) ;;;###mh-autoload -(defun mh-inc-folder (&optional file folder dont-exec-pending) +(defun mh-inc-folder (&optional file folder) "Incorporate new mail into a folder. You can incorporate mail from any file into the current folder by @@ -785,10 +785,7 @@ The hook `mh-inc-folder-hook' is run after incorporating new mail. Do not call this function from outside MH-E; use \\[mh-rmail] -instead. - -In a program, the processing of outstanding commands is not performed -if DONT-EXEC-PENDING is non-nil." +instead." (interactive (list (if current-prefix-arg (expand-file-name (read-file-name "inc mail from file: " @@ -797,8 +794,6 @@ if DONT-EXEC-PENDING is non-nil." (mh-prompt-for-folder "inc mail into" mh-inbox t)))) (if (not folder) (setq folder mh-inbox)) - (unless dont-exec-pending - (mh-process-or-undo-commands folder)) (let ((threading-needed-flag nil)) (let ((config (current-window-configuration))) (when (and mh-show-buffer (get-buffer mh-show-buffer)) @@ -820,6 +815,8 @@ if DONT-EXEC-PENDING is non-nil." nil)))) (mh-toggle-threads)) (beginning-of-line) + (when (mh-outstanding-commands-p) + (mh-notate-deleted-and-refiled)) (if (and mh-showing-mode (looking-at mh-scan-valid-regexp)) (mh-show)) (run-hooks 'mh-inc-folder-hook))) diff --git a/lisp/mh-e/mh-search.el b/lisp/mh-e/mh-search.el index a8860263531..d31d0ca495a 100644 --- a/lisp/mh-e/mh-search.el +++ b/lisp/mh-e/mh-search.el @@ -1434,7 +1434,7 @@ being the list of messages originally from that folder." (beginning-of-line) (push (cons (buffer-substring-no-properties (point) (mh-line-end-position)) - (set-marker (make-marker) (point))) + (point-marker)) alist))) (setq imenu--index-alist (nreverse alist))))) diff --git a/lisp/mh-e/mh-xface.el b/lisp/mh-e/mh-xface.el index 7582158fefd..4340373f5c4 100644 --- a/lisp/mh-e/mh-xface.el +++ b/lisp/mh-e/mh-xface.el @@ -323,7 +323,7 @@ elements of the list are nil." If the URL isn't present in the cache then it is fetched with wget." (let* ((cache-filename (mh-x-image-url-cache-canonicalize url)) (state (mh-x-image-get-download-state cache-filename)) - (marker (set-marker (make-marker) (point)))) + (marker (point-marker))) (set (make-local-variable 'mh-x-image-marker) marker) (cond ((not (mh-x-image-url-sane-p url))) ((eq state 'ok) diff --git a/lisp/minibuf-eldef.el b/lisp/minibuf-eldef.el index 3826a91f0e0..3b59a9c622a 100644 --- a/lisp/minibuf-eldef.el +++ b/lisp/minibuf-eldef.el @@ -38,6 +38,7 @@ (defun minibuffer-default--in-prompt-regexps () `(("\\( (default\\(?: is\\)? \\(.*\\))\\):? \\'" 1 ,(if minibuffer-eldef-shorten-default " [\\2]")) + ("([^(]+?\\(, default\\(?: is\\)? \\(.*\\)\\)):? \\'" 1) ("\\( \\[.*\\]\\):? *\\'" 1))) (defcustom minibuffer-eldef-shorten-default nil diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 0d2815e535e..ec237f0f664 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1458,9 +1458,11 @@ It also eliminates runs of equal strings." 'mouse-face 'highlight) (put-text-property (point) (progn (insert (car str)) (point)) 'mouse-face 'highlight) - (add-text-properties (point) (progn (insert (cadr str)) (point)) - '(mouse-face nil - face completions-annotations))) + (let ((beg (point)) + (end (progn (insert (cadr str)) (point)))) + (put-text-property beg end 'mouse-face nil) + (font-lock-prepend-text-property beg end 'face + 'completions-annotations))) (cond ((eq completions-format 'vertical) ;; Vertical format @@ -1487,12 +1489,11 @@ See also `display-completion-list'.") (defface completions-first-difference '((t (:inherit bold))) - "Face put on the first uncommon character in completions in *Completions* buffer." + "Face added on the first uncommon character in completions in *Completions* buffer." :group 'completion) -(defface completions-common-part - '((t (:inherit default))) - "Face put on the common prefix substring in completions in *Completions* buffer. +(defface completions-common-part '((t nil)) + "Face added on the common prefix substring in completions in *Completions* buffer. The idea of `completions-common-part' is that you can use it to make the common parts less visible than normal, so that the rest of the differing parts is, by contrast, slightly highlighted." @@ -1513,17 +1514,18 @@ of the differing parts is, by contrast, slightly highlighted." (car (setq elem (cons (copy-sequence (car elem)) (cdr elem)))) (setq elem (copy-sequence elem))))) - (put-text-property 0 - ;; If completion-boundaries returns incorrect - ;; values, all-completions may return strings - ;; that don't contain the prefix. - (min com-str-len (length str)) - 'font-lock-face 'completions-common-part - str) + (font-lock-prepend-text-property + 0 + ;; If completion-boundaries returns incorrect + ;; values, all-completions may return strings + ;; that don't contain the prefix. + (min com-str-len (length str)) + 'face 'completions-common-part str) (if (> (length str) com-str-len) - (put-text-property com-str-len (1+ com-str-len) - 'font-lock-face 'completions-first-difference - str))) + (font-lock-prepend-text-property com-str-len (1+ com-str-len) + 'face + 'completions-first-difference + str))) elem) completions) base-size)))) @@ -2045,10 +2047,7 @@ with `minibuffer-local-must-match-map'.") (define-key map "i" 'info) (define-key map "m" 'mail) (define-key map "n" 'make-frame) - (define-key map [mouse-1] (lambda () (interactive) - (with-current-buffer "*Messages*" - (goto-char (point-max)) - (display-buffer (current-buffer))))) + (define-key map [mouse-1] 'view-echo-area-messages) ;; So the global down-mouse-1 binding doesn't clutter the execution of the ;; above mouse-1 binding. (define-key map [down-mouse-1] #'ignore) diff --git a/lisp/mouse.el b/lisp/mouse.el index 538e6a500bb..bd7242e3b20 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -425,7 +425,7 @@ must be one of the symbols `header', `mode', or `vertical'." (frame-parameters frame))) 'right))) (draggable t) - finished event position growth dragged) + event position growth dragged) (cond ((eq line 'header) ;; Check whether header-line can be dragged at all. @@ -456,39 +456,33 @@ must be one of the symbols `header', `mode', or `vertical'." ;; Start tracking. (track-mouse - ;; Loop reading events and sampling the position of the mouse. - (while (not finished) - (setq event (read-event)) + ;; Loop reading events and sampling the position of the mouse, + ;; until there is a non-mouse-movement event. Also, + ;; scroll-bar-movement events are the same as mouse movement for + ;; our purposes. (Why? -- cyd) + ;; If you change this, check that all of the following still work: + ;; Resizing windows by dragging mode-lines and header lines, + ;; and vertical lines (in windows without scroll bars). + ;; Doing this should not select another window, even if + ;; mouse-autoselect-window is non-nil. + ;; Mouse-1 clicks in Info header lines should advance position + ;; by one node at a time if mouse-1-click-follows-link is non-nil, + ;; otherwise they should just select the window. + (while (progn + (setq event (read-event)) + (memq (car-safe event) + '(mouse-movement scroll-bar-movement + switch-frame select-window))) (setq position (mouse-position)) ;; Do nothing if ;; - there is a switch-frame event. ;; - the mouse isn't in the frame that we started in ;; - the mouse isn't in any Emacs frame - ;; Drag if - ;; - there is a mouse-movement event - ;; - there is a scroll-bar-movement event (Why? -- cyd) - ;; (same as mouse movement for our purposes) - ;; Quit if - ;; - there is a keyboard event or some other unknown event. (cond - ((not (consp event)) - (setq finished t)) ((memq (car event) '(switch-frame select-window)) nil) - ((not (memq (car event) '(mouse-movement scroll-bar-movement))) - (when (consp event) - ;; Do not unread a drag-mouse-1 event to avoid selecting - ;; some other window. For vertical line dragging do not - ;; unread mouse-1 events either (but only if we dragged at - ;; least once to allow mouse-1 clicks get through). - (unless (and dragged - (if (eq line 'vertical) - (memq (car event) '(drag-mouse-1 mouse-1)) - (eq (car event) 'drag-mouse-1))) - (push event unread-command-events))) - (setq finished t)) - ((not (and (eq (car position) frame) - (cadr position))) + ((not (and (eq (car position) frame) + (cadr position))) nil) ((eq line 'vertical) ;; Drag vertical divider. @@ -512,12 +506,13 @@ must be one of the symbols `header', `mode', or `vertical'." growth (- growth))))))) ;; Process the terminating event. - (when (and (mouse-event-p event) on-link (not dragged) - (mouse--remap-link-click-p start-event event)) - ;; If mouse-2 has never been done by the user, it doesn't have - ;; the necessary property to be interpreted correctly. - (put 'mouse-2 'event-kind 'mouse-click) - (setcar event 'mouse-2) + (unless dragged + (when (and (mouse-event-p event) on-link + (mouse--remap-link-click-p start-event event)) + ;; If mouse-2 has never been done by the user, it doesn't have + ;; the necessary property to be interpreted correctly. + (put 'mouse-2 'event-kind 'mouse-click) + (setcar event 'mouse-2)) (push event unread-command-events)))) (defun mouse-drag-mode-line (start-event) @@ -870,6 +865,8 @@ DO-MOUSE-DRAG-REGION-POST-PROCESS should only be used by ;; Find its binding. (let* ((fun (key-binding (vector (car event)))) + ;; FIXME This doesn't make sense, because + ;; event-click-count always returns something >= 1. (do-multi-click (and (> (event-click-count event) 0) (functionp fun) (not (memq fun '(mouse-set-point @@ -885,9 +882,9 @@ DO-MOUSE-DRAG-REGION-POST-PROCESS should only be used by (copy-region-as-kill (mark) (point))))) ;; Otherwise, run binding of terminating up-event. + (deactivate-mark) (if do-multi-click (goto-char start-point) - (deactivate-mark) (unless moved-off-start (pop-mark))) diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index bf6afae45da..2b8c7ae145b 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -720,6 +720,7 @@ parenthesized expressions in REGEXP for the components (in that order)." "^Data connection \\|" "^local:\\|^Trying\\|^125 \\|^550-\\|^221 .*oodbye\\|" "^500 .*AUTH\\|^KERBEROS\\|" + "^500 This security scheme is not implemented\\|" "^504 Unknown security mechanism\\|" "^530 Please login with USER and PASS\\|" ; non kerberized vsFTPd "^534 Kerberos Authentication not enabled\\|" @@ -3296,7 +3297,6 @@ system TYPE.") (name (ange-ftp-quote-string (nth 2 parsed))) (temp (ange-ftp-make-tmp-name host)) (binary (ange-ftp-binary-file filename)) - (buffer-file-type buffer-file-type) (abbr (ange-ftp-abbreviate-filename filename)) (coding-system-used last-coding-system-used) size) @@ -3321,10 +3321,7 @@ system TYPE.") size (nth 1 (ange-ftp-real-insert-file-contents temp visit beg end replace)) - coding-system-used last-coding-system-used - ;; override autodetection of buffer file type - ;; to ensure buffer is saved in DOS format - buffer-file-type binary) + coding-system-used last-coding-system-used) (signal 'ftp-error (list "Opening input file:" @@ -4087,7 +4084,8 @@ directory, so that Emacs will know its current contents." (or (file-exists-p parent) (ange-ftp-make-directory parent parents)))) (if (file-exists-p dir) - (error "Cannot make directory %s: file already exists" dir) + (unless parents + (error "Cannot make directory %s: file already exists" dir)) (let ((parsed (ange-ftp-ftp-name dir))) (if parsed (let* ((host (nth 0 parsed)) @@ -5136,7 +5134,7 @@ Other orders of $ and _ seem to all work just fine.") (forward-line 1)) ;; Would like to look for a "Total" line, or a "Directory" line to ;; make sure that the listing isn't complete garbage before putting - ;; in "." and "..", but we can't even count on all VAX's giving us + ;; in "." and "..", but we can't count on VMS giving us ;; either of these. (puthash "." t tbl) (puthash ".." t tbl)) diff --git a/lisp/net/eudc-bob.el b/lisp/net/eudc-bob.el index 45f15b14a54..106aab2ac0a 100644 --- a/lisp/net/eudc-bob.el +++ b/lisp/net/eudc-bob.el @@ -1,9 +1,9 @@ -;;; eudc-bob.el --- Binary Objects Support for EUDC +;;; eudc-bob.el --- Binary Objects Support for EUDC -*- coding: utf-8 -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Janík <Pavel@Janik.cz> +;; Maintainer: Pavel JanÃk <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc diff --git a/lisp/net/eudc-export.el b/lisp/net/eudc-export.el index 690a5f15c40..b43a8c631e3 100644 --- a/lisp/net/eudc-export.el +++ b/lisp/net/eudc-export.el @@ -1,9 +1,9 @@ -;;; eudc-export.el --- functions to export EUDC query results +;;; eudc-export.el --- functions to export EUDC query results -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Janík <Pavel@Janik.cz> +;; Maintainer: Pavel JanÃk <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc diff --git a/lisp/net/eudc-hotlist.el b/lisp/net/eudc-hotlist.el index 0322fa766f3..a8a51b7d61b 100644 --- a/lisp/net/eudc-hotlist.el +++ b/lisp/net/eudc-hotlist.el @@ -1,9 +1,9 @@ -;;; eudc-hotlist.el --- hotlist management for EUDC +;;; eudc-hotlist.el --- hotlist management for EUDC -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Janík <Pavel@Janik.cz> +;; Maintainer: Pavel JanÃk <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc diff --git a/lisp/net/eudc-vars.el b/lisp/net/eudc-vars.el index c2cc0154151..d53fd83eee7 100644 --- a/lisp/net/eudc-vars.el +++ b/lisp/net/eudc-vars.el @@ -1,9 +1,9 @@ -;;; eudc-vars.el --- Emacs Unified Directory Client +;;; eudc-vars.el --- Emacs Unified Directory Client -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Janík <Pavel@Janik.cz> +;; Maintainer: Pavel JanÃk <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc diff --git a/lisp/net/eudc.el b/lisp/net/eudc.el index 621b9b90879..ef09267f854 100644 --- a/lisp/net/eudc.el +++ b/lisp/net/eudc.el @@ -1,9 +1,9 @@ -;;; eudc.el --- Emacs Unified Directory Client +;;; eudc.el --- Emacs Unified Directory Client -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Janík <Pavel@Janik.cz> +;; Maintainer: Pavel JanÃk <Pavel@Janik.cz> ;; Keywords: comm ;; This file is part of GNU Emacs. diff --git a/lisp/net/eudcb-bbdb.el b/lisp/net/eudcb-bbdb.el index 58d94622486..9f6dba703b1 100644 --- a/lisp/net/eudcb-bbdb.el +++ b/lisp/net/eudcb-bbdb.el @@ -1,9 +1,9 @@ -;;; eudcb-bbdb.el --- Emacs Unified Directory Client - BBDB Backend +;;; eudcb-bbdb.el --- Emacs Unified Directory Client - BBDB Backend -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Janík <Pavel@Janik.cz> +;; Maintainer: Pavel JanÃk <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc diff --git a/lisp/net/eudcb-ldap.el b/lisp/net/eudcb-ldap.el index 23eed4b3c0a..d0ba47ad753 100644 --- a/lisp/net/eudcb-ldap.el +++ b/lisp/net/eudcb-ldap.el @@ -1,9 +1,9 @@ -;;; eudcb-ldap.el --- Emacs Unified Directory Client - LDAP Backend +;;; eudcb-ldap.el --- Emacs Unified Directory Client - LDAP Backend -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Janík <Pavel@Janik.cz> +;; Maintainer: Pavel JanÃk <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc diff --git a/lisp/net/eudcb-ph.el b/lisp/net/eudcb-ph.el index 3033e945c24..1796f2d9806 100644 --- a/lisp/net/eudcb-ph.el +++ b/lisp/net/eudcb-ph.el @@ -1,9 +1,9 @@ -;;; eudcb-ph.el --- Emacs Unified Directory Client - CCSO PH/QI Backend +;;; eudcb-ph.el --- Emacs Unified Directory Client - CCSO PH/QI Backend -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Janík <Pavel@Janik.cz> +;; Maintainer: Pavel JanÃk <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc diff --git a/lisp/net/goto-addr.el b/lisp/net/goto-addr.el index 1005285917e..59e4da16619 100644 --- a/lisp/net/goto-addr.el +++ b/lisp/net/goto-addr.el @@ -156,18 +156,19 @@ A value of t means there is no limit--fontify regardless of the size." (defvar goto-address-prog-mode) -(defun goto-address-fontify () +(defun goto-address-fontify (&optional start end) "Fontify the URLs and e-mail addresses in the current buffer. This function implements `goto-address-highlight-p' and `goto-address-fontify-p'." ;; Clean up from any previous go. - (goto-address-unfontify (point-min) (point-max)) + (goto-address-unfontify (or start (point-min)) (or end (point-max))) (save-excursion (let ((inhibit-point-motion-hooks t)) - (goto-char (point-min)) + (goto-char (or start (point-min))) (when (or (eq t goto-address-fontify-maximum-size) - (< (- (point-max) (point)) goto-address-fontify-maximum-size)) - (while (re-search-forward goto-address-url-regexp nil t) + (< (- (or end (point-max)) (point)) + goto-address-fontify-maximum-size)) + (while (re-search-forward goto-address-url-regexp end t) (let* ((s (match-beginning 0)) (e (match-end 0)) this-overlay) @@ -187,8 +188,8 @@ and `goto-address-fontify-p'." (overlay-put this-overlay 'keymap goto-address-highlight-keymap) (overlay-put this-overlay 'goto-address t)))) - (goto-char (point-min)) - (while (re-search-forward goto-address-mail-regexp nil t) + (goto-char (or start (point-min))) + (while (re-search-forward goto-address-mail-regexp end t) (let* ((s (match-beginning 0)) (e (match-end 0)) this-overlay) @@ -212,11 +213,9 @@ and `goto-address-fontify-p'." (defun goto-address-fontify-region (start end) "Fontify URLs and e-mail addresses in the given region." (save-excursion - (save-restriction - (let ((beg-line (progn (goto-char start) (line-beginning-position))) - (end-line (progn (goto-char end) (line-end-position)))) - (narrow-to-region beg-line end-line) - (goto-address-fontify))))) + (let ((beg-line (progn (goto-char start) (line-beginning-position))) + (end-line (progn (goto-char end) (line-end-position)))) + (goto-address-fontify beg-line end-line)))) ;; code to find and goto addresses; much of this has been blatantly ;; snarfed from browse-url.el diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el index 28fd5c67ff8..82c1ce010b8 100644 --- a/lisp/net/net-utils.el +++ b/lisp/net/net-utils.el @@ -285,7 +285,8 @@ This variable is only used if the variable (define-derived-mode net-utils-mode special-mode "NetworkUtil" "Major mode for interacting with an external network utility." (set (make-local-variable 'font-lock-defaults) - '((net-utils-font-lock-keywords)))) + '((net-utils-font-lock-keywords))) + (setq-local revert-buffer-function #'net-utils--revert-function)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Utility functions @@ -354,20 +355,39 @@ This variable is only used if the variable ;; General network utilities (diagnostic) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun net-utils-run-simple (buffer-name program-name args) +;; Todo: This data could be saved in a bookmark. +(defvar net-utils--revert-cmd nil) + +(defun net-utils-run-simple (buffer program-name args &optional nodisplay) "Run a network utility for diagnostic output only." - (interactive) - (when (get-buffer buffer-name) - (kill-buffer buffer-name)) - (get-buffer-create buffer-name) - (with-current-buffer buffer-name + (with-current-buffer (if (stringp buffer) (get-buffer-create buffer) buffer) + (let ((proc (get-buffer-process (current-buffer)))) + (when proc + (set-process-filter proc nil) + (delete-process proc))) + (let ((inhibit-read-only t)) + (erase-buffer)) (net-utils-mode) + (setq-local net-utils--revert-cmd + `(net-utils-run-simple ,(current-buffer) + ,program-name ,args nodisplay)) (set-process-filter - (apply 'start-process (format "%s" program-name) - buffer-name program-name args) - 'net-utils-remove-ctrl-m-filter) - (goto-char (point-min))) - (display-buffer buffer-name)) + (apply 'start-process program-name + (current-buffer) program-name args) + 'net-utils-remove-ctrl-m-filter) + (goto-char (point-min)) + (unless nodisplay (display-buffer (current-buffer))))) + +(defun net-utils--revert-function (&optional ignore-auto noconfirm) + (message "Reverting `%s'..." (buffer-name)) + (apply (car net-utils--revert-cmd) (cdr net-utils--revert-cmd)) + (let ((proc (get-buffer-process (current-buffer)))) + (when proc + (set-process-sentinel + proc + (lambda (process event) + (when (string= event "finished\n") + (message "Reverting `%s' done" (process-buffer process)))))))) ;;;###autoload (defun ifconfig () @@ -428,9 +448,8 @@ This variable is only used if the variable (if traceroute-program-options (append traceroute-program-options (list target)) (list target)))) - (net-utils-run-program + (net-utils-run-simple (concat "Traceroute" " " target) - (concat "** Traceroute ** " traceroute-program " ** " target) traceroute-program options))) diff --git a/lisp/net/network-stream.el b/lisp/net/network-stream.el index 8cf9ec67e53..fd21997ba28 100644 --- a/lisp/net/network-stream.el +++ b/lisp/net/network-stream.el @@ -262,8 +262,9 @@ STARTTLS upgrades even if Emacs doesn't have built-in TLS functionality. ;; EHLO for SMTP. (when (plist-get parameters :always-query-capabilities) (network-stream-command stream capability-command eo-capa))) - (when (string-match success-string - (network-stream-command stream starttls-command eoc)) + (when (let ((response + (network-stream-command stream starttls-command eoc))) + (and response (string-match success-string response))) ;; The server said it was OK to begin STARTTLS negotiations. (if builtin-starttls (let ((cert (network-stream-certificate host service parameters))) diff --git a/lisp/net/newst-plainview.el b/lisp/net/newst-plainview.el index 2eb04787bea..c7a3a107078 100644 --- a/lisp/net/newst-plainview.el +++ b/lisp/net/newst-plainview.el @@ -5,7 +5,7 @@ ;; Author: Ulf Jasper <ulf.jasper@web.de> ;; Filename: newst-plainview.el ;; URL: http://www.nongnu.org/newsticker -;; Time-stamp: "13. Mai 2011, 19:28:34 (ulf)" +;; Time-stamp: "Mon 11-Feb-2013 20:27:11 gm on skiddaw" ;; Package: newsticker ;; ====================================================================== @@ -405,6 +405,7 @@ images." (define-key map "sx" 'newsticker-show-extra) (define-key map "hx" 'newsticker-hide-extra) + (define-key map [?\S-\ ] 'scroll-down-command) (define-key map " " 'scroll-up-command) (define-key map "q" 'newsticker-close-buffer) (define-key map "p" 'newsticker-previous-item) diff --git a/lisp/net/quickurl.el b/lisp/net/quickurl.el index ce9ef55f499..1de9feb1341 100644 --- a/lisp/net/quickurl.el +++ b/lisp/net/quickurl.el @@ -272,7 +272,8 @@ It also restores point after the `read'." (defun quickurl-save-urls () "Save the contents of `quickurl-urls' to `quickurl-url-file'." (with-temp-buffer - (let ((standard-output (current-buffer))) + (let ((standard-output (current-buffer)) + (print-length nil)) (princ quickurl-prefix) (pp quickurl-urls) (princ quickurl-postfix) diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 086043c2b4a..7c70ded3eaa 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -625,7 +625,8 @@ last ping." (rcirc-float-time)))))) (rcirc-process-list)) ;; no processes, clean up timer - (cancel-timer rcirc-keepalive-timer) + (when (timerp rcirc-keepalive-timer) + (cancel-timer rcirc-keepalive-timer)) (setq rcirc-keepalive-timer nil))) (defun rcirc-handler-ctcp-KEEPALIVE (process target sender message) diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el index 6b4bc16c111..4ba8e5b5854 100644 --- a/lisp/net/soap-client.el +++ b/lisp/net/soap-client.el @@ -1768,7 +1768,11 @@ operations in a WSDL document." (url-package-name "soap-client.el") (url-package-version "1.0") (url-http-version "1.0") - (url-request-data (soap-create-envelope operation parameters wsdl)) + (url-request-data + ;; url-request-data expects a unibyte string already encoded... + (encode-coding-string + (soap-create-envelope operation parameters wsdl) + 'utf-8)) (url-mime-charset-string "utf-8;q=1, iso-8859-1;q=0.5") (url-request-coding-system 'utf-8) (url-http-attempt-keepalives t) diff --git a/lisp/net/socks.el b/lisp/net/socks.el index 75b0ebe55ff..415397c4171 100644 --- a/lisp/net/socks.el +++ b/lisp/net/socks.el @@ -648,7 +648,7 @@ version.") (progn (setq res (buffer-substring (match-beginning 2) (match-end 2)) - res (mapcar 'string-to-int (split-string res "\\."))))) + res (mapcar 'string-to-number (split-string res "\\."))))) (kill-buffer (current-buffer))) res) host)) diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index ab13d4cf442..2d683a4d3d2 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el @@ -23,31 +23,33 @@ ;;; Commentary: -;; The Android Debug Bridge must be installed on your local machine. -;; Add the following form into your .emacs: +;; The Android Debug Bridge "adb" must be installed on your local +;; machine. If it is not in your $PATH, add the following form into +;; your .emacs: ;; -;; (setq tramp-adb-sdk-dir "/path/to/android/sdk") +;; (setq tramp-adb-program "/path/to/adb") ;; ;; Due to security it is not possible to access non-root devices. ;;; Code: (require 'tramp) +(require 'time-date) (defvar dired-move-to-filename-regexp) -(defcustom tramp-adb-sdk-dir "~/Android/sdk" - "Set to the directory containing the Android SDK." - :type 'string +(defcustom tramp-adb-program "adb" + "Name of the Android Debug Bridge program." + :group 'tramp :version "24.4" - :group 'tramp) + :type 'string) ;;;###tramp-autoload (defconst tramp-adb-method "adb" "*When this method name is used, forward all calls to Android Debug Bridge.") (defcustom tramp-adb-prompt - "^\\(?:[[:alnum:]]*@[[:alnum:]]*[^#\\$]*\\)?[#\\$][[:space:]]" + "^\\(?:[[:digit:]]*|?\\)?\\(?:[[:alnum:]]*@[[:alnum:]]*[^#\\$]*\\)?[#\\$][[:space:]]" "Regexp used as prompt in almquist shell." :type 'string :version "24.4" @@ -148,21 +150,17 @@ pass to the OPERATION." (save-match-data (apply (cdr fn) args)) (tramp-run-real-handler operation args)))) -;; This cannot be a constant, because `tramp-adb-sdk-dir' is customizable. -(defun tramp-adb-program () - "The Android Debug Bridge." - (expand-file-name "platform-tools/adb" tramp-adb-sdk-dir)) - ;;;###tramp-autoload (defun tramp-adb-parse-device-names (ignore) "Return a list of (nil host) tuples allowed to access." - (with-temp-buffer - (when (zerop (call-process (tramp-adb-program) nil t nil "devices")) - (let (result) - (goto-char (point-min)) - (while (search-forward-regexp "^\\(\\S-+\\)[[:space:]]+device$" nil t) - (add-to-list 'result (list nil (match-string 1)))) - result)))) + (with-timeout (10) + (with-temp-buffer + (when (zerop (call-process tramp-adb-program nil t nil "devices")) + (let (result) + (goto-char (point-min)) + (while (search-forward-regexp "^\\(\\S-+\\)[[:space:]]+device$" nil t) + (add-to-list 'result (list nil (match-string 1)))) + result))))) (defun tramp-adb-handle-expand-file-name (name &optional dir) "Like `expand-file-name' for Tramp files." @@ -465,7 +463,7 @@ Emacs dired can't find files." (setq time-a (apply 'encode-time (parse-time-string (match-string 0 a)))) (string-match tramp-adb-ls-date-regexp b) (setq time-b (apply 'encode-time (parse-time-string (match-string 0 b)))) - (time-less-p time-b time-a))) + (tramp-time-less-p time-b time-a))) (defun tramp-adb-ls-output-name-less-p (a b) "Sort \"ls\" output by name, ascending." @@ -638,7 +636,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." newname (expand-file-name newname)) (if (file-directory-p filename) - (copy-directory filename newname keep-date t) + (tramp-file-name-handler 'copy-directory filename newname keep-date t) (with-tramp-progress-reporter (tramp-dissect-file-name (if (file-remote-p filename) filename newname)) 0 (format "Copying %s to %s" filename newname) @@ -698,7 +696,10 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (tramp-flush-file-property v localname) ;; Short track. (tramp-adb-barf-unless-okay - v (format "mv %s %s" (file-remote-p filename 'localname) localname) + v (format + "mv %s %s" + (tramp-file-name-handler 'file-remote-p filename 'localname) + localname) "Error renaming %s to %s" filename newname)) ;; Rename by copy. @@ -774,13 +775,11 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." ;; directory. (condition-case nil (progn - (setq ret 0 - ret - (tramp-adb-barf-unless-okay - v (format "(cd %s; %s)" - (tramp-shell-quote-argument localname) - command) - "")) + (setq ret 0) + (tramp-adb-barf-unless-okay + v (format "(cd %s; %s)" + (tramp-shell-quote-argument localname) command) + "") ;; We should show the output anyway. (when outbuf (with-current-buffer outbuf @@ -898,60 +897,76 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (defun tramp-adb-handle-start-file-process (name buffer program &rest args) "Like `start-file-process' for Tramp files." (with-parsed-tramp-file-name default-directory nil - ;; When PROGRAM is nil, we just provide a tty. + ;; When PROGRAM is nil, we should provide a tty. This is not + ;; possible here. + (unless (stringp program) + (tramp-error v 'file-error "PROGRAM must be a string")) + (let ((command - (when (stringp program) - (format "cd %s; %s" - (tramp-shell-quote-argument localname) - (mapconcat 'tramp-shell-quote-argument - (cons program args) " ")))) + (format "cd %s; %s" + (tramp-shell-quote-argument localname) + (mapconcat 'tramp-shell-quote-argument + (cons program args) " "))) (tramp-process-connection-type (or (null program) tramp-process-connection-type)) (bmp (and (buffer-live-p buffer) (buffer-modified-p buffer))) (name1 name) (i 0)) - (unwind-protect - (save-excursion - (save-restriction - (unless buffer - ;; BUFFER can be nil. We use a temporary buffer. - (setq buffer (generate-new-buffer tramp-temp-buffer-name))) - (while (get-process name1) - ;; NAME must be unique as process name. - (setq i (1+ i) - name1 (format "%s<%d>" name i))) - (setq name name1) - ;; Set the new process properties. - (tramp-set-connection-property v "process-name" name) - (tramp-set-connection-property v "process-buffer" buffer) - ;; Activate narrowing in order to save BUFFER contents. - ;; Clear also the modification time; otherwise we might - ;; be interrupted by `verify-visited-file-modtime'. - (with-current-buffer (tramp-get-connection-buffer v) - (let ((buffer-undo-list t)) + + (unless buffer + ;; BUFFER can be nil. We use a temporary buffer. + (setq buffer (generate-new-buffer tramp-temp-buffer-name))) + (while (get-process name1) + ;; NAME must be unique as process name. + (setq i (1+ i) + name1 (format "%s<%d>" name i))) + (setq name name1) + ;; Set the new process properties. + (tramp-set-connection-property v "process-name" name) + (tramp-set-connection-property v "process-buffer" buffer) + + (with-current-buffer (tramp-get-connection-buffer v) + (unwind-protect + ;; We catch this event. Otherwise, `start-process' could + ;; be called on the local host. + (save-excursion + (save-restriction + ;; Activate narrowing in order to save BUFFER + ;; contents. Clear also the modification time; + ;; otherwise we might be interrupted by + ;; `verify-visited-file-modtime'. + (let ((buffer-undo-list t) + (buffer-read-only nil) + (mark (point))) (clear-visited-file-modtime) (narrow-to-region (point-max) (point-max)) - (if command - ;; Send the command. - (tramp-adb-send-command v command) - ;; Open the connection. - (tramp-adb-maybe-open-connection v)))) - (let ((p (tramp-get-connection-process v))) - ;; Set sentinel and query flag for this process. - (tramp-set-connection-property p "vector" v) - (set-process-sentinel p 'tramp-process-sentinel) - (tramp-compat-set-process-query-on-exit-flag p t) - ;; Return process. - p))) - ;; Save exit. - (with-current-buffer (tramp-get-connection-buffer v) + ;; We call `tramp-adb-maybe-open-connection', in + ;; order to cleanup the prompt afterwards. + (tramp-adb-maybe-open-connection v) + (widen) + (delete-region mark (point)) + (narrow-to-region (point-max) (point-max)) + ;; Send the command. + (let ((tramp-adb-prompt (regexp-quote command))) + (tramp-adb-send-command v command)) + (let ((p (tramp-get-connection-process v))) + ;; Set query flag and process marker for this + ;; process. We ignore errors, because the process + ;; could have finished already. + (ignore-errors + (tramp-compat-set-process-query-on-exit-flag p t) + (set-marker (process-mark p) (point))) + ;; Return process. + p)))) + + ;; Save exit. (if (string-match tramp-temp-buffer-name (buffer-name)) - (progn + (ignore-errors (set-process-buffer (tramp-get-connection-process v) nil) (kill-buffer (current-buffer))) - (set-buffer-modified-p bmp))) - (tramp-set-connection-property v "process-name" nil) - (tramp-set-connection-property v "process-buffer" nil))))) + (set-buffer-modified-p bmp)) + (tramp-set-connection-property v "process-name" nil) + (tramp-set-connection-property v "process-buffer" nil)))))) ;; Helper functions. @@ -961,11 +976,11 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (setq args (append (list "-s" (tramp-file-name-host vec)) args))) (with-temp-buffer (prog1 - (unless (zerop (apply 'call-process (tramp-adb-program) nil t nil args)) + (unless (zerop (apply 'call-process tramp-adb-program nil t nil args)) (buffer-string)) (tramp-message vec 6 "%s %s\n%s" - (tramp-adb-program) (mapconcat 'identity args " ") (buffer-string))))) + tramp-adb-program (mapconcat 'identity args " ") (buffer-string))))) (defun tramp-adb-find-test-command (vec) "Checks, whether the ash has a builtin \"test\" command. @@ -994,34 +1009,31 @@ This happens for Android >= 4.0." (while (re-search-forward "\r+$" nil t) (replace-match "" nil nil))))) -(defun tramp-adb-barf-unless-okay (vec command fmt &rest args) - "Run COMMAND, check exit status, throw error if exit status not okay. -FMT and ARGS are passed to `error'." - (tramp-adb-send-command vec (format "%s; echo tramp_exit_status $?" command)) - (with-current-buffer (tramp-get-connection-buffer vec) - (goto-char (point-max)) - (unless (re-search-backward "tramp_exit_status [0-9]+" nil t) - (tramp-error - vec 'file-error "Couldn't find exit status of `%s'" command)) - (skip-chars-forward "^ ") - (unless (zerop (read (current-buffer))) - (apply 'tramp-error vec 'file-error fmt args)) - (let (buffer-read-only) - (delete-region (match-beginning 0) (point-max))))) - (defun tramp-adb-command-exit-status (vec command) "Run COMMAND and return its exit status. Sends `echo $?' along with the COMMAND for checking the exit status. If COMMAND is nil, just sends `echo $?'. Returns the exit status found." - (tramp-adb-send-command vec (format "%s; echo tramp_exit_status $?" command)) + (tramp-adb-send-command + vec (if command + (format "%s; echo tramp_exit_status $?" command) + "echo tramp_exit_status $?")) (with-current-buffer (tramp-get-connection-buffer vec) (goto-char (point-max)) (unless (re-search-backward "tramp_exit_status [0-9]+" nil t) (tramp-error vec 'file-error "Couldn't find exit status of `%s'" command)) (skip-chars-forward "^ ") - (read (current-buffer)))) + (prog1 + (read (current-buffer)) + (let (buffer-read-only) + (delete-region (match-beginning 0) (point-max)))))) + +(defun tramp-adb-barf-unless-okay (vec command fmt &rest args) + "Run COMMAND, check exit status, throw error if exit status not okay. +FMT and ARGS are passed to `error'." + (unless (zerop (tramp-adb-command-exit-status vec command)) + (apply 'tramp-error vec 'file-error fmt args))) (defun tramp-adb-wait-for-output (proc &optional timeout) "Wait for output from remote command." @@ -1060,7 +1072,15 @@ connection if a previous connection has died for some reason." (let* ((buf (tramp-get-connection-buffer vec)) (p (get-buffer-process buf)) (host (tramp-file-name-host vec)) + (user (tramp-file-name-user vec)) (devices (mapcar 'cadr (tramp-adb-parse-device-names nil)))) + + ;; Maybe we know already that "su" is not supported. We cannot + ;; use a connection property, because we have not checked yet + ;; whether it is still the same device. + (when (and user (not (tramp-get-file-property vec "" "su-command-p" t))) + (tramp-error vec 'file-error "Cannot switch to user `%s'" user)) + (unless (and p (processp p) (memq (process-status p) '(run open))) (save-match-data @@ -1082,14 +1102,14 @@ connection if a previous connection has died for some reason." (p (let ((default-directory (tramp-compat-temporary-file-directory))) (apply 'start-process (tramp-get-connection-name vec) buf - (tramp-adb-program) args)))) + tramp-adb-program args)))) (tramp-message vec 6 "%s" (mapconcat 'identity (process-command p) " ")) ;; Wait for initial prompt. - (tramp-adb-wait-for-output p) + (tramp-adb-wait-for-output p 30) (unless (eq 'run (process-status p)) (tramp-error vec 'file-error "Terminated!")) - (set-process-query-on-exit-flag p nil) + (tramp-compat-set-process-query-on-exit-flag p nil) ;; Check whether the properties have been changed. If ;; yes, this is a strong indication that we must expire all @@ -1115,6 +1135,15 @@ connection if a previous connection has died for some reason." old-getprop new-getprop) (tramp-adb-maybe-open-connection vec))) + ;; Change user if indicated. + (when user + (tramp-adb-send-command vec (format "su %s" user)) + (unless (zerop (tramp-adb-command-exit-status vec nil)) + (delete-process p) + (tramp-set-file-property vec "" "su-command-p" nil) + (tramp-error + vec 'file-error "Cannot switch to user `%s'" user))) + ;; Set "remote-path" connection property. This is needed ;; for eshell. (tramp-adb-send-command vec "echo \\\"$PATH\\\"") diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el index d1ef1739bf7..13a955ff579 100644 --- a/lisp/net/tramp-cache.el +++ b/lisp/net/tramp-cache.el @@ -58,6 +58,19 @@ (defvar tramp-cache-data (make-hash-table :test 'equal) "Hash table for remote files properties.") +;;;###tramp-autoload +(defcustom tramp-connection-properties nil + "List of static connection properties. +Every entry has the form (REGEXP PROPERTY VALUE). The regexp +matches remote file names. It can be nil. PROPERTY is a string, +and VALUE the corresponding value. They are used, if there is no +matching entry in for PROPERTY in `tramp-cache-data'." + :group 'tramp + :version "24.4" + :type '(repeat (list (choice :tag "File Name regexp" regexp (const nil)) + (choice :tag " Property" string) + (choice :tag " Value" sexp)))) + (defcustom tramp-persistency-file-name (cond ;; GNU Emacs. @@ -85,16 +98,30 @@ (defvar tramp-cache-data-changed nil "Whether persistent cache data have been changed.") +(defun tramp-get-hash-table (key) + "Returns the hash table for KEY. +If it doesn't exist yet, it is created and initialized with +matching entries of `tramp-connection-properties'." + (or (gethash key tramp-cache-data) + (let ((hash + (puthash key (make-hash-table :test 'equal) tramp-cache-data))) + (when (vectorp key) + (dolist (elt tramp-connection-properties) + (when (string-match + (or (nth 0 elt) "") + (tramp-make-tramp-file-name + (aref key 0) (aref key 1) (aref key 2) nil)) + (tramp-set-connection-property key (nth 1 elt) (nth 2 elt))))) + hash))) + ;;;###tramp-autoload -(defun tramp-get-file-property (vec file property default) - "Get the PROPERTY of FILE from the cache context of VEC. +(defun tramp-get-file-property (key file property default) + "Get the PROPERTY of FILE from the cache context of KEY. Returns DEFAULT if not set." ;; Unify localname. - (setq vec (copy-sequence vec)) - (aset vec 3 (tramp-run-real-handler 'directory-file-name (list file))) - (let* ((hash (or (gethash vec tramp-cache-data) - (puthash vec (make-hash-table :test 'equal) - tramp-cache-data))) + (setq key (copy-sequence key)) + (aset key 3 (tramp-run-real-handler 'directory-file-name (list file))) + (let* ((hash (tramp-get-hash-table key)) (value (when (hash-table-p hash) (gethash property hash)))) (if ;; We take the value only if there is any, and @@ -112,7 +139,7 @@ Returns DEFAULT if not set." (setq value (cdr value)) (setq value default)) - (tramp-message vec 8 "%s %s %s" file property value) + (tramp-message key 8 "%s %s %s" file property value) (when (>= tramp-verbose 10) (let* ((var (intern (concat "tramp-cache-get-count-" property))) (val (or (ignore-errors (symbol-value var)) 0))) @@ -120,18 +147,16 @@ Returns DEFAULT if not set." value)) ;;;###tramp-autoload -(defun tramp-set-file-property (vec file property value) - "Set the PROPERTY of FILE to VALUE, in the cache context of VEC. +(defun tramp-set-file-property (key file property value) + "Set the PROPERTY of FILE to VALUE, in the cache context of KEY. Returns VALUE." ;; Unify localname. - (setq vec (copy-sequence vec)) - (aset vec 3 (tramp-run-real-handler 'directory-file-name (list file))) - (let ((hash (or (gethash vec tramp-cache-data) - (puthash vec (make-hash-table :test 'equal) - tramp-cache-data)))) + (setq key (copy-sequence key)) + (aset key 3 (tramp-run-real-handler 'directory-file-name (list file))) + (let ((hash (tramp-get-hash-table key))) ;; We put the timestamp there. (puthash property (cons (current-time) value) hash) - (tramp-message vec 8 "%s %s %s" file property value) + (tramp-message key 8 "%s %s %s" file property value) (when (>= tramp-verbose 10) (let* ((var (intern (concat "tramp-cache-set-count-" property))) (val (or (ignore-errors (symbol-value var)) 0))) @@ -139,26 +164,26 @@ Returns VALUE." value)) ;;;###tramp-autoload -(defun tramp-flush-file-property (vec file) - "Remove all properties of FILE in the cache context of VEC." +(defun tramp-flush-file-property (key file) + "Remove all properties of FILE in the cache context of KEY." ;; Remove file property of symlinks. - (let ((truename (tramp-get-file-property vec file "file-truename" nil))) + (let ((truename (tramp-get-file-property key file "file-truename" nil))) (when (and (stringp truename) (not (string-equal file truename))) - (tramp-flush-file-property vec truename))) + (tramp-flush-file-property key truename))) ;; Unify localname. - (setq vec (copy-sequence vec)) - (aset vec 3 (tramp-run-real-handler 'directory-file-name (list file))) - (tramp-message vec 8 "%s" file) - (remhash vec tramp-cache-data)) + (setq key (copy-sequence key)) + (aset key 3 (tramp-run-real-handler 'directory-file-name (list file))) + (tramp-message key 8 "%s" file) + (remhash key tramp-cache-data)) ;;;###tramp-autoload -(defun tramp-flush-directory-property (vec directory) - "Remove all properties of DIRECTORY in the cache context of VEC. +(defun tramp-flush-directory-property (key directory) + "Remove all properties of DIRECTORY in the cache context of KEY. Remove also properties of all files in subdirectories." (let ((directory (tramp-run-real-handler 'directory-file-name (list directory)))) - (tramp-message vec 8 "%s" directory) + (tramp-message key 8 "%s" directory) (maphash (lambda (key value) (when (and (stringp (tramp-file-name-localname key)) @@ -203,7 +228,7 @@ If the value is not set for the connection, returns DEFAULT." (when (vectorp key) (setq key (copy-sequence key)) (aset key 3 nil)) - (let* ((hash (gethash key tramp-cache-data)) + (let* ((hash (tramp-get-hash-table key)) (value (if (hash-table-p hash) (gethash property hash default) default))) @@ -220,15 +245,19 @@ PROPERTY is set persistent when KEY is a vector." (when (vectorp key) (setq key (copy-sequence key)) (aset key 3 nil)) - (let ((hash (or (gethash key tramp-cache-data) - (puthash key (make-hash-table :test 'equal) - tramp-cache-data)))) + (let ((hash (tramp-get-hash-table key))) (puthash property value hash) (setq tramp-cache-data-changed t) (tramp-message key 7 "%s %s" property value) value)) ;;;###tramp-autoload +(defun tramp-connection-property-p (key property) + "Check whether named PROPERTY of a connection is defined. +KEY identifies the connection, it is either a process or a vector." + (not (eq (tramp-get-connection-property key property 'undef) 'undef))) + +;;;###tramp-autoload (defun tramp-flush-connection-property (key) "Remove all properties identified by KEY. KEY identifies the connection, it is either a process or a vector." @@ -241,10 +270,8 @@ KEY identifies the connection, it is either a process or a vector." key 7 "%s %s" key (let ((hash (gethash key tramp-cache-data)) properties) - (if (hash-table-p hash) - (maphash - (lambda (x y) (add-to-list 'properties x 'append)) - (gethash key tramp-cache-data))) + (when (hash-table-p hash) + (maphash (lambda (x y) (add-to-list 'properties x 'append)) hash)) properties)) (setq tramp-cache-data-changed t) (remhash key tramp-cache-data)) @@ -365,7 +392,11 @@ for all methods. Resulting data are derived from connection history." (while (setq element (pop list)) (setq key (pop element)) (while (setq item (pop element)) - (tramp-set-connection-property key (pop item) (car item))))) + ;; We set only values which are not contained in + ;; `tramp-connection-properties'. The cache is + ;; initialized properly by side effect. + (unless (tramp-connection-property-p key (car item)) + (tramp-set-connection-property key (pop item) (car item)))))) (setq tramp-cache-data-changed nil)) (file-error ;; Most likely because the file doesn't exist yet. No message. diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el index 58469b22447..462f0d88367 100644 --- a/lisp/net/tramp-cmds.el +++ b/lisp/net/tramp-cmds.el @@ -186,7 +186,7 @@ This includes password cache, file cache, connection cache, buffers." 'tramp-load-report-modules ; pre-hook 'tramp-append-tramp-buffers ; post-hook - "\ + (propertize "\n" 'display "\ Enter your bug report in this message, including as much detail as you possibly can about the problem, what you did to cause it and what the local and remote machines are. @@ -209,7 +209,7 @@ contents of the *tramp/foo* buffer and the *debug tramp/foo* buffer in your bug report. --bug report follows this line-- -")))) +"))))) (defun tramp-reporter-dump-variable (varsym mailbuf) "Pretty-print the value of the variable in symbol VARSYM." @@ -348,10 +348,10 @@ the debug buffer(s).") (kill-buffer nil) (switch-to-buffer curbuf) (goto-char (point-max)) - (insert "\n\ + (insert (propertize "\n" 'display "\n\ This is a special notion of the `gnus/message' package. If you use another mail agent (by copying the contents of this buffer) -please ensure that the buffers are attached to your email.\n\n") +please ensure that the buffers are attached to your email.\n\n")) (dolist (buffer buffer-list) (tramp-compat-funcall 'mml-insert-empty-tag 'part 'type "text/plain" diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index 00ef43b1a66..d4639817b18 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -52,6 +52,7 @@ (require 'format-spec) (require 'shell) + (require 'trampver) (require 'tramp-loaddefs) ;; As long as password.el is not part of (X)Emacs, it shouldn't be @@ -96,7 +97,8 @@ ;; `remote-file-name-inhibit-cache' has been introduced with Emacs 24.1. ;; Besides `t', `nil', and integer, we use also timestamps (as ;; returned by `current-time') internally. - (defvar remote-file-name-inhibit-cache nil) + (unless (boundp 'remote-file-name-inhibit-cache) + (defvar remote-file-name-inhibit-cache nil)) ;; For not existing functions, or functions with a changed argument ;; list, there are compiler warnings. We want to avoid them in @@ -382,25 +384,30 @@ Not actually used. Use `(format \"%o\" i)' instead?" trash))) (delete-file filename))))) -;; RECURSIVE has been introduced with Emacs 23.2. -(defun tramp-compat-delete-directory (directory &optional recursive) +;; RECURSIVE has been introduced with Emacs 23.2. TRASH has been +;; introduced with Emacs 24.1. +(defun tramp-compat-delete-directory (directory &optional recursive trash) "Like `delete-directory' for Tramp files (compat function)." - (if (null recursive) - (delete-directory directory) - (condition-case nil - (tramp-compat-funcall 'delete-directory directory recursive) - ;; This Emacs version does not support the RECURSIVE flag. We - ;; use the implementation from Emacs 23.2. - (wrong-number-of-arguments - (setq directory (directory-file-name (expand-file-name directory))) - (if (not (file-symlink-p directory)) - (mapc (lambda (file) - (if (eq t (car (file-attributes file))) - (tramp-compat-delete-directory file recursive) - (delete-file file))) - (directory-files - directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))) - (delete-directory directory))))) + (condition-case nil + (cond + (trash + (tramp-compat-funcall 'delete-directory directory recursive trash)) + (recursive + (tramp-compat-funcall 'delete-directory directory recursive)) + (t + (delete-directory directory))) + ;; This Emacs version does not support the RECURSIVE or TRASH flag. We + ;; use the implementation from Emacs 23.2. + (wrong-number-of-arguments + (setq directory (directory-file-name (expand-file-name directory))) + (if (not (file-symlink-p directory)) + (mapc (lambda (file) + (if (eq t (car (file-attributes file))) + (tramp-compat-delete-directory file recursive trash) + (tramp-compat-delete-file file trash))) + (directory-files + directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))) + (delete-directory directory)))) ;; `number-sequence' does not exist in XEmacs. Implementation is ;; taken from Emacs 23. diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index d83599a6662..9dd37fdf63a 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -109,69 +109,15 @@ detected as prompt when being sent on echoing hosts, therefore.") (tramp-copy-keep-date t))) ;;;###tramp-autoload (add-to-list 'tramp-methods - '("scp" - (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") ("-e" "none") ("%h"))) - (tramp-async-args (("-q"))) - (tramp-remote-shell "/bin/sh") - (tramp-remote-shell-args ("-c")) - (tramp-copy-program "scp") - (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") ("-r"))) - (tramp-copy-keep-date t) - (tramp-copy-recursive t) - (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") - ("-o" "UserKnownHostsFile=/dev/null") - ("-o" "StrictHostKeyChecking=no"))) - (tramp-default-port 22))) -;;;###tramp-autoload -(add-to-list 'tramp-methods - '("scp1" - (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") - ("-1") ("-e" "none") ("%h"))) - (tramp-async-args (("-q"))) - (tramp-remote-shell "/bin/sh") - (tramp-remote-shell-args ("-c")) - (tramp-copy-program "scp") - (tramp-copy-args (("-1") ("-P" "%p") ("-p" "%k") ("-q") ("-r"))) - (tramp-copy-keep-date t) - (tramp-copy-recursive t) - (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") - ("-o" "UserKnownHostsFile=/dev/null") - ("-o" "StrictHostKeyChecking=no"))) - (tramp-default-port 22))) -;;;###tramp-autoload -(add-to-list 'tramp-methods - '("scp2" - (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") - ("-2") ("-e" "none") ("%h"))) - (tramp-async-args (("-q"))) - (tramp-remote-shell "/bin/sh") - (tramp-remote-shell-args ("-c")) - (tramp-copy-program "scp") - (tramp-copy-args (("-2") ("-P" "%p") ("-p" "%k") ("-q") ("-r"))) - (tramp-copy-keep-date t) - (tramp-copy-recursive t) - (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") - ("-o" "UserKnownHostsFile=/dev/null") - ("-o" "StrictHostKeyChecking=no"))) - (tramp-default-port 22))) -;;;###tramp-autoload -(add-to-list 'tramp-methods - '("scpc" + '("scp" (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") - ("-o" "ControlPath=%t.%%r@%%h:%%p") - ("-o" "ControlMaster=yes") + (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") ("-e" "none") ("%h"))) (tramp-async-args (("-q"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-args ("-c")) (tramp-copy-program "scp") - (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") ("-r") - ("-o" "ControlPath=%t.%%r@%%h:%%p") - ("-o" "ControlMaster=auto"))) + (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") ("-r") ("%c"))) (tramp-copy-keep-date t) (tramp-copy-recursive t) (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") @@ -182,14 +128,14 @@ detected as prompt when being sent on echoing hosts, therefore.") (add-to-list 'tramp-methods '("scpx" (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") - ("-e" "none") ("-t" "-t") - ("%h") ("/bin/sh"))) + (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") + ("-e" "none") ("-t" "-t") ("%h") ("/bin/sh"))) (tramp-async-args (("-q"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-args ("-c")) (tramp-copy-program "scp") - (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") ("-r"))) + (tramp-copy-args (("-P" "%p") ("-p" "%k") + ("-q") ("-r") ("%c"))) (tramp-copy-keep-date t) (tramp-copy-recursive t) (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") @@ -200,42 +146,25 @@ detected as prompt when being sent on echoing hosts, therefore.") (add-to-list 'tramp-methods '("sftp" (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") ("-e" "none") ("%h"))) + (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") + ("-e" "none") ("%h"))) (tramp-async-args (("-q"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-args ("-c")) - (tramp-copy-program "sftp"))) -;;;###tramp-autoload + (tramp-copy-program "sftp") + (tramp-copy-args ("%c")))) + ;;;###tramp-autoload (add-to-list 'tramp-methods '("rsync" (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") ("-e" "none") ("%h"))) - (tramp-async-args (("-q"))) - (tramp-remote-shell "/bin/sh") - (tramp-remote-shell-args ("-c")) - (tramp-copy-program "rsync") - (tramp-copy-args (("-e" "ssh") ("-t" "%k") ("-r"))) - (tramp-copy-keep-date t) - (tramp-copy-keep-tmpfile t) - (tramp-copy-recursive t))) -;;;###tramp-autoload -(add-to-list 'tramp-methods - `("rsyncc" - (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") - ("-o" "ControlPath=%t.%%r@%%h:%%p") - ("-o" "ControlMaster=yes") + (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") ("-e" "none") ("%h"))) (tramp-async-args (("-q"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-args ("-c")) (tramp-copy-program "rsync") (tramp-copy-args (("-t" "%k") ("-r"))) - (tramp-copy-env (("RSYNC_RSH") - (,(concat - "ssh" - " -o ControlPath=%t.%%r@%%h:%%p" - " -o ControlMaster=auto")))) + (tramp-copy-env (("RSYNC_RSH") ("ssh" "%c"))) (tramp-copy-keep-date t) (tramp-copy-keep-tmpfile t) (tramp-copy-recursive t))) @@ -257,33 +186,8 @@ detected as prompt when being sent on echoing hosts, therefore.") (add-to-list 'tramp-methods '("ssh" (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") ("-e" "none") ("%h"))) - (tramp-async-args (("-q"))) - (tramp-remote-shell "/bin/sh") - (tramp-remote-shell-args ("-c")) - (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") - ("-o" "UserKnownHostsFile=/dev/null") - ("-o" "StrictHostKeyChecking=no"))) - (tramp-default-port 22))) -;;;###tramp-autoload -(add-to-list 'tramp-methods - '("ssh1" - (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") - ("-1") ("-e" "none") ("%h"))) - (tramp-async-args (("-q"))) - (tramp-remote-shell "/bin/sh") - (tramp-remote-shell-args ("-c")) - (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") - ("-o" "UserKnownHostsFile=/dev/null") - ("-o" "StrictHostKeyChecking=no"))) - (tramp-default-port 22))) -;;;###tramp-autoload -(add-to-list 'tramp-methods - '("ssh2" - (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") - ("-2") ("-e" "none") ("%h"))) + (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") + ("-e" "none") ("%h"))) (tramp-async-args (("-q"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-args ("-c")) @@ -295,9 +199,8 @@ detected as prompt when being sent on echoing hosts, therefore.") (add-to-list 'tramp-methods '("sshx" (tramp-login-program "ssh") - (tramp-login-args (("-l" "%u") ("-p" "%p") - ("-e" "none") ("-t" "-t") - ("%h") ("/bin/sh"))) + (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") + ("-e" "none") ("-t" "-t") ("%h") ("/bin/sh"))) (tramp-async-args (("-q"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-args ("-c")) @@ -351,14 +254,6 @@ detected as prompt when being sent on echoing hosts, therefore.") (tramp-default-port 22))) ;;;###tramp-autoload (add-to-list 'tramp-methods - '("plink1" - (tramp-login-program "plink") - (tramp-login-args (("-l" "%u") ("-P" "%p") ("-1" "-ssh") ("%h"))) - (tramp-remote-shell "/bin/sh") - (tramp-remote-shell-args ("-c")) - (tramp-default-port 22))) -;;;###tramp-autoload -(add-to-list 'tramp-methods `("plinkx" (tramp-login-program "plink") ;; ("%h") must be a single element, see @@ -471,23 +366,12 @@ detected as prompt when being sent on echoing hosts, therefore.") (tramp-set-completion-function "rcp" tramp-completion-function-alist-rsh) (tramp-set-completion-function "remcp" tramp-completion-function-alist-rsh) (tramp-set-completion-function "scp" tramp-completion-function-alist-ssh) - (tramp-set-completion-function "scp1" tramp-completion-function-alist-ssh) - (tramp-set-completion-function "scp2" tramp-completion-function-alist-ssh) - (tramp-set-completion-function "scpc" tramp-completion-function-alist-ssh) (tramp-set-completion-function "scpx" tramp-completion-function-alist-ssh) (tramp-set-completion-function "sftp" tramp-completion-function-alist-ssh) (tramp-set-completion-function "rsync" tramp-completion-function-alist-ssh) - (tramp-set-completion-function - "rsyncc" tramp-completion-function-alist-ssh) (tramp-set-completion-function "rsh" tramp-completion-function-alist-rsh) (tramp-set-completion-function "remsh" tramp-completion-function-alist-rsh) (tramp-set-completion-function "ssh" tramp-completion-function-alist-ssh) - (tramp-set-completion-function "ssh1" tramp-completion-function-alist-ssh) - (tramp-set-completion-function "ssh2" tramp-completion-function-alist-ssh) - (tramp-set-completion-function - "ssh1_old" tramp-completion-function-alist-ssh) - (tramp-set-completion-function - "ssh2_old" tramp-completion-function-alist-ssh) (tramp-set-completion-function "sshx" tramp-completion-function-alist-ssh) (tramp-set-completion-function "telnet" tramp-completion-function-alist-telnet) @@ -498,8 +382,6 @@ detected as prompt when being sent on echoing hosts, therefore.") "krlogin" tramp-completion-function-alist-rsh) (tramp-set-completion-function "plink" tramp-completion-function-alist-ssh) (tramp-set-completion-function - "plink1" tramp-completion-function-alist-ssh) - (tramp-set-completion-function "plinkx" tramp-completion-function-alist-putty) (tramp-set-completion-function "pscp" tramp-completion-function-alist-ssh) (tramp-set-completion-function "fcp" tramp-completion-function-alist-ssh))) @@ -538,6 +420,7 @@ as given in your `~/.profile'." (const :tag "Private Directories" tramp-own-remote-path) (string :tag "Directory")))) +;;;###tramp-autoload (defcustom tramp-remote-process-environment `("HISTFILE=$HOME/.tramp_history" "HISTSIZE=1" "LC_ALL=C" ,(format "TERM=%s" tramp-terminal-type) @@ -1330,7 +1213,8 @@ target of the symlink differ." (let ((f (buffer-file-name)) coding-system-used) (with-parsed-tramp-file-name f nil - (let* ((attr (file-attributes f)) + (let* ((remote-file-name-inhibit-cache t) + (attr (file-attributes f)) ;; '(-1 65535) means file doesn't exists yet. (modtime (or (nth 5 attr) '(-1 65535)))) (when (boundp 'last-coding-system-used) @@ -1434,7 +1318,7 @@ of." (utc (not (featurep 'xemacs)))) (tramp-send-command-and-check v (format "%s touch -t %s %s" - (if utc "TZ=UTC; export TZ;" "") + (if utc "env TZ=UTC" "") (if utc (format-time-string "%Y%m%d%H%M.%S" time t) (format-time-string "%Y%m%d%H%M.%S" time)) @@ -1549,31 +1433,31 @@ be non-negative integers." (when (and (tramp-remote-acl-p v) (tramp-send-command-and-check v (format - "getfacl -acs %s 2>/dev/null" + "getfacl -ac %s 2>/dev/null" (tramp-shell-quote-argument localname)))) (with-current-buffer (tramp-get-connection-buffer v) (goto-char (point-max)) (delete-blank-lines) (when (> (point-max) (point-min)) - (substring-no-properties (buffer-string)))))))) + (tramp-compat-funcall + 'substring-no-properties (buffer-string)))))))) (defun tramp-sh-handle-set-file-acl (filename acl-string) "Like `set-file-acl' for Tramp files." - (with-parsed-tramp-file-name filename nil - (when (tramp-remote-acl-p v) - (condition-case nil - (when (stringp acl-string) - (tramp-set-file-property v localname "file-acl" acl-string) - (dolist (line (split-string acl-string nil t) t) - (unless (tramp-send-command-and-check - v (format - "setfacl -m %s %s" - line (tramp-shell-quote-argument localname))) - (error nil)))) - ;; In case of errors, we return `nil'. - (error - (tramp-set-file-property v localname "file-acl" 'undef) - nil))))) + (with-parsed-tramp-file-name (expand-file-name filename) nil + (if (and (stringp acl-string) (tramp-remote-acl-p v) + (progn + (tramp-send-command + v (format "setfacl --set-file=- %s <<'EOF'\n%s\nEOF\n" + (tramp-shell-quote-argument localname) acl-string)) + (tramp-send-command-and-check v nil))) + ;; Success. + (progn + (tramp-set-file-property v localname "file-acl" acl-string) + t) + ;; In case of errors, we return `nil'. + (tramp-set-file-property v localname "file-acl-string" 'undef) + nil))) ;; Simple functions using the `test' command. @@ -2298,7 +2182,7 @@ The method used must be an out-of-band method." (t2 (tramp-tramp-file-p newname)) (orig-vec (tramp-dissect-file-name (if t1 filename newname))) copy-program copy-args copy-env copy-keep-date port spec - source target) + options source target) (with-parsed-tramp-file-name (if t1 filename newname) nil (if (and t1 t2) @@ -2366,9 +2250,11 @@ The method used must be an out-of-band method." user (or user "") port (or port "") spec (format-spec-make - ?h host ?u user ?p port ?t (tramp-get-connection-property - (tramp-get-connection-process v) "temp-file" "") + (tramp-get-connection-process v) "temp-file" "")) + options (format-spec tramp-ssh-controlmaster-options spec) + spec (format-spec-make + ?h host ?u user ?p port ?c options ?k (if keep-date " " "")) copy-program (tramp-get-method-parameter method 'tramp-copy-program) @@ -2418,7 +2304,7 @@ The method used must be an out-of-band method." v "process-buffer" (current-buffer)) (while copy-env (tramp-message - orig-vec 5 "%s=\"%s\"" (car copy-env) (cadr copy-env)) + orig-vec 6 "%s=\"%s\"" (car copy-env) (cadr copy-env)) (setenv (pop copy-env) (pop copy-env))) ;; Use an asynchronous process. By this, password can @@ -2630,10 +2516,13 @@ This is like `dired-recursive-delete-directory' for Tramp files." (if full-directory-p "yes" "no")) ;; If `full-directory-p', we just say `ls -l FILENAME'. ;; Else we chdir to the parent directory, then say `ls -ld BASENAME'. + ;; "--dired" returns byte positions. Therefore, the file names + ;; must be encoded, which is guaranteed by "LC_ALL=en_US.utf8 + ;; LC_CTYPE=''". (if full-directory-p (tramp-send-command v - (format "%s %s %s 2>/dev/null" + (format "env LC_ALL=en_US.utf8 LC_CTYPE='' %s %s %s 2>/dev/null" (tramp-get-ls-command v) switches (if wildcard @@ -2649,7 +2538,7 @@ This is like `dired-recursive-delete-directory' for Tramp files." (tramp-run-real-handler 'file-name-directory (list localname)))) (tramp-send-command v - (format "%s %s %s" + (format "env LC_ALL=en_US.utf8 LC_CTYPE='' %s %s %s 2>/dev/null" (tramp-get-ls-command v) switches (if (or wildcard @@ -2695,6 +2584,11 @@ This is like `dired-recursive-delete-directory' for Tramp files." (while (re-search-forward tramp-color-escape-sequence-regexp nil t) (replace-match ""))) + ;; Decode the output, it could be multibyte. + (decode-coding-region + beg (point-max) + (or file-name-coding-system default-file-name-coding-system)) + ;; The inserted file could be from somewhere else. (when (and (not wildcard) (not full-directory-p)) (goto-char (point-max)) @@ -2808,7 +2702,11 @@ the result will be a local, non-Tramp, filename." (or (null program) tramp-process-connection-type)) (bmp (and (buffer-live-p buffer) (buffer-modified-p buffer))) (name1 name) - (i 0)) + (i 0) + ;; We do not want to raise an error when + ;; `start-file-process' has been started several time in + ;; `eshell' and friends. + (tramp-current-connection nil)) (unless buffer ;; BUFFER can be nil. We use a temporary buffer. @@ -2824,6 +2722,8 @@ the result will be a local, non-Tramp, filename." (with-current-buffer (tramp-get-connection-buffer v) (unwind-protect + ;; We catch this event. Otherwise, `start-process' could + ;; be called on the local host. (save-excursion (save-restriction ;; Activate narrowing in order to save BUFFER @@ -2837,31 +2737,34 @@ the result will be a local, non-Tramp, filename." (narrow-to-region (point-max) (point-max)) ;; We call `tramp-maybe-open-connection', in order ;; to cleanup the prompt afterwards. - (tramp-maybe-open-connection v) - (widen) - (delete-region mark (point)) - (narrow-to-region (point-max) (point-max)) - ;; Now do it. - (if command - ;; Send the command. - (tramp-send-command v command nil t) ; nooutput - ;; Check, whether a pty is associated. - (unless (tramp-compat-process-get - (tramp-get-connection-process v) 'remote-tty) - (tramp-error - v 'file-error - "pty association is not supported for `%s'" name)))) - (let ((p (tramp-get-connection-process v))) - ;; Set query flag for this process. We ignore errors, - ;; because the process could have finished already. - (ignore-errors - (tramp-compat-set-process-query-on-exit-flag p t)) - ;; Return process. - p))) + (catch 'suppress + (tramp-maybe-open-connection v) + (widen) + (delete-region mark (point)) + (narrow-to-region (point-max) (point-max)) + ;; Now do it. + (if command + ;; Send the command. + (tramp-send-command v command nil t) ; nooutput + ;; Check, whether a pty is associated. + (unless (tramp-compat-process-get + (tramp-get-connection-process v) 'remote-tty) + (tramp-error + v 'file-error + "pty association is not supported for `%s'" name)))) + (let ((p (tramp-get-connection-process v))) + ;; Set query flag and process marker for this + ;; process. We ignore errors, because the process + ;; could have finished already. + (ignore-errors + (tramp-compat-set-process-query-on-exit-flag p t) + (set-marker (process-mark p) (point))) + ;; Return process. + p)))) ;; Save exit. (if (string-match tramp-temp-buffer-name (buffer-name)) - (progn + (ignore-errors (set-process-buffer (tramp-get-connection-process v) nil) (kill-buffer (current-buffer))) (set-buffer-modified-p bmp)) @@ -4206,6 +4109,9 @@ Goes through the list `tramp-inline-compress-commands'." (tramp-message vec 2 "Couldn't find an inline transfer compress command"))))) +(defvar tramp-gw-tunnel-method) +(defvar tramp-gw-socks-method) + (defun tramp-compute-multi-hops (vec) "Expands VEC according to `tramp-default-proxies-alist'. Gateway hops are already opened." @@ -4266,10 +4172,11 @@ Gateway hops are already opened." (setq choices tramp-default-proxies-alist))))) ;; Handle gateways. - (when (string-match - (format - "^\\(%s\\|%s\\)$" tramp-gw-tunnel-method tramp-gw-socks-method) - (tramp-file-name-method (car target-alist))) + (when (and (boundp 'tramp-gw-tunnel-method) (boundp 'tramp-gw-socks-method) + (string-match + (format + "^\\(%s\\|%s\\)$" tramp-gw-tunnel-method tramp-gw-socks-method) + (tramp-file-name-method (car target-alist)))) (let ((gw (pop target-alist)) (hop (pop target-alist))) ;; Is the method prepared for gateways? @@ -4350,7 +4257,7 @@ connection if a previous connection has died for some reason." (car tramp-current-connection))) (> (tramp-time-diff (current-time) (cdr tramp-current-connection)) - 5)) + (or tramp-connection-min-time-diff 0))) (throw 'suppress 'suppress)) ;; If too much time has passed since last command was sent, look @@ -4407,6 +4314,9 @@ connection if a previous connection has died for some reason." (setenv "PROMPT_COMMAND") (setenv "PS1" tramp-initial-end-of-output) (let* ((target-alist (tramp-compute-multi-hops vec)) + ;; We will apply `tramp-ssh-controlmaster-options' + ;; only for the first hop. + (options tramp-ssh-controlmaster-options) (process-connection-type tramp-process-connection-type) (process-adaptive-read-buffering nil) (coding-system-for-read nil) @@ -4468,14 +4378,16 @@ connection if a previous connection has died for some reason." ;; temporary file has another name, and it is ;; created and protected by ssh. It is also ;; removed by ssh when the connection is - ;; closed. + ;; closed. The temporary file name is cached + ;; in the main connection process, therefore + ;; we cannot use `tramp-get-connection-process'. (tmpfile - (tramp-set-connection-property - p "temp-file" - (make-temp-name - (expand-file-name - tramp-temp-name-prefix - (tramp-compat-temporary-file-directory))))) + (with-tramp-connection-property + (get-process (tramp-buffer-name vec)) "temp-file" + (make-temp-name + (expand-file-name + tramp-temp-name-prefix + (tramp-compat-temporary-file-directory))))) spec r-shell) ;; Add arguments for asynchronous processes. @@ -4509,8 +4421,10 @@ connection if a previous connection has died for some reason." l-host (or l-host "") l-user (or l-user "") l-port (or l-port "") + spec (format-spec-make ?t tmpfile) + options (format-spec options spec) spec (format-spec-make - ?h l-host ?u l-user ?p l-port ?t tmpfile) + ?h l-host ?u l-user ?p l-port ?c options) command (concat ;; We do not want to see the trailing local @@ -4537,7 +4451,8 @@ connection if a previous connection has died for some reason." (tramp-message vec 3 "Found remote shell prompt on `%s'" l-host)) ;; Next hop. - (setq target-alist (cdr target-alist))) + (setq options "" + target-alist (cdr target-alist))) ;; Make initial shell settings. (tramp-open-connection-setup-interactive-shell p vec)))) diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index 0f143100906..65c52ae4f3c 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el @@ -649,13 +649,14 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." v (format "getfacl \"%s\"" (tramp-smb-get-localname v))) (with-current-buffer (tramp-get-connection-buffer v) (goto-char (point-min)) - (while (looking-at-p "^#") + (while (looking-at "^#") (forward-line) (delete-region (point-min) (point))) (goto-char (point-max)) (delete-blank-lines) (when (> (point-max) (point-min)) - (substring-no-properties (buffer-string)))))))) + (tramp-compat-funcall + 'substring-no-properties (buffer-string)))))))) (defun tramp-smb-handle-file-attributes (filename &optional id-format) "Like `file-attributes' for Tramp files." diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 2c4aac0ac8a..d959cfc854a 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -220,7 +220,8 @@ pair of the form (KEY VALUE). The following KEYs are defined: argument. By this, arguments like (\"-l\" \"%u\") are optional. \"%t\" is replaced by the temporary file name produced with `tramp-make-tramp-temp-file'. \"%k\" indicates the keep-date - parameter of a program, if exists. + parameter of a program, if exists. \"%c\" adds additional + `tramp-ssh-controlmaster-options' options for the first hop. * `tramp-async-args' When an asynchronous process is started, we know already that the connection works. Therefore, we can pass additional @@ -280,15 +281,24 @@ started on the local host. You should specify a remote host `localhost' or the name of the local host. Another host name is useful only in combination with `tramp-default-proxies-alist'.") -(defun tramp-detect-ssh-controlmaster () - "Call ssh to detect whether it supports the ControlMaster argument. -This function may return nil when the argument is supported, but -shouldn't return t when it isn't." - (ignore-errors - (with-temp-buffer - (call-process "ssh" nil t nil "-o" "ControlMaster") - (goto-char (point-min)) - (search-forward-regexp "Missing ControlMaster argument" nil t)))) +;;;###tramp-autoload +(defconst tramp-ssh-controlmaster-options + (let ((result "")) + (ignore-errors + (with-temp-buffer + (call-process "ssh" nil t nil "-o" "ControlMaster") + (goto-char (point-min)) + (when (search-forward-regexp "Missing ControlMaster argument" nil t) + (setq result "-o ControlPath=%t.%%r@%%h:%%p -o ControlMaster=auto"))) + (when result + (with-temp-buffer + (call-process "ssh" nil t nil "-o" "ControlPersist") + (goto-char (point-min)) + (when (search-forward-regexp "Missing ControlPersist argument" nil t) + (setq result (concat result " -o ControlPersist=no")))))) + result) + "Call ssh to detect whether it supports the Control* arguments. +Return a string to be used in `tramp-methods'.") (defcustom tramp-default-method ;; An external copy method seems to be preferred, because it performs @@ -297,8 +307,9 @@ shouldn't return t when it isn't." ;; permanent password queries. Either a password agent like ;; "ssh-agent" or "Pageant" shall run, or the optional ;; password-cache.el or auth-sources.el packages shall be active for - ;; password caching. "scpc" is chosen if we detect that the user is - ;; running OpenSSH 4.0 or newer. + ;; password caching. If we detect that the user is running OpenSSH + ;; 4.0 or newer, we could reuse the connection, which calls also for + ;; an external method. (cond ;; PuTTY is installed. We don't take it, if it is installed on a ;; non-windows system, or pscp from the pssh (parallel ssh) package @@ -314,16 +325,16 @@ shouldn't return t when it isn't." "plink")) ;; There is an ssh installation. ((executable-find "scp") - (cond - ((tramp-detect-ssh-controlmaster) "scpc") - ((or (fboundp 'password-read) - (fboundp 'auth-source-user-or-password) - (fboundp 'auth-source-search) - ;; ssh-agent is running. - (getenv "SSH_AUTH_SOCK") - (getenv "SSH_AGENT_PID")) - "scp") - (t "ssh"))) + (if (or (fboundp 'password-read) + (fboundp 'auth-source-user-or-password) + (fboundp 'auth-source-search) + ;; ssh-agent is running. + (getenv "SSH_AUTH_SOCK") + (getenv "SSH_AGENT_PID") + ;; We could reuse the connection. + (> (length tramp-ssh-controlmaster-options) 0)) + "scp" + "ssh")) ;; Fallback. (t "ftp")) "Default method to use for transferring files. @@ -1018,11 +1029,25 @@ this variable to be set as well." ;; for an override of the system default. (defcustom tramp-process-connection-type t "Overrides `process-connection-type' for connections from Tramp. -Tramp binds process-connection-type to the value given here before +Tramp binds `process-connection-type' to the value given here before opening a connection to a remote host." :group 'tramp :type '(choice (const nil) (const t) (const pty))) +(defcustom tramp-connection-min-time-diff 5 + "Defines seconds between two consecutive connection attempts. +This is necessary as self defense mechanism, in order to avoid +yo-yo connection attempts when the remote host is unavailable. + +A value of 0 or `nil' suppresses this check. This might be +necessary, when several out-of-order copy operations are +performed, or when several asynchronous processes will be started +in a short time frame. In those cases it is recommended to +let-bind this variable." + :group 'tramp + :version "24.4" + :type '(choice (const nil) integer)) + (defcustom tramp-completion-reread-directory-timeout 10 "Defines seconds since last remote command before rereading a directory. A remote directory might have changed its contents. In order to @@ -1033,7 +1058,7 @@ have been gone since last remote command execution. A value of `t' would require an immediate reread during filename completion, `nil' means to use always cached values for the directory contents." :group 'tramp - :type '(choice (const nil) integer)) + :type '(choice (const nil) (const t) integer)) ;;; Internal Variables: @@ -1142,23 +1167,48 @@ If the `tramp-methods' entry does not exist, return nil." (defun tramp-tramp-file-p (name) "Return t if NAME is a string with Tramp file name syntax." (save-match-data - (and (stringp name) (string-match tramp-file-name-regexp name)))) + (and (stringp name) + (string-match tramp-file-name-regexp name)))) + +;; Obsoleted with Tramp 2.2.7. +(defconst tramp-obsolete-methods + '("ssh1" "ssh2" "scp1" "scp2" "scpc" "rsyncc" "plink1") + "Obsolete methods.") + +(defvar tramp-warned-obsolete-methods nil + "Which methods the user has been warned to be obsolete.") (defun tramp-find-method (method user host) "Return the right method string to use. This is METHOD, if non-nil. Otherwise, do a lookup in -`tramp-default-method-alist'." - (or method - (let ((choices tramp-default-method-alist) - lmethod item) - (while choices - (setq item (pop choices)) - (when (and (string-match (or (nth 0 item) "") (or host "")) - (string-match (or (nth 1 item) "") (or user ""))) - (setq lmethod (nth 2 item)) - (setq choices nil))) - lmethod) - tramp-default-method)) +`tramp-default-method-alist'. It maps also obsolete methods to +their replacement." + (let ((result + (or method + (let ((choices tramp-default-method-alist) + lmethod item) + (while choices + (setq item (pop choices)) + (when (and (string-match (or (nth 0 item) "") (or host "")) + (string-match (or (nth 1 item) "") (or user ""))) + (setq lmethod (nth 2 item)) + (setq choices nil))) + lmethod) + tramp-default-method))) + ;; This is needed for a transition period only. + (when (member result tramp-obsolete-methods) + (unless (member result tramp-warned-obsolete-methods) + (if noninteractive + (warn "Method %s is obsolete, using %s" + result (substring result 0 -1)) + (unless (y-or-n-p (format "Method %s is obsolete, use %s? " + result (substring result 0 -1))) + (error 'file-error "Method \"%s\" not supported" result))) + (add-to-list 'tramp-warned-obsolete-methods result)) + ;; This works with the current set of `tramp-obsolete-methods'. + ;; Must be improved, if their are more sophisticated replacements. + (setq result (substring result 0 -1))) + result)) (defun tramp-find-user (method user host) "Return the right user string to use. @@ -1325,6 +1375,8 @@ The outline level is equal to the verbosity of the Tramp message." (get-buffer-create (tramp-debug-buffer-name vec)) (when (bobp) (setq buffer-undo-list t) + ;; So it does not get loaded while `outline-regexp' is let-bound. + (require 'outline) ;; Activate `outline-mode'. This runs `text-mode-hook' and ;; `outline-mode-hook'. We must prevent that local processes ;; die. Yes: I've seen `flyspell-mode', which starts "ispell". @@ -1374,8 +1426,11 @@ ARGS to actually emit the message (if applicable)." (concat "^" (regexp-opt - '("tramp-compat-funcall" + '("tramp-backtrace" + "tramp-compat-condition-case-unless-debug" + "tramp-compat-funcall" "tramp-compat-with-temp-message" + "tramp-condition-case-unless-debug" "tramp-debug-message" "tramp-error" "tramp-error-with-buffer" @@ -1488,6 +1543,11 @@ an input event arrives. The other arguments are passed to `tramp-error'." "`M-x tramp-cleanup-this-connection'")) (sit-for 30)))))) +(defsubst tramp-backtrace (vec-or-proc) + "Dump a backtrace into the debug buffer. +This function is meant for debugging purposes." + (tramp-message vec-or-proc 10 "\n%s" (with-output-to-string (backtrace)))) + (defmacro with-parsed-tramp-file-name (filename var &rest body) "Parse a Tramp filename and make components available in the body. @@ -1779,28 +1839,23 @@ value of `default-file-modes', without execute permissions." (or (file-modes filename) (logand (default-file-modes) (tramp-compat-octal-to-decimal "0666")))) -(defalias 'tramp-replace-environment-variables - (if (ignore-errors - (equal "${ tramp?}" - (tramp-compat-funcall - 'substitute-env-vars "${ tramp?}" 'only-defined))) - (lambda (filename) - "Like `substitute-env-vars' with `only-defined' non-nil." - (tramp-compat-funcall 'substitute-env-vars filename 'only-defined)) - (lambda (filename) - "Replace environment variables in FILENAME. +(defun tramp-replace-environment-variables (filename) + "Replace environment variables in FILENAME. Return the string with the replaced variables." - (save-match-data - (let ((idx (string-match "$\\(\\w+\\)" filename))) - ;; `$' is coded as `$$'. - (when (and idx - (or (zerop idx) (not (eq ?$ (aref filename (1- idx))))) - (getenv (match-string 1 filename))) - (setq filename - (replace-match - (substitute-in-file-name (match-string 0 filename)) - t nil filename))) - filename))))) + (or (ignore-errors + (tramp-compat-funcall 'substitute-env-vars filename 'only-defined)) + ;; We need an own implementation. + (save-match-data + (let ((idx (string-match "$\\(\\w+\\)" filename))) + ;; `$' is coded as `$$'. + (when (and idx + (or (zerop idx) (not (eq ?$ (aref filename (1- idx))))) + (getenv (match-string 1 filename))) + (setq filename + (replace-match + (substitute-in-file-name (match-string 0 filename)) + t nil filename))) + filename)))) ;; In XEmacs, electricity is implemented via a key map for ?/ and ?~, ;; which calls corresponding functions (see minibuf.el). @@ -1988,6 +2043,15 @@ ARGS are the arguments OPERATION has been called with." res (cdr elt)))) res)))) +(defvar tramp-debug-on-error nil + "Like `debug-on-error' but used Tramp internal.") + +(defmacro tramp-condition-case-unless-debug + (var bodyform &rest handlers) + "Like `condition-case-unless-debug' but `tramp-debug-on-error'." + `(let ((debug-on-error tramp-debug-on-error)) + (tramp-compat-condition-case-unless-debug ,var ,bodyform ,@handlers))) + ;; Main function. ;;;###autoload (defun tramp-file-name-handler (operation &rest args) @@ -2003,7 +2067,7 @@ Falls back to normal file name handler if no Tramp file name handler exists." (with-parsed-tramp-file-name filename nil ;; Call the backend function. (if foreign - (tramp-compat-condition-case-unless-debug err + (tramp-condition-case-unless-debug err (let ((sf (symbol-function foreign)) result) ;; Some packages set the default directory to a @@ -2056,7 +2120,7 @@ Falls back to normal file name handler if no Tramp file name handler exists." ;; in order to give the user a chance to correct the ;; file name in the minibuffer. ;; In order to get a full backtrace, one could apply - ;; (setq debug-on-error t debug-on-signal t) + ;; (setq tramp-debug-on-error t) (error (cond ((and completion (zerop (length localname)) @@ -3011,13 +3075,15 @@ User is always nil." (setq tramp-temp-buffer-file-name local-copy)) ;; We must ensure that `file-coding-system-alist' - ;; matches `local-copy'. + ;; matches `local-copy'. We must also use `visit', + ;; otherwise there might be an error in the + ;; `revert-buffer' function under XEmacs. (let ((file-coding-system-alist (tramp-find-file-name-coding-system-alist filename local-copy))) (setq result (insert-file-contents - local-copy nil nil nil replace))))) + local-copy visit nil nil replace))))) ;; Save exit. (progn @@ -3401,7 +3467,9 @@ Erase echoed commands if exists." 0 (min tramp-echo-mark-marker-length (1- (point-max)))) (tramp-compat-funcall 'buffer-substring-no-properties - 1 (min (1+ tramp-echo-mark-marker-length) (point-max)))))) + (point-min) + (min (+ (point-min) tramp-echo-mark-marker-length) + (point-max)))))) ;; No echo to be handled, now we can look for the regexp. ;; Sometimes, lines are much to long, and we run into a "Stack ;; overflow in regexp matcher". For example, //DIRED// lines of diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index 6c25d903feb..2ee73235dd0 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el @@ -159,12 +159,12 @@ This is not used directly, but only via inheritance by other faces." (defface nxml-comment-delimiter '((t (:inherit font-lock-comment-delimiter-face))) - "Face used for the delimiters of comments, i.e <!-- and -->." + "Face used for the delimiters of comments, i.e., <!-- and -->." :group 'nxml-faces) (defface nxml-processing-instruction-delimiter '((t (:inherit nxml-delimiter))) - "Face used for the delimiters of processing instructions, i.e <? and ?>." + "Face used for the delimiters of processing instructions, i.e., <? and ?>." :group 'nxml-faces) (defface nxml-processing-instruction-target @@ -179,7 +179,7 @@ This is not used directly, but only via inheritance by other faces." (defface nxml-cdata-section-delimiter '((t (:inherit nxml-delimiter))) - "Face used for the delimiters of CDATA sections, i.e <![, [, and ]]>." + "Face used for the delimiters of CDATA sections, i.e., <![, [, and ]]>." :group 'nxml-faces) (defface nxml-cdata-section-CDATA @@ -200,7 +200,7 @@ This includes ths `x' in hex references." (defface nxml-char-ref-delimiter '((t (:inherit nxml-ref))) - "Face used for the delimiters of character references, i.e &# and ;." + "Face used for the delimiters of character references, i.e., &# and ;." :group 'nxml-faces) (defface nxml-entity-ref-name @@ -210,7 +210,7 @@ This includes ths `x' in hex references." (defface nxml-entity-ref-delimiter '((t (:inherit nxml-ref))) - "Face used for the delimiters of entity references, i.e & and ;." + "Face used for the delimiters of entity references, i.e., & and ;." :group 'nxml-faces) (defface nxml-tag-delimiter diff --git a/lisp/obsolete/iso-insert.el b/lisp/obsolete/iso-insert.el index 18cf87a4c6f..2c0adf32d12 100644 --- a/lisp/obsolete/iso-insert.el +++ b/lisp/obsolete/iso-insert.el @@ -1,4 +1,4 @@ -;;; iso-insert.el --- insert functions for ISO 8859/1 -*- coding: iso-8859-1;-*- +;;; iso-insert.el --- insert functions for ISO 8859/1 -*- coding: utf-8;-*- ;; Copyright (C) 1987, 1994, 2001-2013 Free Software Foundation, Inc. @@ -31,482 +31,482 @@ (defun insert-no-break-space () (interactive "*") - (insert ?\ ) + (insert ?\ ) ) (defun insert-inverted-exclamation-mark () (interactive "*") - (insert ?\¡) + (insert ?\¡) ) (defun insert-cent-sign () (interactive "*") - (insert ?\¢) + (insert ?\¢) ) (defun insert-pound-sign () (interactive "*") - (insert ?\£) + (insert ?\£) ) (defun insert-general-currency-sign () (interactive "*") - (insert ?\¤) + (insert ?\¤) ) (defun insert-yen-sign () (interactive "*") - (insert ?\¥) + (insert ?\Â¥) ) (defun insert-broken-vertical-line () (interactive "*") - (insert ?\¦) + (insert ?\¦) ) (defun insert-section-sign () (interactive "*") - (insert ?\§) + (insert ?\§) ) (defun insert-diaeresis () (interactive "*") - (insert ?\¨) + (insert ?\¨) ) (defun insert-copyright-sign () (interactive "*") - (insert ?\©) + (insert ?\©) ) (defun insert-ordinal-indicator-feminine () (interactive "*") - (insert ?\ª) + (insert ?\ª) ) (defun insert-angle-quotation-mark-left () (interactive "*") - (insert ?\«) + (insert ?\«) ) (defun insert-not-sign () (interactive "*") - (insert ?\¬) + (insert ?\¬) ) (defun insert-soft-hyphen () (interactive "*") - (insert ?\) + (insert ?\Â) ) (defun insert-registered-sign () (interactive "*") - (insert ?\®) + (insert ?\®) ) (defun insert-macron () (interactive "*") - (insert ?\¯) + (insert ?\¯) ) (defun insert-degree-sign () (interactive "*") - (insert ?\°) + (insert ?\°) ) (defun insert-plus-or-minus-sign () (interactive "*") - (insert ?\±) + (insert ?\±) ) (defun insert-superscript-two () (interactive "*") - (insert ?\²) + (insert ?\²) ) (defun insert-superscript-three () (interactive "*") - (insert ?\³) + (insert ?\³) ) (defun insert-acute-accent () (interactive "*") - (insert ?\´) + (insert ?\´) ) (defun insert-micro-sign () (interactive "*") - (insert ?\µ) + (insert ?\µ) ) (defun insert-pilcrow () (interactive "*") - (insert ?\¶) + (insert ?\¶) ) (defun insert-middle-dot () (interactive "*") - (insert ?\·) + (insert ?\·) ) (defun insert-cedilla () (interactive "*") - (insert ?\¸) + (insert ?\¸) ) (defun insert-superscript-one () (interactive "*") - (insert ?\¹) + (insert ?\¹) ) (defun insert-ordinal-indicator-masculine () (interactive "*") - (insert ?\º) + (insert ?\º) ) (defun insert-angle-quotation-mark-right () (interactive "*") - (insert ?\») + (insert ?\») ) (defun insert-fraction-one-quarter () (interactive "*") - (insert ?\¼) + (insert ?\¼) ) (defun insert-fraction-one-half () (interactive "*") - (insert ?\½) + (insert ?\½) ) (defun insert-fraction-three-quarters () (interactive "*") - (insert ?\¾) + (insert ?\¾) ) (defun insert-inverted-question-mark () (interactive "*") - (insert ?\¿) + (insert ?\¿) ) (defun insert-A-grave () (interactive "*") - (insert ?\À) + (insert ?\À) ) (defun insert-A-acute () (interactive "*") - (insert ?\Á) + (insert ?\Ã) ) (defun insert-A-circumflex () (interactive "*") - (insert ?\Â) + (insert ?\Â) ) (defun insert-A-tilde () (interactive "*") - (insert ?\Ã) + (insert ?\Ã) ) (defun insert-A-umlaut () (interactive "*") - (insert ?\Ä) + (insert ?\Ä) ) (defun insert-A-ring () (interactive "*") - (insert ?\Å) + (insert ?\Ã…) ) (defun insert-AE () (interactive "*") - (insert ?\Æ) + (insert ?\Æ) ) (defun insert-C-cedilla () (interactive "*") - (insert ?\Ç) + (insert ?\Ç) ) (defun insert-E-grave () (interactive "*") - (insert ?\È) + (insert ?\È) ) (defun insert-E-acute () (interactive "*") - (insert ?\É) + (insert ?\É) ) (defun insert-E-circumflex () (interactive "*") - (insert ?\Ê) + (insert ?\Ê) ) (defun insert-E-umlaut () (interactive "*") - (insert ?\Ë) + (insert ?\Ë) ) (defun insert-I-grave () (interactive "*") - (insert ?\Ì) + (insert ?\ÃŒ) ) (defun insert-I-acute () (interactive "*") - (insert ?\Í) + (insert ?\Ã) ) (defun insert-I-circumflex () (interactive "*") - (insert ?\Î) + (insert ?\ÃŽ) ) (defun insert-I-umlaut () (interactive "*") - (insert ?\Ï) + (insert ?\Ã) ) (defun insert-D-stroke () (interactive "*") - (insert ?\Ð) + (insert ?\Ã) ) (defun insert-N-tilde () (interactive "*") - (insert ?\Ñ) + (insert ?\Ñ) ) (defun insert-O-grave () (interactive "*") - (insert ?\Ò) + (insert ?\Ã’) ) (defun insert-O-acute () (interactive "*") - (insert ?\Ó) + (insert ?\Ó) ) (defun insert-O-circumflex () (interactive "*") - (insert ?\Ô) + (insert ?\Ô) ) (defun insert-O-tilde () (interactive "*") - (insert ?\Õ) + (insert ?\Õ) ) (defun insert-O-umlaut () (interactive "*") - (insert ?\Ö) + (insert ?\Ö) ) (defun insert-multiplication-sign () (interactive "*") - (insert ?\×) + (insert ?\×) ) (defun insert-O-slash () (interactive "*") - (insert ?\Ø) + (insert ?\Ø) ) (defun insert-U-grave () (interactive "*") - (insert ?\Ù) + (insert ?\Ù) ) (defun insert-U-acute () (interactive "*") - (insert ?\Ú) + (insert ?\Ú) ) (defun insert-U-circumflex () (interactive "*") - (insert ?\Û) + (insert ?\Û) ) (defun insert-U-umlaut () (interactive "*") - (insert ?\Ü) + (insert ?\Ü) ) (defun insert-Y-acute () (interactive "*") - (insert ?\Ý) + (insert ?\Ã) ) (defun insert-THORN () (interactive "*") - (insert ?\Þ) + (insert ?\Þ) ) (defun insert-ss () (interactive "*") - (insert ?\ß) + (insert ?\ß) ) (defun insert-a-grave () (interactive "*") - (insert ?\à) + (insert ?\à ) ) (defun insert-a-acute () (interactive "*") - (insert ?\á) + (insert ?\á) ) (defun insert-a-circumflex () (interactive "*") - (insert ?\â) + (insert ?\â) ) (defun insert-a-tilde () (interactive "*") - (insert ?\ã) + (insert ?\ã) ) (defun insert-a-umlaut () (interactive "*") - (insert ?\ä) + (insert ?\ä) ) (defun insert-a-ring () (interactive "*") - (insert ?\å) + (insert ?\Ã¥) ) (defun insert-ae () (interactive "*") - (insert ?\æ) + (insert ?\æ) ) (defun insert-c-cedilla () (interactive "*") - (insert ?\ç) + (insert ?\ç) ) (defun insert-e-grave () (interactive "*") - (insert ?\è) + (insert ?\è) ) (defun insert-e-acute () (interactive "*") - (insert ?\é) + (insert ?\é) ) (defun insert-e-circumflex () (interactive "*") - (insert ?\ê) + (insert ?\ê) ) (defun insert-e-umlaut () (interactive "*") - (insert ?\ë) + (insert ?\ë) ) (defun insert-i-grave () (interactive "*") - (insert ?\ì) + (insert ?\ì) ) (defun insert-i-acute () (interactive "*") - (insert ?\í) + (insert ?\Ã) ) (defun insert-i-circumflex () (interactive "*") - (insert ?\î) + (insert ?\î) ) (defun insert-i-umlaut () (interactive "*") - (insert ?\ï) + (insert ?\ï) ) (defun insert-d-stroke () (interactive "*") - (insert ?\ð) + (insert ?\ð) ) (defun insert-n-tilde () (interactive "*") - (insert ?\ñ) + (insert ?\ñ) ) (defun insert-o-grave () (interactive "*") - (insert ?\ò) + (insert ?\ò) ) (defun insert-o-acute () (interactive "*") - (insert ?\ó) + (insert ?\ó) ) (defun insert-o-circumflex () (interactive "*") - (insert ?\ô) + (insert ?\ô) ) (defun insert-o-tilde () (interactive "*") - (insert ?\õ) + (insert ?\õ) ) (defun insert-o-umlaut () (interactive "*") - (insert ?\ö) + (insert ?\ö) ) (defun insert-division-sign () (interactive "*") - (insert ?\÷) + (insert ?\÷) ) (defun insert-o-slash () (interactive "*") - (insert ?\ø) + (insert ?\ø) ) (defun insert-u-grave () (interactive "*") - (insert ?\ù) + (insert ?\ù) ) (defun insert-u-acute () (interactive "*") - (insert ?\ú) + (insert ?\ú) ) (defun insert-u-circumflex () (interactive "*") - (insert ?\û) + (insert ?\û) ) (defun insert-u-umlaut () (interactive "*") - (insert ?\ü) + (insert ?\ü) ) (defun insert-y-acute () (interactive "*") - (insert ?\ý) + (insert ?\ý) ) (defun insert-thorn () (interactive "*") - (insert ?\þ) + (insert ?\þ) ) (defun insert-y-umlaut () (interactive "*") - (insert ?\ÿ) + (insert ?\ÿ) ) (defvar 8859-1-map nil "Keymap for ISO 8859/1 character insertion.") diff --git a/lisp/play/yow.el b/lisp/obsolete/yow.el index 10c69347469..42bb0a0b354 100644 --- a/lisp/play/yow.el +++ b/lisp/obsolete/yow.el @@ -5,6 +5,7 @@ ;; Maintainer: FSF ;; Author: Richard Mlynarik ;; Keywords: games +;; Obsolete-since: 24.4 ;; This file is part of GNU Emacs. @@ -24,6 +25,8 @@ ;;; Commentary: ;; Important pinheadery for GNU Emacs. +;; This file is obsolete. For similar functionality, see +;; fortune.el and cookie1.el. ;;; Code: diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog index 56a76c7d680..1bf6fe315c1 100644 --- a/lisp/org/ChangeLog +++ b/lisp/org/ChangeLog @@ -1,3 +1,196 @@ +2013-03-08 Bastien Guerry <bzg@gnu.org> + + * org-exp.el (org-export-normalize-links): Fix critical bug: do + not rely on `org-context' to guess where to prevent links + normalization. + +2013-02-28 Achim Gratz <Stromeko@Stromeko.DE> + + * org.el (org-org-menu): Use correct key "C-u C-c C-x !" to do + org-reload uncompiled in the menu. + +2013-02-28 Bastien Guerry <bzg@gnu.org> + + * org-indent.el (org-indent-add-properties): Bugfix: prevent + negative value for `added-ind-per-lvl'. + + * org.el (org-mode): Add `org-fix-ellipsis-at-bol' to + `isearch-mode-end-hook' so that any isearch fixes the problem with + ellipsis on the first line. + (org-fix-ellipsis-at-bol): New defsubst. + (org-show-context, org-isearch-end): Use it. + + * org.el (org-show-context): Remove useless catch. + Make sure the top of the window is a visible headline. + (org-activate-plain-links): Remove unused catch. + + * org-macs.el (org-get-alist-option): Return nil, not (nil), + so that `org-show-context' DTRT. + + * org.el (org-imenu-get-tree): Fix bug when matching against empty + headlines. + + * org.el (org-overview): Stay on current line. + (org-map-entries): Fix docstring. + (org-at-clock-log-p): Delete. + * org-clock.el (org-at-clock-log-p): Move here. + + * org.el (org-tsr-regexp-both): Don't activate dates in links. + (org-activate-dates): Change match boundaries according to the new + value of `org-tsr-regexp-both'. + + * org-agenda.el (org-agenda-to-appt): Fix typos. + + * org-agenda.el (org-agenda-local-vars): Don't include + `org-agenda-show-window' as it needs to be checked outside of the + agenda window. + + * org.el (org-set-tags-command): Fix bug when setting tags for + multiple headlines in an active region. + + * org-mobile.el (org-mobile-edit): DTRT when inserting a heading + in an invisible region. + + * org.el (org-insert-heading-respect-content): Add docstring. + New `invisible-ok' parameter. + (org-insert-todo-heading-respect-content): Add docstring. + + * ob-tangle.el (org-babel-tangle-collect-blocks): + Bugfix: remove code references from blocks. + + * org-agenda.el (org-agenda-schedule, org-agenda-deadline): + Cosmetic changes. + (org-agenda-show-new-time): Fix bug when displaying a temporary + overlay with the scheduled/deadline information. + + * org.el (org-fill-paragraph-with-timestamp-nobreak-p): New function. + (org-setup-filling): Use it to prevent breaking a timestamp when + filling a paragraph. + + * org-id.el (org-id-get-with-outline-path-completion): Fix docstring. + +2013-02-28 Tim Burt <tcburt@rochester.rr.com> (tiny change) + + * org-datetree.el (org-datetree-find-year-create): + Match headlines with tags. + +2013-02-07 Bastien Guerry <bzg@gnu.org> + + * org-agenda.el (org-agenda-get-deadlines) + (org-agenda-get-scheduled): Fix bug: use text properties for the + headline text since we rely on properties to get e.g. the effort. + + * org-exp.el (org-export-normalize-links): Don't match links + within tags. + + * org-html.el (org-export-html-preamble-format) + (org-export-html-postamble-format): Mention that + org-export-html-preamble/postamble need to be `t' in order for + these variables to have any effect. + + * org-html.el (org-html-handle-links): When the link description + is an image and the attribute is "width", pass the attribute to + the <img ...> tag. + + * org.el (org-mode): Always honor `org-startup-indented', even + when `org-inhibit-startup' is non-nil. + + * org-indent.el (org-indent-mode): Don't check + `org-inhibit-startup'. + + * org.el (org-fontify-meta-lines-and-blocks-1): Don't try to add + text properties outside of the buffer. + + * org.el (org-agenda-inhibit-startup): Rename from + `org-agenda-inhibit-startup-visibility-cycling'. + (org-agenda-prepare-buffers): Bind `org-inhibit-startup' to + `org-agenda-inhibit-startup'. + + * org.el (org-mode): Don't initialize `org-beamer-mode' when + `org-inhibit-startup' is non-nil. + + * org-footnote.el (org-footnote-create-definition): Prevent + `electric-indent-mode' from inserting the definition at the wrong + place. + + * org-agenda.el (org-agenda-no-heading-message): Delete. + (org-agenda-get-timestamps, org-agenda-get-progress) + (org-agenda-get-deadlines, org-agenda-get-scheduled) + (org-agenda-get-blocks): Don't use + `org-agenda-no-heading-message', skip the entry. + + * org.el (org-agenda-inhibit-startup-visibility-cycling): New + option. + (org-agenda-prepare-buffers): Use it to speed up the agenda + generation. + + * org-agenda.el (org-agenda-skip): Fix bug by correctly skipping + commented scheduled/deadline lines. + + * org-clock.el (org-clock-in): Fix bug when fetching the effort + value. + + * ob-python.el (org-babel-python-command): Fix docstring. + (org-babel-python-initiate-session-by-key): Fix bug: `run-python' + from Emacs >24.1 requires a python command as an argument. + + * org-element.el (org-element-at-point): Fix typo in docstring. + + * org-agenda.el (org-agenda-get-deadlines): Fix bug: use + `org-agenda-show-inherited-tags'. + + * org-agenda.el (org-agenda-skip): Correctly handle commented out + scheduled/deadline lines. Refactor. + + * org-install.el: Do not warn users. + + * org.el (org-adaptive-fill-function): In message-mode, don't + lines in the message header, nor table lines in the body. + Correctly fill lines starting with `org-outline-regexp' in the + body. + + * org-agenda.el (org-agenda-open-link): Fix bug with opening all + links. + +2013-02-07 Francesco Pizzolante <fpz-djc/iPCCuDYQheJpep6IedvLeJWuRmrY@public.gmane.org> (tiny change) + + * org-clock.el (org-clock-sum): Protect with `org-unmodified'. + + * org-macs.el (org-unmodified): Inhibit modification hooks. + +2013-02-07 John K. Luebs <jkluebs@luebsphoto.com> (tiny change) + + * org.el (org-get-wdays): Handle matching a lead time specified in + hours. + +2013-02-07 Muchenxuan Tong <demon386@gmail.com> (tiny change) + + * org-agenda.el (org-agenda-quit): Delete indirect buffer's window + only when it exists. + +2013-02-07 Nicolas Goaziou <n.goaziou@gmail.com> + + * org-element.el (org-element-macro-parser): Fix error when last + argument ends with a protected comma. + + * org-element.el (org-element-parse-buffer, org-element-map) + (org-element-at-point, org-element-context): Be more verbose in + docstrings. Also fix typos. + + * org-list.el (org-list-struct-fix-box): When a checkbox has to be + resetted because of a non-nil ORDERED property value, make sure it + had a checkbox already. + +2013-02-07 Tokuya Kameshima <kametoku@gmail.com> (tiny change) + + * org-agenda.el (org-search-view): Fix checking + `org-agenda-show-inherited-tags'. + +2013-02-07 racin <racin@free.fr> (tiny change) + + * org-bibtex.el (org-bibtex-search): Don't throw an error when + `org-bibtex-prefix' is nil. + 2013-01-13 Bastien Guerry <bzg@gnu.org> * org-compat.el (org-condition-case-unless-debug): Delete. diff --git a/lisp/org/ob-python.el b/lisp/org/ob-python.el index 55dd1c7cdab..79cc53ea0fa 100644 --- a/lisp/org/ob-python.el +++ b/lisp/org/ob-python.el @@ -44,7 +44,7 @@ (defvar org-babel-default-header-args:python '()) (defvar org-babel-python-command "python" - "Name of command for executing Python code.") + "Name of the command for executing Python code.") (defvar org-babel-python-mode (if (featurep 'xemacs) 'python-mode 'python) "Preferred python mode for use in running python interactively. @@ -143,7 +143,9 @@ then create. Return the initialized session." (cond ((and (eq 'python org-babel-python-mode) (fboundp 'run-python)) ; python.el - (run-python)) + (if (version< "24.1" emacs-version) + (run-python org-babel-python-command) + (run-python))) ((and (eq 'python-mode org-babel-python-mode) (fboundp 'py-shell)) ; python-mode.el ;; Make sure that py-which-bufname is initialized, as otherwise diff --git a/lisp/org/ob-tangle.el b/lisp/org/ob-tangle.el index 89457f19141..c3b6a483ee6 100644 --- a/lisp/org/ob-tangle.el +++ b/lisp/org/ob-tangle.el @@ -371,6 +371,10 @@ code blocks by language." (unless (and language (not (string= language src-lang))) (let* ((info (org-babel-get-src-block-info)) (params (nth 2 info)) + (extra (nth 3 info)) + (cref-fmt (or (and (string-match "-l \"\\(.+\\)\"" extra) + (match-string 1 extra)) + org-coderef-label-format)) (link ((lambda (link) (and (string-match org-bracket-link-regexp link) (match-string 1 link))) @@ -388,6 +392,11 @@ code blocks by language." ((lambda (body) ;; run the tangle-body-hook (with-temp-buffer (insert body) + (when (string-match "-r" extra) + (goto-char (point-min)) + (while (re-search-forward + (replace-regexp-in-string "%s" ".+" cref-fmt) nil t) + (replace-match ""))) (run-hooks 'org-babel-tangle-body-hook) (buffer-string))) ((lambda (body) ;; expand the body in language specific manner diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index ca8459ca33d..79217b6a6e6 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el @@ -530,7 +530,7 @@ This is a list of four items: the project is considered to be not stuck. If you specify \"*\" as a tag, any tag will mark the project unstuck. Note that this is about the explicit presence of a tag somewhere in the subtree, inherited - tags to not count here. If inherited tags make a project not stuck, + tags do not count here. If inherited tags make a project not stuck, use \"-TAG\" in the tags part of the matcher under (1.) above. 4. An arbitrary regular expression matching non-stuck projects. @@ -1934,11 +1934,6 @@ When nil, `q' will kill the single agenda buffer." (message "Sticky agenda was %s" (if org-agenda-sticky "enabled" "disabled")))))) -(autoload 'org-toggle-sticky-agenda "org-agenda" "\ -Toggle `org-agenda-sticky'. - -\(fn &optional ARG)" t nil) - (defvar org-agenda-buffer nil "Agenda buffer currently being generated.") @@ -1971,7 +1966,6 @@ Toggle `org-agenda-sticky'. org-agenda-last-search-view-search-was-boolean org-agenda-filtered-by-category org-agenda-filter-form - org-agenda-show-window org-agenda-cycle-counter org-agenda-last-prefix-arg) "Variables that must be local in agenda buffers to allow multiple buffers.") @@ -2615,43 +2609,6 @@ Pressing `<' twice means to restrict to the current subtree or region ((equal org-keys "!") (customize-variable 'org-stuck-projects)) (t (error "Invalid agenda key")))))) -(autoload 'org-agenda "org-agenda" "\ -Dispatch agenda commands to collect entries to the agenda buffer. -Prompts for a command to execute. Any prefix arg will be passed -on to the selected command. The default selections are: - -a Call `org-agenda-list' to display the agenda for current day or week. -t Call `org-todo-list' to display the global todo list. -T Call `org-todo-list' to display the global todo list, select only - entries with a specific TODO keyword (the user gets a prompt). -m Call `org-tags-view' to display headlines with tags matching - a condition (the user is prompted for the condition). -M Like `m', but select only TODO entries, no ordinary headlines. -L Create a timeline for the current buffer. -e Export views to associated files. -s Search entries for keywords. -S Search entries for keywords, only with TODO keywords. -/ Multi occur across all agenda files and also files listed - in `org-agenda-text-search-extra-files'. -< Restrict agenda commands to buffer, subtree, or region. - Press several times to get the desired effect. -> Remove a previous restriction. -# List \"stuck\" projects. -! Configure what \"stuck\" means. -C Configure custom agenda commands. - -More commands can be added by configuring the variable -`org-agenda-custom-commands'. In particular, specific tags and TODO keyword -searches can be pre-defined in this way. - -If the current buffer is in Org-mode and visiting a file, you can also -first press `<' once to indicate that the agenda should be temporarily -\(until the next use of \\[org-agenda]) restricted to the current file. -Pressing `<' twice means to restrict to the current subtree or region -\(if active). - -\(fn &optional ARG ORG-KEYS RESTRICTION)" t nil) - (defun org-agenda-append-agenda () "Append another agenda view to the current one. This function allows interactive building of block agendas. @@ -2947,17 +2904,6 @@ before running the agenda command." (set-buffer org-agenda-buffer-name) (princ (buffer-string))) -(autoload 'org-batch-agenda "org-agenda" "\ -Run an agenda command in batch mode and send the result to STDOUT. -If CMD-KEY is a string of length 1, it is used as a key in -`org-agenda-custom-commands' and triggers this command. If it is a -longer string it is used as a tags/todo match string. -Parameters are alternating variable names and values that will be bound -before running the agenda command. - -\(fn CMD-KEY &rest PARAMETERS)" nil t) -(def-edebug-spec org-batch-agenda (form &rest sexp)) - (defvar org-agenda-info nil) ;;;###autoload @@ -3015,44 +2961,6 @@ agenda-day The day in the agenda where this is listed" ",")) (princ "\n"))))) -(autoload 'org-batch-agenda-csv "org-agenda" "\ -Run an agenda command in batch mode and send the result to STDOUT. -If CMD-KEY is a string of length 1, it is used as a key in -`org-agenda-custom-commands' and triggers this command. If it is a -longer string it is used as a tags/todo match string. -Parameters are alternating variable names and values that will be bound -before running the agenda command. - -The output gives a line for each selected agenda item. Each -item is a list of comma-separated values, like this: - -category,head,type,todo,tags,date,time,extra,priority-l,priority-n - -category The category of the item -head The headline, without TODO kwd, TAGS and PRIORITY -type The type of the agenda entry, can be - todo selected in TODO match - tagsmatch selected in tags match - diary imported from diary - deadline a deadline on given date - scheduled scheduled on given date - timestamp entry has timestamp on given date - closed entry was closed on given date - upcoming-deadline warning about deadline - past-scheduled forwarded scheduled item - block entry has date block including g. date -todo The todo keyword, if any -tags All tags including inherited ones, separated by colons -date The relevant date, like 2007-2-14 -time The time, like 15:00-16:50 -extra Sting with extra planning info -priority-l The priority letter if any was given -priority-n The computed numerical priority -agenda-day The day in the agenda where this is listed - -\(fn CMD-KEY &rest PARAMETERS)" nil t) -(def-edebug-spec org-batch-agenda-csv (form &rest sexp)) - (defun org-fix-agenda-info (props) "Make sure all properties on an agenda item have a canonical form. This ensures the export commands can easily use it." @@ -3100,11 +3008,6 @@ This ensures the export commands can easily use it." (interactive) (eval (list 'org-batch-store-agenda-views))) -(autoload 'org-store-agenda-views "org-agenda" "\ - - -\(fn &rest PARAMETERS)" t nil) - ;;;###autoload (defmacro org-batch-store-agenda-views (&rest parameters) "Run all custom agenda commands that have a file argument." @@ -3140,12 +3043,6 @@ This ensures the export commands can easily use it." (and (get-buffer bufname) (kill-buffer bufname))))))) -(autoload 'org-batch-store-agenda-views "org-agenda" "\ -Run all custom agenda commands that have a file argument. - -\(fn &rest PARAMETERS)" nil t) -(def-edebug-spec org-batch-store-agenda-views (&rest sexp)) - (defvar org-agenda-current-span nil "The current span used in the agenda view.") ; local variable in the agenda buffer (defun org-agenda-mark-header-line (pos) @@ -3728,19 +3625,18 @@ A good way to set it is through options in `org-agenda-custom-commands'.") Also moves point to the end of the skipped region, so that search can continue from there." (let ((p (point-at-bol)) to) - (when (org-in-src-block-p t) (throw :skip t)) - (and org-agenda-skip-archived-trees (not org-agenda-archives-mode) - (get-text-property p :org-archived) - (org-end-of-subtree t) - (throw :skip t)) - (and org-agenda-skip-comment-trees - (get-text-property p :org-comment) - (org-end-of-subtree t) - (throw :skip t)) - (if (equal (char-after p) ?#) (throw :skip t)) - (when (setq to (or (org-agenda-skip-eval org-agenda-skip-function-global) - (org-agenda-skip-eval org-agenda-skip-function))) - (goto-char to) + (when (or + (save-excursion (goto-char p) (looking-at comment-start-skip)) + (and org-agenda-skip-archived-trees (not org-agenda-archives-mode) + (get-text-property p :org-archived) + (org-end-of-subtree t)) + (and org-agenda-skip-comment-trees + (get-text-property p :org-comment) + (org-end-of-subtree t)) + (and (setq to (or (org-agenda-skip-eval org-agenda-skip-function-global) + (org-agenda-skip-eval org-agenda-skip-function))) + (goto-char to)) + (org-in-src-block-p t)) (throw :skip t)))) (defun org-agenda-skip-eval (form) @@ -4205,20 +4101,6 @@ given in `org-agenda-start-on-weekday'." (setq buffer-read-only t) (message "")))) -(autoload 'org-agenda-list "org-agenda" "\ -Produce a daily/weekly view from all files in variable `org-agenda-files'. -The view will be for the current day or week, but from the overview buffer -you will be able to go to other days/weeks. - -With a numeric prefix argument in an interactive call, the agenda will -span ARG days. Lisp programs should instead specify SPAN to change -the number of days. SPAN defaults to `org-agenda-span'. - -START-DAY defaults to TODAY, or to the most recent match for the weekday -given in `org-agenda-start-on-weekday'. - -\(fn &optional ARG START-DAY SPAN)" t nil) - (defun org-agenda-ndays-to-span (n) "Return a span symbol for a span of N days, or N if none matches." (cond ((symbolp n) n) @@ -4479,7 +4361,8 @@ in `org-agenda-text-search-extra-files'." category-pos (get-text-property (point) 'org-category-position) inherited-tags (or (eq org-agenda-show-inherited-tags 'always) - (memq 'todo org-agenda-show-inherited-tags) + (and (listp org-agenda-show-inherited-tags) + (memq 'todo org-agenda-show-inherited-tags)) (and (eq org-agenda-show-inherited-tags t) (or (eq org-agenda-use-tag-inheritance t) (memq 'todo org-agenda-use-tag-inheritance)))) @@ -4527,52 +4410,6 @@ in `org-agenda-text-search-extra-files'." (org-agenda-finalize) (setq buffer-read-only t)))) -(autoload 'org-search-view "org-agenda" "\ -Show all entries that contain a phrase or words or regular expressions. - -With optional prefix argument TODO-ONLY, only consider entries that are -TODO entries. The argument STRING can be used to pass a default search -string into this function. If EDIT-AT is non-nil, it means that the -user should get a chance to edit this string, with cursor at position -EDIT-AT. - -The search string can be viewed either as a phrase that should be found as -is, or it can be broken into a number of snippets, each of which must match -in a Boolean way to select an entry. The default depends on the variable -`org-agenda-search-view-always-boolean'. -Even if this is turned off (the default) you can always switch to -Boolean search dynamically by preceding the first word with \"+\" or \"-\". - -The default is a direct search of the whole phrase, where each space in -the search string can expand to an arbitrary amount of whitespace, -including newlines. - -If using a Boolean search, the search string is split on whitespace and -each snippet is searched separately, with logical AND to select an entry. -Words prefixed with a minus must *not* occur in the entry. Words without -a prefix or prefixed with a plus must occur in the entry. Matching is -case-insensitive. Words are enclosed by word delimiters (i.e. they must -match whole words, not parts of a word) if -`org-agenda-search-view-force-full-words' is set (default is nil). - -Boolean search snippets enclosed by curly braces are interpreted as -regular expressions that must or (when preceded with \"-\") must not -match in the entry. Snippets enclosed into double quotes will be taken -as a whole, to include whitespace. - -- If the search string starts with an asterisk, search only in headlines. -- If (possibly after the leading star) the search string starts with an - exclamation mark, this also means to look at TODO entries only, an effect - that can also be achieved with a prefix argument. -- If (possibly after star and exclamation mark) the search string starts - with a colon, this will mean that the (non-regexp) snippets of the - Boolean search must match as full words. - -This command searches the agenda files, and in addition the files listed -in `org-agenda-text-search-extra-files'. - -\(fn &optional TODO-ONLY STRING EDIT-AT)" t nil) - ;;; Agenda TODO list (defvar org-select-this-todo-keyword nil) @@ -4663,15 +4500,6 @@ for a keyword. A numeric prefix directly selects the Nth keyword in (org-agenda-finalize) (setq buffer-read-only t)))) -(autoload 'org-todo-list "org-agenda" "\ -Show all (not done) TODO entries from all agenda file in a single list. -The prefix arg can be used to select a specific TODO keyword and limit -the list to these. When using \\[universal-argument], you will be prompted -for a keyword. A numeric prefix directly selects the Nth keyword in -`org-todo-keywords-1'. - -\(fn &optional ARG)" t nil) - ;;; Agenda tags match ;;;###autoload @@ -4757,12 +4585,6 @@ The prefix arg TODO-ONLY limits the search to TODO entries." (org-agenda-finalize) (setq buffer-read-only t)))) -(autoload 'org-tags-view "org-agenda" "\ -Show all headlines for all `org-agenda-files' matching a TAGS criterion. -The prefix arg TODO-ONLY limits the search to TODO entries. - -\(fn &optional TODO-ONLY MATCH)" t nil) - ;;; Agenda Finding stuck projects (defvar org-agenda-skip-regexp nil @@ -4991,14 +4813,6 @@ of what a project is and how to check if it stuck, customize the variable (setq org-agenda-redo-command `(org-agenda-list-stuck-projects ,current-prefix-arg))))) -(autoload 'org-agenda-list-stuck-projects "org-agenda" "\ -Create agenda view for projects that are stuck. -Stuck projects are project that have no next actions. For the definitions -of what a project is and how to check if it stuck, customize the variable -`org-stuck-projects'. - -\(fn &rest IGNORE)" t nil) - ;;; Diary integration (defvar org-disable-agenda-to-diary nil) ;Dynamically-scoped param. @@ -5177,35 +4991,6 @@ function from a program - use `org-agenda-get-day-entries' instead." (if results (concat (org-agenda-finalize-entries results) "\n")))) -(autoload 'org-diary "org-agenda" "\ -Return diary information from org files. -This function can be used in a \"sexp\" diary entry in the Emacs calendar. -It accesses org files and extracts information from those files to be -listed in the diary. The function accepts arguments specifying what -items should be listed. For a list of arguments allowed here, see the -variable `org-agenda-entry-types'. - -The call in the diary file should look like this: - - &%%(org-diary) ~/path/to/some/orgfile.org - -Use a separate line for each org file to check. Or, if you omit the file name, -all files listed in `org-agenda-files' will be checked automatically: - - &%%(org-diary) - -If you don't give any arguments (as in the example above), the default -arguments (:deadline :scheduled :timestamp :sexp) are used. -So the example above may also be written as - - &%%(org-diary :deadline :timestamp :sexp :scheduled) - -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. - -\(fn &rest ARGS)" nil nil) - ;;; Agenda entry finders (defun org-agenda-get-day-entries (file date &rest args) @@ -5401,14 +5186,6 @@ This function is invoked if `org-agenda-todo-ignore-deadlines', (match-string 1) org-agenda-todo-ignore-timestamp)) (t)))))))))) -(autoload 'org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item "org-agenda" "\ -Do we have a reason to ignore this TODO entry because it has a time stamp? - -\(fn &optional END)" nil nil) - -(defconst org-agenda-no-heading-message - "No heading for this item in buffer or region.") - (defun org-agenda-get-timestamps (&optional deadline-results) "Return the date stamp information for agenda display." (let* ((props (list 'face 'org-agenda-calendar-event @@ -5488,7 +5265,7 @@ Do we have a reason to ignore this TODO entry because it has a time stamp? category-pos (get-text-property b0 'org-category-position)) (save-excursion (if (not (re-search-backward org-outline-regexp-bol nil t)) - (setq txt org-agenda-no-heading-message) + (throw :skip nil) (goto-char (match-beginning 0)) (if (and (eq t org-agenda-skip-timestamp-if-deadline-is-shown) (assoc (point) deadline-position-alist)) @@ -5724,7 +5501,7 @@ please use `org-class' instead." (and (looking-at ".*\n[ \t]*-[ \t]+\\([^-\n \t].*?\\)[ \t]*$") (match-string 1))))) (if (not (re-search-backward org-outline-regexp-bol nil t)) - (setq txt org-agenda-no-heading-message) + (throw :skip nil) (goto-char (match-beginning 0)) (setq hdmarker (org-agenda-new-marker) inherited-tags @@ -5892,7 +5669,7 @@ See also the user option `org-agenda-clock-consistency-checks'." (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar d2 diff dfrac wdays pos pos1 category category-pos tags suppress-prewarning ee txt head face s todo-state - show-all upcomingp donep timestr warntime) + show-all upcomingp donep timestr warntime inherited-tags) (goto-char (point-min)) (while (re-search-forward regexp nil t) (setq suppress-prewarning nil) @@ -5941,11 +5718,18 @@ See also the user option `org-agenda-clock-consistency-checks'." warntime (get-text-property (point) 'org-appt-warntime) category-pos (get-text-property (point) 'org-category-position)) (if (not (re-search-backward "^\\*+[ \t]+" nil t)) - (setq txt org-agenda-no-heading-message) + (throw :skip nil) (goto-char (match-end 0)) (setq pos1 (match-beginning 0)) - (setq tags (org-get-tags-at pos1 t)) - (setq head (buffer-substring-no-properties + (setq inherited-tags + (or (eq org-agenda-show-inherited-tags 'always) + (and (listp org-agenda-show-inherited-tags) + (memq 'agenda org-agenda-show-inherited-tags)) + (and (eq org-agenda-show-inherited-tags t) + (or (eq org-agenda-use-tag-inheritance t) + (memq 'agenda org-agenda-use-tag-inheritance)))) + tags (org-get-tags-at pos1 (not inherited-tags))) + (setq head (buffer-substring (point) (progn (skip-chars-forward "^\r\n") (point)))) @@ -6059,7 +5843,7 @@ FRACTION is what fraction of the head-warning time has passed." (setq category (org-get-category) category-pos (get-text-property (point) 'org-category-position)) (if (not (re-search-backward "^\\*+[ \t]+" nil t)) - (setq txt org-agenda-no-heading-message) + (throw :skip nil) (goto-char (match-end 0)) (setq pos1 (match-beginning 0)) (if habitp @@ -6082,7 +5866,7 @@ FRACTION is what fraction of the head-warning time has passed." (or (eq org-agenda-use-tag-inheritance t) (memq 'agenda org-agenda-use-tag-inheritance)))) tags (org-get-tags-at nil (not inherited-tags))) - (setq head (buffer-substring-no-properties + (setq head (buffer-substring (point) (progn (skip-chars-forward "^\r\n") (point)))) (if (string-match " \\([012]?[0-9]:[0-9][0-9]\\)" s) @@ -6160,7 +5944,7 @@ FRACTION is what fraction of the head-warning time has passed." (setq category (org-get-category) category-pos (get-text-property (point) 'org-category-position)) (if (not (re-search-backward org-outline-regexp-bol nil t)) - (setq txt org-agenda-no-heading-message) + (throw :skip nil) (goto-char (match-beginning 0)) (setq hdmarker (org-agenda-new-marker (point)) inherited-tags @@ -6892,7 +6676,10 @@ Allowed types are 'agenda 'timeline 'todo 'tags 'search." (interactive) (if (and (eq org-indirect-buffer-display 'other-window) org-last-indirect-buffer) - (delete-window (get-buffer-window org-last-indirect-buffer))) + (let ((org-last-indirect-window + (get-buffer-window org-last-indirect-buffer))) + (if org-last-indirect-window + (delete-window org-last-indirect-window)))) (if org-agenda-columns-active (org-columns-quit) (if org-agenda-sticky @@ -8012,32 +7799,34 @@ It also looks at the text of the entry itself." (let* ((marker (or (org-get-at-bol 'org-hd-marker) (org-get-at-bol 'org-marker))) (buffer (and marker (marker-buffer marker))) - (prefix (buffer-substring - (point-at-bol) (point-at-eol))) + (prefix (buffer-substring (point-at-bol) (point-at-eol))) (lkall (org-offer-links-in-entry buffer marker arg prefix)) - (lk (car lkall)) + (lk0 (car lkall)) + (lk (if (stringp lk0) (list lk0) lk0)) (lkend (cdr lkall)) trg) (cond - ((and buffer (stringp lk)) - (with-current-buffer buffer - (setq trg (and (string-match org-bracket-link-regexp lk) - (match-string 1 lk))) - (if (or (not trg) (string-match org-any-link-re trg)) - (save-excursion - (save-restriction - (widen) - (goto-char marker) - (when (search-forward lk nil lkend) - (goto-char (match-beginning 0)) - (org-open-at-point)))) - ;; This is an internal link, widen the buffer - (switch-to-buffer-other-window buffer) - (widen) - (goto-char marker) - (when (search-forward lk nil lkend) - (goto-char (match-beginning 0)) - (org-open-at-point))))) + ((and buffer lk) + (mapcar (lambda(l) + (with-current-buffer buffer + (setq trg (and (string-match org-bracket-link-regexp l) + (match-string 1 l))) + (if (or (not trg) (string-match org-any-link-re trg)) + (save-excursion + (save-restriction + (widen) + (goto-char marker) + (when (search-forward l nil lkend) + (goto-char (match-beginning 0)) + (org-open-at-point)))) + ;; This is an internal link, widen the buffer + (switch-to-buffer-other-window buffer) + (widen) + (goto-char marker) + (when (search-forward l nil lkend) + (goto-char (match-beginning 0)) + (org-open-at-point))))) + lk)) ((or (org-in-regexp (concat "\\(" org-bracket-link-regexp "\\)")) (save-excursion (beginning-of-line 1) @@ -8677,9 +8466,8 @@ Called with a universal prefix arg, show the priority instead of setting it." (defun org-agenda-show-new-time (marker stamp &optional prefix) "Show new date stamp via text properties." ;; We use text properties to make this undoable - (let ((inhibit-read-only t) - (buffer-invisibility-spec)) - (setq stamp (concat " " prefix " => " stamp)) + (let ((inhibit-read-only t)) + (setq stamp (concat prefix " => " stamp " ")) (save-excursion (goto-char (point-max)) (while (not (bobp)) @@ -8741,7 +8529,7 @@ ARG is passed through to `org-schedule'." (widen) (goto-char pos) (setq ts (org-schedule arg time))) - (org-agenda-show-new-time marker ts "S")) + (org-agenda-show-new-time marker ts " S")) (message "%s" ts))) (defun org-agenda-deadline (arg &optional time) @@ -8761,7 +8549,7 @@ ARG is passed through to `org-deadline'." (widen) (goto-char pos) (setq ts (org-deadline arg time))) - (org-agenda-show-new-time marker ts "D")) + (org-agenda-show-new-time marker ts " D")) (message "%s" ts))) (defun org-agenda-clock-in (&optional arg) @@ -9122,12 +8910,6 @@ This is a command that has to be installed in `calendar-mode-map'." (calendar-cursor-to-date)) nil)) -(autoload 'org-calendar-goto-agenda "org-agenda" "\ -Compute the Org-mode agenda for the calendar date displayed at the cursor. -This is a command that has to be installed in `calendar-mode-map'. - -\(fn)" t nil) - (defun org-agenda-convert-date () (interactive) (org-agenda-check-type t 'agenda 'timeline) @@ -9510,7 +9292,7 @@ By default `org-agenda-to-appt' will use :deadline, :scheduled and :timestamp entries. See the docstring of `org-diary' for details and examples. -If an entry as a APPT_WARNTIME property, its value will be used +If an entry has a APPT_WARNTIME property, its value will be used to override `appt-message-warning-time'." (interactive "P") (if refresh (setq appt-time-msg-list nil)) @@ -9570,40 +9352,6 @@ to override `appt-message-warning-time'." (message "No event to add") (message "Added %d event%s for today" cnt (if (> cnt 1) "s" ""))))) -(autoload 'org-agenda-to-appt "org-agenda" "\ -Activate appointments found in `org-agenda-files'. -With a \\[universal-argument] prefix, refresh the list of -appointments. - -If FILTER is t, interactively prompt the user for a regular -expression, and filter out entries that don't match it. - -If FILTER is a string, use this string as a regular expression -for filtering entries out. - -If FILTER is a function, filter out entries against which -calling the function returns nil. This function takes one -argument: an entry from `org-agenda-get-day-entries'. - -FILTER can also be an alist with the car of each cell being -either 'headline or 'category. For example: - - '((headline \"IMPORTANT\") - (category \"Work\")) - -will only add headlines containing IMPORTANT or headlines -belonging to the \"Work\" category. - -ARGS are symbols indicating what kind of entries to consider. -By default `org-agenda-to-appt' will use :deadline, :scheduled -and :timestamp entries. See the docstring of `org-diary' for -details and examples. - -If an entry as a APPT_WARNTIME property, its value will be used -to override `appt-message-warning-time'. - -\(fn &optional REFRESH FILTER &rest ARGS)" t nil) - (defun org-agenda-todayp (date) "Does DATE mean today, when considering `org-extend-today-until'?" (let ((today (org-today)) diff --git a/lisp/org/org-bibtex.el b/lisp/org/org-bibtex.el index 36530a80c05..6ed6abc42b5 100644 --- a/lisp/org/org-bibtex.el +++ b/lisp/org/org-bibtex.el @@ -678,7 +678,7 @@ This function relies `org-search-view' to locate results." (org-agenda-search-view-always-boolean t)) (org-search-view nil (format "%s +{:%s%s:}" - string org-bibtex-prefix + string (or org-bibtex-prefix "") org-bibtex-type-property-name)))) (provide 'org-bibtex) diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el index c043dd19e11..a536d025c04 100644 --- a/lisp/org/org-clock.el +++ b/lisp/org/org-clock.el @@ -1204,7 +1204,7 @@ make this the default behavior.)" (setq org-clock-start-time (apply 'encode-time (org-parse-time-string (match-string 1)))) - (setq org-clock-effort (get-text-property (point) 'org-effort)) + (setq org-clock-effort (org-entry-get (point) org-effort-property)) (setq org-clock-total-time (org-clock-sum-current-item (org-clock-get-sum-start)))) ((eq org-clock-in-resume 'auto-restart) @@ -1224,7 +1224,7 @@ make this the default behavior.)" (beginning-of-line 1) (org-indent-line-to (- (org-get-indentation) 2))) (insert org-clock-string " ") - (setq org-clock-effort (get-text-property (point) 'org-effort)) + (setq org-clock-effort (org-entry-get (point) org-effort-property)) (setq org-clock-total-time (org-clock-sum-current-item (org-clock-get-sum-start))) (setq org-clock-start-time @@ -1545,12 +1545,6 @@ to, overriding the existing value of `org-clock-out-switch-to-state'." (org-remove-empty-drawer-at clock-drawer (point)) (forward-line 1)))))) -(defun org-at-clock-log-p nil - "Is the cursor on the clock log line?" - (save-excursion - (move-beginning-of-line 1) - (looking-at "^[ \t]*CLOCK:"))) - (defun org-clock-timestamps-up nil "Increase CLOCK timestamps at cursor." (interactive) @@ -1675,86 +1669,85 @@ each headline in the time range with point at the headline. Headlines for which HEADLINE-FILTER returns nil are excluded from the clock summation. PROPNAME lets you set a custom text property instead of :org-clock-minutes." (interactive) - (let* ((bmp (buffer-modified-p)) - (re (concat "^\\(\\*+\\)[ \t]\\|^[ \t]*" - org-clock-string - "[ \t]*\\(?:\\(\\[.*?\\]\\)-+\\(\\[.*?\\]\\)\\|=>[ \t]+\\([0-9]+\\):\\([0-9]+\\)\\)")) - (lmax 30) - (ltimes (make-vector lmax 0)) - (t1 0) - (level 0) - ts te dt - time) - (if (stringp tstart) (setq tstart (org-time-string-to-seconds tstart))) - (if (stringp tend) (setq tend (org-time-string-to-seconds tend))) - (if (consp tstart) (setq tstart (org-float-time tstart))) - (if (consp tend) (setq tend (org-float-time tend))) - (remove-text-properties (point-min) (point-max) - `(,(or propname :org-clock-minutes) t - :org-clock-force-headline-inclusion t)) - (save-excursion - (goto-char (point-max)) - (while (re-search-backward re nil t) - (cond - ((match-end 2) - ;; Two time stamps - (setq ts (match-string 2) - te (match-string 3) - ts (org-float-time - (apply 'encode-time (org-parse-time-string ts))) - te (org-float-time - (apply 'encode-time (org-parse-time-string te))) - ts (if tstart (max ts tstart) ts) - te (if tend (min te tend) te) - dt (- te ts) - t1 (if (> dt 0) (+ t1 (floor (/ dt 60))) t1))) - ((match-end 4) - ;; A naked time - (setq t1 (+ t1 (string-to-number (match-string 5)) - (* 60 (string-to-number (match-string 4)))))) - (t ;; A headline - ;; Add the currently clocking item time to the total - (when (and org-clock-report-include-clocking-task - (equal (org-clocking-buffer) (current-buffer)) - (equal (marker-position org-clock-hd-marker) (point)) - tstart - tend - (>= (org-float-time org-clock-start-time) tstart) - (<= (org-float-time org-clock-start-time) tend)) - (let ((time (floor (- (org-float-time) - (org-float-time org-clock-start-time)) 60))) - (setq t1 (+ t1 time)))) - (let* ((headline-forced - (get-text-property (point) - :org-clock-force-headline-inclusion)) - (headline-included - (or (null headline-filter) - (save-excursion - (save-match-data (funcall headline-filter)))))) - (setq level (- (match-end 1) (match-beginning 1))) - (when (or (> t1 0) (> (aref ltimes level) 0)) - (when (or headline-included headline-forced) - (if headline-included - (loop for l from 0 to level do - (aset ltimes l (+ (aref ltimes l) t1)))) - (setq time (aref ltimes level)) - (goto-char (match-beginning 0)) - (put-text-property (point) (point-at-eol) - (or propname :org-clock-minutes) time) - (if headline-filter - (save-excursion - (save-match-data - (while - (> (funcall outline-level) 1) - (outline-up-heading 1 t) - (put-text-property - (point) (point-at-eol) - :org-clock-force-headline-inclusion t)))))) - (setq t1 0) - (loop for l from level to (1- lmax) do - (aset ltimes l 0))))))) - (setq org-clock-file-total-minutes (aref ltimes 0))) - (set-buffer-modified-p bmp))) + (org-unmodified + (let* ((re (concat "^\\(\\*+\\)[ \t]\\|^[ \t]*" + org-clock-string + "[ \t]*\\(?:\\(\\[.*?\\]\\)-+\\(\\[.*?\\]\\)\\|=>[ \t]+\\([0-9]+\\):\\([0-9]+\\)\\)")) + (lmax 30) + (ltimes (make-vector lmax 0)) + (t1 0) + (level 0) + ts te dt + time) + (if (stringp tstart) (setq tstart (org-time-string-to-seconds tstart))) + (if (stringp tend) (setq tend (org-time-string-to-seconds tend))) + (if (consp tstart) (setq tstart (org-float-time tstart))) + (if (consp tend) (setq tend (org-float-time tend))) + (remove-text-properties (point-min) (point-max) + `(,(or propname :org-clock-minutes) t + :org-clock-force-headline-inclusion t)) + (save-excursion + (goto-char (point-max)) + (while (re-search-backward re nil t) + (cond + ((match-end 2) + ;; Two time stamps + (setq ts (match-string 2) + te (match-string 3) + ts (org-float-time + (apply 'encode-time (org-parse-time-string ts))) + te (org-float-time + (apply 'encode-time (org-parse-time-string te))) + ts (if tstart (max ts tstart) ts) + te (if tend (min te tend) te) + dt (- te ts) + t1 (if (> dt 0) (+ t1 (floor (/ dt 60))) t1))) + ((match-end 4) + ;; A naked time + (setq t1 (+ t1 (string-to-number (match-string 5)) + (* 60 (string-to-number (match-string 4)))))) + (t ;; A headline + ;; Add the currently clocking item time to the total + (when (and org-clock-report-include-clocking-task + (equal (org-clocking-buffer) (current-buffer)) + (equal (marker-position org-clock-hd-marker) (point)) + tstart + tend + (>= (org-float-time org-clock-start-time) tstart) + (<= (org-float-time org-clock-start-time) tend)) + (let ((time (floor (- (org-float-time) + (org-float-time org-clock-start-time)) 60))) + (setq t1 (+ t1 time)))) + (let* ((headline-forced + (get-text-property (point) + :org-clock-force-headline-inclusion)) + (headline-included + (or (null headline-filter) + (save-excursion + (save-match-data (funcall headline-filter)))))) + (setq level (- (match-end 1) (match-beginning 1))) + (when (or (> t1 0) (> (aref ltimes level) 0)) + (when (or headline-included headline-forced) + (if headline-included + (loop for l from 0 to level do + (aset ltimes l (+ (aref ltimes l) t1)))) + (setq time (aref ltimes level)) + (goto-char (match-beginning 0)) + (put-text-property (point) (point-at-eol) + (or propname :org-clock-minutes) time) + (if headline-filter + (save-excursion + (save-match-data + (while + (> (funcall outline-level) 1) + (outline-up-heading 1 t) + (put-text-property + (point) (point-at-eol) + :org-clock-force-headline-inclusion t)))))) + (setq t1 0) + (loop for l from level to (1- lmax) do + (aset ltimes l 0))))))) + (setq org-clock-file-total-minutes (aref ltimes 0)))))) (defun org-clock-sum-current-item (&optional tstart) "Return time, clocked on current item in total." diff --git a/lisp/org/org-datetree.el b/lisp/org/org-datetree.el index f2e35fa2dfd..e0f4d10bc2d 100644 --- a/lisp/org/org-datetree.el +++ b/lisp/org/org-datetree.el @@ -72,7 +72,7 @@ tree can be found." (goto-char (prog1 (point) (widen)))))) (defun org-datetree-find-year-create (year) - (let ((re "^\\*+[ \t]+\\([12][0-9][0-9][0-9]\\)\\s-*$") + (let ((re "^\\*+[ \t]+\\([12][0-9]\\{3\\}\\)\\(.*?\\([ \t]:[[:alnum:]:_@#%]+:\\)?\\s-*$\\)") match) (goto-char (point-min)) (while (and (setq match (re-search-forward re nil t)) diff --git a/lisp/org/org-docview.el b/lisp/org/org-docview.el index 64c215d8db5..be99ad99a69 100644 --- a/lisp/org/org-docview.el +++ b/lisp/org/org-docview.el @@ -49,7 +49,7 @@ (declare-function image-mode-window-get "ext:image-mode" (prop &optional winprops)) -(autoload 'doc-view-goto-page "doc-view") +(org-autoload "doc-view" '(doc-view-goto-page)) (org-add-link-type "docview" 'org-docview-open) (add-hook 'org-store-link-functions 'org-docview-store-link) diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el index c8096aa3963..5be14771961 100644 --- a/lisp/org/org-element.el +++ b/lisp/org/org-element.el @@ -2893,10 +2893,13 @@ Assume point is at the macro." (end (point)) (args (let ((args (org-match-string-no-properties 3)) args2) (when args - (setq args (org-split-string args ",")) + ;; Do not use `org-split-string' since empty + ;; strings are meaningful here. + (setq args (split-string args ",")) (while args (while (string-match "\\\\\\'" (car args)) - ;; Repair bad splits. + ;; Repair bad splits, when comma is protected, + ;; and thus not a real separator. (setcar (cdr args) (concat (substring (car args) 0 -1) "," (nth 1 args))) (pop args)) @@ -3611,7 +3614,32 @@ recursion. It can be set to the following symbols: When VISIBLE-ONLY is non-nil, don't parse contents of hidden elements. -Assume buffer is in Org mode." +An element or an objects is represented as a list with the +pattern (TYPE PROPERTIES CONTENTS), where : + + TYPE is a symbol describing the element or object. See + `org-element-all-elements' and `org-element-all-objects' for an + exhaustive list of such symbols. One can retrieve it with + `org-element-type' function. + + PROPERTIES is the list of attributes attached to the element or + object, as a plist. Although most of them are specific to the + element or object type, all types share `:begin', `:end', + `:post-blank' and `:parent' properties, which respectively + refer to buffer position where the element or object starts, + ends, the number of white spaces or blank lines after it, and + the element or object containing it. Properties values can be + obtained by using `org-element-property' function. + + CONTENTS is a list of elements, objects or raw strings + contained in the current element or object, when applicable. + One can access them with `org-element-contents' function. + +The Org buffer has `org-data' as type and nil as properties. +`org-element-map' function can be used to find specific elements +or objects within the parse tree. + +This function assumes that current major mode is `org-mode'." (save-excursion (goto-char (point-min)) (org-skip-whitespace) @@ -3640,11 +3668,12 @@ containing the secondary string. It is used to set correctly (defun org-element-map (data types fun &optional info first-match no-recursion) "Map a function on selected elements or objects. -DATA is the parsed tree, as returned by, i.e, +DATA is an Org buffer parse tree, as returned by, i.e., `org-element-parse-buffer'. TYPES is a symbol or list of symbols -of elements or objects types. FUN is the function called on the -matching element or object. It must accept one arguments: the -element or object itself. +of elements or objects types (see `org-element-all-elements' and +`org-element-all-objects' for a complete list of types). FUN is +the function called on the matching element or object. It has to +accept one argument: the element or object itself. When optional argument INFO is non-nil, it should be a plist holding export options. In that case, parts of the parse tree @@ -3658,7 +3687,37 @@ representing elements or objects types. `org-element-map' won't enter any recursive element or object whose type belongs to that list. Though, FUN can still be applied on them. -Nil values returned from FUN do not appear in the results." +Nil values returned from FUN do not appear in the results. + + +Examples: +-------- + +Assuming TREE is a variable containing an Org buffer parse tree, +the following example will return a flat list of all `src-block' +and `example-block' elements in it: + + \(org-element-map tree '(example-block src-block) 'identity) + +The following snippet will find the first headline with a level +of 1 and a \"phone\" tag, and will return its beginning position: + + \(org-element-map + tree 'headline + \(lambda (hl) + \(and (= (org-element-property :level hl) 1) + \(member \"phone\" (org-element-property :tags hl)) + \(org-element-property :begin hl))) + nil t) + +Eventually, this last example will return a flat list of all +`bold' type objects containing a `latex-snippet' type object: + + \(org-element-map + tree 'bold + \(lambda (b) + \(and (org-element-map b 'latex-snippet 'identity nil t) + b)))" ;; Ensure TYPES and NO-RECURSION are a list, even of one element. (unless (listp types) (setq types (list types))) (unless (listp no-recursion) (setq no-recursion (list no-recursion))) @@ -4168,8 +4227,8 @@ of the element and PROPS a plist of properties associated to the element. Possible types are defined in `org-element-all-elements'. -Properties depend on element or object type, but always -include :begin, :end, :parent and :post-blank properties. +Properties depend on element or object type, but always include +`:begin', `:end', `:parent' and `:post-blank' properties. As a special case, if point is at the very beginning of a list or sub-list, returned element will be that list instead of the first @@ -4178,8 +4237,8 @@ row of a table, returned element will be the table instead of the first row. If optional argument KEEP-TRAIL is non-nil, the function returns -a list of of elements leading to element at point. The list's -CAR is always the element at point. Following positions contain +a list of elements leading to element at point. The list's CAR +is always the element at point. The following positions contain element's siblings, then parents, siblings of parents, until the first element of current section." (org-with-wide-buffer @@ -4268,8 +4327,8 @@ associated to it. Possible types are defined in `org-element-all-elements' and `org-element-all-objects'. Properties depend on element or -object type, but always include :begin, :end, :parent -and :post-blank properties." +object type, but always include `:begin', `:end', `:parent' and +`:post-blank'." (org-with-wide-buffer (let* ((origin (point)) (element (org-element-at-point)) diff --git a/lisp/org/org-footnote.el b/lisp/org/org-footnote.el index 269ea8ebf9c..4cde24bf57f 100644 --- a/lisp/org/org-footnote.el +++ b/lisp/org/org-footnote.el @@ -486,7 +486,8 @@ or new, let the user edit the definition of the footnote." (defun org-footnote-create-definition (label) "Start the definition of a footnote with label LABEL." (interactive "sLabel: ") - (let ((label (org-footnote-normalize-label label))) + (let ((label (org-footnote-normalize-label label)) + electric-indent-mode) ;; Prevent wrong indentation (cond ;; In an Org file. ((derived-mode-p 'org-mode) diff --git a/lisp/org/org-freemind.el b/lisp/org/org-freemind.el index c33b70224fa..3b1c6863f54 100644 --- a/lisp/org/org-freemind.el +++ b/lisp/org/org-freemind.el @@ -275,7 +275,7 @@ will also unescape &#nn;." ))) org-str)))) -;; (let* ((str1 "a quote: \", an amp: &, lt: <; over 256: öåäÖÅÄ") +;; (let* ((str1 "a quote: \", an amp: &, lt: <; over 256: öåäÖÅÄ") ;; (str2 (org-freemind-escape-str-from-org str1)) ;; (str3 (org-freemind-unescape-str-to-org str2))) ;; (unless (string= str1 str3) @@ -1221,6 +1221,7 @@ PATH should be a list of steps, where each step has the form ;; Local variables: ;; generated-autoload-file: "org-loaddefs.el" +;; coding: utf-8 ;; End: ;;; org-freemind.el ends here diff --git a/lisp/org/org-html.el b/lisp/org/org-html.el index 493d8a28afb..ca90f855aab 100644 --- a/lisp/org/org-html.el +++ b/lisp/org/org-html.el @@ -464,6 +464,9 @@ precedence over this variable." (defcustom org-export-html-preamble-format '(("en" "")) "Alist of languages and format strings for the HTML preamble. +To enable the HTML exporter to use these formats, you need to set +`org-export-html-preamble' to `t'. + The first element of each list is the language code, as used for the #+LANGUAGE keyword. @@ -510,6 +513,9 @@ precedence over this variable." ")) "Alist of languages and format strings for the HTML postamble. +To enable the HTML exporter to use these formats, you need to set +`org-export-html-postamble' to `t'. + The first element of each list is the language code, as used for the #+LANGUAGE keyword. @@ -1030,7 +1036,10 @@ OPT-PLIST is the export options list." (if (string-match "^file:" desc) (setq desc (substring desc (match-end 0))))) (setq desc (org-add-props - (concat "<img src=\"" desc "\" alt=\"" + (concat "<img src=\"" desc "\" " + (when (save-match-data (string-match "width=" attr)) + (prog1 (concat attr " ") (setq attr ""))) + "alt=\"" (file-name-nondirectory desc) "\"/>") '(org-protected t)))) (cond diff --git a/lisp/org/org-id.el b/lisp/org/org-id.el index 6e865b50c2c..ecf67f72f3a 100644 --- a/lisp/org/org-id.el +++ b/lisp/org/org-id.el @@ -259,11 +259,11 @@ In any case, the ID of the entry is returned." id))))) (defun org-id-get-with-outline-path-completion (&optional targets) - "Use outline-path-completion to retrieve the ID of an entry. -TARGETS may be a setting for `org-refile-targets' to define the eligible -headlines. When omitted, all headlines in all agenda files are -eligible. -It returns the ID of the entry. If necessary, the ID is created." + "Use `outline-path-completion' to retrieve the ID of an entry. +TARGETS may be a setting for `org-refile-targets' to define +eligible headlines. When omitted, all headlines in the current +file are eligible. This function returns the ID of the entry. +If necessary, the ID is created." (let* ((org-refile-targets (or targets '((nil . (:maxlevel . 10))))) (org-refile-use-outline-path (if (caar org-refile-targets) 'file t)) diff --git a/lisp/org/org-indent.el b/lisp/org/org-indent.el index 054ccb07302..6e6f2bf1589 100644 --- a/lisp/org/org-indent.el +++ b/lisp/org/org-indent.el @@ -159,69 +159,68 @@ properties, after each buffer modification, on the modified zone. The process is synchronous. Though, initial indentation of buffer, which can take a few seconds on large buffers, is done -during idle time." nil " Ind" nil -(cond - ((org-bound-and-true-p org-inhibit-startup) - (setq org-indent-mode nil)) - ((and org-indent-mode (featurep 'xemacs)) - (message "org-indent-mode does not work in XEmacs - refusing to turn it on") - (setq org-indent-mode nil)) - ((and org-indent-mode - (not (org-version-check "23.1.50" "Org Indent mode" :predicate))) - (message "org-indent-mode can crash Emacs 23.1 - refusing to turn it on!") - (ding) - (sit-for 1) - (setq org-indent-mode nil)) - (org-indent-mode - ;; mode was turned on. - (org-set-local 'indent-tabs-mode nil) - (or org-indent-strings (org-indent-initialize)) - (org-set-local 'org-indent-initial-marker (copy-marker 1)) - (when org-indent-mode-turns-off-org-adapt-indentation - (org-set-local 'org-adapt-indentation nil)) - (when org-indent-mode-turns-on-hiding-stars - (org-set-local 'org-hide-leading-stars-before-indent-mode - org-hide-leading-stars) - (org-set-local 'org-hide-leading-stars t)) - (make-local-variable 'filter-buffer-substring-functions) - (add-hook 'filter-buffer-substring-functions - (lambda (fun start end delete) - (org-indent-remove-properties-from-string - (funcall fun start end delete)))) - (org-add-hook 'after-change-functions 'org-indent-refresh-maybe nil 'local) - (org-add-hook 'before-change-functions - 'org-indent-notify-modified-headline nil 'local) - (and font-lock-mode (org-restart-font-lock)) - (org-indent-remove-properties (point-min) (point-max)) - ;; Submit current buffer to initialize agent. If it's the first - ;; buffer submitted, also start the agent. Current buffer is - ;; pushed in both cases to avoid a race condition. - (if org-indent-agentized-buffers +during idle time." + nil " Ind" nil + (cond + ((and org-indent-mode (featurep 'xemacs)) + (message "org-indent-mode does not work in XEmacs - refusing to turn it on") + (setq org-indent-mode nil)) + ((and org-indent-mode + (not (org-version-check "23.1.50" "Org Indent mode" :predicate))) + (message "org-indent-mode can crash Emacs 23.1 - refusing to turn it on!") + (ding) + (sit-for 1) + (setq org-indent-mode nil)) + (org-indent-mode + ;; mode was turned on. + (org-set-local 'indent-tabs-mode nil) + (or org-indent-strings (org-indent-initialize)) + (org-set-local 'org-indent-initial-marker (copy-marker 1)) + (when org-indent-mode-turns-off-org-adapt-indentation + (org-set-local 'org-adapt-indentation nil)) + (when org-indent-mode-turns-on-hiding-stars + (org-set-local 'org-hide-leading-stars-before-indent-mode + org-hide-leading-stars) + (org-set-local 'org-hide-leading-stars t)) + (make-local-variable 'filter-buffer-substring-functions) + (add-hook 'filter-buffer-substring-functions + (lambda (fun start end delete) + (org-indent-remove-properties-from-string + (funcall fun start end delete)))) + (org-add-hook 'after-change-functions 'org-indent-refresh-maybe nil 'local) + (org-add-hook 'before-change-functions + 'org-indent-notify-modified-headline nil 'local) + (and font-lock-mode (org-restart-font-lock)) + (org-indent-remove-properties (point-min) (point-max)) + ;; Submit current buffer to initialize agent. If it's the first + ;; buffer submitted, also start the agent. Current buffer is + ;; pushed in both cases to avoid a race condition. + (if org-indent-agentized-buffers + (push (current-buffer) org-indent-agentized-buffers) (push (current-buffer) org-indent-agentized-buffers) - (push (current-buffer) org-indent-agentized-buffers) - (setq org-indent-agent-timer - (run-with-idle-timer 0.2 t #'org-indent-initialize-agent)))) - (t - ;; mode was turned off (or we refused to turn it on) - (kill-local-variable 'org-adapt-indentation) - (setq org-indent-agentized-buffers - (delq (current-buffer) org-indent-agentized-buffers)) - (when (markerp org-indent-initial-marker) - (set-marker org-indent-initial-marker nil)) - (when (boundp 'org-hide-leading-stars-before-indent-mode) - (org-set-local 'org-hide-leading-stars - org-hide-leading-stars-before-indent-mode)) - (remove-hook 'filter-buffer-substring-functions - (lambda (fun start end delete) - (org-indent-remove-properties-from-string - (funcall fun start end delete)))) - (remove-hook 'after-change-functions 'org-indent-refresh-maybe 'local) - (remove-hook 'before-change-functions - 'org-indent-notify-modified-headline 'local) - (org-with-wide-buffer - (org-indent-remove-properties (point-min) (point-max))) - (and font-lock-mode (org-restart-font-lock)) - (redraw-display)))) + (setq org-indent-agent-timer + (run-with-idle-timer 0.2 t #'org-indent-initialize-agent)))) + (t + ;; mode was turned off (or we refused to turn it on) + (kill-local-variable 'org-adapt-indentation) + (setq org-indent-agentized-buffers + (delq (current-buffer) org-indent-agentized-buffers)) + (when (markerp org-indent-initial-marker) + (set-marker org-indent-initial-marker nil)) + (when (boundp 'org-hide-leading-stars-before-indent-mode) + (org-set-local 'org-hide-leading-stars + org-hide-leading-stars-before-indent-mode)) + (remove-hook 'filter-buffer-substring-functions + (lambda (fun start end delete) + (org-indent-remove-properties-from-string + (funcall fun start end delete)))) + (remove-hook 'after-change-functions 'org-indent-refresh-maybe 'local) + (remove-hook 'before-change-functions + 'org-indent-notify-modified-headline 'local) + (org-with-wide-buffer + (org-indent-remove-properties (point-min) (point-max))) + (and font-lock-mode (org-restart-font-lock)) + (redraw-display)))) (defun org-indent-indent-buffer () "Add indentation properties to the accessible part of the buffer." @@ -329,7 +328,7 @@ stopped." ;; inline task or not. (let* ((case-fold-search t) (limited-re (org-get-limited-outline-regexp)) - (added-ind-per-lvl (1- org-indent-indentation-per-level)) + (added-ind-per-lvl (abs (1- org-indent-indentation-per-level))) (pf (save-excursion (and (ignore-errors (let ((outline-regexp limited-re)) (org-back-to-heading t))) diff --git a/lisp/org/org-install.el b/lisp/org/org-install.el index aca019fb823..58359597363 100644 --- a/lisp/org/org-install.el +++ b/lisp/org/org-install.el @@ -1,10 +1,12 @@ ;;; org-install.el --- backward compatibility file for obsolete configuration ;; ;;; Code: -(warn "The file org-install is obsolete. -It is provided here so that (require 'org-install) does not -trigger an error for users with obsolete Emacs configuration. -You can safely remove (require 'org-install) from your config.") +;; +;; The file org-install is obsolete. +;; +;; It is provided here so that (require 'org-install) does not +;; trigger an error for users with obsolete Emacs configuration. +;; You can safely remove (require 'org-install) from your config." (provide 'org-install) diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el index 78cb2a621c7..47476481625 100644 --- a/lisp/org/org-list.el +++ b/lisp/org/org-list.el @@ -1802,7 +1802,9 @@ This function modifies STRUCT." ;; There are boxes checked after an unchecked one: fix that. (when (member "[X]" after-unchecked) (let ((index (- (length struct) (length after-unchecked)))) - (mapc (lambda (e) (org-list-set-checkbox e struct "[ ]")) + (mapc (lambda (e) + (when (org-list-get-checkbox e struct) + (org-list-set-checkbox e struct "[ ]"))) (nthcdr index all-items)) ;; Verify once again the structure, without ORDERED. (org-list-struct-fix-box struct parents prevs nil) diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el index a44bdbe30fd..57b2d8a577e 100644 --- a/lisp/org/org-macs.el +++ b/lisp/org/org-macs.el @@ -93,7 +93,7 @@ Also, do not record undo information." `(set-buffer-modified-p (prog1 (buffer-modified-p) (let ((buffer-undo-list t) - before-change-functions after-change-functions) + (inhibit-modification-hooks t)) ,@body)))) (def-edebug-spec org-unmodified (body)) @@ -263,7 +263,8 @@ in `org-rm-props'." (cond ((eq key t) t) ((eq option t) t) ((assoc key option) (cdr (assoc key option))) - (t (cdr (assq 'default option))))) + (t (let ((r (cdr (assq 'default option)))) + (if (listp r) (delq nil r) r))))) (defsubst org-check-external-command (cmd &optional use no-error) "Check if external program CMD for USE exists, error if not. diff --git a/lisp/org/org-mobile.el b/lisp/org/org-mobile.el index a410de0d775..293d2a000c0 100644 --- a/lisp/org/org-mobile.el +++ b/lisp/org/org-mobile.el @@ -1064,7 +1064,7 @@ be returned that indicates what went wrong." (if (org-on-heading-p) ; if false we are in top-level of file (progn (end-of-line 1) - (org-insert-heading-respect-content) + (org-insert-heading-respect-content t) (org-demote)) (beginning-of-line) (insert "* ")) diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index e62eba3cf83..4fa865308e9 100644 --- a/lisp/org/org-version.el +++ b/lisp/org/org-version.el @@ -5,13 +5,13 @@ (defun org-release () "The release version of org-mode. Inserted by installing org-mode or when a release is made." - (let ((org-release "7.9.3d")) + (let ((org-release "7.9.3f")) org-release)) ;;;###autoload (defun org-git-version () "The Git version of org-mode. Inserted by installing org-mode or when a release is made." - (let ((org-git-version "7.9.3d-GNU-Emacs-24-3 (commit e8f5b0ad)")) + (let ((org-git-version "release_7.9.3f-17-g7524ef")) org-git-version)) ;;;###autoload (defvar org-odt-data-dir "/usr/share/emacs/etc/org" diff --git a/lisp/org/org.el b/lisp/org/org.el index 9409feca178..cc4c93f22eb 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -114,7 +114,6 @@ Stars are put in group 1 and the trimmed body in group 2.") (declare-function org-inlinetask-outline-regexp "org-inlinetask" ()) (declare-function org-inlinetask-toggle-visibility "org-inlinetask" ()) (declare-function org-pop-to-buffer-same-window "org-compat" (&optional buffer-or-name norecord label)) -(declare-function org-at-clock-log-p "org-clock" ()) (declare-function org-clock-timestamps-up "org-clock" ()) (declare-function org-clock-timestamps-down "org-clock" ()) (declare-function org-clock-sum-current-item "org-clock" (&optional tstart)) @@ -467,7 +466,11 @@ the following lines anywhere in the buffer: #+STARTUP: fold (or `overview', this is equivalent) #+STARTUP: nofold (or `showall', this is equivalent) #+STARTUP: content - #+STARTUP: showeverything" + #+STARTUP: showeverything + +By default, this option is ignored when Org opens agenda files +for the first time. If you want the agenda to honor the startup +option, set `org-agenda-inhibit-startup' to nil." :group 'org-startup :type '(choice (const :tag "nofold: show all" nil) @@ -928,7 +931,7 @@ nil, don't do anything special at the beginning of the buffer." (defcustom org-cycle-level-after-item/entry-creation t "Non-nil means cycle entry level or item indentation in new empty entries. -When the cursor is at the end of an empty headline, i.e with only stars +When the cursor is at the end of an empty headline, i.e., with only stars and maybe a TODO keyword, TAB will then switch the entry to become a child, and then all possible ancestor states, before returning to the original state. This makes data entry extremely fast: M-RET to create a new headline, @@ -3913,6 +3916,7 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables." (save-excursion (goto-char (org-table-begin 'any)) (looking-at org-table1-hline-regexp)))) + (defun org-table-recognize-table.el () "If there is a table.el table nearby, recognize it and move into it." (if org-table-tab-recognizes-table.el @@ -3948,7 +3952,6 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables." nil)) (defvar org-table-clean-did-remove-column nil) - (defun org-table-map-tables (function &optional quietly) "Apply FUNCTION to the start of all tables in the buffer." (save-excursion @@ -4915,6 +4918,7 @@ The following commands are available: (org-set-local 'calc-embedded-open-mode "# ") (modify-syntax-entry ?@ "w") (if org-startup-truncated (setq truncate-lines t)) + (when org-startup-indented (require 'org-indent) (org-indent-mode 1)) (org-set-local 'font-lock-unfontify-region-function 'org-unfontify-region) ;; Activate before-change-function @@ -4968,10 +4972,8 @@ The following commands are available: (org-add-hook 'isearch-mode-end-hook 'org-isearch-end 'append 'local) ;; Emacs 22 deals with this through a special variable (org-set-local 'outline-isearch-open-invisible-function - (lambda (&rest ignore) (org-show-context 'isearch)))) - - ;; Turn on org-beamer-mode? - (and org-startup-with-beamer-mode (org-beamer-mode)) + (lambda (&rest ignore) (org-show-context 'isearch))) + (org-add-hook 'isearch-mode-end-hook 'org-fix-ellipsis-at-bol 'append 'local)) ;; Setup the pcomplete hooks (set (make-local-variable 'pcomplete-command-completion-function) @@ -4992,15 +4994,13 @@ The following commands are available: (= (point-min) (point-max))) (insert "# -*- mode: org -*-\n\n")) (unless org-inhibit-startup + (and org-startup-with-beamer-mode (org-beamer-mode)) (when org-startup-align-all-tables (let ((bmp (buffer-modified-p))) (org-table-map-tables 'org-table-align 'quietly) (set-buffer-modified-p bmp))) (when org-startup-with-inline-images (org-display-inline-images)) - (when org-startup-indented - (require 'org-indent) - (org-indent-mode 1)) (unless org-inhibit-startup-visibility-stuff (org-set-startup-visibility))) ;; Try to set org-hide correctly @@ -5012,6 +5012,8 @@ The following commands are available: (put 'org-mode 'flyspell-mode-predicate 'org-mode-flyspell-verify) +(defsubst org-fix-ellipsis-at-bol () + (save-excursion (goto-char (window-start)) (recenter 0))) (defun org-find-invisible-foreground () (let ((candidates (remove @@ -5209,8 +5211,9 @@ on a string that terminates immediately after the date.") (defconst org-tsr-regexp (concat org-ts-regexp "\\(--?-?" org-ts-regexp "\\)?") "Regular expression matching a time stamp or time stamp range.") -(defconst org-tsr-regexp-both (concat org-ts-regexp-both "\\(--?-?" - org-ts-regexp-both "\\)?") +(defconst org-tsr-regexp-both + (concat org-ts-regexp-both "\\(--?-?" + org-ts-regexp-both "\\)?") "Regular expression matching a time stamp or time stamp range. The time stamps may be either active or inactive.") @@ -5302,21 +5305,20 @@ will be prompted for." (defun org-activate-plain-links (limit) "Run through the buffer and add overlays to links." - (catch 'exit - (let (f) - (when (and (re-search-forward (concat org-plain-link-re) limit t) - (not (org-in-src-block-p))) - (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0)) - (setq f (get-text-property (match-beginning 0) 'face)) - (unless (or (org-in-src-block-p) - (eq f 'org-tag) - (and (listp f) (memq 'org-tag f))) - (add-text-properties (match-beginning 0) (match-end 0) - (list 'mouse-face 'highlight - 'face 'org-link - 'keymap org-mouse-map)) - (org-rear-nonsticky-at (match-end 0))) - t)))) + (let (f) + (when (and (re-search-forward (concat org-plain-link-re) limit t) + (not (org-in-src-block-p))) + (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0)) + (setq f (get-text-property (match-beginning 0) 'face)) + (unless (or (org-in-src-block-p) + (eq f 'org-tag) + (and (listp f) (memq 'org-tag f))) + (add-text-properties (match-beginning 0) (match-end 0) + (list 'mouse-face 'highlight + 'face 'org-link + 'keymap org-mouse-map)) + (org-rear-nonsticky-at (match-end 0))) + t))) (defun org-activate-code (limit) (if (re-search-forward "^[ \t]*\\(:\\(?: .*\\|$\\)\n?\\)" limit t) @@ -5422,7 +5424,7 @@ by a #." '(font-lock-fontified t invisible t) '(font-lock-fontified t face org-document-info-keyword))) (add-text-properties - (match-beginning 6) (1+ (match-end 6)) + (match-beginning 6) (min (point-max) (1+ (match-end 6))) (if (string-equal dc1 "+title:") '(font-lock-fontified t face org-document-title) '(font-lock-fontified t face org-document-info)))) @@ -5514,7 +5516,8 @@ by a #." (defun org-activate-dates (limit) "Run through the buffer and add overlays to dates." - (if (re-search-forward org-tsr-regexp-both limit t) + (if (and (re-search-forward org-tsr-regexp-both limit t) + (not (equal (char-before (match-beginning 0)) 91))) (progn (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0)) (add-text-properties (match-beginning 0) (match-end 0) @@ -6435,13 +6438,16 @@ of the first headline in the buffer. This is important, because if the first headline is not level one, then (hide-sublevels 1) gives confusing results." (interactive) - (let ((level (save-excursion + (let ((l (org-current-line)) + (level (save-excursion (goto-char (point-min)) (if (re-search-forward (concat "^" outline-regexp) nil t) (progn (goto-char (match-beginning 0)) (funcall outline-level)))))) - (and level (hide-sublevels level)))) + (and level (hide-sublevels level)) + (recenter '(4)) + (org-goto-line l))) (defun org-content (&optional arg) "Show all headlines in the buffer, like a table of contents. @@ -7235,12 +7241,14 @@ This is a list with the following elements: (org-move-subtree-down) (end-of-line 1)) -(defun org-insert-heading-respect-content () - (interactive) +(defun org-insert-heading-respect-content (invisible-ok) + "Insert heading with `org-insert-heading-respect-content' set to t." + (interactive "P") (let ((org-insert-heading-respect-content t)) - (org-insert-heading t))) + (org-insert-heading t invisible-ok))) (defun org-insert-todo-heading-respect-content (&optional force-state) + "Insert TODO heading with `org-insert-heading-respect-content' set to t." (interactive "P") (let ((org-insert-heading-respect-content t)) (org-insert-todo-heading force-state t))) @@ -12839,27 +12847,27 @@ How much context is shown depends upon the variables (following-p (org-get-alist-option org-show-following-heading key)) (entry-p (org-get-alist-option org-show-entry-below key)) (siblings-p (org-get-alist-option org-show-siblings key))) - (catch 'exit - ;; Show heading or entry text - (if (and heading-p (not entry-p)) - (org-flag-heading nil) ; only show the heading - (and (or entry-p (outline-invisible-p) (org-invisible-p2)) - (org-show-hidden-entry))) ; show entire entry - (when following-p - ;; Show next sibling, or heading below text - (save-excursion - (and (if heading-p (org-goto-sibling) (outline-next-heading)) - (org-flag-heading nil)))) - (when siblings-p (org-show-siblings)) - (when hierarchy-p - ;; show all higher headings, possibly with siblings - (save-excursion - (while (and (condition-case nil - (progn (org-up-heading-all 1) t) - (error nil)) - (not (bobp))) - (org-flag-heading nil) - (when siblings-p (org-show-siblings)))))))) + ;; Show heading or entry text + (if (and heading-p (not entry-p)) + (org-flag-heading nil) ; only show the heading + (and (or entry-p (outline-invisible-p) (org-invisible-p2)) + (org-show-hidden-entry))) ; show entire entry + (when following-p + ;; Show next sibling, or heading below text + (save-excursion + (and (if heading-p (org-goto-sibling) (outline-next-heading)) + (org-flag-heading nil)))) + (when siblings-p (org-show-siblings)) + (when hierarchy-p + ;; show all higher headings, possibly with siblings + (save-excursion + (while (and (condition-case nil + (progn (org-up-heading-all 1) t) + (error nil)) + (not (bobp))) + (org-flag-heading nil) + (when siblings-p (org-show-siblings))))) + (org-fix-ellipsis-at-bol))) (defvar org-reveal-start-hook nil "Hook run before revealing a location.") @@ -13601,7 +13609,9 @@ If ONOFF is `on' or `off', don't toggle but set to this state." (if (or (org-at-heading-p) (and arg (org-before-first-heading-p))) (org-set-tags arg just-align) (save-excursion - (org-back-to-heading t) + (unless (and (org-region-active-p) + org-loop-over-headlines-in-active-region) + (org-back-to-heading t)) (org-set-tags arg just-align)))) (defun org-set-tags-to (data) @@ -14105,13 +14115,13 @@ agenda-with-archives The remaining args are treated as settings for the skipping facilities of the scanner. The following items can be given here: - archive skip trees with the archive tag. + archive skip trees with the archive tag comment skip trees with the COMMENT keyword function or Emacs Lisp form: - will be used as value for `org-agenda-skip-function', so whenever - the function returns t, FUNC will not be called for that - entry and search will continue from the point where the - function leaves it. + will be used as value for `org-agenda-skip-function', so + whenever the function returns a position, FUNC will not be + called for that entry and search will continue from the + position returned If your function needs to retrieve the tags including inherited tags at the *current* entry, you can use the value of the variable @@ -15925,7 +15935,8 @@ Don't touch the rest." (floor (* (string-to-number (match-string 1 ts)) (cdr (assoc (match-string 2 ts) '(("d" . 1) ("w" . 7) - ("m" . 30.4) ("y" . 365.25))))))) + ("m" . 30.4) ("y" . 365.25) + ("h" . 0.041667))))))) ;; go for the default. (t org-deadline-warning-days))) @@ -16404,6 +16415,12 @@ With prefix ARG, change that many days." (message "Timestamp is now %sactive" (if (equal (char-after beg) ?<) "" "in"))))) +(defun org-at-clock-log-p nil + "Is the cursor on the clock log line?" + (save-excursion + (move-beginning-of-line 1) + (looking-at "^[ \t]*CLOCK:"))) + (defvar org-clock-history) ; defined in org-clock.el (defvar org-clock-adjust-closest nil) ; defined in org-clock.el (defun org-timestamp-change (n &optional what updown) @@ -16662,6 +16679,15 @@ effort string \"2hours\" is equivalent to 120 minutes." :type '(alist :key-type (string :tag "Modifier") :value-type (number :tag "Minutes"))) +(defcustom org-agenda-inhibit-startup t + "Inhibit startup when preparing agenda buffers. +When this variable is `t' (the default), the initialization of +the Org agenda buffers is inhibited: e.g. the visibility state +is not set, the tables are not re-aligned, etc." + :type 'boolean + :version "24.3" + :group 'org-agenda) + (defun org-duration-string-to-minutes (s &optional output-to-string) "Convert a duration string S to minutes. @@ -17001,6 +17027,7 @@ When a buffer is unmodified, it is just killed. When modified, it is saved (pc '(:org-comment t)) (pall '(:org-archived t :org-comment t)) (inhibit-read-only t) + (org-inhibit-startup org-agenda-inhibit-startup) (rea (concat ":" org-archive-tag ":")) bmp file re) (save-excursion @@ -18730,8 +18757,7 @@ this function returns t, nil otherwise." (throw 'exit t)))) nil)))) -(autoload 'org-element-at-point "org-element") -(autoload 'org-element-type "org-element") +(org-autoload "org-element" '(org-element-at-point org-element-type)) (declare-function org-element-at-point "org-element" (&optional keep-trail)) (declare-function org-element-type "org-element" (element)) @@ -19833,7 +19859,7 @@ See the individual commands for more information." ("Refresh/Reload" ["Refresh setup current buffer" org-mode-restart t] ["Reload Org (after update)" org-reload t] - ["Reload Org uncompiled" (org-reload t) :active t :keys "C-u C-c C-x r"]) + ["Reload Org uncompiled" (org-reload t) :active t :keys "C-u C-c C-x !"]) )) (defun org-info (&optional node) @@ -20963,7 +20989,8 @@ hierarchy of headlines by UP levels before marking the subtree." (org-uniquify (append fill-nobreak-predicate '(org-fill-paragraph-separate-nobreak-p - org-fill-line-break-nobreak-p))))) + org-fill-line-break-nobreak-p + org-fill-paragraph-with-timestamp-nobreak-p))))) (org-set-local 'fill-paragraph-function 'org-fill-paragraph) (org-set-local 'auto-fill-inhibit-regexp nil) (org-set-local 'adaptive-fill-function 'org-adaptive-fill-function) @@ -20982,60 +21009,69 @@ hierarchy of headlines by UP levels before marking the subtree." (skip-chars-backward "\\\\") (looking-at "\\\\\\\\\\($\\|[^\\\\]\\)"))) +(defun org-fill-paragraph-with-timestamp-nobreak-p () + "Non-nil when a line break at point would insert a new item." + (and (org-at-timestamp-p t) + (not (looking-at org-ts-regexp-both)))) + (declare-function message-in-body-p "message" ()) (defvar org-element--affiliated-re) ; From org-element.el +(defvar orgtbl-line-start-regexp) ; From org-table.el (defun org-adaptive-fill-function () "Compute a fill prefix for the current line. Return fill prefix, as a string, or nil if current line isn't meant to be filled." (let (prefix) - (when (and (derived-mode-p 'message-mode) (message-in-body-p)) - (save-excursion - (beginning-of-line) - (cond ((looking-at message-cite-prefix-regexp) - (setq prefix (match-string-no-properties 0))) - ((looking-at org-outline-regexp) - (setq prefix ""))))) - (or prefix - (org-with-wide-buffer - (let* ((p (line-beginning-position)) - (element (save-excursion (beginning-of-line) (org-element-at-point))) - (type (org-element-type element)) - (post-affiliated - (save-excursion - (goto-char (org-element-property :begin element)) - (while (looking-at org-element--affiliated-re) (forward-line)) - (point)))) - (unless (< p post-affiliated) - (case type - (comment (looking-at "[ \t]*# ?") (match-string 0)) - (footnote-definition "") - ((item plain-list) - (make-string (org-list-item-body-column post-affiliated) ? )) - (paragraph - ;; Fill prefix is usually the same as the current line, - ;; except if the paragraph is at the beginning of an item. - (let ((parent (org-element-property :parent element))) - (cond ((eq (org-element-type parent) 'item) - (make-string (org-list-item-body-column - (org-element-property :begin parent)) - ? )) - ((save-excursion (beginning-of-line) (looking-at "[ \t]+")) - (match-string 0)) - (t "")))) - (comment-block - ;; Only fill contents if P is within block boundaries. - (let* ((cbeg (save-excursion (goto-char post-affiliated) - (forward-line) - (point))) - (cend (save-excursion - (goto-char (org-element-property :end element)) - (skip-chars-backward " \r\t\n") - (line-beginning-position)))) - (when (and (>= p cbeg) (< p cend)) - (if (save-excursion (beginning-of-line) (looking-at "[ \t]+")) - (match-string 0) - ""))))))))))) + (catch 'exit + (when (derived-mode-p 'message-mode) + (save-excursion + (beginning-of-line) + (cond ((or (not (message-in-body-p)) + (looking-at orgtbl-line-start-regexp)) + (throw 'exit nil)) + ((looking-at message-cite-prefix-regexp) + (throw 'exit (match-string-no-properties 0))) + ((looking-at org-outline-regexp) + (throw 'exit (make-string (length (match-string 0)) ? )))))) + (org-with-wide-buffer + (let* ((p (line-beginning-position)) + (element (save-excursion (beginning-of-line) (org-element-at-point))) + (type (org-element-type element)) + (post-affiliated + (save-excursion + (goto-char (org-element-property :begin element)) + (while (looking-at org-element--affiliated-re) (forward-line)) + (point)))) + (unless (< p post-affiliated) + (case type + (comment (looking-at "[ \t]*# ?") (match-string 0)) + (footnote-definition "") + ((item plain-list) + (make-string (org-list-item-body-column post-affiliated) ? )) + (paragraph + ;; Fill prefix is usually the same as the current line, + ;; except if the paragraph is at the beginning of an item. + (let ((parent (org-element-property :parent element))) + (cond ((eq (org-element-type parent) 'item) + (make-string (org-list-item-body-column + (org-element-property :begin parent)) + ? )) + ((save-excursion (beginning-of-line) (looking-at "[ \t]+")) + (match-string 0)) + (t "")))) + (comment-block + ;; Only fill contents if P is within block boundaries. + (let* ((cbeg (save-excursion (goto-char post-affiliated) + (forward-line) + (point))) + (cend (save-excursion + (goto-char (org-element-property :end element)) + (skip-chars-backward " \r\t\n") + (line-beginning-position)))) + (when (and (>= p cbeg) (< p cend)) + (if (save-excursion (beginning-of-line) (looking-at "[ \t]+")) + (match-string 0) + ""))))))))))) (declare-function message-goto-body "message" ()) (defvar message-cite-prefix-regexp) ; From message.el @@ -22148,7 +22184,8 @@ Show the heading too, if it is currently invisible." isearch-mode-end-hook-quit) ;; Only when the isearch was not quitted. (org-add-hook 'post-command-hook 'org-isearch-post-command - 'append 'local))))) + 'append 'local))) + (org-fix-ellipsis-at-bol))) (defun org-isearch-post-command () "Remove self from hook, and show context." @@ -22179,7 +22216,7 @@ Show the heading too, if it is currently invisible." (re (concat "^" (org-get-limited-outline-regexp))) (subs (make-vector (1+ n) nil)) (last-level 0) - m level head) + m level head0 head) (save-excursion (save-restriction (widen) @@ -22187,9 +22224,9 @@ Show the heading too, if it is currently invisible." (while (re-search-backward re nil t) (setq level (org-reduced-level (funcall outline-level))) (when (and (<= level n) - (looking-at org-complex-heading-regexp)) - (setq head (org-link-display-format - (org-match-string-no-properties 4)) + (looking-at org-complex-heading-regexp) + (setq head0 (org-match-string-no-properties 4))) + (setq head (org-link-display-format head0) m (org-imenu-new-marker)) (org-add-props head nil 'org-imenu-marker m 'org-imenu t) (if (>= level last-level) diff --git a/lisp/outline.el b/lisp/outline.el index 24f25fd2fb7..0ec5227a286 100644 --- a/lisp/outline.el +++ b/lisp/outline.el @@ -43,25 +43,21 @@ :prefix "outline-" :group 'wp) -(defcustom outline-regexp "[*\^L]+" +(defvar outline-regexp "[*\^L]+" "Regular expression to match the beginning of a heading. Any line whose beginning matches this regexp is considered to start a heading. Note that Outline mode only checks this regexp at the start of a line, so the regexp need not (and usually does not) start with `^'. The recommended way to set this is with a Local Variables: list -in the file it applies to. See also `outline-heading-end-regexp'." - :type 'regexp - :group 'outlines) +in the file it applies to. See also `outline-heading-end-regexp'.") ;;;###autoload(put 'outline-regexp 'safe-local-variable 'stringp) -(defcustom outline-heading-end-regexp "\n" +(defvar outline-heading-end-regexp "\n" "Regular expression to match the end of a heading line. You can assume that point is at the beginning of a heading when this regexp is searched for. The heading ends at the end of the match. The recommended way to set this is with a `Local Variables:' list -in the file it applies to." - :type 'regexp - :group 'outlines) +in the file it applies to.") ;;;###autoload(put 'outline-heading-end-regexp 'safe-local-variable 'stringp) (defvar outline-mode-prefix-map diff --git a/lisp/paren.el b/lisp/paren.el index b87c8bde89a..a9d3be60622 100644 --- a/lisp/paren.el +++ b/lisp/paren.el @@ -243,27 +243,26 @@ matching parenthesis is highlighted in `show-paren-style' after ;; ;; Turn on highlighting for the matching paren, if found. ;; If it's an unmatched paren, turn off any such highlighting. - (unless (integerp pos) - (delete-overlay show-paren-overlay)) - (let ((to (if (or (eq show-paren-style 'expression) - (and (eq show-paren-style 'mixed) - (not (pos-visible-in-window-p pos)))) - (point) - pos)) - (from (if (or (eq show-paren-style 'expression) + (if (not (integerp pos)) + (when show-paren-overlay (delete-overlay show-paren-overlay)) + (let ((to (if (or (eq show-paren-style 'expression) (and (eq show-paren-style 'mixed) (not (pos-visible-in-window-p pos)))) - pos - (save-excursion - (goto-char pos) - (- (point) dir))))) - (if show-paren-overlay - (move-overlay show-paren-overlay from to (current-buffer)) - (setq show-paren-overlay (make-overlay from to nil t)))) - ;; - ;; Always set the overlay face, since it varies. - (overlay-put show-paren-overlay 'priority show-paren-priority) - (overlay-put show-paren-overlay 'face face))) + (point) + pos)) + (from (if (or (eq show-paren-style 'expression) + (and (eq show-paren-style 'mixed) + (not (pos-visible-in-window-p pos)))) + pos + (save-excursion + (goto-char pos) + (- (point) dir))))) + (if show-paren-overlay + (move-overlay show-paren-overlay from to (current-buffer)) + (setq show-paren-overlay (make-overlay from to nil t)))) + ;; Always set the overlay face, since it varies. + (overlay-put show-paren-overlay 'priority show-paren-priority) + (overlay-put show-paren-overlay 'face face)))) ;; show-paren-mode is nil in this buffer. (and show-paren-overlay (delete-overlay show-paren-overlay)) diff --git a/lisp/play/bubbles.el b/lisp/play/bubbles.el index 10493093aad..665e98a69b2 100644 --- a/lisp/play/bubbles.el +++ b/lisp/play/bubbles.el @@ -1,4 +1,4 @@ -;;; bubbles.el --- Puzzle game for Emacs +;;; bubbles.el --- Puzzle game for Emacs -*- coding: utf-8 -*- ;; Copyright (C) 2007-2013 Free Software Foundation, Inc. @@ -198,7 +198,7 @@ types are present." :group 'bubbles) (defcustom bubbles-chars - '(?+ ?O ?# ?X ?. ?* ?& ?§) + '(?+ ?O ?# ?X ?. ?* ?& ?§) "Characters used for bubbles. Note that the actual number of different bubbles is determined by the number of colors, see `bubbles-colors'." diff --git a/lisp/play/fortune.el b/lisp/play/fortune.el index 17ab6f98254..cb58c0d0af0 100644 --- a/lisp/play/fortune.el +++ b/lisp/play/fortune.el @@ -246,12 +246,11 @@ the value of `fortune-file'. This currently cannot handle directories." (substitute-in-file-name (concat fortune-file fortune-database-extension))))) (cond ((file-exists-p fortune-file) - (if (file-exists-p fortune-dat) - (cond ((file-newer-than-file-p fortune-file fortune-dat) - (message "Compiling new fortune database %s" fortune-dat) - (shell-command - (concat fortune-strfile fortune-strfile-options - " " fortune-file fortune-quiet-strfile-options)))))) + (cond ((file-newer-than-file-p fortune-file fortune-dat) + (message "Compiling new fortune database %s" fortune-dat) + (shell-command + (concat fortune-strfile fortune-strfile-options + " " fortune-file fortune-quiet-strfile-options))))) (t (error "Can't compile fortune file %s" fortune-file))))) diff --git a/lisp/play/gamegrid.el b/lisp/play/gamegrid.el index eefe1e22599..b6fd064ca84 100644 --- a/lisp/play/gamegrid.el +++ b/lisp/play/gamegrid.el @@ -505,16 +505,15 @@ FILE is created there." (make-directory gamegrid-user-score-file-directory t)) (gamegrid-add-score-insecure file score gamegrid-user-score-file-directory)) - (t (let ((f (expand-file-name - gamegrid-user-score-file-directory))) - (when (file-writable-p f) - (unless (eq (car-safe (file-attributes f)) - t) - (make-directory f)) - (setq f (expand-file-name file f)) - (unless (file-exists-p f) - (write-region "" nil f nil 'silent nil 'excl))) - (gamegrid-add-score-with-update-game-score-1 file f score)))))) + (t + (unless (file-exists-p + (directory-file-name gamegrid-user-score-file-directory)) + (make-directory gamegrid-user-score-file-directory t)) + (let ((f (expand-file-name file + gamegrid-user-score-file-directory))) + (unless (file-exists-p f) + (write-region "" nil f nil 'silent nil 'excl)) + (gamegrid-add-score-with-update-game-score-1 file f score)))))) (defun gamegrid-add-score-with-update-game-score-1 (file target score) (let ((default-directory "/") diff --git a/lisp/play/gametree.el b/lisp/play/gametree.el index 5cd39d535c8..3daf9d5f784 100644 --- a/lisp/play/gametree.el +++ b/lisp/play/gametree.el @@ -435,7 +435,7 @@ only work of Black's moves are explicitly numbered, for instance gametree-half-ply-regexp)) limit)) (goto-char (match-beginning 0)))) (gametree-transpose-following-leaves) - (let* ((pt (set-marker (make-marker) (point))) + (let* ((pt (point-marker)) (plys (gametree-current-branch-ply)) (depth (gametree-current-branch-depth)) (old-depth depth)) diff --git a/lisp/play/handwrite.el b/lisp/play/handwrite.el index de6c198092e..63b09895e85 100644 --- a/lisp/play/handwrite.el +++ b/lisp/play/handwrite.el @@ -1,4 +1,4 @@ -;;; handwrite.el --- turns your emacs buffer into a handwritten document -*- coding: iso-latin-1; -*- +;;; handwrite.el --- turns your emacs buffer into a handwritten document -*- coding: utf-8; -*- ;; Copyright (C) 1996, 2001-2013 Free Software Foundation, Inc. @@ -170,15 +170,15 @@ Variables: `handwrite-linespace' (default 12) (textp) (ps-buf-name) ;name of the PostScript buffer (trans-table - '(("ÿ" . "264") ("á" . "207") ("à" . "210") ("â" . "211") - ("ä" . "212") ("ã" . "213") ("å" . "214") ("é" . "216") - ("è" . "217") ("ê" . "220") ("ë" . "221") ("í" . "222") - ("ì" . "223") ("î" . "224") ("ï" . "225") ("ó" . "227") - ("ò" . "230") ("ô" . "231") ("ö" . "232") ("õ" . "233") - ("ú" . "234") ("ù" . "235") ("û" . "236") ("ü" . "237") - ("ß" . "247") ("°" . "241") ("®" . "250") ("©" . "251") - ("ij" . "264") ("ç" . "215") ("§" . "244") ("ñ" . "226") - ("£" . "243"))) + '(("ÿ" . "264") ("á" . "207") ("à " . "210") ("â" . "211") + ("ä" . "212") ("ã" . "213") ("Ã¥" . "214") ("é" . "216") + ("è" . "217") ("ê" . "220") ("ë" . "221") ("Ã" . "222") + ("ì" . "223") ("î" . "224") ("ï" . "225") ("ó" . "227") + ("ò" . "230") ("ô" . "231") ("ö" . "232") ("õ" . "233") + ("ú" . "234") ("ù" . "235") ("û" . "236") ("ü" . "237") + ("ß" . "247") ("°" . "241") ("®" . "250") ("©" . "251") + ("ij" . "264") ("ç" . "215") ("§" . "244") ("ñ" . "226") + ("£" . "243"))) (escape-table '("\\\\" "(" ")")) ; \\ comes first to not work ; on inserted backslashes line) diff --git a/lisp/profiler.el b/lisp/profiler.el index 2a4a9013986..07192a39bef 100644 --- a/lisp/profiler.el +++ b/lisp/profiler.el @@ -20,7 +20,7 @@ ;;; Commentary: -;; +;; See Info node `(elisp)Profiling'. ;;; Code: @@ -200,11 +200,18 @@ function name of a function itself." (goto-char (point-min)) (read (current-buffer)))) +(defun profiler-running-p (&optional mode) + "Return non-nil if the profiler is running. +Optional argument MODE means only check for the specified mode (cpu or mem)." + (cond ((eq mode 'cpu) (and (fboundp 'profiler-cpu-running-p) + (profiler-cpu-running-p))) + ((eq mode 'mem) (profiler-memory-running-p)) + (t (or (profiler-running-p 'cpu) + (profiler-running-p 'mem))))) + (defun profiler-cpu-profile () "Return CPU profile." - (when (and (fboundp 'profiler-cpu-running-p) - (fboundp 'profiler-cpu-log) - (profiler-cpu-running-p)) + (when (profiler-running-p 'cpu) (profiler-make-profile :type 'cpu :timestamp (current-time) @@ -457,7 +464,14 @@ RET: expand or collapse")) ["Compare Profile..." profiler-report-compare-profile :active t :help "Compare current profile with another"] ["Write Profile..." profiler-report-write-profile :active t - :help "Write current profile to a file"])) + :help "Write current profile to a file"] + "--" + ["Start Profiler" profiler-start :active (not (profiler-running-p)) + :help "Start profiling"] + ["Stop Profiler" profiler-stop :active (profiler-running-p) + :help "Stop profiling"] + ["New Report" profiler-report :active (profiler-running-p) + :help "Make a new report"])) map) "Keymap for `profiler-report-mode'.") diff --git a/lisp/progmodes/cc-align.el b/lisp/progmodes/cc-align.el index b552b68c4b7..33836f25335 100644 --- a/lisp/progmodes/cc-align.el +++ b/lisp/progmodes/cc-align.el @@ -53,7 +53,7 @@ (defun c-lineup-topmost-intro-cont (langelem) "Line up declaration continuation lines zero or one indentation step. For lines in the \"header\" of a definition, zero is used. For other -lines, `c-basic-offset' is added to the indentation. E.g: +lines, `c-basic-offset' is added to the indentation. E.g.: int neg (int i) <- c-lineup-topmost-intro-cont @@ -165,7 +165,7 @@ Works with: topmost-intro-cont." As a special case, if the indented line is inside a brace block construct, the indentation is `c-basic-offset' only. This is intended as a \"DWIM\" measure in cases like macros that contains statement -blocks, e.g: +blocks, e.g.: A_VERY_LONG_MACRO_NAME ({ some (code, with + long, lines * in[it]); @@ -340,7 +340,7 @@ Works with: arglist-cont, arglist-cont-nonempty." (defun c-lineup-close-paren (langelem) "Line up the closing paren under its corresponding open paren if the open paren is followed by code. If the open paren ends its line, no -indentation is added. E.g: +indentation is added. E.g.: main (int, main ( char ** int, char ** @@ -394,7 +394,7 @@ Works with: stream-op." (defun c-lineup-multi-inher (langelem) "Line up the classes in C++ multiple inheritance clauses and member -initializers under each other. E.g: +initializers under each other. E.g.: class Foo: Foo::Foo (int a, int b): public Cyphr, Cyphr (a), @@ -439,7 +439,7 @@ Works with: inher-cont, member-init-cont." If class names follow on the same line as the implements/extends keyword, they are lined up under each other. Otherwise, they are indented by adding `c-basic-offset' to the column of the keyword. -E.g: +E.g.: class Foo class Foo extends extends Cyphr, @@ -461,7 +461,7 @@ If exception names follow on the same line as the throws keyword, they are lined up under each other. Otherwise, they are indented by adding `c-basic-offset' to the column of the throws keyword. The throws keyword itself is also indented by `c-basic-offset' from the -function declaration start if it doesn't hang. E.g: +function declaration start if it doesn't hang. E.g.: int foo() int foo() throws Cyphr, throws <-> Bar, <- c-lineup-java-throws @@ -485,7 +485,7 @@ Works with: func-decl-cont." (defun c-indent-one-line-block (langelem) "Indent a one line block `c-basic-offset' extra. -E.g: +E.g.: if (n > 0) if (n > 0) {m+=n; n=0;} <-> { <- c-indent-one-line-block @@ -508,7 +508,7 @@ Work with: Almost all syntactic symbols, but most useful on *-open." (defun c-indent-multi-line-block (langelem) "Indent a multi line block `c-basic-offset' extra. -E.g: +E.g.: int *foo[] = { int *foo[] = { NULL, NULL, @@ -670,7 +670,7 @@ Works with: comment-intro." (defun c-lineup-knr-region-comment (langelem) "Line up a comment in the \"K&R region\" with the declaration. That is the region between the function or class header and the -beginning of the block. E.g: +beginning of the block. E.g.: int main() /* This is the main function. */ <- c-lineup-knr-region-comment @@ -693,7 +693,7 @@ Works with: comment-intro." (defun c-lineup-runin-statements (langelem) "Line up statements when the first statement is on the same line as -the block opening brace. E.g: +the block opening brace. E.g.: int main() { puts (\"Hello world!\"); @@ -737,7 +737,7 @@ arglist-cont-nonempty." (setq startpos (c-langelem-pos langelem))))) (setq startpos (c-langelem-pos langelem) - endpos (point)) + endpos (c-point 'bol)) ;; Find a syntactically relevant and unnested "=" token on the ;; current line. equalp is in that case set to the number of @@ -794,7 +794,7 @@ arglist-cont-nonempty." "Line up \"cascaded calls\" under each other. If the line begins with \"->\" or \".\" and the preceding line ends with one or more function calls preceded by the same token, then the -arrow is lined up with the first of those tokens. E.g: +arrow is lined up with the first of those tokens. E.g.: result = proc->add(17)->add(18) ->add(19) + <- c-lineup-cascaded-calls @@ -839,7 +839,7 @@ arglist-cont-nonempty." (defun c-lineup-string-cont (langelem) "Line up a continued string under the one it continues. A continued string in this sense is where a string literal follows -directly after another one. E.g: +directly after another one. E.g.: result = prefix + \"A message \" \"string.\"; <- c-lineup-string-cont @@ -921,7 +921,7 @@ Works with: objc-method-call-cont." ; no complete argument to indent yet (throw 'no-idea nil)))) - (extra (save-excursion + (extra (save-excursion ; indent parameter to argument if needed (back-to-indentation) (c-backward-syntactic-ws (c-langelem-pos langelem)) @@ -1023,7 +1023,7 @@ Works with: inlambda, inexpr-statement, inexpr-class." (defun c-lineup-whitesmith-in-block (langelem) "Line up lines inside a block in Whitesmith style. It's done in a way that works both when the opening brace hangs and -when it doesn't. E.g: +when it doesn't. E.g.: something { something { @@ -1039,6 +1039,7 @@ brace-list-close, brace-list-intro, statement-block-intro, arglist-intro, arglist-cont-nonempty, arglist-close, and all in* symbols, e.g. inclass and inextern-lang." (save-excursion + (beginning-of-line) (if (and (c-go-up-list-backward) (= (point) (c-point 'boi))) nil @@ -1085,7 +1086,7 @@ arglist-cont." (defun c-lineup-cpp-define (langelem) "Line up macro continuation lines according to the indentation of -the construct preceding the macro. E.g: +the construct preceding the macro. E.g.: v beg of preceding constr v beg of preceding constr int dribble() { @@ -1191,6 +1192,7 @@ Works with: arglist-cont, arglist-cont-nonempty." (let ((orig-pos (point)) alignto) (save-excursion + (beginning-of-line) (and c-opt-asm-stmt-key @@ -1284,7 +1286,7 @@ newline is added. In either case, checking is stopped. This supports exactly the old newline insertion behavior." ;; newline only after semicolon, but only if that semicolon is not ;; inside a parenthesis list (e.g. a for loop statement) - (if (not (eq last-command-event ?\;)) + (if (not (eq (c-last-command-char) ?\;)) nil ; continue checking (if (condition-case nil (save-excursion @@ -1301,7 +1303,7 @@ If a comma was inserted, no determination is made. If a semicolon was inserted, and the following line is not blank, no newline is inserted. Otherwise, no determination is made." (save-excursion - (if (and (= last-command-event ?\;) + (if (and (= (c-last-command-char) ?\;) ;;(/= (point-max) ;; (save-excursion (skip-syntax-forward " ") (point)) (zerop (forward-line 1)) @@ -1318,13 +1320,13 @@ suppressed in one-liners, if the line is an in-class inline function. For other semicolon contexts, no determination is made." (let ((syntax (c-guess-basic-syntax)) (bol (save-excursion - (if (c-safe (up-list -1) t) - (c-point 'bol) - -1)))) - (if (and (eq last-command-event ?\;) - (eq (car (car syntax)) 'inclass) - (eq (car (car (cdr syntax))) 'topmost-intro) - (= (c-point 'bol) bol)) + (if (c-safe (up-list -1) t) + (c-point 'bol) + -1)))) + (if (and (eq (c-last-command-char) ?\;) + (eq (car (car syntax)) 'inclass) + (eq (car (car (cdr syntax))) 'topmost-intro) + (= (c-point 'bol) bol)) 'stop nil))) diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el index c4099c7c5d3..4b3fc91b0ff 100644 --- a/lisp/progmodes/cc-awk.el +++ b/lisp/progmodes/cc-awk.el @@ -127,22 +127,29 @@ ;; escaped EOL. ;; REGEXPS FOR "HARMLESS" STRINGS/LINES. -(defconst c-awk-harmless-char-re "[^_#/\"\\\\\n\r]") -;; Matches any character but a _, #, /, ", \, or newline. N.B. _" starts a -;; localization string in gawk 3.1 (defconst c-awk-harmless-_ "_\\([^\"]\\|\\'\\)") ;; Matches an underline NOT followed by ". +(defconst c-awk-harmless-char-re "[^_#/\"{}();\\\\\n\r]") +;; Matches any character not significant in the state machine applying +;; syntax-table properties to "s and /s. (defconst c-awk-harmless-string*-re (concat "\\(" c-awk-harmless-char-re "\\|" c-awk-esc-pair-re "\\|" c-awk-harmless-_ "\\)*")) -;; Matches a (possibly empty) sequence of chars without unescaped /, ", \, -;; #, or newlines. +;; Matches a (possibly empty) sequence of characters insignificant in the +;; state machine applying syntax-table properties to "s and /s. (defconst c-awk-harmless-string*-here-re (concat "\\=" c-awk-harmless-string*-re)) -;; Matches the (possibly empty) sequence of chars without unescaped /, ", \, -;; at point. +;; Matches the (possibly empty) sequence of "insignificant" chars at point. + +(defconst c-awk-harmless-line-char-re "[^_#/\"\\\\\n\r]") +;; Matches any character but a _, #, /, ", \, or newline. N.B. _" starts a +;; localization string in gawk 3.1 +(defconst c-awk-harmless-line-string*-re + (concat "\\(" c-awk-harmless-line-char-re "\\|" c-awk-esc-pair-re "\\|" c-awk-harmless-_ "\\)*")) +;; Matches a (possibly empty) sequence of chars without unescaped /, ", \, +;; #, or newlines. (defconst c-awk-harmless-line-re - (concat c-awk-harmless-string*-re - "\\(" c-awk-comment-without-nl "\\)?" c-awk-nl-or-eob)) + (concat c-awk-harmless-line-string*-re + "\\(" c-awk-comment-without-nl "\\)?" c-awk-nl-or-eob)) ;; Matches (the tail of) an AWK \"logical\" line not containing an unescaped ;; " or /. "logical" means "possibly containing escaped newlines". A comment ;; is matched as part of the line even if it contains a " or a /. The End of @@ -211,11 +218,11 @@ ;; division sign. (defconst c-awk-neutral-re ; "\\([{}@` \t]\\|\\+\\+\\|--\\|\\\\.\\)+") ; changed, 2003/6/7 - "\\([{}@` \t]\\|\\+\\+\\|--\\|\\\\.\\)") + "\\([}@` \t]\\|\\+\\+\\|--\\|\\\\\\(.\\|[\n\r]\\)\\)") ;; A "neutral" char(pair). Doesn't change the "state" of a subsequent /. -;; This is space/tab, braces, an auto-increment/decrement operator or an +;; This is space/tab, close brace, an auto-increment/decrement operator or an ;; escaped character. Or one of the (invalid) characters @ or `. But NOT an -;; end of line (even if escaped). +;; end of line (unless escaped). (defconst c-awk-neutrals*-re (concat "\\(" c-awk-neutral-re "\\)*")) ;; A (possibly empty) string of neutral characters (or character pairs). @@ -231,8 +238,8 @@ ;; will only work when there won't be a preceding " or / before the sought / ;; to foul things up. (defconst c-awk-non-arith-op-bra-re - "[[\(&=:!><,?;'~|]") -;; Matches an opening BRAcket, round or square, or any operator character + "[[\({&=:!><,?;'~|]") +;; Matches an opening BRAcket (of any sort), or any operator character ;; apart from +,-,/,*,%. For the purpose at hand (detecting a / which is a ;; regexp bracket) these arith ops are unnecessary and a pain, because of "++" ;; and "--". @@ -242,6 +249,16 @@ ;; bracket, in a context where an immediate / would be a division sign. This ;; will only work when there won't be a preceding " or / before the sought / ;; to foul things up. +(defconst c-awk-pre-exp-alphanum-kwd-re + (concat "\\(^\\|\\=\\|[^_\n\r]\\)\\<" + (regexp-opt '("print" "return" "case") t) + "\\>\\([^_\n\r]\\|$\\)")) +;; Matches all AWK keywords which can precede expressions (including +;; /regexp/). +(defconst c-awk-kwd-regexp-sign-re + (concat c-awk-pre-exp-alphanum-kwd-re c-awk-escaped-nls*-with-space* "/")) +;; Matches a piece of AWK buffer ending in <kwd> /, where <kwd> is a keyword +;; which can precede an expression. ;; REGEXPS USED FOR FINDING THE POSITION OF A "virtual semicolon" (defconst c-awk-_-harmless-nonws-char-re "[^#/\"\\\\\n\r \t]") @@ -721,9 +738,10 @@ (goto-char anchor) ;; Analyze the line to find out what the / is. (if (if anchor-state-/div - (not (search-forward-regexp c-awk-regexp-sign-re (1+ /point) t)) - (search-forward-regexp c-awk-div-sign-re (1+ /point) t)) - ;; A division sign. + (not (search-forward-regexp c-awk-regexp-sign-re (1+ /point) t)) + (and (not (search-forward-regexp c-awk-kwd-regexp-sign-re (1+ /point) t)) + (search-forward-regexp c-awk-div-sign-re (1+ /point) t))) + ;; A division sign. (progn (goto-char (1+ /point)) nil) ;; A regexp opener ;; Jump over the regexp innards, setting the match data. @@ -776,12 +794,21 @@ (< (point) lim)) (setq anchor (point)) (search-forward-regexp c-awk-harmless-string*-here-re nil t) - ;; We are now looking at either a " or a /. - ;; Do our thing on the string, regexp or division sign. + ;; We are now looking at either a " or a / or a brace/paren/semicolon. + ;; Do our thing on the string, regexp or division sign or update + ;; our state. (setq anchor-state-/div - (if (looking-at "_?\"") - (c-awk-syntax-tablify-string) - (c-awk-syntax-tablify-/ anchor anchor-state-/div)))) + (cond + ((looking-at "_?\"") + (c-awk-syntax-tablify-string)) + ((eq (char-after) ?/) + (c-awk-syntax-tablify-/ anchor anchor-state-/div)) + ((memq (char-after) '(?{ ?} ?\( ?\;)) + (forward-char) + nil) + (t ; ?\) + (forward-char) + t)))) nil)) ;; ACM, 2002/07/21: Thoughts: We need an AWK Mode after-change function to set diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el index e7b12ba04c8..0bb804799dc 100644 --- a/lisp/progmodes/cc-cmds.el +++ b/lisp/progmodes/cc-cmds.el @@ -475,7 +475,7 @@ inside a literal or a macro, nothing special happens." (bolp (bolp))) (beginning-of-line) (delete-horizontal-space) - (insert last-command-event) + (insert (c-last-command-char)) (and (not bolp) (goto-char (- (point-max) pos))) ))) @@ -737,7 +737,7 @@ settings of `c-cleanup-list' are done." ;; `}': clean up empty defun braces (when (c-save-buffer-state () (and (memq 'empty-defun-braces c-cleanup-list) - (eq last-command-event ?\}) + (eq (c-last-command-char) ?\}) (c-intersect-lists '(defun-close class-close inline-close) syntax) (progn @@ -753,14 +753,14 @@ settings of `c-cleanup-list' are done." ;; `}': compact to a one-liner defun? (save-match-data (when - (and (eq last-command-event ?\}) + (and (eq (c-last-command-char) ?\}) (memq 'one-liner-defun c-cleanup-list) (c-intersect-lists '(defun-close) syntax) (c-try-one-liner)) (setq here (- (point-max) pos)))) ;; `{': clean up brace-else-brace and brace-elseif-brace - (when (eq last-command-event ?\{) + (when (eq (c-last-command-char) ?\{) (cond ((and (memq 'brace-else-brace c-cleanup-list) (re-search-backward @@ -814,7 +814,7 @@ settings of `c-cleanup-list' are done." )))) ;; blink the paren - (and (eq last-command-event ?\}) + (and (eq (c-last-command-char) ?\}) (not executing-kbd-macro) old-blink-paren (save-excursion @@ -851,7 +851,7 @@ is inhibited." (when (and (not arg) (eq literal 'c) (memq 'comment-close-slash c-cleanup-list) - (eq last-command-event ?/) + (eq (c-last-command-char) ?/) (looking-at (concat "[ \t]*\\(" (regexp-quote comment-end) "\\)?$")) ; (eq c-block-comment-ender "*/") ; C-style comments ALWAYS end in */ @@ -867,7 +867,7 @@ is inhibited." (setq indentp (and (not arg) c-syntactic-indentation c-electric-flag - (eq last-command-event ?/) + (eq (c-last-command-char) ?/) (eq (char-before) (if literal ?* ?/)))) (self-insert-command (prefix-numeric-value arg)) (if indentp @@ -941,10 +941,10 @@ settings of `c-cleanup-list'." (let ((pos (- (point-max) (point)))) (if (c-save-buffer-state () (and (or (and - (eq last-command-event ?,) + (eq (c-last-command-char) ?,) (memq 'list-close-comma c-cleanup-list)) (and - (eq last-command-event ?\;) + (eq (c-last-command-char) ?\;) (memq 'defun-close-semi c-cleanup-list))) (progn (forward-char -1) @@ -1101,7 +1101,7 @@ numeric argument is supplied, or the point is inside a literal." ;; Indent the line if appropriate. (when (and c-electric-flag c-syntactic-indentation c-recognize-<>-arglists) (setq found-delim - (if (eq last-command-event ?<) + (if (eq (c-last-command-char) ?<) ;; If a <, basically see if it's got "template" before it ..... (or (and (progn (backward-char) @@ -1195,7 +1195,7 @@ newline cleanups are done if appropriate; see the variable `c-cleanup-list'." ;; clean up brace-elseif-brace (when (and (memq 'brace-elseif-brace c-cleanup-list) - (eq last-command-event ?\() + (eq (c-last-command-char) ?\() (re-search-backward (concat "}" "\\([ \t\n]\\|\\\\\n\\)*" @@ -1213,7 +1213,7 @@ newline cleanups are done if appropriate; see the variable `c-cleanup-list'." ;; clean up brace-catch-brace (when (and (memq 'brace-catch-brace c-cleanup-list) - (eq last-command-event ?\() + (eq (c-last-command-char) ?\() (re-search-backward (concat "}" "\\([ \t\n]\\|\\\\\n\\)*" @@ -1234,7 +1234,7 @@ newline cleanups are done if appropriate; see the variable `c-cleanup-list'." ;; space-before-funcall clean-up? ((and (memq 'space-before-funcall c-cleanup-list) - (eq last-command-event ?\() + (eq (c-last-command-char) ?\() (save-excursion (backward-char) (skip-chars-backward " \t") @@ -1252,7 +1252,7 @@ newline cleanups are done if appropriate; see the variable `c-cleanup-list'." ;; compact-empty-funcall clean-up? ((c-save-buffer-state () (and (memq 'compact-empty-funcall c-cleanup-list) - (eq last-command-event ?\)) + (eq (c-last-command-char) ?\)) (save-excursion (c-safe (backward-char 2)) (when (looking-at "()") @@ -1281,7 +1281,7 @@ keyword on the line, the keyword is not inserted inside a literal, and (when (c-save-buffer-state () (and c-electric-flag c-syntactic-indentation - (not (eq last-command-event ?_)) + (not (eq (c-last-command-char) ?_)) (= (save-excursion (skip-syntax-backward "w") (point)) diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el index 78c3f32b7a0..48236c2dca2 100644 --- a/lisp/progmodes/cc-defs.el +++ b/lisp/progmodes/cc-defs.el @@ -376,6 +376,13 @@ to it is returned. This function does not modify the point or the mark." `(int-to-char ,integer) integer)) +(defmacro c-last-command-char () + ;; The last character just typed. Note that `last-command-event' exists in + ;; both Emacs and XEmacs, but with confusingly different meanings. + (if (featurep 'xemacs) + 'last-command-char + 'last-command-event)) + (defmacro c-sentence-end () ;; Get the regular expression `sentence-end'. (if (cc-bytecomp-fboundp 'sentence-end) diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 560b66bf3b0..368b1fc50dc 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -1,4 +1,4 @@ -;;; cc-engine.el --- core syntax guessing engine for CC mode +;;; cc-engine.el --- core syntax guessing engine for CC mode -*- coding: utf-8 -*- ;; Copyright (C) 1985, 1987, 1992-2013 Free Software Foundation, Inc. @@ -2280,25 +2280,25 @@ comment at the start of cc-engine.el for more info." (while (and c (> (car c) c-state-semi-nonlit-pos-cache-limit)) (setq c (cdr c))) (setq c-state-semi-nonlit-pos-cache c) - + (while (and c (> (car c) here)) (setq high-pos (car c)) (setq c (cdr c))) (setq pos (or (car c) (point-min))) - + (unless high-pos (while ;; Add an element to `c-state-semi-nonlit-pos-cache' each iteration. (and (<= (setq npos (+ pos c-state-nonlit-pos-interval)) here) - + ;; Test for being in a literal. If so, go to after it. (progn (setq lit (car (cddr (c-state-pp-to-literal pos npos)))) (or (null lit) (prog1 (<= (cdr lit) here) (setq npos (cdr lit)))))) - + (setq pos npos) (setq c-state-semi-nonlit-pos-cache (cons pos c-state-semi-nonlit-pos-cache)))) @@ -2477,20 +2477,6 @@ comment at the start of cc-engine.el for more info." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Defuns which analyze the buffer, yet don't change `c-state-cache'. -(defun c-get-fallback-scan-pos (here) - ;; Return a start position for building `c-state-cache' from - ;; scratch. This will be at the top level, 2 defuns back. - (save-excursion - ;; Go back 2 bods, but ignore any bogus positions returned by - ;; beginning-of-defun (i.e. open paren in column zero). - (goto-char here) - (let ((cnt 2)) - (while (not (or (bobp) (zerop cnt))) - (c-beginning-of-defun-1) ; Pure elisp BOD. - (if (eq (char-after) ?\{) - (setq cnt (1- cnt))))) - (point))) - (defun c-state-balance-parens-backwards (here- here+ top) ;; Return the position of the opening paren/brace/bracket before HERE- which ;; matches the outermost close p/b/b between HERE+ and TOP. Except when @@ -2545,53 +2531,26 @@ comment at the start of cc-engine.el for more info." ;; ;; The return value is a list, one of the following: ;; - ;; o - ('forward CACHE-POS START-POINT) - scan forward from START-POINT, - ;; which is not less than CACHE-POS. - ;; o - ('backward CACHE-POS nil) - scan backwards (from HERE). - ;; o - ('BOD nil START-POINT) - scan forwards from START-POINT, which is at the - ;; top level. - ;; o - ('IN-LIT nil nil) - point is inside the literal containing point-min. - ;; , where CACHE-POS is the highest position recorded in `c-state-cache' at - ;; or below HERE. + ;; o - ('forward START-POINT) - scan forward from START-POINT, + ;; which is not less than the highest position in `c-state-cache' below here. + ;; o - ('backward nil) - scan backwards (from HERE). + ;; o - ('IN-LIT nil) - point is inside the literal containing point-min. (let ((cache-pos (c-get-cache-scan-pos here)) ; highest position below HERE in cache (or 1) - BOD-pos ; position of 2nd BOD before HERE. - strategy ; 'forward, 'backward, 'BOD, or 'IN-LIT. - start-point - how-far) ; putative scanning distance. + strategy ; 'forward, 'backward, or 'IN-LIT. + start-point) (setq good-pos (or good-pos (c-state-get-min-scan-pos))) (cond ((< here (c-state-get-min-scan-pos)) - (setq strategy 'IN-LIT - start-point nil - cache-pos nil - how-far 0)) + (setq strategy 'IN-LIT)) ((<= good-pos here) (setq strategy 'forward - start-point (max good-pos cache-pos) - how-far (- here start-point))) + start-point (max good-pos cache-pos))) ((< (- good-pos here) (- here cache-pos)) ; FIXME!!! ; apply some sort of weighting. - (setq strategy 'backward - how-far (- good-pos here))) + (setq strategy 'backward)) (t (setq strategy 'forward - how-far (- here cache-pos) - start-point cache-pos))) - - ;; Might we be better off starting from the top level, two defuns back, - ;; instead? This heuristic no longer works well in C++, where - ;; declarations inside namespace brace blocks are frequently placed at - ;; column zero. - (when (and (not (c-major-mode-is 'c++-mode)) - (> how-far c-state-cache-too-far)) - (setq BOD-pos (c-get-fallback-scan-pos here)) ; somewhat EXPENSIVE!!! - (if (< (- here BOD-pos) how-far) - (setq strategy 'BOD - start-point BOD-pos))) - - (list - strategy - (and (memq strategy '(forward backward)) cache-pos) - (and (memq strategy '(forward BOD)) start-point)))) + start-point cache-pos))) + (list strategy (and (eq strategy 'forward) start-point)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2633,7 +2592,7 @@ comment at the start of cc-engine.el for more info." (setq c-state-point-min (point-min))) -(defun c-append-lower-brace-pair-to-state-cache (from &optional upper-lim) +(defun c-append-lower-brace-pair-to-state-cache (from here &optional upper-lim) ;; If there is a brace pair preceding FROM in the buffer, at the same level ;; of nesting (not necessarily immediately preceding), push a cons onto ;; `c-state-cache' to represent it. FROM must not be inside a literal. If @@ -2647,11 +2606,11 @@ comment at the start of cc-engine.el for more info." ;; OLD: { (.) {...........} ;; ^ ^ ;; FROM HERE - ;; + ;; ;; NEW: { {....} (.) {......... ;; ^ ^ ^ ;; LOWER BRACE PAIR HERE or HERE - ;; + ;; ;; This routine should be fast. Since it can get called a LOT, we maintain ;; `c-state-brace-pair-desert', a small cache of "failures", such that we ;; reduce the time wasted in repeated fruitless searches in brace deserts. @@ -2699,7 +2658,9 @@ comment at the start of cc-engine.el for more info." (desert-lim) (cache-lim) ((point-min))) - (point-max))) + ;; The top limit is EOB to ensure that `bra' is inside the + ;; accessible part of the buffer at the next scan operation. + (1+ (buffer-size)))) ;; In the next pair of nested loops, the inner one moves back past a ;; pair of (mis-)matching parens or brackets; the outer one moves @@ -2711,16 +2672,18 @@ comment at the start of cc-engine.el for more info." (while (and (setq ce (scan-lists bra -1 -1)) ; back past )/]/}; might signal (setq bra (scan-lists ce -1 1)) ; back past (/[/{; might signal - (or (> ce upper-lim) - (not (eq (char-after bra) ?\{)) - (and (goto-char bra) - (c-beginning-of-macro) - (< (point) macro-start-or-from)))))) + (or (> bra here) ;(> ce here) + (and + (< ce here) + (or (not (eq (char-after bra) ?\{)) + (and (goto-char bra) + (c-beginning-of-macro) + (< (point) macro-start-or-from)))))))) (and ce (< ce bra))) (setq bra ce)) ; If we just backed over an unbalanced closing ; brace, ignore it. - (if (and ce (< bra ce) (eq (char-after bra) ?\{)) + (if (and ce (< ce here) (< bra ce) (eq (char-after bra) ?\{)) ;; We've found the desired brace-pair. (progn (setq new-cons (cons bra (1+ ce))) @@ -2734,7 +2697,11 @@ comment at the start of cc-engine.el for more info." (t (setq c-state-cache (cons new-cons c-state-cache))))) ;; We haven't found a brace pair. Record this in the cache. - (setq c-state-brace-pair-desert (cons cache-pos from)))))))) + (setq c-state-brace-pair-desert + (cons (if (and ce (< bra ce) (> ce here)) ; {..} straddling HERE? + bra + (point-min)) + (min here from))))))))) (defsubst c-state-push-any-brace-pair (bra+1 macro-start-or-here) ;; If BRA+1 is nil, do nothing. Otherwise, BRA+1 is the buffer position @@ -2760,25 +2727,24 @@ comment at the start of cc-engine.el for more info." (if (consp (car c-state-cache)) (cdr c-state-cache) c-state-cache))) - ;; N.B. This defsubst codes one method for the simple, normal case, + ;; N.B. This defsubst codes one method for the simple, normal case, ;; and a more sophisticated, slower way for the general case. Don't ;; eliminate this defsubst - it's a speed optimization. - (c-append-lower-brace-pair-to-state-cache (1- bra+1))))) + (c-append-lower-brace-pair-to-state-cache (1- bra+1) (point-max))))) -(defun c-append-to-state-cache (from) - ;; Scan the buffer from FROM to (point-max), adding elements into - ;; `c-state-cache' for braces etc. Return a candidate for - ;; `c-state-cache-good-pos'. +(defun c-append-to-state-cache (from here) + ;; Scan the buffer from FROM to HERE, adding elements into `c-state-cache' + ;; for braces etc. Return a candidate for `c-state-cache-good-pos'. ;; ;; FROM must be after the latest brace/paren/bracket in `c-state-cache', if ;; any. Typically, it is immediately after it. It must not be inside a ;; literal. - (let ((here-bol (c-point 'bol (point-max))) + (let ((here-bol (c-point 'bol here)) (macro-start-or-here - (save-excursion (goto-char (point-max)) + (save-excursion (goto-char here) (if (c-beginning-of-macro) (point) - (point-max)))) + here))) pa+1 ; pos just after an opening PAren (or brace). (ren+1 from) ; usually a pos just after an closing paREN etc. ; Is actually the pos. to scan for a (/{/[ from, @@ -2791,80 +2757,82 @@ comment at the start of cc-engine.el for more info." mstart) ; start of a macro. (save-excursion - ;; Each time round the following loop, we enter a successively deeper - ;; level of brace/paren nesting. (Except sometimes we "continue at - ;; the existing level".) `pa+1' is a pos inside an opening - ;; brace/paren/bracket, usually just after it. - (while - (progn - ;; Each time round the next loop moves forward over an opening then - ;; a closing brace/bracket/paren. This loop is white hot, so it - ;; plays ugly tricks to go fast. DON'T PUT ANYTHING INTO THIS - ;; LOOP WHICH ISN'T ABSOLUTELY NECESSARY!!! It terminates when a - ;; call of `scan-lists' signals an error, which happens when there - ;; are no more b/b/p's to scan. - (c-safe - (while t - (setq pa+1 (scan-lists ren+1 1 -1) ; Into (/{/[; might signal - paren+1s (cons pa+1 paren+1s)) - (setq ren+1 (scan-lists pa+1 1 1)) ; Out of )/}/]; might signal - (if (and (eq (char-before pa+1) ?{)) ; Check for a macro later. - (setq bra+1 pa+1)) - (setcar paren+1s ren+1))) - - (if (and pa+1 (> pa+1 ren+1)) - ;; We've just entered a deeper nesting level. - (progn - ;; Insert the brace pair (if present) and the single open - ;; paren/brace/bracket into `c-state-cache' It cannot be - ;; inside a macro, except one around point, because of what - ;; `c-neutralize-syntax-in-CPP' has done. - (c-state-push-any-brace-pair bra+1 macro-start-or-here) - ;; Insert the opening brace/bracket/paren position. - (setq c-state-cache (cons (1- pa+1) c-state-cache)) - ;; Clear admin stuff for the next more nested part of the scan. - (setq ren+1 pa+1 pa+1 nil bra+1 nil bra+1s nil) - t) ; Carry on the loop - - ;; All open p/b/b's at this nesting level, if any, have probably - ;; been closed by matching/mismatching ones. We're probably - ;; finished - we just need to check for having found an - ;; unmatched )/}/], which we ignore. Such a )/}/] can't be in a - ;; macro, due the action of `c-neutralize-syntax-in-CPP'. - (c-safe (setq ren+1 (scan-lists ren+1 1 1)))))) ; acts as loop control. - - ;; Record the final, innermost, brace-pair if there is one. - (c-state-push-any-brace-pair bra+1 macro-start-or-here) - - ;; Determine a good pos - (while (and (setq paren+1 (car paren+1s)) - (> (if (> paren+1 macro-start-or-here) - paren+1 - (goto-char paren+1) - (setq mstart (and (c-beginning-of-macro) - (point))) - (or mstart paren+1)) - here-bol)) - (setq paren+1s (cdr paren+1s))) - (cond - ((and paren+1 mstart) - (min paren+1 mstart)) - (paren+1) - (t from))))) + (save-restriction + (narrow-to-region (point-min) here) + ;; Each time round the following loop, we enter a successively deeper + ;; level of brace/paren nesting. (Except sometimes we "continue at + ;; the existing level".) `pa+1' is a pos inside an opening + ;; brace/paren/bracket, usually just after it. + (while + (progn + ;; Each time round the next loop moves forward over an opening then + ;; a closing brace/bracket/paren. This loop is white hot, so it + ;; plays ugly tricks to go fast. DON'T PUT ANYTHING INTO THIS + ;; LOOP WHICH ISN'T ABSOLUTELY NECESSARY!!! It terminates when a + ;; call of `scan-lists' signals an error, which happens when there + ;; are no more b/b/p's to scan. + (c-safe + (while t + (setq pa+1 (scan-lists ren+1 1 -1) ; Into (/{/[; might signal + paren+1s (cons pa+1 paren+1s)) + (setq ren+1 (scan-lists pa+1 1 1)) ; Out of )/}/]; might signal + (if (and (eq (char-before pa+1) ?{)) ; Check for a macro later. + (setq bra+1 pa+1)) + (setcar paren+1s ren+1))) + + (if (and pa+1 (> pa+1 ren+1)) + ;; We've just entered a deeper nesting level. + (progn + ;; Insert the brace pair (if present) and the single open + ;; paren/brace/bracket into `c-state-cache' It cannot be + ;; inside a macro, except one around point, because of what + ;; `c-neutralize-syntax-in-CPP' has done. + (c-state-push-any-brace-pair bra+1 macro-start-or-here) + ;; Insert the opening brace/bracket/paren position. + (setq c-state-cache (cons (1- pa+1) c-state-cache)) + ;; Clear admin stuff for the next more nested part of the scan. + (setq ren+1 pa+1 pa+1 nil bra+1 nil bra+1s nil) + t) ; Carry on the loop + + ;; All open p/b/b's at this nesting level, if any, have probably + ;; been closed by matching/mismatching ones. We're probably + ;; finished - we just need to check for having found an + ;; unmatched )/}/], which we ignore. Such a )/}/] can't be in a + ;; macro, due the action of `c-neutralize-syntax-in-CPP'. + (c-safe (setq ren+1 (scan-lists ren+1 1 1)))))) ; acts as loop control. + + ;; Record the final, innermost, brace-pair if there is one. + (c-state-push-any-brace-pair bra+1 macro-start-or-here) + + ;; Determine a good pos + (while (and (setq paren+1 (car paren+1s)) + (> (if (> paren+1 macro-start-or-here) + paren+1 + (goto-char paren+1) + (setq mstart (and (c-beginning-of-macro) + (point))) + (or mstart paren+1)) + here-bol)) + (setq paren+1s (cdr paren+1s))) + (cond + ((and paren+1 mstart) + (min paren+1 mstart)) + (paren+1) + (t from)))))) -(defun c-remove-stale-state-cache (good-pos pps-point) +(defun c-remove-stale-state-cache (start-point here pps-point) ;; Remove stale entries from the `c-cache-state', i.e. those which will - ;; not be in it when it is amended for position (point-max). - ;; Additionally, the "outermost" open-brace entry before (point-max) - ;; will be converted to a cons if the matching close-brace is scanned. + ;; not be in it when it is amended for position HERE. Additionally, the + ;; "outermost" open-brace entry before HERE will be converted to a cons if + ;; the matching close-brace is scanned. ;; - ;; GOOD-POS is a "maximal" "safe position" - there must be no open - ;; parens/braces/brackets between GOOD-POS and (point-max). + ;; START-POINT is a "maximal" "safe position" - there must be no open + ;; parens/braces/brackets between START-POINT and HERE. ;; ;; As a second thing, calculate the result of parse-partial-sexp at - ;; PPS-POINT, w.r.t. GOOD-POS. The motivation here is that + ;; PPS-POINT, w.r.t. START-POINT. The motivation here is that ;; `c-state-cache-good-pos' may become PPS-POINT, but the caller may need to - ;; adjust it to get outside a string/comment. (Sorry about this! The code + ;; adjust it to get outside a string/comment. (Sorry about this! The code ;; needs to be FAST). ;; ;; Return a list (GOOD-POS SCAN-BACK-POS PPS-STATE), where @@ -2872,44 +2840,46 @@ comment at the start of cc-engine.el for more info." ;; to be good (we aim for this to be as high as possible); ;; o - SCAN-BACK-POS, if not nil, indicates there may be a brace pair ;; preceding POS which needs to be recorded in `c-state-cache'. It is a - ;; position to scan backwards from. + ;; position to scan backwards from. It is the position of the "{" of the + ;; last element to be removed from `c-state-cache', when that elt is a + ;; cons, otherwise nil. ;; o - PPS-STATE is the parse-partial-sexp state at PPS-POINT. - (save-restriction - (narrow-to-region 1 (point-max)) - (save-excursion - (let* ((in-macro-start ; start of macro containing (point-max) or nil. + (save-excursion + (save-restriction + (narrow-to-region 1 (point-max)) + (let* ((in-macro-start ; start of macro containing HERE or nil. (save-excursion - (goto-char (point-max)) + (goto-char here) (and (c-beginning-of-macro) (point)))) - (good-pos-actual-macro-start ; Start of macro containing good-pos - ; or nil - (and (< good-pos (point-max)) + (start-point-actual-macro-start ; Start of macro containing + ; start-point or nil + (and (< start-point here) (save-excursion - (goto-char good-pos) + (goto-char start-point) (and (c-beginning-of-macro) (point))))) - (good-pos-actual-macro-end ; End of this macro, (maybe - ; (point-max)), or nil. - (and good-pos-actual-macro-start + (start-point-actual-macro-end ; End of this macro, (maybe + ; HERE), or nil. + (and start-point-actual-macro-start (save-excursion - (goto-char good-pos-actual-macro-start) + (goto-char start-point-actual-macro-start) (c-end-of-macro) (point)))) - pps-state ; Will be 9 or 10 elements long. + pps-state ; Will be 9 or 10 elements long. pos upper-lim ; ,beyond which `c-state-cache' entries are removed scan-back-pos pair-beg pps-point-state target-depth) - ;; Remove entries beyond (point-max). Also remove any entries inside - ;; a macro, unless (point-max) is in the same macro. + ;; Remove entries beyond HERE. Also remove any entries inside + ;; a macro, unless HERE is in the same macro. (setq upper-lim (if (or (null c-state-old-cpp-beg) - (and (> (point-max) c-state-old-cpp-beg) - (< (point-max) c-state-old-cpp-end))) - (point-max) - (min (point-max) c-state-old-cpp-beg))) + (and (> here c-state-old-cpp-beg) + (< here c-state-old-cpp-end))) + here + (min here c-state-old-cpp-beg))) (while (and c-state-cache (>= (c-state-cache-top-lparen) upper-lim)) (setq scan-back-pos (car-safe (car c-state-cache))) (setq c-state-cache (cdr c-state-cache))) @@ -2926,18 +2896,20 @@ comment at the start of cc-engine.el for more info." ;; The next loop jumps forward out of a nested level of parens each ;; time round; the corresponding elements in `c-state-cache' are ;; removed. `pos' is just after the brace-pair or the open paren at - ;; (car c-state-cache). There can be no open parens/braces/brackets - ;; between `good-pos'/`good-pos-actual-macro-start' and (point-max), + ;; (car c-state-cache). There can be no open parens/braces/brackets + ;; between `start-point'/`start-point-actual-macro-start' and HERE, ;; due to the interface spec to this function. - (setq pos (if (and good-pos-actual-macro-end - (not (eq good-pos-actual-macro-start + (setq pos (if (and start-point-actual-macro-end + (not (eq start-point-actual-macro-start in-macro-start))) - (1+ good-pos-actual-macro-end) ; get outside the macro as + (1+ start-point-actual-macro-end) ; get outside the macro as ; marked by a `category' text property. - good-pos)) + start-point)) (goto-char pos) (while (and c-state-cache - (< (point) (point-max))) + (or (numberp (car c-state-cache)) ; Have we a { at all? + (cdr c-state-cache)) + (< (point) here)) (cond ((null pps-state) ; first time through (setq target-depth -1)) @@ -2949,7 +2921,7 @@ comment at the start of cc-engine.el for more info." ;; Scan! (setq pps-state (parse-partial-sexp - (point) (if (< (point) pps-point) pps-point (point-max)) + (point) (if (< (point) pps-point) pps-point here) target-depth nil pps-state)) @@ -2993,14 +2965,14 @@ comment at the start of cc-engine.el for more info." (list pos scan-back-pos pps-state))))) -(defun c-remove-stale-state-cache-backwards (here cache-pos) +(defun c-remove-stale-state-cache-backwards (here) ;; Strip stale elements of `c-state-cache' by moving backwards through the ;; buffer, and inform the caller of the scenario detected. ;; ;; HERE is the position we're setting `c-state-cache' for. - ;; CACHE-POS is just after the latest recorded position in `c-state-cache' - ;; before HERE, or a position at or near point-min which isn't in a - ;; literal. + ;; CACHE-POS (a locally bound variable) is just after the latest recorded + ;; position in `c-state-cache' before HERE, or a position at or near + ;; point-min which isn't in a literal. ;; ;; This function must only be called only when (> `c-state-cache-good-pos' ;; HERE). Usually the gap between CACHE-POS and HERE is large. It is thus @@ -3023,10 +2995,11 @@ comment at the start of cc-engine.el for more info." ;; The comments in this defun use "paren" to mean parenthesis or square ;; bracket (as contrasted with a brace), and "(" and ")" likewise. ;; - ;; . {..} (..) (..) ( .. { } ) (...) ( .... . ..) - ;; | | | | | | - ;; CP E here D C good - (let ((pos c-state-cache-good-pos) + ;; . {..} (..) (..) ( .. { } ) (...) ( .... . ..) + ;; | | | | | | + ;; CP E here D C good + (let ((cache-pos (c-get-cache-scan-pos here)) ; highest position below HERE in cache (or 1) + (pos c-state-cache-good-pos) pa ren ; positions of "(" and ")" dropped-cons ; whether the last element dropped from `c-state-cache' ; was a cons (representing a brace-pair) @@ -3201,7 +3174,7 @@ comment at the start of cc-engine.el for more info." ;; Do we need to add in an earlier brace pair, having lopped one off? (if (and dropped-cons (< too-high-pa (+ here c-state-cache-too-far))) - (c-append-lower-brace-pair-to-state-cache too-high-pa here-bol)) + (c-append-lower-brace-pair-to-state-cache too-high-pa here here-bol)) (setq c-state-cache-good-pos (or (c-state-cache-after-top-paren) (c-state-get-min-scan-pos))))) @@ -3263,7 +3236,8 @@ comment at the start of cc-engine.el for more info." cache-pos ; highest position below HERE already existing in ; cache (or 1). good-pos - start-point + start-point ; (when scanning forward) a place below HERE where there + ; are no open parens/braces between it and HERE. bopl-state res scan-backward-pos scan-forward-p) ; used for 'backward. @@ -3274,50 +3248,41 @@ comment at the start of cc-engine.el for more info." ;; Strategy? (setq res (c-parse-state-get-strategy here c-state-cache-good-pos) strategy (car res) - cache-pos (cadr res) - start-point (nth 2 res)) - - (when (eq strategy 'BOD) - (setq c-state-cache nil - c-state-cache-good-pos start-point)) + start-point (cadr res)) ;; SCAN! - (save-restriction - (cond - ((memq strategy '(forward BOD)) - (narrow-to-region (point-min) here) - (setq res (c-remove-stale-state-cache start-point here-bopl)) - (setq cache-pos (car res) - scan-backward-pos (cadr res) - bopl-state (car (cddr res))) ; will be nil if (< here-bopl + (cond + ((eq strategy 'forward) + (setq res (c-remove-stale-state-cache start-point here here-bopl)) + (setq cache-pos (car res) + scan-backward-pos (cadr res) + bopl-state (car (cddr res))) ; will be nil if (< here-bopl ; start-point) - (if scan-backward-pos - (c-append-lower-brace-pair-to-state-cache scan-backward-pos)) - (setq good-pos - (c-append-to-state-cache cache-pos)) - (setq c-state-cache-good-pos - (if (and bopl-state - (< good-pos (- here c-state-cache-too-far))) - (c-state-cache-non-literal-place here-bopl bopl-state) - good-pos))) - - ((eq strategy 'backward) - (setq res (c-remove-stale-state-cache-backwards here cache-pos) - good-pos (car res) - scan-backward-pos (cadr res) - scan-forward-p (car (cddr res))) - (if scan-backward-pos - (c-append-lower-brace-pair-to-state-cache - scan-backward-pos)) - (setq c-state-cache-good-pos - (if scan-forward-p - (progn (narrow-to-region (point-min) here) - (c-append-to-state-cache good-pos)) - good-pos))) - - (t ; (eq strategy 'IN-LIT) - (setq c-state-cache nil - c-state-cache-good-pos nil))))) + (if scan-backward-pos + (c-append-lower-brace-pair-to-state-cache scan-backward-pos here)) + (setq good-pos + (c-append-to-state-cache cache-pos here)) + (setq c-state-cache-good-pos + (if (and bopl-state + (< good-pos (- here c-state-cache-too-far))) + (c-state-cache-non-literal-place here-bopl bopl-state) + good-pos))) + + ((eq strategy 'backward) + (setq res (c-remove-stale-state-cache-backwards here) + good-pos (car res) + scan-backward-pos (cadr res) + scan-forward-p (car (cddr res))) + (if scan-backward-pos + (c-append-lower-brace-pair-to-state-cache scan-backward-pos here)) + (setq c-state-cache-good-pos + (if scan-forward-p + (c-append-to-state-cache good-pos here) + good-pos))) + + (t ; (eq strategy 'IN-LIT) + (setq c-state-cache nil + c-state-cache-good-pos nil)))) c-state-cache) @@ -4645,7 +4610,7 @@ comment at the start of cc-engine.el for more info." s ; state 'syntax-table))) ; stop-comment (setq pos (point))) - + ;; Now try and find enough non-literal characters recorded on the stack. ;; Go back one recorded literal each time round this loop. (while (and (< count how-far-back) @@ -8551,8 +8516,8 @@ comment at the start of cc-engine.el for more info." )) (defun c-looking-at-special-brace-list (&optional lim) - ;; If we're looking at the start of a pike-style list, ie `({ })', - ;; `([ ])', `(< >)' etc, a cons of a cons of its starting and ending + ;; If we're looking at the start of a pike-style list, i.e., `({ })', + ;; `([ ])', `(< >)', etc., a cons of a cons of its starting and ending ;; positions and its entry in c-special-brace-lists is returned, nil ;; otherwise. The ending position is nil if the list is still open. ;; LIM is the limit for forward search. The point may either be at @@ -8797,7 +8762,7 @@ comment at the start of cc-engine.el for more info." (c-simple-skip-symbol-backward) (looking-at c-macro-with-semi-re) (goto-char pos) - (not (c-in-literal)))))) ; The most expensive check last. + (not (c-in-literal)))))) ; The most expensive check last. (defun c-macro-vsemi-status-unknown-p () t) ; See cc-defs.el. @@ -9834,6 +9799,18 @@ comment at the start of cc-engine.el for more info." ;; contains any class offset ))) + ;; CASE 5P: AWK pattern or function or continuation + ;; thereof. + ((c-major-mode-is 'awk-mode) + (setq placeholder (point)) + (c-add-stmt-syntax + (if (and (eq (c-beginning-of-statement-1) 'same) + (/= (point) placeholder)) + 'topmost-intro-cont + 'topmost-intro) + nil nil + containing-sexp paren-state)) + ;; CASE 5D: this could be a top-level initialization, a ;; member init list continuation, or a template argument ;; list continuation. @@ -9993,18 +9970,6 @@ comment at the start of cc-engine.el for more info." (goto-char (point-min))) (c-add-syntax 'objc-method-intro (c-point 'boi))) - ;; CASE 5P: AWK pattern or function or continuation - ;; thereof. - ((c-major-mode-is 'awk-mode) - (setq placeholder (point)) - (c-add-stmt-syntax - (if (and (eq (c-beginning-of-statement-1) 'same) - (/= (point) placeholder)) - 'topmost-intro-cont - 'topmost-intro) - nil nil - containing-sexp paren-state)) - ;; CASE 5N: At a variable declaration that follows a class ;; definition or some other block declaration that doesn't ;; end at the closing '}'. C.f. case 5D.5. diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index 89cf89f8770..ba9c42e4c89 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -1,4 +1,4 @@ -;;; cc-langs.el --- language specific settings for CC Mode +;;; cc-langs.el --- language specific settings for CC Mode -*- coding: utf-8 -*- ;; Copyright (C) 1985, 1987, 1992-2013 Free Software Foundation, Inc. @@ -2819,7 +2819,7 @@ undefined whether identifier syntax (see `c-identifier-syntax-table') is in effect or not. Note that it's used in cases like after \"foo (bar)\" so it should -only match when it's certain that it's a declaration, e.g \"{\" but +only match when it's certain that it's a declaration, e.g., \"{\" but not \",\" or \";\"." t "{" ;; If K&R style declarations should be recognized then one could @@ -2907,7 +2907,7 @@ is in effect or not." (c-lang-defconst c-special-brace-lists "List of open- and close-chars that makes up a pike-style brace list, -i.e. for a ([ ]) list there should be a cons (?\\[ . ?\\]) in this +i.e. for a ([ ]) list there should be a cons (?\\[ . ?\\]) in this list." t nil pike '((?{ . ?}) (?\[ . ?\]) (?< . ?>))) diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index eb73b77bf52..9e9e2f0b090 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -42,24 +42,21 @@ ;;;###autoload (defcustom compilation-mode-hook nil - "List of hook functions run by `compilation-mode' (see `run-mode-hooks')." + "List of hook functions run by `compilation-mode'." :type 'hook :group 'compilation) ;;;###autoload (defcustom compilation-start-hook nil - "List of hook functions run by `compilation-start' on the compilation process. -\(See `run-hook-with-args'). -If you use \"omake -P\" and do not want \\[save-buffers-kill-terminal] to ask whether you want -the compilation to be killed, you can use this hook: - (add-hook 'compilation-start-hook - (lambda (process) (set-process-query-on-exit-flag process nil)) nil t)" + "Hook run after starting a new compilation process. +The hook is run with one argument, the new process." :type 'hook :group 'compilation) ;;;###autoload (defcustom compilation-window-height nil - "Number of lines in a compilation window. If nil, use Emacs default." + "Number of lines in a compilation window. +If nil, use Emacs default." :type '(choice (const :tag "Default" nil) integer) :group 'compilation) @@ -265,7 +262,8 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1)) \\([0-9]+\\)\\(?:-\\(?4:[0-9]+\\)\\(?:\\.\\(?5:[0-9]+\\)\\)?\ \\|[.:]\\(?3:[0-9]+\\)\\(?:-\\(?:\\(?4:[0-9]+\\)\\.\\)?\\(?5:[0-9]+\\)\\)?\\)?:\ \\(?: *\\(\\(?:Future\\|Runtime\\)?[Ww]arning\\|W:\\)\\|\ - *\\([Ii]nfo\\(?:\\>\\|rmationa?l?\\)\\|I:\\|instantiated from\\|[Nn]ote\\)\\|\ + *\\([Ii]nfo\\(?:\\>\\|rmationa?l?\\)\\|I:\\|\\[ skipping .+ \\]\\|\ +\\(?:instantiated\\|required\\) from\\|[Nn]ote\\)\\|\ *[Ee]rror\\|[0-9]?\\(?:[^0-9\n]\\|$\\)\\|[0-9][0-9][0-9]\\)" 1 (2 . 4) (3 . 5) (6 . 7)) @@ -1951,7 +1949,7 @@ Runs `compilation-mode-hook' with `run-mode-hooks' (which see). "This is like `define-derived-mode' without the PARENT argument. The parent is always `compilation-mode' and the customizable `compilation-...' variables are also set from the name of the mode you have chosen, -by replacing the first word, e.g `compilation-scroll-output' from +by replacing the first word, e.g., `compilation-scroll-output' from `grep-scroll-output' if that variable exists." (let ((mode-name (replace-regexp-in-string "-mode\\'" "" (symbol-name mode)))) `(define-derived-mode ,mode compilation-mode ,name diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index c302bb484af..e8678fe6281 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -1551,7 +1551,7 @@ and POD directives (Disabled by default, see `cperl-electric-keywords'.) The user types the keyword immediately followed by a space, which causes the construct to be expanded, and the point is positioned where -she is most likely to want to be. eg. when the user types a space +she is most likely to want to be. E.g., when the user types a space following \"if\" the following appears in the buffer: if () { or if () } { } and the cursor is between the parentheses. The user can then type some boolean expression within the parens. Having done that, @@ -1839,7 +1839,7 @@ or as help on variables `cperl-tips', `cperl-problems', (make-local-variable 'cperl-syntax-state) (setq cperl-syntax-state nil) ; reset syntaxification cache (if cperl-use-syntax-table-text-property - (if (boundp 'syntax-propertize-function) + (if (eval-when-compile (fboundp 'syntax-propertize-rules)) (progn ;; Reset syntaxification cache. (set (make-local-variable 'cperl-syntax-done-to) nil) diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el index 340b97e80bd..674d98b8dc3 100644 --- a/lisp/progmodes/cpp.el +++ b/lisp/progmodes/cpp.el @@ -420,6 +420,7 @@ A prefix arg suppresses display of that buffer." (define-key map [ down-mouse-2 ] 'cpp-push-button) (define-key map [ mouse-2 ] 'ignore) (define-key map " " 'scroll-up-command) + (define-key map [?\S-\ ] 'scroll-down-command) (define-key map "\C-?" 'scroll-down-command) (define-key map [ delete ] 'scroll-down) (define-key map "\C-c\C-c" 'cpp-edit-apply) diff --git a/lisp/progmodes/dcl-mode.el b/lisp/progmodes/dcl-mode.el index 76e94875c8d..8a868883a11 100644 --- a/lisp/progmodes/dcl-mode.el +++ b/lisp/progmodes/dcl-mode.el @@ -168,8 +168,8 @@ nil to get the default indentation. INDENT-TYPE is a symbol indicating what kind of indentation should be done. It can have the following values: - indent the lines indentation should be increased, e.g. after THEN. - outdent the lines indentation should be decreased, e.g a line with ENDIF. + indent the indentation should be increased, e.g., after THEN. + outdent the indentation should be decreased, e.g., a line with ENDIF. first-line indentation for the first line in a buffer or SUBROUTINE. CUR-INDENT is the indentation of the preceding command line. EXTRA-INDENT is the default change in indentation for this line diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index 92f9447652e..ff6321d74c3 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -336,12 +336,15 @@ file the tag was in." (save-excursion (tags-verify-table (buffer-file-name table-buffer)))) (with-current-buffer table-buffer - (if (tags-included-tables) - ;; Insert the included tables into the list we - ;; are processing. - (setcdr tables (nconc (mapcar 'tags-expand-table-name - (tags-included-tables)) - (cdr tables))))) + ;; Needed so long as etags-tags-included-tables + ;; does not save-excursion. + (save-excursion + (if (tags-included-tables) + ;; Insert the included tables into the list we + ;; are processing. + (setcdr tables (nconc (mapcar 'tags-expand-table-name + (tags-included-tables)) + (cdr tables)))))) ;; This table is not in core yet. Insert a placeholder ;; saying we must read it into core to check for included ;; tables before searching the next table in the list. @@ -1550,6 +1553,7 @@ hits the start of file." files))) (nreverse files))) +;; FIXME? Should this save-excursion? (defun etags-tags-included-tables () ; Doc string? (let ((files nil) beg) diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index ef321addf24..1e152c6d751 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -246,6 +246,7 @@ See `compilation-error-screen-columns'" (let ((map (make-sparse-keymap))) (set-keymap-parent map compilation-minor-mode-map) (define-key map " " 'scroll-up-command) + (define-key map [?\S-\ ] 'scroll-down-command) (define-key map "\^?" 'scroll-down-command) (define-key map "\C-c\C-f" 'next-error-follow-minor-mode) @@ -359,7 +360,7 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies (when grep-highlight-matches (let* ((beg (match-end 0)) (end (save-excursion (goto-char beg) (line-end-position))) - (mbeg (text-property-any beg end 'font-lock-face 'match))) + (mbeg (text-property-any beg end 'font-lock-face grep-match-face))) (when mbeg (- mbeg beg))))) . @@ -367,7 +368,7 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies (when grep-highlight-matches (let* ((beg (match-end 0)) (end (save-excursion (goto-char beg) (line-end-position))) - (mbeg (text-property-any beg end 'font-lock-face 'match)) + (mbeg (text-property-any beg end 'font-lock-face grep-match-face)) (mend (and mbeg (next-single-property-change mbeg 'font-lock-face nil end)))) (when mend (- mend beg))))))) diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el index fbd1ded35a0..fc753bf7264 100644 --- a/lisp/progmodes/hideshow.el +++ b/lisp/progmodes/hideshow.el @@ -1,4 +1,4 @@ -;;; hideshow.el --- minor mode cmds to selectively display code/comment blocks +;;; hideshow.el --- minor mode cmds to selectively display code/comment blocks -*- coding: utf-8 -*- ;; Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -207,7 +207,7 @@ ;; Dean Andrews, Alf-Ivar Holm, Holger Bauer, Christoph Conrad, Dave Love, ;; Dirk Herrmann, Gael Marziou, Jan Djarv, Guillaume Leray, Moody Ahmad, ;; Preston F. Crow, Lars Lindberg, Reto Zimmermann, Keith Sheffield, -;; Chew Meng Kuan, Tony Lam, Pete Ware, François Pinard, Stefan Monnier, +;; Chew Meng Kuan, Tony Lam, Pete Ware, François Pinard, Stefan Monnier, ;; Joseph Eydelnant, Michael Ernst, Peter Heslin ;; ;; Special thanks go to Dan Nicolaescu, who reimplemented hideshow using diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el index 0e44e5366ca..749b0b65576 100644 --- a/lisp/progmodes/idlw-help.el +++ b/lisp/progmodes/idlw-help.el @@ -227,6 +227,7 @@ support." (interactive "p") (scroll-up arg))) (define-key map " " 'scroll-up-command) + (define-key map [?\S-\ ] 'scroll-down-command) (define-key map [delete] 'scroll-down-command) (define-key map "h" 'idlwave-help-find-header) (define-key map "H" 'idlwave-help-find-first-header) diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el index 069f5a32a9e..d73e9489d7c 100644 --- a/lisp/progmodes/inf-lisp.el +++ b/lisp/progmodes/inf-lisp.el @@ -201,8 +201,8 @@ This process selection is performed by function `inferior-lisp-proc'. Whenever \\[inferior-lisp] fires up a new process, it resets `inferior-lisp-buffer' to be the new process's buffer. If you only run one process, this does the right thing. If you run multiple -processes, you can change `inferior-lisp-buffer' to another process -buffer with \\[set-variable].") +processes, you might need to change `inferior-lisp-buffer' to +whichever process buffer you want to use.") (defvar inferior-lisp-mode-hook '() "Hook for customizing Inferior Lisp mode.") diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index 96e6039a8c2..2ea78fc321c 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -1785,13 +1785,13 @@ statement spanning multiple lines; otherwise, return nil." (or (eq (char-before) ?,) (and (not (eq (char-before) ?\;)) (prog2 - (skip-chars-backward "[[:punct:]]") + (skip-syntax-backward ".") (looking-at js--indent-operator-re) (js--backward-syntactic-ws)) (not (eq (char-before) ?\;))) (and (>= pos (point-at-bol)) (<= pos (point-at-eol))))))) - (condition-case err + (condition-case nil (backward-sexp) (scan-error (setq at-opening-bracket t)))) (when (looking-at js--declaration-keyword-re) @@ -3405,8 +3405,7 @@ If one hasn't been set, or if it's stale, prompt for a new one." ;; calls to syntax-propertize wherever it's really needed. (syntax-propertize (point-max))) -;;;###autoload -(defalias 'javascript-mode 'js-mode) +;;;###autoload (defalias 'javascript-mode 'js-mode) (eval-after-load 'folding '(when (fboundp 'folding-add-to-marks-list) diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el index 8ab4c6f95b6..20673866bc4 100644 --- a/lisp/progmodes/make-mode.el +++ b/lisp/progmodes/make-mode.el @@ -1213,26 +1213,23 @@ definition and conveniently use this command." (save-excursion (goto-char from) (let ((column makefile-backslash-column) - (endmark (make-marker))) - (move-marker endmark to) + (endmark (copy-marker to))) ;; Compute the smallest column number past the ends of all the lines. - (if makefile-backslash-align - (progn - (if (not delete-flag) - (while (< (point) to) - (end-of-line) - (if (= (preceding-char) ?\\) - (progn (forward-char -1) - (skip-chars-backward " \t"))) - (setq column (max column (1+ (current-column)))) - (forward-line 1))) - ;; Adjust upward to a tab column, if that doesn't push - ;; past the margin. - (if (> (% column tab-width) 0) - (let ((adjusted (* (/ (+ column tab-width -1) tab-width) - tab-width))) - (if (< adjusted (window-width)) - (setq column adjusted)))))) + (when (and makefile-backslash-align (not delete-flag)) + (while (< (point) to) + (end-of-line) + (if (= (preceding-char) ?\\) + (progn (forward-char -1) + (skip-chars-backward " \t"))) + (setq column (max column (1+ (current-column)))) + (forward-line 1)) + ;; Adjust upward to a tab column, if that doesn't push + ;; past the margin. + (if (> (% column tab-width) 0) + (let ((adjusted (* (/ (+ column tab-width -1) tab-width) + tab-width))) + (if (< adjusted (window-width)) + (setq column adjusted))))) ;; Don't modify blank lines at start of region. (goto-char from) (while (and (< (point) endmark) (eolp)) @@ -1296,9 +1293,9 @@ Fill comments, backslashed lines, and variable definitions specially." (while (= (preceding-char) ?\\) (end-of-line 0)) ;; Maybe we hit bobp, in which case we are not at EOL. - (if (eq (point) (line-end-position)) - (forward-char)) - (point))) + (if (eolp) + (1+ (point)) + (point)))) (end (save-excursion (while (= (preceding-char) ?\\) @@ -1307,6 +1304,12 @@ Fill comments, backslashed lines, and variable definitions specially." (save-restriction (narrow-to-region beginning end) (makefile-backslash-region (point-min) (point-max) t) + ;; Backslashed newlines are marked as punctuation, so when + ;; fill-delete-newlines turns the LF into SPC, we end up with spaces + ;; which back-to-indentation (called via fill-newline -> + ;; fill-indent-to-left-margin -> indent-line-to) thinks are real code + ;; (bug#13179). + (remove-text-properties (point-min) (point-max) '(syntax-table)) (let ((fill-paragraph-function nil) ;; Adjust fill-column to allow space for the backslash. (fill-column (- fill-column 1))) diff --git a/lisp/progmodes/delphi.el b/lisp/progmodes/opascal.el index 85cdaa06322..5f78b770936 100644 --- a/lisp/progmodes/delphi.el +++ b/lisp/progmodes/opascal.el @@ -1,4 +1,4 @@ -;;; delphi.el --- major mode for editing Delphi source (Object Pascal) in Emacs +;;; opascal.el --- major mode for editing Object Pascal source in Emacs -*- lexical-binding: t -*- ;; Copyright (C) 1998-1999, 2001-2013 Free Software Foundation, Inc. @@ -24,74 +24,55 @@ ;;; Commentary: -;; To enter Delphi mode when you find a Delphi source file, one must override -;; the auto-mode-alist to associate Delphi with .pas (and .dpr and .dpk) -;; files. Emacs, by default, will otherwise enter Pascal mode. E.g. +;; To enter OPascal mode when you find an Object Pascal source file, one must +;; override the auto-mode-alist to associate OPascal with .pas (and .dpr and +;; .dpk) files. Emacs, by default, will otherwise enter Pascal mode. E.g. ;; -;; (autoload 'delphi-mode "delphi") -;; (setq auto-mode-alist -;; (cons '("\\.\\(pas\\|dpr\\|dpk\\)$" . delphi-mode) auto-mode-alist)) +;; (autoload 'opascal-mode "opascal") +;; (add-to-list 'auto-mode-alist +;; '("\\.\\(pas\\|dpr\\|dpk\\)\\'" . opascal-mode)) -;; To get keyword, comment, and string literal coloring, be sure that font-lock -;; is running. One can manually do M-x font-lock-mode in a Delphi buffer, or -;; one can put in .emacs: -;; -;; (add-hook 'delphi-mode-hook 'turn-on-font-lock) - -;; If font-lock is not loaded by default, you might have to do: -;; -;; (autoload 'font-lock-mode "font-lock") -;; (autoload 'turn-on-font-lock "font-lock") -;; (setq font-lock-support-mode 'lazy-lock-mode) -;; -;; Lazy lock is very necessary for faster screen updates. - -;; For good performance, be sure to byte-compile delphi.el, e.g. -;; -;; M-x byte-compile-file <give the path to delphi.el when prompted> - -;; This will generate delphi.elc, which will be loaded instead of delphi.el -;; when delphi-mode is autoloaded. - -;; When you have entered Delphi mode, you may get more info by pressing +;; When you have entered OPascal mode, you may get more info by pressing ;; C-h m. -;; This Delphi mode implementation is fairly tolerant of syntax errors, relying -;; as much as possible on the indentation of the previous statement. This also -;; makes it faster and simpler, since there is less searching for properly -;; constructed beginnings. +;; This OPascal mode implementation is fairly tolerant of syntax errors, +;; relying as much as possible on the indentation of the previous statement. +;; This also makes it faster and simpler, since there is less searching for +;; properly constructed beginnings. ;;; Code: -(provide 'delphi) - -(defgroup delphi nil - "Major mode for editing Delphi source in Emacs." - :version "21.1" +(defgroup opascal nil + "Major mode for editing OPascal source in Emacs." + :version "24.4" :group 'languages) -(defconst delphi-debug nil +(defconst opascal-debug nil "True if in debug mode.") -(defcustom delphi-search-path "." +(define-obsolete-variable-alias + 'delphi-search-path 'opascal-search-path "24.4") +(defcustom opascal-search-path "." "Directories to search when finding external units. It is a list of directory strings. If only a single directory, it can be a single string instead of a list. If a directory ends in \"...\" then that directory is recursively searched." - :type 'string - :group 'delphi) + :type 'string) -(defcustom delphi-indent-level 3 - "Indentation of Delphi statements with respect to containing block. +(define-obsolete-variable-alias + 'delphi-indent-level 'opascal-indent-level "24.4") +(defcustom opascal-indent-level 3 + "Indentation of OPascal statements with respect to containing block. E.g. begin // This is an indent of 3. end;" - :type 'integer - :group 'delphi) + :type 'integer) -(defcustom delphi-compound-block-indent 0 +(define-obsolete-variable-alias + 'delphi-compound-block-indent 'opascal-compound-block-indent "24.4") +(defcustom opascal-compound-block-indent 0 "Extra indentation for blocks in compound statements. E.g. // block indent = 0 vs // block indent = 2 @@ -101,10 +82,11 @@ end else begin end end; else begin end;" - :type 'integer - :group 'delphi) + :type 'integer) -(defcustom delphi-case-label-indent delphi-indent-level +(define-obsolete-variable-alias + 'delphi-case-label-indent 'opascal-case-label-indent "24.4") +(defcustom opascal-case-label-indent opascal-indent-level "Extra indentation for case statement labels. E.g. // case indent = 0 vs // case indent = 3 @@ -114,58 +96,52 @@ v2: process_v2; v2: process_v2; else else process_else; process_else; end; end;" - :type 'integer - :group 'delphi) + :type 'integer) -(defcustom delphi-verbose t ; nil - "If true then Delphi token processing progress is reported to the user." - :type 'boolean - :group 'delphi) +(define-obsolete-variable-alias 'delphi-verbose 'opascal-verbose "24.4") +(defcustom opascal-verbose t ; nil + "If true then OPascal token processing progress is reported to the user." + :type 'boolean) -(defcustom delphi-tab-always-indents t - "Non-nil means TAB in Delphi mode should always reindent the current line, +(define-obsolete-variable-alias + 'delphi-tab-always-indents 'opascal-tab-always-indents "24.4") +(defcustom opascal-tab-always-indents tab-always-indent + "Non-nil means TAB in OPascal mode should always reindent the current line, regardless of where in the line point is when the TAB command is used." - :type 'boolean - :group 'delphi) - -(defcustom delphi-newline-always-indents t - "Non-nil means NEWLINE in Delphi mode should always reindent the current -line, insert a blank line and move to the default indent column of the blank -line. If nil, then no indentation occurs, and NEWLINE does the usual -behavior. This is useful when one needs to do customized indentation that -differs from the default." - :type 'boolean - :group 'delphi) - -(defcustom delphi-comment-face 'font-lock-comment-face - "Face used to color Delphi comments." - :type 'face - :group 'delphi) - -(defcustom delphi-string-face 'font-lock-string-face - "Face used to color Delphi strings." - :type 'face - :group 'delphi) - -(defcustom delphi-keyword-face 'font-lock-keyword-face - "Face used to color Delphi keywords." - :type 'face - :group 'delphi) - -(defcustom delphi-other-face nil + :type 'boolean) + +(define-obsolete-variable-alias + 'delphi-comment-face 'opascal-comment-face "24.4") +(defcustom opascal-comment-face 'font-lock-comment-face + "Face used to color OPascal comments." + :type 'face) + +(define-obsolete-variable-alias + 'delphi-string-face 'opascal-string-face "24.4") +(defcustom opascal-string-face 'font-lock-string-face + "Face used to color OPascal strings." + :type 'face) + +(define-obsolete-variable-alias + 'delphi-keyword-face 'opascal-keyword-face "24.4") +(defcustom opascal-keyword-face 'font-lock-keyword-face + "Face used to color OPascal keywords." + :type 'face) + +(define-obsolete-variable-alias 'delphi-other-face 'opascal-other-face "24.4") +(defcustom opascal-other-face nil "Face used to color everything else." - :type '(choice (const :tag "None" nil) face) - :group 'delphi) + :type '(choice (const :tag "None" nil) face)) -(defconst delphi-directives +(defconst opascal-directives '(absolute abstract assembler automated cdecl default dispid dynamic export external far forward index inline message name near nodefault overload override pascal private protected public published read readonly register reintroduce resident resourcestring safecall stdcall stored virtual write writeonly) - "Delphi4 directives.") + "OPascal4 directives.") -(defconst delphi-keywords +(defconst opascal-keywords (append '(;; Keywords. and array as asm at begin case class const constructor contains @@ -180,261 +156,241 @@ differs from the default." break exit) ;; We want directives to look like keywords. - delphi-directives) - "Delphi4 keywords.") + opascal-directives) + "OPascal4 keywords.") -(defconst delphi-previous-terminators `(semicolon comma) +(defconst opascal-previous-terminators `(semicolon comma) "Expression/statement terminators that denote a previous expression.") -(defconst delphi-comments +(defconst opascal-comments '(comment-single-line comment-multi-line-1 comment-multi-line-2) "Tokens that represent comments.") -(defconst delphi-strings +(defconst opascal-strings '(string double-quoted-string) "Tokens that represent string literals.") -(defconst delphi-whitespace `(space newline ,@delphi-comments) +(defconst opascal-whitespace `(space newline ,@opascal-comments) "Tokens that are considered whitespace.") -(defconst delphi-routine-statements +(defconst opascal-routine-statements '(procedure function constructor destructor property) "Marks the start of a routine, or routine-ish looking expression.") -(defconst delphi-body-expr-statements '(if while for on) +(defconst opascal-body-expr-statements '(if while for on) "Statements that have either a single statement or a block as a body and also are followed by an expression.") -(defconst delphi-expr-statements `(case ,@delphi-body-expr-statements) +(defconst opascal-expr-statements `(case ,@opascal-body-expr-statements) "Expression statements contain expressions after their keyword.") -(defconst delphi-body-statements `(else ,@delphi-body-expr-statements) +(defconst opascal-body-statements `(else ,@opascal-body-expr-statements) "Statements that have either a single statement or a block as a body.") -(defconst delphi-expr-delimiters '(then do of) +(defconst opascal-expr-delimiters '(then do of) "Expression delimiter tokens.") -(defconst delphi-binary-ops +(defconst opascal-binary-ops '(plus minus equals not-equals times divides div mod and or xor) - "Delphi binary operations.") + "OPascal binary operations.") -(defconst delphi-visibilities '(public private protected published automated) +(defconst opascal-visibilities '(public private protected published automated) "Class visibilities.") -(defconst delphi-block-statements +(defconst opascal-block-statements '(begin try case repeat initialization finalization asm) "Statements that contain multiple substatements.") -(defconst delphi-mid-block-statements - `(except finally ,@delphi-visibilities) +(defconst opascal-mid-block-statements + `(except finally ,@opascal-visibilities) "Statements that mark mid sections of the enclosing block.") -(defconst delphi-end-block-statements `(end until) +(defconst opascal-end-block-statements `(end until) "Statements that end block sections.") -(defconst delphi-match-block-statements - `(,@delphi-end-block-statements ,@delphi-mid-block-statements) +(defconst opascal-match-block-statements + `(,@opascal-end-block-statements ,@opascal-mid-block-statements) "Statements that match the indentation of the parent block.") -(defconst delphi-decl-sections '(type const var label resourcestring) +(defconst opascal-decl-sections '(type const var label resourcestring) "Denotes the start of a declaration section.") -(defconst delphi-interface-types '(dispinterface interface) +(defconst opascal-interface-types '(dispinterface interface) "Interface types.") -(defconst delphi-class-types '(class object) +(defconst opascal-class-types '(class object) "Class types.") -(defconst delphi-composite-types - `(,@delphi-class-types ,@delphi-interface-types record) +(defconst opascal-composite-types + `(,@opascal-class-types ,@opascal-interface-types record) "Types that contain declarations within them.") -(defconst delphi-unit-sections +(defconst opascal-unit-sections '(interface implementation program library package) "Unit sections within which the indent is 0.") -(defconst delphi-use-clauses `(uses requires exports contains) +(defconst opascal-use-clauses `(uses requires exports contains) "Statements that refer to foreign symbols.") -(defconst delphi-unit-statements - `(,@delphi-use-clauses ,@delphi-unit-sections initialization finalization) +(defconst opascal-unit-statements + `(,@opascal-use-clauses ,@opascal-unit-sections initialization finalization) "Statements indented at level 0.") -(defconst delphi-decl-delimiters - `(,@delphi-decl-sections ,@delphi-unit-statements - ,@delphi-routine-statements) +(defconst opascal-decl-delimiters + `(,@opascal-decl-sections ,@opascal-unit-statements + ,@opascal-routine-statements) "Statements that a declaration statement should align with.") -(defconst delphi-decl-matchers - `(begin ,@delphi-decl-sections) +(defconst opascal-decl-matchers + `(begin ,@opascal-decl-sections) "Statements that should match to declaration statement indentation.") -(defconst delphi-enclosing-statements - `(,@delphi-block-statements ,@delphi-mid-block-statements - ,@delphi-decl-sections ,@delphi-use-clauses ,@delphi-routine-statements) +(defconst opascal-enclosing-statements + `(,@opascal-block-statements ,@opascal-mid-block-statements + ,@opascal-decl-sections ,@opascal-use-clauses ,@opascal-routine-statements) "Delimits an enclosing statement.") -(defconst delphi-previous-statements - `(,@delphi-unit-statements ,@delphi-routine-statements) +(defconst opascal-previous-statements + `(,@opascal-unit-statements ,@opascal-routine-statements) "Delimits a previous statement.") -(defconst delphi-previous-enclosing-statements - `(,@delphi-block-statements ,@delphi-mid-block-statements - ,@delphi-decl-sections) +(defconst opascal-previous-enclosing-statements + `(,@opascal-block-statements ,@opascal-mid-block-statements + ,@opascal-decl-sections) "Delimits a previous enclosing statement.") -(defconst delphi-begin-enclosing-tokens - `(,@delphi-block-statements ,@delphi-mid-block-statements) +(defconst opascal-begin-enclosing-tokens + `(,@opascal-block-statements ,@opascal-mid-block-statements) "Tokens that a begin token indents from.") -(defconst delphi-begin-previous-tokens - `(,@delphi-decl-sections ,@delphi-routine-statements) +(defconst opascal-begin-previous-tokens + `(,@opascal-decl-sections ,@opascal-routine-statements) "Tokens that a begin token aligns with, but only if not part of a nested routine.") -(defconst delphi-space-chars "\000-\011\013- ") ; all except \n -(defconst delphi-non-space-chars (concat "^" delphi-space-chars)) -(defconst delphi-spaces-re (concat "[" delphi-space-chars "]*")) -(defconst delphi-leading-spaces-re (concat "^" delphi-spaces-re)) -(defconst delphi-word-chars "a-zA-Z0-9_") - -(defmacro delphi-save-match-data (&rest forms) - ;; Executes the forms such that the current match data is preserved, so as - ;; not to disturb any existing search results. - `(let ((data (match-data))) - (unwind-protect - (progn ,@forms) - (set-match-data data)))) - -(defmacro delphi-save-excursion (&rest forms) +(defconst opascal-space-chars "\000-\011\013- ") ; all except \n +(defconst opascal-non-space-chars (concat "^" opascal-space-chars)) +(defconst opascal-spaces-re (concat "[" opascal-space-chars "]*")) +(defconst opascal-leading-spaces-re (concat "^" opascal-spaces-re)) +(defconst opascal-word-chars "a-zA-Z0-9_") + +(defmacro opascal-save-excursion (&rest forms) ;; Executes the forms such that any movements have no effect, including ;; searches. `(save-excursion - (delphi-save-match-data + (save-match-data (let ((inhibit-point-motion-hooks t) (deactivate-mark nil)) (progn ,@forms))))) -(defmacro delphi-save-state (&rest forms) +(defmacro opascal-save-state (&rest forms) ;; Executes the forms such that any buffer modifications do not have any side ;; effects beyond the buffer's actual content changes. - `(let ((delphi-ignore-changes t) - (old-supersession-threat - (symbol-function 'ask-user-about-supersession-threat)) - (buffer-read-only nil) - (inhibit-read-only t) - (buffer-undo-list t) - (before-change-functions nil) - (after-change-functions nil) - (modified (buffer-modified-p))) - ;; Disable any queries about editing obsolete files. - (fset 'ask-user-about-supersession-threat (lambda (_fn))) - (unwind-protect - (progn ,@forms) - (set-buffer-modified-p modified) - (fset 'ask-user-about-supersession-threat old-supersession-threat)))) - -(defsubst delphi-is (element in-set) + `(let ((opascal--ignore-changes t)) + (with-silent-modifications + ,@forms))) + +(defsubst opascal-is (element in-set) ;; If the element is in the set, the element cdr is returned, otherwise nil. (memq element in-set)) -(defun delphi-string-of (start end) +(defun opascal-string-of (start end) ;; Returns the buffer string from start to end. (buffer-substring-no-properties start end)) -(defun delphi-looking-at-string (p s) +(defun opascal-looking-at-string (p s) ;; True if point p marks the start of string s. s is not a regular ;; expression. (let ((limit (+ p (length s)))) (and (<= limit (point-max)) - (string= s (delphi-string-of p limit))))) + (string= s (opascal-string-of p limit))))) -(defun delphi-token-of (kind start end) +(defun opascal-token-of (kind start end) ;; Constructs a token from a kind symbol and its start/end points. `[,kind ,start ,end]) -(defsubst delphi-token-kind (token) +(defsubst opascal-token-kind (token) ;; Returns the kind symbol of the token. (if token (aref token 0) nil)) -(defun delphi-set-token-kind (token to-kind) +(defun opascal-set-token-kind (token to-kind) ;; Sets the kind symbol of the token. (if token (aset token 0 to-kind))) -(defsubst delphi-token-start (token) +(defsubst opascal-token-start (token) ;; Returns the start point of the token. (if token (aref token 1) (point-min))) -(defsubst delphi-token-end (token) +(defsubst opascal-token-end (token) ;; Returns the end point of the token. (if token (aref token 2) (point-min))) -(defun delphi-set-token-start (token start) +(defun opascal-set-token-start (token start) ;; Sets the start point of the token. (if token (aset token 1 start))) -(defun delphi-set-token-end (token end) +(defun opascal-set-token-end (token end) ;; Sets the end point of the token. (if token (aset token 2 end))) -(defun delphi-token-string (token) +(defun opascal-token-string (token) ;; Returns the string image of the token. (if token - (delphi-string-of (delphi-token-start token) (delphi-token-end token)) + (opascal-string-of (opascal-token-start token) (opascal-token-end token)) "")) -(defun delphi-in-token (p token) +(defun opascal-in-token (p token) ;; Returns true if the point p is within the token's start/end points. - (and (<= (delphi-token-start token) p) (< p (delphi-token-end token)))) + (and (<= (opascal-token-start token) p) (< p (opascal-token-end token)))) -(defun delphi-column-of (p) +(defun opascal-column-of (p) ;; Returns the column of the point p. (save-excursion (goto-char p) (current-column))) -(defun delphi-face-of (token-kind) +(defun opascal-face-of (token-kind) ;; Returns the face property appropriate for the token kind. - (cond ((delphi-is token-kind delphi-comments) delphi-comment-face) - ((delphi-is token-kind delphi-strings) delphi-string-face) - ((delphi-is token-kind delphi-keywords) delphi-keyword-face) - (delphi-other-face))) + (cond ((opascal-is token-kind opascal-comments) opascal-comment-face) + ((opascal-is token-kind opascal-strings) opascal-string-face) + ((opascal-is token-kind opascal-keywords) opascal-keyword-face) + (opascal-other-face))) -(defvar delphi-progress-last-reported-point nil +(defvar opascal-progress-last-reported-point nil "The last point at which progress was reported.") -(defconst delphi-parsing-progress-step 16384 +(defconst opascal-parsing-progress-step 16384 "Number of chars to process before the next parsing progress report.") -(defconst delphi-scanning-progress-step 2048 +(defconst opascal-scanning-progress-step 2048 "Number of chars to process before the next scanning progress report.") -(defconst delphi-fontifying-progress-step delphi-scanning-progress-step +(defconst opascal-fontifying-progress-step opascal-scanning-progress-step "Number of chars to process before the next fontification progress report.") -(defun delphi-progress-start () +(defun opascal-progress-start () ;; Initializes progress reporting. - (setq delphi-progress-last-reported-point nil)) + (setq opascal-progress-last-reported-point nil)) -(defun delphi-progress-done (&rest msgs) +(defun opascal-progress-done (&rest msgs) ;; Finalizes progress reporting. - (setq delphi-progress-last-reported-point nil) - (when delphi-verbose + (setq opascal-progress-last-reported-point nil) + (when opascal-verbose (if (null msgs) (message "") (apply #'message msgs)))) -(defun delphi-step-progress (p desc step-size) +(defun opascal-step-progress (p desc step-size) ;; If enough distance has elapsed since the last reported point, then report ;; the current progress to the user. - (cond ((null delphi-progress-last-reported-point) + (cond ((null opascal-progress-last-reported-point) ;; This is the first progress step. - (setq delphi-progress-last-reported-point p)) + (setq opascal-progress-last-reported-point p)) - ((and delphi-verbose - (>= (abs (- p delphi-progress-last-reported-point)) step-size)) + ((and opascal-verbose + (>= (abs (- p opascal-progress-last-reported-point)) step-size)) ;; Report the percentage complete. - (setq delphi-progress-last-reported-point p) + (setq opascal-progress-last-reported-point p) (message "%s %s ... %d%%" desc (buffer-name) (/ (* 100 p) (point-max)))))) -(defun delphi-next-line-start (&optional from-point) +(defun opascal-next-line-start (&optional from-point) ;; Returns the first point of the next line. (let ((curr-point (point)) (next nil)) @@ -444,24 +400,24 @@ routine.") (goto-char curr-point) next)) -(defvar delphi-ignore-changes t - "Internal flag to control if the Delphi mode responds to buffer changes. -Defaults to t in case the `delphi-after-change' function is called on a -non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: - (let ((delphi-ignore-changes t)) ...)") +(defvar opascal--ignore-changes t + "Internal flag to control if the OPascal mode responds to buffer changes. +Defaults to t in case the `opascal-after-change' function is called on a +non-OPascal buffer. Set to nil in OPascal buffers. To override, just do: + (let ((opascal--ignore-changes t)) ...)") -(defun delphi-set-text-properties (from to properties) +(defun opascal-set-text-properties (from to properties) ;; Like `set-text-properties', except we do not consider this to be a buffer ;; modification. - (delphi-save-state + (opascal-save-state (set-text-properties from to properties))) -(defun delphi-literal-kind (p) +(defun opascal-literal-kind (p) ;; Returns the literal kind the point p is in (or nil if not in a literal). (if (and (<= (point-min) p) (<= p (point-max))) (get-text-property p 'token))) -(defun delphi-literal-start-pattern (literal-kind) +(defun opascal-literal-start-pattern (literal-kind) ;; Returns the start pattern of the literal kind. (cdr (assoc literal-kind '((comment-single-line . "//") @@ -470,7 +426,7 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: (string . "'") (double-quoted-string . "\""))))) -(defun delphi-literal-end-pattern (literal-kind) +(defun opascal-literal-end-pattern (literal-kind) ;; Returns the end pattern of the literal kind. (cdr (assoc literal-kind '((comment-single-line . "\n") @@ -479,7 +435,7 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: (string . "'") (double-quoted-string . "\""))))) -(defun delphi-literal-stop-pattern (literal-kind) +(defun opascal-literal-stop-pattern (literal-kind) ;; Returns the pattern that delimits end of the search for the literal kind. ;; These are regular expressions. (cdr (assoc literal-kind @@ -490,69 +446,69 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: (string . "['\n]") (double-quoted-string . "[\"\n]"))))) -(defun delphi-is-literal-start (p) +(defun opascal-is-literal-start (p) ;; True if the point p is at the start point of a (completed) literal. - (let* ((kind (delphi-literal-kind p)) - (pattern (delphi-literal-start-pattern kind))) + (let* ((kind (opascal-literal-kind p)) + (pattern (opascal-literal-start-pattern kind))) (or (null kind) ; Non-literals are considered as start points. - (delphi-looking-at-string p pattern)))) + (opascal-looking-at-string p pattern)))) -(defun delphi-is-literal-end (p) +(defun opascal-is-literal-end (p) ;; True if the point p is at the end point of a (completed) literal. - (let* ((kind (delphi-literal-kind (1- p))) - (pattern (delphi-literal-end-pattern kind))) + (let* ((kind (opascal-literal-kind (1- p))) + (pattern (opascal-literal-end-pattern kind))) (or (null kind) ; Non-literals are considered as end points. - (and (delphi-looking-at-string (- p (length pattern)) pattern) - (or (not (delphi-is kind delphi-strings)) + (and (opascal-looking-at-string (- p (length pattern)) pattern) + (or (not (opascal-is kind opascal-strings)) ;; Special case: string delimiters are start/end ambiguous. ;; We have an end only if there is some string content (at ;; least a starting delimiter). - (not (delphi-is-literal-end (1- p))))) + (not (opascal-is-literal-end (1- p))))) ;; Special case: strings cannot span lines. - (and (delphi-is kind delphi-strings) (eq ?\n (char-after (1- p))))))) + (and (opascal-is kind opascal-strings) (eq ?\n (char-after (1- p))))))) -(defun delphi-is-stable-literal (p) +(defun opascal-is-stable-literal (p) ;; True if the point p marks a stable point. That is, a point outside of a ;; literal region, inside of a literal region, or adjacent to completed ;; literal regions. - (let ((at-start (delphi-is-literal-start p)) - (at-end (delphi-is-literal-end p))) + (let ((at-start (opascal-is-literal-start p)) + (at-end (opascal-is-literal-end p))) (or (>= p (point-max)) (and at-start at-end) (and (not at-start) (not at-end) - (eq (delphi-literal-kind (1- p)) (delphi-literal-kind p)))))) + (eq (opascal-literal-kind (1- p)) (opascal-literal-kind p)))))) -(defun delphi-complete-literal (literal-kind limit) +(defun opascal-complete-literal (literal-kind limit) ;; Continues the search for a literal's true end point and returns the ;; point past the end pattern (if found) or the limit (if not found). - (let ((pattern (delphi-literal-stop-pattern literal-kind))) + (let ((pattern (opascal-literal-stop-pattern literal-kind))) (if (not (stringp pattern)) (error "Invalid literal kind %S" literal-kind) ;; Search up to the limit. (re-search-forward pattern limit 'goto-limit-on-fail) (point)))) -(defun delphi-literal-text-properties (kind) +(defun opascal-literal-text-properties (kind) ;; Creates a list of text properties for the literal kind. (if (and (boundp 'font-lock-mode) font-lock-mode) - (list 'token kind 'face (delphi-face-of kind) 'lazy-lock t) + (list 'token kind 'face (opascal-face-of kind) 'lazy-lock t) (list 'token kind))) -(defun delphi-parse-next-literal (limit) +(defun opascal-parse-next-literal (limit) ;; Searches for the next literal region (i.e. comment or string) and sets the ;; the point to its end (or the limit, if not found). The literal region is ;; marked as such with a text property, to speed up tokenizing during face ;; coloring and indentation scanning. (let ((search-start (point))) - (cond ((not (delphi-is-literal-end search-start)) + (cond ((not (opascal-is-literal-end search-start)) ;; We are completing an incomplete literal. - (let ((kind (delphi-literal-kind (1- search-start)))) - (delphi-complete-literal kind limit) - (delphi-set-text-properties - search-start (point) (delphi-literal-text-properties kind)))) + (let ((kind (opascal-literal-kind (1- search-start)))) + (opascal-complete-literal kind limit) + (opascal-set-text-properties + search-start (point) (opascal-literal-text-properties kind)))) ((re-search-forward "\\(//\\)\\|\\({\\)\\|\\((\\*\\)\\|\\('\\)\\|\\(\"\\)" @@ -564,34 +520,34 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: ((match-beginning 4) 'string) ((match-beginning 5) 'double-quoted-string))) (start (match-beginning 0))) - (delphi-set-text-properties search-start start nil) - (delphi-complete-literal kind limit) - (delphi-set-text-properties - start (point) (delphi-literal-text-properties kind)))) + (opascal-set-text-properties search-start start nil) + (opascal-complete-literal kind limit) + (opascal-set-text-properties + start (point) (opascal-literal-text-properties kind)))) ;; Nothing found. Mark it as a non-literal. - ((delphi-set-text-properties search-start limit nil))) - (delphi-step-progress (point) "Parsing" delphi-parsing-progress-step))) + ((opascal-set-text-properties search-start limit nil))) + (opascal-step-progress (point) "Parsing" opascal-parsing-progress-step))) -(defun delphi-literal-token-at (p) +(defun opascal-literal-token-at (p) ;; Returns the literal token surrounding the point p, or nil if none. - (let ((kind (delphi-literal-kind p))) + (let ((kind (opascal-literal-kind p))) (when kind (let ((start (previous-single-property-change (1+ p) 'token)) (end (next-single-property-change p 'token))) - (delphi-token-of kind (or start (point-min)) (or end (point-max))))))) + (opascal-token-of kind (or start (point-min)) (or end (point-max))))))) -(defun delphi-point-token-at (p kind) +(defun opascal-point-token-at (p kind) ;; Returns the single character token at the point p. - (delphi-token-of kind p (1+ p))) + (opascal-token-of kind p (1+ p))) -(defsubst delphi-char-token-at (p char kind) +(defsubst opascal-char-token-at (p char kind) ;; Returns the token at the point p that describes the specified character. ;; If not actually over such a character, nil is returned. (when (eq char (char-after p)) - (delphi-token-of kind p (1+ p)))) + (opascal-token-of kind p (1+ p)))) -(defun delphi-charset-token-at (p charset kind) +(defun opascal-charset-token-at (p charset kind) ;; Returns the token surrounding point p that contains only members of the ;; character set. (let ((currp (point)) @@ -602,293 +558,293 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: (setq end (point)) (goto-char (1+ p)) (skip-chars-backward charset) - (setq token (delphi-token-of kind (point) end))) + (setq token (opascal-token-of kind (point) end))) (goto-char currp) token)) -(defun delphi-space-token-at (p) +(defun opascal-space-token-at (p) ;; If point p is surrounded by space characters, then return the token of the ;; contiguous spaces. - (delphi-charset-token-at p delphi-space-chars 'space)) + (opascal-charset-token-at p opascal-space-chars 'space)) -(defun delphi-word-token-at (p) +(defun opascal-word-token-at (p) ;; If point p is over a word (i.e. identifier characters), then return a word ;; token. If the word is actually a keyword, then return the keyword token. - (let ((word (delphi-charset-token-at p delphi-word-chars 'word))) + (let ((word (opascal-charset-token-at p opascal-word-chars 'word))) (when word - (let* ((word-image (downcase (delphi-token-string word))) + (let* ((word-image (downcase (opascal-token-string word))) (keyword (intern-soft word-image))) (when (and (or keyword (string= "nil" word-image)) - (delphi-is keyword delphi-keywords)) - (delphi-set-token-kind word keyword)) + (opascal-is keyword opascal-keywords)) + (opascal-set-token-kind word keyword)) word)))) -(defun delphi-explicit-token-at (p token-string kind) +(defun opascal-explicit-token-at (p token-string kind) ;; If point p is anywhere in the token string then returns the resulting ;; token. - (let ((token (delphi-charset-token-at p token-string kind))) - (when (and token (string= token-string (delphi-token-string token))) + (let ((token (opascal-charset-token-at p token-string kind))) + (when (and token (string= token-string (opascal-token-string token))) token))) -(defun delphi-token-at (p) +(defun opascal-token-at (p) ;; Returns the token from parsing text at point p. (when (and (<= (point-min) p) (<= p (point-max))) - (cond ((delphi-char-token-at p ?\n 'newline)) + (cond ((opascal-char-token-at p ?\n 'newline)) - ((delphi-literal-token-at p)) + ((opascal-literal-token-at p)) - ((delphi-space-token-at p)) + ((opascal-space-token-at p)) - ((delphi-word-token-at p)) + ((opascal-word-token-at p)) - ((delphi-char-token-at p ?\( 'open-group)) - ((delphi-char-token-at p ?\) 'close-group)) - ((delphi-char-token-at p ?\[ 'open-group)) - ((delphi-char-token-at p ?\] 'close-group)) - ((delphi-char-token-at p ?\; 'semicolon)) - ((delphi-char-token-at p ?. 'dot)) - ((delphi-char-token-at p ?, 'comma)) - ((delphi-char-token-at p ?= 'equals)) - ((delphi-char-token-at p ?+ 'plus)) - ((delphi-char-token-at p ?- 'minus)) - ((delphi-char-token-at p ?* 'times)) - ((delphi-char-token-at p ?/ 'divides)) - ((delphi-char-token-at p ?: 'colon)) + ((opascal-char-token-at p ?\( 'open-group)) + ((opascal-char-token-at p ?\) 'close-group)) + ((opascal-char-token-at p ?\[ 'open-group)) + ((opascal-char-token-at p ?\] 'close-group)) + ((opascal-char-token-at p ?\; 'semicolon)) + ((opascal-char-token-at p ?. 'dot)) + ((opascal-char-token-at p ?, 'comma)) + ((opascal-char-token-at p ?= 'equals)) + ((opascal-char-token-at p ?+ 'plus)) + ((opascal-char-token-at p ?- 'minus)) + ((opascal-char-token-at p ?* 'times)) + ((opascal-char-token-at p ?/ 'divides)) + ((opascal-char-token-at p ?: 'colon)) - ((delphi-explicit-token-at p "<>" 'not-equals)) + ((opascal-explicit-token-at p "<>" 'not-equals)) - ((delphi-point-token-at p 'punctuation))))) + ((opascal-point-token-at p 'punctuation))))) -(defun delphi-current-token () - ;; Returns the delphi source token under the current point. - (delphi-token-at (point))) +(defun opascal-current-token () + ;; Returns the opascal source token under the current point. + (opascal-token-at (point))) -(defun delphi-next-token (token) +(defun opascal-next-token (token) ;; Returns the token after the specified token. (when token - (let ((next (delphi-token-at (delphi-token-end token)))) + (let ((next (opascal-token-at (opascal-token-end token)))) (if next - (delphi-step-progress (delphi-token-start next) "Scanning" - delphi-scanning-progress-step)) + (opascal-step-progress (opascal-token-start next) "Scanning" + opascal-scanning-progress-step)) next))) -(defun delphi-previous-token (token) +(defun opascal-previous-token (token) ;; Returns the token before the specified token. (when token - (let ((previous (delphi-token-at (1- (delphi-token-start token))))) + (let ((previous (opascal-token-at (1- (opascal-token-start token))))) (if previous - (delphi-step-progress (delphi-token-start previous) "Scanning" - delphi-scanning-progress-step)) + (opascal-step-progress (opascal-token-start previous) "Scanning" + opascal-scanning-progress-step)) previous))) -(defun delphi-next-visible-token (token) +(defun opascal-next-visible-token (token) ;; Returns the first non-space token after the specified token. (let (next-token) (while (progn - (setq next-token (delphi-next-token token)) - (delphi-is (delphi-token-kind next-token) '(space newline)))) + (setq next-token (opascal-next-token token)) + (opascal-is (opascal-token-kind next-token) '(space newline)))) next-token)) -(defun delphi-parse-region (from to) +(defun opascal-parse-region (from to) ;; Parses the literal tokens in the region. The point is set to "to". (save-restriction (widen) (goto-char from) (while (< (point) to) - (delphi-parse-next-literal to)))) + (opascal-parse-next-literal to)))) -(defun delphi-parse-region-until-stable (from to) +(defun opascal-parse-region-until-stable (from to) ;; Parses at least the literal tokens in the region. After that, parsing ;; continues as long as obsolete literal regions are encountered. The point ;; is set to the encountered stable point. (save-restriction (widen) - (delphi-parse-region from to) - (while (not (delphi-is-stable-literal (point))) - (delphi-parse-next-literal (point-max))))) - -(defun delphi-fontify-region (from to &optional verbose) - ;; Colors the text in the region according to Delphi rules. - (delphi-save-excursion - (delphi-save-state + (opascal-parse-region from to) + (while (not (opascal-is-stable-literal (point))) + (opascal-parse-next-literal (point-max))))) + +(defun opascal-fontify-region (from to &optional verbose) + ;; Colors the text in the region according to OPascal rules. + (opascal-save-excursion + (opascal-save-state (let ((p from) - (delphi-verbose verbose) + (opascal-verbose verbose) (token nil)) - (delphi-progress-start) + (opascal-progress-start) (while (< p to) ;; Color the token and move past it. - (setq token (delphi-token-at p)) + (setq token (opascal-token-at p)) (add-text-properties - (delphi-token-start token) (delphi-token-end token) - (list 'face (delphi-face-of (delphi-token-kind token)) 'lazy-lock t)) - (setq p (delphi-token-end token)) - (delphi-step-progress p "Fontifying" delphi-fontifying-progress-step)) - (delphi-progress-done))))) + (opascal-token-start token) (opascal-token-end token) + (list 'face (opascal-face-of (opascal-token-kind token)) 'lazy-lock t)) + (setq p (opascal-token-end token)) + (opascal-step-progress p "Fontifying" opascal-fontifying-progress-step)) + (opascal-progress-done))))) -(defun delphi-after-change (change-start change-end _old-length) +(defun opascal-after-change (change-start change-end _old-length) ;; Called when the buffer has changed. Reparses the changed region. - (unless delphi-ignore-changes - (let ((delphi-ignore-changes t)) ; Prevent recursive calls. - (delphi-save-excursion - (delphi-progress-start) + (unless opascal--ignore-changes + (let ((opascal--ignore-changes t)) ; Prevent recursive calls. + (opascal-save-excursion + (opascal-progress-start) ;; Reparse at least from the token previous to the change to the end of ;; line after the change. - (delphi-parse-region-until-stable - (delphi-token-start (delphi-token-at (1- change-start))) + (opascal-parse-region-until-stable + (opascal-token-start (opascal-token-at (1- change-start))) (progn (goto-char change-end) (end-of-line) (point))) - (delphi-progress-done))))) + (opascal-progress-done))))) -(defun delphi-group-start (from-token) +(defun opascal-group-start (from-token) ;; Returns the token that denotes the start of the ()/[] group. - (let ((token (delphi-previous-token from-token)) + (let ((token (opascal-previous-token from-token)) (token-kind nil)) (catch 'done (while token - (setq token-kind (delphi-token-kind token)) + (setq token-kind (opascal-token-kind token)) (cond ;; Skip over nested groups. - ((eq 'close-group token-kind) (setq token (delphi-group-start token))) + ((eq 'close-group token-kind) (setq token (opascal-group-start token))) ((eq 'open-group token-kind) (throw 'done token))) - (setq token (delphi-previous-token token))) + (setq token (opascal-previous-token token))) ;; Start not found. nil))) -(defun delphi-group-end (from-token) +(defun opascal-group-end (from-token) ;; Returns the token that denotes the end of the ()/[] group. - (let ((token (delphi-next-token from-token)) + (let ((token (opascal-next-token from-token)) (token-kind nil)) (catch 'done (while token - (setq token-kind (delphi-token-kind token)) + (setq token-kind (opascal-token-kind token)) (cond ;; Skip over nested groups. - ((eq 'open-group token-kind) (setq token (delphi-group-end token))) + ((eq 'open-group token-kind) (setq token (opascal-group-end token))) ((eq 'close-group token-kind) (throw 'done token))) - (setq token (delphi-next-token token))) + (setq token (opascal-next-token token))) ;; end not found. nil))) -(defun delphi-indent-of (token &optional offset) +(defun opascal-indent-of (token &optional offset) ;; Returns the start column of the token, plus any offset. - (let ((indent (+ (delphi-column-of (delphi-token-start token)) + (let ((indent (+ (opascal-column-of (opascal-token-start token)) (if offset offset 0)))) - (when delphi-debug - (delphi-debug-log + (when opascal-debug + (opascal-debug-log (concat "\n Indent of: %S %S" "\n column: %d indent: %d offset: %d") - token (delphi-token-string token) - (delphi-column-of (delphi-token-start token)) + token (opascal-token-string token) + (opascal-column-of (opascal-token-start token)) indent (if offset offset 0))) indent)) -(defun delphi-line-indent-of (from-token &optional offset &rest terminators) +(defun opascal-line-indent-of (from-token &optional offset &rest terminators) ;; Returns the column of first non-space character on the token's line, plus ;; any offset. We also stop if one of the terminators or an open ( or [ is ;; encountered. - (let ((token (delphi-previous-token from-token)) + (let ((token (opascal-previous-token from-token)) (last-token from-token) (kind nil)) (catch 'done (while token - (setq kind (delphi-token-kind token)) + (setq kind (opascal-token-kind token)) (cond ;; Skip over ()/[] groups. - ((eq 'close-group kind) (setq token (delphi-group-start token))) + ((eq 'close-group kind) (setq token (opascal-group-start token))) ;; Stop at the beginning of the line or an open group. - ((delphi-is kind '(newline open-group)) (throw 'done nil)) + ((opascal-is kind '(newline open-group)) (throw 'done nil)) ;; Stop at one of the specified terminators. - ((delphi-is kind terminators) (throw 'done nil))) - (unless (delphi-is kind delphi-whitespace) (setq last-token token)) - (setq token (delphi-previous-token token)))) - (delphi-indent-of last-token offset))) + ((opascal-is kind terminators) (throw 'done nil))) + (unless (opascal-is kind opascal-whitespace) (setq last-token token)) + (setq token (opascal-previous-token token)))) + (opascal-indent-of last-token offset))) -(defun delphi-stmt-line-indent-of (from-token &optional offset) - ;; Like `delphi-line-indent-of' except is also stops on a use clause, and +(defun opascal-stmt-line-indent-of (from-token &optional offset) + ;; Like `opascal-line-indent-of' except is also stops on a use clause, and ;; colons that precede statements (i.e. case labels). - (let ((token (delphi-previous-token from-token)) + (let ((token (opascal-previous-token from-token)) (last-token from-token) (kind nil)) (catch 'done (while token - (setq kind (delphi-token-kind token)) + (setq kind (opascal-token-kind token)) (cond ((and (eq 'colon kind) - (delphi-is (delphi-token-kind last-token) - `(,@delphi-block-statements - ,@delphi-expr-statements))) + (opascal-is (opascal-token-kind last-token) + `(,@opascal-block-statements + ,@opascal-expr-statements))) ;; We hit a label followed by a statement. Indent to the statement. (throw 'done nil)) ;; Skip over ()/[] groups. - ((eq 'close-group kind) (setq token (delphi-group-start token))) + ((eq 'close-group kind) (setq token (opascal-group-start token))) - ((delphi-is kind `(newline open-group ,@delphi-use-clauses)) + ((opascal-is kind `(newline open-group ,@opascal-use-clauses)) ;; Stop at the beginning of the line, an open group, or a use clause (throw 'done nil))) - (unless (delphi-is kind delphi-whitespace) (setq last-token token)) - (setq token (delphi-previous-token token)))) - (delphi-indent-of last-token offset))) + (unless (opascal-is kind opascal-whitespace) (setq last-token token)) + (setq token (opascal-previous-token token)))) + (opascal-indent-of last-token offset))) -(defun delphi-open-group-indent (token last-token &optional offset) +(defun opascal-open-group-indent (token last-token &optional offset) ;; Returns the indent relative to an unmatched ( or [. - (when (eq 'open-group (delphi-token-kind token)) + (when (eq 'open-group (opascal-token-kind token)) (if last-token - (delphi-indent-of last-token offset) + (opascal-indent-of last-token offset) ;; There is nothing following the ( or [. Indent from its line. - (delphi-stmt-line-indent-of token delphi-indent-level)))) + (opascal-stmt-line-indent-of token opascal-indent-level)))) -(defun delphi-composite-type-start (token last-token) +(defun opascal-composite-type-start (token last-token) ;; Returns true (actually the last-token) if the pair equals (= class), (= ;; dispinterface), (= interface), (= object), or (= record), and nil ;; otherwise. - (if (and (eq 'equals (delphi-token-kind token)) - (delphi-is (delphi-token-kind last-token) delphi-composite-types)) + (if (and (eq 'equals (opascal-token-kind token)) + (opascal-is (opascal-token-kind last-token) opascal-composite-types)) last-token)) -(defun delphi-is-simple-class-type (at-token limit-token) +(defun opascal-is-simple-class-type (at-token limit-token) ;; True if at-token is the start of a simple class type. E.g. ;; class of TClass; ;; class (TBaseClass); ;; class; - (when (delphi-is (delphi-token-kind at-token) delphi-class-types) + (when (opascal-is (opascal-token-kind at-token) opascal-class-types) (catch 'done ;; Scan until the semi colon. - (let ((token (delphi-next-token at-token)) + (let ((token (opascal-next-token at-token)) (token-kind nil) - (limit (delphi-token-start limit-token))) - (while (and token (<= (delphi-token-start token) limit)) - (setq token-kind (delphi-token-kind token)) + (limit (opascal-token-start limit-token))) + (while (and token (<= (opascal-token-start token) limit)) + (setq token-kind (opascal-token-kind token)) (cond ;; A semicolon delimits the search. ((eq 'semicolon token-kind) (throw 'done token)) ;; Skip over the inheritance list. - ((eq 'open-group token-kind) (setq token (delphi-group-end token))) + ((eq 'open-group token-kind) (setq token (opascal-group-end token))) ;; Only allow "of" and whitespace, and an identifier - ((delphi-is token-kind `(of word ,@delphi-whitespace))) + ((opascal-is token-kind `(of word ,@opascal-whitespace))) ;; Otherwise we are not in a simple class declaration. ((throw 'done nil))) - (setq token (delphi-next-token token))))))) + (setq token (opascal-next-token token))))))) -(defun delphi-block-start (from-token &optional stop-on-class) +(defun opascal-block-start (from-token &optional stop-on-class) ;; Returns the token that denotes the start of the block. - (let ((token (delphi-previous-token from-token)) + (let ((token (opascal-previous-token from-token)) (last-token nil) (token-kind nil)) (catch 'done (while token - (setq token-kind (delphi-token-kind token)) + (setq token-kind (opascal-token-kind token)) (cond ;; Skip over nested blocks. - ((delphi-is token-kind delphi-end-block-statements) - (setq token (delphi-block-start token))) + ((opascal-is token-kind opascal-end-block-statements) + (setq token (opascal-block-start token))) ;; Regular block start found. - ((delphi-is token-kind delphi-block-statements) + ((opascal-is token-kind opascal-block-statements) (throw 'done ;; As a special case, when a "case" block appears ;; within a record declaration (to denote a variant @@ -896,42 +852,42 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: ;; the enclosing block. (if (eq 'case token-kind) (let ((enclosing-token - (delphi-block-start token + (opascal-block-start token 'stop-on-class))) (if (eq 'record - (delphi-token-kind enclosing-token)) + (opascal-token-kind enclosing-token)) (if stop-on-class enclosing-token - (delphi-previous-token enclosing-token)) + (opascal-previous-token enclosing-token)) token)) token))) ;; A class/record start also begins a block. - ((delphi-composite-type-start token last-token) + ((opascal-composite-type-start token last-token) (throw 'done (if stop-on-class last-token token))) ) - (unless (delphi-is token-kind delphi-whitespace) + (unless (opascal-is token-kind opascal-whitespace) (setq last-token token)) - (setq token (delphi-previous-token token))) + (setq token (opascal-previous-token token))) ;; Start not found. nil))) -(defun delphi-else-start (from-else) +(defun opascal-else-start (from-else) ;; Returns the token of the if or case statement. - (let ((token (delphi-previous-token from-else)) + (let ((token (opascal-previous-token from-else)) (token-kind nil) (semicolon-count 0)) (catch 'done (while token - (setq token-kind (delphi-token-kind token)) + (setq token-kind (opascal-token-kind token)) (cond ;; Skip over nested groups. - ((eq 'close-group token-kind) (setq token (delphi-group-start token))) + ((eq 'close-group token-kind) (setq token (opascal-group-start token))) ;; Skip over any nested blocks. - ((delphi-is token-kind delphi-end-block-statements) - (setq token (delphi-block-start token))) + ((opascal-is token-kind opascal-end-block-statements) + (setq token (opascal-block-start token))) ((eq 'semicolon token-kind) ;; Semicolon means we are looking for an enclosing if, unless we @@ -947,151 +903,151 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: ((eq 'case token-kind) ;; We have hit a case statement start. (throw 'done token))) - (setq token (delphi-previous-token token))) + (setq token (opascal-previous-token token))) ;; No if or case statement found. nil))) -(defun delphi-comment-content-start (comment) +(defun opascal-comment-content-start (comment) ;; Returns the point of the first non-space character in the comment. - (let ((kind (delphi-token-kind comment))) - (when (delphi-is kind delphi-comments) - (delphi-save-excursion - (goto-char (+ (delphi-token-start comment) - (length (delphi-literal-start-pattern kind)))) - (skip-chars-forward delphi-space-chars) + (let ((kind (opascal-token-kind comment))) + (when (opascal-is kind opascal-comments) + (opascal-save-excursion + (goto-char (+ (opascal-token-start comment) + (length (opascal-literal-start-pattern kind)))) + (skip-chars-forward opascal-space-chars) (point))))) -(defun delphi-comment-block-start (comment) +(defun opascal-comment-block-start (comment) ;; Returns the starting comment token of a contiguous // comment block. If ;; the comment is multiline (i.e. {...} or (*...*)), the original comment is ;; returned. - (if (not (eq 'comment-single-line (delphi-token-kind comment))) + (if (not (eq 'comment-single-line (opascal-token-kind comment))) comment ;; Scan until we run out of // comments. (let ((prev-comment comment) (start-comment comment)) - (while (let ((kind (delphi-token-kind prev-comment))) + (while (let ((kind (opascal-token-kind prev-comment))) (cond ((eq kind 'space)) ((eq kind 'comment-single-line) (setq start-comment prev-comment)) (t nil))) - (setq prev-comment (delphi-previous-token prev-comment))) + (setq prev-comment (opascal-previous-token prev-comment))) start-comment))) -(defun delphi-comment-block-end (comment) +(defun opascal-comment-block-end (comment) ;; Returns the end comment token of a contiguous // comment block. If the ;; comment is multiline (i.e. {...} or (*...*)), the original comment is ;; returned. - (if (not (eq 'comment-single-line (delphi-token-kind comment))) + (if (not (eq 'comment-single-line (opascal-token-kind comment))) comment ;; Scan until we run out of // comments. (let ((next-comment comment) (end-comment comment)) - (while (let ((kind (delphi-token-kind next-comment))) + (while (let ((kind (opascal-token-kind next-comment))) (cond ((eq kind 'space)) ((eq kind 'comment-single-line) (setq end-comment next-comment)) (t nil))) - (setq next-comment (delphi-next-token next-comment))) + (setq next-comment (opascal-next-token next-comment))) end-comment))) -(defun delphi-on-first-comment-line (comment) +(defun opascal-on-first-comment-line (comment) ;; Returns true if the current point is on the first line of the comment. (save-excursion - (let ((comment-start (delphi-token-start comment)) + (let ((comment-start (opascal-token-start comment)) (current-point (point))) (goto-char comment-start) (end-of-line) (and (<= comment-start current-point) (<= current-point (point)))))) -(defun delphi-comment-indent-of (comment) +(defun opascal-comment-indent-of (comment) ;; Returns the correct indentation for the comment. - (let ((start-comment (delphi-comment-block-start comment))) + (let ((start-comment (opascal-comment-block-start comment))) (if (and (eq start-comment comment) - (delphi-on-first-comment-line comment)) + (opascal-on-first-comment-line comment)) ;; Indent as a statement. - (delphi-enclosing-indent-of comment) + (opascal-enclosing-indent-of comment) (save-excursion - (let ((kind (delphi-token-kind comment))) + (let ((kind (opascal-token-kind comment))) (beginning-of-line) (cond ((eq 'comment-single-line kind) ;; Indent to the first comment in the // block. - (delphi-indent-of start-comment)) + (opascal-indent-of start-comment)) - ((looking-at (concat delphi-leading-spaces-re - (delphi-literal-stop-pattern kind))) + ((looking-at (concat opascal-leading-spaces-re + (opascal-literal-stop-pattern kind))) ;; Indent multi-line comment terminators to the comment start. - (delphi-indent-of comment)) + (opascal-indent-of comment)) ;; Indent according to the comment's content start. - ((delphi-column-of (delphi-comment-content-start comment))))))) + ((opascal-column-of (opascal-comment-content-start comment))))))) )) -(defun delphi-is-use-clause-end (at-token last-token last-colon from-kind) +(defun opascal-is-use-clause-end (at-token last-token last-colon from-kind) ;; True if we are after the end of a uses type clause. (when (and last-token (not last-colon) - (eq 'comma (delphi-token-kind at-token)) + (eq 'comma (opascal-token-kind at-token)) (eq 'semicolon from-kind)) ;; Scan for the uses statement, just to be sure. - (let ((token (delphi-previous-token at-token)) + (let ((token (opascal-previous-token at-token)) (token-kind nil)) (catch 'done (while token - (setq token-kind (delphi-token-kind token)) - (cond ((delphi-is token-kind delphi-use-clauses) + (setq token-kind (opascal-token-kind token)) + (cond ((opascal-is token-kind opascal-use-clauses) (throw 'done t)) ;; Whitespace, identifiers, strings, "in" keyword, and commas ;; are allowed in use clauses. - ((or (delphi-is token-kind '(word comma in newline)) - (delphi-is token-kind delphi-whitespace) - (delphi-is token-kind delphi-strings))) + ((or (opascal-is token-kind '(word comma in newline)) + (opascal-is token-kind opascal-whitespace) + (opascal-is token-kind opascal-strings))) ;; Nothing else is. ((throw 'done nil))) - (setq token (delphi-previous-token token))) + (setq token (opascal-previous-token token))) nil)))) -(defun delphi-is-block-after-expr-statement (token) +(defun opascal-is-block-after-expr-statement (token) ;; Returns true if we have a block token trailing an expression delimiter (of ;; presumably an expression statement). - (when (delphi-is (delphi-token-kind token) delphi-block-statements) - (let ((previous (delphi-previous-token token)) + (when (opascal-is (opascal-token-kind token) opascal-block-statements) + (let ((previous (opascal-previous-token token)) (previous-kind nil)) (while (progn - (setq previous-kind (delphi-token-kind previous)) + (setq previous-kind (opascal-token-kind previous)) (eq previous-kind 'space)) - (setq previous (delphi-previous-token previous))) - (or (delphi-is previous-kind delphi-expr-delimiters) + (setq previous (opascal-previous-token previous))) + (or (opascal-is previous-kind opascal-expr-delimiters) (eq previous-kind 'else))))) -(defun delphi-previous-indent-of (from-token) +(defun opascal-previous-indent-of (from-token) ;; Returns the indentation of the previous statement of the token. - (let ((token (delphi-previous-token from-token)) + (let ((token (opascal-previous-token from-token)) (token-kind nil) - (from-kind (delphi-token-kind from-token)) + (from-kind (opascal-token-kind from-token)) (last-colon nil) (last-of nil) (last-token nil)) (catch 'done (while token - (setq token-kind (delphi-token-kind token)) + (setq token-kind (opascal-token-kind token)) (cond ;; An open ( or [ always is an indent point. ((eq 'open-group token-kind) - (throw 'done (delphi-open-group-indent token last-token))) + (throw 'done (opascal-open-group-indent token last-token))) ;; Skip over any ()/[] groups. - ((eq 'close-group token-kind) (setq token (delphi-group-start token))) + ((eq 'close-group token-kind) (setq token (opascal-group-start token))) - ((delphi-is token-kind delphi-end-block-statements) - (if (eq 'newline (delphi-token-kind (delphi-previous-token token))) + ((opascal-is token-kind opascal-end-block-statements) + (if (eq 'newline (opascal-token-kind (opascal-previous-token token))) ;; We can stop at an end token that is right up against the ;; margin. (throw 'done 0) ;; Otherwise, skip over any nested blocks. - (setq token (delphi-block-start token)))) + (setq token (opascal-block-start token)))) ;; Special case: if we encounter a ", word;" then we assume that we ;; are in some kind of uses clause, and thus indent to column 0. This @@ -1102,19 +1058,19 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: ;; someUnit, ;; someOtherUnit; ;; // this should be at column 0! - ((delphi-is-use-clause-end token last-token last-colon from-kind) + ((opascal-is-use-clause-end token last-token last-colon from-kind) (throw 'done 0)) ;; A previous terminator means we can stop. If we are on a directive, ;; however, then we are not actually encountering a new statement. ((and last-token - (delphi-is token-kind delphi-previous-terminators) - (not (delphi-is (delphi-token-kind last-token) - delphi-directives))) - (throw 'done (delphi-stmt-line-indent-of last-token 0))) + (opascal-is token-kind opascal-previous-terminators) + (not (opascal-is (opascal-token-kind last-token) + opascal-directives))) + (throw 'done (opascal-stmt-line-indent-of last-token 0))) ;; Ignore whitespace. - ((delphi-is token-kind delphi-whitespace)) + ((opascal-is token-kind opascal-whitespace)) ;; Remember any "of" we encounter, since that affects how we ;; indent to a case statement within a record declaration @@ -1132,61 +1088,61 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: ;; specially. ((eq 'case token-kind) (throw 'done - (if last-colon (delphi-line-indent-of last-colon) - (delphi-line-indent-of token delphi-case-label-indent)))) + (if last-colon (opascal-line-indent-of last-colon) + (opascal-line-indent-of token opascal-case-label-indent)))) ;; If we are in a use clause then commas mark an enclosing rather than ;; a previous statement. - ((delphi-is token-kind delphi-use-clauses) + ((opascal-is token-kind opascal-use-clauses) (throw 'done (if (eq 'comma from-kind) (if last-token ;; Indent to first unit in use clause. - (delphi-indent-of last-token) + (opascal-indent-of last-token) ;; Indent from use clause keyword. - (delphi-line-indent-of token delphi-indent-level)) + (opascal-line-indent-of token opascal-indent-level)) ;; Indent to use clause keyword. - (delphi-line-indent-of token)))) + (opascal-line-indent-of token)))) ;; Assembly sections always indent in from the asm keyword. ((eq token-kind 'asm) - (throw 'done (delphi-stmt-line-indent-of token delphi-indent-level))) + (throw 'done (opascal-stmt-line-indent-of token opascal-indent-level))) ;; An enclosing statement delimits a previous statement. ;; We try to use the existing indent of the previous statement, ;; otherwise we calculate from the enclosing statement. - ((delphi-is token-kind delphi-previous-enclosing-statements) + ((opascal-is token-kind opascal-previous-enclosing-statements) (throw 'done (if last-token ;; Otherwise indent to the last token - (delphi-line-indent-of last-token) + (opascal-line-indent-of last-token) ;; Just indent from the enclosing keyword - (delphi-line-indent-of token delphi-indent-level)))) + (opascal-line-indent-of token opascal-indent-level)))) ;; A class or record declaration also delimits a previous statement. - ((delphi-composite-type-start token last-token) + ((opascal-composite-type-start token last-token) (throw 'done - (if (delphi-is-simple-class-type last-token from-token) + (if (opascal-is-simple-class-type last-token from-token) ;; c = class; or c = class of T; are previous statements. - (delphi-line-indent-of token) + (opascal-line-indent-of token) ;; Otherwise c = class ... or r = record ... are enclosing ;; statements. - (delphi-line-indent-of last-token delphi-indent-level)))) + (opascal-line-indent-of last-token opascal-indent-level)))) ;; We have a definite previous statement delimiter. - ((delphi-is token-kind delphi-previous-statements) - (throw 'done (delphi-stmt-line-indent-of token 0))) + ((opascal-is token-kind opascal-previous-statements) + (throw 'done (opascal-stmt-line-indent-of token 0))) ) - (unless (delphi-is token-kind delphi-whitespace) + (unless (opascal-is token-kind opascal-whitespace) (setq last-token token)) - (setq token (delphi-previous-token token))) + (setq token (opascal-previous-token token))) ;; We ran out of tokens. Indent to column 0. 0))) -(defun delphi-section-indent-of (section-token) +(defun opascal-section-indent-of (section-token) ;; Returns the indentation appropriate for begin/var/const/type/label ;; tokens. - (let* ((token (delphi-previous-token section-token)) + (let* ((token (opascal-previous-token section-token)) (token-kind nil) (last-token nil) (nested-block-count 0) @@ -1194,22 +1150,22 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: (last-terminator nil)) (catch 'done (while token - (setq token-kind (delphi-token-kind token)) + (setq token-kind (opascal-token-kind token)) (cond ;; Always stop at unmatched ( or [. ((eq token-kind 'open-group) - (throw 'done (delphi-open-group-indent token last-token))) + (throw 'done (opascal-open-group-indent token last-token))) ;; Skip over any ()/[] groups. - ((eq 'close-group token-kind) (setq token (delphi-group-start token))) + ((eq 'close-group token-kind) (setq token (opascal-group-start token))) - ((delphi-is token-kind delphi-end-block-statements) - (if (eq 'newline (delphi-token-kind (delphi-previous-token token))) + ((opascal-is token-kind opascal-end-block-statements) + (if (eq 'newline (opascal-token-kind (opascal-previous-token token))) ;; We can stop at an end token that is right up against the ;; margin. (throw 'done 0) ;; Otherwise, skip over any nested blocks. - (setq token (delphi-block-start token) + (setq token (opascal-block-start token) nested-block-count (1+ nested-block-count)))) ;; Remember if we have encountered any forward routine declarations. @@ -1217,7 +1173,7 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: (setq nested-block-count (1+ nested-block-count))) ;; Mark the completion of a nested routine traversal. - ((and (delphi-is token-kind delphi-routine-statements) + ((and (opascal-is token-kind opascal-routine-statements) (> nested-block-count 0)) (setq nested-block-count (1- nested-block-count))) @@ -1225,50 +1181,50 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: ((eq 'semicolon token-kind) (setq last-terminator token)) ;; Remember if we have encountered any expression delimiters. - ((delphi-is token-kind delphi-expr-delimiters) + ((opascal-is token-kind opascal-expr-delimiters) (setq expr-delimited token)) ;; Enclosing body statements are delimiting. We indent the compound ;; bodies specially. ((and (not last-terminator) - (delphi-is token-kind delphi-body-statements)) + (opascal-is token-kind opascal-body-statements)) (throw 'done - (delphi-stmt-line-indent-of token delphi-compound-block-indent))) + (opascal-stmt-line-indent-of token opascal-compound-block-indent))) ;; An enclosing ":" means a label. ((and (eq 'colon token-kind) - (delphi-is (delphi-token-kind section-token) - delphi-block-statements) + (opascal-is (opascal-token-kind section-token) + opascal-block-statements) (not last-terminator) (not expr-delimited) - (not (eq 'equals (delphi-token-kind last-token)))) + (not (eq 'equals (opascal-token-kind last-token)))) (throw 'done - (delphi-stmt-line-indent-of token delphi-indent-level))) + (opascal-stmt-line-indent-of token opascal-indent-level))) ;; Block and mid block tokens are always enclosing - ((delphi-is token-kind delphi-begin-enclosing-tokens) + ((opascal-is token-kind opascal-begin-enclosing-tokens) (throw 'done - (delphi-stmt-line-indent-of token delphi-indent-level))) + (opascal-stmt-line-indent-of token opascal-indent-level))) ;; Declaration sections and routines are delimiters, unless they ;; are part of a nested routine. - ((and (delphi-is token-kind delphi-decl-delimiters) + ((and (opascal-is token-kind opascal-decl-delimiters) (= 0 nested-block-count)) - (throw 'done (delphi-line-indent-of token 0))) + (throw 'done (opascal-line-indent-of token 0))) ;; Unit statements mean we indent right to the left. - ((delphi-is token-kind delphi-unit-statements) (throw 'done 0)) + ((opascal-is token-kind opascal-unit-statements) (throw 'done 0)) ) - (unless (delphi-is token-kind delphi-whitespace) + (unless (opascal-is token-kind opascal-whitespace) (setq last-token token)) - (setq token (delphi-previous-token token))) + (setq token (opascal-previous-token token))) ;; We ran out of tokens. Indent to column 0. 0))) -(defun delphi-enclosing-indent-of (from-token) +(defun opascal-enclosing-indent-of (from-token) ;; Returns the indentation offset from the enclosing statement of the token. - (let ((token (delphi-previous-token from-token)) - (from-kind (delphi-token-kind from-token)) + (let ((token (opascal-previous-token from-token)) + (from-kind (opascal-token-kind from-token)) (token-kind nil) (stmt-start nil) (last-token nil) @@ -1277,51 +1233,51 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: (expr-delimited nil)) (catch 'done (while token - (setq token-kind (delphi-token-kind token)) + (setq token-kind (opascal-token-kind token)) (cond ;; An open ( or [ always is an indent point. ((eq 'open-group token-kind) (throw 'done - (delphi-open-group-indent + (opascal-open-group-indent token last-token - (if (delphi-is from-kind delphi-binary-ops) + (if (opascal-is from-kind opascal-binary-ops) ;; Keep binary operations aligned with the open group. 0 - delphi-indent-level)))) + opascal-indent-level)))) ;; Skip over any ()/[] groups. - ((eq 'close-group token-kind) (setq token (delphi-group-start token))) + ((eq 'close-group token-kind) (setq token (opascal-group-start token))) ;; Skip over any nested blocks. - ((delphi-is token-kind delphi-end-block-statements) - (setq token (delphi-block-start token))) + ((opascal-is token-kind opascal-end-block-statements) + (setq token (opascal-block-start token))) ;; An expression delimiter affects indentation depending on whether ;; the point is before or after it. Remember that we encountered one. ;; Also remember the last encountered token, since if it exists it ;; should be the actual indent point. - ((delphi-is token-kind delphi-expr-delimiters) + ((opascal-is token-kind opascal-expr-delimiters) (setq expr-delimited token stmt-start last-token)) ;; With a non-delimited expression statement we indent after the ;; statement's keyword, unless we are on the delimiter itself. ((and (not expr-delimited) - (delphi-is token-kind delphi-expr-statements)) + (opascal-is token-kind opascal-expr-statements)) (throw 'done - (cond ((delphi-is from-kind delphi-expr-delimiters) + (cond ((opascal-is from-kind opascal-expr-delimiters) ;; We are indenting a delimiter. Indent to the statement. - (delphi-stmt-line-indent-of token 0)) + (opascal-stmt-line-indent-of token 0)) - ((and last-token (delphi-is from-kind delphi-binary-ops)) + ((and last-token (opascal-is from-kind opascal-binary-ops)) ;; Align binary ops with the expression. - (delphi-indent-of last-token)) + (opascal-indent-of last-token)) (last-token ;; Indent in from the expression. - (delphi-indent-of last-token delphi-indent-level)) + (opascal-indent-of last-token opascal-indent-level)) ;; Indent in from the statement's keyword. - ((delphi-indent-of token delphi-indent-level))))) + ((opascal-indent-of token opascal-indent-level))))) ;; A delimited case statement indents the label according to ;; a special rule. @@ -1330,72 +1286,72 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: (if stmt-start ;; We are not actually indenting to the case statement, ;; but are within a label expression. - (delphi-stmt-line-indent-of - stmt-start delphi-indent-level) + (opascal-stmt-line-indent-of + stmt-start opascal-indent-level) ;; Indent from the case keyword. - (delphi-stmt-line-indent-of - token delphi-case-label-indent)))) + (opascal-stmt-line-indent-of + token opascal-case-label-indent)))) ;; Body expression statements are enclosing. Indent from the ;; statement's keyword, unless we have a non-block statement following ;; it. - ((delphi-is token-kind delphi-body-expr-statements) + ((opascal-is token-kind opascal-body-expr-statements) (throw 'done - (delphi-stmt-line-indent-of - (or stmt-start token) delphi-indent-level))) + (opascal-stmt-line-indent-of + (or stmt-start token) opascal-indent-level))) ;; An else statement is enclosing, but it doesn't have an expression. ;; Thus we take into account last-token instead of stmt-start. ((eq 'else token-kind) - (throw 'done (delphi-stmt-line-indent-of - (or last-token token) delphi-indent-level))) + (throw 'done (opascal-stmt-line-indent-of + (or last-token token) opascal-indent-level))) ;; We indent relative to an enclosing declaration section. - ((delphi-is token-kind delphi-decl-sections) - (throw 'done (delphi-indent-of (if last-token last-token token) - delphi-indent-level))) + ((opascal-is token-kind opascal-decl-sections) + (throw 'done (opascal-indent-of (if last-token last-token token) + opascal-indent-level))) ;; In unit sections we indent right to the left. - ((delphi-is token-kind delphi-unit-sections) + ((opascal-is token-kind opascal-unit-sections) (throw 'done ;; Handle specially the case of "interface", which can be used ;; to start either a unit section or an interface definition. - (if (delphi-is token-kind delphi-interface-types) + (if (opascal-is token-kind opascal-interface-types) (progn ;; Find the previous non-whitespace token. (while (progn (setq last-token token - token (delphi-previous-token token) - token-kind (delphi-token-kind token)) + token (opascal-previous-token token) + token-kind (opascal-token-kind token)) (and token - (delphi-is token-kind - delphi-whitespace)))) + (opascal-is token-kind + opascal-whitespace)))) ;; If this token is an equals sign, "interface" is being ;; used to start an interface definition and we should ;; treat it as a composite type; otherwise, we should ;; consider it the start of a unit section. (if (and token (eq token-kind 'equals)) - (delphi-line-indent-of last-token - delphi-indent-level) + (opascal-line-indent-of last-token + opascal-indent-level) 0)) 0))) ;; A previous terminator means we can stop. - ((delphi-is token-kind delphi-previous-terminators) + ((opascal-is token-kind opascal-previous-terminators) (throw 'done (cond ((and last-token (eq 'comma token-kind) - (delphi-is from-kind delphi-binary-ops)) + (opascal-is from-kind opascal-binary-ops)) ;; Align binary ops with the expression. - (delphi-indent-of last-token)) + (opascal-indent-of last-token)) (last-token ;; Indent in from the expression. - (delphi-indent-of last-token delphi-indent-level)) + (opascal-indent-of last-token opascal-indent-level)) ;; No enclosing expression; use the previous statement's ;; indent. - ((delphi-previous-indent-of token))))) + ((opascal-previous-indent-of token))))) ;; A block statement after an expression delimiter has its start ;; column as the expression statement. E.g. @@ -1404,37 +1360,37 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: ;; //... ;; end; ;; Remember it for when we encounter the expression statement start. - ((delphi-is-block-after-expr-statement token) + ((opascal-is-block-after-expr-statement token) (throw 'done - (cond (last-token (delphi-indent-of last-token delphi-indent-level)) + (cond (last-token (opascal-indent-of last-token opascal-indent-level)) - ((+ (delphi-section-indent-of token) delphi-indent-level))))) + ((+ (opascal-section-indent-of token) opascal-indent-level))))) ;; Assembly sections always indent in from the asm keyword. ((eq token-kind 'asm) - (throw 'done (delphi-stmt-line-indent-of token delphi-indent-level))) + (throw 'done (opascal-stmt-line-indent-of token opascal-indent-level))) ;; Stop at an enclosing statement and indent from it. - ((delphi-is token-kind delphi-enclosing-statements) - (throw 'done (delphi-stmt-line-indent-of - (or last-token token) delphi-indent-level))) + ((opascal-is token-kind opascal-enclosing-statements) + (throw 'done (opascal-stmt-line-indent-of + (or last-token token) opascal-indent-level))) ;; A class/record declaration is also enclosing. - ((delphi-composite-type-start token last-token) + ((opascal-composite-type-start token last-token) (throw 'done - (delphi-line-indent-of last-token delphi-indent-level))) + (opascal-line-indent-of last-token opascal-indent-level))) ;; A ":" we indent relative to its line beginning. If we are in a ;; parameter list, then stop also if we hit a ";". ((and (eq token-kind 'colon) (not expr-delimited) - (not (delphi-is from-kind delphi-expr-delimiters)) + (not (opascal-is from-kind opascal-expr-delimiters)) (not equals-encountered) (not (eq from-kind 'equals))) (throw 'done (if last-token - (delphi-indent-of last-token delphi-indent-level) - (delphi-line-indent-of token delphi-indent-level 'semicolon)))) + (opascal-indent-of last-token opascal-indent-level) + (opascal-line-indent-of token opascal-indent-level 'semicolon)))) ;; If the ":" was not processed above and we have token after the "=", ;; then indent from the "=". Ignore :=, however. @@ -1449,88 +1405,88 @@ non-Delphi buffer. Set to nil in a Delphi buffer. To override, just do: ;; + 2; ;; which doesn't look right. ;;;; Align binary ops with the before token. - ;;((delphi-is from-kind delphi-binary-ops) - ;;(throw 'done (delphi-indent-of before-equals 0))) + ;;((opascal-is from-kind opascal-binary-ops) + ;;(throw 'done (opascal-indent-of before-equals 0))) ;; Assignments (:=) we skip over to get a normal indent. - ((eq (delphi-token-kind last-token) 'equals)) + ((eq (opascal-token-kind last-token) 'equals)) ;; Otherwise indent in from the equals. ((throw 'done - (delphi-indent-of before-equals delphi-indent-level))))) + (opascal-indent-of before-equals opascal-indent-level))))) ;; Remember any "=" we encounter if it has not already been processed. ((eq token-kind 'equals) (setq equals-encountered token before-equals last-token)) ) - (unless (delphi-is token-kind delphi-whitespace) + (unless (opascal-is token-kind opascal-whitespace) (setq last-token token)) - (setq token (delphi-previous-token token))) + (setq token (opascal-previous-token token))) ;; We ran out of tokens. Indent to column 0. 0))) -(defun delphi-corrected-indentation () +(defun opascal-corrected-indentation () ;; Returns the corrected indentation for the current line. - (delphi-save-excursion - (delphi-progress-start) + (opascal-save-excursion + (opascal-progress-start) ;; Move to the first token on the line. (beginning-of-line) - (skip-chars-forward delphi-space-chars) - (let* ((token (delphi-current-token)) - (token-kind (delphi-token-kind token)) + (skip-chars-forward opascal-space-chars) + (let* ((token (opascal-current-token)) + (token-kind (opascal-token-kind token)) (indent (cond ((eq 'close-group token-kind) ;; Indent to the matching start ( or [. - (delphi-indent-of (delphi-group-start token))) + (opascal-indent-of (opascal-group-start token))) - ((delphi-is token-kind delphi-unit-statements) 0) + ((opascal-is token-kind opascal-unit-statements) 0) - ((delphi-is token-kind delphi-comments) + ((opascal-is token-kind opascal-comments) ;; In a comment. - (delphi-comment-indent-of token)) + (opascal-comment-indent-of token)) - ((delphi-is token-kind delphi-decl-matchers) + ((opascal-is token-kind opascal-decl-matchers) ;; Use a previous section/routine's indent. - (delphi-section-indent-of token)) + (opascal-section-indent-of token)) - ((delphi-is token-kind delphi-match-block-statements) + ((opascal-is token-kind opascal-match-block-statements) ;; Use the block's indentation. (let ((block-start - (delphi-block-start token 'stop-on-class))) + (opascal-block-start token 'stop-on-class))) (cond ;; When trailing a body statement, indent to ;; the statement's keyword. - ((delphi-is-block-after-expr-statement block-start) - (delphi-section-indent-of block-start)) + ((opascal-is-block-after-expr-statement block-start) + (opascal-section-indent-of block-start)) ;; Otherwise just indent to the block start. - ((delphi-stmt-line-indent-of block-start 0))))) + ((opascal-stmt-line-indent-of block-start 0))))) ((eq 'else token-kind) ;; Find the start of the if or case statement. - (delphi-stmt-line-indent-of (delphi-else-start token) 0)) + (opascal-stmt-line-indent-of (opascal-else-start token) 0)) ;; Otherwise indent in from enclosing statement. - ((delphi-enclosing-indent-of - (if token token (delphi-token-at (1- (point))))))))) - (delphi-progress-done) + ((opascal-enclosing-indent-of + (if token token (opascal-token-at (1- (point))))))))) + (opascal-progress-done) indent))) -(defun delphi-indent-line () +(defun opascal-indent-line () "Indent the current line according to the current language construct. If before the indent, the point is moved to the indent." (interactive) - (delphi-save-match-data + (save-match-data (let ((marked-point (point-marker)) ; Maintain our position reliably. (line-start nil) (old-indent 0) (new-indent 0)) (beginning-of-line) (setq line-start (point)) - (skip-chars-forward delphi-space-chars) + (skip-chars-forward opascal-space-chars) (setq old-indent (current-column)) - (setq new-indent (delphi-corrected-indentation)) + (setq new-indent (opascal-corrected-indentation)) (if (< marked-point (point)) ;; If before the indent column, then move to it. (set-marker marked-point (point))) @@ -1542,17 +1498,17 @@ If before the indent, the point is moved to the indent." (goto-char marked-point) (set-marker marked-point nil)))) -(defvar delphi-mode-abbrev-table nil - "Abbrev table in use in Delphi mode buffers.") -(define-abbrev-table 'delphi-mode-abbrev-table ()) +(defvar opascal-mode-abbrev-table nil + "Abbrev table in use in OPascal mode buffers.") +(define-abbrev-table 'opascal-mode-abbrev-table ()) -(defmacro delphi-ensure-buffer (buffer-var buffer-name) +(defmacro opascal-ensure-buffer (buffer-var buffer-name) ;; Ensures there exists a buffer of the specified name in the specified ;; variable. `(when (not (buffer-live-p ,buffer-var)) (setq ,buffer-var (get-buffer-create ,buffer-name)))) -(defun delphi-log-msg (to-buffer the-msg) +(defun opascal-log-msg (to-buffer the-msg) ;; Writes a message to the end of the specified buffer. (with-current-buffer to-buffer (save-selected-window @@ -1563,176 +1519,160 @@ If before the indent, the point is moved to the indent." ;; Debugging helpers: -(defvar delphi-debug-buffer nil - "Buffer to write Delphi mode debug messages to. Created on demand.") +(defvar opascal-debug-buffer nil + "Buffer to write OPascal mode debug messages to. Created on demand.") -(defun delphi-debug-log (format-string &rest args) +(defun opascal-debug-log (format-string &rest args) ;; Writes a message to the log buffer. - (when delphi-debug - (delphi-ensure-buffer delphi-debug-buffer "*Delphi Debug Log*") - (delphi-log-msg delphi-debug-buffer + (when opascal-debug + (opascal-ensure-buffer opascal-debug-buffer "*OPascal Debug Log*") + (opascal-log-msg opascal-debug-buffer (concat (format-time-string "%H:%M:%S " (current-time)) (apply #'format (cons format-string args)) "\n")))) -(defun delphi-debug-token-string (token) - (let* ((image (delphi-token-string token)) +(defun opascal-debug-token-string (token) + (let* ((image (opascal-token-string token)) (has-newline (string-match "^\\([^\n]*\\)\n\\(.+\\)?$" image))) (when has-newline (setq image (concat (match-string 1 image) (if (match-beginning 2) "...")))) image)) -(defun delphi-debug-show-current-token () +(defun opascal-debug-show-current-token () (interactive) - (let ((token (delphi-current-token))) - (delphi-debug-log "Token: %S %S" token (delphi-debug-token-string token)))) + (let ((token (opascal-current-token))) + (opascal-debug-log "Token: %S %S" token (opascal-debug-token-string token)))) -(defun delphi-debug-goto-point (p) +(defun opascal-debug-goto-point (p) (interactive "NGoto char: ") (goto-char p)) -(defun delphi-debug-goto-next-token () +(defun opascal-debug-goto-next-token () (interactive) - (goto-char (delphi-token-start (delphi-next-token (delphi-current-token))))) + (goto-char (opascal-token-start (opascal-next-token (opascal-current-token))))) -(defun delphi-debug-goto-previous-token () +(defun opascal-debug-goto-previous-token () (interactive) (goto-char - (delphi-token-start (delphi-previous-token (delphi-current-token))))) + (opascal-token-start (opascal-previous-token (opascal-current-token))))) -(defun delphi-debug-show-current-string (from to) +(defun opascal-debug-show-current-string (from to) (interactive "r") - (delphi-debug-log "String: %S" (buffer-substring from to))) + (opascal-debug-log "String: %S" (buffer-substring from to))) -(defun delphi-debug-show-is-stable () +(defun opascal-debug-show-is-stable () (interactive) - (delphi-debug-log "stable: %S prev: %S next: %S" - (delphi-is-stable-literal (point)) - (delphi-literal-kind (1- (point))) - (delphi-literal-kind (point)))) + (opascal-debug-log "stable: %S prev: %S next: %S" + (opascal-is-stable-literal (point)) + (opascal-literal-kind (1- (point))) + (opascal-literal-kind (point)))) -(defun delphi-debug-unparse-buffer () +(defun opascal-debug-unparse-buffer () (interactive) - (delphi-set-text-properties (point-min) (point-max) nil)) + (opascal-set-text-properties (point-min) (point-max) nil)) -(defun delphi-debug-parse-region (from to) +(defun opascal-debug-parse-region (from to) (interactive "r") - (let ((delphi-verbose t)) - (delphi-save-excursion - (delphi-progress-start) - (delphi-parse-region from to) - (delphi-progress-done "Parsing done")))) + (let ((opascal-verbose t)) + (opascal-save-excursion + (opascal-progress-start) + (opascal-parse-region from to) + (opascal-progress-done "Parsing done")))) -(defun delphi-debug-parse-window () +(defun opascal-debug-parse-window () (interactive) - (delphi-debug-parse-region (window-start) (window-end))) + (opascal-debug-parse-region (window-start) (window-end))) -(defun delphi-debug-parse-buffer () +(defun opascal-debug-parse-buffer () (interactive) - (delphi-debug-parse-region (point-min) (point-max))) + (opascal-debug-parse-region (point-min) (point-max))) -(defun delphi-debug-fontify-window () +(defun opascal-debug-fontify-window () (interactive) - (delphi-fontify-region (window-start) (window-end) t)) + (opascal-fontify-region (window-start) (window-end) t)) -(defun delphi-debug-fontify-buffer () +(defun opascal-debug-fontify-buffer () (interactive) - (delphi-fontify-region (point-min) (point-max) t)) + (opascal-fontify-region (point-min) (point-max) t)) -(defun delphi-debug-tokenize-region (from to) +(defun opascal-debug-tokenize-region (from to) (interactive) - (delphi-save-excursion - (delphi-progress-start) + (opascal-save-excursion + (opascal-progress-start) (goto-char from) (while (< (point) to) - (goto-char (delphi-token-end (delphi-current-token))) - (delphi-step-progress (point) "Tokenizing" delphi-scanning-progress-step)) - (delphi-progress-done "Tokenizing done"))) + (goto-char (opascal-token-end (opascal-current-token))) + (opascal-step-progress (point) "Tokenizing" opascal-scanning-progress-step)) + (opascal-progress-done "Tokenizing done"))) -(defun delphi-debug-tokenize-buffer () +(defun opascal-debug-tokenize-buffer () (interactive) - (delphi-debug-tokenize-region (point-min) (point-max))) + (opascal-debug-tokenize-region (point-min) (point-max))) -(defun delphi-debug-tokenize-window () +(defun opascal-debug-tokenize-window () (interactive) - (delphi-debug-tokenize-region (window-start) (window-end))) + (opascal-debug-tokenize-region (window-start) (window-end))) -(defun delphi-newline () - "Terminate the current line with a newline and indent the next, unless -`delphi-newline-always-indents' is nil, in which case no reindenting occurs." - (interactive) - ;; Remove trailing spaces - (delete-horizontal-space) - (newline) - (when delphi-newline-always-indents - ;; Indent both the (now) previous and current line first. - (save-excursion - (forward-line -1) - (delphi-indent-line)) - (delphi-indent-line))) - - -(defun delphi-tab () + +(defun opascal-tab () "Indent the region, when Transient Mark mode is enabled and the region is active. Otherwise, indent the current line or insert a TAB, depending on the -value of `delphi-tab-always-indents' and the current line position." +value of `opascal-tab-always-indents' and the current line position." (interactive) (cond ((use-region-p) ;; If Transient Mark mode is enabled and the region is active, indent ;; the entire region. (indent-region (region-beginning) (region-end))) - ((or delphi-tab-always-indents - (save-excursion (skip-chars-backward delphi-space-chars) (bolp))) + ((or opascal-tab-always-indents + (save-excursion (skip-chars-backward opascal-space-chars) (bolp))) ;; Otherwise, if we are configured always to indent (regardless of the ;; point's position in the line) or we are before the first non-space ;; character on the line, indent the line. - (delphi-indent-line)) + (opascal-indent-line)) (t ;; Otherwise, insert a tab character. (insert "\t")))) -(defun delphi-is-directory (path) +(defun opascal-is-directory (path) ;; True if the specified path is an existing directory. (let ((attributes (file-attributes path))) (and attributes (car attributes)))) -(defun delphi-is-file (path) +(defun opascal-is-file (path) ;; True if the specified file exists as a file. (let ((attributes (file-attributes path))) (and attributes (null (car attributes))))) -(defun delphi-search-directory (unit dir &optional recurse) +(defun opascal-search-directory (unit dir &optional recurse) ;; Searches for the unit in the specified directory. If recurse is true, then ;; the directory is recursively searched. File name comparison is done in a ;; case insensitive manner. - (when (delphi-is-directory dir) + (when (opascal-is-directory dir) (let ((files (directory-files dir)) (unit-file (downcase unit))) (catch 'done ;; Search for the file. - (mapc #'(lambda (file) - (let ((path (concat dir "/" file))) - (if (and (string= unit-file (downcase file)) - (delphi-is-file path)) - (throw 'done path)))) - files) + (dolist (file files) + (let ((path (concat dir "/" file))) + (if (and (string= unit-file (downcase file)) + (opascal-is-file path)) + (throw 'done path)))) ;; Not found. Search subdirectories. (when recurse - (mapc #'(lambda (subdir) - (unless (member subdir '("." "..")) - (let ((path (delphi-search-directory - unit (concat dir "/" subdir) recurse))) - (if path (throw 'done path))))) - files)) + (dolist (subdir files) + (unless (member subdir '("." "..")) + (let ((path (opascal-search-directory + unit (concat dir "/" subdir) recurse))) + (if path (throw 'done path)))))) ;; Not found. nil)))) -(defun delphi-find-unit-in-directory (unit dir) +(defun opascal-find-unit-in-directory (unit dir) ;; Searches for the unit in the specified directory. If the directory ends ;; in \"...\", then it is recursively searched. (let ((dir-name dir) @@ -1744,90 +1684,88 @@ value of `delphi-tab-always-indents' and the current line position." ;; Ensure the trailing slash is removed. (if (string-match "^\\(.+\\)[\\\\/]$" dir-name) (setq dir-name (match-string 1 dir-name))) - (delphi-search-directory unit dir-name recurse))) + (opascal-search-directory unit dir-name recurse))) -(defun delphi-find-unit-file (unit) - ;; Finds the specified delphi source file according to `delphi-search-path'. +(defun opascal-find-unit-file (unit) + ;; Finds the specified opascal source file according to `opascal-search-path'. ;; If found, the full path is returned, otherwise nil is returned. (catch 'done - (cond ((null delphi-search-path) - (delphi-find-unit-in-directory unit ".")) + (cond ((null opascal-search-path) + (opascal-find-unit-in-directory unit ".")) - ((stringp delphi-search-path) - (delphi-find-unit-in-directory unit delphi-search-path)) + ((stringp opascal-search-path) + (opascal-find-unit-in-directory unit opascal-search-path)) - ((mapc - #'(lambda (dir) - (let ((file (delphi-find-unit-in-directory unit dir))) - (if file (throw 'done file)))) - delphi-search-path))) + ((dolist (dir opascal-search-path) + (let ((file (opascal-find-unit-in-directory unit dir))) + (if file (throw 'done file)))))) nil)) -(defun delphi-find-unit (unit) - "Find the specified Delphi source file according to `delphi-search-path'. +(defun opascal-find-unit (unit) + "Find the specified OPascal source file according to `opascal-search-path'. If no extension is specified, .pas is assumed. Creates a buffer for the unit." - (interactive "sDelphi unit name: ") + (interactive "sOPascal unit name: ") (let* ((unit-file (if (string-match "^\\(.*\\)\\.[a-z]+$" unit) unit (concat unit ".pas"))) - (file (delphi-find-unit-file unit-file))) + (file (opascal-find-unit-file unit-file))) (if (null file) (error "unit not found: %s" unit-file) (find-file file) - (if (not (derived-mode-p 'delphi-mode)) - (delphi-mode))) + (if (not (derived-mode-p 'opascal-mode)) + (opascal-mode))) file)) -(defun delphi-find-current-def () +(defun opascal-find-current-def () "Find the definition of the identifier under the current point." (interactive) - (error "delphi-find-current-def: not implemented yet")) + (error "opascal-find-current-def: not implemented yet")) -(defun delphi-find-current-xdef () +(defun opascal-find-current-xdef () "Find the definition of the identifier under the current point, searching in external units if necessary (as listed in the current unit's use clause). The set of directories to search for a unit is specified by the global variable -`delphi-search-path'." +`opascal-search-path'." (interactive) - (error "delphi-find-current-xdef: not implemented yet")) + (error "opascal-find-current-xdef: not implemented yet")) -(defun delphi-find-current-body () +(defun opascal-find-current-body () "Find the body of the identifier under the current point, assuming it is a routine." (interactive) - (error "delphi-find-current-body: not implemented yet")) + (error "opascal-find-current-body: not implemented yet")) -(defun delphi-fill-comment () +(defun opascal-fill-comment () "Fill the text of the current comment, according to `fill-column'. An error is raised if not in a comment." (interactive) (save-excursion (save-restriction - (let* ((comment (delphi-current-token)) - (comment-kind (delphi-token-kind comment))) - (if (not (delphi-is comment-kind delphi-comments)) + (let* ((comment (opascal-current-token)) + (comment-kind (opascal-token-kind comment))) + (if (not (opascal-is comment-kind opascal-comments)) (error "Not in a comment") - (let* ((start-comment (delphi-comment-block-start comment)) - (end-comment (delphi-comment-block-end comment)) - (comment-start (delphi-token-start start-comment)) - (comment-end (delphi-token-end end-comment)) - (content-start (delphi-comment-content-start start-comment)) - (content-indent (delphi-column-of content-start)) + (let* ((start-comment (opascal-comment-block-start comment)) + (end-comment (opascal-comment-block-end comment)) + (comment-start (opascal-token-start start-comment)) + (comment-end (opascal-token-end end-comment)) + (content-start (opascal-comment-content-start start-comment)) + (content-indent (opascal-column-of content-start)) (content-prefix (make-string content-indent ?\s)) - (content-prefix-re delphi-leading-spaces-re) + (content-prefix-re opascal-leading-spaces-re) (p nil) (marked-point (point-marker))) ; Maintain our position reliably. (when (eq 'comment-single-line comment-kind) ;; // style comments need more work. (setq content-prefix - (let ((comment-indent (delphi-column-of comment-start))) + (let ((comment-indent (opascal-column-of comment-start))) (concat (make-string comment-indent ?\s) "//" (make-string (- content-indent comment-indent 2) ?\s))) - content-prefix-re (concat delphi-leading-spaces-re + content-prefix-re (concat opascal-leading-spaces-re "//" - delphi-spaces-re) - comment-end (if (delphi-is-literal-end comment-end) + opascal-spaces-re) + comment-end (if (opascal-is-literal-end comment-end) ;; Don't include the trailing newline. (1- comment-end) comment-end))) @@ -1879,155 +1817,144 @@ An error is raised if not in a comment." (set-marker marked-point nil) ;; React to the entire fill change as a whole. - (delphi-progress-start) - (delphi-parse-region comment-start comment-end) - (delphi-progress-done))))))) + (opascal-progress-start) + (opascal-parse-region comment-start comment-end) + (opascal-progress-done))))))) -(defun delphi-new-comment-line () +(defun opascal-new-comment-line () "If in a // comment, do a newline, indented such that one is still in the comment block. If not in a // comment, just does a normal newline." (interactive) - (let ((comment (delphi-current-token))) - (if (not (eq 'comment-single-line (delphi-token-kind comment))) + (let ((comment (opascal-current-token))) + (if (not (eq 'comment-single-line (opascal-token-kind comment))) ;; Not in a // comment. Just do the normal newline. - (delphi-newline) - (let* ((start-comment (delphi-comment-block-start comment)) - (comment-start (delphi-token-start start-comment)) - (content-start (delphi-comment-content-start start-comment)) + (newline) + (let* ((start-comment (opascal-comment-block-start comment)) + (comment-start (opascal-token-start start-comment)) + (content-start (opascal-comment-content-start start-comment)) (prefix - (concat (make-string (delphi-column-of comment-start) ?\s) "//" + (concat (make-string (opascal-column-of comment-start) ?\s) "//" (make-string (- content-start comment-start 2) ?\s)))) (delete-horizontal-space) - (newline) - (insert prefix))))) + (insert "\n" prefix))))) -(defun delphi-match-token (token limit) +(defun opascal-match-token (token limit) ;; Sets the match region used by (match-string 0) and friends to the token's ;; region. Sets the current point to the end of the token (or limit). (set-match-data nil) (if token - (let ((end (min (delphi-token-end token) limit))) - (set-match-data (list (delphi-token-start token) end)) + (let ((end (min (opascal-token-end token) limit))) + (set-match-data (list (opascal-token-start token) end)) (goto-char end) token))) -(defconst delphi-font-lock-defaults +(defconst opascal-font-lock-defaults '(nil ; We have our own fontify routine, so keywords don't apply. t ; Syntactic fontification doesn't apply. nil ; Don't care about case since we don't use regexps to find tokens. nil ; Syntax alists don't apply. nil ; Syntax begin movement doesn't apply - (font-lock-fontify-region-function . delphi-fontify-region) - (font-lock-verbose . delphi-fontifying-progress-step)) - "Delphi mode font-lock defaults. Syntactic fontification is ignored.") + (font-lock-fontify-region-function . opascal-fontify-region) + (font-lock-verbose . opascal-fontifying-progress-step)) + "OPascal mode font-lock defaults. Syntactic fontification is ignored.") -(defvar delphi-debug-mode-map +(defvar opascal-debug-mode-map (let ((kmap (make-sparse-keymap))) - (mapc #'(lambda (binding) (define-key kmap (car binding) (cadr binding))) - '(("n" delphi-debug-goto-next-token) - ("p" delphi-debug-goto-previous-token) - ("t" delphi-debug-show-current-token) - ("T" delphi-debug-tokenize-buffer) - ("W" delphi-debug-tokenize-window) - ("g" delphi-debug-goto-point) - ("s" delphi-debug-show-current-string) - ("a" delphi-debug-parse-buffer) - ("w" delphi-debug-parse-window) - ("f" delphi-debug-fontify-window) - ("F" delphi-debug-fontify-buffer) - ("r" delphi-debug-parse-region) - ("c" delphi-debug-unparse-buffer) - ("x" delphi-debug-show-is-stable) - )) + (dolist (binding '(("n" opascal-debug-goto-next-token) + ("p" opascal-debug-goto-previous-token) + ("t" opascal-debug-show-current-token) + ("T" opascal-debug-tokenize-buffer) + ("W" opascal-debug-tokenize-window) + ("g" opascal-debug-goto-point) + ("s" opascal-debug-show-current-string) + ("a" opascal-debug-parse-buffer) + ("w" opascal-debug-parse-window) + ("f" opascal-debug-fontify-window) + ("F" opascal-debug-fontify-buffer) + ("r" opascal-debug-parse-region) + ("c" opascal-debug-unparse-buffer) + ("x" opascal-debug-show-is-stable))) + (define-key kmap (car binding) (cadr binding))) kmap) - "Keystrokes for Delphi mode debug commands.") + "Keystrokes for OPascal mode debug commands.") -(defvar delphi-mode-map +(defvar opascal-mode-map (let ((kmap (make-sparse-keymap))) - (mapc #'(lambda (binding) (define-key kmap (car binding) (cadr binding))) - (list '("\r" delphi-newline) - '("\t" delphi-tab) - '("\177" backward-delete-char-untabify) -;; '("\C-cd" delphi-find-current-def) -;; '("\C-cx" delphi-find-current-xdef) -;; '("\C-cb" delphi-find-current-body) - '("\C-cu" delphi-find-unit) - '("\M-q" delphi-fill-comment) - '("\M-j" delphi-new-comment-line) - ;; Debug bindings: - (list "\C-c\C-d" delphi-debug-mode-map))) + (dolist (binding + (list ;; '("\C-cd" opascal-find-current-def) + ;; '("\C-cx" opascal-find-current-xdef) + ;; '("\C-cb" opascal-find-current-body) + '("\C-cu" opascal-find-unit) + '("\M-q" opascal-fill-comment) + '("\M-j" opascal-new-comment-line) + ;; Debug bindings: + (list "\C-c\C-d" opascal-debug-mode-map))) + (define-key kmap (car binding) (cadr binding))) kmap) - "Keymap used in Delphi mode.") + "Keymap used in OPascal mode.") +(define-obsolete-variable-alias 'delphi-mode-hook 'opascal-mode-hook "24.4") ;;;###autoload -(define-derived-mode delphi-mode prog-mode "Delphi" - "Major mode for editing Delphi code. \\<delphi-mode-map> -\\[delphi-tab]\t- Indents the current line (or region, if Transient Mark mode -\t is enabled and the region is active) of Delphi code. -\\[delphi-find-unit]\t- Search for a Delphi source file. -\\[delphi-fill-comment]\t- Fill the current comment. -\\[delphi-new-comment-line]\t- If in a // comment, do a new comment line. +(define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4") +;;;###autoload +(define-derived-mode opascal-mode prog-mode "OPascal" + "Major mode for editing OPascal code. \\<opascal-mode-map> +\\[opascal-find-unit]\t- Search for a OPascal source file. +\\[opascal-fill-comment]\t- Fill the current comment. +\\[opascal-new-comment-line]\t- If in a // comment, do a new comment line. \\[indent-region] also works for indenting a whole region. Customization: - `delphi-indent-level' (default 3) - Indentation of Delphi statements with respect to containing block. - `delphi-compound-block-indent' (default 0) + `opascal-indent-level' (default 3) + Indentation of OPascal statements with respect to containing block. + `opascal-compound-block-indent' (default 0) Extra indentation for blocks in compound statements. - `delphi-case-label-indent' (default 0) + `opascal-case-label-indent' (default 0) Extra indentation for case statement labels. - `delphi-tab-always-indents' (default t) - Non-nil means TAB in Delphi mode should always reindent the current line, + `opascal-tab-always-indents' (default `tab-always-indents') + Non-nil means TAB in OPascal mode should always reindent the current line, regardless of where in the line point is when the TAB command is used. - `delphi-newline-always-indents' (default t) - Non-nil means NEWLINE in Delphi mode should always reindent the current - line, insert a blank line and move to the default indent column of the - blank line. - `delphi-search-path' (default .) + `opascal-search-path' (default .) Directories to search when finding external units. - `delphi-verbose' (default nil) - If true then Delphi token processing progress is reported to the user. + `opascal-verbose' (default nil) + If true then OPascal token processing progress is reported to the user. Coloring: - `delphi-comment-face' (default font-lock-comment-face) - Face used to color Delphi comments. - `delphi-string-face' (default font-lock-string-face) - Face used to color Delphi strings. - `delphi-keyword-face' (default font-lock-keyword-face) - Face used to color Delphi keywords. - `delphi-other-face' (default nil) + `opascal-comment-face' (default font-lock-comment-face) + Face used to color OPascal comments. + `opascal-string-face' (default font-lock-string-face) + Face used to color OPascal strings. + `opascal-keyword-face' (default font-lock-keyword-face) + Face used to color OPascal keywords. + `opascal-other-face' (default nil) Face used to color everything else. -Turning on Delphi mode calls the value of the variable `delphi-mode-hook' +Turning on OPascal mode calls the value of the variable `opascal-mode-hook' with no args, if that value is non-nil." ;; Buffer locals: - (mapc #'(lambda (var) - (let ((var-symb (car var)) - (var-val (cadr var))) - (set (make-local-variable var-symb) var-val))) - (list '(indent-line-function delphi-indent-line) - '(comment-indent-function delphi-indent-line) - '(case-fold-search t) - '(delphi-progress-last-reported-point nil) - '(delphi-ignore-changes nil) - (list 'font-lock-defaults delphi-font-lock-defaults))) - + (setq-local indent-line-function #'opascal-indent-line) + (setq-local comment-indent-function #'opascal-indent-line) + (setq-local case-fold-search t) + (setq-local opascal-progress-last-reported-point nil) + (setq-local opascal--ignore-changes nil) + (setq-local font-lock-defaults opascal-font-lock-defaults) + (setq-local tab-always-indent opascal-tab-always-indents) + + ;; FIXME: Use syntax-propertize-function to tokenize, maybe? + ;; We need to keep track of changes to the buffer to determine if we need ;; to retokenize changed text. - (add-hook 'after-change-functions 'delphi-after-change nil t) - - (widen) - - (delphi-save-excursion - (let ((delphi-verbose t)) - (delphi-progress-start) - (delphi-parse-region (point-min) (point-max)) - (delphi-progress-done))) + (add-hook 'after-change-functions #'opascal-after-change nil t) - (run-mode-hooks 'delphi-mode-hook)) + (opascal-save-excursion + (let ((opascal-verbose t)) + (opascal-progress-start) + (opascal-parse-region (point-min) (point-max)) + (opascal-progress-done)))) -;;; delphi.el ends here +(provide 'opascal) +;;; opascal.el ends here diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el index de8a4355cd3..829ecda5150 100644 --- a/lisp/progmodes/pascal.el +++ b/lisp/progmodes/pascal.el @@ -138,6 +138,9 @@ ;; find about the syntax of Pascal's comments said that (* ... } is ;; a valid comment, just as { ... *) or (* ... *) or { ... }. (modify-syntax-entry ?* ". 23" st) + ;; Allow //...\n comments as accepted by Free Pascal (bug#13585). + (modify-syntax-entry ?/ ". 12c" st) + (modify-syntax-entry ?\n "> c" st) (modify-syntax-entry ?{ "<" st) (modify-syntax-entry ?} ">" st) (modify-syntax-entry ?+ "." st) diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el index 460dcd69447..85e4172c8fe 100644 --- a/lisp/progmodes/prolog.el +++ b/lisp/progmodes/prolog.el @@ -1,9 +1,9 @@ -;;; prolog.el --- major mode for editing and running Prolog (and Mercury) code +;;; prolog.el --- major mode for Prolog (and Mercury) -*- coding: utf-8 -*- ;; Copyright (C) 1986-1987, 1997-1999, 2002-2003, 2011-2013 Free ;; Software Foundation, Inc. -;; Authors: Emil Åström <emil_astrom(at)hotmail(dot)com> +;; Authors: Emil Ã…ström <emil_astrom(at)hotmail(dot)com> ;; Milan Zamazal <pdm(at)freesoft(dot)cz> ;; Stefan Bruda <stefan(at)bruda(dot)ca> ;; * See below for more details @@ -31,7 +31,7 @@ ;; Original author: Masanobu UMEDA <umerin(at)mse(dot)kyutech(dot)ac(dot)jp> ;; Parts of this file was taken from a modified version of the original ;; by Johan Andersson, Peter Olin, Mats Carlsson, Johan Bevemyr, Stefan -;; Andersson, and Per Danielsson (all SICS people), and Henrik Båkman +;; Andersson, and Per Danielsson (all SICS people), and Henrik BÃ¥kman ;; at Uppsala University, Sweden. ;; ;; Some ideas and also a few lines of code have been borrowed (not stolen ;-) diff --git a/lisp/progmodes/ps-mode.el b/lisp/progmodes/ps-mode.el index 184de99302e..0f994a8422b 100644 --- a/lisp/progmodes/ps-mode.el +++ b/lisp/progmodes/ps-mode.el @@ -5,7 +5,7 @@ ;; Author: Peter Kleiweg <p.c.j.kleiweg@rug.nl> ;; Maintainer: Peter Kleiweg <p.c.j.kleiweg@rug.nl> ;; Created: 20 Aug 1997 -;; Version: 1.1h +;; Version: 1.1i ;; Keywords: PostScript, languages ;; Yoni Rabkin <yoni@rabkins.net> contacted the maintainer of this @@ -35,8 +35,9 @@ ;;; Code: -(defconst ps-mode-version "1.1h, 16 Jun 2005") -(defconst ps-mode-maintainer-address "Peter Kleiweg <p.c.j.kleiweg@rug.nl>") +(defconst ps-mode-version "1.1i, 17 May 2008") +(defconst ps-mode-maintainer-address + "Peter Kleiweg <p.c.j.kleiweg@rug.nl>, bug-gnu-emacs@gnu.org") (require 'comint) (require 'easymenu) @@ -805,7 +806,7 @@ Only one `%' is removed, and it has to be in the first column." (while (re-search-forward "[\200-\377]" (marker-position endm) t) (setq i (1+ i)) (backward-char) - (insert (format "\\%03o" (string-to-char (buffer-substring (point) (1+ (point)))))) + (insert (format "\\%03o" (string-to-char (string-make-unibyte (buffer-substring (point) (1+ (point))))))) (delete-char 1)) (message "%d change%s made" i (if (= i 1) "" "s")) (set-marker endm nil))))) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 0e5f4c82090..f0f67d01845 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -54,8 +54,13 @@ ;; `python-nav-beginning-of-statement', `python-nav-end-of-statement', ;; `python-nav-beginning-of-block' and `python-nav-end-of-block' are ;; included but no bound to any key. At last but not least the -;; specialized `python-nav-forward-sexp' allows easy -;; navigation between code blocks. +;; specialized `python-nav-forward-sexp' allows easy navigation +;; between code blocks. If you prefer `cc-mode'-like `forward-sexp' +;; movement, setting `forward-sexp-function' to nil is enough, You can +;; do that using the `python-mode-hook': + +;; (add-hook 'python-mode-hook +;; (lambda () (setq forward-sexp-function nil))) ;; Shell interaction: is provided and allows you to execute easily any ;; block of code of your current buffer in an inferior Python process. @@ -155,7 +160,10 @@ ;; dabbrev. If you have `dabbrev-mode' activated and ;; `python-skeleton-autoinsert' is set to t, then whenever you type ;; the name of any of those defined and hit SPC, they will be -;; automatically expanded. +;; automatically expanded. As an alternative you can use the defined +;; skeleton commands: `python-skeleton-class', `python-skeleton-def' +;; `python-skeleton-for', `python-skeleton-if', `python-skeleton-try' +;; and `python-skeleton-while'. ;; FFAP: You can find the filename for a given module when using ffap ;; out of the box. This feature needs an inferior python shell @@ -700,10 +708,9 @@ START is the buffer position where the sexp starts." ;; After backslash ((setq start (when (not (or (python-syntax-context 'string ppss) (python-syntax-context 'comment ppss))) - (let ((line-beg-pos (line-beginning-position))) - (when (python-info-line-ends-backslash-p - (1- line-beg-pos)) - (- line-beg-pos 2))))) + (let ((line-beg-pos (line-number-at-pos))) + (python-info-line-ends-backslash-p + (1- line-beg-pos))))) 'after-backslash) ;; After beginning of block ((setq start (save-excursion @@ -1346,13 +1353,10 @@ backwards." 're-search-backward)) (context-type (python-syntax-context-type))) (cond - ((eq context-type 'string) + ((memq context-type '(string comment)) ;; Inside of a string, get out of it. - (while (and (funcall re-search-fn "[\"']" nil t) - (python-syntax-context 'string)))) - ((eq context-type 'comment) - ;; Inside of a comment, just move forward. - (python-util-forward-comment dir)) + (let ((forward-sexp-function)) + (forward-sexp dir))) ((or (eq context-type 'paren) (and forward-p (looking-at (python-rx open-paren))) (and (not forward-p) @@ -1375,16 +1379,16 @@ backwards." (save-excursion (python-nav-lisp-forward-sexp-safe dir) (point))) - (next-sexp-context - (save-excursion - (goto-char next-sexp-pos) - (cond - ((python-info-beginning-of-block-p) 'block-start) - ((python-info-end-of-block-p) 'block-end) - ((python-info-beginning-of-statement-p) 'statement-start) - ((python-info-end-of-statement-p) 'statement-end) - ((python-info-statement-starts-block-p) 'starts-block) - ((python-info-statement-ends-block-p) 'ends-block))))) + (next-sexp-context + (save-excursion + (goto-char next-sexp-pos) + (cond + ((python-info-beginning-of-block-p) 'block-start) + ((python-info-end-of-block-p) 'block-end) + ((python-info-beginning-of-statement-p) 'statement-start) + ((python-info-end-of-statement-p) 'statement-end) + ((python-info-statement-starts-block-p) 'starts-block) + ((python-info-statement-ends-block-p) 'ends-block))))) (if forward-p (cond ((and (not (eobp)) (python-info-current-line-empty-p)) @@ -1408,8 +1412,8 @@ backwards." (t (goto-char next-sexp-pos))) (cond ((and (not (bobp)) (python-info-current-line-empty-p)) - (python-util-forward-comment dir) - (python-nav--forward-sexp dir)) + (python-util-forward-comment dir) + (python-nav--forward-sexp dir)) ((eq context 'block-end) (python-nav-beginning-of-block)) ((eq context 'statement-end) @@ -1661,7 +1665,11 @@ uniqueness for different types of configurations." (defun python-shell-parse-command () "Calculate the string used to execute the inferior Python process." - (format "%s %s" python-shell-interpreter python-shell-interpreter-args)) + (let ((process-environment (python-shell-calculate-process-environment)) + (exec-path (python-shell-calculate-exec-path))) + (format "%s %s" + (executable-find python-shell-interpreter) + python-shell-interpreter-args))) (defun python-shell-calculate-process-environment () "Calculate process environment given `python-shell-virtualenv-path'." @@ -2320,15 +2328,17 @@ Argument OUTPUT is a string with the output from the comint process." (file-name (with-temp-buffer (insert full-output) - (goto-char (point-min)) - ;; OK, this sucked but now it became a cool hack. The - ;; stacktrace information normally is on the first line - ;; but in some cases (like when doing a step-in) it is - ;; on the second. - (when (or (looking-at python-pdbtrack-stacktrace-info-regexp) - (and - (forward-line) - (looking-at python-pdbtrack-stacktrace-info-regexp))) + ;; When the debugger encounters a pdb.set_trace() + ;; command, it prints a single stack frame. Sometimes + ;; it prints a bit of extra information about the + ;; arguments of the present function. When ipdb + ;; encounters an exception, it prints the _entire_ stack + ;; trace. To handle all of these cases, we want to find + ;; the _last_ stack frame printed in the most recent + ;; batch of output, then jump to the corresponding + ;; file/line number. + (goto-char (point-max)) + (when (re-search-backward python-pdbtrack-stacktrace-info-regexp nil t) (setq line-number (string-to-number (match-string-no-properties 2))) (match-string-no-properties 1))))) @@ -2937,40 +2947,62 @@ Optional argument INCLUDE-TYPE indicates to include the type of the defun. This function is compatible to be used as `add-log-current-defun-function' since it returns nil if point is not inside a defun." - (save-restriction - (widen) - (save-excursion - (end-of-line 1) - (let ((names) - (starting-indentation - (save-excursion - (and - (python-nav-beginning-of-defun 1) - ;; This extra number is just for checking code - ;; against indentation to work well on first run. - (+ (current-indentation) 4)))) - (starting-point (point))) - ;; Check point is inside a defun. - (when (and starting-indentation - (< starting-point + (save-restriction + (widen) + (save-excursion + (end-of-line 1) + (let ((names) + (starting-indentation (current-indentation)) + (starting-pos (point)) + (first-run t) + (last-indent) + (type)) + (catch 'exit + (while (python-nav-beginning-of-defun 1) + (when (save-match-data + (and + (or (not last-indent) + (< (current-indentation) last-indent)) + (or + (and first-run + (save-excursion + ;; If this is the first run, we may add + ;; the current defun at point. + (setq first-run nil) + (goto-char starting-pos) + (python-nav-beginning-of-statement) + (beginning-of-line 1) + (looking-at-p + python-nav-beginning-of-defun-regexp))) + (< starting-pos (save-excursion - (python-nav-end-of-defun) - (point)))) - (catch 'exit - (while (python-nav-beginning-of-defun 1) - (when (< (current-indentation) starting-indentation) - (setq starting-indentation (current-indentation)) - (setq names - (cons - (if (not include-type) - (match-string-no-properties 1) - (mapconcat 'identity - (split-string - (match-string-no-properties 0)) " ")) - names))) - (and (= (current-indentation) 0) (throw 'exit t))))) - (and names - (mapconcat (lambda (string) string) names ".")))))) + (let ((min-indent + (+ (current-indentation) + python-indent-offset))) + (if (< starting-indentation min-indent) + ;; If the starting indentation is not + ;; within the min defun indent make the + ;; check fail. + starting-pos + ;; Else go to the end of defun and add + ;; up the current indentation to the + ;; ending position. + (python-nav-end-of-defun) + (+ (point) + (if (>= (current-indentation) min-indent) + (1+ (current-indentation)) + 0))))))))) + (save-match-data (setq last-indent (current-indentation))) + (if (or (not include-type) type) + (setq names (cons (match-string-no-properties 1) names)) + (let ((match (split-string (match-string-no-properties 0)))) + (setq type (car match)) + (setq names (cons (cadr match) names))))) + ;; Stop searching ASAP. + (and (= (current-indentation) 0) (throw 'exit t)))) + (and names + (concat (and type (format "%s " type)) + (mapconcat 'identity names "."))))))) (defun python-info-current-symbol (&optional replace-self) "Return current symbol using dotty syntax. @@ -3083,7 +3115,7 @@ With optional argument LINE-NUMBER, check that line instead." (save-restriction (widen) (when line-number - (goto-char line-number)) + (python-util-goto-line line-number)) (while (and (not (eobp)) (goto-char (line-end-position)) (python-syntax-context 'paren) @@ -3099,7 +3131,7 @@ Optional argument LINE-NUMBER forces the line number to check against." (save-restriction (widen) (when line-number - (goto-char line-number)) + (python-util-goto-line line-number)) (when (python-info-line-ends-backslash-p) (while (save-excursion (goto-char (line-beginning-position)) @@ -3178,7 +3210,9 @@ operator." (defun python-info-current-line-comment-p () "Check if current line is a comment line." - (char-equal (or (char-after (+ (point) (current-indentation))) ?_) ?#)) + (char-equal + (or (char-after (+ (line-beginning-position) (current-indentation))) ?_) + ?#)) (defun python-info-current-line-empty-p () "Check if current line is empty, ignoring whitespace." @@ -3193,12 +3227,10 @@ operator." ;;; Utility functions -(defun python-util-position (item seq) - "Find the first occurrence of ITEM in SEQ. -Return the index of the matching item, or nil if not found." - (let ((member-result (member item seq))) - (when member-result - (- (length seq) (length member-result))))) +(defun python-util-goto-line (line-number) + "Move point to LINE-NUMBER." + (goto-char (point-min)) + (forward-line (1- line-number))) ;; Stolen from org-mode (defun python-util-clone-local-variables (from-buffer &optional regexp) diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index a42a66dfa87..6e471d1aa2a 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -595,8 +595,7 @@ Can be one of `heredoc', `modifier', `expr-qstr', `expr-re'." (not (or (eq ?_ w) (eq ?. w))))) (goto-char pnt) - (setq w (char-after (point))) - (not (eq ?! w)) + (not (eq ?! (char-after (point)))) (skip-chars-forward " \t") (goto-char (match-beginning 0)) (or (not (looking-at ruby-modifier-re)) @@ -877,11 +876,15 @@ calculating indentation on the lines after it." (defun ruby-move-to-block (n) "Move to the beginning (N < 0) or the end (N > 0) of the current block, a sibling block, or an outer block. Do that (abs N) times." - (let ((orig (point)) - (start (ruby-calculate-indent)) - (signum (if (> n 0) 1 -1)) + (let ((signum (if (> n 0) 1 -1)) (backward (< n 0)) - down pos done) + (depth (or (nth 2 (ruby-parse-region (line-beginning-position) + (line-end-position))) + 0)) + down done) + (when (< (* depth signum) 0) + ;; Moving end -> end or beginning -> beginning. + (setq depth 0)) (dotimes (_ (abs n)) (setq done nil) (setq down (save-excursion @@ -904,18 +907,26 @@ current block, a sibling block, or an outer block. Do that (abs N) times." (re-search-forward "^=end\\>")) ((and backward (looking-at "^=end\\>")) (re-search-backward "^=begin\\>")) + ;; Jump over a multiline literal. + ((ruby-in-ppss-context-p 'string) + (goto-char (nth 8 (syntax-ppss))) + (unless backward + (forward-sexp) + (when (bolp) (forward-char -1)))) ; After a heredoc. (t - (setq pos (current-indentation)) + (let ((state (ruby-parse-region (point) (line-end-position)))) + (unless (car state) ; Line ends with unfinished string. + (setq depth (+ (nth 2 state) depth)))) (cond ;; Deeper indentation, we found a block. ;; FIXME: We can't recognize empty blocks this way. - ((< start pos) + ((> (* signum depth) 0) (setq down t)) ;; Block found, and same indentation as when started, stop. - ((and down (= pos start)) + ((and down (zerop depth)) (setq done t)) ;; Shallower indentation, means outer block, can stop now. - ((> start pos) + ((< (* signum depth) 0) (setq done t))))) (if done (save-excursion @@ -1062,29 +1073,33 @@ For example: See `add-log-current-defun-function'." (condition-case nil (save-excursion - (let ((indent 0) mname mlist - (start (point)) - (definition-re - (concat "^[ \t]*" ruby-defun-beg-re "[ \t]+" - "\\(" - ;; \\. and :: for class methods - "\\([A-Za-z_]" ruby-symbol-re "*\\|\\.\\|::" "\\)" - "+\\)"))) + (let* ((indent 0) mname mlist + (start (point)) + (make-definition-re + (lambda (re) + (concat "^[ \t]*" re "[ \t]+" + "\\(" + ;; \\. and :: for class methods + "\\([A-Za-z_]" ruby-symbol-re "*\\|\\.\\|::" "\\)" + "+\\)"))) + (definition-re (funcall make-definition-re ruby-defun-beg-re)) + (module-re (funcall make-definition-re "\\(class\\|module\\)"))) ;; Get the current method definition (or class/module). (when (re-search-backward definition-re nil t) (goto-char (match-beginning 1)) - (when (ruby-block-contains-point start) - ;; We're inside the method, class or module. - (setq mname (match-string 2)) - (unless (string-equal "def" (match-string 1)) - (setq mlist (list mname) mname nil))) + (if (not (string-equal "def" (match-string 1))) + (setq mlist (list (match-string 2))) + ;; We're inside the method. For classes and modules, + ;; this check is skipped for performance. + (when (ruby-block-contains-point start) + (setq mname (match-string 2)))) (setq indent (current-column)) (beginning-of-line)) ;; Walk up the class/module nesting. (while (and (> indent 0) - (re-search-backward definition-re nil t)) + (re-search-backward module-re nil t)) (goto-char (match-beginning 1)) - (when (ruby-block-contains-point start) + (when (< (current-column) indent) (setq mlist (cons (match-string 2) mlist)) (setq indent (current-column)) (beginning-of-line))) @@ -1110,6 +1125,13 @@ See `add-log-current-defun-function'." (let ((in-singleton-class (when (re-search-forward ruby-singleton-class-re start t) (goto-char (match-beginning 0)) + ;; FIXME: Optimize it out, too? + ;; This can be slow in a large file, but + ;; unlike class/module declaration + ;; indentations, method definitions can be + ;; intermixed with these, and may or may not + ;; be additionally indented after visibility + ;; keywords. (ruby-block-contains-point start)))) (setq mname (concat (if in-singleton-class "." "#") @@ -1254,8 +1276,10 @@ It will be properly highlighted even when the call omits parens.")) "\\)\\s *" ;; The regular expression itself. "\\(/\\)[^/\n\\\\]*\\(?:\\\\.[^/\n\\\\]*\\)*\\(/\\)") - (2 (string-to-syntax "\"/")) - (3 (string-to-syntax "\"/"))) + (3 (unless (nth 3 (syntax-ppss (match-beginning 2))) + (put-text-property (match-beginning 2) (match-end 2) + 'syntax-table (string-to-syntax "\"/")) + (string-to-syntax "\"/")))) ("^=en\\(d\\)\\_>" (1 "!")) ("^\\(=\\)begin\\_>" (1 "!")) ;; Handle here documents. @@ -1552,7 +1576,7 @@ See `font-lock-syntax-table'.") 1 font-lock-function-name-face) ;; keywords (cons (concat - "\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(defined\\?\\|" + "\\(^\\|[^.@$]\\|\\.\\.\\)\\_<\\(defined\\?\\|" (regexp-opt '("alias_method" "alias" @@ -1602,7 +1626,7 @@ See `font-lock-syntax-table'.") `(,ruby-here-doc-beg-re 0 (unless (ruby-singleton-class-p (match-beginning 0)) 'font-lock-string-face)) ;; variables - '("\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(nil\\|self\\|true\\|false\\)\\>" + '("\\(^\\|[^.@$]\\|\\.\\.\\)\\_<\\(nil\\|self\\|true\\|false\\)\\>" 2 font-lock-variable-name-face) ;; symbols '("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|![~=]?\\|\\[\\]=?\\|@?\\(\\w\\|_\\)+\\([!?=]\\|\\b_*\\)\\|#{[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\)\\)" @@ -1613,8 +1637,8 @@ See `font-lock-syntax-table'.") '("\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+" 0 font-lock-variable-name-face) ;; constants - '("\\(^\\|[^_]\\)\\b\\([A-Z]+\\(\\w\\|_\\)*\\)" - 2 font-lock-type-face) + '("\\(?:\\_<\\|::\\)\\([A-Z]+\\(\\w\\|_\\)*\\)" + 1 font-lock-type-face) '("\\(^\\s *\\|[\[\{\(,]\\s *\\|\\sw\\s +\\)\\(\\(\\sw\\|_\\)+\\):[^:]" 2 font-lock-constant-face) ;; expression expansion '(ruby-match-expression-expansion diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index da30edf272b..8f1954402e5 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -1842,7 +1842,7 @@ May return nil if the line should not be treated as continued." ;; (defconst sh-smie-csh-grammar ;; (smie-prec2->grammar ;; (smie-bnf->prec2 -;; '((exp) ;A constant, or a $var, or a sequence of them… +;; '((exp) ;A constant, or a $var, or a sequence of them... ;; (elseifcmd (cmd) ;; (cmd "else" "else-if" exp "then" elseifcmd)) ;; (cmd ("switch" branches "endsw") diff --git a/lisp/progmodes/simula.el b/lisp/progmodes/simula.el index d71c9adbef4..77732ed3241 100644 --- a/lisp/progmodes/simula.el +++ b/lisp/progmodes/simula.el @@ -244,8 +244,7 @@ for SIMULA mode to function correctly." ; it determines the flavor of the Emacs running (defvar simula-mode-menu - '(["Report Bug" simula-submit-bug-report t] - ["Indent Line" simula-indent-line t] + '(["Indent Line" simula-indent-line t] ["Backward Statement" simula-previous-statement t] ["Forward Statement" simula-next-statement t] ["Backward Up Level" simula-backward-up-level t] @@ -286,10 +285,6 @@ for SIMULA mode to function correctly." ;; Emacs 19 defines menus in the mode map (define-key map [menu-bar simula] (cons "SIMULA" (make-sparse-keymap "SIMULA"))) - (define-key map [menu-bar simula bug-report] - '("Submit Bug Report" . simula-submit-bug-report)) - (define-key map [menu-bar simula separator-indent] - '("--")) (define-key map [menu-bar simula indent-exp] '("Indent Expression" . simula-indent-exp)) (define-key map [menu-bar simula indent-line] @@ -1622,28 +1617,11 @@ If not nil and not t, move to limit of search and return nil." (defconst simula-mode-help-address "bug-gnu-emacs@gnu.org" "Address accepting submission of `simula-mode' bug reports.") -(defun simula-submit-bug-report () - "Submit via mail a bug report on `simula-mode'." - (interactive) - (and - (y-or-n-p "Do you want to submit a report on simula-mode? ") - (reporter-submit-bug-report - simula-mode-help-address - (concat "simula-mode from Emacs " emacs-version) - (list - ;; report only the vars that affect indentation - 'simula-indent-level - 'simula-substatement-offset - 'simula-continued-statement-offset - 'simula-label-offset - 'simula-if-indent - 'simula-inspect-indent - 'simula-electric-indent - 'simula-abbrev-keyword - 'simula-abbrev-stdproc - 'simula-abbrev-file - 'simula-tab-always-indent - )))) +(make-obsolete-variable 'simula-mode-help-address 'report-emacs-bug-address + "24.4") + +(define-obsolete-function-alias 'simula-submit-bug-report + 'report-emacs-bug "24.4") (provide 'simula) diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el index a32cd969757..9169a433015 100644 --- a/lisp/progmodes/tcl.el +++ b/lisp/progmodes/tcl.el @@ -332,8 +332,8 @@ This process selection is performed by function `inferior-tcl-proc'. Whenever \\[inferior-tcl] fires up a new process, it resets `inferior-tcl-buffer' to be the new process's buffer. If you only run one process, this does the right thing. If you run multiple -processes, you can change `inferior-tcl-buffer' to another process -buffer with \\[set-variable].") +processes, you might need to set `inferior-tcl-buffer' to +whichever process buffer you want to use.") ;; ;; Hooks and other customization. diff --git a/lisp/progmodes/vera-mode.el b/lisp/progmodes/vera-mode.el index 0c456d3b944..7b59faca261 100644 --- a/lisp/progmodes/vera-mode.el +++ b/lisp/progmodes/vera-mode.el @@ -1423,7 +1423,8 @@ If `vera-intelligent-tab' is nil, always indent line." ;;; Bug reports ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defconst vera-mode-help-address "Reto Zimmermann <reto@gnu.org>" +(defconst vera-mode-help-address + "Reto Zimmermann <reto@gnu.org>, bug-gnu-emacs@gnu.org" "Address for Vera Mode bug reports.") ;; get reporter-submit-bug-report when byte-compiling diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el index 55be6222586..5571a905f85 100644 --- a/lisp/progmodes/verilog-mode.el +++ b/lisp/progmodes/verilog-mode.el @@ -4777,7 +4777,7 @@ primitive or interface named NAME." )))))))))) (defun verilog-get-expr() - "Grab expression at point, e.g, case ( a | b & (c ^d))." + "Grab expression at point, e.g., case ( a | b & (c ^d))." (let* ((b (progn (verilog-forward-syntactic-ws) (skip-chars-forward " \t") diff --git a/lisp/replace.el b/lisp/replace.el index fb251821445..ceb0fe4a63e 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -583,29 +583,31 @@ of `history-length', which see.") (defun read-regexp (prompt &optional defaults history) "Read and return a regular expression as a string. When PROMPT doesn't end with a colon and space, it adds a final \": \". -If DEFAULTS is non-nil, it displays the first default in the prompt. - -Non-nil optional arg DEFAULTS is a string or a list of strings that -are prepended to a list of standard default values, which include the -string at point, the last isearch regexp, the last isearch string, and -the last replacement regexp. - -Non-nil HISTORY is a symbol to use for the history list. +If the first element of DEFAULTS is non-nil, it's added to the prompt. + +Optional arg DEFAULTS has the form (DEFAULT . SUGGESTIONS) +or simply DEFAULT where DEFAULT, if non-nil, should be a string that +is returned as the default value when the user enters empty input. +SUGGESTIONS is a list of strings that can be inserted into +the minibuffer using \\<minibuffer-local-map>\\[next-history-element]. \ +The values supplied in SUGGESTIONS +are prepended to the list of standard suggestions that include +the tag at point, the last isearch regexp, the last isearch string, +and the last replacement regexp. + +Optional arg HISTORY is a symbol to use for the history list. If HISTORY is nil, `regexp-history' is used." - (let* ((default (if (consp defaults) (car defaults) defaults)) - (defaults - (append - (if (listp defaults) defaults (list defaults)) - (list (regexp-quote - (or (funcall (or find-tag-default-function - (get major-mode 'find-tag-default-function) - 'find-tag-default)) - "")) - (car regexp-search-ring) - (regexp-quote (or (car search-ring) "")) - (car (symbol-value - query-replace-from-history-variable))))) - (defaults (delete-dups (delq nil (delete "" defaults)))) + (let* ((default (if (consp defaults) (car defaults) defaults)) + (suggestions (if (listp defaults) defaults (list defaults))) + (suggestions + (append + suggestions + (list + (find-tag-default-as-regexp) + (car regexp-search-ring) + (regexp-quote (or (car search-ring) "")) + (car (symbol-value query-replace-from-history-variable))))) + (suggestions (delete-dups (delq nil (delete "" suggestions)))) ;; Do not automatically add default to the history for empty input. (history-add-new-input nil) (input (read-from-minibuffer @@ -616,9 +618,11 @@ If HISTORY is nil, `regexp-history' is used." (query-replace-descr default))) (t (format "%s: " prompt))) - nil nil nil (or history 'regexp-history) defaults t))) + nil nil nil (or history 'regexp-history) suggestions t))) (if (equal input "") + ;; Return the default value when the user enters empty input. (or default input) + ;; Otherwise, add non-empty input to the history and return input. (prog1 input (add-to-history (or history 'regexp-history) input))))) @@ -1819,19 +1823,6 @@ make, or the user didn't cancel the call." case-fold-search)) (nocasify (not (and case-replace case-fold-search))) (literal (or (not regexp-flag) (eq regexp-flag 'literal))) - (search-function - (or (if regexp-flag - replace-re-search-function - replace-search-function) - (let ((isearch-regexp regexp-flag) - (isearch-word delimited-flag) - (isearch-lax-whitespace - replace-lax-whitespace) - (isearch-regexp-lax-whitespace - replace-regexp-lax-whitespace) - (isearch-case-fold-search case-fold-search) - (isearch-forward t)) - (isearch-search-fun)))) (search-string from-string) (real-match-data nil) ; The match data for the current match. (next-replacement nil) @@ -1894,39 +1885,62 @@ make, or the user didn't cancel the call." ;; Loop finding occurrences that perhaps should be replaced. (while (and keep-going (not (or (eobp) (and limit (>= (point) limit)))) - ;; Use the next match if it is already known; - ;; otherwise, search for a match after moving forward - ;; one char if progress is required. - (setq real-match-data - (cond ((consp match-again) - (goto-char (nth 1 match-again)) - (replace-match-data - t real-match-data match-again)) - ;; MATCH-AGAIN non-nil means accept an - ;; adjacent match. - (match-again - (and - (funcall search-function search-string - limit t) - ;; For speed, use only integers and - ;; reuse the list used last time. - (replace-match-data t real-match-data))) - ((and (< (1+ (point)) (point-max)) - (or (null limit) - (< (1+ (point)) limit))) - ;; If not accepting adjacent matches, - ;; move one char to the right before - ;; searching again. Undo the motion - ;; if the search fails. - (let ((opoint (point))) - (forward-char 1) - (if (funcall - search-function search-string - limit t) - (replace-match-data - t real-match-data) - (goto-char opoint) - nil)))))) + ;; Let-bind global isearch-* variables to values used + ;; to search the next replacement. These let-bindings + ;; should be effective both at the time of calling + ;; `isearch-search-fun-default' and also at the + ;; time of funcalling `search-function'. + ;; These isearch-* bindings can't be placed higher + ;; outside of this loop because then another I-search + ;; used after `recursive-edit' might override them. + (let* ((isearch-regexp regexp-flag) + (isearch-word delimited-flag) + (isearch-lax-whitespace + replace-lax-whitespace) + (isearch-regexp-lax-whitespace + replace-regexp-lax-whitespace) + (isearch-case-fold-search case-fold-search) + (isearch-adjusted nil) + (isearch-nonincremental t) ; don't use lax word mode + (isearch-forward t) + (search-function + (or (if regexp-flag + replace-re-search-function + replace-search-function) + (isearch-search-fun-default)))) + ;; Use the next match if it is already known; + ;; otherwise, search for a match after moving forward + ;; one char if progress is required. + (setq real-match-data + (cond ((consp match-again) + (goto-char (nth 1 match-again)) + (replace-match-data + t real-match-data match-again)) + ;; MATCH-AGAIN non-nil means accept an + ;; adjacent match. + (match-again + (and + (funcall search-function search-string + limit t) + ;; For speed, use only integers and + ;; reuse the list used last time. + (replace-match-data t real-match-data))) + ((and (< (1+ (point)) (point-max)) + (or (null limit) + (< (1+ (point)) limit))) + ;; If not accepting adjacent matches, + ;; move one char to the right before + ;; searching again. Undo the motion + ;; if the search fails. + (let ((opoint (point))) + (forward-char 1) + (if (funcall + search-function search-string + limit t) + (replace-match-data + t real-match-data) + (goto-char opoint) + nil))))))) ;; Record whether the match is nonempty, to avoid an infinite loop ;; repeatedly matching the same empty string. @@ -2188,6 +2202,7 @@ make, or the user didn't cancel the call." replace-regexp-lax-whitespace) (isearch-case-fold-search case-fold-search) (isearch-forward t) + (isearch-other-end match-beg) (isearch-error nil)) (isearch-lazy-highlight-new-loop range-beg range-end)))) diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el index 08c4ba51905..009bb11fc10 100644 --- a/lisp/ruler-mode.el +++ b/lisp/ruler-mode.el @@ -137,8 +137,8 @@ or remove a tab stop. \\[ruler-mode-toggle-show-tab-stops] or (format "Invalid character value: %S" value)) widget)))) -(defcustom ruler-mode-fill-column-char (if (char-displayable-p ?¶) - ?\¶ +(defcustom ruler-mode-fill-column-char (if (char-displayable-p ?¶) + ?\¶ ?\|) "Character used at the `fill-column' location." :group 'ruler-mode @@ -163,8 +163,8 @@ or remove a tab stop. \\[ruler-mode-toggle-show-tab-stops] or (integer :tag "Integer char value" :validate ruler-mode-character-validate))) -(defcustom ruler-mode-current-column-char (if (char-displayable-p ?¦) - ?\¦ +(defcustom ruler-mode-current-column-char (if (char-displayable-p ?¦) + ?\¦ ?\@) "Character used at the `current-column' location." :group 'ruler-mode @@ -774,7 +774,7 @@ Optional argument PROPS specifies other text properties to apply." (provide 'ruler-mode) ;; Local Variables: -;; coding: iso-latin-1 +;; coding: utf-8 ;; End: ;;; ruler-mode.el ends here diff --git a/lisp/server.el b/lisp/server.el index 64224d2a310..05ac345d904 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -154,7 +154,7 @@ long-lived shared key will decrease security (especially since the key is transmitted as plain-text). In some situations however, it can be difficult to share randomly -generated passwords with remote hosts (eg. no shared directory), +generated passwords with remote hosts (e.g., no shared directory), so you can set the key with this variable and then copy the server file to the remote host (with possible changes to IP address and/or port if that applies). diff --git a/lisp/simple.el b/lisp/simple.el index 847c07a5c26..3ef700a6058 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -349,8 +349,7 @@ buffer causes automatic display of the corresponding source code location." Other major modes are defined by comparison with this one." (interactive) (kill-all-local-variables) - (unless delay-mode-hooks - (run-hooks 'after-change-major-mode-hook))) + (run-mode-hooks)) ;; Special major modes to view specially formatted data rather than files. @@ -359,6 +358,7 @@ Other major modes are defined by comparison with this one." (suppress-keymap map) (define-key map "q" 'quit-window) (define-key map " " 'scroll-up-command) + (define-key map [?\S-\ ] 'scroll-down-command) (define-key map "\C-?" 'scroll-down-command) (define-key map "?" 'describe-mode) (define-key map "h" 'describe-mode) @@ -746,21 +746,76 @@ If BACKWARD-ONLY is non-nil, only delete them before point." "Delete all spaces and tabs around point, leaving one space (or N spaces). If N is negative, delete newlines as well, leaving -N spaces." (interactive "*p") - (unless n (setq n 1)) - (let ((orig-pos (point)) - (skip-characters (if (< n 0) " \t\n\r" " \t")) - (n (abs n))) - (skip-chars-backward skip-characters) + (cycle-spacing n nil t)) + +(defvar cycle-spacing--context nil + "Store context used in consecutive calls to `cycle-spacing' command. +The first time this function is run, it saves the original point +position and original spacing around the point in this +variable.") + +(defun cycle-spacing (&optional n preserve-nl-back single-shot) + "Manipulate spaces around the point in a smart way. + +When run as an interactive command, the first time it's called +in a sequence, deletes all spaces and tabs around point leaving +one (or N spaces). If this does not change content of the +buffer, skips to the second step: + +When run for the second time in a sequence, deletes all the +spaces it has previously inserted. + +When run for the third time, returns the whitespace and point in +a state encountered when it had been run for the first time. + +For example, if buffer contains \"foo ^ bar\" with \"^\" denoting the +point, calling `cycle-spacing' command will replace two spaces with +a single space, calling it again immediately after, will remove all +spaces, and calling it for the third time will bring two spaces back +together. + +If N is negative, delete newlines as well. However, if +PRESERVE-NL-BACK is t new line characters prior to the point +won't be removed. + +If SINGLE-SHOT is non-nil, will only perform the first step. In +other words, it will work just like `just-one-space' command." + (interactive "*p") + (let ((orig-pos (point)) + (skip-characters (if (and n (< n 0)) " \t\n\r" " \t")) + (n (abs (or n 1)))) + (skip-chars-backward (if preserve-nl-back " \t" skip-characters)) (constrain-to-field nil orig-pos) - (dotimes (_ n) - (if (= (following-char) ?\s) - (forward-char 1) - (insert ?\s))) - (delete-region - (point) - (progn - (skip-chars-forward skip-characters) - (constrain-to-field nil orig-pos t))))) + (cond + ;; Command run for the first time or single-shot is non-nil. + ((or single-shot + (not (equal last-command this-command)) + (not cycle-spacing--context)) + (let* ((start (point)) + (n (- n (skip-chars-forward " " (+ n (point))))) + (mid (point)) + (end (progn + (skip-chars-forward skip-characters) + (constrain-to-field nil orig-pos t)))) + (setq cycle-spacing--context ;; Save for later. + ;; Special handling for case where there was no space at all. + (unless (= start end) + (cons orig-pos (buffer-substring start (point))))) + ;; If this run causes no change in buffer content, delete all spaces, + ;; otherwise delete all excess spaces. + (delete-region (if (and (not single-shot) (zerop n) (= mid end)) + start mid) end) + (insert (make-string n ?\s)))) + + ;; Command run for the second time. + ((not (equal orig-pos (point))) + (delete-region (point) orig-pos)) + + ;; Command run for the third time. + (t + (insert (cdr cycle-spacing--context)) + (goto-char (car cycle-spacing--context)) + (setq cycle-spacing--context nil))))) (defun beginning-of-buffer (&optional arg) "Move point to the beginning of the buffer. @@ -813,7 +868,8 @@ Don't use this command in Lisp programs! ;; If we went to a place in the middle of the buffer, ;; adjust it to the beginning of a line. (cond ((and arg (not (consp arg))) (forward-line 1)) - ((> (point) (window-end nil t)) + ((and (eq (current-buffer) (window-buffer)) + (> (point) (window-end nil t))) ;; If the end of the buffer is not already on the screen, ;; then scroll specially to put it near, but not at, the bottom. (overlay-recenter (point)) @@ -1237,13 +1293,12 @@ display the result of expression evaluation." ;; We define this, rather than making `eval' interactive, ;; for the sake of completion of names like eval-region, eval-buffer. -(defun eval-expression (eval-expression-arg - &optional eval-expression-insert-value) - "Evaluate EVAL-EXPRESSION-ARG and print value in the echo area. +(defun eval-expression (exp &optional insert-value) + "Evaluate EXP and print value in the echo area. When called interactively, read an Emacs Lisp expression and evaluate it. Value is also consed on to front of the variable `values'. -Optional argument EVAL-EXPRESSION-INSERT-VALUE non-nil (interactively, +Optional argument INSERT-VALUE non-nil (interactively, with prefix argument) means insert the result into the current buffer instead of printing it in the echo area. Truncates long output according to the value of the variables `eval-expression-print-length' @@ -1259,12 +1314,12 @@ this command arranges for all errors to enter the debugger." current-prefix-arg)) (if (null eval-expression-debug-on-error) - (push (eval eval-expression-arg lexical-binding) values) + (push (eval exp lexical-binding) values) (let ((old-value (make-symbol "t")) new-value) ;; Bind debug-on-error to something unique so that we can ;; detect when evalled code changes it. (let ((debug-on-error old-value)) - (push (eval eval-expression-arg lexical-binding) values) + (push (eval exp lexical-binding) values) (setq new-value debug-on-error)) ;; If evalled code has changed the value of debug-on-error, ;; propagate that change to the global binding. @@ -1272,8 +1327,9 @@ this command arranges for all errors to enter the debugger." (setq debug-on-error new-value)))) (let ((print-length eval-expression-print-length) - (print-level eval-expression-print-level)) - (if eval-expression-insert-value + (print-level eval-expression-print-level) + (deactivate-mark)) + (if insert-value (with-no-warnings (let ((standard-output (current-buffer))) (prin1 (car values)))) @@ -1344,6 +1400,8 @@ to get different commands to edit and resubmit." (error "Argument %d is beyond length of command history" arg) (error "There are no previous complex commands to repeat"))))) +(defvar extended-command-history nil) + (defun read-extended-command () "Read command name to invoke in `execute-extended-command'." (minibuffer-with-setup-hook @@ -1433,6 +1491,53 @@ give to the command you invoke, if it asks for an argument." (sit-for (if (numberp suggest-key-bindings) suggest-key-bindings 2)))))))) + +(defun command-execute (cmd &optional record-flag keys special) + ;; BEWARE: Called directly from the C code. + "Execute CMD as an editor command. +CMD must be a symbol that satisfies the `commandp' predicate. +Optional second arg RECORD-FLAG non-nil +means unconditionally put this command in the variable `command-history'. +Otherwise, that is done only if an arg is read using the minibuffer. +The argument KEYS specifies the value to use instead of (this-command-keys) +when reading the arguments; if it is nil, (this-command-keys) is used. +The argument SPECIAL, if non-nil, means that this command is executing +a special event, so ignore the prefix argument and don't clear it." + (setq debug-on-next-call nil) + (let ((prefixarg (unless special + (prog1 prefix-arg + (setq current-prefix-arg prefix-arg) + (setq prefix-arg nil))))) + (and (symbolp cmd) + (get cmd 'disabled) + ;; FIXME: Weird calling convention! + (run-hooks 'disabled-command-function)) + (let ((final cmd)) + (while + (progn + (setq final (indirect-function final)) + (if (autoloadp final) + (setq final (autoload-do-load final cmd))))) + (cond + ((arrayp final) + ;; If requested, place the macro in the command history. For + ;; other sorts of commands, call-interactively takes care of this. + (when record-flag + (push `(execute-kbd-macro ,final ,prefixarg) command-history) + ;; Don't keep command history around forever. + (when (and (numberp history-length) (> history-length 0)) + (let ((cell (nthcdr history-length command-history))) + (if (consp cell) (setcdr cell nil))))) + (execute-kbd-macro final prefixarg)) + (t + ;; Pass `cmd' rather than `final', for the backtrace's sake. + (prog1 (call-interactively cmd record-flag keys) + (when (and (symbolp cmd) + (get cmd 'byte-obsolete-info) + (not (get cmd 'command-execute-obsolete-warned))) + (put cmd 'command-execute-obsolete-warned t) + (message "%s" (macroexp--obsolete-warning + cmd (get cmd 'byte-obsolete-info) "command"))))))))) (defvar minibuffer-history nil "Default minibuffer history list. diff --git a/lisp/startup.el b/lisp/startup.el index 5406c0f6513..ad31a7a2a45 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -770,11 +770,20 @@ Amongst another things, it parses the command-line arguments." (locate-file "simple" load-path (get-load-suffixes))) lisp-dir) ;; Don't abort if simple.el cannot be found, but print a warning. + ;; Although in most usage we are going to cryptically abort a moment + ;; later anyway, due to missing required bidi data files (eg bug#13430). (if (null simple-file-name) - (progn - (princ "Warning: Could not find simple.el nor simple.elc" - 'external-debugging-output) - (terpri 'external-debugging-output)) + (let ((standard-output 'external-debugging-output) + (lispdir (expand-file-name "../lisp" data-directory))) + (princ "Warning: Could not find simple.el or simple.elc") + (terpri) + (when (getenv "EMACSLOADPATH") + (princ "The EMACSLOADPATH environment variable is set, \ +please check its value") + (terpri)) + (unless (file-readable-p lispdir) + (princ (format "Lisp directory %s not readable?" lispdir)) + (terpri))) (setq lisp-dir (file-truename (file-name-directory simple-file-name))) (setq load-history (mapcar (lambda (elt) @@ -1457,6 +1466,7 @@ Each element in the list should be a list of strings or pairs (suppress-keymap map) (set-keymap-parent map button-buffer-map) (define-key map "\C-?" 'scroll-down-command) + (define-key map [?\S-\ ] 'scroll-down-command) (define-key map " " 'scroll-up-command) (define-key map "q" 'exit-splash-screen) map) diff --git a/lisp/subr.el b/lisp/subr.el index 9f19268c864..f5bab44643b 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1229,7 +1229,6 @@ is converted into a string by expressing it in decimal." (make-obsolete-variable 'default-scroll-down-aggressively 'scroll-down-aggressively "23.2") (make-obsolete-variable 'default-fill-column 'fill-column "23.2") (make-obsolete-variable 'default-cursor-type 'cursor-type "23.2") -(make-obsolete-variable 'default-buffer-file-type 'buffer-file-type "23.2") (make-obsolete-variable 'default-cursor-in-non-selected-windows 'cursor-in-non-selected-windows "23.2") (make-obsolete-variable 'default-buffer-file-coding-system 'buffer-file-coding-system "23.2") (make-obsolete-variable 'default-major-mode 'major-mode "23.2") @@ -2622,15 +2621,6 @@ When the hook runs, the temporary buffer is current. This hook is normally set up with a function to put the buffer in Help mode.") -(defvar-local buffer-file-type nil - "Non-nil if the visited file is a binary file. -This variable is meaningful on MS-DOG and MS-Windows. -On those systems, it is automatically local in every buffer. -On other systems, this variable is normally always nil. - -WARNING: This variable is obsolete and will disappear Real Soon Now. -Don't use it!") - ;; The `assert' macro from the cl package signals ;; `cl-assertion-failed' at runtime so always define it. (put 'cl-assertion-failed 'error-conditions '(error)) @@ -2707,6 +2697,22 @@ If there is no plausible default, return nil." (setq to (point))))) (buffer-substring-no-properties from to)))) +(defun find-tag-default-as-regexp () + "Return regexp that matches the default tag at point. +If there is no tag at point, return nil. + +When in a major mode that does not provide its own +`find-tag-default-function', return a regexp that matches the +symbol at point exactly." + (let* ((tagf (or find-tag-default-function + (get major-mode 'find-tag-default-function) + 'find-tag-default)) + (tag (funcall tagf))) + (cond ((not tag)) + ((eq tagf 'find-tag-default) + (format "\\_<%s\\_>" (regexp-quote tag))) + (t (regexp-quote tag))))) + (defun play-sound (sound) "SOUND is a list of the form `(sound KEYWORD VALUE...)'. The following keywords are recognized: @@ -3976,12 +3982,13 @@ the number of frames to skip (minus 1).") ;; "static" variables. (let ((sym (make-symbol "base-index"))) `(progn - (defvar ,sym + (defvar ,sym) + (unless (boundp ',sym) (let ((i 1)) (while (not (eq (indirect-function (nth 1 (backtrace-frame i)) t) (indirect-function 'called-interactively-p))) (setq i (1+ i))) - i)) + (setq ,sym i))) ;; (unless (eq (nth 1 (backtrace-frame ,sym)) 'called-interactively-p) ;; (error "called-interactively-p: %s is out-of-sync!" ,sym)) (backtrace-frame (+ ,sym ,n))))) diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el index c22b5482b3e..c03d64a2f54 100644 --- a/lisp/term/xterm.el +++ b/lisp/term/xterm.el @@ -36,7 +36,7 @@ If `check', try to check if it does. If a list, assume that the listed features are supported, without checking. The relevant features are: - modifyOtherKeys -- if supported, more key bindings work (e.g, \"\\C-,\") + modifyOtherKeys -- if supported, more key bindings work (e.g., \"\\C-,\") reportBackground -- if supported, Xterm reports its background color " :version "24.1" diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el index c2978b0ea40..2bd7283676e 100644 --- a/lisp/textmodes/artist.el +++ b/lisp/textmodes/artist.el @@ -198,7 +198,7 @@ ;; Variables (defconst artist-version "1.2.6") -(defconst artist-maintainer-address "tab@lysator.liu.se") +(defconst artist-maintainer-address "tab@lysator.liu.se, bug-gnu-emacs@gnu.org") (defvar x-pointer-crosshair) diff --git a/lisp/textmodes/conf-mode.el b/lisp/textmodes/conf-mode.el index 93ff179229b..67f2d96d003 100644 --- a/lisp/textmodes/conf-mode.el +++ b/lisp/textmodes/conf-mode.el @@ -1,4 +1,4 @@ -;;; conf-mode.el --- Simple major mode for editing conf/ini/properties files +;;; conf-mode.el --- Simple major mode for editing conf/ini/properties files -*- coding: utf-8 -*- ;; Copyright (C) 2004-2013 Free Software Foundation, Inc. @@ -23,7 +23,7 @@ ;;; Commentary: ;; ;; This mode is designed to edit many similar varieties of Conf/Ini files and -;; Java properties. It started out from Aurélien Tisné's ini-mode. +;; Java properties. It started out from Aurélien Tisné's ini-mode. ;; `conf-space-keywords' were inspired by Robert Fitzgerald's any-ini-mode. diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index 52e97b8248d..467ac004420 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -749,8 +749,10 @@ OTHERCHARS slots of the alist should contain the same character set as casechars and otherchars in the LANGUAGE.aff file \(e.g., english.aff\). aspell and hunspell don't have this limitation.") -(defvar ispell-really-aspell nil) ; Non-nil if we can use aspell extensions. -(defvar ispell-really-hunspell nil) ; Non-nil if we can use hunspell extensions. +(defvar ispell-really-aspell nil + "Non-nil if we can use aspell extensions.") +(defvar ispell-really-hunspell nil + "Non-nil if we can use hunspell extensions.") (defvar ispell-encoding8-command nil "Command line option prefix to select encoding if supported, nil otherwise. If setting the encoding is supported by spellchecker and is selectable from @@ -773,6 +775,41 @@ here just for backwards compatibility.") (make-obsolete-variable 'ispell-aspell-supports-utf8 'ispell-encoding8-command "23.1") +(defvar ispell-hunspell-dictionary-equivs-alist + '(("american" "en_US") + ("brasileiro" "pt_BR") + ("british" "en_GB") + ("castellano" "es_ES") + ("castellano8" "es_ES") + ("czech" "cs_CZ") + ("dansk" "da_DK") + ("deutsch" "de_DE") + ("deutsch8" "de_DE") + ("english" "en_US") + ("esperanto" "eo") + ("esperanto-tex" "eo") + ("finnish" "fi_FI") + ("francais7" "fr_FR") + ("francais" "fr_FR") + ("francais-tex" "fr_FR") + ("german" "de_DE") + ("german8" "de_DE") + ("italiano" "it_IT") + ("nederlands" "nl_NL") + ("nederlands8" "nl_NL") + ("norsk" "nn_NO") + ("norsk7-tex" "nn_NO") + ("polish" "pl_PL") + ("portugues" "pt_PT") + ("russian" "ru_RU") + ("russianw" "ru_RU") + ("slovak" "sk_SK") + ("slovenian" "sl_SI") + ("svenska" "sv_SE") + ("hebrew" "he_IL")) + "Alist with matching hunspell dict names for standard dict names in + `ispell-dictionary-base-alist'.") + (defvar ispell-emacs-alpha-regexp (if (string-match "^[[:alpha:]]+$" "abcde") "[[:alpha:]]" @@ -825,7 +862,7 @@ Otherwise returns the library directory name, if that is defined." (if (string-match "\\`aspell" speller) "-v" "-vv")))) (goto-char (point-min)) (if interactivep - ;; report version information of ispell and ispell.el + ;; Report version information of ispell and ispell.el (progn (end-of-line) (setq result (concat (buffer-substring-no-properties (point-min) @@ -920,11 +957,12 @@ See `ispell-buffer-with-debug' for an example of use." (erase-buffer))) ispell-debug-buffer)) -(defsubst ispell-print-if-debug (string) - "Print STRING to `ispell-debug-buffer' buffer if enabled." +(defsubst ispell-print-if-debug (format &rest args) + "Print message to `ispell-debug-buffer' buffer if enabled." (if (boundp 'ispell-debug-buffer) (with-current-buffer ispell-debug-buffer - (insert string)))) + (goto-char (point-max)) + (insert (apply #'format format args))))) ;; The preparation of the menu bar menu must be autoloaded @@ -1094,6 +1132,176 @@ Return the new dictionary alist." (push (cons aliasname (cdr realdict)) alist)))))) alist)) +;; Make ispell.el work better with hunspell. + +(defvar ispell-hunspell-dict-paths-alist nil + "Alist of parsed hunspell dicts and associated affix files. +Will be used to parse corresponding .aff file and create associated +parameters to be inserted into `ispell-hunspell-dictionary-alist'. +Internal use.") + +(defvar ispell-hunspell-dictionary-alist nil + "Alist of parsed hunspell dicts and associated parameters. +This alist will initially contain names of found dicts. Associated +parameters will be added when dict is used for the first time. +Internal use.") + +(defun ispell-hunspell-fill-dictionary-entry (dict) + "Fill `ispell-dictionary-alist' uninitialized entries for `DICT' and aliases. +Value will be extracted from hunspell affix file and used for +all uninitialized dicts using that affix file." + (if (cadr (assoc dict ispell-dictionary-alist)) + (message "ispell-hfde: Non void entry for %s. Skipping.\n" dict) + (let ((dict-alias + (cadr (assoc dict ispell-hunspell-dictionary-equivs-alist))) + (use-for-dicts (list dict)) + (dict-args-cdr (cdr (ispell-parse-hunspell-affix-file dict))) + newlist) + ;; Get a list of uninitialized dicts using the same affix file. + (dolist (dict-equiv-alist-entry ispell-hunspell-dictionary-equivs-alist) + (let ((dict-equiv-key (car dict-equiv-alist-entry)) + (dict-equiv-value (cadr dict-equiv-alist-entry))) + (if (or (member dict dict-equiv-alist-entry) + (member dict-alias dict-equiv-alist-entry)) + (dolist ( tmp-dict (list dict-equiv-key dict-equiv-value)) + (if (cadr (assoc tmp-dict ispell-dictionary-alist)) + (ispell-print-if-debug + "ispell-hfde: %s already expanded. Skipping.\n" tmp-dict) + (add-to-list 'use-for-dicts tmp-dict)))))) + (ispell-print-if-debug + "ispell-hfde: Filling %s entry. Use for %s.\n" dict use-for-dicts) + ;; The final loop. + (dolist (entry ispell-dictionary-alist) + (if (member (car entry) use-for-dicts) + (add-to-list 'newlist + (append (list (car entry)) dict-args-cdr)) + (add-to-list 'newlist entry))) + (setq ispell-dictionary-alist newlist)))) + +(defun ispell-parse-hunspell-affix-file (dict-key) + "Parse hunspell affix file to extract parameters for `DICT-KEY'. +Return a list in `ispell-dictionary-alist' format." + (let ((affix-file (cadr (assoc dict-key ispell-hunspell-dict-paths-alist)))) + (unless affix-file + (error "ispell-phaf: No matching entry for %s.\n" dict-key)) + (if (not (file-exists-p affix-file)) + (error "ispell-phaf: File \"%s\" not found.\n" affix-file)) + (let ((dict-name (file-name-sans-extension + (file-name-nondirectory affix-file))) + otherchars-string otherchars-list) + (with-temp-buffer + (insert-file-contents affix-file) + (setq otherchars-string + (save-excursion + (goto-char (point-min)) + (if (search-forward-regexp "^WORDCHARS +" nil t ) + (buffer-substring (point) + (progn (end-of-line) (point)))))) + ;; Remove trailing whitespace and extra stuff. Make list if + ;; non-nil. + (setq otherchars-list + (if otherchars-string + (split-string + (if (string-match " +.*$" otherchars-string) + (replace-match "" nil nil otherchars-string) + otherchars-string) + "" t))) + + ;; Fill dict entry + (list dict-key + "[[:alpha:]]" + "[^[:alpha:]]" + (if otherchars-list + (regexp-opt otherchars-list) + "") + t ; many-otherchars-p: We can't tell, set to t. + (list "-d" dict-name) + nil ; extended-char-mode: not supported by hunspell! + 'utf-8))))) + +(defun ispell-find-hunspell-dictionaries () + "Look for installed hunspell dictionaries. +Will initialize `ispell-hunspell-dictionary-alist' and +`ispell-hunspell-dictionary-alist' after values found +and remove `ispell-hunspell-dictionary-equivs-alist' +entries if a specific dict was found." + (let ((hunspell-found-dicts + (split-string + (with-temp-buffer + (ispell-call-process ispell-program-name + null-device + t + nil + "-D") + (buffer-string)) + "[\n\r]+" + t)) + hunspell-default-dict + hunspell-default-dict-entry) + (dolist (dict hunspell-found-dicts) + (let* ((full-name (file-name-nondirectory dict)) + (basename (file-name-sans-extension full-name)) + (affix-file (concat dict ".aff"))) + (if (string-match "\\.aff$" dict) + ;; Found default dictionary + (if hunspell-default-dict + (error "ispell-fhd: Default dict already defined as %s. Not using %s.\n" + hunspell-default-dict dict) + (setq affix-file dict) + (setq hunspell-default-dict (list basename affix-file))) + (if (and (not (assoc basename ispell-hunspell-dict-paths-alist)) + (file-exists-p affix-file)) + ;; Entry has an associated .aff file and no previous value. + (let ((affix-file (expand-file-name affix-file))) + (ispell-print-if-debug + "++ ispell-fhd: dict-entry:%s name:%s basename:%s affix-file:%s\n" + dict full-name basename affix-file) + (add-to-list 'ispell-hunspell-dict-paths-alist + (list basename affix-file))) + (ispell-print-if-debug + "-- ispell-fhd: Skipping entry: %s\n" dict))))) + ;; Remove entry from aliases alist if explicit dict was found. + (let (newlist) + (dolist (dict ispell-hunspell-dictionary-equivs-alist) + (if (assoc (car dict) ispell-hunspell-dict-paths-alist) + (ispell-print-if-debug + "-- ispell-fhd: Excluding %s alias. Standalone dict found.\n" + (car dict)) + (add-to-list 'newlist dict))) + (setq ispell-hunspell-dictionary-equivs-alist newlist)) + ;; Add known hunspell aliases + (dolist (dict-equiv ispell-hunspell-dictionary-equivs-alist) + (let ((dict-equiv-key (car dict-equiv)) + (dict-equiv-value (cadr dict-equiv)) + (exclude-aliases (list ;; Exclude TeX aliases + "esperanto-tex" + "francais7" + "francais-tex" + "norsk7-tex"))) + (if (and (assoc dict-equiv-value ispell-hunspell-dict-paths-alist) + (not (assoc dict-equiv-key ispell-hunspell-dict-paths-alist)) + (not (member dict-equiv-key exclude-aliases))) + (let ((affix-file (cadr (assoc dict-equiv-value + ispell-hunspell-dict-paths-alist)))) + (ispell-print-if-debug "++ ispell-fhd: Adding alias %s -> %s.\n" + dict-equiv-key affix-file) + (add-to-list + 'ispell-hunspell-dict-paths-alist + (list dict-equiv-key affix-file)))))) + ;; Parse and set values for default dictionary. + (setq hunspell-default-dict (car hunspell-default-dict)) + (setq hunspell-default-dict-entry + (ispell-parse-hunspell-affix-file hunspell-default-dict)) + ;; Create an alist of found dicts with only names, except for default dict. + (setq ispell-hunspell-dictionary-alist + (list (append (list nil) (cdr hunspell-default-dict-entry)))) + (dolist (dict (mapcar 'car ispell-hunspell-dict-paths-alist)) + (if (string= dict hunspell-default-dict) + (add-to-list 'ispell-hunspell-dictionary-alist + hunspell-default-dict-entry) + (add-to-list 'ispell-hunspell-dictionary-alist + (list dict)))))) + ;; Set params according to the selected spellchecker (defvar ispell-last-program-name nil @@ -1119,24 +1327,82 @@ aspell is used along with Emacs).") (setq ispell-library-directory (ispell-check-version)) t) (error nil)) - ispell-really-aspell ispell-encoding8-command ispell-emacs-alpha-regexp) - (unless ispell-aspell-dictionary-alist - (ispell-find-aspell-dictionaries))) - - ;; Substitute ispell-dictionary-alist with the list of dictionaries - ;; corresponding to the given spellchecker. If a recent aspell, use - ;; the list of really installed dictionaries and add to it elements - ;; of the original list that are not present there. Allow distro info. + ;; auto-detection will only be used if spellchecker is not + ;; ispell, supports a way to set communication to UTF-8 and + ;; Emacs flavor supports [:alpha:] + (if ispell-really-aspell + (or ispell-aspell-dictionary-alist + (ispell-find-aspell-dictionaries)) + (if ispell-really-hunspell + (or ispell-hunspell-dictionary-alist + (ispell-find-hunspell-dictionaries))))) + + ;; Substitute ispell-dictionary-alist with the list of + ;; dictionaries corresponding to the given spellchecker. + ;; If a recent aspell or hunspell, use the list of really + ;; installed dictionaries and add to it elements of the original + ;; list that are not present there. Allow distro info. (let ((found-dicts-alist - (if (and ispell-really-aspell - ispell-encoding8-command) - ispell-aspell-dictionary-alist + (if (and ispell-encoding8-command + ispell-emacs-alpha-regexp) + (if ispell-really-aspell + ispell-aspell-dictionary-alist + (if ispell-really-hunspell + ispell-hunspell-dictionary-alist)) nil)) + (ispell-dictionary-base-alist ispell-dictionary-base-alist) ispell-base-dicts-override-alist ; Override only base-dicts-alist all-dicts-alist) + ;; While ispell and aspell (through aliases) use the traditional + ;; dict naming originally expected by ispell.el, hunspell + ;; uses locale based names with no alias. We need to map + ;; standard names to locale based names to make default dict + ;; definitions available for hunspell. + (if ispell-really-hunspell + (let (tmp-dicts-alist) + (dolist (adict ispell-dictionary-base-alist) + (let* ((dict-name (nth 0 adict)) + (dict-equiv + (cadr (assoc dict-name + ispell-hunspell-dictionary-equivs-alist))) + (ispell-args (nth 5 adict)) + (ispell-args-has-d (member "-d" ispell-args)) + skip-dict) + ;; Remove "-d" option from `ispell-args' if present + (if ispell-args-has-d + (let ((ispell-args-after-d + (cdr (cdr ispell-args-has-d))) + (ispell-args-before-d + (butlast ispell-args (length ispell-args-has-d)))) + (setq ispell-args + (nconc ispell-args-before-d + ispell-args-after-d)))) + ;; Unless default dict, re-add "-d" option with the mapped value + (if dict-name + (if dict-equiv + (nconc ispell-args (list "-d" dict-equiv)) + (message + "ispell-set-spellchecker-params: Missing hunspell equiv for \"%s\". Skipping." + dict-name) + (setq skip-dict t))) + + (unless skip-dict + (add-to-list 'tmp-dicts-alist + (list + dict-name ; dict name + (nth 1 adict) ; casechars + (nth 2 adict) ; not-casechars + (nth 3 adict) ; otherchars + (nth 4 adict) ; many-otherchars-p + ispell-args ; ispell-args + (nth 6 adict) ; extended-character-mode + (nth 7 adict) ; dict encoding + )))) + (setq ispell-dictionary-base-alist tmp-dicts-alist)))) + (run-hooks 'ispell-initialize-spellchecker-hook) ;; Add dicts to ``ispell-dictionary-alist'' unless already present. @@ -1154,19 +1420,21 @@ aspell is used along with Emacs).") (if ispell-emacs-alpha-regexp (let (tmp-dicts-alist) (dolist (adict ispell-dictionary-alist) - (add-to-list 'tmp-dicts-alist - (list - (nth 0 adict) ; dict name - "[[:alpha:]]" ; casechars - "[^[:alpha:]]" ; not-casechars - (nth 3 adict) ; otherchars - (nth 4 adict) ; many-otherchars-p - (nth 5 adict) ; ispell-args - (nth 6 adict) ; extended-character-mode - (if ispell-encoding8-command - 'utf-8 - (nth 7 adict))))) - (setq ispell-dictionary-alist tmp-dicts-alist))))) + (if (cadr adict) ;; Do not touch hunspell uninitialized entries + (add-to-list 'tmp-dicts-alist + (list + (nth 0 adict) ; dict name + "[[:alpha:]]" ; casechars + "[^[:alpha:]]" ; not-casechars + (nth 3 adict) ; otherchars + (nth 4 adict) ; many-otherchars-p + (nth 5 adict) ; ispell-args + (nth 6 adict) ; extended-character-mode + (if ispell-encoding8-command + 'utf-8 + (nth 7 adict)))) + (add-to-list 'tmp-dicts-alist adict))) + (setq ispell-dictionary-alist tmp-dicts-alist))))) (defun ispell-valid-dictionary-list () "Return a list of valid dictionaries. @@ -2519,7 +2787,10 @@ The variable `ispell-highlight-face' selects the face to use for highlighting." (regexp-quote (buffer-substring-no-properties start end)) "\\b")) (isearch-regexp t) - (isearch-case-fold-search nil)) + (isearch-case-fold-search nil) + (isearch-forward t) + (isearch-other-end start) + (isearch-error nil)) (isearch-lazy-highlight-new-loop (if (boundp 'reg-start) reg-start) (if (boundp 'reg-end) reg-end))) @@ -2651,6 +2922,12 @@ When asynchronous processes are not supported, `run' is always returned." Keeps argument list for future Ispell invocations for no async support." ;; `ispell-current-dictionary' and `ispell-current-personal-dictionary' ;; are properly set in `ispell-internal-change-dictionary'. + + ;; Parse hunspell affix file if using hunspell and entry is uninitialized. + (if ispell-really-hunspell + (or (cadr (assoc ispell-current-dictionary ispell-dictionary-alist)) + (ispell-hunspell-fill-dictionary-entry ispell-current-dictionary))) + (let* ((default-directory (if (and (file-directory-p default-directory) (file-readable-p default-directory)) @@ -2938,29 +3215,25 @@ amount for last line processed." (query-fcc t) in-comment key) (ispell-print-if-debug - (concat - (format - "ispell-region: (ispell-skip-region-list):\n%s\n" - (ispell-skip-region-list)) - (format - "ispell-region: (ispell-begin-skip-region-regexp):\n%s\n" - (ispell-begin-skip-region-regexp)) - "ispell-region: Search for first region to skip after (ispell-begin-skip-region-regexp)\n")) + "ispell-region: (ispell-skip-region-list):\n%s +ispell-region: (ispell-begin-skip-region-regexp):\n%s +ispell-region: Search for first region to skip after (ispell-begin-skip-region-regexp)\n" + (ispell-skip-region-list) + (ispell-begin-skip-region-regexp)) (if (re-search-forward (ispell-begin-skip-region-regexp) reg-end t) (progn (setq key (match-string-no-properties 0)) (set-marker skip-region-start (- (point) (length key))) (goto-char reg-start) (ispell-print-if-debug - (format "ispell-region: First skip: %s at (pos,line,column): (%s,%s,%s).\n" - key - (save-excursion (goto-char skip-region-start) (point)) - (line-number-at-pos skip-region-start) - (save-excursion (goto-char skip-region-start) (current-column)))))) + "ispell-region: First skip: %s at (pos,line,column): (%s,%s,%s).\n" + key + (save-excursion (goto-char skip-region-start) (point)) + (line-number-at-pos skip-region-start) + (save-excursion (goto-char skip-region-start) (current-column))))) (ispell-print-if-debug - (format - "ispell-region: Continue spell-checking with %s and %s dictionary...\n" - program-basename dictionary)) + "ispell-region: Continue spell-checking with %s and %s dictionary...\n" + program-basename dictionary) (set-marker rstart reg-start) (set-marker ispell-region-end reg-end) (while (and (not ispell-quit) @@ -2995,11 +3268,11 @@ amount for last line processed." (- (point) (length key))) (goto-char rstart) (ispell-print-if-debug - (format "ispell-region: Next skip: %s at (pos,line,column): (%s,%s,%s).\n" - key - (save-excursion (goto-char skip-region-start) (point)) - (line-number-at-pos skip-region-start) - (save-excursion (goto-char skip-region-start) (current-column))))) + "ispell-region: Next skip: %s at (pos,line,column): (%s,%s,%s).\n" + key + (save-excursion (goto-char skip-region-start) (point)) + (line-number-at-pos skip-region-start) + (save-excursion (goto-char skip-region-start) (current-column)))) (set-marker skip-region-start nil)))) (setq reg-end (max (point) (if (marker-position skip-region-start) @@ -3018,9 +3291,8 @@ amount for last line processed." (string (ispell-get-line ispell-start ispell-end add-comment))) (ispell-print-if-debug - (format - "ispell-region: string pos (%s->%s), eol: %s, [in-comment]: [%s], [add-comment]: [%s], [string]: [%s]\n" - ispell-start ispell-end (point-at-eol) in-comment add-comment string)) + "ispell-region: string pos (%s->%s), eol: %s, [in-comment]: [%s], [add-comment]: [%s], [string]: [%s]\n" + ispell-start ispell-end (point-at-eol) in-comment add-comment string) (if add-comment ; account for comment chars added (setq ispell-start (- ispell-start (length add-comment)) add-comment nil)) @@ -3307,118 +3579,118 @@ Returns the sum SHIFT due to changes in word replacements." (let* ((ispell-pipe-word (car poss)) (actual-point (marker-position word-start)) (actual-line (line-number-at-pos actual-point)) - (actual-column (save-excursion (goto-char actual-point) (current-column)))) + (actual-column (save-excursion (goto-char actual-point) + (current-column)))) (ispell-print-if-debug - (concat - "ispell-process-line: Ispell misalignment error:\n" - (format " [Word from ispell pipe]: [%s], actual (point,line,column): (%s,%s,%s)\n" - ispell-pipe-word actual-point actual-line actual-column))) - (error (concat "Ispell misalignment: word " - "`%s' point %d; probably incompatible versions") - ispell-pipe-word actual-point))) - ;; ispell-cmd-loop can go recursive & change buffer - (if ispell-keep-choices-win - (setq replace (ispell-command-loop - (car (cdr (cdr poss))) - (car (cdr (cdr (cdr poss)))) - (car poss) (marker-position word-start) - (+ word-len (marker-position word-start)))) - (save-window-excursion - (setq replace (ispell-command-loop - (car (cdr (cdr poss))) - (car (cdr (cdr (cdr poss)))) - (car poss) (marker-position word-start) - (+ word-len (marker-position word-start)))))) - - (goto-char word-start) - ;; Recheck when query replace edit changes misspelled word. - ;; Error in tex mode when a potential math mode change exists. - (if (and replace (listp replace) (= 2 (length replace))) - (if (and (eq ispell-parser 'tex) - (string-match "[\\\\][]()[]\\|\\\\begin\\|\\$" - (regexp-quote string))) - (error - "Don't start query replace on a line with math characters" - ) - (set-marker line-end (point)) - (setq ispell-filter nil - recheck-region t))) - - ;; insert correction if needed - (cond - ((or (null replace) - (equal 0 replace)) ; ACCEPT/INSERT - (if (equal 0 replace) ; BUFFER-LOCAL DICT ADD - (ispell-add-per-file-word-list (car poss))) - ;; do not recheck accepted word on this line - (setq accept-list (cons (car poss) accept-list))) - (t ; replacement word selected or entered - (delete-region (point) (+ word-len (point))) - (if (not (listp replace)) - (progn - (insert replace) ; insert dictionary word - (ispell-send-replacement (car poss) replace) - (setq accept-list (cons replace accept-list))) - (let ((replace-word (car replace))) - ;; Recheck hand entered replacement word - (insert replace-word) - (ispell-send-replacement (car poss) replace-word) - (if (car (cdr replace)) - (save-window-excursion - (delete-other-windows) ; to correctly show help. - ;; Assume case-replace & - ;; case-fold-search correct? - (query-replace (car poss) (car replace) t))) - (goto-char word-start) - ;; do not recheck if already accepted - (if (member replace-word accept-list) - (setq accept-list (cons replace-word accept-list) - replace replace-word) - (let ((region-end (copy-marker ispell-region-end))) - (setq recheck-region ispell-filter - ispell-filter nil ; save filter - shift 0 ; already accounted - shift (ispell-region - word-start - (+ word-start (length replace-word)) - t shift)) - (if (null shift) ; quitting check. - (setq shift 0)) - (set-marker ispell-region-end region-end) - (set-marker region-end nil) - (setq ispell-filter recheck-region - recheck-region nil - replace replace-word))))) - - (setq shift (+ shift (- (length replace) word-len))) - - ;; Move line-start across word... - ;; new shift function does this now... - ;;(set-marker line-start (+ line-start - ;; (- (length replace) - ;; (length (car poss))))) - )) - (if (not ispell-quit) + "ispell-process-line: Ispell misalignment error: + [Word from ispell pipe]: [%s], actual (point,line,column): (%s,%s,%s)\n" + ispell-pipe-word actual-point actual-line actual-column) + (error (concat "Ispell misalignment: word " + "`%s' point %d; probably incompatible versions") + ispell-pipe-word actual-point))) + ;; ispell-cmd-loop can go recursive & change buffer + (if ispell-keep-choices-win + (setq replace (ispell-command-loop + (car (cdr (cdr poss))) + (car (cdr (cdr (cdr poss)))) + (car poss) (marker-position word-start) + (+ word-len (marker-position word-start)))) + (save-window-excursion + (setq replace (ispell-command-loop + (car (cdr (cdr poss))) + (car (cdr (cdr (cdr poss)))) + (car poss) (marker-position word-start) + (+ word-len (marker-position word-start)))))) + + (goto-char word-start) + ;; Recheck when query replace edit changes misspelled word. + ;; Error in tex mode when a potential math mode change exists. + (if (and replace (listp replace) (= 2 (length replace))) + (if (and (eq ispell-parser 'tex) + (string-match "[\\\\][]()[]\\|\\\\begin\\|\\$" + (regexp-quote string))) + (error + "Don't start query replace on a line with math characters" + ) + (set-marker line-end (point)) + (setq ispell-filter nil + recheck-region t))) + + ;; Insert correction if needed. + (cond + ((or (null replace) + (equal 0 replace)) ; ACCEPT/INSERT + (if (equal 0 replace) ; BUFFER-LOCAL DICT ADD + (ispell-add-per-file-word-list (car poss))) + ;; Do not recheck accepted word on this line. + (setq accept-list (cons (car poss) accept-list))) + (t ; Replacement word selected or entered. + (delete-region (point) (+ word-len (point))) + (if (not (listp replace)) + (progn + (insert replace) ; Insert dictionary word. + (ispell-send-replacement (car poss) replace) + (setq accept-list (cons replace accept-list))) + (let ((replace-word (car replace))) + ;; Recheck hand entered replacement word. + (insert replace-word) + (ispell-send-replacement (car poss) replace-word) + (if (car (cdr replace)) + (save-window-excursion + (delete-other-windows) ; to correctly show help. + ;; Assume case-replace & + ;; case-fold-search correct? + (query-replace (car poss) (car replace) t))) + (goto-char word-start) + ;; Do not recheck if already accepted. + (if (member replace-word accept-list) + (setq accept-list (cons replace-word accept-list) + replace replace-word) + (let ((region-end (copy-marker ispell-region-end))) + (setq recheck-region ispell-filter + ispell-filter nil ; Save filter. + shift 0 ; Already accounted. + shift (ispell-region + word-start + (+ word-start (length replace-word)) + t shift)) + (if (null shift) ; Quitting check. + (setq shift 0)) + (set-marker ispell-region-end region-end) + (set-marker region-end nil) + (setq ispell-filter recheck-region + recheck-region nil + replace replace-word))))) + + (setq shift (+ shift (- (length replace) word-len))) + + ;; Move line-start across word... + ;; new shift function does this now... + ;;(set-marker line-start (+ line-start + ;; (- (length replace) + ;; (length (car poss))))) + )) + (if (not ispell-quit) ;; FIXME: remove redundancy with identical code above. - (let (message-log-max) - (message + (let (message-log-max) + (message "Continuing spelling check using %s with %s dictionary..." (file-name-nondirectory ispell-program-name) (or ispell-current-dictionary "default")))) - (sit-for 0) - (setq ispell-start (marker-position line-start) - ispell-end (marker-position line-end)) - ;; Adjust markers when end of region lost from highlighting. - (if (and (not recheck-region) + (sit-for 0) + (setq ispell-start (marker-position line-start) + ispell-end (marker-position line-end)) + ;; Adjust markers when end of region lost from highlighting. + (if (and (not recheck-region) (< ispell-end (+ word-start word-len))) - (setq ispell-end (+ word-start word-len))) - (if (= word-start ispell-region-end) - (set-marker ispell-region-end (+ word-start word-len))) - ;; going out of scope - unneeded - (set-marker line-start nil) - (set-marker word-start nil) - (set-marker line-end nil))) - ;; finished with misspelling! + (setq ispell-end (+ word-start word-len))) + (if (= word-start ispell-region-end) + (set-marker ispell-region-end (+ word-start word-len))) + ;; Going out of scope - unneeded. + (set-marker line-start nil) + (set-marker word-start nil) + (set-marker line-end nil))) + ;; Finished with misspelling! (setq ispell-filter (cdr ispell-filter))) shift)) diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el index 4e17af1acb4..e773b53a73f 100644 --- a/lisp/textmodes/paragraphs.el +++ b/lisp/textmodes/paragraphs.el @@ -379,8 +379,8 @@ the number of paragraphs marked equals ARG. If ARG is negative, point is put at end of this paragraph, mark is put at beginning of this or a previous paragraph. -Interactively, if this command is repeated -or (in Transient Mark mode) if the mark is active, +Interactively (or if ALLOW-EXTEND is non-nil), if this command is +repeated or (in Transient Mark mode) if the mark is active, it marks the next ARG paragraphs after the ones already marked." (interactive "p\np") (unless arg (setq arg 1)) diff --git a/lisp/textmodes/po.el b/lisp/textmodes/po.el index 331f220f95b..610227af794 100644 --- a/lisp/textmodes/po.el +++ b/lisp/textmodes/po.el @@ -1,8 +1,8 @@ -;;; po.el --- basic support of PO translation files -*- coding: latin-1; -*- +;;; po.el --- basic support of PO translation files -*- coding: utf-8; -*- ;; Copyright (C) 1995-1998, 2000-2013 Free Software Foundation, Inc. -;; Authors: François Pinard <pinard@iro.umontreal.ca>, +;; Authors: François Pinard <pinard@iro.umontreal.ca>, ;; Greg McGary <gkm@magilla.cichlid.com>, ;; Bruno Haible <bruno@clisp.org>. ;; Keywords: i18n, files diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el index 3b294e62b01..079101b56ee 100644 --- a/lisp/textmodes/reftex-cite.el +++ b/lisp/textmodes/reftex-cite.el @@ -1043,6 +1043,7 @@ While entering the regexp, completion on knows citation keys is possible. ((= l ?k) (reftex-get-bib-field "key" entry)) ((= l ?m) (reftex-get-bib-field "month" entry)) ((= l ?n) (reftex-get-bib-field "number" entry)) + ((= l ?N) (reftex-get-bib-field "note" entry)) ((= l ?o) (reftex-get-bib-field "organization" entry)) ((= l ?p) (reftex-get-bib-field "pages" entry)) ((= l ?P) (car (split-string @@ -1050,6 +1051,7 @@ While entering the regexp, completion on knows citation keys is possible. "[- .]+"))) ((= l ?s) (reftex-get-bib-field "school" entry)) ((= l ?u) (reftex-get-bib-field "publisher" entry)) + ((= l ?U) (reftex-get-bib-field "url" entry)) ((= l ?r) (reftex-get-bib-field "address" entry)) ((= l ?t) (reftex-get-bib-field "title" entry)) ((= l ?T) (reftex-abbreviate-title diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el index db08ca3a514..2a5c9c55866 100644 --- a/lisp/textmodes/reftex-vars.el +++ b/lisp/textmodes/reftex-vars.el @@ -1125,12 +1125,12 @@ In the format, the following percent escapes will be expanded. %e Works like %a, but on list of editor names. (%2e and %E work a well) It is also possible to access all other BibTeX database fields: -%b booktitle %c chapter %d edition %h howpublished -%i institution %j journal %k key %m month -%n number %o organization %p pages %P first page -%r address %s school %u publisher %t title -%v volume %y year -%B booktitle, abbreviated %T title, abbreviated +%b booktitle %c chapter %d edition %h howpublished +%i institution %j journal %k key %m month +%n number %N note %o organization %p pages +%P first page %r address %s school %u publisher +%U url %t title %v volume %y year +%B booktitle, abbreviated %T title, abbreviated Usually, only %l is needed. The other stuff is mainly for the echo area display, and for (setq reftex-comment-citations t). diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el index a41409fc897..d5bb0170cd9 100644 --- a/lisp/textmodes/reftex.el +++ b/lisp/textmodes/reftex.el @@ -2464,7 +2464,7 @@ information about your RefTeX version and configuration." (require 'reporter) (let ((reporter-prompt-for-summary-p "Bug report subject: ")) (reporter-submit-bug-report - "bug-auctex@gnu.org" + "bug-auctex@gnu.org, bug-gnu-emacs@gnu.org" reftex-version (list 'window-system 'reftex-plug-into-AUCTeX) diff --git a/lisp/textmodes/remember.el b/lisp/textmodes/remember.el index 6ff4c720b71..eeb04ef250f 100644 --- a/lisp/textmodes/remember.el +++ b/lisp/textmodes/remember.el @@ -432,8 +432,7 @@ If you want to remember a region, supply a universal prefix to ;;;###autoload (defun remember-clipboard () "Remember the contents of the current clipboard. -Most useful for remembering things from Netscape or other X Windows -application." +Most useful for remembering things from other applications." (interactive) (remember (current-kill 0))) diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index b7288772034..33dfa277330 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -46,9 +46,26 @@ :type 'integer :group 'sgml) +(defcustom sgml-xml-mode nil + "When non-nil, tag insertion functions will be XML-compliant. +It is set to be buffer-local when the file has +a DOCTYPE or an XML declaration." + :type 'boolean + :version "22.1" + :group 'sgml) + (defcustom sgml-transformation-function 'identity "Default value for `skeleton-transformation-function' in SGML mode." :type 'function + :initialize 'custom-initialize-default + :set (lambda (sym val) + (set-default sym val) + (mapc (lambda (buff) + (with-current-buffer buff + (and (derived-mode-p 'sgml-mode) + (not sgml-xml-mode) + (setq skeleton-transformation-function val)))) + (buffer-list))) :group 'sgml) (put 'sgml-transformation-function 'variable-interactive @@ -295,8 +312,8 @@ Any terminating `>' or `/' is not matched.") (defconst sgml-syntax-propertize-function (syntax-propertize-rules - ;; Use the `b' style of comments to avoid interference with the -- ... -- - ;; comments recognized when `sgml-specials' includes ?-. + ;; Use the `b' style of comments to avoid interference with the -- ... -- + ;; comments recognized when `sgml-specials' includes ?-. ;; FIXME: beware of <!--> blabla <!--> !! ("\\(<\\)!--" (1 "< b")) ("--[ \t\n]*\\(>\\)" (1 "> b")) @@ -305,7 +322,7 @@ Any terminating `>' or `/' is not matched.") ;; going to change, so as not to need to flush the data we just computed. ("\"" (0 (if (prog1 (zerop (car (syntax-ppss (match-beginning 0)))) (goto-char (match-end 0))) - ".")))) + (string-to-syntax "."))))) "Syntactic keywords for `sgml-mode'.") ;; internal @@ -364,14 +381,6 @@ an optional alist of possible values." (string :tag "Description"))) :group 'sgml) -(defcustom sgml-xml-mode nil - "When non-nil, tag insertion functions will be XML-compliant. -It is set to be buffer-local when the file has -a DOCTYPE or an XML declaration." - :type 'boolean - :version "22.1" - :group 'sgml) - (defvar sgml-empty-tags nil "List of tags whose !ELEMENT definition says EMPTY.") @@ -635,10 +644,8 @@ This only works for Latin-1 input." (define-skeleton sgml-tag "Prompt for a tag and insert it, optionally with attributes. Completion and configuration are done according to `sgml-tag-alist'. -If you like tags and attributes in uppercase do \\[set-variable] -`skeleton-transformation-function' RET `upcase' RET, or put this -in your `.emacs': - (setq sgml-transformation-function 'upcase)" +If you like tags and attributes in uppercase, customize +`sgml-transformation-function' to 'upcase." (funcall (or skeleton-transformation-function 'identity) (setq sgml-tag-last (completing-read diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index 480ab8a581a..7b16262233d 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -271,9 +271,7 @@ otherwise the value of `tex-start-options', the \(shell-quoted\) value of `tex-start-commands', and the file name are added at the end with blanks as separators. -In TeX, LaTeX, and SliTeX Mode this variable becomes buffer local. -In these modes, use \\[set-variable] if you want to change it for the -current buffer.") +In TeX, LaTeX, and SliTeX Mode this variable becomes buffer local.") (defvar tex-trailer nil "String appended after the end of a region sent to TeX by \\[tex-region].") diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el index 3ba19bb9f40..f25fa87d0ec 100644 --- a/lisp/textmodes/tildify.el +++ b/lisp/textmodes/tildify.el @@ -40,7 +40,7 @@ ;; The default variable settings are suited for Czech, so do not try to ;; understand them if you are not familiar with Czech grammar and spelling. ;; -;; The algorithm was inspired by Petr Ol¹ák's program `vlna'. Abilities of +;; The algorithm was inspired by Petr Olšák's program `vlna'. Abilities of ;; `tildify.el' are a little limited; if you have improvement suggestions, let ;; me know. @@ -349,7 +349,7 @@ further questions)." ;; Local variables: -;; coding: iso-latin-2 +;; coding: utf-8 ;; End: ;;; tildify.el ends here diff --git a/lisp/textmodes/two-column.el b/lisp/textmodes/two-column.el index c67aa338791..23e90552096 100644 --- a/lisp/textmodes/two-column.el +++ b/lisp/textmodes/two-column.el @@ -259,9 +259,9 @@ if that value is non-nil. These buffers can be edited separately, for example with `fill-paragraph'. If you want to disable parallel scrolling temporarily, use \\[2C-toggle-autoscroll] . -If you include long lines, i.e which will span both columns (eg. -source code), they should be in what will be the first column, with -the associated buffer having empty lines next to them. +If you include long lines that span both columns (e.g., source +code), they should be in what will be the first column, with the +associated buffer having empty lines next to them. Potential uses are writing bilingual texts, or editing the comments of a source code. See the file lisp/two-column.el for detailed examples. diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el index e1e3e8e1e46..9526cb76e74 100644 --- a/lisp/thingatpt.el +++ b/lisp/thingatpt.el @@ -232,7 +232,7 @@ The bounds of THING are determined by `bounds-of-thing-at-point'." (put 'defun 'end-op 'end-of-defun) (put 'defun 'forward-op 'end-of-defun) -;; Filenames and URLs www.com/foo%32bar +;; Filenames (defvar thing-at-point-file-name-chars "-~/[:alnum:]_.${}#%,:" "Characters allowable in filenames.") @@ -248,94 +248,224 @@ The bounds of THING are determined by `bounds-of-thing-at-point'." (forward-char) (goto-char (point-min))))) +;; URIs + +(defvar thing-at-point-beginning-of-url-regexp nil + "Regexp matching the beginning of a well-formed URI. +If nil, construct the regexp from `thing-at-point-uri-schemes'.") + (defvar thing-at-point-url-path-regexp "[^]\t\n \"'<>[^`{}]*[^]\t\n \"'<>[^`{}.,;]+" - "A regular expression probably matching the host and filename or e-mail part of a URL.") + "Regexp matching the host and filename or e-mail part of a URL.") (defvar thing-at-point-short-url-regexp (concat "[-A-Za-z0-9]+\\.[-A-Za-z0-9.]+" thing-at-point-url-path-regexp) - "A regular expression probably matching a URL without an access scheme. -Hostname matching is stricter in this case than for -``thing-at-point-url-regexp''.") + "Regexp matching a URI without a scheme component.") (defvar thing-at-point-uri-schemes ;; Officials from http://www.iana.org/assignments/uri-schemes.html - '("ftp://" "http://" "gopher://" "mailto:" "news:" "nntp:" - "telnet://" "wais://" "file:/" "prospero:" "z39.50s:" "z39.50r:" - "cid:" "mid:" "vemmi:" "service:" "imap:" "nfs:" "acap:" "rtsp:" - "tip:" "pop:" "data:" "dav:" "opaquelocktoken:" "sip:" "tel:" "fax:" - "modem:" "ldap:" "https://" "soap.beep:" "soap.beeps:" "urn:" "go:" - "afs:" "tn3270:" "mailserver:" - "crid:" "dict:" "dns:" "dtn:" "h323:" "im:" "info:" "ipp:" - "iris.beep:" "mtqp:" "mupdate:" "pres:" "sips:" "snmp:" "tag:" - "tftp:" "xmlrpc.beep:" "xmlrpc.beeps:" "xmpp:" - ;; Compatibility - "snews:" "irc:" "mms://" "mmsh://") - "Uniform Resource Identifier (URI) Schemes.") - -(defvar thing-at-point-url-regexp - (concat "\\<\\(" (mapconcat 'identity thing-at-point-uri-schemes "\\|") "\\)" - thing-at-point-url-path-regexp) - "A regular expression probably matching a complete URL.") - -(defvar thing-at-point-markedup-url-regexp - "<URL:[^>]+>" - "A regular expression matching a URL marked up per RFC1738. -This may contain whitespace (including newlines) .") + '("aaa://" "about:" "acap://" "apt:" "bzr://" "bzr+ssh://" + "attachment:/" "chrome://" "cid:" "content://" "crid://" "cvs://" + "data:" "dav:" "dict://" "doi:" "dns:" "dtn:" "feed:" "file:/" + "finger://" "fish://" "ftp://" "geo:" "git://" "go:" "gopher://" + "h323:" "http://" "https://" "im:" "imap://" "info:" "ipp:" + "irc://" "irc6://" "ircs://" "iris.beep:" "jar:" "ldap://" + "ldaps://" "mailto:" "mid:" "mtqp://" "mupdate://" "news:" + "nfs://" "nntp://" "opaquelocktoken:" "pop://" "pres:" + "resource://" "rmi://" "rsync://" "rtsp://" "rtspu://" "service:" + "sftp://" "sip:" "sips:" "smb://" "sms:" "snmp://" "soap.beep://" + "soap.beeps://" "ssh://" "svn://" "svn+ssh://" "tag:" "tel:" + "telnet://" "tftp://" "tip://" "tn3270://" "udp://" "urn:" + "uuid:" "vemmi://" "webcal://" "xri://" "xmlrpc.beep://" + "xmlrpc.beeps://" "z39.50r://" "z39.50s://" "xmpp:" + ;; Compatibility + "fax:" "mms://" "mmsh://" "modem:" "prospero:" "snews:" + "wais://") + "List of URI schemes recognized by `thing-at-point-url-at-point'. +Each string in this list should correspond to the start of a +URI's scheme component, up to and including the trailing // if +the scheme calls for that to be present.") + +(defvar thing-at-point-markedup-url-regexp "<URL:\\([^<>\n]+\\)>" + "Regexp matching a URL marked up per RFC1738. +This kind of markup was formerly recommended as a way to indicate +URIs, but as of RFC 3986 it is no longer recommended. +Subexpression 1 should contain the delimited URL.") + +(defvar thing-at-point-newsgroup-regexp + "\\`[[:lower:]]+\\.[-+[:lower:]_0-9.]+\\'" + "Regexp matching a newsgroup name.") + +(defvar thing-at-point-newsgroup-heads + '("alt" "comp" "gnu" "misc" "news" "sci" "soc" "talk") + "Used by `thing-at-point-newsgroup-p' if gnus is not running.") + +(defvar thing-at-point-default-mail-uri-scheme "mailto" + "Default scheme for ill-formed URIs that look like <foo@example.com>. +If nil, do not give such URIs a scheme.") (put 'url 'bounds-of-thing-at-point 'thing-at-point-bounds-of-url-at-point) -(defun thing-at-point-bounds-of-url-at-point () - (let ((strip (thing-at-point-looking-at - thing-at-point-markedup-url-regexp))) ;; (url "") short - (if (or strip - (thing-at-point-looking-at thing-at-point-url-regexp) - ;; Access scheme omitted? - ;; (setq short (thing-at-point-looking-at - ;; thing-at-point-short-url-regexp)) - ) - (let ((beginning (match-beginning 0)) - (end (match-end 0))) - (when strip - (setq beginning (+ beginning 5)) - (setq end (- end 1))) - (cons beginning end))))) + +(defun thing-at-point-bounds-of-url-at-point (&optional lax) + "Return a cons cell containing the start and end of the URI at point. +Try to find a URI using `thing-at-point-markedup-url-regexp'. +If that fails, try with `thing-at-point-beginning-of-url-regexp'. +If that also fails, and optional argument LAX is non-nil, return +the bounds of a possible ill-formed URI (one lacking a scheme)." + ;; Look for the old <URL:foo> markup. If found, use it. + (or (thing-at-point--bounds-of-markedup-url) + ;; Otherwise, find the bounds within which a URI may exist. The + ;; method is similar to `ffap-string-at-point'. Note that URIs + ;; may contain parentheses but may not contain spaces (RFC3986). + (let* ((allowed-chars "--:=&?$+@-Z_[:alpha:]~#,%;*()!'") + (skip-before "^[0-9a-zA-Z]") + (skip-after ":;.,!?") + (pt (point)) + (beg (save-excursion + (skip-chars-backward allowed-chars) + (skip-chars-forward skip-before pt) + (point))) + (end (save-excursion + (skip-chars-forward allowed-chars) + (skip-chars-backward skip-after pt) + (point)))) + (or (thing-at-point--bounds-of-well-formed-url beg end pt) + (if lax (cons beg end)))))) + +(defun thing-at-point--bounds-of-markedup-url () + (when thing-at-point-markedup-url-regexp + (let ((case-fold-search t) + (pt (point)) + (beg (line-beginning-position)) + (end (line-end-position)) + found) + (save-excursion + (goto-char beg) + (while (and (not found) + (<= (point) pt) + (< (point) end)) + (and (re-search-forward thing-at-point-markedup-url-regexp + end 1) + (> (point) pt) + (setq found t)))) + (if found + (cons (match-beginning 1) (match-end 1)))))) + +(defun thing-at-point--bounds-of-well-formed-url (beg end pt) + (save-excursion + (goto-char beg) + (let (url-beg paren-end regexp) + (save-restriction + (narrow-to-region beg end) + ;; The scheme component must either match at BEG, or have no + ;; other alphanumerical ASCII characters before it. + (setq regexp (concat "\\(?:\\`\\|[^a-zA-Z0-9]\\)\\(" + (or thing-at-point-beginning-of-url-regexp + (regexp-opt thing-at-point-uri-schemes)) + "\\)")) + (and (re-search-forward regexp end t) + ;; URI must have non-empty contents. + (< (point) end) + (setq url-beg (match-beginning 1)))) + (when url-beg + ;; If there is an open paren before the URI, truncate to the + ;; matching close paren. + (and (> url-beg (point-min)) + (eq (car-safe (syntax-after (1- url-beg))) 4) + (save-restriction + (narrow-to-region (1- url-beg) (min end (point-max))) + (setq paren-end (ignore-errors + (scan-lists (1- url-beg) 1 0)))) + (not (blink-matching-check-mismatch (1- url-beg) paren-end)) + (setq end (1- paren-end))) + (cons url-beg end))))) (put 'url 'thing-at-point 'thing-at-point-url-at-point) -(defun thing-at-point-url-at-point () - "Return the URL around or before point. -Search backwards for the start of a URL ending at or after point. If -no URL found, return nil. The access scheme will be prepended if -absent: \"mailto:\" if the string contains \"@\", \"ftp://\" if it -starts with \"ftp\" and not \"ftp:/\", or \"http://\" by default." - - (let ((url "") short strip) - (if (or (setq strip (thing-at-point-looking-at - thing-at-point-markedup-url-regexp)) - (thing-at-point-looking-at thing-at-point-url-regexp) - ;; Access scheme omitted? - (setq short (thing-at-point-looking-at - thing-at-point-short-url-regexp))) - (progn - (setq url (buffer-substring-no-properties (match-beginning 0) - (match-end 0))) - (and strip (setq url (substring url 5 -1))) ; Drop "<URL:" & ">" - ;; strip whitespace - (while (string-match "[ \t\n\r]+" url) - (setq url (replace-match "" t t url))) - (and short (setq url (concat (cond ((string-match "^[a-zA-Z]+:" url) - ;; already has a URL scheme. - "") - ((string-match "@" url) - "mailto:") - ;; e.g. ftp.swiss... or ftp-swiss... - ((string-match "^ftp" url) - "ftp://") - (t "http://")) - url))) - (if (string-equal "" url) - nil - url))))) +(defun thing-at-point-url-at-point (&optional lax bounds) + "Return the URL around or before point. +If no URL is found, return nil. + +If optional argument LAX is non-nil, look for URLs that are not +well-formed, such as foo@bar or <nobody>. + +If optional arguments BOUNDS are non-nil, it should be a cons +cell of the form (START . END), containing the beginning and end +positions of the URI. Otherwise, these positions are detected +automatically from the text around point. + +If the scheme component is absent, either because a URI delimited +with <url:...> lacks one, or because an ill-formed URI was found +with LAX or BEG and END, try to add a scheme in the returned URI. +The scheme is chosen heuristically: \"mailto:\" if the address +looks like an email address, \"ftp://\" if it starts with +\"ftp\", etc." + (unless bounds + (setq bounds (thing-at-point-bounds-of-url-at-point lax))) + (when (and bounds (< (car bounds) (cdr bounds))) + (let ((str (buffer-substring-no-properties (car bounds) (cdr bounds)))) + ;; If there is no scheme component, try to add one. + (unless (string-match "\\`[a-zA-Z][-a-zA-Z0-9+.]*:" str) + (or + ;; If the URI has the form <foo@bar>, treat it according to + ;; `thing-at-point-default-mail-uri-scheme'. If there are + ;; no angle brackets, it must be mailto. + (when (string-match "\\`[^:</>@]+@[-.0-9=&?$+A-Z_a-z~#,%;*]" str) + (let ((scheme (if (and (eq (char-before (car bounds)) ?<) + (eq (char-after (cdr bounds)) ?>)) + thing-at-point-default-mail-uri-scheme + "mailto"))) + (if scheme + (setq str (concat scheme ":" str))))) + ;; If the string is like <FOO>, where FOO is an existing user + ;; name on the system, treat that as an email address. + (and (string-match "\\`[[:alnum:]]+\\'" str) + (eq (char-before (car bounds)) ?<) + (eq (char-after (cdr bounds)) ?>) + (not (string-match "~" (expand-file-name (concat "~" str)))) + (setq str (concat "mailto:" str))) + ;; If it looks like news.example.com, treat it as news. + (if (thing-at-point-newsgroup-p str) + (setq str (concat "news:" str))) + ;; If it looks like ftp.example.com. treat it as ftp. + (if (string-match "\\`ftp\\." str) + (setq str (concat "ftp://" str))) + ;; If it looks like www.example.com. treat it as http. + (if (string-match "\\`www\\." str) + (setq str (concat "http://" str))) + ;; Otherwise, it just isn't a URI. + (setq str nil))) + str))) + +(defun thing-at-point-newsgroup-p (string) + "Return STRING if it looks like a newsgroup name, else nil." + (and + (string-match thing-at-point-newsgroup-regexp string) + (let ((htbs '(gnus-active-hashtb gnus-newsrc-hashtb gnus-killed-hashtb)) + (heads thing-at-point-newsgroup-heads) + htb ret) + (while htbs + (setq htb (car htbs) htbs (cdr htbs)) + (condition-case nil + (progn + ;; errs: htb symbol may be unbound, or not a hash-table. + ;; gnus-gethash is just a macro for intern-soft. + (and (symbol-value htb) + (intern-soft string (symbol-value htb)) + (setq ret string htbs nil)) + ;; If we made it this far, gnus is running, so ignore "heads": + (setq heads nil)) + (error nil))) + (or ret (not heads) + (let ((head (string-match "\\`\\([[:lower:]]+\\)\\." string))) + (and head (setq head (substring string 0 (match-end 1))) + (member head heads) + (setq ret string)))) + ret))) + +(put 'url 'end-op (lambda () (end-of-thing 'url))) + +(put 'url 'beginning-op (lambda () (end-of-thing 'url))) ;; The normal thingatpt mechanism doesn't work for complex regexps. ;; This should work for almost any regexp wherever we are in the @@ -372,19 +502,6 @@ point." (goto-char match) (looking-at regexp))))) -(put 'url 'end-op - (lambda () - (let ((bounds (thing-at-point-bounds-of-url-at-point))) - (if bounds - (goto-char (cdr bounds)) - (error "No URL here"))))) -(put 'url 'beginning-op - (lambda () - (let ((bounds (thing-at-point-bounds-of-url-at-point))) - (if bounds - (goto-char (car bounds)) - (error "No URL here"))))) - ;; Email addresses (defvar thing-at-point-email-regexp "<?[-+_.~a-zA-Z][-+_.~:a-zA-Z0-9]*@[-.a-zA-Z0-9]+>?" diff --git a/lisp/tmm.el b/lisp/tmm.el index 542270a8761..cd91742649d 100644 --- a/lisp/tmm.el +++ b/lisp/tmm.el @@ -1,4 +1,4 @@ -;;; tmm.el --- text mode access to menu-bar +;;; tmm.el --- text mode access to menu-bar -*- lexical-binding: t -*- ;; Copyright (C) 1994-1996, 2000-2013 Free Software Foundation, Inc. @@ -54,36 +54,37 @@ we make that menu bar item (the one at that position) the default choice." (interactive) (run-hooks 'menu-bar-update-hook) ;; Obey menu-bar-final-items; put those items last. - (let ((menu-bar (tmm-get-keybind [menu-bar])) + (let ((menu-bar '()) + (menu-end '()) menu-bar-item) - (let ((list menu-bar-final-items)) - (while list - (let ((item (car list))) - ;; ITEM is the name of an item that we want to put last. - ;; Find it in MENU-BAR and move it to the end. - (let ((this-one (assq item menu-bar))) - (setq menu-bar (append (delq this-one menu-bar) - (list this-one))))) - (setq list (cdr list)))) + (map-keymap + (lambda (key binding) + (push (cons key binding) + ;; If KEY is the name of an item that we want to put last, + ;; move it to the end. + (if (memq key menu-bar-final-items) + menu-end + menu-bar))) + (tmm-get-keybind [menu-bar])) + (setq menu-bar `(keymap ,@(nreverse menu-bar) ,@(nreverse menu-end))) (if x-position - (let ((tail menu-bar) (column 0) - this-one name visible) - (while (and tail (<= column x-position)) - (setq this-one (car tail)) - (if (and (consp this-one) - (consp (cdr this-one)) - (setq name ;simple menu - (cond ((stringp (nth 1 this-one)) - (nth 1 this-one)) - ;extended menu - ((stringp (nth 2 this-one)) - (setq visible (plist-get - (nthcdr 4 this-one) :visible)) - (unless (and visible (not (eval visible))) - (nth 2 this-one)))))) - (setq column (+ column (length name) 1))) - (setq tail (cdr tail))) - (setq menu-bar-item (car this-one)))) + (let ((column 0)) + (catch 'done + (map-keymap + (lambda (key binding) + (when (> column x-position) + (setq menu-bar-item key) + (throw 'done nil)) + (pcase binding + ((or `(,(and (pred stringp) name) . ,_) ;Simple menu item. + `(menu-item ,name ,_cmd ;Extended menu item. + . ,(and props + (guard (let ((visible + (plist-get props :visible))) + (or (null visible) + (eval visible))))))) + (setq column (+ column (length name) 1))))) + menu-bar)))) (tmm-prompt menu-bar nil menu-bar-item))) ;;;###autoload @@ -138,6 +139,12 @@ specify nil for this variable." "Face used for inactive menu items." :group 'tmm) +(defun tmm--completion-table (items) + (lambda (string pred action) + (if (eq action 'metadata) + '(metadata (display-sort-function . identity)) + (complete-with-action action items string pred)))) + ;;;###autoload (defun tmm-prompt (menu &optional in-popup default-item) "Text-mode emulation of calling the bindings in keymap. @@ -174,6 +181,7 @@ Its value should be an event that has a binding in MENU." ((vectorp elt) (dotimes (i (length elt)) (tmm-get-keymap (cons i (aref elt i)) not-menu)))))) + (setq tmm-km-list (nreverse tmm-km-list)) ;; Choose an element of tmm-km-list; put it in choice. (if (and not-menu (= 1 (length tmm-km-list))) ;; If this is the top-level of an x-popup-menu menu, @@ -226,7 +234,7 @@ Its value should be an event that has a binding in MENU." (completing-read (concat gl-str " (up/down to change, PgUp to menu): ") - tmm-km-list nil t nil + (tmm--completion-table tmm-km-list) nil t nil (cons 'history (- (* 2 history-len) index-of-default)))))))) (setq choice (cdr (assoc out tmm-km-list))) @@ -497,46 +505,7 @@ If KEYSEQ is a prefix key that has local and global bindings, we merge them into a single keymap which shows the proper order of the menu. However, for the menu bar itself, the value does not take account of `menu-bar-final-items'." - (let (allbind bind minorbind localbind globalbind) - (setq bind (key-binding keyseq)) - ;; If KEYSEQ is a prefix key, then BIND is either nil - ;; or a symbol defined as a keymap (which satisfies keymapp). - (if (keymapp bind) - (setq bind nil)) - ;; If we have a non-keymap definition, return that. - (or bind - (progn - ;; Otherwise, it is a prefix, so make a list of the subcommands. - ;; Make a list of all the bindings in all the keymaps. - ;; FIXME: we'd really like to just use `key-binding' now that it - ;; returns a keymap that contains really all the bindings under that - ;; prefix, but `keyseq' is always [menu-bar], so the desired order of - ;; the bindings is difficult to recover. - (setq minorbind (mapcar 'cdr (minor-mode-key-binding keyseq))) - (setq localbind (local-key-binding keyseq)) - (setq globalbind (copy-sequence (cdr (global-key-binding keyseq)))) - - ;; If items have been redefined/undefined locally, remove them from - ;; the global list. - (dolist (minor minorbind) - (dolist (item (cdr minor)) - (setq globalbind (assq-delete-all (car-safe item) globalbind)))) - (dolist (item (cdr localbind)) - (setq globalbind (assq-delete-all (car-safe item) globalbind))) - - (setq globalbind (cons 'keymap globalbind)) - (setq allbind (cons globalbind (cons localbind minorbind))) - - ;; Merge all the elements of ALLBIND into one keymap. - (dolist (in allbind) - (if (and (symbolp in) (keymapp in)) - (setq in (symbol-function in))) - (and in (keymapp in) - (setq bind (if (keymapp bind) - (nconc bind (copy-sequence (cdr in))) - (copy-sequence in))))) - ;; Return that keymap. - bind)))) + (lookup-key (cons 'keymap (nreverse (current-active-maps))) keyseq)) (provide 'tmm) diff --git a/lisp/tutorial.el b/lisp/tutorial.el index 011461119fc..39eb9e8b9aa 100644 --- a/lisp/tutorial.el +++ b/lisp/tutorial.el @@ -829,10 +829,9 @@ Run the Viper tutorial? ")) (progn (insert-file-contents (tutorial--saved-file)) (let ((enable-local-variables :safe) - (enable-local-eval nil)) + (enable-local-eval nil) + (enable-dir-local-variables nil)) ; bug#11127 (hack-local-variables)) - ;; FIXME? What we actually want is to ignore dir-locals (?). - (setq buffer-read-only nil) ; bug#11118 (goto-char (point-min)) (setq old-tut-point (string-to-number @@ -849,10 +848,9 @@ Run the Viper tutorial? ")) (setq tutorial--point-before-chkeys (point-marker))) (insert-file-contents (expand-file-name filename tutorial-directory)) (let ((enable-local-variables :safe) - (enable-local-eval nil)) + (enable-local-eval nil) + (enable-dir-local-variables nil)) ; bug#11127 (hack-local-variables)) - ;; FIXME? What we actually want is to ignore dir-locals (?). - (setq buffer-read-only nil) ; bug#11118 (forward-line) (setq tutorial--point-before-chkeys (point-marker))) diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index 969d3c7d269..f8f24de6b68 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog @@ -1,3 +1,14 @@ +2013-02-16 Glenn Morris <rgm@gnu.org> + + * url-http.el (url-http-wait-for-headers-change-function): + Avoid prematurely finding the end of headers when they arrive + line-by-line. (Bug#13598) + +2013-02-03 Stefan Monnier <monnier@iro.umontreal.ca> + + * url-cache.el (url-cache-create-filename-using-md5): Don't waste your + time `requiring' a builtin feature. + 2012-12-22 Takafumi Arakaki <aka.tkf@gmail.com> (tiny change) * url-http.el (url-http-end-of-document-sentinel): Bind relevant diff --git a/lisp/url/url-cache.el b/lisp/url/url-cache.el index a5e5ebf1ed4..cb0281b87f2 100644 --- a/lisp/url/url-cache.el +++ b/lisp/url/url-cache.el @@ -149,7 +149,6 @@ The actual return value is the last modification time of the cache file." (defun url-cache-create-filename-using-md5 (url) "Create a cached filename using MD5. Very fast if you have an `md5' primitive function, suitably fast otherwise." - (require 'md5) (if url (let* ((checksum (md5 url)) (urlobj (url-generic-parse-url url)) diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el index 5dd3a751702..33fc5722759 100644 --- a/lisp/url/url-http.el +++ b/lisp/url/url-http.el @@ -1040,7 +1040,9 @@ the end of the document." (setq end-of-headers t url-http-end-of-headers 0 old-http t) - (when (re-search-forward "^\r*$" nil t) + ;; Blank line at end of headers. + (when (re-search-forward "^\r?\n" nil t) + (backward-char 1) ;; Saw the end of the headers (url-http-debug "Saw end of headers... (%s)" (buffer-name)) (setq url-http-end-of-headers (set-marker (make-marker) diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index 940457b6cc0..d9224b29c2e 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -821,9 +821,11 @@ If the OLD prefix arg is passed, tell the file NAME of the old file." (progn (diff-hunk-prev) (point)) (error (point-min))))) (header-files - (if (looking-at "[-*][-*][-*] \\(\\S-+\\)\\(\\s-.*\\)?\n[-+][-+][-+] \\(\\S-+\\)") - (list (if old (match-string 1) (match-string 3)) - (if old (match-string 3) (match-string 1))) + ;; handle filenames with spaces; + ;; cf. diff-font-lock-keywords / diff-file-header-face + (if (looking-at "[-*][-*][-*] \\([^\t]+\\)\t.*\n[-+][-+][-+] \\([^\t]+\\)") + (list (if old (match-string 1) (match-string 2)) + (if old (match-string 2) (match-string 1))) (forward-line 1) nil))) (delq nil (append @@ -832,6 +834,7 @@ If the OLD prefix arg is passed, tell the file NAME of the old file." (re-search-backward "^Index: \\(.+\\)" limit t))) (list (match-string 1))) header-files + ;; this assumes that there are no spaces in filenames (when (re-search-backward "^diff \\(-\\S-+ +\\)*\\(\\S-+\\)\\( +\\(\\S-+\\)\\)?" nil t) diff --git a/lisp/vc/diff.el b/lisp/vc/diff.el index 8b4ff792969..0fc0d2e3f73 100644 --- a/lisp/vc/diff.el +++ b/lisp/vc/diff.el @@ -114,6 +114,13 @@ specified in the variable `diff-switches' are passed to the diff command." tempfile)) (file-local-copy file-or-buf))) +(defvar diff-use-labels 'check + "Whether `diff-command' understands the \"--label\" option. +Possible values are: + t -- yes, it does + nil -- no, it does not + check -- try to probe whether it does") + (defun diff-no-select (old new &optional switches no-async buf) ;; Noninteractive helper for creating and reverting diff buffers (unless (bufferp new) (setq new (expand-file-name new))) @@ -121,6 +128,11 @@ specified in the variable `diff-switches' are passed to the diff command." (or switches (setq switches diff-switches)) ; If not specified, use default. (unless (listp switches) (setq switches (list switches))) (or buf (setq buf (get-buffer-create "*Diff*"))) + (when (eq 'check diff-use-labels) + (setq diff-use-labels + (with-temp-buffer + (when (ignore-errors (call-process diff-command nil t nil "--help")) + (if (search-backward "--label" nil t) t))))) (let* ((old-alt (diff-file-local-copy old)) (new-alt (diff-file-local-copy new)) (command @@ -130,11 +142,14 @@ specified in the variable `diff-switches' are passed to the diff command." ,@switches ,@(mapcar #'shell-quote-argument (nconc - (when (or old-alt new-alt) - (list "-L" (if (stringp old) - old (prin1-to-string old)) - "-L" (if (stringp new) - new (prin1-to-string new)))) + (and (or old-alt new-alt) + (eq diff-use-labels t) + (list "--label" + (if (stringp old) old + (prin1-to-string old)) + "--label" + (if (stringp new) new + (prin1-to-string new)))) (list (or old-alt old) (or new-alt new))))) " ")) diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el index 2456d6ede41..81146c0c931 100644 --- a/lisp/vc/ediff-util.el +++ b/lisp/vc/ediff-util.el @@ -143,6 +143,7 @@ to invocation.") 'ediff-previous-difference nil)) ;; must come after C-h, or else C-h wipes out backspace's binding in XEmacs (define-key ediff-mode-map [backspace] 'ediff-previous-difference) + (define-key ediff-mode-map [?\S-\ ] 'ediff-previous-difference) (define-key ediff-mode-map "n" 'ediff-next-difference) (define-key ediff-mode-map " " 'ediff-next-difference) (define-key ediff-mode-map "j" 'ediff-jump-to-difference) @@ -786,7 +787,12 @@ Reestablish the default three-window display." (frame-live-p ediff-control-frame) (not ediff-use-long-help-message) (not (ediff-frame-iconified-p ediff-control-frame))) - (raise-frame ediff-control-frame)) + (if (fboundp 'select-frame-set-input-focus) + (select-frame-set-input-focus ediff-control-frame) + (raise-frame ediff-control-frame) + (select-frame ediff-control-frame) + (if (fboundp 'focus-frame) + (focus-frame ediff-control-frame)))) ;; Redisplay whatever buffers are showing, if there is a selected difference (let ((control-frame ediff-control-frame) @@ -4018,7 +4024,7 @@ Mail anyway? (y or n) ") (set-buffer ctl-buf)) (setq buffer-name (buffer-name)) (require 'reporter) - (reporter-submit-bug-report "kifer@cs.stonybrook.edu" + (reporter-submit-bug-report "kifer@cs.stonybrook.edu, bug-gnu-emacs@gnu.org" (ediff-version) varlist nil diff --git a/lisp/vc/vc-arch.el b/lisp/vc/vc-arch.el index 3dbaae52b37..52609457ebc 100644 --- a/lisp/vc/vc-arch.el +++ b/lisp/vc/vc-arch.el @@ -101,7 +101,7 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches." ;;;###autoload (defun vc-arch-registered (file) ;;;###autoload (if (vc-find-root file "{arch}/=tagging-method") ;;;###autoload (progn -;;;###autoload (load "vc-arch") +;;;###autoload (load "vc-arch" nil t) ;;;###autoload (vc-arch-registered file)))) (defun vc-arch-add-tagline () diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el index 0968c83ae5f..d0912cb719c 100644 --- a/lisp/vc/vc-bzr.el +++ b/lisp/vc/vc-bzr.el @@ -291,7 +291,7 @@ in the repository root directory of FILE." ;;;###autoload (defun vc-bzr-registered (file) ;;;###autoload (if (vc-find-root file vc-bzr-admin-checkout-format-file) ;;;###autoload (progn -;;;###autoload (load "vc-bzr") +;;;###autoload (load "vc-bzr" nil t) ;;;###autoload (vc-bzr-registered file)))) (defun vc-bzr-registered (file) diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el index d90596baca0..407e691439b 100644 --- a/lisp/vc/vc-cvs.el +++ b/lisp/vc/vc-cvs.el @@ -198,7 +198,7 @@ See also variable `vc-cvs-sticky-date-format-string'." ;;;###autoload "Return non-nil if file F is registered with CVS." ;;;###autoload (when (file-readable-p (expand-file-name ;;;###autoload "CVS/Entries" (file-name-directory f))) -;;;###autoload (load "vc-cvs") +;;;###autoload (load "vc-cvs" nil t) ;;;###autoload (vc-cvs-registered f))) (defun vc-cvs-registered (file) diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index 29f7aaa5480..17de931628b 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -168,7 +168,7 @@ matching the resulting Git log output, and KEYWORDS is a list of ;;;###autoload "Return non-nil if FILE is registered with git." ;;;###autoload (if (vc-find-root file ".git") ; Short cut. ;;;###autoload (progn -;;;###autoload (load "vc-git") +;;;###autoload (load "vc-git" nil t) ;;;###autoload (vc-git-registered file)))) (defun vc-git-registered (file) diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index 5c8201e51cc..f39ef568e8b 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -176,7 +176,7 @@ highlighting the Log View buffer." ;;;###autoload "Return non-nil if FILE is registered with hg." ;;;###autoload (if (vc-find-root file ".hg") ; short cut ;;;###autoload (progn -;;;###autoload (load "vc-hg") +;;;###autoload (load "vc-hg" nil t) ;;;###autoload (vc-hg-registered file)))) ;; Modeled after the similar function in vc-bzr.el diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el index 99436303fa2..5c8a4515b7e 100644 --- a/lisp/vc/vc-hooks.el +++ b/lisp/vc/vc-hooks.el @@ -858,14 +858,23 @@ current, and kill the buffer that visits the link." (set (make-local-variable 'backup-inhibited) t)) ;; Let the backend setup any buffer-local things he needs. (vc-call-backend backend 'find-file-hook)) - ((let* ((truename (expand-file-name buffer-file-truename)) - (link-type (and (not (equal buffer-file-name truename)) + ((let* ((truename (and buffer-file-truename + (expand-file-name buffer-file-truename))) + (link-type (and truename + (not (equal buffer-file-name truename)) (vc-backend truename)))) (cond ((not link-type) nil) ;Nothing to do. ((eq vc-follow-symlinks nil) (message "Warning: symbolic link to %s-controlled source file" link-type)) ((or (not (eq vc-follow-symlinks 'ask)) + ;; Assume we cannot ask, default to yes. + noninteractive + ;; Copied from server-start. Seems like there should + ;; be a better way to ask "can we get user input?"... + (and (daemonp) + (null (cdr (frame-list))) + (eq (selected-frame) terminal-frame)) ;; If we already visited this file by following ;; the link, don't ask again if we try to visit ;; it again. GUD does that, and repeated questions @@ -976,6 +985,10 @@ current, and kill the buffer that visits the link." ")) (bindings--define-key map [undo] '(menu-item "Undo Last Check-In" vc-rollback + :enable (let ((backend (if buffer-file-name + (vc-backend buffer-file-name)))) + (or (not backend) + (vc-find-backend-function backend 'rollback))) :help "Remove the most recent changeset committed to the repository")) (bindings--define-key map [vc-revert] '(menu-item "Revert to Base Version" vc-revert diff --git a/lisp/vc/vc-mtn.el b/lisp/vc/vc-mtn.el index f2569e2145d..06827a5e027 100644 --- a/lisp/vc/vc-mtn.el +++ b/lisp/vc/vc-mtn.el @@ -72,7 +72,7 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches." ;;;###autoload (defun vc-mtn-registered (file) ;;;###autoload (if (vc-find-root file vc-mtn-admin-format) ;;;###autoload (progn -;;;###autoload (load "vc-mtn") +;;;###autoload (load "vc-mtn" nil t) ;;;###autoload (vc-mtn-registered file)))) (defun vc-mtn-revision-granularity () 'repository) diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el index b79af07a756..923888b460b 100644 --- a/lisp/vc/vc-svn.el +++ b/lisp/vc/vc-svn.el @@ -50,14 +50,21 @@ :type 'string :group 'vc-svn) -(defcustom vc-svn-global-switches nil - "Global switches to pass to any SVN command." +;; Might be nice if svn defaulted to non-interactive if stdin not tty. +;; http://svn.haxx.se/dev/archive-2008-05/0762.shtml +;; http://svn.haxx.se/dev/archive-2009-04/0094.shtml +;; Maybe newer ones do? +(defcustom vc-svn-global-switches (unless (eq system-type 'darwin) ; bug#13513 + '("--non-interactive")) + "Global switches to pass to any SVN command. +The option \"--non-interactive\" is often needed to prevent SVN +hanging while prompting for authorization." :type '(choice (const :tag "None" nil) (string :tag "Argument String") (repeat :tag "Argument List" :value ("") string)) - :version "22.1" + :version "24.4" :group 'vc-svn) (defcustom vc-svn-register-switches nil @@ -123,7 +130,7 @@ If you want to force an empty list of arguments, use t." ;;;###autoload "_svn") ;;;###autoload (t ".svn")))) ;;;###autoload (when (vc-find-root f admin-dir) -;;;###autoload (load "vc-svn") +;;;###autoload (load "vc-svn" nil t) ;;;###autoload (vc-svn-registered f)))) (defun vc-svn-registered (file) @@ -600,19 +607,11 @@ NAME is assumed to be a URL." (defun vc-svn-command (buffer okstatus file-or-list &rest flags) "A wrapper around `vc-do-command' for use in vc-svn.el. The difference to vc-do-command is that this function always invokes `svn', -and that it passes \"--non-interactive\" and `vc-svn-global-switches' to -it before FLAGS." - ;; Might be nice if svn defaulted to non-interactive if stdin not tty. - ;; http://svn.haxx.se/dev/archive-2008-05/0762.shtml - ;; http://svn.haxx.se/dev/archive-2009-04/0094.shtml - ;; Maybe newer ones do? - (or (member "--non-interactive" - (setq flags (if (stringp vc-svn-global-switches) - (cons vc-svn-global-switches flags) - (append vc-svn-global-switches flags)))) - (setq flags (cons "--non-interactive" flags))) +and that it passes `vc-svn-global-switches' to it before FLAGS." (apply 'vc-do-command (or buffer "*vc*") okstatus vc-svn-program file-or-list - flags)) + (if (stringp vc-svn-global-switches) + (cons vc-svn-global-switches flags) + (append vc-svn-global-switches flags)))) (defun vc-svn-repository-hostname (dirname) (with-temp-buffer diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 9b8b94916c4..a0ef6f9d6d7 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -1079,15 +1079,13 @@ For old-style locking-based version control systems, like RCS: ;; If a buffer has unsaved changes, a checkout would discard those ;; changes, so treat the buffer as having unlocked changes. (when (and (not (eq model 'implicit)) (eq state 'up-to-date)) - (let ((files files)) - (while files - (let ((buffer (get-file-buffer (car files)))) - (and buffer - (buffer-modified-p buffer) - (setq state 'unlocked-changes - files nil)))))) - - ;; Do the right thing + (dolist (file files) + (let ((buffer (get-file-buffer file))) + (and buffer + (buffer-modified-p buffer) + (setq state 'unlocked-changes))))) + + ;; Do the right thing. (cond ((eq state 'missing) (error "Fileset files are missing, so cannot be operated on")) @@ -2667,14 +2665,11 @@ log entries should be gathered." (cond ((consp current-prefix-arg) ;C-u (list buffer-file-name)) (current-prefix-arg ;Numeric argument. - (let ((files nil) - (buffers (buffer-list)) - file) - (while buffers - (setq file (buffer-file-name (car buffers))) - (and file (vc-backend file) - (setq files (cons file files))) - (setq buffers (cdr buffers))) + (let ((files nil)) + (dolist (buffer (buffer-list)) + (let ((file (buffer-file-name buffer))) + (and file (vc-backend file) + (setq files (cons file files))))) files)) (t ;; Don't supply any filenames to backend; this means diff --git a/lisp/view.el b/lisp/view.el index 2717c915c71..f9326399a26 100644 --- a/lisp/view.el +++ b/lisp/view.el @@ -199,6 +199,7 @@ This is local in each buffer, once it is used.") (define-key map "\C-?" 'View-scroll-page-backward) ;; (define-key map "f" 'View-scroll-page-forward) (define-key map " " 'View-scroll-page-forward) + (define-key map [?\S-\ ] 'View-scroll-page-backward) (define-key map "o" 'View-scroll-to-buffer-end) (define-key map ">" 'end-of-buffer) (define-key map "<" 'beginning-of-buffer) @@ -407,8 +408,8 @@ Digits provide prefix arguments. \\[View-scroll-to-buffer-end] scroll so that buffer end is at last line of window. SPC scroll forward \"page size\" lines. With prefix scroll forward prefix lines. -DEL scroll backward \"page size\" lines. - With prefix scroll backward prefix lines. +DEL, S-SPC scroll backward \"page size\" lines. + With prefix scroll backward prefix lines. \\[View-scroll-page-forward-set-page-size] like \\[View-scroll-page-forward] but with prefix sets \"page size\" to prefix. \\[View-scroll-page-backward-set-page-size] like \\[View-scroll-page-backward] but with prefix sets \"page size\" to prefix. \\[View-scroll-half-page-forward] scroll forward \"half page size\" lines. With prefix, sets diff --git a/lisp/wdired.el b/lisp/wdired.el index 59a09d6d5a0..47cd99f45ac 100644 --- a/lisp/wdired.el +++ b/lisp/wdired.el @@ -3,7 +3,7 @@ ;; Copyright (C) 2004-2013 Free Software Foundation, Inc. ;; Filename: wdired.el -;; Author: Juan León Lahoz García <juanleon1@gmail.com> +;; Author: Juan León Lahoz GarcÃa <juanleon1@gmail.com> ;; Version: 2.0 ;; Keywords: dired, environment, files, renaming @@ -851,7 +851,7 @@ Like original function but it skips read-only words." (provide 'wdired) ;; Local Variables: -;; coding: latin-1 +;; coding: utf-8 ;; byte-compile-dynamic: t ;; End: diff --git a/lisp/xml.el b/lisp/xml.el index b6c37612ab3..a3d34670bfb 100644 --- a/lisp/xml.el +++ b/lisp/xml.el @@ -200,7 +200,7 @@ See also `xml-get-attribute-or-nil'." ;; [68] EntityRef ::= '&' Name ';' (defconst xml-entity-ref (concat "&" xml-name-re ";")) -(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([0-9]+\\)\\|\\(" +(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([0-9a-fA-F]+\\)\\|\\(" xml-name-re "\\)\\);")) ;; [69] PEReference ::= '%' Name ';' @@ -611,7 +611,7 @@ references." xml-validating-parser (error "XML: (Validity) Invalid character reference `%s'" (match-string 0))) - (replace-match (or (string val) xml-undefined-entity) t t)) + (replace-match (if val (string val) xml-undefined-entity) t t)) ;; For an entity reference, search again from the start of ;; the replaced text, since the replacement can contain ;; entity or character references, or markup. @@ -620,7 +620,7 @@ references." (and (null val) xml-validating-parser (error "XML: (Validity) Undefined entity `%s'" ref)) - (replace-match (cdr val) t t) + (replace-match (or (cdr val) xml-undefined-entity) t t) (goto-char (match-beginning 0))) ;; Check for XML bombs. (and xml-entity-expansion-limit |
